// ---- Created with 3Dmigoto v1.3.10 on Fri May 04 22:05:50 2018

cbuffer PER_BATCH : register(b0)
{
  float4 cFogColorDensity : packoffset(c0);
  float3 vfColGradBase : packoffset(c1);
  float4 vfHeightDensityRampParams : packoffset(c2);
  float4 vfScatteringParams : packoffset(c3);
  float4 vfHeightDensityParams : packoffset(c4);
  float4 vfScatteringBlendParams : packoffset(c5);
  float4 PS_WorldViewPos : packoffset(c6);
  float4 vfScatteringColor : packoffset(c7);
  float4 vfSamplingParams : packoffset(c8);
  float3 vfColGradDelta : packoffset(c9);
  float4 vfRampParams : packoffset(c10);
  float4 vfColGradRadial : packoffset(c11);
  float3 CameraFrontVector : packoffset(c12);
  float4 PS_NearFarClipDist : packoffset(c13);
  float4 vfColGradParams : packoffset(c14);
  float4 PS_ScreenSize : packoffset(c15);
  float4 PS_HPosScale : packoffset(c16);
  float4 vfDistanceParams : packoffset(c17);
  float4 vfParams : packoffset(c18);
  float4 vfTimeParams : packoffset(c19);
  float4 vfScatteringSecondaryColor : packoffset(c20);
  float3 vfSunDir : packoffset(c21);
  float4 vfViewPos : packoffset(c22);
}

cbuffer PER_INSTANCE : register(b1)
{
  row_major float4x4 mViewProj : packoffset(c0);
}

cbuffer PER_FRAME : register(b2)
{
  float4 g_PS_SkyColor : packoffset(c0);
  float4 g_PS_SunColor : packoffset(c1);
  float4 g_PS_SunLightDir : packoffset(c2);
}

cbuffer PER_MATERIAL : register(b3)
{
  float4 MatSpecColor : packoffset(c29);
  float3 __0FoamSoftIntersectionFactor__1FoamAmount__2FoamTilling__3 : packoffset(c31);
  float2 __0RealtimeReflMul__1EnvCubeReflMul__2__3 : packoffset(c33);
  float2 __0DetailNormalsScale__1NormalsScale__2__3 : packoffset(c34);
  float4 __0__1__2__3EnvCubeScale : packoffset(c35);
  float4 __0SoftIntersectionFactor__1RainTilling__2DetailTilling__3Tilling : packoffset(c36);
}

SamplerState TrilinearClampSamplerState_s : register(s0);
SamplerState RefractionSampler_s : register(s1);
SamplerState sceneDepthSampler_s : register(s2);
SamplerState ReflSampler_s : register(s3);
SamplerState WaterNormalsSampler_s : register(s4);
SamplerState FoamSampler_s : register(s5);
Texture2D<float4> WaterNormalsSampler : register(t0);
Texture2D<float4> RefractionSampler : register(t1);
Texture2D<float4> sceneDepthSampler : register(t2);
Texture2D<float4> ReflSampler : register(t3);
Texture2D<float4> FoamSampler : register(t4);
Texture3D<float4> VolumetricFogTexture : register(t5);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  float4 v0 : SV_Position0,
  float4 v1 : TEXCOORD0,
  float4 v2 : TEXCOORD1,
  float4 v3 : TEXCOORD2,
  float4 v4 : TEXCOORD3,
  float4 v5 : TEXCOORD4,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11;
  uint4 bitmask, uiDest;
  float4 fDest;


  r0.x = dot(v3.xyz, v3.xyz);




  r0.y = rsqrt(r0.x);
  r0.yzw = v3.xyz * r0.yyy;

   float4 stereo = StereoParams.Load(0);
 float4 params = IniParams.Load(0);
 r0.y -= stereo.x * (r0.w - stereo.y)*params.y;
  
  r1.xy = float2(0.25,0.25) * v1.xy;
  r1.xyz = WaterNormalsSampler.Sample(WaterNormalsSampler_s, r1.xy).xyw;
  r1.xyz = float3(0.150000006,0.150000006,0.100000001) * r1.xyz;
  r1.xyzw = r0.yzyz * r1.zzzz + r1.xyxy;
  r2.xy = v1.xy * float2(1,1) + r1.zw;
  r2.xyz = WaterNormalsSampler.Sample(WaterNormalsSampler_s, r2.xy).xyw;
  r2.xyz = float3(0.150000006,0.150000006,0.100000001) * r2.xyz;
  r2.xyzw = r0.yzyz * r2.zzzz + r2.xyxy;
  r1.xyzw = r2.xyzw + r1.xyzw;
  r2.xy = float2(0.5,0.5) * v1.zw;
  r2.z = __0SoftIntersectionFactor__1RainTilling__2DetailTilling__3Tilling.w * __0SoftIntersectionFactor__1RainTilling__2DetailTilling__3Tilling.z;
  r2.xy = r2.xy / r2.zz;
  r2.z = r2.z + r2.z;
  r2.xy = r2.xy * r2.zz + r1.xy;
  r3.xyzw = v1.xyxy / __0SoftIntersectionFactor__1RainTilling__2DetailTilling__3Tilling.wwww;
  r4.xyzw = __0SoftIntersectionFactor__1RainTilling__2DetailTilling__3Tilling.wwww * float4(0.25,0.25,1,1);
  r2.xy = WaterNormalsSampler.Sample(WaterNormalsSampler_s, r2.xy).xy;
  r2.xy = __0DetailNormalsScale__1NormalsScale__2__3.xx * r2.xy;
  r1.xyzw = r3.xyzw * r4.xyzw + r1.xyzw;
  r3.xyz = WaterNormalsSampler.Sample(WaterNormalsSampler_s, r1.xy).xyz;
  r1.xyz = WaterNormalsSampler.Sample(WaterNormalsSampler_s, r1.zw).xyz;
  r1.xyz = r3.xyz + r1.xyz;
  r2.z = 0;
  r1.xyz = r2.xyz + r1.xyz;
  r1.xy = __0DetailNormalsScale__1NormalsScale__2__3.yy * r1.xy;
  r1.w = dot(r1.xyz, r1.xyz);
  r1.w = rsqrt(r1.w);
  r2.xyz = r1.xyz * r1.www;
  r2.w = dot(r0.yzw, r2.xyz);
  r3.xy = v2.xy / v2.ww;
  r3.w = sceneDepthSampler.Sample(sceneDepthSampler_s, r3.xy).x;
  r4.x = PS_NearFarClipDist.y * r3.w;
  r3.w = r3.w * PS_NearFarClipDist.y + -v2.w;
  r4.y = saturate(__0SoftIntersectionFactor__1RainTilling__2DetailTilling__3Tilling.x * r3.w);
  r4.zw = float2(0.100000001,0.100000001) * r2.xy;
  r5.xy = r4.zw * r4.yy;
  r5.xy = v2.zz * r5.xy;
  r5.zw = PS_HPosScale.xy * r5.xy;
  r6.xyzw = r5.zwzw * float4(1.02499998,1.02499998,0.985000014,0.985000014) + r3.xyxy;
  r6.x = sceneDepthSampler.Sample(sceneDepthSampler_s, r6.xy).x;
  r7.x = PS_NearFarClipDist.y * r6.x;
  r5.xy = r5.xy * PS_HPosScale.xy + r3.xy;
  r5.x = sceneDepthSampler.Sample(sceneDepthSampler_s, r5.xy).x;
  r7.y = PS_NearFarClipDist.y * r5.x;
  r5.x = sceneDepthSampler.Sample(sceneDepthSampler_s, r6.zw).x;
  r7.z = PS_NearFarClipDist.y * r5.x;
  r6.yzw = cmp(v2.www < r7.xyz);
  r6.yzw = r6.yzw ? float3(1,1,1) : 0;
  r5.x = r6.x * PS_NearFarClipDist.y + -r4.x;
  r4.x = r6.y * r5.x + r4.x;
  r5.xy = r6.yy * r5.zw;
  r5.xy = r5.xy * float2(1.02499998,1.02499998) + r3.xy;
  r7.x = RefractionSampler.Sample(RefractionSampler_s, r5.xy).x;
  r5.xy = r5.zw * r6.zz + r3.xy;
  r7.y = RefractionSampler.Sample(RefractionSampler_s, r5.xy).y;
  r5.xy = r6.ww * r5.zw;
  r5.xy = r5.xy * float2(0.985000014,0.985000014) + r3.xy;
  r7.z = RefractionSampler.Sample(RefractionSampler_s, r5.xy).z;
  r5.xyz = r7.xyz / g_PS_SunLightDir.www;
  r0.x = sqrt(r0.x);
  r5.w = v2.w / r0.x;
  r5.w = vfDistanceParams.w * r5.w;
  r5.w = min(v2.w, r5.w);
  r5.w = -vfSamplingParams.x + r5.w;
  r5.w = vfSamplingParams.y * r5.w;
  r5.w = rsqrt(r5.w);
  r5.w = 1 / r5.w;
  r6.x = 0.5 + -r5.w;
  r5.w = r6.x * vfSamplingParams.w + r5.w;
  r6.xy = PS_ScreenSize.xy * r3.xy;
  r6.xy = (uint2)r6.xy;
  r6.xy = (uint2)r6.xy;
  r6.xy = vfTimeParams.xw + r6.xy;
  r6.x = dot(r6.xy, float2(0.0671105608,0.00583714992));
  r6.x = frac(r6.x);
  r6.x = 52.9829178 * r6.x;
  r6.x = frac(r6.x);
  r3.z = -r6.x * vfSamplingParams.w + r5.w;
  r6.xyzw = VolumetricFogTexture.SampleLevel(TrilinearClampSamplerState_s, r3.xyz, 0).xyzw;
  r3.z = -v3.z / r0.x;
  r5.w = dot(-v3.xyz, -v3.xyz);
  r5.w = rsqrt(r5.w);
  r7.xyz = -v3.xyz * r5.www;
  r5.w = dot(vfSunDir.xyz, r7.xyz);
  r7.x = vfScatteringParams.z * r5.w + -1;
  r7.x = r7.x * r7.x;
  r7.x = 12.566 * r7.x;
  r7.x = vfScatteringParams.w / r7.x;
  r5.w = vfScatteringColor.w * r5.w + -1;
  r5.w = r5.w * r5.w;
  r5.w = 12.566 * r5.w;
  r5.w = vfScatteringSecondaryColor.w / r5.w;
  r7.xyz = vfScatteringColor.xyz * r7.xxx;
  r8.xyz = vfScatteringSecondaryColor.xyz * r5.www;
  r5.w = -vfScatteringBlendParams.x * vfScatteringBlendParams.y + 1;
  r8.xyz = vfScatteringBlendParams.xxx * r8.xyz;
  r7.xyz = r7.xyz * r5.www + r8.xyz;
  r5.w = rcp(vfScatteringParams.y);
  r5.w = vfScatteringParams.x * r5.w;
  r7.xyz = r7.xyz * r5.www;
  r3.z = vfHeightDensityParams.x * r3.z;
  r5.w = cmp(abs(r3.z) < 9.99999997e-007);
  r3.z = r5.w ? 9.99999997e-007 : r3.z;
  r5.w = rcp(r3.z);
  r7.w = vfHeightDensityParams.y * -vfScatteringParams.y;
  r5.w = r7.w * r5.w;
  r8.x = min(vfDistanceParams.w, r0.x);
  r8.x = max(vfHeightDensityRampParams.y, r8.x);
  r8.y = 1.44269502 * r3.z;
  r8.z = r8.y * r0.x;
  r8.z = exp2(r8.z);
  r8.x = r8.y * r8.x;
  r8.x = exp2(r8.x);
  r8.x = r8.z + -r8.x;
  r5.w = r8.x * r5.w;
  r5.w = exp2(r5.w);
  r5.w = min(1, r5.w);
  r8.x = vfHeightDensityRampParams.y + -vfHeightDensityRampParams.x;
  r8.x = cmp(1 < r8.x);
  r8.y = cmp(vfDistanceParams.w < vfHeightDensityRampParams.y);
  r8.x = r8.y ? r8.x : 0;
  if (r8.x != 0) {
    r8.x = max(vfDistanceParams.w, vfHeightDensityRampParams.x);
    r8.x = min(r8.x, r0.x);
    r0.x = min(vfHeightDensityRampParams.y, r0.x);
    r8.y = cmp(abs(r3.z) < 9.99999975e-005);
    r3.z = r8.y ? 9.99999975e-005 : r3.z;
    r8.y = 1.44269502 * r3.z;
    r8.z = r3.z * r3.z;
    r8.w = vfHeightDensityRampParams.x + -vfHeightDensityRampParams.y;
    r8.z = r8.z * r8.w;
    r8.z = rcp(r8.z);
    r7.w = r8.z * r7.w;
    r8.z = r8.y * r0.x;
    r8.z = exp2(r8.z);
    r0.x = vfHeightDensityRampParams.x + -r0.x;
    r0.x = r3.z * r0.x + 1;
    r8.w = r8.y * r8.x;
    r8.w = exp2(r8.w);
    r8.x = vfHeightDensityRampParams.x + -r8.x;
    r3.z = r3.z * r8.x + 1;
    r8.x = r8.w * r3.z;
    r8.x = r8.z * r0.x + -r8.x;
    r8.x = r8.x * r7.w;
    r8.x = exp2(r8.x);
    r8.x = min(1, r8.x);
    r9.x = r8.x * r5.w;
    r8.y = vfHeightDensityRampParams.x * r8.y;
    r8.y = exp2(r8.y);
    r0.x = r8.z * r0.x + -r8.y;
    r0.x = r7.w * r0.x;
    r0.x = exp2(r0.x);
    r3.z = r8.w * r3.z + -r8.y;
    r3.z = r7.w * r3.z;
    r3.z = exp2(r3.z);
    r0.x = saturate(r3.z + -r0.x);
    r8.yzw = r7.xyz * r0.xxx;
  } else {
    r9.x = r5.w;
    r8.xyzw = float4(1,0,0,0);
  }
  r7.xyz = r8.xxx * r7.xyz;
  r0.x = 1 + -r5.w;
  r7.xyz = r7.xyz * r0.xxx + r8.yzw;
  r0.x = vfHeightDensityParams.z * r6.w;
  r6.xyz = r0.xxx * r7.xyz + r6.xyz;
  r0.x = 1 + -vfHeightDensityParams.w;
  r7.xyz = r6.xyz * r0.xxx;
  r6.xyz = -r6.xyz * r0.xxx + r5.xyz;
  r8.xyz = PS_WorldViewPos.xyz + -v5.xyz;
  r1.xyz = r1.xyz * r1.www + float3(-0,-0,-1);
  r1.xyz = r1.xyz * float3(0.300000012,0.300000012,0.300000012) + float3(0,0,1);
  r0.x = dot(r8.xyz, r1.xyz);
  r0.x = r0.x + r0.x;
  r1.xyz = r1.xyz * -r0.xxx + r8.xyz;
  r0.x = dot(r1.xyz, r1.xyz);
  r0.x = rsqrt(r0.x);
  r1.w = 0.5 * PS_ScreenSize.y;
  r1.w = log2(r1.w);
  r1.w = -4 + r1.w;
  r1.w = -MatSpecColor.w * r1.w + r1.w;
  r8.xy = r4.yy * r2.xy;
  r8.xy = v2.zz * r8.xy;
  r10.xw = float2(0.150000006,0.150000006);
  r10.yz = PS_HPosScale.yx;
  r8.zw = r10.xy * r8.xy;
  r8.zw = r8.zw * r10.zw + r3.xy;
  r3.z = sceneDepthSampler.Sample(sceneDepthSampler_s, r8.zw).x;
  r3.z = PS_NearFarClipDist.y * r3.z;
  r5.w = 0.150000006 * r8.x;
  r8.x = r5.w * r10.z;
  r5.w = -r8.y * r10.w + 1;
  r8.z = -r5.w * PS_HPosScale.y + 1;
  r3.z = cmp(v2.w < r3.z);
  r3.z = r3.z ? 1.000000 : 0;
  r10.xyz = v5.xyz;
  r10.w = 1;
  r11.x = dot(mViewProj._m00_m01_m02_m03, r10.xyzw);
  r11.y = dot(mViewProj._m10_m11_m12_m13, r10.xyzw);
  r5.w = dot(mViewProj._m30_m31_m32_m33, r10.xyzw);
  r8.yw = r11.xy / r5.ww;
  r10.xyz = r1.xyz * r0.xxx + v5.xyz;
  r10.w = 1;
  r1.x = dot(mViewProj._m00_m01_m02_m03, r10.xyzw);
  r1.y = dot(mViewProj._m10_m11_m12_m13, r10.xyzw);
  r0.x = dot(mViewProj._m30_m31_m32_m33, r10.xyzw);
  r1.xy = r1.xy / r0.xx;
  r1.xy = r1.xy + -r8.yw;
  r0.x = dot(r1.xy, r1.xy);
  r0.x = rsqrt(r0.x);
  r1.xy = r1.xy * r0.xx;
  r1.xy = PS_HPosScale.xy * r1.xy;
  r3.xy = r8.xz * r3.zz + r3.xy;
  r1.xy = r1.xy * r1.ww;
  r1.xy = PS_ScreenSize.ww * r1.xy;
  r1.xy = float2(64,64) * r1.xy;
  r1.xyz = ReflSampler.SampleGrad(ReflSampler_s, r3.xy, r1.xyx, float3(0,0,0)).xyz;
  r1.xyz = r1.xyz / g_PS_SunLightDir.www;
  r0.x = dot(v3.xyz, CameraFrontVector.xyz);
  r0.x = r4.x + -r0.x;
  r0.x = max(0, r0.x);
  r0.x = -cFogColorDensity.w * r0.x;
  r1.w = dot(r0.yzw, CameraFrontVector.xyz);
  r0.x = r0.x / r1.w;
  r0.x = exp2(r0.x);
  r0.x = min(1, r0.x);
  r3.xyz = -cFogColorDensity.xyz + r6.xyz;
  r3.xyz = r0.xxx * r3.xyz + cFogColorDensity.xyz;
  r0.x = saturate(dot(r2.xyz, g_PS_SunLightDir.xyz));
  r1.w = dot(-r0.yzw, r2.xyz);
  r1.w = r1.w + r1.w;
  r0.yzw = r2.xyz * -r1.www + -r0.yzw;
  r0.y = saturate(dot(g_PS_SunLightDir.xyz, r0.yzw));
  r0.zw = MatSpecColor.ww * float2(1020,127.5);
  r2.xy = MatSpecColor.ww * float2(162.338089,20.2922611) + float2(0.318309993,0.318309993);
  r0.y = log2(r0.y);
  r0.yz = r0.zw * r0.yy;
  r0.yz = exp2(r0.yz);
  r0.y = dot(r2.xy, r0.yz);
  r0.y = r0.x * r0.y;
  r0.yzw = r0.yyy * v4.xyz + r1.xyz;
  r1.x = -r2.w * v3.w + 1;
  r1.y = r1.x * r1.x;
  r1.y = r1.y * r1.y;
  r1.x = r1.x * r1.y;
  r1.x = saturate(r1.x * 0.949999988 + 0.0500000007);
  r1.y = saturate(-0.330000013 + v2.w);
  r1.y = r4.y * r1.y;
  r1.x = r1.x * r1.y;
  r0.yzw = r0.yzw + -r3.xyz;
  r0.yzw = r1.xxx * r0.yzw + r3.xyz;
  r1.xz = v1.xy * __0FoamSoftIntersectionFactor__1FoamAmount__2FoamTilling__3.zz + r4.zw;
  r1.x = FoamSampler.Sample(FoamSampler_s, r1.xz).x;
  r1.z = saturate(__0FoamSoftIntersectionFactor__1FoamAmount__2FoamTilling__3.x * r3.w);
  r1.w = saturate(r1.z * -2 + r1.x);
  r1.x = r1.x * r1.w;
  r1.z = -r1.z * r1.z + r1.z;
  r1.z = max(0, r1.z);
  r1.x = r1.x * r1.z;
  r2.xyz = g_PS_SunColor.xyz * r0.xxx + g_PS_SkyColor.xyz;
  r0.x = saturate(__0FoamSoftIntersectionFactor__1FoamAmount__2FoamTilling__3.y);
  r2.xyz = r2.xyz * r0.xxx;
  r0.xyz = r1.xxx * r2.xyz + r0.yzw;
  r0.w = r9.x * r6.w;
  r0.w = max(vfHeightDensityParams.w, r0.w);
  r0.xyz = r0.xyz * r0.www + r7.xyz;
  r0.xyz = r0.xyz + -r5.xyz;
  r0.xyz = r1.yyy * r0.xyz + r5.xyz;
  o0.xyz = g_PS_SunLightDir.www * r0.xyz;
  o0.w = 1;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.960.8229
//
//   using 3Dmigoto v1.3.10 on Fri May 04 22:05:50 2018
//
//
// Buffer Definitions:
//
// cbuffer PER_BATCH
// {
//
//   float4 cFogColorDensity;           // Offset:    0 Size:    16
//   float3 vfColGradBase;              // Offset:   16 Size:    12 [unused]
//   float4 vfHeightDensityRampParams;  // Offset:   32 Size:    16
//   float4 vfScatteringParams;         // Offset:   48 Size:    16
//   float4 vfHeightDensityParams;      // Offset:   64 Size:    16
//   float4 vfScatteringBlendParams;    // Offset:   80 Size:    16
//   float4 PS_WorldViewPos;            // Offset:   96 Size:    16
//   float4 vfScatteringColor;          // Offset:  112 Size:    16
//   float4 vfSamplingParams;           // Offset:  128 Size:    16
//   float3 vfColGradDelta;             // Offset:  144 Size:    12 [unused]
//   float4 vfRampParams;               // Offset:  160 Size:    16 [unused]
//   float4 vfColGradRadial;            // Offset:  176 Size:    16 [unused]
//   float3 CameraFrontVector;          // Offset:  192 Size:    12
//   float4 PS_NearFarClipDist;         // Offset:  208 Size:    16
//   float4 vfColGradParams;            // Offset:  224 Size:    16 [unused]
//   float4 PS_ScreenSize;              // Offset:  240 Size:    16
//   float4 PS_HPosScale;               // Offset:  256 Size:    16
//   float4 vfDistanceParams;           // Offset:  272 Size:    16
//   float4 vfParams;                   // Offset:  288 Size:    16 [unused]
//   float4 vfTimeParams;               // Offset:  304 Size:    16
//   float4 vfScatteringSecondaryColor; // Offset:  320 Size:    16
//   float3 vfSunDir;                   // Offset:  336 Size:    12
//   float4 vfViewPos;                  // Offset:  352 Size:    16 [unused]
//
// }
//
// cbuffer PER_INSTANCE
// {
//
//   row_major float4x4 mViewProj;      // Offset:    0 Size:    64
//
// }
//
// cbuffer PER_FRAME
// {
//
//   float4 g_PS_SkyColor;              // Offset:    0 Size:    16
//   float4 g_PS_SunColor;              // Offset:   16 Size:    16
//   float4 g_PS_SunLightDir;           // Offset:   32 Size:    16
//
// }
//
// cbuffer PER_MATERIAL
// {
//
//   float4 MatSpecColor;               // Offset:  464 Size:    16
//   float3 __0FoamSoftIntersectionFactor__1FoamAmount__2FoamTilling__3;// Offset:  496 Size:    12
//   float2 __0RealtimeReflMul__1EnvCubeReflMul__2__3;// Offset:  528 Size:     8 [unused]
//   float2 __0DetailNormalsScale__1NormalsScale__2__3;// Offset:  544 Size:     8
//   float4 __0__1__2__3EnvCubeScale;   // Offset:  560 Size:    16 [unused]
//   float4 __0SoftIntersectionFactor__1RainTilling__2DetailTilling__3Tilling;// Offset:  576 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// TrilinearClampSamplerState        sampler      NA          NA    0        1
// RefractionSampler                 sampler      NA          NA    1        1
// sceneDepthSampler                 sampler      NA          NA    2        1
// ReflSampler                       sampler      NA          NA    3        1
// WaterNormalsSampler               sampler      NA          NA    4        1
// FoamSampler                       sampler      NA          NA    5        1
// WaterNormalsSampler               texture  float4          2d    0        1
// RefractionSampler                 texture  float4          2d    1        1
// sceneDepthSampler                 texture  float4          2d    2        1
// ReflSampler                       texture  float4          2d    3        1
// FoamSampler                       texture  float4          2d    4        1
// VolumetricFogTexture              texture  float4          3d    5        1
// PER_BATCH                         cbuffer      NA          NA    0        1
// PER_INSTANCE                      cbuffer      NA          NA    1        1
// PER_FRAME                         cbuffer      NA          NA    2        1
// PER_MATERIAL                      cbuffer      NA          NA    3        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   xyzw
// TEXCOORD                 2   xyzw        3     NONE   float   xyzw
// TEXCOORD                 3   xyzw        4     NONE   float   xyz
// TEXCOORD                 4   xyzw        5     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[22], immediateIndexed
dcl_constantbuffer cb1[4], immediateIndexed
dcl_constantbuffer cb2[3], immediateIndexed
dcl_constantbuffer cb3[37], 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_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_texture3d (float,float,float,float) t5
dcl_input_ps linear v1.xyzw
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v3.xyzw
dcl_input_ps linear v4.xyz
dcl_input_ps linear v5.xyz
dcl_output o0.xyzw
dcl_temps 12
dp3 r0.x, v3.xyzx, v3.xyzx
rsq r0.y, r0.x
mul r0.yzw, r0.yyyy, v3.xxyz
mul r1.xy, v1.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000)
sample_indexable(texture2d)(float,float,float,float) r1.xyz, r1.xyxx, t0.xywz, s4
mul r1.xyz, r1.xyzx, l(0.150000, 0.150000, 0.100000, 0.000000)
mad r1.xyzw, r0.yzyz, r1.zzzz, r1.xyxy
mad r2.xy, v1.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000), r1.zwzz
sample_indexable(texture2d)(float,float,float,float) r2.xyz, r2.xyxx, t0.xywz, s4
mul r2.xyz, r2.xyzx, l(0.150000, 0.150000, 0.100000, 0.000000)
mad r2.xyzw, r0.yzyz, r2.zzzz, r2.xyxy
add r1.xyzw, r1.xyzw, r2.xyzw
mul r2.xy, v1.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000)
mul r2.z, cb3[36].z, cb3[36].w
div r2.xy, r2.xyxx, r2.zzzz
add r2.z, r2.z, r2.z
mad r2.xy, r2.xyxx, r2.zzzz, r1.xyxx
div r3.xyzw, v1.xyxy, cb3[36].wwww
mul r4.xyzw, l(0.250000, 0.250000, 1.000000, 1.000000), cb3[36].wwww
sample_indexable(texture2d)(float,float,float,float) r2.xy, r2.xyxx, t0.xyzw, s4
mul r2.xy, r2.xyxx, cb3[34].xxxx
mad r1.xyzw, r3.xyzw, r4.xyzw, r1.xyzw
sample_indexable(texture2d)(float,float,float,float) r3.xyz, r1.xyxx, t0.xyzw, s4
sample_indexable(texture2d)(float,float,float,float) r1.xyz, r1.zwzz, t0.xyzw, s4
add r1.xyz, r1.xyzx, r3.xyzx
mov r2.z, l(0)
add r1.xyz, r1.xyzx, r2.xyzx
mul r1.xy, r1.xyxx, cb3[34].yyyy
dp3 r1.w, r1.xyzx, r1.xyzx
rsq r1.w, r1.w
mul r2.xyz, r1.wwww, r1.xyzx
dp3 r2.w, r0.yzwy, r2.xyzx
div r3.xy, v2.xyxx, v2.wwww
sample_indexable(texture2d)(float,float,float,float) r3.w, r3.xyxx, t2.yzwx, s2
mul r4.x, r3.w, cb0[13].y
mad r3.w, r3.w, cb0[13].y, -v2.w
mul_sat r4.y, r3.w, cb3[36].x
mul r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.100000, 0.100000)
mul r5.xy, r4.yyyy, r4.zwzz
mul r5.xy, r5.xyxx, v2.zzzz
mul r5.zw, r5.xxxy, cb0[16].xxxy
mad r6.xyzw, r5.zwzw, l(1.025000, 1.025000, 0.985000, 0.985000), r3.xyxy
sample_indexable(texture2d)(float,float,float,float) r6.x, r6.xyxx, t2.xyzw, s2
mul r7.x, r6.x, cb0[13].y
mad r5.xy, r5.xyxx, cb0[16].xyxx, r3.xyxx
sample_indexable(texture2d)(float,float,float,float) r5.x, r5.xyxx, t2.xyzw, s2
mul r7.y, r5.x, cb0[13].y
sample_indexable(texture2d)(float,float,float,float) r5.x, r6.zwzz, t2.xyzw, s2
mul r7.z, r5.x, cb0[13].y
lt r6.yzw, v2.wwww, r7.xxyz
and r6.yzw, r6.yyzw, l(0, 0x3f800000, 0x3f800000, 0x3f800000)
mad r5.x, r6.x, cb0[13].y, -r4.x
mad r4.x, r6.y, r5.x, r4.x
mul r5.xy, r5.zwzz, r6.yyyy
mad r5.xy, r5.xyxx, l(1.025000, 1.025000, 0.000000, 0.000000), r3.xyxx
sample_indexable(texture2d)(float,float,float,float) r7.x, r5.xyxx, t1.xyzw, s1
mad r5.xy, r5.zwzz, r6.zzzz, r3.xyxx
sample_indexable(texture2d)(float,float,float,float) r7.y, r5.xyxx, t1.xyzw, s1
mul r5.xy, r5.zwzz, r6.wwww
mad r5.xy, r5.xyxx, l(0.985000, 0.985000, 0.000000, 0.000000), r3.xyxx
sample_indexable(texture2d)(float,float,float,float) r7.z, r5.xyxx, t1.xyzw, s1
div r5.xyz, r7.xyzx, cb2[2].wwww
sqrt r0.x, r0.x
div r5.w, v2.w, r0.x
mul r5.w, r5.w, cb0[17].w
min r5.w, r5.w, v2.w
add r5.w, r5.w, -cb0[8].x
mul r5.w, r5.w, cb0[8].y
rsq r5.w, r5.w
div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w
add r6.x, -r5.w, l(0.500000)
mad r5.w, r6.x, cb0[8].w, r5.w
mul r6.xy, r3.xyxx, cb0[15].xyxx
ftou r6.xy, r6.xyxx
utof r6.xy, r6.xyxx
add r6.xy, r6.xyxx, cb0[19].xwxx
dp2 r6.x, r6.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000)
frc r6.x, r6.x
mul r6.x, r6.x, l(52.982918)
frc r6.x, r6.x
mad r3.z, -r6.x, cb0[8].w, r5.w
sample_l_indexable(texture3d)(float,float,float,float) r6.xyzw, r3.xyzx, t5.xyzw, s0, l(0.000000)
div r3.z, -v3.z, r0.x
dp3 r5.w, -v3.xyzx, -v3.xyzx
rsq r5.w, r5.w
mul r7.xyz, r5.wwww, -v3.xyzx
dp3 r5.w, cb0[21].xyzx, r7.xyzx
mad r7.x, cb0[3].z, r5.w, l(-1.000000)
mul r7.x, r7.x, r7.x
mul r7.x, r7.x, l(12.566000)
div r7.x, cb0[3].w, r7.x
mad r5.w, cb0[7].w, r5.w, l(-1.000000)
mul r5.w, r5.w, r5.w
mul r5.w, r5.w, l(12.566000)
div r5.w, cb0[20].w, r5.w
mul r7.xyz, r7.xxxx, cb0[7].xyzx
mul r8.xyz, r5.wwww, cb0[20].xyzx
mad r5.w, -cb0[5].x, cb0[5].y, l(1.000000)
mul r8.xyz, r8.xyzx, cb0[5].xxxx
mad r7.xyz, r7.xyzx, r5.wwww, r8.xyzx
rcp r5.w, cb0[3].y
mul r5.w, r5.w, cb0[3].x
mul r7.xyz, r5.wwww, r7.xyzx
mul r3.z, r3.z, cb0[4].x
lt r5.w, |r3.z|, l(0.000001)
movc r3.z, r5.w, l(0.000001), r3.z
rcp r5.w, r3.z
mul r7.w, -cb0[3].y, cb0[4].y
mul r5.w, r5.w, r7.w
min r8.x, r0.x, cb0[17].w
max r8.x, r8.x, cb0[2].y
mul r8.y, r3.z, l(1.442695)
mul r8.z, r0.x, r8.y
exp r8.z, r8.z
mul r8.x, r8.x, r8.y
exp r8.x, r8.x
add r8.x, -r8.x, r8.z
mul r5.w, r5.w, r8.x
exp r5.w, r5.w
min r5.w, r5.w, l(1.000000)
add r8.x, -cb0[2].x, cb0[2].y
lt r8.x, l(1.000000), r8.x
lt r8.y, cb0[17].w, cb0[2].y
and r8.x, r8.y, r8.x
if_nz r8.x
  max r8.x, cb0[2].x, cb0[17].w
  min r8.x, r0.x, r8.x
  min r0.x, r0.x, cb0[2].y
  lt r8.y, |r3.z|, l(0.000100)
  movc r3.z, r8.y, l(0.000100), r3.z
  mul r8.y, r3.z, l(1.442695)
  mul r8.z, r3.z, r3.z
  add r8.w, -cb0[2].y, cb0[2].x
  mul r8.z, r8.w, r8.z
  rcp r8.z, r8.z
  mul r7.w, r7.w, r8.z
  mul r8.z, r0.x, r8.y
  exp r8.z, r8.z
  add r0.x, -r0.x, cb0[2].x
  mad r0.x, r3.z, r0.x, l(1.000000)
  mul r8.w, r8.x, r8.y
  exp r8.w, r8.w
  add r8.x, -r8.x, cb0[2].x
  mad r3.z, r3.z, r8.x, l(1.000000)
  mul r8.x, r3.z, r8.w
  mad r8.x, r8.z, r0.x, -r8.x
  mul r8.x, r7.w, r8.x
  exp r8.x, r8.x
  min r8.x, r8.x, l(1.000000)
  mul r9.x, r5.w, r8.x
  mul r8.y, r8.y, cb0[2].x
  exp r8.y, r8.y
  mad r0.x, r8.z, r0.x, -r8.y
  mul r0.x, r0.x, r7.w
  exp r0.x, r0.x
  mad r3.z, r8.w, r3.z, -r8.y
  mul r3.z, r3.z, r7.w
  exp r3.z, r3.z
  add_sat r0.x, -r0.x, r3.z
  mul r8.yzw, r0.xxxx, r7.xxyz
else
  mov r9.x, r5.w
  mov r8.xyzw, l(1.000000,0,0,0)
endif
mul r7.xyz, r7.xyzx, r8.xxxx
add r0.x, -r5.w, l(1.000000)
mad r7.xyz, r7.xyzx, r0.xxxx, r8.yzwy
mul r0.x, r6.w, cb0[4].z
mad r6.xyz, r0.xxxx, r7.xyzx, r6.xyzx
add r0.x, -cb0[4].w, l(1.000000)
mul r7.xyz, r0.xxxx, r6.xyzx
mad r6.xyz, -r6.xyzx, r0.xxxx, r5.xyzx
add r8.xyz, -v5.xyzx, cb0[6].xyzx
mad r1.xyz, r1.xyzx, r1.wwww, l(-0.000000, -0.000000, -1.000000, 0.000000)
mad r1.xyz, r1.xyzx, l(0.300000, 0.300000, 0.300000, 0.000000), l(0.000000, 0.000000, 1.000000, 0.000000)
dp3 r0.x, r8.xyzx, r1.xyzx
add r0.x, r0.x, r0.x
mad r1.xyz, r1.xyzx, -r0.xxxx, r8.xyzx
dp3 r0.x, r1.xyzx, r1.xyzx
rsq r0.x, r0.x
mul r1.w, cb0[15].y, l(0.500000)
log r1.w, r1.w
add r1.w, r1.w, l(-4.000000)
mad r1.w, -cb3[29].w, r1.w, r1.w
mul r8.xy, r2.xyxx, r4.yyyy
mul r8.xy, r8.xyxx, v2.zzzz
mov r10.xw, l(0.150000,0,0,0.150000)
mov r10.yz, cb0[16].yyxy
mul r8.zw, r8.xxxy, r10.xxxy
mad r8.zw, r8.zzzw, r10.zzzw, r3.xxxy
sample_indexable(texture2d)(float,float,float,float) r3.z, r8.zwzz, t2.yzxw, s2
mul r3.z, r3.z, cb0[13].y
mul r5.w, r8.x, l(0.150000)
mul r8.x, r10.z, r5.w
mad r5.w, -r8.y, r10.w, l(1.000000)
mad r8.z, -r5.w, cb0[16].y, l(1.000000)
lt r3.z, v2.w, r3.z
and r3.z, r3.z, l(0x3f800000)
mov r10.xyz, v5.xyzx
mov r10.w, l(1.000000)
dp4 r11.x, cb1[0].xyzw, r10.xyzw
dp4 r11.y, cb1[1].xyzw, r10.xyzw
dp4 r5.w, cb1[3].xyzw, r10.xyzw
div r8.yw, r11.xxxy, r5.wwww
mad r10.xyz, r1.xyzx, r0.xxxx, v5.xyzx
mov r10.w, l(1.000000)
dp4 r1.x, cb1[0].xyzw, r10.xyzw
dp4 r1.y, cb1[1].xyzw, r10.xyzw
dp4 r0.x, cb1[3].xyzw, r10.xyzw
div r1.xy, r1.xyxx, r0.xxxx
add r1.xy, -r8.ywyy, r1.xyxx
dp2 r0.x, r1.xyxx, r1.xyxx
rsq r0.x, r0.x
mul r1.xy, r0.xxxx, r1.xyxx
mul r1.xy, r1.xyxx, cb0[16].xyxx
mad r3.xy, r8.xzxx, r3.zzzz, r3.xyxx
mul r1.xy, r1.wwww, r1.xyxx
mul r1.xy, r1.xyxx, cb0[15].wwww
mul r1.xy, r1.xyxx, l(64.000000, 64.000000, 0.000000, 0.000000)
sample_d_indexable(texture2d)(float,float,float,float) r1.xyz, r3.xyxx, t3.xyzw, s3, r1.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
div r1.xyz, r1.xyzx, cb2[2].wwww
dp3 r0.x, v3.xyzx, cb0[12].xyzx
add r0.x, -r0.x, r4.x
max r0.x, r0.x, l(0.000000)
mul r0.x, r0.x, -cb0[0].w
dp3 r1.w, r0.yzwy, cb0[12].xyzx
div r0.x, r0.x, r1.w
exp r0.x, r0.x
min r0.x, r0.x, l(1.000000)
add r3.xyz, r6.xyzx, -cb0[0].xyzx
mad r3.xyz, r0.xxxx, r3.xyzx, cb0[0].xyzx
dp3_sat r0.x, r2.xyzx, cb2[2].xyzx
dp3 r1.w, -r0.yzwy, r2.xyzx
add r1.w, r1.w, r1.w
mad r0.yzw, r2.xxyz, -r1.wwww, -r0.yyzw
dp3_sat r0.y, cb2[2].xyzx, r0.yzwy
mul r0.zw, l(0.000000, 0.000000, 1020.000000, 127.500000), cb3[29].wwww
mad r2.xy, cb3[29].wwww, l(162.338089, 20.292261, 0.000000, 0.000000), l(0.318310, 0.318310, 0.000000, 0.000000)
log r0.y, r0.y
mul r0.yz, r0.yyyy, r0.zzwz
exp r0.yz, r0.yyzy
dp2 r0.y, r2.xyxx, r0.yzyy
mul r0.y, r0.y, r0.x
mad r0.yzw, r0.yyyy, v4.xxyz, r1.xxyz
mad r1.x, -r2.w, v3.w, l(1.000000)
mul r1.y, r1.x, r1.x
mul r1.y, r1.y, r1.y
mul r1.x, r1.y, r1.x
mad_sat r1.x, r1.x, l(0.950000), l(0.050000)
add_sat r1.y, v2.w, l(-0.330000)
mul r1.y, r1.y, r4.y
mul r1.x, r1.y, r1.x
add r0.yzw, -r3.xxyz, r0.yyzw
mad r0.yzw, r1.xxxx, r0.yyzw, r3.xxyz
mad r1.xz, v1.xxyx, cb3[31].zzzz, r4.zzwz
sample_indexable(texture2d)(float,float,float,float) r1.x, r1.xzxx, t4.xyzw, s5
mul_sat r1.z, r3.w, cb3[31].x
mad_sat r1.w, r1.z, l(-2.000000), r1.x
mul r1.x, r1.w, r1.x
mad r1.z, -r1.z, r1.z, r1.z
max r1.z, r1.z, l(0.000000)
mul r1.x, r1.z, r1.x
mad r2.xyz, cb2[1].xyzx, r0.xxxx, cb2[0].xyzx
mov_sat r0.x, cb3[31].y
mul r2.xyz, r0.xxxx, r2.xyzx
mad r0.xyz, r1.xxxx, r2.xyzx, r0.yzwy
mul r0.w, r6.w, r9.x
max r0.w, r0.w, cb0[4].w
mad r0.xyz, r0.xyzx, r0.wwww, r7.xyzx
add r0.xyz, -r5.xyzx, r0.xyzx
mad r0.xyz, r1.yyyy, r0.xyzx, r5.xyzx
mul o0.xyz, r0.xyzx, cb2[2].wwww
mov o0.w, l(1.000000)
ret
// Approximately 274 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 