 //Under water 3
//    ---- Created with 3Dmigoto v0.6.164 on Sun Feb  8 20:21:38 2026
  Texture2DArray<float4> t15 : register(t15);
 
  Texture2DArray<float4> t14 : register(t14);
 
  Texture2DArray<float4> t13 : register(t13);
 
  Texture2D<float4> t12 : register(t12);
 
  Texture2D<float4> t11 : register(t11);
 
  Texture2D<float4> t10 : register(t10);
 
  Texture2DArray<float4> t9 : register(t9);
 
  Texture2DArray<float4> t8 : register(t8);
 
  Texture2DArray<float4> t7 : register(t7);
 
  Texture2DArray<float4> t6 : register(t6);
 
  Texture2DArray<float4> t5 : register(t5);
 
  Texture2DArray<float4> t4 : register(t4);
 
  struct t3_t {
    float val[8];
  };
  StructuredBuffer<t3_t> t3 : register(t3);
 
  Texture2D<float4> t2 : register(t2);
 
  Texture2DArray<float4> t1 : register(t1);
 
  Texture2DArray<float4> t0 : register(t0);
 
  SamplerState s2_s : register(s2);
 
  SamplerState s1_s : register(s1);
 
  SamplerState s0_s : register(s0);
 
  cbuffer cb4 : register(b4)
  {
    float4 cb4[5];
  }
 
  cbuffer cb3 : register(b3)
  {
    float4 cb3[1];
  }
 
  cbuffer cb2 : register(b2)
  {
    float4 cb2[11];
  }
 
  cbuffer cb1 : register(b1)
  {
    float4 cb1[285];
  }
 
  cbuffer cb0 : register(b0)
  {
    float4 cb0[26];
  }
 
 cbuffer cb10 : register(b10)
{
  float4 cb10[26];
}

 
 
  //  3Dmigoto declarations
  #define cmp -
  Texture1D<float4> IniParams : register(t120);
  Texture2D<float4> StereoParams : register(t125);
 
 
  void main(
    float4 v0 : SV_POSITION0,
    out float4 o0 : SV_Target0)
  {
    float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;
    uint4 bitmask, uiDest;
    float4 fDest;
 
 float4 s = StereoParams.Load(0);
float4 testeo = IniParams.Load(int2(90,0));
 
    r0.xy = (uint2)v0.xy;
    r0.zw = float2(0,0);
    r1.x = t0.Load(r0.xyww).x;
    r1.y = (int)cb0[25].y;
    switch (r1.y) {
      case 0 :    r2.xyz = float3(0,0,0);
      break;
      case 1 :    case 4 :    r2.xyz = t1.Load(r0.xyww).xyz;
      break;
      case 3 :    r2.xyz = t15.Load(r0.xyww).xyz;
      break;
      default :
      r2.xyz = t1.Load(r0.xyww).xyz;
      break;
    }
    r1.zw = cb1[42].zw * v0.xy;
    r2.w = t8.Load(r0.xyww).x;
    r3.x = t9.Load(r0.xyww).x;
    r3.yz = cmp(r2.ww != float2(1,0));
    r3.w = cmp(r1.x < r3.x);
    r4.x = r3.w ? r3.y : 0;
    r5.xy = cmp(r2.ww == float2(2,0));
    r4.y = (int)r3.z | (int)r5.x;
    r2.w = r4.x ? r3.x : r1.x;
    r3.x = cb1[45].z * r2.w + cb1[45].w;
    r3.x = 1 / r3.x;
    r3.y = cb1[46].y + -cb1[46].z;
    r3.z = r2.w * r3.y + cb1[46].z;
    r3.z = r3.z + -r3.x;
    r4.z = cb1[47].w * r3.z + r3.x;
    r3.x = 1 / r4.z;
    r3.x = -cb1[45].w + r3.x;
    r3.x = r3.x / cb1[45].z;
    r5.xz = cb1[42].xy * r1.zw;
    r5.xz = cb1[42].zw * r5.xz;
    r5.xz = r5.xz * float2(2,2) + float2(-1,-1);
	
r5.x -= s.x * (1.0 - s.y / r4.z);
	
    r6.xyzw = cb1[25].xyzw * -r5.zzzz;
    r6.xyzw = cb1[24].xyzw * r5.xxxx + r6.xyzw;
    r6.xyzw = cb1[26].xyzw * r3.xxxx + r6.xyzw;
    r6.xyzw = cb1[27].xyzw + r6.xyzw;
    r5.xzw = r6.xyz / r6.www;
    r5.xzw = cb1[40].xyz + r5.xzw;
    r3.x = t14.Load(r0.xyww).x;
    if (r5.y != 0) {
      r6.xy = -cb4[1].xz + r5.xw;
      r3.z = max(abs(r6.x), abs(r6.y));
      r4.w = t3[0].val[8/4];
      r3.z = r3.z / r4.w;
      r3.z = max(1, r3.z);
      r3.z = log2(r3.z);
      r4.w = -2 + cb4[1].w;
      r3.z = min(r4.w, r3.z);
      r4.w = frac(r3.z);
      r3.z = floor(r3.z);
      r3.z = (uint)r3.z;
      r5.y = (int)r3.z + 1;
      r4.w = -0.150000006 + r4.w;
      r4.w = saturate(1.42857146 * r4.w);
      r6.z = (uint)r3.z;
      r6.w = cmp(r6.z == 0.000000);
      r7.x = cb4[2].x + r4.w;
      r7.x = min(1, r7.x);
      r4.w = r6.w ? r7.x : r4.w;
      r7.x = t3[r3.z].val[0/4];
      r7.y = t3[r3.z].val[0/4+1];
      r6.w = t3[r3.z].val[12/4];
      r3.z = t3[r3.z].val[20/4];
      r7.xy = -r7.xy + r5.xw;
      r3.z = r3.z * r6.w;
      r7.xy = r7.xy / r3.zz;
      r6.xy = float2(0.5,0.5) + r7.xy;
      r3.z = 1 + -r4.w;
      r6.x = t6.SampleLevel(s0_s, r6.xyz, 0).x;
      r6.y = t3[r5.y].val[0/4];
      r6.z = t3[r5.y].val[0/4+1];
      r6.w = t3[r5.y].val[12/4];
      r7.x = t3[r5.y].val[20/4];
      r8.z = (uint)r5.y;
      r6.yz = -r6.yz + r5.xw;
      r5.y = r7.x * r6.w;
      r6.yz = r6.yz / r5.yy;
      r8.xy = float2(0.5,0.5) + r6.yz;
      r5.y = t6.SampleLevel(s0_s, r8.xyz, 0).x;
      r4.w = r5.y * r4.w;
      r3.z = r3.z * r6.x + r4.w;
      r3.z = 0.5 + -r3.z;
      r3.z = cmp(r3.z < 0);
      r3.z = r3.w ? r3.z : 0;
      r3.w = cmp(r1.x < r3.x);
      r3.z = r3.w ? r3.z : 0;
    } else {
      r3.z = 0;
    }
    r3.w = cb1[45].z * r1.x + cb1[45].w;
    r3.w = 1 / r3.w;
    r3.y = r1.x * r3.y + cb1[46].z;
    r3.y = r3.y + -r3.w;
    r6.z = cb1[47].w * r3.y + r3.w;
    r6.xy = float2(0,-1);
    r4.xyz = r3.zzz ? r6.xyz : r4.xyz;
    if (r4.y != 0) {
      r0.z = t13.Load(r0.xyzw).x;
      r0.w = max(9.99999975e-05, r2.w);
      r0.w = min(1, r0.w);
      r3.y = max(9.99999975e-05, r0.z);
      r3.y = min(1, r3.y);
      r0.w = r3.y / r0.w;
      r0.w = min(4, r0.w);
      r0.z = cmp(r2.w < r0.z);
      r3.x = cmp(r3.x < r2.w);
      r0.z = r0.z ? r3.x : 0;
      r0.w = cmp(r0.w < 3);
      r0.z = r0.w ? r0.z : 0;
      r0.w = ~(int)r3.z;
      r0.z = r0.w ? r0.z : 0;
      if (r0.z == 0) {
        r0.zw = r1.zw * float2(2,2) + float2(-1,-1);
		
			
		
        r6.xyzw = cb1[25].xyzw * -r0.wwww;
        r6.xyzw = cb1[24].xyzw * r0.zzzz + r6.xyzw;
        r6.xyzw = cb1[26].xyzw * r1.xxxx + r6.xyzw;
        r6.xyzw = cb1[27].xyzw + r6.xyzw;
        r3.xyw = r6.xyz / r6.www;
		
r3.x -= s.x * testeo.x;	
		
        r0.z = cmp(cb1[11].w == 0.000000);
        r3.xyw = cb1[7].xyz + -r3.xyw;
        r6.x = r0.z ? r3.x : cb1[0].z;
        r6.y = r0.z ? r3.y : cb1[1].z;
        r6.z = r0.z ? r3.w : cb1[2].z;
        r0.z = dot(r6.xyz, r6.xyz);
        r0.z = rsqrt(r0.z);
        r3.xyw = r6.xyz * r0.zzz;
        r0.z = -2 + cb4[1].w;
        r0.w = max(0, cb0[25].x);
        r0.z = min(r0.w, r0.z);
        r0.w = (int)r0.z;
        r4.y = t3[r0.w].val[0/4];
        r4.w = t3[r0.w].val[0/4+1];
        r1.x = t3[r0.w].val[12/4];
        r0.w = t3[r0.w].val[20/4];
        r6.z = trunc(r0.z);
		
		
		
        r4.yw = cb1[40].xz + -r4.yw;
        r0.z = r0.w * r1.x;
        r0.zw = r4.yw / r0.zz;
        r6.xy = float2(0.5,0.5) + r0.zw;
        r0.z = t5.SampleLevel(s0_s, r6.xyz, 0).x;
        r0.z = -1000 + r0.z;
        r0.z = 1000 + r0.z;
        r0.w = t7.SampleLevel(s0_s, r6.xyz, 0).x;
        r1.x = cb1[280].w ? cb2[10].x : 255;
        r1.x = (int)r1.x & asint(cb1[284].y);
        r1.x = r1.x ? cb1[284].x : 1;
        r0.w = 1 + -r0.w;
        r7.xyz = -cb0[1].xyz + cb0[0].xyz;
        r7.xyz = r0.www * r7.xyz + cb0[1].xyz;
        r0.z = saturate(r0.z / cb0[3].x);
        r0.z = 1 + -r0.z;
        r0.z = log2(r0.z);
        r0.z = cb0[3].y * r0.z;
        r0.z = exp2(r0.z);
        r8.xyz = cb0[2].xyz + -cb0[1].xyz;
        r8.xyz = r0.www * r8.xyz + cb0[1].xyz;
        r8.xyz = r8.xyz + -r7.xyz;
        r7.xyz = r0.zzz * r8.xyz + r7.xyz;
        r8.xyz = cb4[4].xyz * r0.www;
        r8.xyz = float3(0.318310142,0.318310142,0.318310142) * r8.xyz;
        r8.xyz = cb0[14].yzw * r1.xxx + r8.xyz;
        r0.z = dot(cb4[3].xyz, -r3.xyw);
        r0.z = max(0, r0.z);
        r0.z = log2(r0.z);
        r0.z = cb0[5].x * r0.z;
        r0.z = exp2(r0.z);
        r0.z = cb0[3].w * r0.z + cb0[3].z;
        r9.xyz = cb0[4].xyz * r0.zzz;
        r9.xyz = cb4[4].xyz * r9.xyz;
        r9.xyz = r9.xyz * r0.www;
        r0.z = -abs(r3.y) * abs(r3.y) + 1;
        r3.xyw = r9.xyz * r0.zzz;
        r3.xyw = r7.xyz * r8.xyz + r3.xyw;
        r0.z = cmp(0.000500000024 < r2.w);
        r0.w = ~(int)r4.x;
        r0.z = r0.z ? r0.w : 0;
        if (r0.z != 0) {
          r0.z = t4.SampleLevel(s0_s, r6.xyz, 0).y;
          r0.z = cb4[1].y + r0.z;
          r0.z = r0.z + -r5.z;
          r0.w = log2(r4.z);
          r0.w = r0.w / cb0[7].x;
          r4.xy = cb4[3].xz * r0.zz;
          r0.z = 4 * cb4[3].y;
          r5.yz = r4.xy / r0.zz;
          r5.yz = r5.xw + r5.yz;
          r6.xy = r5.yz / cb0[6].xx;
          r7.x = cb4[0].x * 0.0439999998 + r6.x;
          r6.z = 17.1599998;
          r7.y = -0.169 * cb4[0].x;
          r6.xy = r7.xy + r6.zy;
          r6.zw = float2(1.37,1.37) * r5.yz;
          r6.zw = r6.zw / cb0[6].xx;
          r6.zw = cb4[0].xx * float2(0.247999996,0.116999999) + r6.zw;
          r5.yz = r5.yz / cb0[7].zz;
          r7.xyz = t11.Sample(s1_s, r5.yz).xyw;
          r8.xz = r7.zz * r7.xx;
          r8.yw = r7.yy;
          r7.xyzw = r8.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1);
          r7.xyzw = cb0[7].yyyy * r7.xyzw;
          r5.yz = r7.xy * float2(1.29999995,1.29999995) + r6.xy;
          r6.xy = r7.zw * float2(1.76999998,1.76999998) + r6.zw;
          r4.xy = r4.xy / cb4[3].yy;
          r4.xy = r5.xw + r4.xy;
          r5.x = t3[cb3[0].x].val[0/4];
          r5.w = t3[cb3[0].x].val[0/4+1];
          r0.z = t3[cb3[0].x].val[12/4];
          r1.x = t3[cb3[0].x].val[20/4];
          r7.z = asuint(cb3[0].x);
          r4.xy = -r5.xw + r4.xy;
          r0.z = r1.x * r0.z;
          r4.xy = r4.xy / r0.zz;
          r7.xy = float2(0.5,0.5) + r4.xy;
          r0.z = t7.SampleLevel(s0_s, r7.xyz, 0).y;
          r0.z = 1 + -r0.z;
          r0.z = cb0[6].z * r0.z;
          r4.xyw = t10.SampleLevel(s1_s, r5.yz, r0.w).xyz;
          r5.xyz = t10.SampleLevel(s1_s, r6.xy, r0.w).xyz;
          r5.xyz = float3(0.5,0.5,0.5) * r5.xyz;
          r4.xyw = r4.xyw * float3(0.5,0.5,0.5) + r5.xyz;
          r4.xyw = -cb0[6].yyy + r4.xyw;
          r4.xyw = r0.zzz * r4.xyw + float3(1,1,1);
          r2.xyz = r4.xyw * r2.xyz;
        }
        r0.z = t2.Load(float4(0,0,0,0)).x;
        r0.z = cb1[282].y * r0.z;
        r4.xyw = -cb0[5].yzw / cb0[11].yyy;
        r4.xyz = r4.xyw * r4.zzz;
        r4.xyz = float3(1.44269502,1.44269502,1.44269502) * r4.xyz;
        r4.xyz = exp2(r4.xyz);
        r4.xyz = float3(1,1,1) + -r4.xyz;
        r4.xyz = max(float3(0,0,0), r4.xyz);
        r3.xyw = r3.xyw * r0.zzz + -r2.xyz;
        r3.xyw = r4.xyz * r3.xyw + r2.xyz;
        r4.xyz = cb0[10].xyz + -r3.xyw;
        r2.xyz = cb0[11].xxx * r4.xyz + r3.xyw;
        if (r3.z == 0) {
          r0.zw = -v0.xy * cb1[42].zw + cb0[13].yz;
          r0.z = dot(r0.zw, r0.zw);
          r0.z = sqrt(r0.z);
          r0.z = saturate(r0.z / cb0[13].w);
          r0.z = log2(r0.z);
          r0.z = cb0[14].x * r0.z;
          r0.z = exp2(r0.z);
          r3.xy = v0.xy * cb1[42].zw + cb1[63].xx;
          r0.w = dot(r3.xy, float2(12.9898005,78.2330017));
          r0.w = sin(r0.w);
          r0.w = 43758.5469 * r0.w;
          r0.w = frac(r0.w);
          r0.w = r0.w * 2 + -1;
          r0.z = r0.w * r0.z;
          r0.zw = r0.zz * float2(0.300000012,0.300000012) + cb0[13].yz;
          r0.zw = -v0.xy * cb1[42].zw + r0.zw;
          r0.z = dot(r0.zw, r0.zw);
          r0.z = sqrt(r0.z);
          r0.z = saturate(r0.z / cb0[13].w);
          r0.z = log2(r0.z);
          r0.z = cb0[14].x * r0.z;
          r0.z = exp2(r0.z);
          r0.z = min(1, r0.z);
          r0.z = 1 + -r0.z;
          r3.xyz = r2.xyz * r0.zzz;
          r0.w = -1.5 + cb4[1].y;
          r0.w = cmp(r0.w >= cb1[40].y);
          r0.w = r0.w ? 1.000000 : 0;
          r1.x = cb1[48].y * cb0[11].z;
          r4.xy = float2(0.00100000005,0.000200000009) * r1.xx;
          r5.x = cb1[63].x;
          r5.yz = float2(0,0);
          r1.xz = r1.zw * cb0[13].xx + r5.xy;
          r1.x = t12.Sample(s2_s, r1.xz).x;
          r1.x = r4.x * r1.x;
          r5.w = max(r4.y, r1.x);
          r0.xy = (uint2)r0.xy;
          r1.xz = r0.xy + r5.zw;
          r4.xy = (int2)r1.xz;
          r4.zw = float2(0,0);
          r1.x = t8.Load(r4.xyzw).x;
          r0.xy = r0.xy + -r5.zw;
          r4.xy = (int2)r0.xy;
          r4.zw = float2(0,0);
          r0.x = t8.Load(r4.xyzw).x;
          r0.y = cmp(r1.x == 2.000000);
          r1.x = cmp(r1.x != 0.000000);
          r0.y = (int)r0.y | (int)r1.x;
          r1.x = cmp(r0.x == 2.000000);
          r0.x = cmp(r0.x != 0.000000);
          r0.x = (int)r0.x | (int)r1.x;
          r0.x = r0.x ? 0.000000 : 0;
          r0.x = (int)r0.y + (int)r0.x;
          r0.x = (int)r0.x;
          r0.x = max(0, r0.x);
          r0.y = v0.y * cb1[42].w + -0.899999976;
          r0.y = saturate(-10.0000038 * r0.y);
          r1.x = r0.y * -2 + 3;
          r0.y = r0.y * r0.y;
          r0.y = r1.x * r0.y;
          r0.x = r0.x * r0.y;
          r1.xz = float2(0.5,0.5) * v0.xy;
          r4.xy = (uint2)r1.xz;
          switch (r1.y) {
            case 0 :          r1.xyz = float3(0,0,0);
            break;
            case 1 :          case 4 :          r4.z = 0;
            r1.xyz = t1.Load(r4.xyzz).xyz;
            break;
            case 3 :          r4.w = 0;
            r1.xyz = t15.Load(r4.xyww).xyz;
            break;
            default :
            r4.zw = float2(0,1.40129846e-45);
            r1.xyz = t1.Load(r4.xyzw).xyz;
            break;
          }
          r1.xyz = r1.xyz * cb0[12].xyz + -r3.xyz;
          r1.xyz = r0.xxx * r1.xyz + r3.xyz;
          r0.xyz = r2.xyz * r0.zzz + -r1.xyz;
          r2.xyz = r0.www * r0.xyz + r1.xyz;
        }
      }
    }
    o0.xyz = r2.xyz;
    o0.w = 1;
    return;
  }
  //               HLSL Errors                 
  //C:\Program Files (x86)\Steam\steamapps\common\FAR Changing Tides\ShaderFixes\3942b145b122cc52-ps_replace.txt(183,21-23): error X3004: undeclared identifier 'nan'
  //C:\Program Files (x86)\Steam\steamapps\common\FAR Changing Tides\ShaderFixes\3942b145b122cc52-ps_replace.txt(183,11-24): error X3014: incorrect number of arguments to numeric-type constructor
                                      
