//Godrays
// ---- Created with 3Dmigoto v1.2.56 on Tue May 30 13:03:23 2017

cbuffer _Globals : register(b0)
{
  float4 LightPosition : packoffset(c0);
}

cbuffer Transforms : register(b1)
{
  row_major float4x4 WorldMatrix : packoffset(c0);
  row_major float4x4 ViewMatrix : packoffset(c4);
  row_major float4x4 ProjectionMatrix : packoffset(c8);
  row_major float4x4 LightDirection : packoffset(c12);
}



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

#include <ShaderFixes/matrix.hlsl>


void main( 
  float3 v0 : Position0,
  float3 v1 : Normal0,
  float3 v2 : Tangent0,
  float3 v3 : Binormal0,
  float2 v4 : Texcoord0,
  out float4 o0 : SV_Position0,
  out float4 o1 : FragPos0,
  out float3 o2 : LightPos0,
  out float3 o3 : LightPosWS0,
  out float3 o4 : LightDir0,
  out float4 o5 : TexCoords0)
{
  float4 r0,r1;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xyz = v0.xyz;
  r0.w = 1;
  r1.x = dot(WorldMatrix._m00_m01_m02_m03, r0.xyzw);
  r1.y = dot(WorldMatrix._m10_m11_m12_m13, r0.xyzw);
  r1.z = dot(WorldMatrix._m20_m21_m22_m23, r0.xyzw);
  r1.w = dot(WorldMatrix._m30_m31_m32_m33, r0.xyzw);
  r0.x = dot(ViewMatrix._m00_m01_m02_m03, r1.xyzw);
  r0.y = dot(ViewMatrix._m10_m11_m12_m13, r1.xyzw);
  r0.z = dot(ViewMatrix._m20_m21_m22_m23, r1.xyzw);
  r0.w = dot(ViewMatrix._m30_m31_m32_m33, r1.xyzw);
   
  o1.xyzw = r1.xyzw;  //WORLD COORD
  
  r1.x = dot(ProjectionMatrix._m00_m01_m02_m03, r0.xyzw);
  r1.y = dot(ProjectionMatrix._m10_m11_m12_m13, r0.xyzw);
  r1.z = dot(ProjectionMatrix._m20_m21_m22_m23, r0.xyzw);
  r1.w = dot(ProjectionMatrix._m30_m31_m32_m33, r0.xyzw);
  
float4 s=StereoParams.Load(0);
float4 r10;
r10=r1;
r10.x += s.x*(r10.w-s.y);
  
o0.xyzw = r10.xyzw;
o5.xyzw = r10.xyzw;

  r0.xyz = LightPosition.xyz;
  r0.w = 1;
  o2.x = dot(ViewMatrix._m00_m01_m02_m03, r0.xyzw);
  o2.y = dot(ViewMatrix._m10_m11_m12_m13, r0.xyzw);
  o2.z = dot(ViewMatrix._m20_m21_m22_m23, r0.xyzw); 
  
  o3.xyz = LightPosition.xyz;
  r0.x = LightDirection._m02;
  r0.y = LightDirection._m12;
  r0.z = LightDirection._m22;
  o4.x = dot(ViewMatrix._m00_m01_m02, r0.xyz);
  o4.y = dot(ViewMatrix._m10_m11_m12, r0.xyz);
  o4.z = dot(ViewMatrix._m20_m21_m22, r0.xyz);
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
//   using 3Dmigoto v1.2.56 on Tue May 30 13:03:23 2017
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   float4 LightPosition;              // Offset:    0 Size:    16
//
// }
//
// cbuffer Transforms
// {
//
//   row_major float4x4 WorldMatrix;    // Offset:    0 Size:    64
//   row_major float4x4 ViewMatrix;     // Offset:   64 Size:    64
//   row_major float4x4 ProjectionMatrix;// Offset:  128 Size:    64
//   row_major float4x4 LightDirection; // Offset:  192 Size:    64
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// $Globals                          cbuffer      NA          NA    0        1
// Transforms                        cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// Position                 0   xyz         0     NONE   float   xyz 
// Normal                   0   xyz         1     NONE   float       
// Tangent                  0   xyz         2     NONE   float       
// Binormal                 0   xyz         3     NONE   float       
// Texcoord                 0   xy          4     NONE   float       
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xyzw
// FragPos                  0   xyzw        1     NONE   float   xyzw
// LightPos                 0   xyz         2     NONE   float   xyz 
// LightPosWS               0   xyz         3     NONE   float   xyz 
// LightDir                 0   xyz         4     NONE   float   xyz 
// TexCoords                0   xyzw        5     NONE   float   xyzw
//
vs_4_0
dcl_constantbuffer cb0[1], immediateIndexed
dcl_constantbuffer cb1[15], immediateIndexed
dcl_input v0.xyz
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyz
dcl_output o3.xyz
dcl_output o4.xyz
dcl_output o5.xyzw
dcl_temps 2
mov r0.xyz, v0.xyzx
mov r0.w, l(1.000000)
dp4 r1.x, cb1[0].xyzw, r0.xyzw
dp4 r1.y, cb1[1].xyzw, r0.xyzw
dp4 r1.z, cb1[2].xyzw, r0.xyzw
dp4 r1.w, cb1[3].xyzw, r0.xyzw
dp4 r0.x, cb1[4].xyzw, r1.xyzw
dp4 r0.y, cb1[5].xyzw, r1.xyzw
dp4 r0.z, cb1[6].xyzw, r1.xyzw
dp4 r0.w, cb1[7].xyzw, r1.xyzw
mov o1.xyzw, r1.xyzw
dp4 r1.x, cb1[8].xyzw, r0.xyzw
dp4 r1.y, cb1[9].xyzw, r0.xyzw
dp4 r1.z, cb1[10].xyzw, r0.xyzw
dp4 r1.w, cb1[11].xyzw, r0.xyzw
mov o0.xyzw, r1.xyzw
mov o5.xyzw, r1.xyzw
mov r0.xyz, cb0[0].xyzx
mov r0.w, l(1.000000)
dp4 o2.x, cb1[4].xyzw, r0.xyzw
dp4 o2.y, cb1[5].xyzw, r0.xyzw
dp4 o2.z, cb1[6].xyzw, r0.xyzw
mov o3.xyz, cb0[0].xyzx
mov r0.x, cb1[12].z
mov r0.y, cb1[13].z
mov r0.z, cb1[14].z
dp3 o4.x, cb1[4].xyzx, r0.xyzx
dp3 o4.y, cb1[5].xyzx, r0.xyzx
dp3 o4.z, cb1[6].xyzx, r0.xyzx
ret 
// Approximately 30 instruction slots used

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