//flares shadows
// ---- Created with geo-11 v0.7.7 on Fri Oct 23 00:54:31 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 : register(s4);
SamplerState g_xFilteredClamp_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);
Texture2D<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 = (int2)v0.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;
  r2.xy = g_fCameraTanHalfHorizFOV * abs(r0.zz);
  r2.zw = v0.xy * g_fTwoOverScreenWidth + float2(-1,-1);
  
float4 s = StereoParams.Load(0);  
float4 testeo = IniParams.Load(int2(90,0));
r2.z -= s.x * (1 - s.y / abs(r0.z));       
  
  
  r2.xy = r2.xy * r2.zw;
  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_fShadowFrustumNearPlaneDistance + r0.z;
  r0.w = g_fOneOverShadowFrustumPlaneSeparation * 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 = r0.z * g_fOneOverShadowFrustumPlaneSeparation + -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_fShadowFilterSize;
  r0.y = max(0.200000003, r0.y);
  r3.x = g_fShadowFilterTextureScale * r0.y;
  if (g_bUseNoise != 0) {
    r0.yz = float2(-16,16) * r2.xy;
    r4.xyzw = g_xKernelRotationTexture.Sample(g_xFilteredWrap_s, r0.yz).xyzw;
    r0.yz = r4.yz * float2(2,2) + float2(-1,-1);
    r0.yz = r0.yz * r3.xx;
    r4.xy = float2(-64,64) * r2.xy;
    r4.xyzw = g_xKernelRotationTexture.Sample(g_xFilteredWrap_s, r4.xy).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;
  }
  r3.z = -r3.x;
  r1.xyz = float3(-1,1,-1) * r2.xyz;
  r2.zw = float2(0,0);
  r0.yz = float2(0,0);
  while (true) {
    r0.w = cmp((int)r0.z >= 12);
    if (r0.w != 0) break;
    r2.x = dot(icb[r0.z+0].xy, r3.xy);
    r2.y = dot(icb[r0.z+0].xy, r3.yz);
    r4.xyzw = r2.xyzw + r1.xyzw;
    r5.xyzw = g_xShadowBufferCube.Sample(g_xFilteredClamp_s, r4.xyz).xyzw;
    r0.w = cmp(r5.x < r4.w);
    r0.w = r0.w ? 1.000000 : 0;
    r0.y = r0.y + r0.w;
    r0.z = (int)r0.z + 1;
  }
  r0.y = g_fShadowStrength * 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;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
//
//   using 3Dmigoto v0.7.7 on Fri Oct 23 00:54:31 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
//   float g_fCameraTanHalfHorizFOV;    // Offset:  392 Size:     4
//   float g_fCameraTanHalfVertFOV;     // Offset:  396 Size:     4
//   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                   sampler      NA          NA    4        1
// g_xFilteredClamp                  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
// 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_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 6
ftoi r0.xy, v0.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 r2.xy, |r0.zzzz|, cb10[24].zwzz
mad r2.zw, v0.xxxy, cb10[24].xxxy, l(0.000000, 0.000000, -1.000000, -1.000000)
mul r2.xy, r2.zwzz, r2.xyxx
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, r0.z, cb10[26].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
if_nz cb10[25].x
  mul r0.yz, r2.xxyx, l(0.000000, -16.000000, 16.000000, 0.000000)
  sample r4.xyzw, r0.yzyy, t50.xyzw, s4
  mad r0.yz, r4.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
  mul r4.xy, r2.xyxx, l(-64.000000, 64.000000, 0.000000, 0.000000)
  sample r4.xyzw, r4.xyxx, 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
mov r3.z, -r3.x
mul r1.xyz, r2.xyzx, l(-1.000000, 1.000000, -1.000000, 0.000000)
mov r2.zw, l(0,0,0,0)
mov r0.yz, l(0,0,0,0)
loop
  ige r0.w, r0.z, l(12)
  breakc_nz r0.w
  dp2 r2.x, icb[r0.z + 0].xyxx, r3.xyxx
  dp2 r2.y, icb[r0.z + 0].xyxx, r3.yzyy
  add r4.xyzw, r1.xyzw, r2.xyzw
  sample r5.xyzw, r4.xyzx, t53.xyzw, s5
  lt r0.w, r5.x, r4.w
  and r0.w, r0.w, l(0x3f800000)
  add r0.y, r0.w, r0.y
  iadd r0.z, r0.z, l(1)
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 71 instruction slots used

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