//Triangle Strategy water PS border.
// ---- Created with 3Dmigoto v1.3.16 on Thu Nov 24 23:53:35 2022
Texture2D<float4> t0 : register(t0);

SamplerState s0_s : register(s0);

cbuffer cb1 : register(b1)
{
  float4 cb1[39];
}

cbuffer cb0 : register(b0)
{
  float4 cb0[144];
}




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


void main(
  float4 v0 : SV_Position0,
  float4 v1 : COLOR0,
  uint v2 : SV_IsFrontFace0,
  out float4 o0 : SV_Target0,
  out uint oMask : SV_Coverage)
{
  float4 r0,r1,r10;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 stereo = StereoParams.Load(0);
  
  float4 x0[16];
  x0[0].x = 0.65882355;
  x0[1].x = 0.282352954;
  x0[2].x = 0.533333361;
  x0[3].x = 0.407843143;
  x0[4].x = 0;
  x0[5].x = 0.784313738;
  x0[6].x = 0.156862751;
  x0[7].x = 0.909803927;
  x0[8].x = 0.596078455;
  x0[9].x = 0.470588237;
  x0[10].x = 0.721568644;
  x0[11].x = 0.345098048;
  x0[12].x = 0.219607845;
  x0[13].x = 0.972549021;
  x0[14].x = 0.0941176489;
  x0[15].x = 0.847058833;
  r0.xy = -cb0[129].xy + v0.xy;
  r0.xy = (uint2)r0.xy;
  bitmask.y = ((~(-1 << 2)) << 2) & 0xffffffff;  r0.y = (((uint)r0.y << 2) & bitmask.y) | ((uint)0 & ~bitmask.y);
  bitmask.x = ((~(-1 << 2)) << 0) & 0xffffffff;  r0.x = (((uint)r0.x << 0) & bitmask.x) | ((uint)r0.y & ~bitmask.x);
  r0.x = x0[r0.x+0].x;
  
  r10.yzw = cb0[45].xyw * v0.yyy;
  r10.yzw = v0.xxx * cb0[44].xyw + r10.yzw;
  r10.yzw = v0.zzz * cb0[46].xyw + r10.yzw;
  r10.yzw = cb0[47].xyw + r10.yzw;
  
  v0.x+=stereo.x*(r10.w*stereo.y-1)*cb0[130].x*0.5;
  
  r0.yzw = cb0[45].xyw * v0.yyy;
  r0.yzw = v0.xxx * cb0[44].xyw + r0.yzw;
  r0.yzw = v0.zzz * cb0[46].xyw + r0.yzw;
  r0.yzw = cb0[47].xyw + r0.yzw;
  r0.yz = r0.yz / r0.ww;
  r0.yz = -cb0[70].xy + r0.yz;
  r0.yz = r0.yz / cb1[38].xx;
  r0.y = t0.SampleBias(s0_s, r0.yz, cb0[143].y).z;
  r0.z = cb1[38].y + -cb1[38].z;
  r0.y = saturate(r0.y * r0.z + cb1[38].z);
  r0.y = v1.w + r0.y;
  r0.y = -1 + r0.y;
  r0.y = cb1[38].w * r0.y + v1.w;
  r0.x = r0.y + -r0.x;
  r0.y = cmp(0 < r0.x);
  r0.x = cmp(r0.x < 0);
  r0.x = (int)-r0.y + (int)r0.x;
  r0.x = (int)r0.x;
  r0.x = saturate(r0.x);
  r0.x = -0.333299994 + r0.x;
  r1.xyzw = cmp(float4(0.00666699978,0.166675001,0.333350003,0.500024974) < r0.xxxx);
  r0.y = r1.x ? 0.000000 : 0;
  r0.y = r1.y ? 9 : r0.y;
  r0.y = r1.z ? 13 : r0.y;
  r0.z = (uint)r0.y;
  r0.z = -0.5 + r0.z;
  r0.xz = cmp(r0.xz < float2(0,0));
  r0.z = r1.w ? 0 : r0.z;
  r0.w = cmp(1 < asint(cb0[135].x));
  r0.z = r0.w ? r0.z : 0;
  r0.w = ~(int)r0.w;
  if (r0.z != 0) discard;
  r0.x = r0.w ? r0.x : 0;
  r0.z = (int)r0.w | (int)r1.w;
  oMask = r0.z ? 15 : r0.y;
  if (r0.x != 0) discard;
  o0.xyzw = float4(0,0,0,0);
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Thu Nov 24 23:53:35 2022
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xyz
// COLOR                    0   xyzw        1     NONE   float      w
// SV_IsFrontFace           0   x           2    FFACE    uint
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Coverage              0    N/A    oMask COVERAGE    uint    YES
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[144], immediateIndexed
dcl_constantbuffer cb1[39], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_input_ps_siv linear noperspective v0.xyz, position
dcl_input_ps linear v1.w
dcl_output o0.xyzw
dcl_output oMask
dcl_temps 2
dcl_indexableTemp x0[16], 4
mov x0[0].x, l(0.658823550)
mov x0[1].x, l(0.282352954)
mov x0[2].x, l(0.533333361)
mov x0[3].x, l(0.407843143)
mov x0[4].x, l(0)
mov x0[5].x, l(0.784313738)
mov x0[6].x, l(0.156862751)
mov x0[7].x, l(0.909803927)
mov x0[8].x, l(0.596078455)
mov x0[9].x, l(0.470588237)
mov x0[10].x, l(0.721568644)
mov x0[11].x, l(0.345098048)
mov x0[12].x, l(0.219607845)
mov x0[13].x, l(0.972549)
mov x0[14].x, l(0.0941176489)
mov x0[15].x, l(0.847058833)
add r0.xy, v0.xyxx, -cb0[129].xyxx
ftou r0.xy, r0.xyxx
bfi r0.y, l(2), l(2), r0.y, l(0)
bfi r0.x, l(2), l(0), r0.x, r0.y
mov r0.x, x0[r0.x + 0].x
mul r0.yzw, v0.yyyy, cb0[45].xxyw
mad r0.yzw, v0.xxxx, cb0[44].xxyw, r0.yyzw
mad r0.yzw, v0.zzzz, cb0[46].xxyw, r0.yyzw
add r0.yzw, r0.yyzw, cb0[47].xxyw
div r0.yz, r0.yyzy, r0.wwww
add r0.yz, r0.yyzy, -cb0[70].xxyx
div r0.yz, r0.yyzy, cb1[38].xxxx
sample_b_indexable(texture2d)(float,float,float,float) r0.y, r0.yzyy, t0.xzyw, s0, cb0[143].y
add r0.z, -cb1[38].z, cb1[38].y
mad_sat r0.y, r0.y, r0.z, cb1[38].z
add r0.y, r0.y, v1.w
add r0.y, r0.y, l(-1.000000)
mad r0.y, cb1[38].w, r0.y, v1.w
add r0.x, -r0.x, r0.y
lt r0.y, l(0.000000), r0.x
lt r0.x, r0.x, l(0.000000)
iadd r0.x, -r0.y, r0.x
itof r0.x, r0.x
mov_sat r0.x, r0.x
add r0.x, r0.x, l(-0.333300)
lt r1.xyzw, l(0.006667, 0.166675, 0.333350, 0.500025), r0.xxxx
and r0.y, r1.x, l(8)
movc r0.y, r1.y, l(9), r0.y
movc r0.y, r1.z, l(13), r0.y
utof r0.z, r0.y
add r0.z, r0.z, l(-0.500000)
lt r0.xz, r0.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r0.z, r1.w, l(0), r0.z
ilt r0.w, l(1), cb0[135].x
and r0.z, r0.w, r0.z
not r0.w, r0.w
discard_nz r0.z
and r0.x, r0.w, r0.x
or r0.z, r0.w, r1.w
movc oMask, r0.z, l(15), r0.y
discard_nz r0.x
mov o0.xyzw, l(0,0,0,0)
ret
// Approximately 0 instruction slots used

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