// icon name PS

cbuffer _Globals : register(b0)
{
  float4 g_vStringPos : packoffset(c0);
  float4 cv1 : packoffset(c1);
  float4 g_vCellSize : packoffset(c2);
  float4 g_vRotation : packoffset(c3);
  float4 g_avChars[64] : packoffset(c4);
  float4 g_avOffsets[64] : packoffset(c68);
  float4 g_vColor : packoffset(c132) = {1,1,1,1};
  float4 g_avMask[4] : packoffset(c133) = {	{1,0,0,0},
											{0,1,0,0},
											{0,0,1,0},
											{0,0,0,1}
										};
}

// constant buffer injected by 3dmigoto
cbuffer _Globals : register(b12)
{
  float4 g_vCamPos1 : packoffset(c37);
}

cbuffer _Globals : register(b13)
{
  float4 g_vCamPos2 : packoffset(c37);
}

SamplerState mySampler_s : register(s0);
Texture2D<float4> mySampler : register(t0);

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

void main( 
  float4 v0 : SV_Position0,
  float2 v1 : TEXCOORD0,
  out float4 o0 : SV_Target0)
{
  float4 r0;
  uint4 bitmask, uiDest;
  float4 fDest;
 
float2 tmp; 
float4 filter;
uint width;
uint height;
float zoomFactor = IniParams.Load(0).w; // zoom factor
float FovXshift = IniParams.Load(int2(6, 0)).x;
float zoomShift = IniParams.Load(int2(6, 0)).y;

float flagOff = IniParams.Load(int2(7, 0)).w;
float flagWaypt = IniParams.Load(int2(7, 0)).z; // Waypoint toggle

 if ((g_vCamPos2.x + g_vCamPos2.y + g_vCamPos2.z) != (g_vCamPos1.x + g_vCamPos1.y + g_vCamPos1.z)) {
	// Right Eye
	FovXshift += zoomShift;
	}
	else  {
	// Left eye
	FovXshift = -FovXshift;
	FovXshift -= zoomShift;
	}

  r0.xyzw = mySampler.Sample(mySampler_s, v1.xy).xyzw;
  r0.x = cmp(0 >= r0.y);
  if (r0.x != 0) {
    if (-1 != 0) discard;
  }
  o0.w = g_vColor.w * r0.y;
  o0.xyz = g_vColor.xyz;

t16.GetDimensions(width, height); 

	tmp.x = v0.x/2 - FovXshift*width/2;
	tmp.y = v0.y/2;
  filter = t16.Load(int3(tmp.xy, 0)); 
  
  if (filter.w == 1 && flagOff == 1 )  o0.w=0.0;  
  
  //filter for waypt marker color
   if (flagWaypt == 1 && g_vColor.x > 0.6 && g_vColor.y > 0.6 && g_vColor.z == 0)  o0.w=0;
  
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.2.57 on Thu Jul 27 13:46:26 2017
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   float4 g_vStringPos;               // Offset:    0 Size:    16 [unused]
//   float4 cv1;                        // Offset:   16 Size:    16 [unused]
//   float4 g_vCellSize;                // Offset:   32 Size:    16 [unused]
//   float4 g_vRotation;                // Offset:   48 Size:    16 [unused]
//   float4 g_avChars[64];              // Offset:   64 Size:  1024 [unused]
//   float4 g_avOffsets[64];            // Offset: 1088 Size:  1024 [unused]
//   float4 g_vColor;                   // Offset: 2112 Size:    16
//      = 0x3f800000 0x3f800000 0x3f800000 0x3f800000 
//   float4 g_avMask[4];                // Offset: 2128 Size:    64 [unused]
//      = 0x3f800000 0x00000000 0x00000000 0x00000000 
//        0x00000000 0x3f800000 0x00000000 0x00000000 
//        0x00000000 0x00000000 0x3f800000 0x00000000 
//        0x00000000 0x00000000 0x00000000 0x3f800000 
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// mySampler                         sampler      NA          NA    0        1
// mySampler                         texture  float4          2d    0        1
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float       
// TEXCOORD                 0   xy          1     NONE   float   xy  
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_0
dcl_constantbuffer cb0[133], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_input_ps linear v1.xy
dcl_output o0.xyzw
dcl_temps 1
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
ge r0.x, l(0.000000), r0.y
if_nz r0.x
  discard_nz l(-1)
endif 
mul o0.w, r0.y, cb0[132].w
mov o0.xyz, cb0[132].xyzx
ret 
// Approximately 8 instruction slots used

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