//HUD Icons
// ---- Created with 3Dmigoto v1.3.11 on Mon Aug 06 17:59:58 2018
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyz         0     NONE   float   xyz
// NORMAL                   0   xyz         1     NONE   float   xyz
// COLOR                    0   xyzw        2     NONE   float
// TEXCOORD                 0   xy          3     NONE   float   xy
// SV_VertexID              0   x           4   VERTID    uint
// SV_InstanceID            0   x           5   INSTID    uint   x
//
//
// 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
// TEXCOORD                 2   xyzw        3     NONE   float   xyzw
// TEXCOORD                 3   xyzw        4     NONE   float   xyzw
// TEXCOORD                 4   xyzw        5     NONE   float   xyzw
// InstanceID               0   x           6     NONE    uint   x
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb2[23], immediateIndexed
dcl_constantbuffer cb9[1], immediateIndexed
dcl_resource_buffer (float,float,float,float) t19
dcl_resource_structured t53, 4
dcl_input v0.xyz
dcl_input v1.xyz
dcl_input v3.xy
dcl_input_sgv v5.x, instance_id
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output o6.x

//insert
dcl_temps 28
// 3DMigoto StereoParams:
dcl_resource_texture1d (float,float,float,float) t120
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture1d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t120.xyzw
ld_indexable(texture1d)(float,float,float,float) r26.z, l(2, 0, 0, 0), t120.xyzw
ld_indexable(texture2d)(float,float,float,float) r27.xyzw, l(0, 0, 0, 0), t125.xyzw


iadd r0.x, v5.x, cb9[0].x
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.x, r0.x, l(0), t53.xxxx
ishl r0.y, r0.x, l(3)
mov o6.x, r0.x
ushr r0.x, r0.y, l(2)
iadd r0.x, r0.x, cb9[0].y
ld_indexable(buffer)(float,float,float,float) r0.x, r0.xxxx, t19.yxzw
iadd r0.yzw, r0.xxxx, l(0, 1, 2, 3)
ld_indexable(buffer)(float,float,float,float) r1.xyzw, r0.xxxx, t19.xyzw
ld_indexable(buffer)(float,float,float,float) r2.xyzw, r0.wwww, t19.xyzw
mov r3.w, r2.w
mov r4.x, r1.w
ld_indexable(buffer)(float,float,float,float) r5.xyzw, r0.yyyy, t19.xyzw
ld_indexable(buffer)(float,float,float,float) r0.xyzw, r0.zzzz, t19.xyzw
mov r4.y, r5.w
mov r4.z, r0.w
add r3.xyz, r4.xyzx, -cb2[22].xyzx
dp4 r4.w, r3.xyzw, cb2[18].xyzw
mov r6.w, r2.x
mov r6.y, r5.x
mov r6.z, r0.x
mov r6.x, r1.x
dp4 r4.x, r6.xyzw, cb2[18].xyzw
mov r7.w, r2.y
mov r7.y, r5.y
mov r7.z, r0.y
mov r7.x, r1.y
dp4 r4.y, r7.xyzw, cb2[18].xyzw
mov r8.w, r2.z
mov r8.y, r5.z
mov r8.z, r0.z
mov r8.x, r1.z
dp4 r4.z, r8.xyzw, cb2[18].xyzw
mov r9.xyz, v0.xyzx
mov r9.w, l(1.000000)


//fix Hud Depth
//mul r9.xyzw, r9.xyzw, r26.z

//Here I start using a register instead of o0 to save its results.
dp4 o0.x, r9.xyzw, r4.xyzw
dp4 r24.x, r9.xyzw, r4.xyzw

dp4 r4.w, r3.xyzw, cb2[19].xyzw
dp4 r4.x, r6.xyzw, cb2[19].xyzw
dp4 r4.y, r7.xyzw, cb2[19].xyzw
dp4 r4.z, r8.xyzw, cb2[19].xyzw

dp4 o0.y, r9.xyzw, r4.xyzw
dp4 r24.y, r9.xyzw, r4.xyzw

dp4 r4.w, r3.xyzw, cb2[20].xyzw
dp4 r3.w, r3.xyzw, cb2[21].xyzw
dp4 r4.x, r6.xyzw, cb2[20].xyzw
dp4 r3.x, r6.xyzw, cb2[21].xyzw
dp4 r4.y, r7.xyzw, cb2[20].xyzw
dp4 r3.y, r7.xyzw, cb2[21].xyzw
dp4 r4.z, r8.xyzw, cb2[20].xyzw
dp4 r3.z, r8.xyzw, cb2[21].xyzw

dp4 o0.w, r9.xyzw, r3.xyzw
dp4 r24.w, r9.xyzw, r3.xyzw
dp4 o0.z, r9.xyzw, r4.xyzw
dp4 r24.z, r9.xyzw, r4.xyzw

//w position minus convergence.
//add r27.w, r24.w, -r27.y

//The previous calculation is multiplied by separation and then substracted from the x axis.
//mad r24.x, r27.x, -r27.w, r24.x

//If 25.x is what you use as a depth multiplier.

ld_indexable(texture1d)(float,float,float,float) r50.x, l(2, 0, 0, 0), t120.xyzw
ld_indexable(texture1d)(float,float,float,float) r51.x, l(3, 0, 0, 0), t120.xyzw
//ne r50.x, l(0.000000, 0.000000, 0.000000, 0.000000), r50.x

//eq r55.x, r50.x, l(1.0)
//if_nz r55.x
mul r24.xyzw, r24.xyzw, l(1.5)
mul r24.xyzw, r24.xyzw, r51.x
//endif


//Copying r24 to o0 as a last step.
mov o0.xyzw, r24.xyzw




mov o1.xy, v3.xyxx
mov o1.zw, l(0,0,0,0)

dp4 o2.w, r9.xyzw, r2.xyzw
dp4 o2.y, r9.xyzw, r5.xyzw
dp4 o2.z, r9.xyzw, r0.xyzw
dp4 o2.x, r9.xyzw, r1.xyzw

mov o3.y, r7.y
mov o3.z, r0.y
mov o3.x, r1.y
mov o3.w, l(0)
mov o4.y, r5.x
dp3 o5.y, v1.xyzx, r5.xyzx
mov o4.z, r0.x
dp3 o5.z, v1.xyzx, r0.xyzx
mov o4.x, r6.x
dp3 o5.x, v1.xyzx, r1.xyzx
mov o4.w, l(0)
mov o5.w, l(0)
ret