//Ambient occlusion PS 1.
// ---- Created with 3Dmigoto v0.6.163 on Thu Aug 21 18:26:56 2025

cbuffer cb_scene : register(b0)
{
  float4x4 view_g : packoffset(c0);
  float4x4 viewInv_g : packoffset(c4);
  float4x4 proj_g : packoffset(c8);
  float4x4 projInv_g : packoffset(c12);
  float4x4 viewProj_g : packoffset(c16);
  float4x4 viewProjInv_g : packoffset(c20);
  float2 vpSize_g : packoffset(c24);
  float2 invVPSize_g : packoffset(c24.z);
  float3 lightColor_g : packoffset(c25);
  float disableMapObjNearFade_g : packoffset(c25.w);
  float3 lightDirection_g : packoffset(c26);
  float gameTime_g : packoffset(c26.w);
  float3 sceneShadowColor_g : packoffset(c27);
  int shadowmapCascadeCount_g : packoffset(c27.w);
  float3 windDirection_g : packoffset(c28);
  float sceneTime_g : packoffset(c28.w);
  float2 lightTileSizeInv_g : packoffset(c29);
  float fogNearDistance_g : packoffset(c29.z);
  float fogFadeRangeInv_g : packoffset(c29.w);
  float3 fogColor_g : packoffset(c30);
  float fogIntensity_g : packoffset(c30.w);
  float fogHeight_g : packoffset(c31);
  float fogHeightRangeInv_g : packoffset(c31.y);
  float windWaveTime_g : packoffset(c31.z);
  float windWaveFrequency_g : packoffset(c31.w);
  uint localLightProbeCount_g : packoffset(c32);
  float lightSpecularGlossiness_g : packoffset(c32.y);
  float lightSpecularIntensity_g : packoffset(c32.z);
  float localShadowResolutionInv_g : packoffset(c32.w);
  float4x4 ditherMtx_g : packoffset(c33);
  float4 lightProbe_g[9] : packoffset(c37);
  float3 chrLightDir_g : packoffset(c46);
  float windForce_g : packoffset(c46.w);
  float4 mapColor_g : packoffset(c47);
  float4 clipPlane_g : packoffset(c48);
  float2 resolutionScaling_g : packoffset(c49);
  float2 invShadowSize_g : packoffset(c49.z);
  float3 chrShadowColor_g : packoffset(c50);
  float shadowFadeNear_g : packoffset(c50.w);
  float4 frustumPlanes_g[6] : packoffset(c51);
  float3 shadowSplitDistance_g : packoffset(c57);
  float shadowFadeRangeInv_g : packoffset(c57.w);
  float4x4 shadowMtx_g[4] : packoffset(c58);
}

cbuffer cb_local : register(b2)
{
  int2 textureSize_g : packoffset(c0);
  float2 aoSize_g : packoffset(c0.z);
  float charaAOStrength_g : packoffset(c1);
  float charaAOCutOff_g : packoffset(c1.y);
  int mapAOSampleCount_g : packoffset(c1.z);
  float mapAOIntensity_g : packoffset(c1.w);
  float3 mapAOColor_g : packoffset(c2);
  float mapAOFadeBeginDistance_g : packoffset(c2.w);
  float mapAOFadeRangeInv_g : packoffset(c3);
  float mapAOLimit_g : packoffset(c3.y);
  float mapAOBias_g : packoffset(c3.z);
  float mapAODistMaxInv_g : packoffset(c3.w);
  float2 texelSize_g : packoffset(c4);
  float2 prevAoScaling_g : packoffset(c4.z);
  float4 sphere_g[16] : packoffset(c5);
}

cbuffer cb_local2 : register(b3)
{
  float3 rayMarchShadowDir_g : packoffset(c0);
  float4x4 prevViewProj_g : packoffset(c1);
}

SamplerState samPoint_s : register(s0);
SamplerState samLinear_s : register(s1);
Texture2D<float4> depthTexture : register(t0);
Texture2D<uint4> mrtTexture0 : register(t1);
Texture2D<float4> intensityMap : register(t2);
Texture2D<float4> prevTexture : register(t3);


// SLT declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  float4 v0 : SV_Position0,
  float4 v1 : TEXCOORD0,
  out float4 o0 : SV_Target0)
{
  const float4 icb[] = { { 1.000000, 0, 0, 0},
                              { 0, 1.000000, 0, 0},
                              { 0, 0, 1.000000, 0},
                              { 0, 0, 0, 1.000000} };
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r20;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 stereo = StereoParams.Load(0);
  float4 prev = StereoParams.Load(int3(2,0,0));
  
  r0.z = depthTexture.SampleLevel(samLinear_s, v1.xy, 0).x;
  mrtTexture0.GetDimensions(0, fDest.x, fDest.y, fDest.z);
  r1.xy = fDest.xy;
  r1.zw = float2(0.25,0.25) / r1.xy;
  r1.zw = v1.xy + r1.zw;
  r1.xy = r1.zw * r1.xy;
  r1.xy = (int2)r1.xy;
  r1.zw = float2(0,0);
  r1.xyzw = mrtTexture0.Load(r1.xyz).xyzw;
  r0.xy = v1.zw * float2(2,-2) + float2(-1,1);
  r0.w = 1;
  
  r2.w = dot(r0.xyzw, projInv_g._m03_m13_m23_m33);
  r20.xyzw = r0.xyzw;
  r20.x+=stereo.x*(stereo.y*r2.w-1);
  
  r2.x = dot(r20.xyzw, projInv_g._m00_m10_m20_m30);
  r2.y = dot(r20.xyzw, projInv_g._m01_m11_m21_m31);
  r2.z = dot(r20.xyzw, projInv_g._m02_m12_m22_m32);
  r2.w = dot(r20.xyzw, projInv_g._m03_m13_m23_m33);
  r2.xyz = r2.xyz / r2.www;
  r3.x = (int)r1.w & 1;
  if (r3.x != 0) {
    r1.xy = (uint2)r1.xy;
    r4.zw = r1.xy * float2(3.05180438e-05,3.05180438e-05) + float2(-1,-1);
    r1.x = 3.14159274 * r4.z;
    sincos(r1.x, r1.x, r5.x);
    r1.y = -r4.w * r4.w + 1;
    r1.y = sqrt(r1.y);
    r4.x = r5.x * r1.y;
    r4.y = r1.x * r1.y;
    r1.x = dot(v1.zw, float2(12.9898005,78.2330017));
    r1.x = sin(r1.x);
    r1.x = 43758.5469 * r1.x;
    r1.x = frac(r1.x);
    r3.yzw = float3(5.39830017,5.44269991,6.93709993) * r1.xxx;
    r3.yzw = frac(r3.yzw);
    r5.xyz = float3(21.5351009,14.3136997,15.3219004) + r3.yzw;
    r1.x = dot(r3.zwy, r5.xyz);
    r3.yzw = r3.yzw + r1.xxx;
    r3.yzw = r3.yyz * r3.wzw;
    r3.yzw = float3(95.4337006,97.5970001,93.8365021) * r3.yzw;
    r3.yzw = frac(r3.yzw);
    r3.yzw = r3.yzw * float3(2,2,2) + float3(-1,-1,-1);
    r1.x = dot(r3.yzw, r3.yzw);
    r1.x = rsqrt(r1.x);
    r3.yzw = r3.yzw * r1.xxx;
    r1.x = charaAOStrength_g + -charaAOCutOff_g;
    r1.x = 1 / r1.x;
    r5.xw = float2(0,1);
    r1.y = 0;
    r4.z = 0;
    while (true) {
      r6.x = cmp((int)r4.z >= 10);
      if (r6.x != 0) break;
      r6.x = dot(sphere_g[r4.z].xyz, r3.yzw);
      r6.x = r6.x + r6.x;
      r6.xyz = r3.yzw * -r6.xxx + sphere_g[r4.z].xyz;
      r6.z = dot(r6.xyz, r4.xyw);
      r6.w = cmp(0 < r6.z);
      r6.z = cmp(r6.z < 0);
      r6.z = (int)-r6.w + (int)r6.z;
      r6.z = (int)r6.z;
      r6.xy = r6.zz * r6.xy;
      r6.xy = aoSize_g.xy * r6.xy;
      r6.xy = r6.xy * float2(1,-1) + v1.zw;
      r6.xy = resolutionScaling_g.xy * r6.xy;
      r5.z = depthTexture.SampleLevel(samPoint_s, r6.xy, 0).x;
      r6.x = dot(projInv_g._m22_m32, r5.zw);
      r5.z = dot(projInv_g._m23_m33, r5.zw);
      r5.z = r6.x / r5.z;
      r5.z = r5.z + -r2.z;
      r6.x = cmp(r5.z >= charaAOCutOff_g);
      r6.x = r6.x ? 1.000000 : 0;
      r5.z = -charaAOCutOff_g + r5.z;
      r5.z = saturate(r5.z * r1.x);
      r6.y = r5.z * -2 + 3;
      r5.z = r5.z * r5.z;
      r5.z = -r6.y * r5.z + 1;
      r1.y = r6.x * r5.z + r1.y;
      r4.z = (int)r4.z + 1;
    }
    r5.y = 0.100000001 * r1.y;
    r2.w = 1;
    r6.x = dot(r2.xyzw, viewInv_g._m00_m10_m20_m30);
    r6.y = dot(r2.xyzw, viewInv_g._m01_m11_m21_m31);
    r6.z = dot(r2.xyzw, viewInv_g._m02_m12_m22_m32);
    r7.x = viewInv_g._m20;
    r7.y = viewInv_g._m21;
    r7.z = viewInv_g._m22;
    r1.x = dot(r4.xyw, r7.xyz);
    r1.xy = abs(r1.xx) * float2(-0.00249999994,0.00150000001) + float2(0.00749999983,0.000500000024);
    r3.yzw = r4.xyw * r1.xxx + r6.xyz;
    r4.xyz = rayMarchShadowDir_g.xyz * r1.yyy;
    r6.w = 1;
    r1.xy = float2(0,0);
    while (true) {
      r2.w = cmp((int)r1.y >= 10);
      if (r2.w != 0) break;
      r2.w = (int)r1.y;
      r6.xyz = r4.xyz * r2.www + r3.yzw;
      r7.x = dot(r6.xyzw, viewProj_g._m00_m10_m20_m30);
      r7.y = dot(r6.xyzw, viewProj_g._m01_m11_m21_m31);
      r7.z = dot(r6.xyzw, viewProj_g._m02_m12_m22_m32);
      r2.w = dot(r6.xyzw, viewProj_g._m03_m13_m23_m33);
	  
	  r7.x+=stereo.x*(r2.w-stereo.y);
	  
      r6.xyz = r7.xyz / r2.www;
      r7.xy = r6.xy * float2(0.5,0.5) + float2(0.5,0.5);
      r7.z = 1 + -r7.y;
      r5.zw = resolutionScaling_g.xy * r7.xz;
      r2.w = depthTexture.SampleLevel(samPoint_s, r5.zw, 0).x;
      r2.w = r2.w + -r6.z;
      r2.w = saturate(400000 * r2.w);
      r1.x = r2.w * 0.25 + r1.x;
      r1.y = (int)r1.y + 1;
    }
    r1.x = 1 + -r1.x;
    r1.x = max(0, r1.x);
    r3.yz = float2(0.5,0.5) + -v1.zw;
    r1.y = max(abs(r3.y), abs(r3.z));
    r1.y = -0.449999988 + r1.y;
    r1.y = max(0, r1.y);
    r1.y = 20 * r1.y;
    r2.w = 1 + -r1.x;
    r4.z = r1.y * r2.w + r1.x;
  } else {
    if (mapAOSampleCount_g != 0) {
      r1.w = (uint)r1.z >> 8;
      r1.xy = (int2)r1.zw & int2(255,255);
      r1.xy = (uint2)r1.xy;
      r1.zw = r1.xy * float2(0.00784313772,0.00784313772) + float2(-1,-1);
      r1.z = 3.14159274 * r1.z;
      sincos(r1.z, r6.x, r7.x);
      r1.z = -r1.w * r1.w + 1;
      r1.z = sqrt(r1.z);
      r1.x = r7.x * r1.z;
      r1.y = r6.x * r1.z;
      r3.yz = (int2)textureSize_g.xy;
      r3.yz = v1.zw * r3.yz;
      r3.yz = float2(0.25,0.25) * r3.yz;
      r5.zw = cmp(r3.yz >= -r3.yz);
      r3.yz = frac(abs(r3.yz));
      r3.yz = r5.zw ? r3.yz : -r3.yz;
      r3.yz = float2(4,4) * r3.yz;
      r3.yz = (int2)r3.yz;
      r6.x = dot(ditherMtx_g._m00_m10_m20_m30, icb[r3.y+0].xyzw);
      r6.y = dot(ditherMtx_g._m01_m11_m21_m31, icb[r3.y+0].xyzw);
      r6.z = dot(ditherMtx_g._m02_m12_m22_m32, icb[r3.y+0].xyzw);
      r6.w = dot(ditherMtx_g._m03_m13_m23_m33, icb[r3.y+0].xyzw);
      r1.z = dot(r6.xyzw, icb[r3.z+0].xyzw);
      r2.w = -10 + -r2.z;
      r3.yz = saturate(float2(0.00999999978,0.00249999994) * r2.ww);
      r2.w = r3.y * 0.197500005 + 0.00249999994;
      r3.y = saturate(-0.100000001 * r2.z);
      r3.y = r3.y * 0.189999998 + 0.00999999978;
      r3.w = 2 + -r3.y;
      r3.y = r3.z * r3.w + r3.y;
      r3.z = mapAOSampleCount_g;
      r6.y = v1.z;
      r6.z = -v1.z;
      r7.w = 1;
      r8.w = 1;
      r5.zw = float2(1,0);
      r3.w = 0;
      r4.w = r1.z;
      while (true) {
        r6.w = cmp((int)r5.w >= mapAOSampleCount_g);
        if (r6.w != 0) break;
        r6.x = v1.w + r4.w;
        r6.w = dot(float2(78.2330017,12.9898005), r6.xy);
        r6.w = sin(r6.w);
        r6.w = 43758.5469 * r6.w;
        r6.w = frac(r6.w);
        r9.z = r6.w * 2 + -1;
        r6.x = dot(float2(78.2330017,12.9898005), r6.xz);
        r6.x = sin(r6.x);
        r6.x = 43758.5469 * r6.x;
        r6.x = frac(r6.x);
        r6.x = 6.28318548 * r6.x;
        sincos(r6.x, r6.x, r10.x);
        r6.w = -r9.z * r9.z + 1;
        r6.w = sqrt(r6.w);
        r10.y = r6.x;
        r9.xy = r10.xy * r6.ww;
        r6.x = 1 + r4.w;
        r6.w = r6.x / r3.z;
        r6.w = sqrt(r6.w);
        r6.w = r6.w * r3.y;
        r9.xyz = r9.xyz * r6.www;
        r6.w = dot(-r1.xyw, r9.xyz);
        r6.w = cmp(r6.w < 0);
        r9.xyz = r6.www ? r9.xyz : -r9.xyz;
        r7.xyz = r9.xyz + r2.xyz;
        r9.x = dot(r7.xyzw, proj_g._m00_m10_m20_m30);
        r9.y = dot(r7.xyzw, proj_g._m01_m11_m21_m31);
        r6.w = dot(r7.xyzw, proj_g._m03_m13_m23_m33);
		
		r9.x+=stereo.x*(r6.w-stereo.y);
		
        r7.xy = r9.xy / r6.ww;
        r7.xy = r7.xy * float2(0.5,0.5) + float2(0.5,0.5);
        r6.w = 1 + -r7.y;
        r9.x = cmp(r7.x < 0);
        r9.y = cmp(r6.w < 0);
        r9.x = (int)r9.y | (int)r9.x;
        r9.y = cmp(1 < r7.x);
        r9.x = (int)r9.y | (int)r9.x;
        r6.w = cmp(1 < r6.w);
        r6.w = (int)r6.w | (int)r9.x;
        if (r6.w != 0) {
          r9.y = (int)r5.w + 1;
          r9.x = r5.z;
          r4.w = r6.x;
          r5.zw = r9.xy;
          continue;
        }
        r7.z = 1 + -r7.y;
        r9.xy = resolutionScaling_g.xy * r7.xz;
        r6.w = intensityMap.SampleLevel(samLinear_s, r9.xy, 0).x;
        r5.z = min(r6.w, r5.z);
        r8.z = depthTexture.SampleLevel(samLinear_s, r9.xy, 0).x;
        r8.xy = r7.xz * float2(2,-2) + float2(-1,1);
		
		r6.w = dot(r8.xyzw, projInv_g._m03_m13_m23_m33);
		r8.x+=stereo.x*(stereo.y*r6.w-1);
		
        r7.x = dot(r8.xyzw, projInv_g._m00_m10_m20_m30);
        r7.y = dot(r8.xyzw, projInv_g._m01_m11_m21_m31);
        r7.z = dot(r8.xyzw, projInv_g._m02_m12_m22_m32);
        r6.w = dot(r8.xyzw, projInv_g._m03_m13_m23_m33);
        r7.xyz = r7.xyz / r6.www;
        r7.xyz = r7.xyz + -r2.xyz;
        r6.w = dot(r7.xyz, r1.xyw);
        r6.w = r6.w + -r2.w;
        r6.w = max(0, r6.w);
        r7.x = dot(r7.xyz, r7.xyz);
        r7.y = cmp(r7.x == 0.000000);
        r7.y = r7.y ? 1.000000 : 0;
        r7.x = r7.x + r7.y;
        r6.w = r6.w / r7.x;
        r3.w = r6.w + r3.w;
        r5.w = (int)r5.w + 1;
        r4.w = r6.x;
      }
      r1.xy = resolutionScaling_g.xy * v1.zw;
      r1.x = intensityMap.SampleLevel(samLinear_s, r1.xy, 0).x;
      r1.x = min(r5.z, r1.x);
      r1.x = r3.y * r1.x;
      r1.x = r3.w * r1.x;
      r1.x = mapAOIntensity_g * r1.x;
      r1.x = r1.x / r3.z;
      r5.x = min(mapAOLimit_g, r1.x);
    } else {
      r5.x = 0;
    }
    r5.y = 0;
    r4.z = 1;
  }
  r4.xy = float2(1,1) + -r5.xy;
  
  r2.w = dot(r0.xyzw, projInv_g._m03_m13_m23_m33);
  r0.x+=stereo.x*(stereo.y*r2.w-1);
  
  r1.x = dot(r0.xyzw, viewProjInv_g._m00_m10_m20_m30);
  r1.y = dot(r0.xyzw, viewProjInv_g._m01_m11_m21_m31);
  r1.z = dot(r0.xyzw, viewProjInv_g._m02_m12_m22_m32);
  r1.w = dot(r0.xyzw, viewProjInv_g._m03_m13_m23_m33);
  r0.xyzw = r1.xyzw / r1.wwww;
  r1.x = dot(r0.xyzw, prevViewProj_g._m00_m10_m20_m30);
  r1.y = dot(r0.xyzw, prevViewProj_g._m01_m11_m21_m31);
  r0.x = dot(r0.xyzw, prevViewProj_g._m03_m13_m23_m33);
  
  r1.x+=prev.x*(r0.x-prev.y);
  
  r0.xy = r1.xy / r0.xx;
  r0.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5);
  r0.z = 1 + -r0.y;
  r0.xy = resolutionScaling_g.xy * r0.xz;
  r0.xy = prevAoScaling_g.xy * r0.xy;
  r0.xyz = prevTexture.SampleLevel(samLinear_s, r0.xy, 0).xyz;
  r1.xyz = r4.xyz + -r0.xyz;
  o0.xyz = r1.xyz * float3(0.25,0.25,1) + r0.xyz;
  o0.w = r3.x ? 1 : 0;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.163 on Thu Aug 21 18:26:56 2025
//
//
// Note: shader requires additional functionality:
//       Early depth-stencil
//
//
// Buffer Definitions:
//
// cbuffer cb_scene
// {
//
//   float4x4 view_g;                   // Offset:    0 Size:    64 [unused]
//   float4x4 viewInv_g;                // Offset:   64 Size:    64
//   float4x4 proj_g;                   // Offset:  128 Size:    64
//   float4x4 projInv_g;                // Offset:  192 Size:    64
//   float4x4 viewProj_g;               // Offset:  256 Size:    64
//   float4x4 viewProjInv_g;            // Offset:  320 Size:    64
//   float2 vpSize_g;                   // Offset:  384 Size:     8 [unused]
//   float2 invVPSize_g;                // Offset:  392 Size:     8 [unused]
//   float3 lightColor_g;               // Offset:  400 Size:    12 [unused]
//   float disableMapObjNearFade_g;     // Offset:  412 Size:     4 [unused]
//   float3 lightDirection_g;           // Offset:  416 Size:    12 [unused]
//   float gameTime_g;                  // Offset:  428 Size:     4 [unused]
//   float3 sceneShadowColor_g;         // Offset:  432 Size:    12 [unused]
//   int shadowmapCascadeCount_g;       // Offset:  444 Size:     4 [unused]
//   float3 windDirection_g;            // Offset:  448 Size:    12 [unused]
//   float sceneTime_g;                 // Offset:  460 Size:     4 [unused]
//   float2 lightTileSizeInv_g;         // Offset:  464 Size:     8 [unused]
//   float fogNearDistance_g;           // Offset:  472 Size:     4 [unused]
//   float fogFadeRangeInv_g;           // Offset:  476 Size:     4 [unused]
//   float3 fogColor_g;                 // Offset:  480 Size:    12 [unused]
//   float fogIntensity_g;              // Offset:  492 Size:     4 [unused]
//   float fogHeight_g;                 // Offset:  496 Size:     4 [unused]
//   float fogHeightRangeInv_g;         // Offset:  500 Size:     4 [unused]
//   float windWaveTime_g;              // Offset:  504 Size:     4 [unused]
//   float windWaveFrequency_g;         // Offset:  508 Size:     4 [unused]
//   uint localLightProbeCount_g;       // Offset:  512 Size:     4 [unused]
//   float lightSpecularGlossiness_g;   // Offset:  516 Size:     4 [unused]
//   float lightSpecularIntensity_g;    // Offset:  520 Size:     4 [unused]
//   float localShadowResolutionInv_g;  // Offset:  524 Size:     4 [unused]
//   float4x4 ditherMtx_g;              // Offset:  528 Size:    64
//   float4 lightProbe_g[9];            // Offset:  592 Size:   144 [unused]
//   float3 chrLightDir_g;              // Offset:  736 Size:    12 [unused]
//   float windForce_g;                 // Offset:  748 Size:     4 [unused]
//   float4 mapColor_g;                 // Offset:  752 Size:    16 [unused]
//   float4 clipPlane_g;                // Offset:  768 Size:    16 [unused]
//   float2 resolutionScaling_g;        // Offset:  784 Size:     8
//   float2 invShadowSize_g;            // Offset:  792 Size:     8 [unused]
//   float3 chrShadowColor_g;           // Offset:  800 Size:    12 [unused]
//   float shadowFadeNear_g;            // Offset:  812 Size:     4 [unused]
//   float4 frustumPlanes_g[6];         // Offset:  816 Size:    96 [unused]
//   float3 shadowSplitDistance_g;      // Offset:  912 Size:    12 [unused]
//   float shadowFadeRangeInv_g;        // Offset:  924 Size:     4 [unused]
//   float4x4 shadowMtx_g[4];           // Offset:  928 Size:   256 [unused]
//
// }
//
// cbuffer cb_local
// {
//
//   int2 textureSize_g;                // Offset:    0 Size:     8
//   float2 aoSize_g;                   // Offset:    8 Size:     8
//   float charaAOStrength_g;           // Offset:   16 Size:     4
//   float charaAOCutOff_g;             // Offset:   20 Size:     4
//   int mapAOSampleCount_g;            // Offset:   24 Size:     4
//   float mapAOIntensity_g;            // Offset:   28 Size:     4
//   float3 mapAOColor_g;               // Offset:   32 Size:    12 [unused]
//   float mapAOFadeBeginDistance_g;    // Offset:   44 Size:     4 [unused]
//   float mapAOFadeRangeInv_g;         // Offset:   48 Size:     4 [unused]
//   float mapAOLimit_g;                // Offset:   52 Size:     4
//   float mapAOBias_g;                 // Offset:   56 Size:     4 [unused]
//   float mapAODistMaxInv_g;           // Offset:   60 Size:     4 [unused]
//   float2 texelSize_g;                // Offset:   64 Size:     8 [unused]
//   float2 prevAoScaling_g;            // Offset:   72 Size:     8
//   float4 sphere_g[16];               // Offset:   80 Size:   256
//
// }
//
// cbuffer cb_local2
// {
//
//   float3 rayMarchShadowDir_g;        // Offset:    0 Size:    12
//   float4x4 prevViewProj_g;           // Offset:   16 Size:    64
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// samPoint                          sampler      NA          NA    0        1
// samLinear                         sampler      NA          NA    1        1
// depthTexture                      texture  float4          2d    0        1
// mrtTexture0                       texture   uint4          2d    1        1
// intensityMap                      texture  float4          2d    2        1
// prevTexture                       texture  float4          2d    3        1
// cb_scene                          cbuffer      NA          NA    0        1
// cb_local                          cbuffer      NA          NA    2        1
// cb_local2                         cbuffer      NA          NA    3        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed | forceEarlyDepthStencil
dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0},
                              { 0, 1.000000, 0, 0},
                              { 0, 0, 1.000000, 0},
                              { 0, 0, 0, 1.000000} }
dcl_constantbuffer CB0[50], immediateIndexed
dcl_constantbuffer CB2[16], dynamicIndexed
dcl_constantbuffer CB3[5], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (uint,uint,uint,uint) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_input_ps linear v1.xyzw
dcl_output o0.xyzw
dcl_temps 11
sample_l_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t0.yzxw, s1, l(0.000000)
resinfo_indexable(texture2d)(uint,uint,uint,uint) r1.xy, l(0), t1.xyzw
div r1.zw, l(0.000000, 0.000000, 0.250000, 0.250000), r1.xxxy
add r1.zw, r1.zzzw, v1.xxxy
mul r1.xy, r1.xyxx, r1.zwzz
ftoi r1.xy, r1.xyxx
mov r1.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r1.xyzw, r1.xyzw, t1.xyzw
mad r0.xy, v1.zwzz, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
mov r0.w, l(1.000000)
dp4 r2.x, r0.xyzw, cb0[12].xyzw
dp4 r2.y, r0.xyzw, cb0[13].xyzw
dp4 r2.z, r0.xyzw, cb0[14].xyzw
dp4 r2.w, r0.xyzw, cb0[15].xyzw
div r2.xyz, r2.xyzx, r2.wwww
and r3.x, r1.w, l(1)
if_nz r3.x
  utof r1.xy, r1.xyxx
  mad r4.zw, r1.xxxy, l(0.000000, 0.000000, 0.0000305180438, 0.0000305180438), l(0.000000, 0.000000, -1.000000, -1.000000)
  mul r1.x, r4.z, l(3.14159274)
  sincos r1.x, r5.x, r1.x
  mad r1.y, -r4.w, r4.w, l(1.000000)
  sqrt r1.y, r1.y
  mul r4.x, r1.y, r5.x
  mul r4.y, r1.y, r1.x
  dp2 r1.x, v1.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000)
  sincos r1.x, null, r1.x
  mul r1.x, r1.x, l(43758.546875)
  frc r1.x, r1.x
  mul r3.yzw, r1.xxxx, l(0.000000, 5.398300, 5.442700, 6.937100)
  frc r3.yzw, r3.yyzw
  add r5.xyz, r3.yzwy, l(21.535101, 14.313700, 15.321900, 0.000000)
  dp3 r1.x, r3.zwyz, r5.xyzx
  add r3.yzw, r1.xxxx, r3.yyzw
  mul r3.yzw, r3.wwzw, r3.yyyz
  mul r3.yzw, r3.yyzw, l(0.000000, 95.433701, 97.597000, 93.836502)
  frc r3.yzw, r3.yyzw
  mad r3.yzw, r3.yyzw, l(0.000000, 2.000000, 2.000000, 2.000000), l(0.000000, -1.000000, -1.000000, -1.000000)
  dp3 r1.x, r3.yzwy, r3.yzwy
  rsq r1.x, r1.x
  mul r3.yzw, r1.xxxx, r3.yyzw
  add r1.x, -cb2[1].y, cb2[1].x
  div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x
  mov r5.xw, l(0,0,0,1.000000)
  mov r1.y, l(0)
  mov r4.z, l(0)
  loop
    ige r6.x, r4.z, l(10)
    breakc_nz r6.x
    dp3 r6.x, cb2[r4.z + 5].xyzx, r3.yzwy
    add r6.x, r6.x, r6.x
    mad r6.xyz, r3.yzwy, -r6.xxxx, cb2[r4.z + 5].xyzx
    dp3 r6.z, r6.xyzx, r4.xywx
    lt r6.w, l(0.000000), r6.z
    lt r6.z, r6.z, l(0.000000)
    iadd r6.z, -r6.w, r6.z
    itof r6.z, r6.z
    mul r6.xy, r6.xyxx, r6.zzzz
    mul r6.xy, r6.xyxx, cb2[0].zwzz
    mad r6.xy, r6.xyxx, l(1.000000, -1.000000, 0.000000, 0.000000), v1.zwzz
    mul r6.xy, r6.xyxx, cb0[49].xyxx
    sample_l_indexable(texture2d)(float,float,float,float) r5.z, r6.xyxx, t0.zwxy, s0, l(0.000000)
    dp2 r6.x, cb0[14].zwzz, r5.zwzz
    dp2 r5.z, cb0[15].zwzz, r5.zwzz
    div r5.z, r6.x, r5.z
    add r5.z, -r2.z, r5.z
    ge r6.x, r5.z, cb2[1].y
    and r6.x, r6.x, l(0x3f800000)
    add r5.z, r5.z, -cb2[1].y
    mul_sat r5.z, r1.x, r5.z
    mad r6.y, r5.z, l(-2.000000), l(3.000000)
    mul r5.z, r5.z, r5.z
    mad r5.z, -r6.y, r5.z, l(1.000000)
    mad r1.y, r6.x, r5.z, r1.y
    iadd r4.z, r4.z, l(1)
  endloop
  mul r5.y, r1.y, l(0.100000)
  mov r2.w, l(1.000000)
  dp4 r6.x, r2.xyzw, cb0[4].xyzw
  dp4 r6.y, r2.xyzw, cb0[5].xyzw
  dp4 r6.z, r2.xyzw, cb0[6].xyzw
  mov r7.x, cb0[4].z
  mov r7.y, cb0[5].z
  mov r7.z, cb0[6].z
  dp3 r1.x, r4.xywx, r7.xyzx
  mad r1.xy, |r1.xxxx|, l(-0.002500, 0.001500, 0.000000, 0.000000), l(0.007500, 0.000500, 0.000000, 0.000000)
  mad r3.yzw, r4.xxyw, r1.xxxx, r6.xxyz
  mul r4.xyz, r1.yyyy, cb3[0].xyzx
  mov r6.w, l(1.000000)
  mov r1.xy, l(0,0,0,0)
  loop
    ige r2.w, r1.y, l(10)
    breakc_nz r2.w
    itof r2.w, r1.y
    mad r6.xyz, r4.xyzx, r2.wwww, r3.yzwy
    dp4 r7.x, r6.xyzw, cb0[16].xyzw
    dp4 r7.y, r6.xyzw, cb0[17].xyzw
    dp4 r7.z, r6.xyzw, cb0[18].xyzw
    dp4 r2.w, r6.xyzw, cb0[19].xyzw
    div r6.xyz, r7.xyzx, r2.wwww
    mad r7.xy, r6.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
    add r7.z, -r7.y, l(1.000000)
    mul r5.zw, r7.xxxz, cb0[49].xxxy
    sample_l_indexable(texture2d)(float,float,float,float) r2.w, r5.zwzz, t0.yzwx, s0, l(0.000000)
    add r2.w, -r6.z, r2.w
    mul_sat r2.w, r2.w, l(400000.000000)
    mad r1.x, r2.w, l(0.250000), r1.x
    iadd r1.y, r1.y, l(1)
  endloop
  add r1.x, -r1.x, l(1.000000)
  max r1.x, r1.x, l(0.000000)
  add r3.yz, -v1.zzwz, l(0.000000, 0.500000, 0.500000, 0.000000)
  max r1.y, |r3.z|, |r3.y|
  add r1.y, r1.y, l(-0.450000)
  max r1.y, r1.y, l(0.000000)
  mul r1.y, r1.y, l(20.000000)
  add r2.w, -r1.x, l(1.000000)
  mad r4.z, r1.y, r2.w, r1.x
else
  if_nz cb2[1].z
    ushr r1.w, r1.z, l(8)
    and r1.xy, r1.zwzz, l(255, 255, 0, 0)
    utof r1.xy, r1.xyxx
    mad r1.zw, r1.xxxy, l(0.000000, 0.000000, 0.00784313772, 0.00784313772), l(0.000000, 0.000000, -1.000000, -1.000000)
    mul r1.z, r1.z, l(3.14159274)
    sincos r6.x, r7.x, r1.z
    mad r1.z, -r1.w, r1.w, l(1.000000)
    sqrt r1.z, r1.z
    mul r1.x, r1.z, r7.x
    mul r1.y, r1.z, r6.x
    itof r3.yz, cb2[0].xxyx
    mul r3.yz, r3.yyzy, v1.zzwz
    mul r3.yz, r3.yyzy, l(0.000000, 0.250000, 0.250000, 0.000000)
    ge r5.zw, r3.yyyz, -r3.yyyz
    frc r3.yz, |r3.yyzy|
    movc r3.yz, r5.zzwz, r3.yyzy, -r3.yyzy
    mul r3.yz, r3.yyzy, l(0.000000, 4.000000, 4.000000, 0.000000)
    ftoi r3.yz, r3.yyzy
    dp4 r6.x, cb0[33].xyzw, icb[r3.y + 0].xyzw
    dp4 r6.y, cb0[34].xyzw, icb[r3.y + 0].xyzw
    dp4 r6.z, cb0[35].xyzw, icb[r3.y + 0].xyzw
    dp4 r6.w, cb0[36].xyzw, icb[r3.y + 0].xyzw
    dp4 r1.z, r6.xyzw, icb[r3.z + 0].xyzw
    add r2.w, -r2.z, l(-10.000000)
    mul_sat r3.yz, r2.wwww, l(0.000000, 0.010000, 0.002500, 0.000000)
    mad r2.w, r3.y, l(0.197500), l(0.002500)
    mul_sat r3.y, r2.z, l(-0.100000)
    mad r3.y, r3.y, l(0.190000), l(0.010000)
    add r3.w, -r3.y, l(2.000000)
    mad r3.y, r3.z, r3.w, r3.y
    itof r3.z, cb2[1].z
    mov r6.y, v1.z
    mov r6.z, -v1.z
    mov r7.w, l(1.000000)
    mov r8.w, l(1.000000)
    mov r5.zw, l(0,0,1.000000,0)
    mov r3.w, l(0)
    mov r4.w, r1.z
    loop
      ige r6.w, r5.w, cb2[1].z
      breakc_nz r6.w
      add r6.x, r4.w, v1.w
      dp2 r6.w, l(78.233002, 12.989800, 0.000000, 0.000000), r6.xyxx
      sincos r6.w, null, r6.w
      mul r6.w, r6.w, l(43758.546875)
      frc r6.w, r6.w
      mad r9.z, r6.w, l(2.000000), l(-1.000000)
      dp2 r6.x, l(78.233002, 12.989800, 0.000000, 0.000000), r6.xzxx
      sincos r6.x, null, r6.x
      mul r6.x, r6.x, l(43758.546875)
      frc r6.x, r6.x
      mul r6.x, r6.x, l(6.28318548)
      sincos r6.x, r10.x, r6.x
      mad r6.w, -r9.z, r9.z, l(1.000000)
      sqrt r6.w, r6.w
      mov r10.y, r6.x
      mul r9.xy, r6.wwww, r10.xyxx
      add r6.x, r4.w, l(1.000000)
      div r6.w, r6.x, r3.z
      sqrt r6.w, r6.w
      mul r6.w, r3.y, r6.w
      mul r9.xyz, r6.wwww, r9.xyzx
      dp3 r6.w, -r1.xywx, r9.xyzx
      lt r6.w, r6.w, l(0.000000)
      movc r9.xyz, r6.wwww, r9.xyzx, -r9.xyzx
      add r7.xyz, r2.xyzx, r9.xyzx
      dp4 r9.x, r7.xyzw, cb0[8].xyzw
      dp4 r9.y, r7.xyzw, cb0[9].xyzw
      dp4 r6.w, r7.xyzw, cb0[11].xyzw
      div r7.xy, r9.xyxx, r6.wwww
      mad r7.xy, r7.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
      add r6.w, -r7.y, l(1.000000)
      lt r9.x, r7.x, l(0.000000)
      lt r9.y, r6.w, l(0.000000)
      or r9.x, r9.y, r9.x
      lt r9.y, l(1.000000), r7.x
      or r9.x, r9.y, r9.x
      lt r6.w, l(1.000000), r6.w
      or r6.w, r6.w, r9.x
      if_nz r6.w
        iadd r9.y, r5.w, l(1)
        mov r9.x, r5.z
        mov r4.w, r6.x
        mov r5.zw, r9.xxxy
        continue
      endif
      add r7.z, -r7.y, l(1.000000)
      mul r9.xy, r7.xzxx, cb0[49].xyxx
      sample_l_indexable(texture2d)(float,float,float,float) r6.w, r9.xyxx, t2.yzwx, s1, l(0.000000)
      min r5.z, r5.z, r6.w
      sample_l_indexable(texture2d)(float,float,float,float) r8.z, r9.xyxx, t0.yzxw, s1, l(0.000000)
      mad r8.xy, r7.xzxx, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
      dp4 r7.x, r8.xyzw, cb0[12].xyzw
      dp4 r7.y, r8.xyzw, cb0[13].xyzw
      dp4 r7.z, r8.xyzw, cb0[14].xyzw
      dp4 r6.w, r8.xyzw, cb0[15].xyzw
      div r7.xyz, r7.xyzx, r6.wwww
      add r7.xyz, -r2.xyzx, r7.xyzx
      dp3 r6.w, r7.xyzx, r1.xywx
      add r6.w, -r2.w, r6.w
      max r6.w, r6.w, l(0.000000)
      dp3 r7.x, r7.xyzx, r7.xyzx
      eq r7.y, r7.x, l(0.000000)
      and r7.y, r7.y, l(0x3f800000)
      add r7.x, r7.y, r7.x
      div r6.w, r6.w, r7.x
      add r3.w, r3.w, r6.w
      iadd r5.w, r5.w, l(1)
      mov r4.w, r6.x
    endloop
    mul r1.xy, v1.zwzz, cb0[49].xyxx
    sample_l_indexable(texture2d)(float,float,float,float) r1.x, r1.xyxx, t2.xyzw, s1, l(0.000000)
    min r1.x, r1.x, r5.z
    mul r1.x, r1.x, r3.y
    mul r1.x, r1.x, r3.w
    mul r1.x, r1.x, cb2[1].w
    div r1.x, r1.x, r3.z
    min r5.x, r1.x, cb2[3].y
  else
    mov r5.x, l(0)
  endif
  mov r5.y, l(0)
  mov r4.z, l(1.000000)
endif
add r4.xy, -r5.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
dp4 r1.x, r0.xyzw, cb0[20].xyzw
dp4 r1.y, r0.xyzw, cb0[21].xyzw
dp4 r1.z, r0.xyzw, cb0[22].xyzw
dp4 r1.w, r0.xyzw, cb0[23].xyzw
div r0.xyzw, r1.xyzw, r1.wwww
dp4 r1.x, r0.xyzw, cb3[1].xyzw
dp4 r1.y, r0.xyzw, cb3[2].xyzw
dp4 r0.x, r0.xyzw, cb3[4].xyzw
div r0.xy, r1.xyxx, r0.xxxx
mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
add r0.z, -r0.y, l(1.000000)
mul r0.xy, r0.xzxx, cb0[49].xyxx
mul r0.xy, r0.xyxx, cb2[4].zwzz
sample_l_indexable(texture2d)(float,float,float,float) r0.xyz, r0.xyxx, t3.xyzw, s1, l(0.000000)
add r1.xyz, -r0.xyzx, r4.xyzx
mad o0.xyz, r1.xyzx, l(0.250000, 0.250000, 1.000000, 0.000000), r0.xyzx
movc o0.w, r3.x, l(1.000000), l(0)
ret
// Approximately 263 instruction slots used

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