├── UnlitAlphaColor.shader ├── UnlitShadow.shader └── UnlitShadowCaster.shader /UnlitAlphaColor.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/UnlitAlphaColor" 2 | { 3 | Properties 4 | { 5 | _Color ("Color", Color) = (1,1,1,1) 6 | } 7 | SubShader 8 | { 9 | Tags { "RenderType"="Transparent" "Queue"="Transparent" } 10 | LOD 100 11 | Blend SrcAlpha OneMinusSrcAlpha 12 | ZWrite Off 13 | 14 | Pass 15 | { 16 | CGPROGRAM 17 | #pragma vertex vert 18 | #pragma fragment frag 19 | 20 | #include "UnityCG.cginc" 21 | 22 | struct appdata 23 | { 24 | float4 vertex : POSITION; 25 | }; 26 | 27 | struct v2f 28 | { 29 | float4 vertex : SV_POSITION; 30 | }; 31 | 32 | float4 _Color; 33 | 34 | 35 | v2f vert (appdata v) 36 | { 37 | v2f o; 38 | o.vertex = UnityObjectToClipPos(v.vertex); 39 | return o; 40 | } 41 | 42 | float4 frag (v2f i) : SV_Target 43 | { 44 | return _Color; 45 | } 46 | ENDCG 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /UnlitShadow.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/UnlitShadow" 2 | { 3 | Properties 4 | { 5 | } 6 | SubShader 7 | { 8 | Pass 9 | { 10 | Tags { "LightMode" = "ForwardBase" "Queue" = "Geometry"} 11 | CGPROGRAM 12 | #pragma vertex vert 13 | #pragma fragment frag 14 | #pragma multi_compile_fwdbase 15 | 16 | #include "UnityCG.cginc" 17 | #include "UnityLightingCommon.cginc" 18 | #include "AutoLight.cginc" 19 | 20 | struct appdata 21 | { 22 | float4 vertex : POSITION; 23 | float2 uv : TEXCOORD0; 24 | float3 normal : NORMAL; 25 | }; 26 | 27 | struct v2f 28 | { 29 | float2 uv : TEXCOORD0; 30 | float4 pos : SV_POSITION; 31 | float3 worldNormal : NORMAL; 32 | float3 worldPos : TEXCOORD1; 33 | float4 screenPos : TEXCOORD2; 34 | LIGHTING_COORDS(4,5) 35 | }; 36 | 37 | v2f vert (appdata v) 38 | { 39 | v2f o; 40 | o.pos = UnityObjectToClipPos(v.vertex); 41 | o.uv = v.uv; 42 | o.worldNormal = UnityObjectToWorldNormal(v.normal); 43 | o.worldPos = mul(unity_ObjectToWorld, float4(v.vertex.xyz, 1)); 44 | o.screenPos = ComputeScreenPos(o.pos); 45 | TRANSFER_VERTEX_TO_FRAGMENT(o); 46 | return o; 47 | } 48 | 49 | float4 frag (v2f i) : SV_Target 50 | { 51 | return 1; 52 | } 53 | ENDCG 54 | } 55 | 56 | } 57 | 58 | // Shadows 59 | Fallback "VertexLit" 60 | } 61 | -------------------------------------------------------------------------------- /UnlitShadowCaster.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/UnlitShadowCaster" 2 | { 3 | Properties 4 | { 5 | } 6 | SubShader 7 | { 8 | Pass 9 | { 10 | Tags { "LightMode" = "ForwardBase" "Queue" = "Geometry"} 11 | CGPROGRAM 12 | #pragma vertex vert 13 | #pragma fragment frag 14 | #pragma multi_compile_fwdbase 15 | 16 | #include "UnityCG.cginc" 17 | #include "UnityLightingCommon.cginc" 18 | #include "AutoLight.cginc" 19 | 20 | struct appdata 21 | { 22 | float4 vertex : POSITION; 23 | float2 uv : TEXCOORD0; 24 | float3 normal : NORMAL; 25 | }; 26 | 27 | struct v2f 28 | { 29 | float2 uv : TEXCOORD0; 30 | float4 pos : SV_POSITION; 31 | float3 worldNormal : NORMAL; 32 | float3 worldPos : TEXCOORD1; 33 | float4 screenPos : TEXCOORD2; 34 | LIGHTING_COORDS(4,5) 35 | }; 36 | 37 | v2f vert (appdata v) 38 | { 39 | v2f o; 40 | o.pos = UnityObjectToClipPos(v.vertex); 41 | o.uv = v.uv; 42 | o.worldNormal = UnityObjectToWorldNormal(v.normal); 43 | o.worldPos = mul(unity_ObjectToWorld, float4(v.vertex.xyz, 1)); 44 | o.screenPos = ComputeScreenPos(o.pos); 45 | TRANSFER_VERTEX_TO_FRAGMENT(o); 46 | return o; 47 | } 48 | 49 | float4 frag (v2f i) : SV_Target 50 | { 51 | return 1; 52 | } 53 | ENDCG 54 | } 55 | 56 | // Shadowcaster pass 57 | Pass 58 | { 59 | Name "ShadowCaster" 60 | Tags { "LightMode" = "ShadowCaster" } 61 | 62 | ZWrite On ZTest LEqual Cull Off 63 | 64 | CGPROGRAM 65 | #pragma vertex vert 66 | #pragma fragment frag 67 | #pragma target 2.0 68 | #pragma multi_compile_shadowcaster 69 | #include "UnityCG.cginc" 70 | 71 | struct v2f { 72 | V2F_SHADOW_CASTER; 73 | UNITY_VERTEX_OUTPUT_STEREO 74 | }; 75 | 76 | v2f vert(appdata_base v) 77 | { 78 | v2f o; 79 | UNITY_SETUP_INSTANCE_ID(v); 80 | UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); 81 | TRANSFER_SHADOW_CASTER_NORMALOFFSET(o) 82 | return o; 83 | } 84 | float4 frag( v2f i ) : SV_Target 85 | { 86 | SHADOW_CASTER_FRAGMENT(i) 87 | } 88 | ENDCG 89 | } 90 | } 91 | } 92 | --------------------------------------------------------------------------------