//CULLING - no fix
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.11 on Sun Nov 18 11:56:17 2018
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float4 gFullScreenRenderTargetDimensionsCS;// Offset:    0 Size:    16
//   float4 gCSTestParam;               // Offset:   16 Size:    16 [unused]
//   float4 gLPVGridInfo[2];            // Offset:   32 Size:    32 [unused]
//   float4 gDeferredFogParams;         // Offset:   64 Size:    16 [unused]
//   float4 gLocalizedFogParams[5];     // Offset:   80 Size:    80 [unused]
//   row_major float4x4 gWaterRippleParams;// Offset:  160 Size:    64 [unused]
//   float4 gWaterRippleFilterParams[3];// Offset:  224 Size:    48 [unused]
//   float4 gHBAOCSParams[6];           // Offset:  272 Size:    96 [unused]
//   float4 gEdgeDetectParams[3];       // Offset:  368 Size:    48 [unused]
//   row_major float4x4 gMainSceneViewProj;// Offset:  416 Size:    64 [unused]
//   row_major float4x4 gMainSceneProj; // Offset:  480 Size:    64 [unused]
//   row_major float4x4 gMainSceneInvProj;// Offset:  544 Size:    64 [unused]
//   row_major float4x4 gMainSceneInvTransInvView;// Offset:  608 Size:    64 [unused]
//   float4 gSceenResClipDistances;     // Offset:  672 Size:    16 [unused]
//   row_major float4x4 gMainSceneInvViewProj;// Offset:  688 Size:    64 [unused]
//   float4 gTiledDeferredShadowMapTexelSize;// Offset:  752 Size:    16 [unused]
//   float4 gTiledDeferredMergeParams;  // Offset:  768 Size:    16 [unused]
//   float4 gPointInSpaceLightParams;   // Offset:  784 Size:    16 [unused]
//   row_major float4x4 gLumHistComputeParams;// Offset:  800 Size:    64 [unused]
//   float4 gLuminanceToExposureCS;     // Offset:  864 Size:    16 [unused]
//   float4 gHistogramToExposure;       // Offset:  880 Size:    16 [unused]
//   row_major float4x4 gToneMapOptionsCS;// Offset:  896 Size:    64 [unused]
//   float4 gCameraPositionCS;          // Offset:  960 Size:    16 [unused]
//   float4 gWriteColour;               // Offset:  976 Size:    16 [unused]
//   float4 gLightShadowStrengthCS;     // Offset:  992 Size:    16 [unused]
//   float4 gLightShadowParamsCS;       // Offset: 1008 Size:    16 [unused]
//   row_major float4x4 gInverseViewProjShadowCS;// Offset: 1024 Size:    64 [unused]
//   row_major float4x4 gShadowMapPackedParamsCS;// Offset: 1088 Size:    64 [unused]
//   row_major float4x4 gCascadeMinMaxDepthCS;// Offset: 1152 Size:    64 [unused]
//   float4 gCameraParametersCS[2];     // Offset: 1216 Size:    32 [unused]
//   float4 gPCFKernelScaleCS;          // Offset: 1248 Size:    16 [unused]
//   float4 gCascadedShadowLightMatricesCS[16];// Offset: 1264 Size:   256 [unused]
//   float4 gLightingExperimentCS[3];   // Offset: 1520 Size:    48 [unused]
//   float4 gFinalGatherCS[5];          // Offset: 1568 Size:    80 [unused]
//   row_major float4x4 gMainSceneView; // Offset: 1648 Size:    64 [unused]
//   float4 gViewportInfoCS;            // Offset: 1712 Size:    16 [unused]
//   float4 gAOParamsCS;                // Offset: 1728 Size:    16 [unused]
//   float4 gLightComponentTogglerCS[3];// Offset: 1744 Size:    48 [unused]
//   float4 gDirectLightingExtraParamsCS;// Offset: 1792 Size:    16 [unused]
//   row_major float4x4 gViewMatrixCS;  // Offset: 1808 Size:    64 [unused]
//   row_major float4x4 gClusteredLightingParamsCS;// Offset: 1872 Size:    64 [unused]
//   float4 gTiledDecalParams[2];       // Offset: 1936 Size:    32 [unused]
//   float4 gAOStrengthParams;          // Offset: 1968 Size:    16 [unused]
//   float4 gSkinSsaoColourParams;      // Offset: 1984 Size:    16 [unused]
//   float4 gHairSsaoColourParams;      // Offset: 2000 Size:    16 [unused]
//   float4 gFoliageSsaoColourParams;   // Offset: 2016 Size:    16 [unused]
//   row_major float4x4 gKeyLightParametersCS;// Offset: 2032 Size:    64 [unused]
//   row_major float4x4 gVolumetricKeyLightParams;// Offset: 2096 Size:    64 [unused]
//   float4 gAnisoParamsCS;             // Offset: 2160 Size:    16 [unused]
//   float4 gTranslucencyLightingDebugParamsCS;// Offset: 2176 Size:    16 [unused]
//
// }
//
// Resource bind info for output_depthbuffer
// {
//
//   float $Element;                    // Offset:    0 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// DepthBuffer                       texture  float4          2d    0        1
// output_depthbuffer                    UAV  struct         r/w    0        1
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Input
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Output
cs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[1], immediateIndexed
dcl_resource_texture2d (float,float,float,float) t0
dcl_uav_structured u0, 4
dcl_input vThreadGroupID.xy
dcl_input vThreadIDInGroup.xy
dcl_input vThreadID.xy
dcl_temps 17
//use T80 for stereo parameters - t125 allready used by game
dcl_resource_texture2d (float,float,float,float) t80
dcl_resource_texture1d (float,float,float,float) t75
dcl_tgsm_structured g0, 128, 8
dcl_tgsm_structured g1, 128, 8
//dcl_tgsm_structured g2, 128, 8
dcl_thread_group 32, 8, 1


ftou r0.xy, cb0[0].yxyy

ld_indexable(texture2d)(float,float,float,float) r12.xyzw, l(0, 0, 0, 0), t80.xyzw



ishl r1.xy, vThreadID.xyxx, l(1, 1, 0, 0)
uge r0.z, r1.x, r0.y
if_nz r0.z
  mov r0.z, l(-1)
else
  uge r0.z, r1.y, r0.x
endif



ld_indexable(texture1d)(float,float,float,float) r4.xyzw, l(1, 0, 0, 0), t75.xyzw
ieq r6.x, r4.y, l(1.000000)



mov r1.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r0.w, r1.xyww, t0.yzwx

//mul r0.w, r0.w, l(2.0)

if_nz r6.x
mul r0.w, r0.w, l(1.20)
endif



ge r2.x, r0.w, l(1.000000)
if_nz r2.x
  mov r0.w, l(0)
  mov r2.x, l(1)
else
  mov r2.x, l(0)

  endif
ld_aoffimmi_indexable(1,0,0)(texture2d)(float,float,float,float) r2.y, r1.xyww, t0.yxzw
ge r2.z, r2.y, l(1.000000)
if_nz r2.z
  iadd r2.x, r2.x, l(1)
  mov r2.y, l(0)
endif
ld_aoffimmi_indexable(0,1,0)(texture2d)(float,float,float,float) r2.z, r1.xyww, t0.yzxw
ge r2.w, r2.z, l(1.000000)
if_nz r2.w
  iadd r2.x, r2.x, l(1)
  mov r2.z, l(0)
endif
ld_aoffimmi_indexable(1,1,0)(texture2d)(float,float,float,float) r1.z, r1.xyzw, t0.yzxw
ge r1.w, r1.z, l(1.000000)
if_nz r1.w
  iadd r2.x, r2.x, l(1)
  mov r1.z, l(0)
endif
if_z r0.z
  ishl r1.w, vThreadIDInGroup.x, l(2)
  max r0.w, r0.w, r2.y
  max r1.z, r1.z, r2.z
  max r0.w, r0.w, r1.z

  store_structured g0.x, vThreadIDInGroup.y, r1.w, r0.w
  store_structured g1.x, vThreadIDInGroup.y, r1.w, r2.x
  iadd r1.xy, r1.yxyy, l(2, 2, 0, 0)
  uge r1.xy, r1.xyxx, r0.xyxx
  if_nz r1.x
    iadd r0.x, vThreadIDInGroup.y, l(1)
    mov r1.x, r0.x
    loop
      uge r1.z, r1.x, l(8)
      breakc_nz r1.z
      store_structured g0.x, r1.x, r1.w, r0.w
      store_structured g1.x, r1.x, r1.w, r2.x
      iadd r1.x, r1.x, l(1)
    endloop
  endif
  if_nz r1.y
    ld_structured r0.x, vThreadIDInGroup.y, r1.w, g0.xxxx
    ld_structured r0.w, vThreadIDInGroup.y, r1.w, g1.xxxx
    iadd r1.x, vThreadIDInGroup.x, l(1)
    mov r1.y, r1.x
    loop
      uge r1.z, r1.y, l(8)
      breakc_nz r1.z
      ishl r1.z, r1.y, l(2)
      store_structured g0.x, vThreadIDInGroup.y, r1.z, r0.x
      store_structured g1.x, vThreadIDInGroup.y, r1.z, r0.w
      iadd r1.y, r1.y, l(1)
    endloop
  endif
endif
sync_g_t
if_nz r0.z
  ishl r0.x, vThreadIDInGroup.x, l(2)
  ld_structured r0.z, l(0), l(0), g0.xxxx
  store_structured g0.x, vThreadIDInGroup.y, r0.x, r0.z
endif
sync_g_t
and r0.x, vThreadIDInGroup.x, l(7)



ult r0.xzw, r0.xxxx, l(4, 0, 2, 1)

//fixsome flicker
//ult r1.xyzw, vThreadIDInGroup.yyyx, l(4, 2, 1, 4)
ult r1.xyzw, vThreadIDInGroup.yyyx, l(4, 2, 1, 4)
and r0.xzw, r0.xxzw, r1.xxyz



if_nz r0.x
  ishl r0.x, vThreadIDInGroup.x, l(2)
  ld_structured r1.x, vThreadIDInGroup.y, r0.x, g0.xxxx
  iadd r1.y, vThreadIDInGroup.y, l(4)
  ld_structured r1.z, r1.y, r0.x, g0.xxxx
  iadd r2.x, r0.x, l(64)
  ld_structured r2.y, vThreadIDInGroup.y, r2.x, g0.xxxx
  ld_structured r2.z, r1.y, r2.x, g0.xxxx
  ld_structured r2.w, vThreadIDInGroup.y, r0.x, g1.xxxx
  ld_structured r3.x, r1.y, r0.x, g1.xxxx
  iadd r2.w, r2.w, r3.x
  ld_structured r3.x, vThreadIDInGroup.y, r2.x, g1.xxxx
  iadd r2.w, r2.w, r3.x
  ld_structured r1.y, r1.y, r2.x, g1.xxxx
  iadd r1.y, r1.y, r2.w
  max r1.x, r1.z, r1.x
  max r1.z, r2.z, r2.y
  max r1.x, r1.z, r1.x
  store_structured g0.x, vThreadIDInGroup.y, r0.x, r1.x
  store_structured g1.x, vThreadIDInGroup.y, r0.x, r1.y
endif
sync_g_t
if_nz r0.z
  ishl r0.x, vThreadIDInGroup.x, l(2)
  ld_structured r0.z, vThreadIDInGroup.y, r0.x, g0.xxxx
  iadd r1.x, vThreadIDInGroup.y, l(2)
  ld_structured r1.y, r1.x, r0.x, g0.xxxx
  iadd r1.z, r0.x, l(8)
  ld_structured r2.x, vThreadIDInGroup.y, r1.z, g0.xxxx
  ld_structured r2.y, r1.x, r1.z, g0.xxxx
  ld_structured r2.z, vThreadIDInGroup.y, r0.x, g1.xxxx
  ld_structured r2.w, r1.x, r0.x, g1.xxxx
  iadd r2.z, r2.w, r2.z
  ld_structured r2.w, vThreadIDInGroup.y, r1.z, g1.xxxx
  iadd r2.z, r2.w, r2.z
  ld_structured r1.x, r1.x, r1.z, g1.xxxx
  iadd r1.x, r1.x, r2.z
  max r0.z, r0.z, r1.y
  max r1.y, r2.y, r2.x
  max r0.z, r0.z, r1.y
  store_structured g0.x, vThreadIDInGroup.y, r0.x, r0.z
  store_structured g1.x, vThreadIDInGroup.y, r0.x, r1.x
endif
sync_g_t
if_nz r0.w
  ishl r0.x, vThreadIDInGroup.x, l(2)
  ld_structured r0.z, l(0), r0.x, g0.xxxx
  ld_structured r0.w, l(1), r0.x, g0.xxxx
  iadd r1.x, r0.x, l(4)
  ld_structured r1.y, l(0), r1.x, g0.xxxx
  ld_structured r1.x, l(1), r1.x, g0.xxxx
  
//removes flicker but performance impact
  ld_structured r2.xy, l(0), r0.x, g1.xyxx

  //ishl r2.x, vThreadIDInGroup.x, l(8)

  ld_structured r2.zw, l(1), r0.x, g1.xxxy
  


  iadd r1.z, r2.z, r2.x
  iadd r1.z, r2.y, r1.z
  iadd r1.z, r2.w, r1.z
  



  max r0.z, r0.w, r0.z
  max r0.w, r1.x, r1.y
  max r0.z, r0.w, r0.z


//round_pi r0.z, r0.z          // FIXME: Should round away from zero, not towards nearest even or either infinity



  store_structured g0.x, vThreadIDInGroup.y, r0.x, r0.z
  store_structured g1.x, vThreadIDInGroup.y, r0.x, r1.z
endif
sync_g_t
ieq r0.x, vThreadIDInGroup.y, l(0)
and r0.x, r0.x, r1.w
if_nz r0.x
  iadd r0.x, r0.y, l(15)
  ushr r0.x, r0.x, l(4)
  ishl r0.y, vThreadGroupID.x, l(2)
  iadd r0.z, r0.y, vThreadIDInGroup.x
  ult r0.z, r0.z, r0.x
  if_nz r0.z
    imad r0.x, vThreadGroupID.y, r0.x, r0.y
    iadd r0.x, r0.x, vThreadIDInGroup.x
    ishl r0.y, vThreadIDInGroup.x, l(5)

    //flimmer fix but performance impact
    ld_structured r0.z, l(0), r0.y, g1.xxxx


    ult r0.z, l(8), r0.z
    ld_structured r0.y, l(0), r0.y, g0.xxxx
    movc r0.y, r0.z, l(1.000000), r0.y
    store_structured u0.x, r0.x, l(0), r0.y
  endif
endif
ret
// Approximately 164 instruction slots used
