//lights
// ---- Created with geo-11 v0.7.7 on Fri Oct 23 01:43:03 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 ProjectorParams : register(b4)
{
  float2 g_xCameraTanHalfFOV : packoffset(c0);
  float2 g_xTwoOverScreenDims : packoffset(c0.z);
  float4x4 g_xProjectorMatrix : packoffset(c1);
  float4x4 g_xInvViewMatrix : packoffset(c5);
  float4 g_xProjectionDirection : packoffset(c9);
  float4 g_xProjectorPosition : packoffset(c10);
  float2 g_xDetailOffset : packoffset(c11);
  float g_fDetailScale : packoffset(c11.z);
  bool g_bUseDetailTexture : packoffset(c11.w);
  float4 g_xNearPlane : packoffset(c12);
  float3 g_xProjectorPos : packoffset(c13);
  bool g_bUseTexture : packoffset(c13.w);
  float3 g_xLightColour : packoffset(c14);
  float g_fDistanceFade : packoffset(c14.w);
  float g_fLightFalloffScale : packoffset(c15);
  float g_fLightFalloffPower : packoffset(c15.y);
  float g_fAngularFalloffOfs : packoffset(c15.z);
  float g_fAngularFalloffScale : packoffset(c15.w);
  bool g_bSkipMaterialResponse : packoffset(c16);
}

SamplerState g_xTrilinearClamp_s : register(s3);
Texture2D<float4> g_xMaterialsTexture : register(t0);
Texture2D<float4> g_xNormalBuffer : register(t24);
Texture2D<float4> g_xAlbedoBuffer : register(t25);


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


void main(
  float4 v0 : SV_Position0,
  float3 v1 : CamDir0,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4,r5,r6;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xy = v0.xy * g_xTwoOverScreenDims.xy + float2(-1,-1);
  r1.xy = (int2)v0.xy;
  r1.zw = float2(0,0);
  r2.xyzw = g_xNormalBuffer.Load(r1.xyw).xyzw;
  r1.xyzw = g_xAlbedoBuffer.Load(r1.xyz).xyzw;
  r3.z = abs(r2.z);
  r0.zw = g_xCameraTanHalfFOV.xy * r3.zz;
  
float4 s = StereoParams.Load(0);  
float4 testeo = IniParams.Load(int2(90,0));  
r0.x -= s.x * (1 - s.y / abs(r2.z));  
  
  r3.xy = r0.zw * r0.xy;
  r0.xyzw = g_xProjectorMatrix._m01_m11_m21_m31 * r3.yyyy;
  r0.xyzw = g_xProjectorMatrix._m00_m10_m20_m30 * r3.xxxx + r0.xyzw;
  r0.xyzw = g_xProjectorMatrix._m02_m12_m22_m32 * r3.zzzz + r0.xyzw;
  r0.xyzw = g_xProjectorMatrix._m03_m13_m23_m33 + r0.xyzw;
  r0.xyz = r0.xyz / r0.www;
  r0.xyz = float3(-0.5,-0.5,-0.5) + r0.xyz;
  r0.xyz = float3(0.5,0.5,0.5) + -abs(r0.xyz);
  r0.xyz = cmp(r0.xyz < float3(0,0,0));
  r0.x = (int)r0.y | (int)r0.x;
  r0.x = (int)r0.z | (int)r0.x;
  if (r0.x != 0) discard;
  r3.w = 1;
  r0.x = dot(g_xNearPlane.xyzw, r3.xyzw);
  r0.y = -0.5 + r0.x;
  r0.x = 1 + -r0.x;
  r0.x = saturate(g_fLightFalloffScale * r0.x);
  r0.x = log2(r0.x);
  r0.x = g_fLightFalloffPower * r0.x;
  r0.x = exp2(r0.x);
  r0.x = g_fDistanceFade * r0.x;
  r0.y = 0.5 + -abs(r0.y);
  r0.y = cmp(r0.y < 0);
  if (r0.y != 0) discard;
  r0.y = dot(r2.xy, r2.xy);
  r0.y = 1 + -r0.y;
  r0.y = sqrt(abs(r0.y));
  r0.z = cmp(0 < r2.z);
  r2.z = r0.z ? r0.y : -r0.y;
  r0.yzw = g_xInvView._m01_m11_m21 * r3.yyy;
  r0.yzw = g_xInvView._m00_m10_m20 * r3.xxx + r0.yzw;
  r0.yzw = g_xInvView._m02_m12_m22 * r3.zzz + r0.yzw;
  r0.yzw = g_xInvView._m03_m13_m23 + r0.yzw;
  r0.yzw = g_xProjectorPos.xyz + -r0.yzw;
  r3.w = dot(r0.yzw, r0.yzw);
  r3.w = rsqrt(r3.w);
  r0.yzw = r3.www * r0.yzw;
  r3.w = dot(r2.xyz, r0.yzw);
  r3.w = min(1, r3.w);
  r2.xyz = r3.www * r2.xyz;
  r4.y = r3.w * 0.490234375 + 0.4921875;
  r0.yzw = r2.xyz * float3(2,2,2) + -r0.yzw;
  r2.x = dot(v1.xyz, v1.xyz);
  r2.x = rsqrt(r2.x);
  r2.xyz = v1.xyz * r2.xxx;
  r0.y = dot(r0.yzw, r2.xyz);
  r0.y = min(1, r0.y);
  r4.x = r0.y * 0.490234375 + 0.4921875;
  r5.y = r1.w;
  r4.z = r5.y;
  r6.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r4.xz).xyzw;
  r4.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r4.yz).xyzw;
  r0.yzw = g_xInvViewMatrix._m01_m11_m21 * r3.yyy;
  r0.yzw = g_xInvViewMatrix._m00_m10_m20 * r3.xxx + r0.yzw;
  r0.yzw = g_xInvViewMatrix._m02_m12_m22 * r3.zzz + r0.yzw;
  r0.yzw = g_xInvViewMatrix._m03_m13_m23 + r0.yzw;
  r0.yzw = -g_xProjectorPosition.xyz + r0.yzw;
  r1.w = dot(r0.yzw, r0.yzw);
  r1.w = rsqrt(r1.w);
  r0.yzw = r1.www * r0.yzw;
  r0.y = dot(g_xProjectionDirection.xyz, r0.yzw);
  r0.y = g_fAngularFalloffOfs + r0.y;
  r0.y = saturate(g_fAngularFalloffScale * r0.y);
  r0.x = r0.x * r0.y;
  r0.yzw = g_xLightColour.xyz * r0.xxx;
  r2.xyz = r1.xyz * r0.xxx + -r0.yzw;
  r5.xzw = float3(0.990234375,0.994140625,0.998046875);
  r3.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r5.wy).xyzw;
  r2.xyz = r3.xxx * r2.xyz + r0.yzw;
  r3.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r5.zy).xyzw;
  r5.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r5.xy).xyzw;
  r3.xyz = r3.xyz * r0.xxx + -r2.xyz;
  r4.yzw = r5.xyz * r0.xxx + -r0.yzw;
  r0.xyz = r5.www * r4.yzw + r0.yzw;
  r0.xyz = r4.xxx * r0.xyz;
  r0.xyz = r0.xyz * r1.xyz;
  r1.xyz = r3.www * r3.xyz + r2.xyz;
  r1.xyz = r6.yyy * r1.xyz;
  r1.xyz = r1.xyz * r2.www + r0.xyz;
  r0.xyz = g_bIgnoreSpecular ? r0.xyz : r1.xyz;
  o0.xyz = min(float3(31.875,31.875,31.875), r0.xyz);
  o0.w = 1;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
//
//   using 3Dmigoto v0.7.7 on Fri Oct 23 01:43:03 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 [unused]
//   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 ProjectorParams
// {
//
//   float2 g_xCameraTanHalfFOV;        // Offset:    0 Size:     8
//   float2 g_xTwoOverScreenDims;       // Offset:    8 Size:     8
//   float4x4 g_xProjectorMatrix;       // Offset:   16 Size:    64
//   float4x4 g_xInvViewMatrix;         // Offset:   80 Size:    64
//   float4 g_xProjectionDirection;     // Offset:  144 Size:    16
//   float4 g_xProjectorPosition;       // Offset:  160 Size:    16
//   float2 g_xDetailOffset;            // Offset:  176 Size:     8 [unused]
//   float g_fDetailScale;              // Offset:  184 Size:     4 [unused]
//   bool g_bUseDetailTexture;          // Offset:  188 Size:     4 [unused]
//   float4 g_xNearPlane;               // Offset:  192 Size:    16
//   float3 g_xProjectorPos;            // Offset:  208 Size:    12
//   bool g_bUseTexture;                // Offset:  220 Size:     4 [unused]
//   float3 g_xLightColour;             // Offset:  224 Size:    12
//   float g_fDistanceFade;             // Offset:  236 Size:     4
//   float g_fLightFalloffScale;        // Offset:  240 Size:     4
//   float g_fLightFalloffPower;        // Offset:  244 Size:     4
//   float g_fAngularFalloffOfs;        // Offset:  248 Size:     4
//   float g_fAngularFalloffScale;      // Offset:  252 Size:     4
//   bool g_bSkipMaterialResponse;      // Offset:  256 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
// FrameConstants                    cbuffer      NA          NA    0        1
// ProjectorParams                   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
// CamDir                   0   xyz         1     NONE   float   xyz
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_0
dcl_constantbuffer CB0[16], immediateIndexed
dcl_constantbuffer CB6[5], immediateIndexed
dcl_constantbuffer CB4[16], 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_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps linear v1.xyz
dcl_output o0.xyzw
dcl_temps 7
mad r0.xy, v0.xyxx, cb4[0].zwzz, l(-1.000000, -1.000000, 0.000000, 0.000000)
ftoi r1.xy, v0.xyxx
mov r1.zw, l(0,0,0,0)
ld r2.xyzw, r1.xyww, t24.xyzw
ld r1.xyzw, r1.xyzw, t25.xyzw
mov r3.z, |r2.z|
mul r0.zw, r3.zzzz, cb4[0].xxxy
mul r3.xy, r0.xyxx, r0.zwzz
mul r0.xyzw, r3.yyyy, cb4[2].xyzw
mad r0.xyzw, cb4[1].xyzw, r3.xxxx, r0.xyzw
mad r0.xyzw, cb4[3].xyzw, r3.zzzz, r0.xyzw
add r0.xyzw, r0.xyzw, cb4[4].xyzw
div r0.xyz, r0.xyzx, r0.wwww
add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
add r0.xyz, -|r0.xyzx|, l(0.500000, 0.500000, 0.500000, 0.000000)
lt r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
or r0.x, r0.y, r0.x
or r0.x, r0.z, r0.x
discard_nz r0.x
mov r3.w, l(1.000000)
dp4 r0.x, cb4[12].xyzw, r3.xyzw
add r0.y, r0.x, l(-0.500000)
add r0.x, -r0.x, l(1.000000)
mul_sat r0.x, r0.x, cb4[15].x
log r0.x, r0.x
mul r0.x, r0.x, cb4[15].y
exp r0.x, r0.x
mul r0.x, r0.x, cb4[14].w
add r0.y, -|r0.y|, l(0.500000)
lt r0.y, r0.y, l(0.000000)
discard_nz r0.y
dp2 r0.y, r2.xyxx, r2.xyxx
add r0.y, -r0.y, l(1.000000)
sqrt r0.y, |r0.y|
lt r0.z, l(0.000000), r2.z
movc r2.z, r0.z, r0.y, -r0.y
mul r0.yzw, r3.yyyy, cb0[13].xxyz
mad r0.yzw, cb0[12].xxyz, r3.xxxx, r0.yyzw
mad r0.yzw, cb0[14].xxyz, r3.zzzz, r0.yyzw
add r0.yzw, r0.yyzw, cb0[15].xxyz
add r0.yzw, -r0.yyzw, cb4[13].xxyz
dp3 r3.w, r0.yzwy, r0.yzwy
rsq r3.w, r3.w
mul r0.yzw, r0.yyzw, r3.wwww
dp3 r3.w, r2.xyzx, r0.yzwy
min r3.w, r3.w, l(1.000000)
mul r2.xyz, r2.xyzx, r3.wwww
mad r4.y, r3.w, l(0.490234375), l(0.492187500)
mad r0.yzw, r2.xxyz, l(0.000000, 2.000000, 2.000000, 2.000000), -r0.yyzw
dp3 r2.x, v1.xyzx, v1.xyzx
rsq r2.x, r2.x
mul r2.xyz, r2.xxxx, v1.xyzx
dp3 r0.y, r0.yzwy, r2.xyzx
min r0.y, r0.y, l(1.000000)
mad r4.x, r0.y, l(0.490234375), l(0.492187500)
mov r5.y, r1.w
mov r4.z, r5.y
sample r6.xyzw, r4.xzxx, t0.xyzw, s3
sample r4.xyzw, r4.yzyy, t0.xyzw, s3
mul r0.yzw, r3.yyyy, cb4[6].xxyz
mad r0.yzw, cb4[5].xxyz, r3.xxxx, r0.yyzw
mad r0.yzw, cb4[7].xxyz, r3.zzzz, r0.yyzw
add r0.yzw, r0.yyzw, cb4[8].xxyz
add r0.yzw, r0.yyzw, -cb4[10].xxyz
dp3 r1.w, r0.yzwy, r0.yzwy
rsq r1.w, r1.w
mul r0.yzw, r0.yyzw, r1.wwww
dp3 r0.y, cb4[9].xyzx, r0.yzwy
add r0.y, r0.y, cb4[15].z
mul_sat r0.y, r0.y, cb4[15].w
mul r0.x, r0.y, r0.x
mul r0.yzw, r0.xxxx, cb4[14].xxyz
mad r2.xyz, r1.xyzx, r0.xxxx, -r0.yzwy
mov r5.xzw, l(0.990234375,0,0.994140625,0.998046875)
sample r3.xyzw, r5.wyww, t0.xyzw, s3
mad r2.xyz, r3.xxxx, r2.xyzx, r0.yzwy
sample r3.xyzw, r5.zyzz, t0.xyzw, s3
sample r5.xyzw, r5.xyxx, t0.xyzw, s3
mad r3.xyz, r3.xyzx, r0.xxxx, -r2.xyzx
mad r4.yzw, r5.xxyz, r0.xxxx, -r0.yyzw
mad r0.xyz, r5.wwww, r4.yzwy, r0.yzwy
mul r0.xyz, r0.xyzx, r4.xxxx
mul r0.xyz, r1.xyzx, r0.xyzx
mad r1.xyz, r3.wwww, r3.xyzx, r2.xyzx
mul r1.xyz, r1.xyzx, r6.yyyy
mad r1.xyz, r1.xyzx, r2.wwww, r0.xyzx
movc r0.xyz, cb6[4].zzzz, r0.xyzx, r1.xyzx
min o0.xyz, r0.xyzx, l(31.875000, 31.875000, 31.875000, 0.000000)
mov o0.w, l(1.000000)
ret
// Approximately 90 instruction slots used

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