//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4 LghtAttn0;
//   float4 LghtColor0;
//   float4 LghtDir0;
//   float4 LghtPos0;
//   sampler2D PSSGShadowPSSMapDepthMap0;
//   sampler2D PSSGShadowPSSMapDepthMap1;
//   sampler2D PSSGShadowPSSMapDepthMap2;
//   sampler2D PSSGShadowPSSMapDepthMap3;
//   float4 PSSGShadowPSSMapDepthSplits;
//   float4x4 PSSGShadowPSSMapLightTextureMatrix0;
//   float4x4 PSSGShadowPSSMapLightTextureMatrix1;
//   float4x4 PSSGShadowPSSMapLightTextureMatrix2;
//   float4x4 PSSGShadowPSSMapLightTextureMatrix3;
//   float ShadowOpacity;
//   float cameraFar;
//   float cameraFarMinusNear;
//   float cameraNearFar;
//   float3 eyePositionWS;
//   sampler2D g_GBufferDepth;
//   sampler2D g_GBufferDiffuse;
//   sampler2D g_GBufferNormal;
//   sampler2D g_GBufferSpecular;
//   float4 g_PixelPerfectScreenOffset;
//   float g_RenderRatio;
//   float4 g_ShadowMapSizeAndDuDv;
//
//
// Registers:
//
//   Name                                Reg   Size
//   ----------------------------------- ----- ----
//   PSSGShadowPSSMapLightTextureMatrix0 c0       4
//   PSSGShadowPSSMapLightTextureMatrix1 c4       4
//   PSSGShadowPSSMapLightTextureMatrix2 c8       4
//   PSSGShadowPSSMapLightTextureMatrix3 c12      4
//   eyePositionWS                       c16      1
//   cameraFar                           c17      1
//   cameraNearFar                       c18      1
//   cameraFarMinusNear                  c19      1
//   g_RenderRatio                       c20      1
//   LghtPos0                            c21      1
//   LghtColor0                          c22      1
//   LghtAttn0                           c23      1
//   LghtDir0                            c24      1
//   PSSGShadowPSSMapDepthSplits         c25      1
//   ShadowOpacity                       c26      1
//   g_ShadowMapSizeAndDuDv              c27      1
//   g_PixelPerfectScreenOffset          c28      1
//   g_GBufferDiffuse                    s0       1
//   g_GBufferNormal                     s1       1
//   g_GBufferSpecular                   s2       1
//   g_GBufferDepth                      s3       1
//   PSSGShadowPSSMapDepthMap0           s4       1
//   PSSGShadowPSSMapDepthMap1           s5       1
//   PSSGShadowPSSMapDepthMap2           s6       1
//   PSSGShadowPSSMapDepthMap3           s7       1
//

    ps_3_0
    def c29, 2.20000005, 1024, 0.001953125, -1
    def c30, 80, 0.100000001, 40, 1
    def c31, 3, 0, 1.44269502, -115.415604
    def c32, 0.0666666701, 8, 0.0397887453, 4
    def c33, 0.5, -0.5, 2, -1
    defi i0, 3, 0, 0, 0
def c220, 1, 0.5, 0.0625, 0.83
dcl_2d s14
dcl vPos.xy
    dcl_texcoord v0.xyw  // IN<4,5,7>
    dcl_texcoord1 v1.xyz  // IN<8,9,10>
    dcl_2d s0
    dcl_2d s1
    dcl_2d s2
    dcl_2d s3
    dcl_2d s4
    dcl_2d s5
    dcl_2d s6
    dcl_2d s7

#line 1102 "pp_def_omni.cgfx"
    rcp r0.x, v0.w  // ::oow<0>
    mul r0.yz, r0.x, v0.xxyw  // ::uvProj<0,1>
    mul_pp r1.xyz, r0.x, v1  // mainFPStencilLight::IN<8,9,10>

#line 1109
    mov r2.xyw, c33
    mad r0.xy, r0.yzzw, r2, c28
    add r0.xy, r0, c33.x  // ::uv<0,1>

#line 702
    mul r0.xy, r0, c20.x  // FetchGeom::uv<0,1>

    mov r11.xy, vPos.xy
    rcp r11.z, c210.x
    rcp r11.w, c210.y
    mul r11.xy, r11.xy, r11.zw
    mul r11.zw, r11.zw, c220.yy
    add r0.xy, r11.xy, r11.zw
	
#line 706
    texld r3, r0, s3  // getDepth::depthSample<0>

#line 231 "incCommon.cgfx"
    mov r4.x, c19.x  // ::cameraFarMinusNear<0>
    mad r0.z, r3.x, r4.x, -c17.x
    rcp r0.z, r0.z
    mul r0.w, r0.z, c18.x  // ::viewSpaceZ<0>

#line 709 "pp_def_omni.cgfx"
    mul r3.xyz, r1, r0.w  // ::eyeToPos<0,1,2>
    mad r1.xyz, r0.w, r1, c16  // ::geom<0,1,2>
	
//Mike_ar69: Stereo Correct
mov r21.xyz, r1.xyz
mov r21.w, c220.x

mul r22, r21.y, c205
mad r22, c204, r21.x, r22
mad r22, c206, r21.z, r22
add r22, c207, r22
	
texldl r24, c220.z, s14
add r24.y, -r22.z, -r24.y
mul r24.x, r24.x, r24.y
rcp r25.x, c100.x
mul r24.x, r24.x, r25.x //c100.x //c220.w
add r22.x, r22.x, -r24.x

rcp r25.w, r22.w
mul r22, r22, r25.w

mul r21, r22.y, c201
mad r21, c200, r22.x, r21
mad r21, c202, r22.z, r21
add r21, c203, r21

rcp r25.w, r21.w
mul r21.xyz, r21.xyz, r25.w

mov r1.xyz, r21.xyz
	
    dp3 r0.w, -r3, -r3
    rsq r0.w, r0.w
    texld_pp r4, r0, s1  // ::n<0,1,2>

#line 717
    mad r4.xyz, r4, c33.z, c33.w
    nrm_pp r5.xyz, r4  // ::geom<9,10,11>

#line 740
    texld_pp r4, r0, s2  // ::s<0,1,2,3>
    texld_pp r6, r0, s0  // ::d<0,1,2>

#line 730
    log_pp r7.x, r6.x
    log_pp r7.y, r6.y
    log_pp r7.z, r6.z
    mul_pp r6.xyz, r7, c29.x
    exp_pp r7.x, r6.x  // ::gammaToLinear<0>
    exp_pp r7.y, r6.y  // ::gammaToLinear<1>
    exp_pp r7.z, r6.z  // ::gammaToLinear<2>

#line 747
    mul_pp r0.x, r4.w, c29.y
    max_pp r1.w, r0.x, -c33.w  // ::material<7>

#line 608
    add r6.xyz, -r1, c21  // ::lightVec<0,1,2>

#line 611
    dp3 r0.x, r6, r6
    rsq r0.x, r0.x
    rcp r0.y, r0.x  // ::lightDist<0>
    mul r6.xyz, r0.x, r6  // ::lightVec<0,1,2>

#line 616
    dp3 r0.x, -c24, r6  // ::dirContribution<0>

#line 621
    add r0.xy, r0, -c23.zxzw

#line 617
    mul_sat r0.xy, r0, c23.wyzw  // ::coneAttn<0>, ::attn<0>

#line 626
    mul_pp r0.x, r0.x, r0.y  // ::attn<0>

#line 629
    mul_pp r0.x, r0.x, r0.x  // ::attn<0>

#line 642
    mul r8, r1.y, c1
    mad r8, c0, r1.x, r8
    mad r8, c2, r1.z, r8
    add r8, r8, c3  // ::uv0<0,1,2,3>
    mul r9, r1.y, c5
    mad r9, c4, r1.x, r9
    mad r9, c6, r1.z, r9
    add r9, r9, c7  // ::uv1<0,1,2,3>
    mul r10, r1.y, c9
    mad r10, c8, r1.x, r10
    mad r10, c10, r1.z, r10
    add r10, r10, c11  // ::uv2<0,1,2,3>
    mul r11, r1.y, c13
    mad r11, c12, r1.x, r11
    mad r11, c14, r1.z, r11
    add r11, r11, c15  // ::uv3<0,1,2,3>

#line 403
    rcp r0.y, r8.w

#line 206
    mul r1.xy, r2.x, c27.zwzw  // ::halfOff<0,1>

#line 411
    mov r12.x, c27.x  // ::g_ShadowMapSizeAndDuDv<0>
    mad_sat r1.z, r12.x, c29.z, c29.w  // ::factor<0>

#line 414
    mad r12.xy, r1.z, c30, c30.zwzw  // ::esmK<0>, ::esmScale<0>

#line 199
    rcp r13.y, c27.x
    rcp r13.w, c27.y

#line 430
    mad r1.z, r8.z, -r0.y, -c33.w
    rcp r1.z, r1.z

#line 210
    mul r14, r2.xyyx, c27.zwzw

#line 422
    mov r2.x, c31.y  // ::sum<0>
    mov r2.y, c33.w  // ::x<0>
    rep i0

#line 426
      add r2.z, -r2_abs.y, c31.x

#line 429
      mul r15.y, r2.y, c27.z

#line 424
      mov r16.x, r2.x  // ::sum<0>
      mov r16.y, c33.w  // ::y<0>
      rep i0
        add r3.w, r2.z, -r16_abs.y  // ::weightFilter<0>

#line 429
        mul r15.w, r16.y, c27.w
        mad_sat r12.zw, r8.xyxy, r0.y, r15.xyyw  // getDepthAndWeightFilterBilinear::uv<0,1>

#line 199
        mul r13.xz, r12.zyww, c27.xyyw
        frc r15.xz, r13
        add r13.xz, r13, -r15

#line 207
        mad r15.xz, r13, r13.yyww, -r1.xyyw  // ::uvX<0,1>
        mad r16.zw, r13.xyxz, r13.xyyw, r1.xyxy  // ::uvZ<0,1>
        mad r17, r13.xzxz, r13.ywyw, r14  // ::uvY<0,1>, ::uvW<0,1>
        mad r12.zw, r13.xyxz, -r13.xyyw, r12
        mul r13.xz, r12.zyww, c27.xyyw  // ::fracUV<0,1>
        mad r12.zw, r12.xywz, -c27.xyyx, -r2.w
        mul r18.x, r12.z, r12.w  // getDepthAndWeightFilterBilinear::weights<0>
        mul r18.z, r13.z, r13.x  // getDepthAndWeightFilterBilinear::weights<2>
        mul r18.yw, r12.xzzw, r13.xxzz  // getDepthAndWeightFilterBilinear::weights<1,3>

#line 219
        texld r19, r15.xzzw, s4  // getDepth::depthSample<0>
        texld r20, r17, s4  // getDepth::depthSample<0>
        texld r21, r16.zwzw, s4  // getDepth::depthSample<0>
        texld r17, r17.zwzw, s4  // getDepth::depthSample<0>

#line 430
        mov r19.y, r20.x
        mov r19.z, r21.x
        mov r19.w, r17.x
        mad r17, r8.z, -r0.y, r19
        mul r17, r1.z, r17
        mul r19, r12.x, r17
        mad r17, r12.x, -r17, -c30.x
        mul r19, r19, c31.z
        cmp r17, r17, c31.w, r19
        exp_sat r19.x, r17.x  // ::shadowExp<0>
        exp_sat r19.y, r17.y  // ::shadowExp<1>
        exp_sat r19.z, r17.z  // ::shadowExp<2>
        exp_sat r19.w, r17.w  // ::shadowExp<3>
        dp4 r4.w, r18, r19  // ::shadow<0>
        add r4.w, -r4.w, -c33.w
        mad_sat r4.w, r12.y, -r4.w, -c33.w  // ::shadow<0>
        mad r16.x, r3.w, r4.w, r16.x  // ::sum<0>

#line 424
        add r16.y, r16.y, -c33.w  // ::y<0>
      endrep
      mov r2.x, r16.x  // ::sum<0>
      add r2.y, r2.y, -c33.w  // ::x<0>
    endrep

#line 439
    mul_pp r0.y, r2.x, c32.x  // ::sampleDepth<0>

#line 529
    rcp r1.z, c25.x

#line 539
    mul r2.xyz, r1.z, c25.yzww  // ::raiotSplit<0>, ::ratioSplit<0,0>

#line 403
    rcp r1.z, r9.w

#line 412
    mul r2.xyz, r2, r12.x  // ::esmK<0,0,0>

#line 430
    mad r3.w, r9.z, -r1.z, -c33.w
    rcp r3.w, r3.w

#line 422
    mov r4.w, c31.y  // ::sum<0>
    mov r5.w, c33.w  // ::x<0>
    rep i0

#line 426
      add r6.w, -r5_abs.w, c31.x

#line 429
      mul r8.y, r5.w, c27.z

#line 424
      mov r15.x, r4.w  // ::sum<0>
      mov r15.y, c33.w  // ::y<0>
      rep i0
        add r7.w, r6.w, -r15_abs.y  // ::weightFilter<0>

#line 429
        mul r8.w, r15.y, c27.w
        mad_sat r8.xz, r9.xyyw, r1.z, r8.yyww  // getDepthAndWeightFilterBilinear::uv<0,1>

#line 199
        mul r12.xz, r8, c27.xyyw
        frc r13.xz, r12
        add r12.xz, r12, -r13

#line 207
        mad r13.xz, r12, r13.yyww, -r1.xyyw  // ::uvX<0,1>
        mad r15.zw, r12.xyxz, r13.xyyw, r1.xyxy  // ::uvZ<0,1>
        mad r16, r12.xzxz, r13.ywyw, r14  // ::uvY<0,1>, ::uvW<0,1>
        mad r8.xz, r12, -r13.yyww, r8
        mul r12.xz, r8, c27.xyyw  // ::fracUV<0,1>
        mad r8.xz, r8.zyxw, -c27.yyxw, -r2.w
        mul r17.x, r8.x, r8.z  // getDepthAndWeightFilterBilinear::weights<0>
        mul r17.z, r12.z, r12.x  // getDepthAndWeightFilterBilinear::weights<2>
        mul r17.yw, r8.xxzz, r12.xxzz  // getDepthAndWeightFilterBilinear::weights<1,3>

#line 219
        texld r18, r13.xzzw, s5  // getDepth::depthSample<0>
        texld r19, r16, s5  // getDepth::depthSample<0>
        texld r20, r15.zwzw, s5  // getDepth::depthSample<0>
        texld r16, r16.zwzw, s5  // getDepth::depthSample<0>

#line 430
        mov r18.y, r19.x
        mov r18.z, r20.x
        mov r18.w, r16.x
        mad r16, r9.z, -r1.z, r18
        mul r16, r3.w, r16
        mul r18, r2.x, r16
        mad r16, r2.x, -r16, -c30.x
        mul r18, r18, c31.z
        cmp r16, r16, c31.w, r18
        exp_sat r18.x, r16.x  // ::shadowExp<0>
        exp_sat r18.y, r16.y  // ::shadowExp<1>
        exp_sat r18.z, r16.z  // ::shadowExp<2>
        exp_sat r18.w, r16.w  // ::shadowExp<3>
        dp4 r8.x, r17, r18  // ::shadow<0>
        add r8.x, -r8.x, -c33.w
        mad_sat r8.x, r12.y, -r8.x, -c33.w  // ::shadow<0>
        mad r15.x, r7.w, r8.x, r15.x  // ::sum<0>

#line 424
        add r15.y, r15.y, -c33.w  // ::y<0>
      endrep
      mov r4.w, r15.x  // ::sum<0>
      add r5.w, r5.w, -c33.w  // ::x<0>
    endrep

#line 439
    mul_pp r1.z, r4.w, c32.x  // ::sampleDepth<0>

#line 403
    rcp r2.x, r10.w

#line 430
    mad r3.w, r10.z, -r2.x, -c33.w
    rcp r3.w, r3.w

#line 422
    mov r4.w, c31.y  // ::sum<0>
    mov r5.w, c33.w  // ::x<0>
    rep i0

#line 426
      add r6.w, -r5_abs.w, c31.x

#line 429
      mul r8.y, r5.w, c27.z

#line 424
      mov r9.x, r4.w  // ::sum<0>
      mov r9.y, c33.w  // ::y<0>
      rep i0
        add r7.w, r6.w, -r9_abs.y  // ::weightFilter<0>

#line 429
        mul r8.w, r9.y, c27.w
        mad_sat r8.xz, r10.xyyw, r2.x, r8.yyww  // getDepthAndWeightFilterBilinear::uv<0,1>

#line 199
        mul r9.zw, r8.xyxz, c27.xyxy
        frc r12.xz, r9.zyww
        add r9.zw, r9, -r12.xyxz

#line 207
        mad r12.xz, r9.zyww, r13.yyww, -r1.xyyw  // ::uvX<0,1>
        mad r13.xz, r9.zyww, r13.yyww, r1.xyyw  // ::uvZ<0,1>
        mad r15, r9.zwzw, r13.ywyw, r14  // ::uvY<0,1>, ::uvW<0,1>
        mad r8.xz, r9.zyww, -r13.yyww, r8
        mul r9.zw, r8.xyxz, c27.xyxy  // ::fracUV<0,1>
        mad r8.xz, r8.zyxw, -c27.yyxw, -r2.w
        mul r16.x, r8.x, r8.z  // getDepthAndWeightFilterBilinear::weights<0>
        mul r16.z, r9.w, r9.z  // getDepthAndWeightFilterBilinear::weights<2>
        mul r16.yw, r8.xxzz, r9.xzzw  // getDepthAndWeightFilterBilinear::weights<1,3>

#line 219
        texld r17, r12.xzzw, s6  // getDepth::depthSample<0>
        texld r18, r15, s6  // getDepth::depthSample<0>
        texld r19, r13.xzzw, s6  // getDepth::depthSample<0>
        texld r15, r15.zwzw, s6  // getDepth::depthSample<0>

#line 430
        mov r17.y, r18.x
        mov r17.z, r19.x
        mov r17.w, r15.x
        mad r15, r10.z, -r2.x, r17
        mul r15, r3.w, r15
        mul r17, r2.y, r15
        mad r15, r2.y, -r15, -c30.x
        mul r17, r17, c31.z
        cmp r15, r15, c31.w, r17
        exp_sat r17.x, r15.x  // ::shadowExp<0>
        exp_sat r17.y, r15.y  // ::shadowExp<1>
        exp_sat r17.z, r15.z  // ::shadowExp<2>
        exp_sat r17.w, r15.w  // ::shadowExp<3>
        dp4 r8.x, r16, r17  // ::shadow<0>
        add r8.x, -r8.x, -c33.w
        mad_sat r8.x, r12.y, -r8.x, -c33.w  // ::shadow<0>
        mad r9.x, r7.w, r8.x, r9.x  // ::sum<0>

#line 424
        add r9.y, r9.y, -c33.w  // ::y<0>
      endrep
      mov r4.w, r9.x  // ::sum<0>
      add r5.w, r5.w, -c33.w  // ::x<0>
    endrep

#line 439
    mul_pp r2.x, r4.w, c32.x  // ::sampleDepth<0>

#line 537
    mov r8, c25  // ::PSSGShadowPSSMapDepthSplits<0,1,2,3>
    mad r8, c18.x, -r0.z, -r8

#line 403
    rcp r0.z, r11.w

#line 430
    mad r2.y, r11.z, -r0.z, -c33.w
    rcp r2.y, r2.y

#line 422
    mov r3.w, c31.y  // ::sum<0>
    mov r4.w, c33.w  // ::x<0>
    rep i0

#line 426
      add r5.w, -r4_abs.w, c31.x

#line 429
      mul r9.y, r4.w, c27.z

#line 424
      mov r10.x, r3.w  // ::sum<0>
      mov r10.y, c33.w  // ::y<0>
      rep i0
        add r6.w, r5.w, -r10_abs.y  // ::weightFilter<0>

#line 429
        mul r9.w, r10.y, c27.w
        mad_sat r9.xz, r11.xyyw, r0.z, r9.yyww  // getDepthAndWeightFilterBilinear::uv<0,1>

#line 199
        mul r10.zw, r9.xyxz, c27.xyxy
        frc r12.xz, r10.zyww
        add r10.zw, r10, -r12.xyxz

#line 207
        mad r12.xz, r10.zyww, r13.yyww, -r1.xyyw  // ::uvX<0,1>
        mad r13.xz, r10.zyww, r13.yyww, r1.xyyw  // ::uvZ<0,1>
        mad r15, r10.zwzw, r13.ywyw, r14  // ::uvY<0,1>, ::uvW<0,1>
        mad r9.xz, r10.zyww, -r13.yyww, r9
        mul r10.zw, r9.xyxz, c27.xyxy  // ::fracUV<0,1>
        mad r9.xz, r9.zyxw, -c27.yyxw, -r2.w
        mul r16.x, r9.x, r9.z  // getDepthAndWeightFilterBilinear::weights<0>
        mul r16.z, r10.w, r10.z  // getDepthAndWeightFilterBilinear::weights<2>
        mul r16.yw, r9.xxzz, r10.xzzw  // getDepthAndWeightFilterBilinear::weights<1,3>

#line 219
        texld r17, r12.xzzw, s7  // getDepth::depthSample<0>
        texld r18, r15, s7  // getDepth::depthSample<0>
        texld r19, r13.xzzw, s7  // getDepth::depthSample<0>
        texld r15, r15.zwzw, s7  // getDepth::depthSample<0>

#line 430
        mov r17.y, r18.x
        mov r17.z, r19.x
        mov r17.w, r15.x
        mad r15, r11.z, -r0.z, r17
        mul r15, r2.y, r15
        mul r17, r2.z, r15
        mad r15, r2.z, -r15, -c30.x
        mul r17, r17, c31.z
        cmp r15, r15, c31.w, r17
        exp_sat r17.x, r15.x  // ::shadowExp<0>
        exp_sat r17.y, r15.y  // ::shadowExp<1>
        exp_sat r17.z, r15.z  // ::shadowExp<2>
        exp_sat r17.w, r15.w  // ::shadowExp<3>
        dp4 r7.w, r16, r17  // ::shadow<0>
        add r7.w, -r7.w, -c33.w
        mad_sat r7.w, r12.y, -r7.w, -c33.w  // ::shadow<0>
        mad r10.x, r6.w, r7.w, r10.x  // ::sum<0>

#line 424
        add r10.y, r10.y, -c33.w  // ::y<0>
      endrep
      mov r3.w, r10.x  // ::sum<0>
      add r4.w, r4.w, -c33.w  // ::x<0>
    endrep

#line 439
    mul_pp r0.z, r3.w, c32.x  // ::sampleDepth<0>

#line 537
    cmp_pp r0.z, r8.w, -c33.w, r0.z  // ::shadow<0>

#line 532
    cmp_pp r0.z, r8.z, r0.z, r2.x  // ::shadow<0>

#line 527
    cmp_pp r0.z, r8.y, r0.z, r1.z  // ::shadow<0>

#line 523
    cmp_pp r0.y, r8.x, r0.z, r0.y  // ::shadow<0>

#line 548
    add r0.y, r0.y, c33.w
    mad_pp r0.y, c26.x, r0.y, -r2.w  // ::shadow<0>

#line 676
    mad r1.xyz, -r3, r0.w, r6
    nrm_pp r2.xyz, r1  // ::halfVec<0,1,2>
    dp3_sat r0.z, r5, r6  // ::ndl<0>

#line 681
    dp3_sat_pp r0.w, r5, r2  // ::ndh<0>
    pow_pp r2.x, r0.w, r1.w  // ::specPower<0>
    add r0.w, r1.w, c32.y
    mul r0.w, r0.w, r2.x
    mul_pp r0.w, r0.w, c32.z  // ::specPower<0>

#line 692
    mul_pp r1.xyz, r0.w, r4
    mul_sat r0.w, r0.z, c32.w
    mul r1.xyz, r0.w, r1
    mad_pp r1.xyz, r7, r0.z, r1  // ::result<0,1,2>
    mul r0.xzw, r0.x, c22.xyyz
    mul r0.xyz, r0.y, r0.xzww
    mul_pp oC0.xyz, r0, r1  // ::mainFPStencilSpotShadowPersCascaded<0,1,2>
    mov_pp oC0.w, -c33.w  // ::mainFPStencilSpotShadowPersCascaded<3>

// approximately 332 instruction slots used (20 texture, 312 arithmetic)
 