// CONTRAST 2

cbuffer _Globals : register(b0)
{
  float4 lightCount : packoffset(c0);
  float4 ambient : packoffset(c1);
  float4 lightInfo[4] : packoffset(c2);
  float4 g_vScreenDepthRect : packoffset(c6);
  float4 g_vDitherSettings : packoffset(c7);
  float4 g_ColorK : packoffset(c8) = {0.270000011,0.670000017,0.0599999987,0};
  float4 g_vLevelMin0 : packoffset(c9) = {0.0500000007,0.0500000007,0.0500000007,0};
  float4 g_vLevelMin1 : packoffset(c10) = {0.100000001,0.100000001,0.100000001,0};
  float4 g_vLevelMax : packoffset(c11) = {0.800000012,0.800000012,0.800000012,0};
  float4 g_vMaxAdd : packoffset(c12) = {0.100000001,0.100000001,0.100000001,0};
  float4 g_vMinSub : packoffset(c13) = {0.0199999996,0.0199999996,0.0199999996,0};
  float4 Color : packoffset(c14);
  float4 Settings : packoffset(c15);
  float4 Settings2 : packoffset(c16);
  float4 Settings3 : packoffset(c17);
  float4 Settings4 : packoffset(c18);
  float4 Transform : packoffset(c19);
  float4 g_vDepthCoordsClamp : packoffset(c20);
  float4 CamPos : packoffset(c21);
  float4 g_vCenterOffs : packoffset(c22);
  float4 g_vHFrustrum : packoffset(c23);
  float4 g_vVFrustrum : packoffset(c24);
  float4 g_avNoise[8] : packoffset(c25);
  float4x4 g_mView : packoffset(c33);
  float4 g_PixelsDir[8] : packoffset(c37);
  float4 g_vHistogramBoundLow : packoffset(c45) = {0,0.0160000008,0.0260000005,0.129999995};
  float4 g_vHistogramBoundHigh : packoffset(c46) = {0.0160000008,0.0260000005,0.129999995,0.409999996};
}

SamplerState DiffuseSamplerPoint_s : register(s0);
Texture2D<float4> DiffuseSamplerPoint : register(t0);


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


void main(
  float4 v0 : SV_Position0,
  float2 v1 : TEXCOORD0,
  float2 w1 : TEXCOORD1,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4;
  uint4 bitmask, uiDest;
  float4 fDest;

//  r0.x = 9 * Settings.y;
//  r0.yzw = r0.xxx;
//  r1.x = 0;
//  while (true) {
//    r1.y = cmp(r1.x >= 4);
//    if (r1.y != 0) break;
//    r2.y = r1.x * Settings.x + v1.y;
//    r3.xy = r0.yz;
//    r3.z = 0;
//    r1.y = r0.w;
//    while (true) {
//      r1.z = cmp(r3.z >= 4);
//      if (r1.z != 0) break;
//      r1.zw = Settings.yy * r3.xy;
//      r2.x = r3.z * Settings.x + v1.x;
//      r4.xyzw = DiffuseSamplerPoint.Sample(DiffuseSamplerPoint_s, r2.xy).xyzw;
//      r2.xzw = Settings.yyy * r4.xyz;
//      r1.zw = cmp(r2.xz < r1.zw);
//      if (r1.z != 0) {
//        r3.x = r4.x;
//      }
//      if (r1.w != 0) {
//        r3.y = r4.y;
//      }
//      r1.z = Settings.y * r1.y;
//      r1.z = cmp(r2.w < r1.z);
//      if (r1.z != 0) {
//        r1.y = r4.z;
//      }
//      r3.z = 1 + r3.z;
//    }
//    r0.yz = r3.xy;
//    r0.w = r1.y;
//    r1.x = 1 + r1.x;
//  }
// o0.xyz = r0.yzw;
o0.xyzw = 0;
// o0.w = 0;
  return;
}
