| Shader "DynamicShadowProjector/Blit/Downsample" { | 
|     Properties { | 
|         _MainTex ("Base (RGB)", 2D) = "white" {} | 
|     } | 
|   | 
|     CGINCLUDE | 
|     #include "Downsample.cginc" | 
|     ENDCG | 
|   | 
|     SubShader { | 
|         ZTest Always Cull Off ZWrite Off | 
|         Fog { Mode Off } | 
|         // pass 0: downsample | 
|         Pass { | 
|             CGPROGRAM | 
|             #pragma vertex vert_downsample | 
|             #pragma fragment frag_downsample | 
|             ENDCG | 
|         } | 
|         // pass 1: downsample with shadow color | 
|         Pass { | 
|             CGPROGRAM | 
|             #pragma vertex vert_downsample | 
|             #pragma fragment frag_downsample_withShadowColor | 
|             ENDCG | 
|         } | 
|         // pass 2: blit | 
|         Pass { | 
|             CGPROGRAM | 
|             #pragma vertex vert_blit | 
|             #pragma fragment frag_blit | 
|             ENDCG | 
|         } | 
|         // pass 3: blit with shadow color | 
|         Pass { | 
|             CGPROGRAM | 
|             #pragma vertex vert_blit | 
|             #pragma fragment frag_blit_withShadowColor | 
|             ENDCG | 
|         } | 
|         // pass 4: downsample with blur | 
|         Pass { | 
|             CGPROGRAM | 
|             #pragma vertex vert_blit | 
|             #pragma fragment frag_downsample_with_blur | 
|             ENDCG | 
|         } | 
|         // pass 5: downsample with blur for mipmap | 
|         Pass { | 
|             CGPROGRAM | 
|             #pragma vertex vert_blit | 
|             #pragma fragment frag_downsample_with_blur_lod | 
|             #pragma target 3.0 | 
|             fixed4 frag_downsample_with_blur_lod(v2f_blit i) : COLOR | 
|             { | 
|                 fixed4 uv; | 
|                 uv.xy = i.uv0 + _Offset0.xy; | 
|                 uv.zw = 0; | 
|                 fixed4 c0 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset1.xy; | 
|                 fixed4 c1 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset2.xy; | 
|                 fixed4 c2 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset3.xy; | 
|                 fixed4 c3 = tex2Dlod(_MainTex, uv); | 
|   | 
|                 uv.xy = i.uv0 + _Offset0.xw; | 
|                 fixed4 color = _Weight.x * c0; | 
|                 c0 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset1.xw; | 
|                 color += _Weight.y * c1; | 
|                 c1 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset2.xw; | 
|                 color += _Weight.z * c2; | 
|                 c2 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset3.xw; | 
|                 color += _Weight.w * c3; | 
|                 c3 = tex2Dlod(_MainTex, uv); | 
|   | 
|                 uv.xy = i.uv0 + _Offset0.zy; | 
|                 color += _Weight.x * c0; | 
|                 c0 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset1.zy; | 
|                 color += _Weight.y * c1; | 
|                 c1 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset2.zy; | 
|                 color += _Weight.z * c2; | 
|                 c2 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset3.zy; | 
|                 color += _Weight.w * c3; | 
|                 c3 = tex2Dlod(_MainTex, uv); | 
|   | 
|                 uv.xy = i.uv0 + _Offset0.zw; | 
|                 color += _Weight.x * c0; | 
|                 c0 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset1.zw; | 
|                 color += _Weight.y * c1; | 
|                 c1 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset2.zw; | 
|                 color += _Weight.z * c2; | 
|                 c2 = tex2Dlod(_MainTex, uv); | 
|                 uv.xy = i.uv0 + _Offset3.zw; | 
|                 color += _Weight.w * c3; | 
|                 c3 = tex2Dlod(_MainTex, uv); | 
|   | 
|                 color += _Weight.x * c0; | 
|                 color += _Weight.y * c1; | 
|                 color += _Weight.z * c2; | 
|                 color += _Weight.w * c3; | 
|   | 
|                 return color; | 
|             } | 
|             ENDCG | 
|         } | 
|     } | 
|     Fallback "Hidden/DynamicShadowProjector/Blit/DownsampleFallback" | 
| } |