//MGS2 lens flares VS 1. Also 3D smoke.
// ---- Created with 3Dmigoto v0.6.181 on Mon Nov  6 19:34:57 2023

cbuffer _Globals : register(b0)
{
  row_major float4x4 gVS_Projection : packoffset(c300);
  int gPs_AlphaTestEnable : packoffset(c304);
  int gPs_AlphaTestType : packoffset(c305);
  float gPs_AlphaTestRefValue : packoffset(c306);
  float gPs_AlphaTestThreshold : packoffset(c307);
  int gPs_MultiSampleMaskEnable : packoffset(c308);
  int gPs_MultiSampleMask : packoffset(c309);
  float4 gVS_FogColor : packoffset(c0);
  float4 gVS_FogParam : packoffset(c1);
  row_major float4x4 gVS_LightDir : packoffset(c2);
  row_major float4x4 gVS_LightCol : packoffset(c6);
  float4 gVS_Sampler0Info : packoffset(c10);
  float4 gVS_EnvmapParams : packoffset(c11);
  row_major float4x4 gVS_Screen : packoffset(c16);
  row_major float4x4 gVS_Pers : packoffset(c20);
  float4 gVS_UVScaleOffset : packoffset(c24);
  row_major float4x4 g_View : packoffset(c310);
  row_major float4x4 g_ViewProjection : packoffset(c314);
  row_major float4x4 g_World : packoffset(c318);
  row_major float4x4 g_WorldViewProjection : packoffset(c322);
  row_major float4x3 g_JointWorld[32] : packoffset(c326);
  float4 g_RenderTargetDimensions : packoffset(c454);
  float4 g_RenderTargetNearFar : packoffset(c455);
  float4 g_RenderTargetDepthRange : packoffset(c456);
  float4 g_AdditiveColor : packoffset(c457);
  float4 g_ModulateColor : packoffset(c458);
  float4 g_EyePosition : packoffset(c459);
  float4 g_ExternalShaderParam : packoffset(c460);
  float4 g_LightColor0 : packoffset(c461);
  float4 g_LightPosition0 : packoffset(c462);
  float4 g_LightAttenuation0 : packoffset(c463);
  float4 g_LightColor1 : packoffset(c464);
  float4 g_LightPosition1 : packoffset(c465);
  float4 g_LightAttenuation1 : packoffset(c466);
  float4 g_LightColor2 : packoffset(c467);
  float4 g_LightPosition2 : packoffset(c468);
  float4 g_LightAttenuation2 : packoffset(c469);
  float4 g_LightColor3 : packoffset(c470);
  float4 g_LightPosition3 : packoffset(c471);
  float4 g_LightAttenuation3 : packoffset(c472);
  float4 g_LightColor4 : packoffset(c473);
  float4 g_LightPosition4 : packoffset(c474);
  float4 g_LightAttenuation4 : packoffset(c475);
  float4 g_LightColor5 : packoffset(c476);
  float4 g_LightPosition5 : packoffset(c477);
  float4 g_LightAttenuation5 : packoffset(c478);
  float4 g_LightColor6 : packoffset(c479);
  float4 g_LightPosition6 : packoffset(c480);
  float4 g_LightAttenuation6 : packoffset(c481);
  float4 g_LightColor7 : packoffset(c482);
  float4 g_LightPosition7 : packoffset(c483);
  float4 g_LightAttenuation7 : packoffset(c484);
  float4 gPS_FogColor : packoffset(c485);
}



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


void main(
  float4 v0 : POSITION0,
  int4 v1 : TEXCOORD0,
  float4 v2 : TEXCOORD1,
  out float4 o0 : SV_POSITION0,
  out float4 o1 : TEXCOORD0,
  out float4 o2 : TEXCOORD1)
{
  float4 r0,r1;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 stereo = StereoParams.Load(0);
  float4 iniparams3 = IniParams.Load(int2(3,0));
  
  r0.xyz = v0.xyz;
  r0.w = 1;
  r1.x = dot(gVS_Screen._m00_m01_m02_m03, r0.xyzw);
  r1.y = dot(gVS_Screen._m10_m11_m12_m13, r0.xyzw);
  r1.z = dot(gVS_Screen._m20_m21_m22_m23, r0.xyzw);
  r1.w = dot(gVS_Screen._m30_m31_m32_m33, r0.xyzw);
  o0.x = dot(gVS_Pers._m00_m01_m02_m03, r1.xyzw);
  o0.y = dot(gVS_Pers._m10_m11_m12_m13, r1.xyzw);
  o0.z = dot(gVS_Pers._m20_m21_m22_m23, r1.xyzw);
  o0.w = dot(gVS_Pers._m30_m31_m32_m33, r1.xyzw);
  r0.xyz = (int3)v1.xyz;
  
  if (o0.w!=1 && iniparams3.x==20) {
    //r0.x+=stereo.x*(r0.z-stereo.y*0.125)*gVS_UVScaleOffset.x*0.5;
  } else if (o0.w==1000 && iniparams3.x==21) {
    o0.x+=stereo.x*stereo.y*0.8;
  } else if (o0.w==51 && iniparams3.x==21) {
    o0.x+=stereo.x*stereo.y;
  }
  
  r0.xy = r0.xy / r0.zz;
  o1.xy = r0.xy * gVS_UVScaleOffset.xy + gVS_UVScaleOffset.zw;
  //o1.x+=stereo.x*0.5;
  o1.zw = float2(0,0);
  o2.xyzw = v2.xyzw + v2.xyzw;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v0.6.181 on Mon Nov  6 19:34:57 2023
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   row_major float4x4 gVS_Projection; // Offset: 4800 Size:    64 [unused]
//   int gPs_AlphaTestEnable;           // Offset: 4864 Size:     4 [unused]
//   int gPs_AlphaTestType;             // Offset: 4880 Size:     4 [unused]
//   float gPs_AlphaTestRefValue;       // Offset: 4896 Size:     4 [unused]
//   float gPs_AlphaTestThreshold;      // Offset: 4912 Size:     4 [unused]
//   int gPs_MultiSampleMaskEnable;     // Offset: 4928 Size:     4 [unused]
//   int gPs_MultiSampleMask;           // Offset: 4944 Size:     4 [unused]
//   float4 gVS_FogColor;               // Offset:    0 Size:    16 [unused]
//   float4 gVS_FogParam;               // Offset:   16 Size:    16 [unused]
//   row_major float4x4 gVS_LightDir;   // Offset:   32 Size:    64 [unused]
//   row_major float4x4 gVS_LightCol;   // Offset:   96 Size:    64 [unused]
//   float4 gVS_Sampler0Info;           // Offset:  160 Size:    16 [unused]
//   float4 gVS_EnvmapParams;           // Offset:  176 Size:    16 [unused]
//   row_major float4x4 gVS_Screen;     // Offset:  256 Size:    64
//   row_major float4x4 gVS_Pers;       // Offset:  320 Size:    64
//   float4 gVS_UVScaleOffset;          // Offset:  384 Size:    16
//   row_major float4x4 g_View;         // Offset: 4960 Size:    64 [unused]
//   row_major float4x4 g_ViewProjection;// Offset: 5024 Size:    64 [unused]
//   row_major float4x4 g_World;        // Offset: 5088 Size:    64 [unused]
//   row_major float4x4 g_WorldViewProjection;// Offset: 5152 Size:    64 [unused]
//   row_major float4x3 g_JointWorld[32];// Offset: 5216 Size:  2044 [unused]
//   float4 g_RenderTargetDimensions;   // Offset: 7264 Size:    16 [unused]
//   float4 g_RenderTargetNearFar;      // Offset: 7280 Size:    16 [unused]
//   float4 g_RenderTargetDepthRange;   // Offset: 7296 Size:    16 [unused]
//   float4 g_AdditiveColor;            // Offset: 7312 Size:    16 [unused]
//   float4 g_ModulateColor;            // Offset: 7328 Size:    16 [unused]
//   float4 g_EyePosition;              // Offset: 7344 Size:    16 [unused]
//   float4 g_ExternalShaderParam;      // Offset: 7360 Size:    16 [unused]
//   float4 g_LightColor0;              // Offset: 7376 Size:    16 [unused]
//   float4 g_LightPosition0;           // Offset: 7392 Size:    16 [unused]
//   float4 g_LightAttenuation0;        // Offset: 7408 Size:    16 [unused]
//   float4 g_LightColor1;              // Offset: 7424 Size:    16 [unused]
//   float4 g_LightPosition1;           // Offset: 7440 Size:    16 [unused]
//   float4 g_LightAttenuation1;        // Offset: 7456 Size:    16 [unused]
//   float4 g_LightColor2;              // Offset: 7472 Size:    16 [unused]
//   float4 g_LightPosition2;           // Offset: 7488 Size:    16 [unused]
//   float4 g_LightAttenuation2;        // Offset: 7504 Size:    16 [unused]
//   float4 g_LightColor3;              // Offset: 7520 Size:    16 [unused]
//   float4 g_LightPosition3;           // Offset: 7536 Size:    16 [unused]
//   float4 g_LightAttenuation3;        // Offset: 7552 Size:    16 [unused]
//   float4 g_LightColor4;              // Offset: 7568 Size:    16 [unused]
//   float4 g_LightPosition4;           // Offset: 7584 Size:    16 [unused]
//   float4 g_LightAttenuation4;        // Offset: 7600 Size:    16 [unused]
//   float4 g_LightColor5;              // Offset: 7616 Size:    16 [unused]
//   float4 g_LightPosition5;           // Offset: 7632 Size:    16 [unused]
//   float4 g_LightAttenuation5;        // Offset: 7648 Size:    16 [unused]
//   float4 g_LightColor6;              // Offset: 7664 Size:    16 [unused]
//   float4 g_LightPosition6;           // Offset: 7680 Size:    16 [unused]
//   float4 g_LightAttenuation6;        // Offset: 7696 Size:    16 [unused]
//   float4 g_LightColor7;              // Offset: 7712 Size:    16 [unused]
//   float4 g_LightPosition7;           // Offset: 7728 Size:    16 [unused]
//   float4 g_LightAttenuation7;        // Offset: 7744 Size:    16 [unused]
//   float4 gPS_FogColor;               // Offset: 7760 Size:    16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyzw        0     NONE   float   xyz
// TEXCOORD                 0   xyz         1     NONE     int   xyz
// TEXCOORD                 1   xyzw        2     NONE   float   xyzw
//
//
// 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                 1   xyzw        2     NONE   float   xyzw
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[25], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xyz
dcl_input v2.xyzw
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_temps 2
mov r0.xyz, v0.xyzx
mov r0.w, l(1.000000)
dp4 r1.x, cb0[16].xyzw, r0.xyzw
dp4 r1.y, cb0[17].xyzw, r0.xyzw
dp4 r1.z, cb0[18].xyzw, r0.xyzw
dp4 r1.w, cb0[19].xyzw, r0.xyzw
dp4 o0.x, cb0[20].xyzw, r1.xyzw
dp4 o0.y, cb0[21].xyzw, r1.xyzw
dp4 o0.z, cb0[22].xyzw, r1.xyzw
dp4 o0.w, cb0[23].xyzw, r1.xyzw
itof r0.xyz, v1.xyzx
div r0.xy, r0.xyxx, r0.zzzz
mad o1.xy, r0.xyxx, cb0[24].xyxx, cb0[24].zwzz
mov o1.zw, l(0,0,0,0)
add o2.xyzw, v2.xyzw, v2.xyzw
ret
// Approximately 16 instruction slots used

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