//Water PS 1. August 2025 update.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.181 on Sat Aug 23 15:02:08 2025
//
//
// Buffer Definitions:
//
// cbuffer perDraw
// {
//
//   float4x4 modelMat;                 // Index:    0 1 2 3          Components:    16
//   float4x4 viewProj;                 // Index:    4 5 6 7          Components:    16 [unused]
//   float4x4 modelview;                // Index:    8 9 10 11        Components:    16 [unused]
//   float4x4 worldToObj;               // Index:   12 13 14 15       Components:    16 [unused]
//   float4x4 screenToWorld;            // Index:   16 17 18 19       Components:    16 [unused]
//   float4 rippleMat[3];               // Index:   20 21 22          Components:    12 [unused]
//   float2 waveDir[3];                 // Index:   23-25.y           Components:    10 [unused]
//   float2 waveData[3];                // Index:   26-28.y           Components:    10 [unused]
//   float2 rippleDir[3];               // Index:   29-31.y           Components:    10 [unused]
//   float2 rippleTexScale[3];          // Index:   32-34.y           Components:    10 [unused]
//   float4 debugColor0;                // Index:   35.xyzw           Components:     4
//   float4 debugColor1;                // Index:   36.xyzw           Components:     4
//   float4 foamDir;                    // Index:   37.xyzw           Components:     4 [unused]
//   float4 foamTexScale;               // Index:   38.xyzw           Components:     4 [unused]
//   float4 specularParams;             // Index:   39.xyzw           Components:     4
//   float4 baseColor;                  // Index:   40.xyzw           Components:     4
//   float4 miscParams;                 // Index:   41.xyzw           Components:     4
//   float4 reflectParams;              // Index:   42.xyzw           Components:     4
//   float4 foamParams;                 // Index:   43.xyzw           Components:     4
//   float4 fogColor;                   // Index:   44.xyzw           Components:     4
//   float4 rippleMagnitude;            // Index:   45.xyzw           Components:     4
//   float4 rtParams1;                  // Index:   46.xyzw           Components:     4
//   float4 sunColor;                   // Index:   47.xyzw           Components:     4
//   float3 eyePos;                     // Index:   48.xyz            Components:     3
//   float3 eyePosWorld;                // Index:   49.xyz            Components:     3 [unused]
//   float3 rippleSpeed;                // Index:   50.xyz            Components:     3 [unused]
//   float3 inLightVec;                 // Index:   51.xyz            Components:     3
//   float3 reflectNormal;              // Index:   52.xyz            Components:     3 [unused]
//   float3 distortionParams;           // Index:   53.xyz            Components:     3
//   float3 ambientColor;               // Index:   54.xyz            Components:     3
//   float3 fogData;                    // Index:   55.xyz            Components:     3
//   float2 foamSpeed;                  // Index:   56.xy             Components:     2 [unused]
//   float2 fogParams;                  // Index:   56.zw             Components:     2
//   float2 wetnessParams;              // Index:   57.xy             Components:     2
//   float elapsedTime;                 // Index:   57.z              Components:     1 [unused]
//   float gridElementSize;             // Index:   57.w              Components:     1 [unused]
//   float gridSize;                    // Index:   58.x              Components:     1 [unused]
//   float undulateMaxDist;             // Index:   58.y              Components:     1 [unused]
//   float useWaterProjection;          // Index:   58.z              Components:     1 [unused]
//   float waterPlaneHeight;            // Index:   58.w              Components:     1 [unused]
//   float farPlaneDist;                // Index:   59.x              Components:     1
//   float depthGradMax;                // Index:   59.y              Components:     1
//   float sunBrightness;               // Index:   59.z              Components:     1 [unused]
//   float reflectivity;                // Index:   59.w              Components:     1
//   float4 projParams;                 // Index:   60.xyzw           Components:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// bumpMap_sampler_                  sampler      NA          NA    0        1
// prepassDepthTex_sampler_          sampler      NA          NA    1        1
// reflectMap_sampler_               sampler      NA          NA    2        1
// refractBuff_sampler_              sampler      NA          NA    3        1
// skyMap_sampler_                   sampler      NA          NA    4        1
// foamMap_sampler_                  sampler      NA          NA    5        1
// depthGradMap_sampler_             sampler      NA          NA    6        1
// bumpMapTex                        texture  float4          2d    0        1
// prepassDepthTexTex                texture  float4          2d    1        1
// reflectMapTex                     texture  float4          2d    2        1
// refractBuffTex                    texture  float4          2d    3        1
// skyMapTex                         texture  float4        cube    4        1
// foamMapTex                        texture  float4          2d    5        1
// depthGradMapTex                   texture  float4          1d    6        1
// perDraw                           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   xyzw        2     NONE   float   xyz
// TEXCOORD                 2   xyzw        3     NONE   float   xy w
// TEXCOORD                 3   xyzw        4     NONE   float   xy w
// TEXCOORD                 4   xyzw        5     NONE   float   xyzw
// TEXCOORD                 5   xyzw        6     NONE   float   xyzw
// TEXCOORD                 6   xyz         7     NONE   float   xyz
// TEXCOORD                 7   xyz         8     NONE   float   xyz
// TEXCOORD                 8   xyz         9     NONE   float   xyz
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[61], immediateIndexed
dcl_constantbuffer CB13[61], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_sampler s6, 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_texturecube (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture1d (float,float,float,float) t6
dcl_input_ps linear v1.xyzw
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyw
dcl_input_ps linear v4.xyw
dcl_input_ps linear v5.xyzw
dcl_input_ps linear v6.xyzw
dcl_input_ps linear v7.xyz
dcl_input_ps linear v8.xyz
dcl_input_ps linear v9.xyz
dcl_output o0.xyzw
dcl_temps 31
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw

mov r24.xyw, v4.xyxw
add r26.x, r24.w, -r25.y
mul r26.x, r26.x, l(0.5)
mad r24.x, r25.x, r26.x, r24.x

sample_indexable(texture2d)(float,float,float,float) r0.xyz, v1.xyxx, t0.xyzw, s0
mad r0.xyz, r0.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
sample_indexable(texture2d)(float,float,float,float) r1.xyz, v1.zwzz, t0.xyzw, s0
mad r1.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
mul r1.xyz, r1.xyzx, cb0[45].yyyy
mad r0.xyz, r0.xyzx, cb0[45].xxxx, r1.xyzx
sample_indexable(texture2d)(float,float,float,float) r1.xyz, v2.xyxx, t0.xyzw, s0
mad r1.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
mad r0.xyz, r1.xyzx, cb0[45].zzzz, r0.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r1.xyz, r0.wwww, r0.xyzx
add r1.w, -cb0[45].w, l(1.000000)
mad r0.xyz, -r0.xyzx, r0.wwww, l(0.000000, 0.000000, 1.000000, 0.000000)
mad r0.xyz, r1.wwww, r0.xyzx, r1.xyzx
dp3 r1.x, r0.xyzx, v7.xyzx
dp3 r1.y, r0.xyzx, v8.xyzx
dp3 r1.z, r0.xyzx, v9.xyzx
div r0.x, v2.z, cb0[59].x
div r0.yz, r24.xxyx, v4.wwww
mad r0.yz, r0.yyzy, cb0[46].zzwz, cb0[46].xxyx
sample_l_aoffimmi_indexable(0,0,0)(texture2d)(float,float,float,float) r0.y, r0.yzyy, t1.yxzw, s1, l(0.000000)
add r0.y, r0.y, -cb0[60].z
div r0.y, cb0[60].w, r0.y
div r0.y, r0.y, cb0[60].y
add r0.z, -r0.x, r0.y
max r0.z, r0.z, l(0.000000)
mul r2.w, r0.z, cb0[59].x
add r0.z, v2.z, -cb0[53].x
div_sat r0.z, r0.z, cb0[53].y
div_sat r0.w, r2.w, cb0[53].z
mul r3.x, r0.w, r0.z
mad r3.yz, r1.xxyx, r3.xxxx, r24.xxyx
div r4.xy, r3.yzyy, v4.wwww
mad r4.xy, r4.xyxx, cb0[46].zwzz, cb0[46].xyxx
sample_l_aoffimmi_indexable(0,0,0)(texture2d)(float,float,float,float) r0.w, r4.xyxx, t1.yzwx, s1, l(0.000000)
add r0.w, r0.w, -cb0[60].z
div r0.w, cb0[60].w, r0.w
div r0.w, r0.w, cb0[60].y
lt r1.w, l(0.990000), r0.w
movc r0.w, r1.w, l(5.000000), r0.w
add r1.w, -r0.x, r0.w
mul r3.w, r1.w, cb0[59].x
lt r1.w, r3.w, l(0.000000)
if_nz r1.w
  mov r2.xy, r24.xyxx
  mov r2.z, l(0)
else
  add r0.y, -r0.y, r0.w
  mul r0.y, r0.y, cb0[59].x
  lt r0.y, r0.y, l(0.000000)
  if_nz r0.y
    div_sat r0.y, r3.w, cb0[53].z
    mul r3.x, r0.y, r0.z
    mad r3.yz, r1.xxyx, r3.xxxx, r24.xxyx
    div r0.yz, r3.yyzy, v4.wwww
    mad r0.yz, r0.yyzy, cb0[46].zzwz, cb0[46].xxyx
    sample_l_aoffimmi_indexable(0,0,0)(texture2d)(float,float,float,float) r0.y, r0.yzyy, t1.yxzw, s1, l(0.000000)
    add r0.y, r0.y, -cb0[60].z
    div r0.y, cb0[60].w, r0.y
    div r0.y, r0.y, cb0[60].y
    lt r0.z, l(0.990000), r0.y
    movc r0.y, r0.z, l(5.000000), r0.y
    add r0.x, -r0.x, r0.y
    mul r3.w, r0.x, cb0[59].x
  endif
  lt r0.x, r3.w, l(0.100000)
  mov r2.z, l(0)
  mov r2.xy, r24.xyxx
  movc r2.xyzw, r0.xxxx, r2.xyzw, r3.yzxw
endif
mad r0.xy, r1.xyxx, r2.zzzz, v3.xyxx

add r26.x, v3.w, -r25.y
mul r26.x, r26.x, l(0.5)
mad r0.x, r25.x, r26.x, r0.x

div r0.xy, r0.xyxx, v3.wwww
mad r0.xy, r0.xyxx, cb0[46].zwzz, cb0[46].xyxx
div r0.zw, r2.xxxy, v4.wwww
mad r0.zw, r0.zzzw, cb0[46].zzzw, cb0[46].xxxy
add r2.xyz, v5.xyzx, -cb0[48].xyzx

mul r26.x, r25.y, cb13[4].x
mul r26.y, r25.y, cb13[5].x
mul r26.z, r25.y, cb13[6].x
mul r26.w, cb13[4].x, cb13[4].x
mad r26.w, cb13[5].x, cb13[5].x, r26.w
mad r26.w, cb13[6].x, cb13[6].x, r26.w
div r26.xyz, r26.xyzx, r26.wwww
mad r2.xyz, -r25.xxxx, r26.xyzx, r2.xyzx

mul r3.xyz, r2.yyyy, cb0[1].xyzx
mad r3.xyz, cb0[0].xyzx, r2.xxxx, r3.xyzx
mad r2.xyz, cb0[2].xyzx, r2.zzzz, r3.xyzx
mul r3.xyz, r2.yyyy, v8.xyzx
mad r3.xyz, v7.xyzx, r2.xxxx, r3.xyzx
mad r2.xyz, v9.xyzx, r2.zzzz, r3.xyzx
dp3 r1.w, r2.xyzx, r1.xyzx
add r1.w, r1.w, r1.w
mad r3.xyz, r1.xyzx, -r1.wwww, r2.xyzx
dp3 r1.w, -r2.xyzx, -r2.xyzx
rsq r1.w, r1.w
mul r4.xyz, r1.wwww, -r2.xyzx
dp3_sat r3.w, r4.xyzx, r1.xyzx
add r4.x, -v5.w, cb0[42].x
add r4.x, |r4.x|, l(-1.000000)
mul_sat r4.x, r4.x, l(0.500000)
mul r4.x, r4.x, cb0[41].w
max r4.x, r3.w, r4.x
mad r5.xyzw, r1.xyxy, cb0[43].wwww, v6.xyzw
sample_indexable(texture2d)(float,float,float,float) r6.xyzw, r5.xyxx, t5.xyzw, s5
sample_indexable(texture2d)(float,float,float,float) r5.xyzw, r5.zwzz, t5.xyzw, s5
add_sat r5.xyzw, r5.xyzw, r6.xyzw
add r4.yzw, -r5.xxyz, cb0[54].xxyz
mad r4.yzw, cb0[43].zzzz, r4.yyzw, r5.xxyz
div_sat r5.x, r2.w, cb0[43].y
mad r5.x, -r5.x, r5.x, l(1.000000)
dp3_sat r5.y, cb0[47].xyzx, l(0.212600, 0.715200, 0.072200, 0.000000)
add r5.z, -r5.x, l(0.800000)
lt r6.x, r5.z, l(0.000000)
mul r5.z, |r5.z|, r5.x
mad r5.z, -r5.z, l(5.000000), r5.x
movc r5.x, r6.x, r5.z, r5.x
mul r5.z, r5.w, cb0[43].x
mul r5.x, r5.z, r5.x
mul r5.z, r5.y, cb0[43].x
mul r5.x, r5.x, r5.z
mul r5.x, r5.w, r5.x
sample_indexable(texture2d)(float,float,float,float) r6.xyz, r0.xyxx, t2.xyzw, s2
sample_indexable(texturecube)(float,float,float,float) r3.xyz, r3.xyzx, t4.xyzw, s4
mad r3.xyz, r3.xyzx, r5.yyyy, -r6.xyzx
mad r3.xyz, cb0[42].wwww, r3.xyzx, r6.xyzx
mul r5.yzw, r3.xxyz, cb0[39].xxyz
mad r3.xyz, -r3.xyzx, cb0[39].xyzx, cb0[54].xyzx
mad r3.xyz, r4.xxxx, r3.xyzx, r5.yzwy
sample_indexable(texture2d)(float,float,float,float) r0.xyz, r0.zwzz, t3.xyzw, s3
div_sat r0.w, r2.w, cb0[57].x
mad r0.w, -r0.w, cb0[57].y, l(1.000000)
mul r0.xyz, r0.wwww, r0.xyzx
add r0.w, r2.w, -cb0[56].w
lt r4.x, r0.w, l(0.000000)
mul r0.w, r0.w, -cb0[56].z
mul r0.w, r0.w, l(1.442695)
exp r0.w, r0.w
min r0.w, r0.w, l(1.000000)
add r0.w, -r0.w, l(1.000000)
movc r0.w, r4.x, l(0), r0.w
div_sat r4.x, r2.w, cb0[59].y
sample_indexable(texture1d)(float,float,float,float) r5.yzw, r4.xxxx, t6.wxyz, s6
mul r5.yzw, r5.yyzw, cb0[40].xxyz
mad r5.yzw, r5.yyzw, cb0[54].xxyz, -r0.xxyz
mad r0.xyz, r0.wwww, r5.yzwy, r0.xyzx
add r4.x, -cb0[41].x, l(1.000000)
add r3.w, -r3.w, l(1.000000)
log r3.w, r3.w
mul r3.w, r3.w, cb0[41].y
exp r3.w, r3.w
mad r3.w, r4.x, r3.w, cb0[41].x
mul r0.w, r0.w, r3.w
add_sat r3.w, v2.z, l(-0.100000)
mul r0.w, r0.w, r3.w
mul r0.w, r0.w, cb0[59].w
add r3.xyz, -r0.xyzx, r3.xyzx
mad r0.xyz, r0.wwww, r3.xyzx, r0.xyzx
dp3 r0.w, r1.xyzx, r1.xyzx
rsq r0.w, r0.w
mul r1.xyz, r0.wwww, r1.xyzx
mad r2.xyz, -r2.xyzx, r1.wwww, -cb0[51].xyzx
dp3 r0.w, r2.xyzx, r2.xyzx
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, r2.xyzx
dp3_sat r0.w, r1.xyzx, r2.xyzx
add r1.x, -cb0[39].w, l(1.000000)
mul r1.x, r1.x, r1.x
mad r1.x, r1.x, l(13.000000), l(3.000000)
exp r1.x, r1.x
log r0.w, r0.w
mul r0.w, r0.w, r1.x
exp r0.w, r0.w
mul_sat r1.x, r2.w, l(0.500000)
mul r0.w, r0.w, r1.x
mul r1.xyz, cb0[39].xyzx, cb0[47].xyzx
mad r0.xyz, r1.xyzx, r0.wwww, r0.xyzx
mad r0.xyz, r4.yzwy, r5.xxxx, r0.xyzx
add r1.xyz, -v5.xyzx, cb0[48].xyzx
dp3 r0.w, r1.xyzx, r1.xyzx
sqrt r0.w, r0.w
add r0.w, r0.w, -cb0[55].y
mad r1.x, -v5.w, cb0[55].z, l(1.000000)
mul r0.w, r0.w, -cb0[55].x
mul r0.w, r1.x, r0.w
mul r0.w, r0.w, l(1.442695)
exp r0.w, r0.w
min r1.x, r0.w, l(1.000000)
add r1.x, -r1.x, l(1.000000)
add r1.yzw, -r0.xxyz, cb0[44].xxyz
mad r0.xyz, r1.xxxx, r1.yzwy, r0.xyzx
lt r1.x, l(0.100000), cb0[35].w
movc r0.xyz, r1.xxxx, cb0[35].xyzx, r0.xyzx
lt r0.w, r0.w, l(0.020000)
and r0.w, r0.w, r1.x
movc o0.xyz, r0.wwww, cb0[36].xyzx, r0.xyzx
mov o0.w, l(1.000000)
ret
// Approximately 190 instruction slots used
