// Water ASM
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.20546
//
//   using 3Dmigoto v1.2.47 on Tue Nov 29 22:46:56 2016
//
//
// Buffer Definitions: 
//
// cbuffer SceneWideParameterConstantBuffer
// {
//
//   float4x4 ViewProjection;           // Offset:    0 Size:    64
//   float4x4 View;                     // Offset:   64 Size:    64
//   float4x4 Projection;               // Offset:  128 Size:    64 [unused]
//   float4x4 ViewInverse;              // Offset:  192 Size:    64 [unused]
//   float3 EyePosition;                // Offset:  256 Size:    12
//   float cameraNearTimesFar;          // Offset:  268 Size:     4 [unused]
//   float3 GlobalAmbientColor;         // Offset:  272 Size:    12 [unused]
//   float cameraFarMinusNear;          // Offset:  284 Size:     4 [unused]
//   float2 cameraNearFar;              // Offset:  288 Size:     8 [unused]
//   float2 ViewportWidthHeight;        // Offset:  296 Size:     8 [unused]
//   float2 screenWidthHeightInv;       // Offset:  304 Size:     8 [unused]
//   float2 screenWidthHeight;          // Offset:  312 Size:     8 [unused]
//   float4x4 PrevViewProj;             // Offset:  320 Size:    64 [unused]
//   float4 Jitter;                     // Offset:  384 Size:    16 [unused]
//   float2 InvProjXY;                  // Offset:  400 Size:     8 [unused]
//   uint PointLightCount;              // Offset:  408 Size:     4 [unused]
//   uint SpotLightCount;               // Offset:  412 Size:     4 [unused]
//   uint FoliageSpheresCount;          // Offset:  416 Size:     4 [unused]
//   float time;                        // Offset:  420 Size:     4 [unused]
//   float2 CubeFadeValues;             // Offset:  424 Size:     8 [unused]
//   float4 FogParameters0;             // Offset:  432 Size:    16 [unused]
//   float4 FogParameters1;             // Offset:  448 Size:    16 [unused]
//   float4 FogParameters2;             // Offset:  464 Size:    16 [unused]
//   float4 FogParameters3;             // Offset:  480 Size:    16 [unused]
//   float3 CubeSunDir;                 // Offset:  496 Size:    12 [unused]
//   float padding0;                    // Offset:  508 Size:     4 [unused]
//   float3 CubeSunColor;               // Offset:  512 Size:    12 [unused]
//   float padding1;                    // Offset:  524 Size:     4 [unused]
//   float2 WindDirection;              // Offset:  528 Size:     8 [unused]
//
// }
//
// Resource bind info for ParticleStateBuffer
// {
//
//   struct
//   {
//       
//       float3 position;               // Offset:    0
//       float3 velocity;               // Offset:   12
//       float life;                    // Offset:   24
//
//   } $Element;                        // Offset:    0 Size:    28
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// ParticleStateBuffer               texture  struct         r/o    0        1
// SceneWideParameterConstantBuffer    cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_VertexID              0   x           0   VERTID    uint   x   
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
// TEXCOORD                 2   xy          2     NONE   float   xy  
//
vs_4_0
dcl_globalFlags refactoringAllowed | enableRawAndStructuredBuffers
dcl_immediateConstantBuffer { { -1.000000, 1.000000, 0, 0},
                              { -1.000000, -1.000000, 0, 0},
                              { 1.000000, -1.000000, 0, 0},
                              { 1.000000, 1.000000, 0, 0} }
dcl_constantbuffer cb0[17], immediateIndexed
dcl_resource_structured t0, 28 
dcl_input_sgv v0.x, vertex_id
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xy
//dcl_temps 5

dcl_temps 15

dcl_resource_texture1d (float,float,float,float) t120
dcl_resource_texture2d (float,float,float,float) t125

ld_indexable(texture2d)(float,float,float,float) r15.xyzw, l(0, 0, 0, 0), t125.xyzw
ld_indexable(texture1d)(float,float,float,float) r14.xyzw, l(0, 0, 0, 0), t120.xyzw



ushr r0.x, v0.x, l(2)
ld_structured r1.xyz, r0.x, l(16), t0.xyzx
ld_structured r0.xyzw, r0.x, l(0), t0.xyzw
mov_sat r2.x, r1.z
add r2.x, r2.x, l(1.000000)
mul r2.y, r1.z, r1.z
min r2.y, r2.y, l(1.000000)
mul r2.y, r2.y, l(0.015000)
mul r2.x, r2.x, r2.y
mov r1.w, r0.w
dp3 r0.w, r1.xywx, r1.xywx
sqrt r2.z, r0.w
rsq r0.w, r0.w
mul r1.xyw, r0.wwww, r1.wxwy
mov o1.w, r1.z
mad r0.w, r2.z, l(0.0166666675), r2.y
min r0.w, r2.x, r0.w
and r1.z, v0.x, l(3)
mul r2.xzw, r1.xxyw, icb[r1.z + 0].yyyy
mul r2.xzw, r0.wwww, r2.xxzw


add r3.xyz, r0.zxyz, -cb0[16].zxyz


mul r4.xyz, r1.ywxy, r3.xyzx
mad r1.xyw, r3.zxzy, r1.wxwy, -r4.xyxz
dp3 r0.w, r1.xywx, r1.xywx
rsq r0.w, r0.w
mul r1.xyw, r0.wwww, r1.xyxw
mul r1.xyw, r1.xyxw, icb[r1.z + 0].xxxx
mov o2.xy, icb[r1.z + 0].xyxx
mad r1.xyz, r1.xywx, r2.yyyy, r2.xzwx
add r0.xyz, r0.xyzx, r1.xyzx
mov r0.w, l(1.000000)

//Fix aproximate using presets for convergence
add r15.w, r0.z, -r15.y
mul r15.w, r15.x, r15.w
//mul r15.w, r15.w, r14.y
mul r15.w, r15.w, cb0[2].x
add r0.x, r0.x, -r15.w


dp4 o0.x, r0.xyzw, cb0[0].xyzw
dp4 o0.y, r0.xyzw, cb0[1].xyzw
dp4 o0.z, r0.xyzw, cb0[2].xyzw
dp4 o0.w, r0.xyzw, cb0[3].xyzw

dp4 o1.x, r0.xyzw, cb0[4].xyzw
dp4 o1.y, r0.xyzw, cb0[5].xyzw
dp4 o1.z, r0.xyzw, cb0[6].xyzw
ret 
// Approximately 39 instruction slots used
