//Light clipping fix might be here --- INVESTIGATE
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.11 on Sun Nov 25 08:35:05 2018
//
//
// Buffer Definitions:
//
// cbuffer TiledDeferredCSParams_CB
// {
//
//   struct tTiledDeferredCS
//   {
//
//       row_major float4x4 mMainSceneInvProj;// Offset:    0
//       row_major float4x4 mMainSceneProj;// Offset:   64
//       row_major float4x4 mMainSceneView;// Offset:  128
//       row_major float4x4 mMainSceneInvTransInvView;// Offset:  192
//       row_major float4x4 mMainSceneInvViewProjThread;// Offset:  256
//       row_major float4x4 mMainSceneViewProj;// Offset:  320
//       float4 mScreenResClipDistances;// Offset:  384
//       float4 mAOStrengthParams;      // Offset:  400
//       float4 mCameraPosition;        // Offset:  416
//       float4 mCameraParameters[2];   // Offset:  432
//       float4 mAnisoParams;           // Offset:  464
//       float4 mLightShadowParams;     // Offset:  480
//       float4 mShadowMapTexelSize;    // Offset:  496
//       float4 mViewportInfo;          // Offset:  512
//       float4 mClusteredLightingParams[4];// Offset:  528
//       float4 mRimLightParams[2];     // Offset:  592
//       float4 mTranslucencyLightingDebugParams;// Offset:  624
//       float4 mLightComponentToggler[4];// Offset:  640
//       float4 mLightingExperiment[3]; // Offset:  704
//       float4 mLightingModelTestParams[5];// Offset:  752
//       float2 mDirectLightingExtraParams;// Offset:  832
//       float2 mFullScreenRenderTargetDimensions;// Offset:  840
//       float mEyeLightWrapPercent;    // Offset:  848
//       int mEnableSssOnPointLights;   // Offset:  852
//       int mEnableTranslucencyLighting;// Offset:  856
//       int mDebugMaxLightListEntries; // Offset:  860
//
//   } TiledDeferredCSParams;           // Offset:    0 Size:   864
//
// }
//
// cbuffer ClusterOffsetPerLight_CB
// {
//
//   struct tClusteredOffsetsPerLight
//   {
//
//       float4 mNumLightsEnd;          // Offset:    0
//       float4 mMaxLightsEnd;          // Offset:   16
//
//   } ClusterOffsetPerLight;           // Offset:    0 Size:    32
//
// }
//
// Resource bind info for ClusterFrustumSpheres
// {
//
//   struct tFrustumSphere
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadius;                 // Offset:   12
//
//   } $Element;                        // Offset:    0 Size:    16
//
// }
//
// Resource bind info for TiledLightBuffer
// {
//
//   struct tClusteredLightData
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadius;                 // Offset:   12
//       float3 mDirection;             // Offset:   16
//       float mHalfCosConeAngle;       // Offset:   28
//
//   } $Element;                        // Offset:    0 Size:    32
//
// }
//
// Resource bind info for ClusterLightCountsPerTile
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for ClusterLightIdsPerTile
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// ClusterFrustumSpheres             texture  struct         r/o    0        1
// TiledLightBuffer                  texture  struct         r/o    1        1
// ClusterLightCountsPerTile         texture  struct         r/o    2        1
// ClusterLightIdsPerTile                UAV  struct         r/w    0        1
// TiledDeferredCSParams_CB          cbuffer      NA          NA    1        1
// ClusterOffsetPerLight_CB          cbuffer      NA          NA    2        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_immediateConstantBuffer { { 1.000000, 0, 0, 0},
                              { 0, 1.000000, 0, 0},
                              { 0, 0, 1.000000, 0},
                              { 0, 0, 0, 1.000000} }
dcl_constantbuffer cb1[36], immediateIndexed
dcl_constantbuffer cb2[2], immediateIndexed
dcl_resource_structured t0, 16
dcl_resource_structured t1, 32
dcl_resource_structured t2, 4
dcl_uav_structured u0, 4
dcl_input vThreadID.xyz
dcl_temps 6
dcl_thread_group 4, 4, 4
ftou r0.xy, cb1[35].xyxx
uge r0.zw, vThreadID.xxxy, r0.xxxy
or r0.z, r0.w, r0.z
if_nz r0.z
  ret
endif
ushr r0.z, vThreadID.z, l(7)
and r0.w, vThreadID.z, l(0x0007ff80)
iadd r0.w, -r0.w, vThreadID.z
imul null, r1.x, r0.x, r0.z
imul null, r1.y, r0.y, r1.x
imad r1.z, vThreadID.y, r0.x, vThreadID.x
imad r1.x, r1.x, r0.y, r1.z
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t2.xxxx
uge r1.x, r0.w, r1.x
if_nz r1.x
  ret
endif
ishl r1.x, r1.y, l(7)
ishl r1.y, r1.z, l(7)
iadd r1.z, r0.z, l(-1)
dp4 r1.z, cb2[1].xyzw, icb[r1.z + 0].xyzw
ftou r1.z, r1.z
movc r0.z, r0.z, r1.z, l(0)
iadd r1.x, r1.y, r1.x
iadd r0.w, r0.w, r1.x
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r0.w, l(0), u0.xxxx
iadd r0.z, r0.z, r1.x
ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r2.xyzw, r0.z, l(0), t1.xyzw
ld_structured_indexable(structured_buffer, stride=32)(mixed,mixed,mixed,mixed) r3.xyzw, r0.z, l(16), t1.xyzw
mad r0.z, -r3.w, r3.w, l(1.000000)
sqrt r0.z, r0.z
mov r1.y, l(0)
loop
  uge r1.z, r1.y, l(16)
  breakc_nz r1.z
  imad r1.z, r0.y, r1.y, vThreadID.y
  imad r1.z, r0.x, r1.z, vThreadID.x
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r4.xyzw, r1.z, l(0), t0.xyzw
  add r4.xyz, -r2.xyzx, r4.xyzx
  dp3 r1.z, r4.xyzx, r4.xyzx
  sqrt r1.w, r1.z
  dp3 r4.x, r4.xyzx, r3.xyzx
  mad r1.z, -r4.x, r4.x, r1.z
  max r1.z, r1.z, l(0.000000)
  sqrt r1.z, r1.z
  mul r4.y, r3.w, r4.x
  mad r4.y, r0.z, r1.z, r4.y
  mul r1.z, r1.z, r3.w
  mad r1.z, r0.z, r4.x, -r1.z
  max r4.x, r4.y, l(0.000000)
  min r4.x, r2.w, r4.x
  add r4.x, -r4.x, r4.y
  mul r4.y, r1.z, r1.z
  mad r4.x, r4.x, r4.x, r4.y
  ge r1.z, r1.z, l(0.000000)
  add r4.y, r2.w, r4.w
  ge r1.w, r4.y, r1.w
  mul r4.y, r4.w, r4.w
  ge r4.x, r4.y, r4.x
  and r1.z, r1.w, r1.z
  or r1.z, r4.x, r1.z
  if_nz r1.z
    break
  endif
  iadd r1.y, r1.y, l(1)
endloop
iadd r1.z, r1.y, l(1)
mov r4.xy, r1.yzyy
loop
  uge r1.w, r4.y, l(16)
  breakc_nz r1.w
  imad r1.w, r0.y, r4.y, vThreadID.y
  imad r1.w, r0.x, r1.w, vThreadID.x
  ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r5.xyzw, r1.w, l(0), t0.xyzw
  add r5.xyz, -r2.xyzx, r5.xyzx
  dp3 r1.w, r5.xyzx, r5.xyzx
  sqrt r4.z, r1.w
  dp3 r4.w, r5.xyzx, r3.xyzx
  mad r1.w, -r4.w, r4.w, r1.w
  max r1.w, r1.w, l(0.000000)
  sqrt r1.w, r1.w
  mul r5.x, r3.w, r4.w
  mad r5.x, r0.z, r1.w, r5.x
  mul r1.w, r1.w, r3.w
  mad r1.w, r0.z, r4.w, -r1.w
  max r4.w, r5.x, l(0.000000)
  min r4.w, r2.w, r4.w
  add r4.w, -r4.w, r5.x
  mul r5.x, r1.w, r1.w
  mad r4.w, r4.w, r4.w, r5.x
  ge r1.w, r1.w, l(0.000000)
  add r5.x, r2.w, r5.w
  ge r4.z, r5.x, r4.z
  mul r5.x, r5.w, r5.w
  ge r4.w, r5.x, r4.w
  and r1.w, r1.w, r4.z
  or r1.w, r4.w, r1.w
  if_z r1.w
    break
  endif
  iadd r4.x, r4.x, l(1)
  iadd r4.y, r4.y, l(1)
endloop
bfi r0.x, l(16), l(16), r1.y, r1.x
ishl r0.y, r4.x, l(24)
or r0.x, r0.y, r0.x
store_structured u0.x, r0.w, l(0), r0.x
ret
// Approximately 109 instruction slots used
