//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.2.67 on Mon Jan 01 13:11:47 2018
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   float4 g_vDeepColor;               // Offset:    0 Size:    16 [unused]
//   float4 g_vLowDeepColor;            // Offset:   16 Size:    16 [unused]
//   float4 g_vSandScale;               // Offset:   32 Size:    16 [unused]
//      = 0x41800000 0x40800000 0x00000000 0x3f800000 
//   float4 g_vSlopeScale;              // Offset:   48 Size:    16
//      = 0x41800000 0x41800000 0x41800000 0x3c23d70a 
//   float4 g_vSlopeSpecBright;         // Offset:   64 Size:    16 [unused]
//      = 0x00000000 0x00000000 0x00000000 0x00000000 
//   float4 g_vSlopeBump;               // Offset:   80 Size:    16
//      = 0x3f800000 0x3f800000 0x3f800000 0x3f800000 
//   float4x4 g_mWorldViewProjection;   // Offset:   96 Size:    64 [unused]
//   float3 g_vTranslate;               // Offset:  160 Size:    12 [unused]
//   float3 scaleConst;                 // Offset:  176 Size:    12 [unused]
//   float4x4 textureRotation;          // Offset:  192 Size:    64 [unused]
//   float4 g_vTexCoords0;              // Offset:  256 Size:    16 [unused]
//   float4 g_vTexCoords1;              // Offset:  272 Size:    16 [unused]
//   float4 worldCoords;                // Offset:  288 Size:    16 [unused]
//   float4 g_vSettings;                // Offset:  304 Size:    16
//      = 0x3b000000 0x3f800000 0x00000000 0x00000000 
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// MeshTextureSampler                sampler      NA          NA    0        1
// LerpSampler                       sampler      NA          NA    1        1
// LerpSamplerDetailed               sampler      NA          NA    2        1
// MeshTextureSampler                texture  float4          2d    0        1
// g_tMisc0                          texture  float4          2d    1        1
// g_tSlope0                         texture  float4          2d    2        1
// g_tSlope1                         texture  float4          2d    3        1
// g_tSlope2                         texture  float4          2d    4        1
// g_tSlope3                         texture  float4          2d    5        1
// g_tSnow0                          texture  float4          2d    6        1
// g_tSnow1                          texture  float4          2d    7        1
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float       
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
// TEXCOORD                 1   xy          2     NONE   float       
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_0
dcl_constantbuffer cb0[20], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_input_ps linear v1.xyzw
dcl_output o0.xyzw
dcl_temps 16
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
add_sat r1.x, r0.y, l(-0.250000)
mul r1.y, r1.x, l(1500.000000)
mul r1.zw, v1.zzzw, l(0.000000, 0.000000, 16.000000, 16.000000)
sample_l r2.xyzw, r1.zwzz, t1.xyzw, s1, l(0.000000)
lt r3.xyzw, l(0.010000, 0.250000, 0.500000, 0.750000), r0.zzzz
mul r4.xyzw, v1.zwzw, cb0[3].xxyy
sample r5.xyzw, r4.xyxx, t2.xyzw, s2
mov r4.y, cb0[19].x
mov r4.x, l(0)
mad r6.xyzw, v1.zwzw, cb0[3].xxxx, r4.yxxy
sample r7.xyzw, r6.xyxx, t2.xyzw, s2
sample r6.xyzw, r6.zwzz, t2.xyzw, s2
if_nz r3.x
  mul r1.z, r0.z, l(4.000000)
  min r1.z, r1.z, l(1.000000)
  add r5.z, r5.w, -r7.w
  add r5.x, -r5.w, r6.w
  mov r5.y, cb0[5].x
  dp3 r1.w, r5.xyzx, r5.xyzx
  rsq r1.w, r1.w
  mul r2.yzw, r1.wwww, r5.xxyz
  add r1.w, -r2.x, r1.z
  mul_sat r1.w, r1.w, l(20.000000)
  mul r1.z, r1.z, r1.w
else 
  mov r2.yzw, l(0,0,1.000000,0)
  mov r1.z, l(0)
endif 
sample r5.xyzw, r4.zwzz, t3.xyzw, s2
mad r6.xyzw, v1.zwzw, cb0[3].yyyy, r4.yxxy
sample r7.xyzw, r6.xyxx, t3.xyzw, s2
sample r6.xyzw, r6.zwzz, t3.xyzw, s2
if_nz r3.y
  add r1.w, r0.z, l(-0.250000)
  mul r1.w, r1.w, l(4.000000)
  min r1.w, r1.w, l(1.000000)
  add r3.x, -r2.x, r1.w
  mul_sat r3.x, r3.x, l(20.000000)
  mul r1.w, r1.w, r3.x
  add r5.z, r5.w, -r7.w
  add r5.x, -r5.w, r6.w
  mov r5.y, cb0[5].y
  dp3 r3.x, r5.xyzx, r5.xyzx
  rsq r3.x, r3.x
  mad r5.xyz, r5.xyzx, r3.xxxx, -r2.yzwy
  mad r5.xyz, r5.xyzx, r1.wwww, r2.yzwy
  dp3 r1.w, r5.xyzx, r5.xyzx
  rsq r1.w, r1.w
  mul r2.yzw, r1.wwww, r5.xxyz
endif 
mul r5.xyzw, v1.wzzw, cb0[3].zzzz
mul r6.x, -r1.y, cb0[19].w
mov r6.yz, r5.xxyx
sample r7.xyzw, r6.yxyy, t4.xyzw, s2
add r8.xyzw, r4.yxxy, r6.yxyx
sample r9.xyzw, r8.xyxx, t4.xyzw, s2
sample r8.xyzw, r8.zwzz, t4.xyzw, s2
sample r10.xyzw, r6.zxzz, t4.xyzw, s2
add r6.xyzw, r4.yxxy, r6.zxzx
sample r11.xyzw, r6.xyxx, t4.xyzw, s2
sample r6.xyzw, r6.zwzz, t4.xyzw, s2
sample r12.xyzw, r5.zwzz, t5.xyzw, s2
mad r13.xyzw, v1.zwzw, cb0[3].zzzz, r4.yxxy
sample r14.xyzw, r13.xyxx, t5.xyzw, s2
sample r15.xyzw, r13.zwzz, t5.xyzw, s2
if_nz r3.z
  add r1.y, r0.z, l(-0.500000)
  mul r1.y, r1.y, l(4.000000)
  min r1.y, r1.y, l(1.000000)
  mad r1.x, -r1.x, l(1500.000000), cb0[19].y
  mad_sat r1.x, -r1.x, cb0[19].z, l(1.000000)
  lt r1.w, r1.x, l(1.000000)
  if_nz r1.w
    add r0.xw, r0.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000)
    mad r0.xw, r0.xxxw, l(2.000000, 0.000000, 0.000000, 2.000000), l(0.000100, 0.000000, 0.000000, 0.000100)
    dp2 r1.w, r0.xwxx, r0.xwxx
    rsq r1.w, r1.w
    mul r3.xy, r0.xwxx, r1.wwww
    add r6.z, r7.w, -r9.w
    add r6.x, -r7.w, r8.w
    mov r6.y, cb0[5].z
    dp3 r0.x, r6.xyzx, r6.xyzx
    rsq r0.x, r0.x
    mul r7.xyz, r0.xxxx, r6.xyzx
    lt r0.xw, r3.yyyx, l(0.000000, 0.000000, 0.000000, 0.000000)
    if_nz r0.x
      mov r7.w, -r7.z
    else 
      mov r7.w, r7.z
    endif 
    mov r3.z, -r3.y
    dp2 r6.x, r7.xwxx, r3.xzxx
    dp2 r6.z, r7.wxww, r3.xyxx
    add r8.z, r10.w, -r11.w
    add r8.x, -r10.w, r6.w
    mov r8.y, cb0[5].z
    dp3 r0.x, r8.xyzx, r8.xyzx
    rsq r0.x, r0.x
    mul r8.xyz, r0.xxxx, r8.xyzx
    if_nz r0.w
      mov r8.w, -r8.z
    else 
      mov r8.w, r8.z
    endif 
    dp2 r9.x, r8.xwxx, r3.xzxx
    dp2 r9.z, r8.wxww, r3.xyxx
    mov r6.y, r7.y
    mov r9.y, r8.y
    add r7.xyz, -r6.xyzx, r9.xyzx
    mad r3.xyz, |r3.xxxx|, r7.xyzx, r6.xyzx
  else 
    mov r3.xyz, l(0,0,0,0)
  endif 
  lt r0.x, l(0.000000), r1.x
  if_nz r0.x
    add r0.x, -r2.x, r1.x
    mul_sat r0.x, r0.x, l(20.000000)
    mul r0.x, r1.x, r0.x
    add r6.z, r12.w, -r14.w
    add r6.x, -r12.w, r15.w
    mov r6.y, cb0[5].z
    dp3 r0.w, r6.xyzx, r6.xyzx
    rsq r0.w, r0.w
    mad r6.xyz, r6.xyzx, r0.wwww, -r3.xyzx
    mad r3.xyz, r0.xxxx, r6.xyzx, r3.xyzx
  endif 
  add r0.x, -r2.x, r1.y
  mul_sat r0.x, r0.x, l(20.000000)
  add r0.w, r1.y, l(0.250000)
  min r0.w, r0.w, l(1.000000)
  mul r0.x, r0.w, r0.x
  add r1.xyw, -r2.yzyw, r3.xyxz
  mad r1.xyw, r1.xyxw, r0.xxxx, r2.yzyw
  dp3 r0.x, r1.xywx, r1.xywx
  rsq r0.x, r0.x
  mul r2.yzw, r0.xxxx, r1.xxyw
endif 
sample r5.xyzw, r5.zwzz, t6.xyzw, s2
sample r6.xyzw, r13.xyxx, t6.xyzw, s2
sample r7.xyzw, r13.zwzz, t6.xyzw, s2
if_nz r3.w
  add r0.x, r0.z, l(-0.750000)
  mul r0.x, r0.x, l(8.000000)
  min r0.x, r0.x, l(1.000000)
  add r0.w, -r2.x, r0.x
  mul_sat r0.w, r0.w, l(20.000000)
  add r0.x, r0.x, l(0.250000)
  min r0.x, r0.x, l(1.000000)
  mul r0.x, r0.x, r0.w
  add r3.z, r5.w, -r6.w
  add r3.x, -r5.w, r7.w
  mov r3.y, cb0[5].z
  dp3 r0.w, r3.xyzx, r3.xyzx
  rsq r0.w, r0.w
  mad r1.xyw, r3.xyxz, r0.wwww, -r2.yzyw
  mad r1.xyw, r1.xyxw, r0.xxxx, r2.yzyw
  dp3 r0.x, r1.xywx, r1.xywx
  rsq r0.x, r0.x
  mul r2.yzw, r0.xxxx, r1.xxyw
endif 
lt r0.x, l(0.875000), r0.z
mul r1.xy, v1.zwzz, cb0[3].wwww
sample r3.xyzw, r1.xyxx, t7.xyzw, s2
mad r4.xyzw, v1.zwzw, cb0[3].wwww, r4.yxxy
sample r5.xyzw, r4.xyxx, t7.xyzw, s2
sample r4.xyzw, r4.zwzz, t7.xyzw, s2
if_nz r0.x
  add r0.x, r0.z, l(-0.875000)
  mul r0.x, r0.x, l(8.000000)
  min r0.x, r0.x, l(1.000000)
  mad r6.xyzw, v1.zwzw, l(16.000000, 16.000000, 16.000000, 16.000000), l(0.00390625000, 0.000000, 0.000000, 0.00390625000)
  sample_l r7.xyzw, r6.xyxx, t1.xyzw, s1, l(0.000000)
  sample_l r6.xyzw, r6.zwzz, t1.xyzw, s1, l(0.000000)
  add r0.z, -r2.x, r0.x
  mul_sat r0.z, r0.z, l(20.000000)
  add r0.w, r0.x, l(0.250000)
  min r0.w, r0.w, l(1.000000)
  mul r0.z, r0.w, r0.z
  add r3.z, r3.w, -r5.w
  add r3.x, -r3.w, r4.w
  mov r3.y, cb0[5].w
  dp3 r1.x, r3.xyzx, r3.xyzx
  rsq r1.x, r1.x
  mad r1.xyw, r3.xyxz, r1.xxxx, -r2.yzyw
  mad r1.xyw, r1.xyxw, r0.zzzz, r2.yzyw
  dp3 r2.x, r1.xywx, r1.xywx
  rsq r2.x, r2.x
  mul r1.xyw, r1.xyxw, r2.xxxx
  add r2.x, r0.x, -r7.x
  mul_sat r2.x, r2.x, l(20.000000)
  add r0.x, r0.x, -r6.x
  mul_sat r0.x, r0.x, l(20.000000)
  mad r3.z, -r2.x, r0.w, r0.z
  mad r3.x, r0.x, r0.w, -r0.z
  mul r3.y, cb0[5].w, l(8.000000)
  dp3 r0.x, r3.xyzx, r3.xyzx
  rsq r0.x, r0.x
  mad r1.xw, r3.xxxz, r0.xxxx, r1.xxxw
  dp3 r0.x, r1.xywx, r1.xywx
  rsq r0.x, r0.x
  mul r2.yzw, r0.xxxx, r1.xxyw
endif 
lt r0.x, r0.y, l(0.250000)
if_nz r0.x
  mad r0.x, -r0.y, l(4.000000), l(1.000000)
  min r0.x, r0.x, l(1.000000)
  mul r0.yzw, r0.xxxx, l(0.000000, 0.000000, 1.000000, 0.000000)
  mad r0.yzw, r2.yyzw, r1.zzzz, r0.yyzw
  add r1.x, r1.z, r0.x
  div r0.yzw, r0.yyzw, r1.xxxx
  dp3 r1.x, r0.yzwy, r0.yzwy
  rsq r1.x, r1.x
  mul r2.yzw, r0.yyzw, r1.xxxx
  max o0.w, r0.x, r1.z
else 
  mov o0.w, r1.z
endif 
mad o0.xyz, r2.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
ret 
// Approximately 220 instruction slots used
