// Some very weird God Rays

cbuffer worldMtxBuffer : register(b11)
{
  float4x4 g_World : packoffset(c0);
}

cbuffer VS_BaseParamBuffer : register(b1)
{
  float4 g_Tiling : packoffset(c0);
}

cbuffer ParamBuffer : register(b5)
{
  float4x4 tmp_ShadowViewProj : packoffset(c0);
  float4x4 tmp_ShadowView : packoffset(c4);
}



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


void main( 
  float3 v0 : POSITION0,
  float2 v1 : TEXCOORD0,
  out float4 o0 : SV_POSITION0,
  out float4 o1 : TEXCOORD0,
  out float4 o2 : TEXCOORD1)
{
  float4 r0,r1;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xyz = v0.xyz;
  r0.w = 1;
  r1.x = dot(r0.xyzw, g_World._m00_m10_m20_m30);
  r1.y = dot(r0.xyzw, g_World._m01_m11_m21_m31);
  r1.z = dot(r0.xyzw, g_World._m02_m12_m22_m32);
  r1.w = dot(r0.xyzw, g_World._m03_m13_m23_m33);
  r0.x = dot(r1.xyzw, tmp_ShadowViewProj._m00_m10_m20_m30);
  r0.y = dot(r1.xyzw, tmp_ShadowViewProj._m01_m11_m21_m31);
  r0.z = dot(r1.xyzw, tmp_ShadowViewProj._m02_m12_m22_m32);
  r0.w = dot(r1.xyzw, tmp_ShadowViewProj._m03_m13_m23_m33);
  o0.xyzw = r0.xyzw;
  o2.xyzw = r0.xyzw;
  o1.xy = g_Tiling.xy * v1.xy;
  
  float4 stereo = StereoParams.Load(0);
  //o0.x += stereo.x * (o0.w - stereo.y);
  
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.2.57 on Wed May 10 00:44:43 2017
//
//
// Buffer Definitions: 
//
// cbuffer worldMtxBuffer
// {
//
//   float4x4 g_World;                  // Offset:    0 Size:    64
//
// }
//
// cbuffer VS_BaseParamBuffer
// {
//
//   float4 g_Tiling;                   // Offset:    0 Size:    16
//
// }
//
// cbuffer ParamBuffer
// {
//
//   float4x4 tmp_ShadowViewProj;       // Offset:    0 Size:    64
//   float4x4 tmp_ShadowView;           // Offset:   64 Size:    64 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// VS_BaseParamBuffer                cbuffer      NA          NA    1        1
// ParamBuffer                       cbuffer      NA          NA    5        1
// worldMtxBuffer                    cbuffer      NA          NA   11        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyz         0     NONE   float   xyz 
// TEXCOORD                 0   xy          1     NONE   float   xy  
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 0   xy          1     NONE   float   xy  
// TEXCOORD                 1   xyzw        2     NONE   float   xyzw
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb11[4], immediateIndexed
dcl_constantbuffer cb1[1], immediateIndexed
dcl_constantbuffer cb5[4], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xy
dcl_output_siv o0.xyzw, position
dcl_output o1.xy
dcl_output o2.xyzw
dcl_temps 2
mov r0.xyz, v0.xyzx
mov r0.w, l(1.000000)
dp4 r1.x, r0.xyzw, cb11[0].xyzw
dp4 r1.y, r0.xyzw, cb11[1].xyzw
dp4 r1.z, r0.xyzw, cb11[2].xyzw
dp4 r1.w, r0.xyzw, cb11[3].xyzw
dp4 r0.x, r1.xyzw, cb5[0].xyzw
dp4 r0.y, r1.xyzw, cb5[1].xyzw
dp4 r0.z, r1.xyzw, cb5[2].xyzw
dp4 r0.w, r1.xyzw, cb5[3].xyzw
mov o0.xyzw, r0.xyzw
mov o2.xyzw, r0.xyzw
mul o1.xy, v1.xyxx, cb1[0].xyxx
ret 
// Approximately 14 instruction slots used

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