//shadows of and on char -- need manual fix becuase regex crossing
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.11 on Sun Nov 18 15:10:08 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 TiledCharacterAOFieldBuffer_CB
// {
//
//   struct tCharacterAoField
//   {
//
//       float3 mPosition;              // Offset:    0
//       float mRadius;                 // Offset:   12
//       float mStrength;               // Offset:   16
//       float3 mPadding;               // Offset:   20
//
//   } TiledCharacterAOFieldBuffer[320];// Offset:    0 Size: 10240
//
// }
//
// Resource bind info for input_lights_per_tile
// {
//
//   uint $Element;                     // Offset:    0 Size:     4
//
// }
//
// Resource bind info for input_num_lights_per_tile
// {
//
//   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
// ------------------------------ ---------- ------- ----------- ---- --------
// DepthBuffer                       texture  float4          2d    0        1
// NormalBuffer                      texture   uint4          2d    1        1
// input_lights_per_tile             texture  struct         r/o    2        1
// input_num_lights_per_tile         texture  struct         r/o    3        1
// tiles_to_execute                  texture  struct         r/o    4        1
// AoDiffuseOutputBuffer                 UAV    uint          2d    0        1
// TiledDeferredCSParams_CB          cbuffer      NA          NA    1        1
// TiledLightConstData_CB            cbuffer      NA          NA    2        1
// TiledCharacterAOFieldBuffer_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[640], dynamicIndexed
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (uint,uint,uint,uint) t1
dcl_resource_structured t2, 4
dcl_resource_structured t3, 4
dcl_resource_structured t4, 4
dcl_uav_typed_texture2d (uint,uint,uint,uint) u0
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), t4.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), t3.xxxx
umin r1.y, r1.y, l(256)
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 r0.w, l(1.000000)
mov r1.x, l(0)
loop
  uge r1.z, r1.x, r1.y
  breakc_nz r1.z
  iadd r1.z, r0.z, r1.x
  ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.z, r1.z, l(0), t2.xxxx
  ishl r1.z, r1.z, l(1)
  add r4.xyz, -r2.xyzx, cb3[r1.z + 0].xyzx
  dp3 r1.w, r4.xyzx, r4.xyzx
  sqrt r1.w, r1.w
  div r2.w, r1.w, cb3[r1.z + 0].w
  add_sat r2.w, -r2.w, l(5.000000)
  rcp r3.w, r1.w
  min r4.w, r1.w, cb3[r1.z + 0].w
  min r4.w, r4.w, cb3[r1.z + 0].w
  max r4.w, r4.w, l(0.001000)
  rcp r4.w, r4.w
  mul r1.w, r1.w, r4.w
  dp3 r4.x, r4.xyzx, r3.xyzx
  mul r3.w, r3.w, r4.x
  add r4.x, -|r3.w|, l(1.000000)
  sqrt r4.x, r4.x
  mad r4.y, |r3.w|, l(-0.0187292993), l(0.074261)
  mad r4.y, r4.y, |r3.w|, l(-0.212114394)
  mad r4.y, r4.y, |r3.w|, l(1.57072878)
  mul r4.z, r4.x, r4.y
  mad r4.z, r4.z, l(-2.000000), l(3.14159274)
  lt r3.w, r3.w, -r3.w
  and r3.w, r3.w, r4.z
  mad r3.w, r4.y, r4.x, r3.w
  max r1.w, r1.w, l(0.001000)
  rcp r1.w, r1.w
  mul r4.x, r1.w, r1.w
  min r1.w, r1.w, l(1.000000)
  add r1.w, r1.w, l(1.57079637)
  rcp r1.w, r1.w
  mul r1.w, r1.w, r3.w
  min r1.w, r1.w, l(1.000000)
  mul r1.w, r1.w, l(1.57079637)
  sincos null, r1.w, r1.w
  mul r1.w, r1.w, r1.w
  mul r1.w, r4.x, r1.w
  mul r1.w, r2.w, r1.w
  min r1.w, r1.w, l(1.000000)
  mad_sat r1.z, -r1.w, cb3[r1.z + 1].x, l(1.000000)
  mul r0.w, r0.w, r1.z
  iadd r1.x, r1.x, l(1)
endloop
ushr r1.xyzw, r0.xyyy, l(1, 1, 1, 1)
ld_uav_typed_indexable(texture2d)(uint,uint,uint,uint) r0.z, r1.xwww, u0.yzxw
and r2.xy, r0.xyxx, l(1, 1, 0, 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, r0.w, 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, r2.xyxx, 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, r1.xyzw, r0.xxxx
endif
ret
// Approximately 116 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
