//manual crorrection shadow CS - regexcrossing
//
// 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 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
//
// }
//
// cbuffer TiledAOFieldBuffer_CB
// {
//
//   struct tAOFieldData
//   {
//
//       float3 mOBBCenter;             // Offset:    0
//       float mPosBias;                // Offset:   12
//       float3 mOBBXAxis;              // Offset:   16
//       float mStrength;               // Offset:   28
//       float3 mOBBYAxis;              // Offset:   32
//       float mPadding1;               // Offset:   44
//       float3 mOBBZAxis;              // Offset:   48
//       float mPadding2;               // Offset:   60
//       float3 mOBBExtents;            // Offset:   64
//       float mPadding3;               // Offset:   76
//       float3 mOneOverOBBExtents;     // Offset:   80
//       float mPadding4;               // Offset:   92
//       float3 mUVWScale;              // Offset:   96
//       float mPadding5;               // Offset:  108
//       float3 mUVWBias;               // Offset:  112
//       float mPadding6;               // Offset:  124
//
//   } TiledAOFieldBuffer[512];         // Offset:    0 Size: 65536
//
// }
//
// Resource bind info for TiledAOFieldsPerTileBuffer
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for TiledNumAOFieldsPerTileBuffer
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for tiles_to_execute
// {
//
//   struct tTileLocation
//   {
//
//       uint x_y_packed;               // Offset:    0
//
//   } $Element;                        // Offset:    0 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// AOFieldTexAtlasSampler            sampler      NA          NA    0        1
// DepthBuffer                       texture  float4          2d    0        1
// NormalBuffer                      texture   uint4          2d    1        1
// AOFieldTexAtlas                   texture  float4          3d    3        1
// TiledAOFieldsPerTileBuffer        texture  struct         r/o    4        1
// TiledNumAOFieldsPerTileBuffer     texture  struct         r/o    5        1
// tiles_to_execute                  texture  struct         r/o    6        1
// AoOutputBuffer                        UAV    uint          2d    0        1
// RoOutputBuffer                        UAV   float          2d    1        1
// TiledDeferredCSParams_CB          cbuffer      NA          NA    1        1
// TiledLightConstData_CB            cbuffer      NA          NA    2        1
// TiledAOFieldBuffer_CB             cbuffer      NA          NA    3        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[53], immediateIndexed
dcl_constantbuffer cb2[4], immediateIndexed
dcl_constantbuffer cb3[4096], dynamicIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (uint,uint,uint,uint) t1
dcl_resource_texture3d (float,float,float,float) t3
dcl_resource_structured t4, 4
dcl_resource_structured t5, 4
dcl_resource_structured t6, 4
dcl_uav_typed_texture2d (uint,uint,uint,uint) u0
dcl_uav_typed_texture2d (float,float,float,float) u1
dcl_input vThreadGroupID.x
dcl_input vThreadIDInGroup.xy
dcl_temps 30
dcl_resource_texture2d (float,float,float,float) t80
dcl_tgsm_structured g0, 64, 16
dcl_thread_group 16, 16, 1
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.x, vThreadGroupID.x, l(0), t6.xxxx
ushr r1.x, r0.x, l(16)
and r1.y, r0.x, l(0x0000ffff)
imad r0.xy, r1.xyxx, l(16, 16, 0, 0), vThreadIDInGroup.xyxx
ftou r1.z, cb1[52].z
utof r1.z, r1.z
add r1.z, r1.z, l(15.000000)
mul r1.z, r1.z, l(0.062500)
round_z r1.z, r1.z
ftou r1.z, r1.z
imad r1.x, r1.y, r1.z, r1.x
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.x, l(0), t5.xxxx
umin r1.y, r1.y, l(256)
store_uav_typed u1.xyzw, r0.xyyy, l(1.000000,1.000000,1.000000,1.000000)
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r2.z, r0.xyww, t0.yzxw
utof r2.xy, r0.xyxx
mov r2.w, l(1.000000)

ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t80.xyzw
dp4 r26.x, cb2[3].xyzw, r2.xyzw
mul r26.w, r26.x, r25.y
add r26.w, r26.w, l(-1.000000)
mul r26.w, r26.w, cb1[24].y
mul r26.w, r26.w, l(0.89000)
mad r2.x, r25.x, r26.w, r2.x

dp4 r3.x, cb2[0].xyzw, r2.xyzw
dp4 r3.y, cb2[1].xyzw, r2.xyzw
dp4 r3.z, cb2[2].xyzw, r2.xyzw
dp4 r1.z, cb2[3].xyzw, r2.xyzw
div r2.xyz, r3.xyzx, r1.zzzz
ld_indexable(texture2d)(uint,uint,uint,uint) r3.xyz, r0.xyzw, t1.xywz
ubfe r0.z, l(1), l(7), r3.z
utof r1.zw, r3.xxxy
mad r3.xy, r1.zwzz, l(0.0000305185094, 0.0000305185094, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
dp2 r0.w, r3.xyxx, r3.xyxx
add r0.w, -r0.w, l(1.000000)
max r0.w, r0.w, l(0.000000)
sqrt r3.z, r0.w
if_nz r0.z
  mov r3.z, -r3.z
endif
ishl r0.z, r1.x, l(8)
mov r1.xz, l(1.000000,0,0,0)
loop
  uge r0.w, r1.z, r1.y
  breakc_nz r0.w
  iadd r0.w, r0.z, r1.z
  ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.w, r0.w, l(0), t4.xxxx
  ishl r0.w, r0.w, l(3)
  mad r4.xyz, cb3[r0.w + 0].wwww, r3.xyzx, r2.xyzx
  add r4.xyz, r4.xyzx, -cb3[r0.w + 0].xyzx
  dp3 r5.x, r4.xyzx, cb3[r0.w + 1].xyzx
  dp3 r5.y, r4.xyzx, cb3[r0.w + 2].xyzx
  dp3 r5.z, r4.xyzx, cb3[r0.w + 3].xyzx
  mul r4.xyz, r5.xyzx, cb3[r0.w + 5].xyzx
  max r1.w, |r4.z|, |r4.y|
  max r1.w, r1.w, |r4.x|
  lt r1.w, r1.w, l(1.000000)
  if_nz r1.w
    mad r4.xyz, r4.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
    mad r4.xyz, r4.xyzx, cb3[r0.w + 6].xyzx, cb3[r0.w + 7].xyzx
    sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t3.xyzw, s0, l(0.000000)
    add_sat r1.w, r4.w, r4.w
    dp3 r5.x, r3.xyzx, cb3[r0.w + 1].xyzx
    dp3 r5.y, r3.xyzx, cb3[r0.w + 2].xyzx
    dp3 r5.z, r3.xyzx, cb3[r0.w + 3].xyzx
    add r4.xyz, r4.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
    add r4.xyz, r4.xyzx, r4.xyzx
    dp3 r2.w, r4.xyzx, r4.xyzx
    sqrt r2.w, r2.w
    div r4.xyz, r4.xyzx, r2.wwww
    dp3 r2.w, r5.xyzx, r4.xyzx
    mul r2.w, r2.w, l(0.500000)
    div r2.w, r2.w, r1.w
    add_sat r2.w, r2.w, l(0.500000)
    mul r1.w, r1.w, r2.w
    mad r0.w, -cb3[r0.w + 1].w, r1.w, l(1.000000)
    mul r1.x, r0.w, r1.x
  endif
  iadd r1.z, r1.z, l(1)
endloop
ushr r2.xyzw, r0.xyyy, l(1, 1, 1, 1)
ld_uav_typed_indexable(texture2d)(uint,uint,uint,uint) r0.z, r2.xwww, u0.yzxw
and r1.yz, r0.xxyx, l(0, 1, 1, 0)
bfi r0.xy, l(1, 1, 0, 0), l(3, 4, 0, 0), r0.xyxx, l(0, 0, 0, 0)
iadd r0.x, r0.y, r0.x
ushr r0.x, r0.z, r0.x
and r0.x, r0.x, l(255)
utof r0.x, r0.x
add r0.y, r1.x, l(-1.000000)
mad_sat r0.y, r0.y, cb1[25].y, l(1.000000)
ishl r0.z, vThreadIDInGroup.y, l(2)
mul r0.y, r0.y, l(255.000000)
min r0.x, r0.y, r0.x
ftou r0.x, r0.x
store_structured g0.x, vThreadIDInGroup.x, r0.z, r0.x
sync_g_t
ieq r0.xy, r1.yzyy, l(1, 1, 0, 0)
and r0.x, r0.y, r0.x
if_nz r0.x
  ld_structured r0.x, vThreadIDInGroup.x, r0.z, g0.xxxx
  iadd r0.y, vThreadIDInGroup.x, l(-1)
  ld_structured r0.w, r0.y, r0.z, g0.xxxx
  ishl r0.xw, r0.xxxw, l(24, 0, 0, 16)
  or r0.x, r0.w, r0.x
  iadd r0.z, r0.z, l(-4)
  ld_structured r0.w, vThreadIDInGroup.x, r0.z, g0.xxxx
  ishl r0.w, r0.w, l(8)
  or r0.x, r0.w, r0.x
  ld_structured r0.y, r0.y, r0.z, g0.xxxx
  or r0.x, r0.y, r0.x
  store_uav_typed u0.xyzw, r2.xyzw, r0.xxxx
endif
ret
// Approximately 107 instruction slots used
