// Shadows in snow, also with jaggy edged shadows.

// CRC32: 06066820 | Unity headers extracted from Internal-PrePassCollectShadows.shader
// Shader "Hidden/Internal-PrePassCollectShadows" {
//   Properties {
//    _ShadowMapTexture ("", any) = "" { }
//   }
//   Fallback Off
//   SubShader 2/2 {
//     Tags { "ShadowmapFilter"="PCF_5x5" }
//     Pass 1/1 {
//       Tags { "ShadowmapFilter"="PCF_5x5" }
//       ZTest Always
//       ZWrite Off
//       Cull Off
//       GpuProgramID 97017
//       Program "fp" {
//         SubProgram "d3d9 " {
//           Keywords { "SHADOWS_NATIVE" "SHADOWS_SPLIT_SPHERES" }
//           Matrix 19 [_CameraToWorld]
//           Matrix 0 [unity_World2Shadow0]
//           Matrix 4 [unity_World2Shadow1]
//           Matrix 8 [unity_World2Shadow2]
//           Matrix 12 [unity_World2Shadow3] 3
//           Vector 26 [_LightShadowData]
//           Vector 28 [_ShadowMapTexture_TexelSize]
//           Vector 23 [_ZBufferParams]
//           Vector 24 [unity_OrthoParams]
//           Vector 27 [unity_ShadowFadeCenterAndType]
//           Vector 15 [unity_ShadowSplitSpheres0]
//           Vector 16 [unity_ShadowSplitSpheres1]
//           Vector 17 [unity_ShadowSplitSpheres2]
//           Vector 18 [unity_ShadowSplitSpheres3]
//           Vector 25 [unity_ShadowSplitSqRadii]
//           SetTexture 0 [_CameraDepthTexture] 2D 0
//           SetTexture 1 [_ShadowMapTexture] 2D 1
//         }
//       }
//     }
//   }
// }
// 
// Headers extracted with DarkStarSword's extract_unity_shaders.py
// https://raw.githubusercontent.com/DarkStarSword/3d-fixes/master/extract_unity_shaders.py

    ps_3_0
    def c29, 0.5, -0.5, 3, 4
    def c30, 4, 7, 1, 49
    def c31, 3, 1, 2, -2
    def c32, 1, 0, 0.142857149, 7
    def c33, 0.0069444445, 0, 0, 0
    def c34, 1, 0, -0, -1
    dcl_texcoord v0.xy
    dcl_texcoord1 v1.xyz
    dcl_texcoord2 v2
    dcl_2d s0
    dcl_2d s1
    
dcl_texcoord5 v5.x // New input from vertex shader with unity_CameraInvProjection[0].x

def c220, 0, 1, 0.0625, 1.90
dcl_2d s13

mov r28.x, v5.x // override as needed
// mov r28.x, c220.w
   
    mov r0.xy, v2
    texld r1, v0, s0
    mad r0.w, c23.x, r1.x, c23.y
    rcp r0.w, r0.w
    lrp r2.x, c24.w, r1.x, r0.w
    lrp r0.z, r1.x, v2.w, v2.z
    mad r0.xyz, v1, -r2.x, r0
    mul r1.xyz, r2.x, v1
    mad r0.xyz, c24.w, r0, r1
    mov r0.w, c34.x
    
// Unity light/shadow fix (pixel shader stage) inserted with DarkStarSword's shadertool.py:
// shadertool.py --fix-unity-lighting-ps --in-place 06066820.txt
texldl r31, c220.z, s13
add r31.w, r1.z, -r31.y
mul r31.w, r31.w, r31.x
mad r0.x, -r31.w, r28.x, r0.x

    dp4 r1.x, c19, r0
    dp4 r1.y, c20, r0
    dp4 r1.z, c21, r0
    dp4 r1.w, c22, r0
    add r0.xyz, r1, -c15
    dp3 r0.x, r0, r0
    add r2.xyz, r1, -c16
    dp3 r0.y, r2, r2
    add r2.xyz, r1, -c17
    dp3 r0.z, r2, r2
    add r2.xyz, r1, -c18
    dp3 r0.w, r2, r2
    add r0, r0, -c25
    cmp r2.xyz, r0, c34.z, c34.w
    cmp r0, r0, c34.y, c34.x
    add_pp r0.yzw, r2.xxyz, r0
    max_pp r2.xyz, r0.yzww, c34.y
    dp4 r3.x, c4, r1
    dp4 r3.y, c5, r1
    dp4 r3.z, c6, r1
    mul r0.yzw, r2.x, r3.xxyz
    dp4 r3.x, c0, r1
    dp4 r3.y, c1, r1
    dp4 r3.z, c2, r1
    mad r0.xyz, r3, r0.x, r0.yzww
    dp4 r3.x, c8, r1
    dp4 r3.y, c9, r1
    dp4 r3.z, c10, r1
    mad r0.xyz, r3, r2.y, r0
    dp4 r3.x, c12, r1
    dp4 r3.y, c13, r1
    dp4 r3.z, c14, r1
    add r1.xyz, r1, -c27
    dp3 r0.w, r1, r1
    rsq r0.w, r0.w
    rcp r0.w, r0.w
    mad_sat_pp r0.w, r0.w, c26.z, c26.w
    mad r0.xyz, r3, r2.z, r0
    mad r1.zw, r0.z, c34.xyxy, c34.xyyx
    mov r2, c28
    mad r0.xy, r0, r2.zwzw, c29.x
    frc r2.zw, r0.xyxy
    add r0.xy, r0, -r2.zwzw
    add r0.xy, r0, c29.y
    mad r3.xy, r2.zwzw, c31.x, c31.y
    rcp r0.z, r3.x
    mad r4.w, r2.z, r0.z, c31.z
    add r3.xz, r2.zyww, c29.z
    mul r4.yz, r3.xzxw, c28.xyxw
    mad r3.xz, r2.zyww, -c31.z, c31.x
    mad r5.xy, r2.zwzw, -c29.z, c29.w
    rcp r0.z, r5.x
    mad r4.x, r3.x, r0.z, c31.w
    mad r5.xzw, r2.x, c32.xyyx, c32.yyzy
    mul r6.xyz, r4.zxww, r5.zxww
    rcp r0.z, r3.y
    mad r4.z, r2.w, r0.z, c31.z
    mul r0.z, r2.z, c29.z
    mov r7.xyw, c34
    mad r5.xzw, r0.z, r7.wyyx, c30.xyyz
    rcp r0.z, r5.y
    mul_pp r7.yzw, r5.y, r5.xxzw
    mad r4.x, r3.z, r0.z, c31.w
    mad r2.xyz, r2.yxyw, c32.xyxw, c32.yzyw
    mul r2.xyz, r2, r4
    mov r6.w, r2.x
    mad r1.xy, r0, c28, r6.ywzw
    texldp r4, r1, s1
    mad r1.xy, r0, c28, r6.xwzw
    mad r8.xy, r0, c28, r6.zwzw
    texldp r9, r1, s1
    mov r8.zw, r1
    mul r0.z, r7.z, r9.x
    mad_pp r0.z, r7.y, r4.x, r0.z
    texldp r1, r8, s1
    mad_pp r0.z, r7.w, r1.x, r0.z
    mul_pp r1.xy, r5.xwzw, c32.w
    mul_pp r3.xyz, r3.y, r5.xzww
    mov r2.w, r6.y
    mad r8.xy, r0, c28, r2.wyzw
    mad r4.xy, r0, c28, r2.wzzw
    mov r6.yw, r2.xyzz
    texldp r2, r8, s1
    mad_pp r0.z, r1.x, r2.x, r0.z
    mad r8.xy, r0, c28, r6
    texldp r2, r8, s1
    mad_pp r0.z, r2.x, c30.w, r0.z
    mad r8.xy, r0, c28, r6.zyzw
    texldp r2, r8, s1
    mov r4.zw, r8
    mad_pp r0.z, r1.y, r2.x, r0.z
    texldp r1, r4, s1
    mad_pp r0.z, r3.x, r1.x, r0.z
    mad r4.xy, r0, c28, r6.xwzw
    mad r1.xy, r0, c28, r6.zwzw
    texldp r2, r4, s1
    mov r1.zw, r4
    texldp r1, r1, s1
    mad_pp r0.x, r3.y, r2.x, r0.z
    mad_pp r0.x, r3.z, r1.x, r0.x
    mul_pp r0.x, r0.x, c33.x
    lrp_pp r1.x, r0.x, r7.x, c26.x
    add_pp oC0, r0.w, r1.x

// Just disabled shadows. On command:

mov r30.x, c200.x
if_eq r30.x, c33.w
  mov oC0.xyzw, c220.xxxx
endif

// approximately 113 instruction slots used (10 texture, 103 arithmetic)
 