From a698a0bab7ee9ea4bca715c347d5c45a9846b7f7 Mon Sep 17 00:00:00 2001 From: raccoon Date: Sun, 18 May 2025 06:58:08 +0500 Subject: [PATCH] New standard shader with flipbook animation --- .../shaders/minecraft/StandardSurf.shader | 73 +++++++++++++++++++ .../minecraft/StandardSurf.shader.meta | 9 +++ 2 files changed, 82 insertions(+) create mode 100644 Assets/dbl-world/shaders/minecraft/StandardSurf.shader create mode 100644 Assets/dbl-world/shaders/minecraft/StandardSurf.shader.meta diff --git a/Assets/dbl-world/shaders/minecraft/StandardSurf.shader b/Assets/dbl-world/shaders/minecraft/StandardSurf.shader new file mode 100644 index 0000000..e3d6025 --- /dev/null +++ b/Assets/dbl-world/shaders/minecraft/StandardSurf.shader @@ -0,0 +1,73 @@ +Shader "Custom/StandardSurf" +{ + Properties + { + _Color("Color", Color) = (1,1,1,1) + _MainTex("Albedo (RGBA)", 2D) = "white" {} + _Glossiness("Smoothness", Range(0,1)) = 0.5 + _Metallic("Metallic", Range(0,1)) = 0.0 + + [NoScaleOffset]_DiffuseArray("Transparent Albedo (RGBA)", 2DArray) = "" {} + _FlipbookFPS("Flipbook FPS", Integer) = 30 + _FlipbookFrames("Flipbook Frames", Integer) = 30 + } + + SubShader + { + Tags { "RenderType" = "Transparent" "Queue" = "Transparent" } + LOD 200 + + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + Cull Back + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows alpha:fade + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + UNITY_DECLARE_TEX2DARRAY(_DiffuseArray); + + int _FlipbookFPS; + int _FlipbookFrames; + + sampler2D _MainTex; + half _Glossiness; + half _Metallic; + fixed4 _Color; + + struct Input + { + float2 uv_MainTex; + }; + + // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader. + // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing. + // #pragma instancing_options assumeuniformscaling + UNITY_INSTANCING_BUFFER_START(Props) + // put more per-instance properties here + UNITY_INSTANCING_BUFFER_END(Props) + + void surf(Input IN, inout SurfaceOutputStandard o) + { + // Common UV for all texture arrays + float frame = fmod(floor(_Time.y * _FlipbookFPS), _FlipbookFrames); // Cyclic frame value + float3 uvw = float3(IN.uv_MainTex, frame); + + float4 diff = UNITY_SAMPLE_TEX2DARRAY(_DiffuseArray, uvw) * _Color; + o.Albedo = diff.rgb; + o.Alpha = diff.a; + + // Metallic and smoothness come from slider variables + o.Metallic = _Metallic; + o.Smoothness = _Glossiness; + // o.Alpha = c.a; + } + + ENDCG + } + + FallBack "Standard" +} diff --git a/Assets/dbl-world/shaders/minecraft/StandardSurf.shader.meta b/Assets/dbl-world/shaders/minecraft/StandardSurf.shader.meta new file mode 100644 index 0000000..db3ea73 --- /dev/null +++ b/Assets/dbl-world/shaders/minecraft/StandardSurf.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f97431011a6300f40b325e5cc8ac9f3d +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: