// ---- Created with geo-11 v0.7.10 on Sun Aug 23 14:28:11 2026

cbuffer SceneParameters : register(b0)
{
  row_major float4x4 View : packoffset(c0);
  row_major float4x4 Projection : packoffset(c4);
  row_major float4x4 InverseView : packoffset(c8);
  row_major float4x4 PreviousView : packoffset(c12);
  float3 LightDirection : packoffset(c16);
  float4 LightAmbient : packoffset(c17);
  float4 LightDiffuse : packoffset(c18);
  float4 LightSpecular : packoffset(c19);
  row_major float4x4 LightView : packoffset(c20);
  row_major float4x4 LightProjection : packoffset(c24);
  float2 FogRange : packoffset(c28) = {5000,10000};
  float4 FogColor : packoffset(c29);
  float4 ColorGain : packoffset(c30);
  float4 ColorBias : packoffset(c31);
  float4 ColorContrast : packoffset(c32);
  float4 ColorGamma : packoffset(c33);
  float ColorSaturation : packoffset(c34);
  float ShadowBias : packoffset(c34.y);
  float SceneTime : packoffset(c34.z);
}

cbuffer PerMeshParameters : register(b1)
{
  row_major float4x4 World : packoffset(c0);
  row_major float4x4 InverseWorld : packoffset(c4);
  row_major float4x4 PreviousWorld : packoffset(c8);
  float4 MeshFogColor : packoffset(c12);
  float4 SpecialColor : packoffset(c13);
}



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


void main(
  float3 v0 : SV_Position0,
  float3 v1 : NORMAL0,
  float2 v2 : TEXCOORD0,
  out float4 o0 : SV_Position0,
  out float4 o1 : NORMAL0,
  out float3 o2 : NORMAL1,
  out float3 o3 : NORMAL2,
  out float3 o4 : POSITION1)
{
  float4 r0,r1,r2,r3;
  uint4 bitmask, uiDest;
  float4 fDest;
  float4 stereo = StereoParams.Load(0);

  //r0.x += stereo.x * (stereo.y * r0.w - 1);

  r0.xyz = World._m31_m31_m31 * View._m10_m11_m12;
  r0.xyz = World._m30_m30_m30 * View._m00_m01_m02 + r0.xyz;
  r0.xyz = World._m32_m32_m32 * View._m20_m21_m22 + r0.xyz;
  r0.xyz = World._m33_m33_m33 * View._m30_m31_m32 + r0.xyz;
  r1.xyz = World._m11_m11_m11 * View._m10_m11_m12;
  r1.xyz = World._m10_m10_m10 * View._m00_m01_m02 + r1.xyz;
  r1.xyz = World._m12_m12_m12 * View._m20_m21_m22 + r1.xyz;
  r1.xyz = World._m13_m13_m13 * View._m30_m31_m32 + r1.xyz;
  r2.xyz = v0.yyy * r1.xyz;
  r1.xyz = v1.yyy * r1.xyz;
  r3.xyz = World._m01_m01_m01 * View._m10_m11_m12;
  r3.xyz = World._m00_m00_m00 * View._m00_m01_m02 + r3.xyz;
  r3.xyz = World._m02_m02_m02 * View._m20_m21_m22 + r3.xyz;
  r3.xyz = World._m03_m03_m03 * View._m30_m31_m32 + r3.xyz;
  r2.xyz = v0.xxx * r3.xyz + r2.xyz;
  r1.xyz = v1.xxx * r3.xyz + r1.xyz;
  r3.xyz = World._m21_m21_m21 * View._m10_m11_m12;
  r3.xyz = World._m20_m20_m20 * View._m00_m01_m02 + r3.xyz;
  r3.xyz = World._m22_m22_m22 * View._m20_m21_m22 + r3.xyz;
  r3.xyz = World._m23_m23_m23 * View._m30_m31_m32 + r3.xyz;
  r2.xyz = v0.zzz * r3.xyz + r2.xyz;
  r1.xyz = v1.zzz * r3.xyz + r1.xyz;
  r0.xyz = r2.xyz + r0.xyz;
  r2.xyzw = Projection._m10_m11_m12_m13 * r0.yyyy;
  r2.xyzw = r0.xxxx * Projection._m00_m01_m02_m03 + r2.xyzw;
  r2.xyzw = r0.zzzz * Projection._m20_m21_m22_m23 + r2.xyzw;
  o4.xyz = r0.xyz;
  r0.xyzw = Projection._m30_m31_m32_m33 + r2.xyzw;

  o0.xyzw = r0.xyzw;
  o1.xyzw = r0.xyzw;
  r0.x = dot(r1.xyz, r1.xyz);
  r0.x = rsqrt(r0.x);
  o2.xyz = r1.xyz * r0.xxx;
  r0.xyz = LightDirection.yyy * View._m10_m11_m12;
  r0.xyz = LightDirection.xxx * View._m00_m01_m02 + r0.xyz;
  r0.xyz = LightDirection.zzz * View._m20_m21_m22 + r0.xyz;
  o3.xyz = -r0.xyz;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.7.10 on Sun Aug 23 14:28:11 2026
//
//
// Buffer Definitions:
//
// cbuffer SceneParameters
// {
//
//   row_major float4x4 View;           // Offset:    0 Size:    64
//   row_major float4x4 Projection;     // Offset:   64 Size:    64
//   row_major float4x4 InverseView;    // Offset:  128 Size:    64 [unused]
//   row_major float4x4 PreviousView;   // Offset:  192 Size:    64 [unused]
//   float3 LightDirection;             // Offset:  256 Size:    12
//   float4 LightAmbient;               // Offset:  272 Size:    16 [unused]
//   float4 LightDiffuse;               // Offset:  288 Size:    16 [unused]
//   float4 LightSpecular;              // Offset:  304 Size:    16 [unused]
//   row_major float4x4 LightView;      // Offset:  320 Size:    64 [unused]
//   row_major float4x4 LightProjection;// Offset:  384 Size:    64 [unused]
//   float2 FogRange;                   // Offset:  448 Size:     8 [unused]
//      = 0x459c4000 0x461c4000
//   float4 FogColor;                   // Offset:  464 Size:    16 [unused]
//   float4 ColorGain;                  // Offset:  480 Size:    16 [unused]
//   float4 ColorBias;                  // Offset:  496 Size:    16 [unused]
//   float4 ColorContrast;              // Offset:  512 Size:    16 [unused]
//   float4 ColorGamma;                 // Offset:  528 Size:    16 [unused]
//   float ColorSaturation;             // Offset:  544 Size:     4 [unused]
//   float ShadowBias;                  // Offset:  548 Size:     4 [unused]
//   float SceneTime;                   // Offset:  552 Size:     4 [unused]
//
// }
//
// cbuffer PerMeshParameters
// {
//
//   row_major float4x4 World;          // Offset:    0 Size:    64
//   row_major float4x4 InverseWorld;   // Offset:   64 Size:    64 [unused]
//   row_major float4x4 PreviousWorld;  // Offset:  128 Size:    64 [unused]
//   float4 MeshFogColor;               // Offset:  192 Size:    16 [unused]
//   float4 SpecialColor;               // Offset:  208 Size:    16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// SceneParameters                   cbuffer      NA          NA    0        1
// PerMeshParameters                 cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyz         0     NONE   float   xyz
// NORMAL                   0   xyz         1     NONE   float   xyz
// TEXCOORD                 0   xy          2     NONE   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xyzw
// NORMAL                   0   xyzw        1     NONE   float   xyzw
// NORMAL                   1   xyz         2     NONE   float   xyz
// NORMAL                   2   xyz         3     NONE   float   xyz
// POSITION                 1   xyz         4     NONE   float   xyz
//
vs_4_0
dcl_constantbuffer CB0[17], immediateIndexed
dcl_constantbuffer CB1[4], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xyz
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyz
dcl_output o3.xyz
dcl_output o4.xyz
dcl_temps 4
mul r0.xyz, cb0[1].xyzx, cb1[3].yyyy
mad r0.xyz, cb1[3].xxxx, cb0[0].xyzx, r0.xyzx
mad r0.xyz, cb1[3].zzzz, cb0[2].xyzx, r0.xyzx
mad r0.xyz, cb1[3].wwww, cb0[3].xyzx, r0.xyzx
mul r1.xyz, cb0[1].xyzx, cb1[1].yyyy
mad r1.xyz, cb1[1].xxxx, cb0[0].xyzx, r1.xyzx
mad r1.xyz, cb1[1].zzzz, cb0[2].xyzx, r1.xyzx
mad r1.xyz, cb1[1].wwww, cb0[3].xyzx, r1.xyzx
mul r2.xyz, r1.xyzx, v0.yyyy
mul r1.xyz, r1.xyzx, v1.yyyy
mul r3.xyz, cb0[1].xyzx, cb1[0].yyyy
mad r3.xyz, cb1[0].xxxx, cb0[0].xyzx, r3.xyzx
mad r3.xyz, cb1[0].zzzz, cb0[2].xyzx, r3.xyzx
mad r3.xyz, cb1[0].wwww, cb0[3].xyzx, r3.xyzx
mad r2.xyz, v0.xxxx, r3.xyzx, r2.xyzx
mad r1.xyz, v1.xxxx, r3.xyzx, r1.xyzx
mul r3.xyz, cb0[1].xyzx, cb1[2].yyyy
mad r3.xyz, cb1[2].xxxx, cb0[0].xyzx, r3.xyzx
mad r3.xyz, cb1[2].zzzz, cb0[2].xyzx, r3.xyzx
mad r3.xyz, cb1[2].wwww, cb0[3].xyzx, r3.xyzx
mad r2.xyz, v0.zzzz, r3.xyzx, r2.xyzx
mad r1.xyz, v1.zzzz, r3.xyzx, r1.xyzx
add r0.xyz, r0.xyzx, r2.xyzx
mul r2.xyzw, r0.yyyy, cb0[5].xyzw
mad r2.xyzw, r0.xxxx, cb0[4].xyzw, r2.xyzw
mad r2.xyzw, r0.zzzz, cb0[6].xyzw, r2.xyzw
mov o4.xyz, r0.xyzx
add r0.xyzw, r2.xyzw, cb0[7].xyzw
mov o0.xyzw, r0.xyzw
mov o1.xyzw, r0.xyzw
dp3 r0.x, r1.xyzx, r1.xyzx
rsq r0.x, r0.x
mul o2.xyz, r0.xxxx, r1.xyzx
mul r0.xyz, cb0[1].xyzx, cb0[16].yyyy
mad r0.xyz, cb0[16].xxxx, cb0[0].xyzx, r0.xyzx
mad r0.xyz, cb0[16].zzzz, cb0[2].xyzx, r0.xyzx
mov o3.xyz, -r0.xyzx
ret
// Approximately 38 instruction slots used

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