//clipping fixed
// 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 TiledLightBuffer_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[512];           // Offset:    0 Size: 65536
//
// }
//
// cbuffer TiledLightCountBuffer_CB
// {
//
//   struct tLightCountData
//   {
//
//       uint mNumLights;               // Offset:    0
//       uint mNumXTiles;               // Offset:    4
//       uint mNumYTiles;               // Offset:    8
//       uint mSHScalesReflectionFlag;  // Offset:   12
//
//   } TiledLightCountBuffer;           // Offset:    0 Size:    16
//
// }
//
// 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 TiledLightConstData_CB
// {
//
//   struct tTiledLightingConstantData
//   {
//
//       row_major float4x4 mInvViewProj;// Offset:    0
//       row_major float4x4 mProj;      // Offset:   64
//       row_major float4x4 mView;      // Offset:  128
//       int mNumberOfTiles;            // Offset:  192
//       float3 mPadding;               // Offset:  196
//
//   } TiledLightConstData;             // Offset:    0 Size:   208
//
// }
//
// Resource bind info for Light2DBounds
// {
//
//   struct t2DBounds
//   {
//
//       int mLeft;                     // Offset:    0
//       int mRight;                    // Offset:    4
//       int mTop;                      // Offset:    8
//       int mBottom;                   // Offset:   12
//
//   } $Element;                        // Offset:    0 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// Light2DBounds                         UAV  struct         r/w    0        1
// TiledLightBuffer_CB               cbuffer      NA          NA    1        1
// TiledLightCountBuffer_CB          cbuffer      NA          NA    2        1
// TiledDeferredCSParams_CB          cbuffer      NA          NA    3        1
// TiledLightConstData_CB            cbuffer      NA          NA    4        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[4089], dynamicIndexed
dcl_constantbuffer cb2[1], immediateIndexed
dcl_constantbuffer cb3[33], immediateIndexed
dcl_constantbuffer cb4[11], immediateIndexed
dcl_uav_structured u0, 16
dcl_input vThreadID.x
dcl_temps 9
dcl_indexableTemp x0[2], 4
dcl_indexableTemp x1[2], 4
dcl_thread_group 64, 1, 1
uge r0.x, vThreadID.x, cb2[0].x
if_nz r0.x
  ret
endif
ishl r0.x, vThreadID.x, l(3)
mov r1.xyz, cb1[r0.x + 0].xyzx
mov r1.w, l(1.000000)
dp4 r2.y, cb4[8].xyzw, r1.xyzw
dp4 r2.x, cb4[9].xyzw, r1.xyzw
dp4 r2.z, cb4[10].xyzw, r1.xyzw
div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), cb1[r0.x + 0].w

//clipping fix - LOSTI
mul r0.z, r0.z, l(2.0)

mul r0.w, r0.z, r0.z
dp2 r1.x, r2.yzyy, r2.yzyy
mad r1.y, -r0.z, r0.z, r1.x
ge r1.z, l(0.000000), r1.y
if_nz r1.z
  mov r3.xy, l(0,0,0,0)
  mov r4.xy, l(0,0,0,0)
else
  sqrt r0.y, r1.y
  sqrt r1.x, r1.x
  div r1.xy, r0.zyzz, r1.xxxx
  mul r5.xyz, r2.yzzy, r1.xxyx
  mad r0.y, r1.y, r2.y, -r5.y
  mul r6.x, r1.y, r0.y
  add r0.y, r5.z, r5.x
  mul r6.y, r1.y, r0.y
  mov x0[0].xy, r6.xyxx
  mul r0.y, r2.z, -r1.x
  mad r0.y, r1.y, r2.y, -r0.y
  mul r5.x, r1.y, r0.y
  mad r0.y, -r1.x, r2.y, r5.z
  mul r5.y, r1.y, r0.y
  mov x0[1].xy, r5.xyxx
  add r0.y, r2.z, -cb3[32].x
  mad r0.y, -r0.y, r0.y, r0.w
  sqrt r0.y, r0.y
  lt r1.x, r6.y, cb3[32].x
  if_nz r1.x
    add r1.x, -r0.y, r2.y
    mov r1.y, cb3[32].x
    mov x0[0].xy, r1.xyxx
  endif
  lt r1.x, r5.y, cb3[32].x
  if_nz r1.x
    add r1.x, r0.y, r2.y
    mov r1.y, cb3[32].x
    mov x0[1].xy, r1.xyxx
  endif
  mov r3.x, x0[0].x
  mov r3.y, x0[0].y
  mov r4.x, x0[1].x
  mov r4.y, x0[1].y
endif
dp2 r0.y, r2.xzxx, r2.xzxx
mad r1.x, -r0.z, r0.z, r0.y
ge r1.y, l(0.000000), r1.x
if_nz r1.y
  mov r5.xy, l(0,0,0,0)
  mov r6.xy, l(0,0,0,0)
else
  sqrt r0.x, r1.x
  sqrt r0.y, r0.y
  div r0.xy, r0.zxzz, r0.yyyy
  mul r7.xyz, r2.xzzx, r0.xxyx
  mad r0.z, r0.y, r2.x, -r7.y
  mul r8.x, r0.y, r0.z
  add r0.z, r7.z, r7.x
  mul r8.y, r0.y, r0.z
  mov x1[0].xy, r8.xyxx
  mul r0.z, r2.z, -r0.x
  mad r0.z, r0.y, r2.x, -r0.z
  mad r0.x, -r0.x, r2.x, r7.z
  mul r7.xy, r0.yyyy, r0.zxzz
  mov x1[1].xy, r7.xyxx
  add r0.x, r2.z, -cb3[32].x
  mad r0.x, -r0.x, r0.x, r0.w
  sqrt r0.x, r0.x
  lt r0.y, r8.y, cb3[32].x
  if_nz r0.y
    add r8.x, -r0.x, r2.x
    mov r8.y, cb3[32].x
    mov x1[0].xy, r8.xyxx
  endif
  lt r0.y, r7.y, cb3[32].x
  if_nz r0.y
    add r0.x, r0.x, r2.x
    mov r0.y, cb3[32].x
    mov x1[1].xy, r0.xyxx
  endif
  mov r5.x, x1[0].x
  mov r5.y, x1[0].y
  mov r6.x, x1[1].x
  mov r6.y, x1[1].y
endif
or r0.x, r1.y, r1.z
and r0.x, r0.x, l(1)
if_nz r0.x
  mov r0.xyzw, l(0,1.000000,0,1.000000)
else
  mov r3.z, l(1.000000)
  dp3 r1.x, cb4[4].xzwx, r3.xyzx
  dp3 r1.y, cb4[7].xzwx, r3.xyzx
  div r1.x, r1.x, r1.y
  mov r4.z, l(1.000000)
  dp3 r2.x, cb4[4].xzwx, r4.xyzx
  dp3 r2.y, cb4[7].xzwx, r4.xyzx
  div r1.y, r2.x, r2.y
  mov r6.z, l(1.000000)
  dp3 r2.x, cb4[5].yzwy, r6.xyzx
  dp3 r2.y, cb4[7].yzwy, r6.xyzx
  div r1.z, r2.x, r2.y
  mov r5.z, l(1.000000)
  dp3 r2.x, cb4[5].yzwy, r5.xyzx
  dp3 r2.y, cb4[7].yzwy, r5.xyzx
  div r1.w, r2.x, r2.y
  mad r0.xyzw, r1.xyzw, l(0.500000, 0.500000, -0.500000, -0.500000), l(0.500000, 0.500000, 0.500000, 0.500000)
endif
utof r1.xyzw, cb2[0].yyzz
mul r0.xyzw, r0.xyzw, r1.xyzw
ftoi r0.xyzw, r0.xyzw
store_structured u0.xyzw, vThreadID.x, l(0), r0.xyzw
ret
// Approximately 123 instruction slots used
