//lights
// ---- Created with geo-11 v0.7.7 on Thu Oct 22 16:42:51 2026

cbuffer FrameConstants : register(b0)
{
  float4x4 g_xView : packoffset(c0);
  float4x4 g_xProj : packoffset(c4);
  float4x4 g_xViewProj : packoffset(c8);
  float4x4 g_xInvView : packoffset(c12);
  float4x4 g_xInvProj : packoffset(c16);
  float4x4 g_xInvViewProj : packoffset(c20);
  float3 g_xCamPos : packoffset(c24);
  float2 g_xRcpScreenDims : packoffset(c25);
  float2 g_xDepthProjViewUnpack : packoffset(c25.z);
  float4 g_axViewFrustumPlanes[6] : packoffset(c26);
}

cbuffer MaterialFlagsConstants : register(b6)
{
  bool g_bUseAlbedo : packoffset(c0);
  bool g_bDualAlbedo : packoffset(c0.y);
  bool g_bUseNormalMap : packoffset(c0.z);
  bool g_bDualNormalMap : packoffset(c0.w);
  bool g_bUseSpecularMap : packoffset(c1);
  bool g_bDualSpecularMap : packoffset(c1.y);
  bool g_bUseTransparencyMap : packoffset(c1.z);
  bool g_bDualTransparencyMap : packoffset(c1.w);
  bool g_bUseSelfIlluminationMap : packoffset(c2);
  bool g_bDualSelfIlluminationMap : packoffset(c2.y);
  bool g_bUseParallaxMap : packoffset(c2.z);
  bool g_bDualParallaxMap : packoffset(c2.w);
  bool g_bUseEnvironmentMap : packoffset(c3);
  bool g_bUseReflectivityMask : packoffset(c3.y);
  bool g_bUseAlbedoDetailMap : packoffset(c3.z);
  bool g_bDualAlbedoDetailMap : packoffset(c3.w);
  bool g_bUseNormalDetailMap : packoffset(c4);
  bool g_bDualNormalDetailMap : packoffset(c4.y);
  bool g_bIgnoreSpecular : packoffset(c4.z);
  bool g_bUseSelfIlluminationGraph : packoffset(c4.w);
  bool g_bUseRefraction : packoffset(c5);
}

cbuffer PointParams : register(b4)
{
  float2 g_xCameraTanHalfFOV : packoffset(c0);
  float2 g_xTwoOverScreenDims : packoffset(c0.z);
  float3 g_xLightPos : packoffset(c1);
  float g_fLightRadius : packoffset(c1.w);
  float4x4 g_xLightOrientation : packoffset(c2);
  float3 g_xLightDir : packoffset(c6);
  float g_fRcpLightRadius : packoffset(c6.w);
  float g_fLightFalloffScale : packoffset(c7);
  float g_fLightFalloffPower : packoffset(c7.y);
  float g_fLightAngleOuter : packoffset(c7.z);
  float g_fRcpLightAngleRange : packoffset(c7.w);
  float3 g_xLightColour : packoffset(c8);
  bool g_bUseLimitAngles : packoffset(c8.w);
  float g_fRcpProjCubeLerpDist : packoffset(c9);
  bool g_bUseProjCube : packoffset(c9.y);
  bool g_bUseDualProjCube : packoffset(c9.z);
  float g_fLightMeshRadius : packoffset(c9.w);
}

SamplerState g_xTrilinearClamp_s : register(s3);
Texture2D<float4> g_xMaterialsTexture : register(t0);
Texture2D<float4> g_xNormalBuffer : register(t24);
Texture2D<float4> g_xAlbedoBuffer : register(t25);
TextureCube<float4> g_xProjCubeMap : register(t26);
TextureCube<float4> g_xProjCubeMapBlurred : register(t27);


// 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)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7;
  uint4 bitmask, uiDest;
  float4 fDest;
  
float4 s = StereoParams.Load(0);  
float4 testeo = IniParams.Load(int2(90,0));

  r0.xy = (int2)v0.xy;
  r0.zw = float2(0,0);
  r1.xyzw = g_xNormalBuffer.Load(r0.xyw).xyzw;
  r0.xyzw = g_xAlbedoBuffer.Load(r0.xyz).xyzw;
  r2.x = dot(r1.xy, r1.xy);
  r2.x = 1 + -r2.x;
  r2.x = sqrt(abs(r2.x));
  r2.y = cmp(0 < r1.z);
  r2.z = r2.y ? r2.x : -r2.x;
  r3.xy = g_xCameraTanHalfFOV.xy * abs(r1.zz);
  r3.zw = v0.xy * g_xTwoOverScreenDims.xy + float2(-1,-1);
  
  //float depthW = max(abs(r1.z), 0.0001);
  //r3.z -= s.x * (1 - s.y / depthW);
  r3.z -= s.x * (1 - s.y / abs(r1.z));
  
  r3.xy = r3.xy * r3.zw;
  

  
  r3.yzw = g_xInvView._m01_m11_m21 * r3.yyy;
  r3.xyz = g_xInvView._m00_m10_m20 * r3.xxx + r3.yzw;
  r3.xyz = g_xInvView._m02_m12_m22 * abs(r1.zzz) + r3.xyz;
  r3.xyz = g_xInvView._m03_m13_m23 + r3.xyz;
  r4.xyz = g_xLightPos.xyz + -r3.xyz;
  r1.z = dot(r4.xyz, r4.xyz);
  r2.w = rsqrt(r1.z);
  r5.xyz = r4.xyz * r2.www;
  r1.z = sqrt(r1.z);
  r2.w = g_fRcpLightRadius * r1.z;
  r3.w = -r1.z * g_fRcpLightRadius + 1;
  r3.w = saturate(g_fLightFalloffScale * r3.w);
  r3.w = log2(r3.w);
  r3.w = g_fLightFalloffPower * r3.w;
  r3.w = exp2(r3.w);
  r4.w = dot(r5.xyz, g_xLightDir.xyz);
  r4.w = -g_fLightAngleOuter + r4.w;
  r4.w = saturate(g_fRcpLightAngleRange * r4.w);
  r4.w = r4.w * r3.w;
  r3.w = g_bUseLimitAngles ? r4.w : r3.w;
  r6.xyz = g_xLightColour.xyz * r3.www;
  if (g_bUseProjCube != 0) {
    r7.x = dot(r5.xyz, g_xLightOrientation._m00_m10_m20);
    r7.y = dot(r5.xyz, g_xLightOrientation._m01_m11_m21);
    r7.z = dot(r5.xyz, g_xLightOrientation._m02_m12_m22);
    r5.xyzw = g_xProjCubeMap.Sample(g_xTrilinearClamp_s, r7.xyz).xyzw;
    if (g_bUseDualProjCube != 0) {
      r7.xyzw = g_xProjCubeMapBlurred.Sample(g_xTrilinearClamp_s, r7.xyz).xyzw;
      r2.w = g_fRcpProjCubeLerpDist * r2.w;
      r2.w = min(1, r2.w);
      r7.xyz = r7.xyz + -r5.xyz;
      r5.xyz = r2.www * r7.xyz + r5.xyz;
    }
    r6.xyz = r6.xyz * r5.xyz;
  }
  r3.xyz = g_xCamPos.xyz + -r3.xyz;
  r2.w = dot(r3.xyz, r3.xyz);
  r2.w = rsqrt(r2.w);
  r3.xyz = r3.xyz * r2.www;
  r4.xyz = r4.xyz / r1.zzz;
  r1.z = dot(r6.xyz, float3(0.333000004,0.333000004,0.333000004));
  r2.xy = r1.xy;
  r1.x = dot(r2.xyz, r4.xyz);
  r1.x = min(1, r1.x);
  r2.xyz = r1.xxx * r2.xyz;
  r2.xyz = r2.xyz * float3(2,2,2) + -r4.xyz;
  r1.y = dot(r2.xyz, r3.xyz);
  r1.y = min(1, r1.y);
  r2.xyw = float3(0.990234375,0.994140625,0.998046875);
  r2.z = r0.w;
  r3.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r2.xz).xyzw;
  r4.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r2.yz).xyzw;
  r5.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r2.wz).xyzw;
  r3.xyz = r3.xyz * r1.zzz + -r6.xyz;
  r3.xyz = r3.www * r3.xyz + r6.xyz;
  r2.y = r1.x * 0.490234375 + 0.4921875;
  r7.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r2.yz).xyzw;
  r3.xyz = r7.xxx * r3.xyz;
  r3.xyz = r3.xyz * r0.xyz;
  r0.xyz = r0.xyz * r1.zzz + -r6.xyz;
  r0.xyz = r5.xxx * r0.xyz + r6.xyz;
  r4.xyz = r4.xyz * r1.zzz + -r0.xyz;
  r0.xyz = r4.www * r4.xyz + r0.xyz;
  r2.x = r1.y * 0.490234375 + 0.4921875;
  r2.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r2.xz).xyzw;
  r0.xyz = r2.yyy * r0.xyz;
  r0.xyz = r0.xyz * r1.www + r3.xyz;
  r0.xyz = g_bIgnoreSpecular ? r3.xyz : r0.xyz;
  o0.xyz = min(float3(31.875,31.875,31.875), r0.xyz);
  o0.w = 0;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
//
//   using 3Dmigoto v0.7.7 on Thu Oct 22 16:42:51 2026
//
//
// Buffer Definitions:
//
// cbuffer FrameConstants
// {
//
//   float4x4 g_xView;                  // Offset:    0 Size:    64 [unused]
//   float4x4 g_xProj;                  // Offset:   64 Size:    64 [unused]
//   float4x4 g_xViewProj;              // Offset:  128 Size:    64 [unused]
//   float4x4 g_xInvView;               // Offset:  192 Size:    64
//   float4x4 g_xInvProj;               // Offset:  256 Size:    64 [unused]
//   float4x4 g_xInvViewProj;           // Offset:  320 Size:    64 [unused]
//   float3 g_xCamPos;                  // Offset:  384 Size:    12
//   float2 g_xRcpScreenDims;           // Offset:  400 Size:     8 [unused]
//   float2 g_xDepthProjViewUnpack;     // Offset:  408 Size:     8 [unused]
//   float4 g_axViewFrustumPlanes[6];   // Offset:  416 Size:    96 [unused]
//
// }
//
// cbuffer MaterialFlagsConstants
// {
//
//   bool g_bUseAlbedo;                 // Offset:    0 Size:     4 [unused]
//   bool g_bDualAlbedo;                // Offset:    4 Size:     4 [unused]
//   bool g_bUseNormalMap;              // Offset:    8 Size:     4 [unused]
//   bool g_bDualNormalMap;             // Offset:   12 Size:     4 [unused]
//   bool g_bUseSpecularMap;            // Offset:   16 Size:     4 [unused]
//   bool g_bDualSpecularMap;           // Offset:   20 Size:     4 [unused]
//   bool g_bUseTransparencyMap;        // Offset:   24 Size:     4 [unused]
//   bool g_bDualTransparencyMap;       // Offset:   28 Size:     4 [unused]
//   bool g_bUseSelfIlluminationMap;    // Offset:   32 Size:     4 [unused]
//   bool g_bDualSelfIlluminationMap;   // Offset:   36 Size:     4 [unused]
//   bool g_bUseParallaxMap;            // Offset:   40 Size:     4 [unused]
//   bool g_bDualParallaxMap;           // Offset:   44 Size:     4 [unused]
//   bool g_bUseEnvironmentMap;         // Offset:   48 Size:     4 [unused]
//   bool g_bUseReflectivityMask;       // Offset:   52 Size:     4 [unused]
//   bool g_bUseAlbedoDetailMap;        // Offset:   56 Size:     4 [unused]
//   bool g_bDualAlbedoDetailMap;       // Offset:   60 Size:     4 [unused]
//   bool g_bUseNormalDetailMap;        // Offset:   64 Size:     4 [unused]
//   bool g_bDualNormalDetailMap;       // Offset:   68 Size:     4 [unused]
//   bool g_bIgnoreSpecular;            // Offset:   72 Size:     4
//   bool g_bUseSelfIlluminationGraph;  // Offset:   76 Size:     4 [unused]
//   bool g_bUseRefraction;             // Offset:   80 Size:     4 [unused]
//
// }
//
// cbuffer PointParams
// {
//
//   float2 g_xCameraTanHalfFOV;        // Offset:    0 Size:     8
//   float2 g_xTwoOverScreenDims;       // Offset:    8 Size:     8
//   float3 g_xLightPos;                // Offset:   16 Size:    12
//   float g_fLightRadius;              // Offset:   28 Size:     4 [unused]
//   float4x4 g_xLightOrientation;      // Offset:   32 Size:    64
//   float3 g_xLightDir;                // Offset:   96 Size:    12
//   float g_fRcpLightRadius;           // Offset:  108 Size:     4
//   float g_fLightFalloffScale;        // Offset:  112 Size:     4
//   float g_fLightFalloffPower;        // Offset:  116 Size:     4
//   float g_fLightAngleOuter;          // Offset:  120 Size:     4
//   float g_fRcpLightAngleRange;       // Offset:  124 Size:     4
//   float3 g_xLightColour;             // Offset:  128 Size:    12
//   bool g_bUseLimitAngles;            // Offset:  140 Size:     4
//   float g_fRcpProjCubeLerpDist;      // Offset:  144 Size:     4
//   bool g_bUseProjCube;               // Offset:  148 Size:     4
//   bool g_bUseDualProjCube;           // Offset:  152 Size:     4
//   float g_fLightMeshRadius;          // Offset:  156 Size:     4 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// g_xTrilinearClamp                 sampler      NA          NA    3        1
// g_xMaterialsTexture               texture  float4          2d    0        1
// g_xNormalBuffer                   texture  float4          2d   24        1
// g_xAlbedoBuffer                   texture  float4          2d   25        1
// g_xProjCubeMap                    texture  float4        cube   26        1
// g_xProjCubeMapBlurred             texture  float4        cube   27        1
// FrameConstants                    cbuffer      NA          NA    0        1
// PointParams                       cbuffer      NA          NA    4        1
// MaterialFlagsConstants            cbuffer      NA          NA    6        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_constantbuffer CB0[25], immediateIndexed
dcl_constantbuffer CB6[5], immediateIndexed
dcl_constantbuffer CB4[10], immediateIndexed
dcl_sampler s3, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t24
dcl_resource_texture2d (float,float,float,float) t25
dcl_resource_texturecube (float,float,float,float) t26
dcl_resource_texturecube (float,float,float,float) t27
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 8
ftoi r0.xy, v0.xyxx
mov r0.zw, l(0,0,0,0)
ld r1.xyzw, r0.xyww, t24.xyzw
ld r0.xyzw, r0.xyzw, t25.xyzw
dp2 r2.x, r1.xyxx, r1.xyxx
add r2.x, -r2.x, l(1.000000)
sqrt r2.x, |r2.x|
lt r2.y, l(0.000000), r1.z
movc r2.z, r2.y, r2.x, -r2.x
mul r3.xy, |r1.zzzz|, cb4[0].xyxx
mad r3.zw, v0.xxxy, cb4[0].zzzw, l(0.000000, 0.000000, -1.000000, -1.000000)
mul r3.xy, r3.zwzz, r3.xyxx
mul r3.yzw, r3.yyyy, cb0[13].xxyz
mad r3.xyz, cb0[12].xyzx, r3.xxxx, r3.yzwy
mad r3.xyz, cb0[14].xyzx, |r1.zzzz|, r3.xyzx
add r3.xyz, r3.xyzx, cb0[15].xyzx
add r4.xyz, -r3.xyzx, cb4[1].xyzx
dp3 r1.z, r4.xyzx, r4.xyzx
rsq r2.w, r1.z
mul r5.xyz, r2.wwww, r4.xyzx
sqrt r1.z, r1.z
mul r2.w, r1.z, cb4[6].w
mad r3.w, -r1.z, cb4[6].w, l(1.000000)
mul_sat r3.w, r3.w, cb4[7].x
log r3.w, r3.w
mul r3.w, r3.w, cb4[7].y
exp r3.w, r3.w
dp3 r4.w, r5.xyzx, cb4[6].xyzx
add r4.w, r4.w, -cb4[7].z
mul_sat r4.w, r4.w, cb4[7].w
mul r4.w, r3.w, r4.w
movc r3.w, cb4[8].w, r4.w, r3.w
mul r6.xyz, r3.wwww, cb4[8].xyzx
if_nz cb4[9].y
  dp3 r7.x, r5.xyzx, cb4[2].xyzx
  dp3 r7.y, r5.xyzx, cb4[3].xyzx
  dp3 r7.z, r5.xyzx, cb4[4].xyzx
  sample r5.xyzw, r7.xyzx, t26.xyzw, s3
  if_nz cb4[9].z
    sample r7.xyzw, r7.xyzx, t27.xyzw, s3
    mul r2.w, r2.w, cb4[9].x
    min r2.w, r2.w, l(1.000000)
    add r7.xyz, -r5.xyzx, r7.xyzx
    mad r5.xyz, r2.wwww, r7.xyzx, r5.xyzx
  endif
  mul r6.xyz, r5.xyzx, r6.xyzx
endif
add r3.xyz, -r3.xyzx, cb0[24].xyzx
dp3 r2.w, r3.xyzx, r3.xyzx
rsq r2.w, r2.w
mul r3.xyz, r2.wwww, r3.xyzx
div r4.xyz, r4.xyzx, r1.zzzz
dp3 r1.z, r6.xyzx, l(0.333000, 0.333000, 0.333000, 0.000000)
mov r2.xy, r1.xyxx
dp3 r1.x, r2.xyzx, r4.xyzx
min r1.x, r1.x, l(1.000000)
mul r2.xyz, r2.xyzx, r1.xxxx
mad r2.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), -r4.xyzx
dp3 r1.y, r2.xyzx, r3.xyzx
min r1.y, r1.y, l(1.000000)
mov r2.xyw, l(0.990234375,0.994140625,0,0.998046875)
mov r2.z, r0.w
sample r3.xyzw, r2.xzxx, t0.xyzw, s3
sample r4.xyzw, r2.yzyy, t0.xyzw, s3
sample r5.xyzw, r2.wzww, t0.xyzw, s3
mad r3.xyz, r3.xyzx, r1.zzzz, -r6.xyzx
mad r3.xyz, r3.wwww, r3.xyzx, r6.xyzx
mad r2.y, r1.x, l(0.490234375), l(0.492187500)
sample r7.xyzw, r2.yzyy, t0.xyzw, s3
mul r3.xyz, r3.xyzx, r7.xxxx
mul r3.xyz, r0.xyzx, r3.xyzx
mad r0.xyz, r0.xyzx, r1.zzzz, -r6.xyzx
mad r0.xyz, r5.xxxx, r0.xyzx, r6.xyzx
mad r4.xyz, r4.xyzx, r1.zzzz, -r0.xyzx
mad r0.xyz, r4.wwww, r4.xyzx, r0.xyzx
mad r2.x, r1.y, l(0.490234375), l(0.492187500)
sample r2.xyzw, r2.xzxx, t0.xyzw, s3
mul r0.xyz, r0.xyzx, r2.yyyy
mad r0.xyz, r0.xyzx, r1.wwww, r3.xyzx
movc r0.xyz, cb6[4].zzzz, r3.xyzx, r0.xyzx
min o0.xyz, r0.xyzx, l(31.875000, 31.875000, 31.875000, 0.000000)
mov o0.w, l(0)
ret
// Approximately 83 instruction slots used

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