// AUTOMATICALLY CONVERTED FROM SHADER FIXES 
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.164 on Wed Oct 28 14:28:24 2026
//
//
// Buffer Definitions:
//
// cbuffer ShadowApplyConstants
// {
//
//   row_major float4x4 g_xLightClipSpaceToCameraClipSpace;// Offset:    0 Size:    64 [unused]
//   row_major float4x4 g_xCameraViewSpaceToLightClipSpace;// Offset:   64 Size:    64 [unused]
//   row_major float4x4 g_xCameraViewSpaceToLightViewSpace;// Offset:  128 Size:    64 [unused]
//   row_major float4x4 g_xCameraViewSpaceToWorldSpace;// Offset:  192 Size:    64
//   row_major float4x4 g_xUVXForm;     // Offset:  256 Size:    64 [unused]
//   float4 g_xLightPos;                // Offset:  320 Size:    16
//   float4 g_xShadowDirection;         // Offset:  336 Size:    16 [unused]
//   float4 g_xSelfShadowBias;          // Offset:  352 Size:    16
//   float4 g_xShadowTextureSize;       // Offset:  368 Size:    16 [unused]
//   float g_fTwoOverScreenWidth;       // Offset:  384 Size:     4
//   float g_fTwoOverScreenHeight;      // Offset:  388 Size:     4 [unused]
//   float g_fCameraTanHalfHorizFOV;    // Offset:  392 Size:     4
//   float g_fCameraTanHalfVertFOV;     // Offset:  396 Size:     4 [unused]
//   bool g_bUseNoise;                  // Offset:  400 Size:     4
//   float g_fShadowFilterTextureScale; // Offset:  404 Size:     4
//   float g_fShadowFilterSize;         // Offset:  408 Size:     4
//   float g_fShadowStrength;           // Offset:  412 Size:     4
//   bool g_bCreatingShadowMask;        // Offset:  416 Size:     4
//   float g_fShadowFrustumNearPlaneDistance;// Offset:  420 Size:     4
//   float g_fOneOverShadowFrustumPlaneSeparation;// Offset:  424 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// g_xFilteredWrap_s                 sampler      NA          NA    4        1
// g_xFilteredClamp_s                sampler      NA          NA    5        1
// g_xKernelRotationTexture          texture  float4          2d   50        1
// g_xNormalDepthTexture             texture  float4          2d   51        1
// g_xShadowBufferCube               texture  float4        cube   53        1
// StereoParams                      texture  float4          2d  125        1
// ShadowApplyConstants              cbuffer      NA          NA   10        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xy
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_0
dcl_immediateConstantBuffer { { -0.326212, -0.405805, 0, 0},
                              { -0.840144, -0.073580, 0, 0},
                              { -0.695914, 0.457137, 0, 0},
                              { -0.203345, 0.620716, 0, 0},
                              { 0.962340, -0.194983, 0, 0},
                              { 0.473434, -0.480026, 0, 0},
                              { 0.519456, 0.767022, 0, 0},
                              { 0.185461, -0.893124, 0, 0},
                              { 0.507431, 0.064425, 0, 0},
                              { 0.896420, 0.412458, 0, 0},
                              { -0.321940, -0.932615, 0, 0},
                              { -0.791559, -0.597705, 0, 0} }
dcl_constantbuffer CB10[27], immediateIndexed
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_resource_texture2d (float,float,float,float) t50
dcl_resource_texture2d (float,float,float,float) t51
dcl_resource_texturecube (float,float,float,float) t53
dcl_resource_buffer (float,float,float,float) t125
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 6
round_z r0.xy, v0.xyxx
ftoi r0.xy, r0.xyxx
mov r0.zw, l(0,0,0,0)
ld r0.xyzw, r0.xyzw, t51.xyzw
dp2 r0.w, r0.xyxx, r0.xyxx
add r0.w, -r0.w, l(1.000000)
sqrt r0.w, |r0.w|
lt r1.x, l(0.000000), r0.z
movc r1.z, r1.x, r0.w, -r0.w
mul r0.w, |r0.z|, cb10[24].z
mad r2.yz, v0.xxyx, cb10[24].xxxx, l(0.000000, -1.000000, -1.000000, 0.000000)
ld r3.xyzw, l(0, 0, 0, 0), t125.xyzw
div r1.w, r3.y, |r0.z|
add r1.w, -r1.w, l(1.000000)
mad r2.x, -r3.x, r1.w, r2.y
mul r2.xy, r0.wwww, r2.xzxx
mul r3.xyzw, r2.yyyy, cb10[13].xyzw
mad r2.xyzw, r2.xxxx, cb10[12].xyzw, r3.xyzw
mad r2.xyzw, |r0.zzzz|, cb10[14].xyzw, r2.xyzw
add r2.xyzw, r2.xyzw, cb10[15].xyzw
add r2.xyzw, -r2.xyzw, cb10[20].xyzw
dp4 r0.z, r2.xyzw, r2.xyzw
sqrt r0.z, r0.z
div r2.xyz, r2.xyzx, r0.zzzz
add r0.z, r0.z, -cb10[26].y
mul r0.w, r0.z, cb10[26].z
mov r1.xy, r0.xyxx
dp3_sat r0.x, r2.xyzx, r1.xyzx
add r0.y, -r0.x, l(1.000000)
mad r0.y, r0.y, cb10[22].x, cb10[22].y
mad r0.y, r0.w, cb10[22].z, r0.y
mad r1.w, cb10[26].z, r0.z, -r0.y
add r0.x, r0.x, r0.x
min r0.x, r0.x, l(1.000000)
mad_sat r0.y, r1.w, l(2.000000), l(-1.000000)
mad r0.y, r0.y, l(2.000000), cb10[25].z
max r0.y, r0.y, l(0.200000)
mul r3.x, r0.y, cb10[25].y
movc r0.y, cb10[25].x, l(1), l(0)
if_nz r0.y
  mul r4.xyzw, r2.xyxy, l(-16.000000, 16.000000, -64.000000, 64.000000)
  sample r5.xyzw, r4.xyxx, t50.xyzw, s4
  mad r0.yz, r5.yyzy, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
  mul r0.yz, r3.xxxx, r0.yyzy
  sample r4.xyzw, r4.zwzz, t50.xyzw, s4
  mad r4.xy, r4.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
  mul r4.xy, r3.xxxx, r4.xyxx
  mul r4.xy, r4.xyxx, l(0.330000, 0.330000, 0.000000, 0.000000)
  mad r3.xy, r0.yzyy, l(0.660000, 0.660000, 0.000000, 0.000000), r4.xyxx
else
  mov r3.y, l(0)
endif
mul r1.xyz, r2.xyzx, l(-1.000000, 1.000000, -1.000000, 0.000000)
mov r3.z, -r3.x
mov r2.zw, l(0,0,0,0)
mov r0.yz, l(0,0,0,0)
loop
  ftoi r0.w, r0.z
  ige r3.w, r0.w, l(12)
  if_nz r3.w
    break
  endif
  ftou r3.w, r0.z
  dp2 r2.x, icb[r3.w + 0].xyxx, r3.xyxx
  dp2 r2.y, icb[r3.w + 0].xyxx, r3.yzyy
  add r4.xyzw, r1.xyzw, r2.xyzw
  sample r5.xyzw, r4.xyzx, t53.xyzw, s5
  lt r2.x, r5.x, r4.w
  and r2.x, r2.x, l(0x3f800000)
  add r0.y, r0.y, r2.x
  iadd r0.w, r0.w, l(1)
  itof r0.z, r0.w
endloop
mul r0.y, r0.y, cb10[25].w
add r0.z, -r1.w, l(1.000000)
mul r0.y, r0.y, l(0.0833333358)
mul_sat r0.z, r0.z, r0.y
mul r0.x, r0.x, r0.z
movc_sat o0.w, cb10[26].x, r0.y, r0.x
mov o0.xyz, l(0,0,0,0)
ret
// Approximately 81 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.164 on Wed Oct 28 14:28:24 2026
//
// cbuffer ShadowApplyConstants : register(b10)
// {
//   row_major float4x4 g_xLightClipSpaceToCameraClipSpace : packoffset(c0);
//   row_major float4x4 g_xCameraViewSpaceToLightClipSpace : packoffset(c4);
//   row_major float4x4 g_xCameraViewSpaceToLightViewSpace : packoffset(c8);
//   row_major float4x4 g_xCameraViewSpaceToWorldSpace : packoffset(c12);
//   row_major float4x4 g_xUVXForm : packoffset(c16);
//   float4 g_xLightPos : packoffset(c20);
//   float4 g_xShadowDirection : packoffset(c21);
//   float4 g_xSelfShadowBias : packoffset(c22);
//   float4 g_xShadowTextureSize : packoffset(c23);
//   float g_fTwoOverScreenWidth : packoffset(c24);
//   float g_fTwoOverScreenHeight : packoffset(c24.y);
//   float g_fCameraTanHalfHorizFOV : packoffset(c24.z);
//   float g_fCameraTanHalfVertFOV : packoffset(c24.w);
//   bool g_bUseNoise : packoffset(c25);
//   float g_fShadowFilterTextureScale : packoffset(c25.y);
//   float g_fShadowFilterSize : packoffset(c25.z);
//   float g_fShadowStrength : packoffset(c25.w);
//   bool g_bCreatingShadowMask : packoffset(c26);
//   float g_fShadowFrustumNearPlaneDistance : packoffset(c26.y);
//   float g_fOneOverShadowFrustumPlaneSeparation : packoffset(c26.z);
// }
//
// SamplerState g_xFilteredWrap_s_s : register(s4);
// SamplerState g_xFilteredClamp_s_s : register(s5);
// Texture2D<float4> g_xKernelRotationTexture : register(t50);
// Texture2D<float4> g_xNormalDepthTexture : register(t51);
// TextureCube<float4> g_xShadowBufferCube : register(t53);
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Buffer<float4> StereoParams : register(t125);
//
//
// void main(
//   float4 v0 : SV_Position0,
//   out float4 o0 : SV_Target0)
// {
//   const float4 icb[] = { { -0.326212, -0.405805, 0, 0},
//                               { -0.840144, -0.073580, 0, 0},
//                               { -0.695914, 0.457137, 0, 0},
//                               { -0.203345, 0.620716, 0, 0},
//                               { 0.962340, -0.194983, 0, 0},
//                               { 0.473434, -0.480026, 0, 0},
//                               { 0.519456, 0.767022, 0, 0},
//                               { 0.185461, -0.893124, 0, 0},
//                               { 0.507431, 0.064425, 0, 0},
//                               { 0.896420, 0.412458, 0, 0},
//                               { -0.321940, -0.932615, 0, 0},
//                               { -0.791559, -0.597705, 0, 0} };
//   float4 r0,r1,r2,r3,r4,r5;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   r0.xy = trunc(v0.xy);
//   r0.xy = (int2)r0.xy;
//   r0.zw = float2(0,0);
//   r0.xyzw = g_xNormalDepthTexture.Load(r0.xyz).xyzw;
//   r0.w = dot(r0.xy, r0.xy);
//   r0.w = 1 + -r0.w;
//   r0.w = sqrt(abs(r0.w));
//   r1.x = cmp(0 < r0.z);
//   r1.z = r1.x ? r0.w : -r0.w;
//   r0.w = g_fCameraTanHalfHorizFOV * abs(r0.z);
//   r2.yz = v0.xy * g_fTwoOverScreenWidth + float2(-1,-1);
//   r3.xyzw = StereoParams.Load(float4(0,0,0,0)).xyzw;
//   r1.w = r3.y / abs(r0.z);
//   r1.w = 1 + -r1.w;
//   r2.x = -r3.x * r1.w + r2.y;
//   r2.xy = r2.xz * r0.ww;
//   r3.xyzw = g_xCameraViewSpaceToWorldSpace._m10_m11_m12_m13 * r2.yyyy;
//   r2.xyzw = r2.xxxx * g_xCameraViewSpaceToWorldSpace._m00_m01_m02_m03 + r3.xyzw;
//   r2.xyzw = abs(r0.zzzz) * g_xCameraViewSpaceToWorldSpace._m20_m21_m22_m23 + r2.xyzw;
//   r2.xyzw = g_xCameraViewSpaceToWorldSpace._m30_m31_m32_m33 + r2.xyzw;
//   r2.xyzw = g_xLightPos.xyzw + -r2.xyzw;
//   r0.z = dot(r2.xyzw, r2.xyzw);
//   r0.z = sqrt(r0.z);
//   r2.xyz = r2.xyz / r0.zzz;
//   r0.z = -g_bCreatingShadowMask + r0.z;
//   r0.w = g_bCreatingShadowMask * r0.z;
//   r1.xy = r0.xy;
//   r0.x = saturate(dot(r2.xyz, r1.xyz));
//   r0.y = 1 + -r0.x;
//   r0.y = r0.y * g_xSelfShadowBias.x + g_xSelfShadowBias.y;
//   r0.y = r0.w * g_xSelfShadowBias.z + r0.y;
//   r1.w = g_bCreatingShadowMask * r0.z + -r0.y;
//   r0.x = r0.x + r0.x;
//   r0.x = min(1, r0.x);
//   r0.y = saturate(r1.w * 2 + -1);
//   r0.y = r0.y * 2 + g_bUseNoise;
//   r0.y = max(0.200000003, r0.y);
//   r3.x = g_bUseNoise * r0.y;
//   r0.y = g_bUseNoise ? 1 : 0;
//   if (r0.y != 0) {
//     r4.xyzw = float4(-16,16,-64,64) * r2.xyxy;
//     r5.xyzw = g_xKernelRotationTexture.Sample(g_xFilteredWrap_s_s, r4.xy).xyzw;
//     r0.yz = r5.yz * float2(2,2) + float2(-1,-1);
//     r0.yz = r0.yz * r3.xx;
//     r4.xyzw = g_xKernelRotationTexture.Sample(g_xFilteredWrap_s_s, r4.zw).xyzw;
//     r4.xy = r4.yz * float2(2,2) + float2(-1,-1);
//     r4.xy = r4.xy * r3.xx;
//     r4.xy = float2(0.330000013,0.330000013) * r4.xy;
//     r3.xy = r0.yz * float2(0.660000026,0.660000026) + r4.xy;
//   } else {
//     r3.y = 0;
//   }
//   r1.xyz = float3(-1,1,-1) * r2.xyz;
//   r3.z = -r3.x;
//   r2.zw = float2(0,0);
//   r0.yz = float2(0,0);
//   while (true) {
//     r0.w = (int)r0.z;
//     r3.w = cmp((int)r0.w >= 12);
//     if (r3.w != 0) {
//       break;
//     }
//     r3.w = (uint)r0.z;
//     r2.x = dot(icb[r3.w+0].xy, r3.xy);
//     r2.y = dot(icb[r3.w+0].xy, r3.yz);
//     r4.xyzw = r2.xyzw + r1.xyzw;
//     r5.xyzw = g_xShadowBufferCube.Sample(g_xFilteredClamp_s_s, r4.xyz).xyzw;
//     r2.x = cmp(r5.x < r4.w);
//     r2.x = r2.x ? 1.000000 : 0;
//     r0.y = r2.x + r0.y;
//     r0.w = (int)r0.w + 1;
//     r0.z = (int)r0.w;
//   }
//   r0.y = g_bUseNoise * r0.y;
//   r0.z = 1 + -r1.w;
//   r0.y = 0.0833333358 * r0.y;
//   r0.z = saturate(r0.y * r0.z);
//   r0.x = r0.z * r0.x;
//   o0.w = saturate(g_bCreatingShadowMask ? r0.y : r0.x);
//   o0.xyz = float3(0,0,0);
//   return;
// }
/////////////////////////////////////////////////////////////////////////////
