//Flimmer Clipping fix cout be here but try @ last
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.11 on Sun Nov 25 11:14:35 2018
//
//
// Buffer Definitions:
//
// cbuffer OffsetPerLightTypeBuffer_CB
// {
//
//   struct tClusteredOffsetsPerLight
//   {
//
//       float4 mNumLightsEnd;          // Offset:    0
//       float4 mMaxLightsEnd;          // Offset:   16
//
//   } OffsetPerLightTypeBuffer;        // Offset:    0 Size:    32
//
// }
//
// cbuffer TiledLightBuffer_Spot_CB
// {
//
//   struct tLightData
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadius;                 // Offset:   12
//       float3 mColor;                 // Offset:   16
//       float mStrength;               // Offset:   28
//       float3 mDirection;             // Offset:   32
//       float mHalfCosConeAngle;       // Offset:   44
//       row_major float3x4 mGoboMatrix;// Offset:   48
//       float4 mGoboMapping;           // Offset:   96
//       uint mApplicationFlags;        // Offset:  112
//       float mSphereLightSize;        // Offset:  116
//       float mReturnAmount;           // Offset:  120
//       uint padding;                  // Offset:  124
//
//   } TiledLightBuffer_Spot[512];      // Offset:    0 Size: 65536
//
// }
//
// cbuffer TiledLightBuffer_Shadow_CB
// {
//
//   struct tShadowLightData
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadius;                 // Offset:   12
//       float3 mColor;                 // Offset:   16
//       float mStrength;               // Offset:   28
//       float3 mDirection;             // Offset:   32
//       float mHalfCosConeAngle;       // Offset:   44
//       row_major float3x4 mGoboMatrix;// Offset:   48
//       float4 mGoboMapping;           // Offset:   96
//       row_major float4x4 mShadowMapProjectViewMatrix;// Offset:  112
//       uint mApplicationFlags;        // Offset:  176
//       float mSphereLightSize;        // Offset:  180
//       float mReturnAmount;           // Offset:  184
//       uint padding;                  // Offset:  188
//
//   } TiledLightBuffer_Shadow[256];    // Offset:    0 Size: 49152
//
// }
//
// cbuffer TiledLightBuffer_SH_CB
// {
//
//   struct tShLightData
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadiusInv;              // Offset:   12
//       uint mRegion;                  // Offset:   16
//       float mL00_luminance;          // Offset:   20
//       float mdL00_dy_luminance;      // Offset:   24
//       float mGradStrength;           // Offset:   28
//       float4 mShCoeff[3];            // Offset:   32
//       float4 mShGradCoeff[3];        // Offset:   80
//
//   } TiledLightBuffer_SH[512];        // Offset:    0 Size: 65536
//
// }
//
// cbuffer TiledLightBuffer_FogOnly_CB
// {
//
//   struct tFogOnlyLightData
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadius;                 // Offset:   12
//       float3 mColor;                 // Offset:   16
//       float mSphereLightSize;        // Offset:   28
//       float3 mDirection;             // Offset:   32
//       float mHalfCosConeAngle;       // Offset:   44
//
//   } TiledLightBuffer_FogOnly[512];   // Offset:    0 Size: 24576
//
// }
//
// Resource bind info for ClusterLight2DBounds_Spot
// {
//
//   struct t2DBounds
//   {
//
//       int mLeft;                     // Offset:    0
//       int mRight;                    // Offset:    4
//       int mTop;                      // Offset:    8
//       int mBottom;                   // Offset:   12
//
//   } $Element;                        // Offset:    0 Size:    16
//
// }
//
// Resource bind info for ClusterLight2DBounds_Shadow
// {
//
//   struct t2DBounds
//   {
//
//       int mLeft;                     // Offset:    0
//       int mRight;                    // Offset:    4
//       int mTop;                      // Offset:    8
//       int mBottom;                   // Offset:   12
//
//   } $Element;                        // Offset:    0 Size:    16
//
// }
//
// Resource bind info for ClusterLight2DBounds_SH
// {
//
//   struct t2DBounds
//   {
//
//       int mLeft;                     // Offset:    0
//       int mRight;                    // Offset:    4
//       int mTop;                      // Offset:    8
//       int mBottom;                   // Offset:   12
//
//   } $Element;                        // Offset:    0 Size:    16
//
// }
//
// Resource bind info for ClusterLight2DBounds_FogOnly
// {
//
//   struct t2DBounds
//   {
//
//       int mLeft;                     // Offset:    0
//       int mRight;                    // Offset:    4
//       int mTop;                      // Offset:    8
//       int mBottom;                   // Offset:   12
//
//   } $Element;                        // Offset:    0 Size:    16
//
// }
//
// Resource bind info for ClusterLight2DBounds
// {
//
//   struct t2DBounds
//   {
//
//       int mLeft;                     // Offset:    0
//       int mRight;                    // Offset:    4
//       int mTop;                      // Offset:    8
//       int mBottom;                   // 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 Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// ClusterLight2DBounds_Spot         texture  struct         r/o    0        1
// ClusterLight2DBounds_Shadow       texture  struct         r/o    1        1
// ClusterLight2DBounds_SH           texture  struct         r/o    2        1
// ClusterLight2DBounds_FogOnly      texture  struct         r/o    3        1
// ClusterLight2DBounds                  UAV  struct         r/w    0        1
// TiledLightBuffer                      UAV  struct         r/w    1        1
// OffsetPerLightTypeBuffer_CB       cbuffer      NA          NA    1        1
// TiledLightBuffer_Spot_CB          cbuffer      NA          NA    2        1
// TiledLightBuffer_Shadow_CB        cbuffer      NA          NA    3        1
// TiledLightBuffer_SH_CB            cbuffer      NA          NA    4        1
// TiledLightBuffer_FogOnly_CB       cbuffer      NA          NA    5        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 cb1[2], immediateIndexed
dcl_constantbuffer cb2[4091], dynamicIndexed
dcl_constantbuffer cb3[3071], dynamicIndexed
dcl_constantbuffer cb4[4089], dynamicIndexed
dcl_constantbuffer cb5[1536], dynamicIndexed
dcl_resource_structured t0, 16
dcl_resource_structured t1, 16
dcl_resource_structured t2, 16
dcl_resource_structured t3, 16
dcl_uav_structured u0, 16
dcl_uav_structured u1, 32
dcl_input vThreadID.x
dcl_temps 2
dcl_thread_group 64, 1, 1
itof r0.x, vThreadID.x
lt r0.y, r0.x, cb1[0].y
if_nz r0.y
  lt r0.y, r0.x, cb1[0].x
  if_nz r0.y
    ishl r0.y, vThreadID.x, l(3)
    store_structured u1.xyzw, vThreadID.x, l(0), cb2[r0.y + 0].xyzw
    store_structured u1.xyzw, vThreadID.x, l(16), cb2[r0.y + 2].xyzw
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r1.xyzw, vThreadID.x, l(0), t0.xyzw
    store_structured u0.xyzw, vThreadID.x, l(0), r1.xyzw
  else
    ftoi r0.y, cb1[0].x
    ftoi r0.z, cb1[1].x
    iadd r0.w, -r0.y, vThreadID.x
    imul null, r1.x, r0.w, l(12)
    iadd r0.z, r0.z, vThreadID.x
    iadd r0.y, -r0.y, r0.z
    store_structured u1.xyzw, r0.y, l(0), cb3[r1.x + 0].xyzw
    store_structured u1.xyzw, r0.y, l(16), cb3[r1.x + 2].xyzw
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r1.xyzw, r0.w, l(0), t1.xyzw
    store_structured u0.xyzw, r0.y, l(0), r1.xyzw
  endif
else
  lt r0.x, r0.x, cb1[0].z
  if_nz r0.x
    ftoi r0.x, cb1[0].y
    ftoi r0.y, cb1[1].y
    iadd r0.z, -r0.x, vThreadID.x
    ishl r0.w, r0.z, l(3)
    div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb4[r0.w + 0].w
    iadd r0.y, r0.y, vThreadID.x
    iadd r0.x, -r0.x, r0.y
    mov r1.xyz, cb4[r0.w + 0].xyzx
    store_structured u1.xyzw, r0.x, l(0), r1.xyzw
    store_structured u1.xyzw, r0.x, l(16), l(0,-1.000000,0,-1.000000)
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r1.xyzw, r0.z, l(0), t2.xyzw
    store_structured u0.xyzw, r0.x, l(0), r1.xyzw
  else
    ftoi r0.x, cb1[0].z
    ftoi r0.y, cb1[1].z
    iadd r0.z, -r0.x, vThreadID.x
    imul null, r0.w, r0.z, l(3)
    iadd r0.y, r0.y, vThreadID.x
    iadd r0.x, -r0.x, r0.y
    store_structured u1.xyzw, r0.x, l(0), cb5[r0.w + 0].xyzw
    store_structured u1.xyzw, r0.x, l(16), cb5[r0.w + 2].xyzw
    ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r1.xyzw, r0.z, l(0), t3.xyzw
    store_structured u0.xyzw, r0.x, l(0), r1.xyzw
  endif
endif
ret
// Approximately 51 instruction slots used
