// //lights
// ---- Created with geo-11 v0.7.7 on Fri Oct 23 00:41:08 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_xTrilinearWrap_s : register(s2);
SamplerState g_xTrilinearClamp_s : register(s3);
Texture2D<float4> g_xMaterialsTexture : register(t0);
Texture2D<float4> g_xProjectedTexture : register(t1);
Texture2D<float4> g_xProjectedDetailTexture : register(t2);
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,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;
  r2.z = abs(r1.z);
  r3.xy = g_xCameraTanHalfFOV.xy * r2.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));
  
  
  r2.xy = r3.xy * r3.zw;
  r3.xyzw = g_xProjectorMatrix._m01_m11_m21_m31 * r2.yyyy;
  r3.xyzw = g_xProjectorMatrix._m00_m10_m20_m30 * r2.xxxx + r3.xyzw;
  r3.xyzw = g_xProjectorMatrix._m02_m12_m22_m32 * r2.zzzz + r3.xyzw;
  r3.xyzw = g_xProjectorMatrix._m03_m13_m23_m33 + r3.xyzw;
  r4.xyz = r3.xyz / r3.www;
  r5.xyz = float3(-0.5,-0.5,-0.5) + r4.xyz;
  r5.xyz = float3(0.5,0.5,0.5) + -abs(r5.xyz);
  r5.xyz = cmp(r5.xyz < float3(0,0,0));
  r3.z = (int)r5.y | (int)r5.x;
  r3.z = (int)r5.z | (int)r3.z;
  if (r3.z != 0) discard;
  if (g_bUseTexture != 0) {
    r4.xyzw = g_xProjectedTexture.SampleLevel(g_xTrilinearClamp_s, r4.xy, 0).xyzw;
  } else {
    r4.xyzw = float4(1,1,1,1);
  }
  if (g_bUseDetailTexture != 0) {
    r3.z = g_fDetailScale / r3.w;
    r3.xy = r3.xy * r3.zz + g_xDetailOffset.xy;
    r3.xyzw = g_xProjectedDetailTexture.SampleLevel(g_xTrilinearWrap_s, r3.xy, 0).xyzw;
    r4.xyzw = r4.xyzw * r3.xyzw;
  }
  r2.w = 1;
  r2.w = dot(g_xNearPlane.xyzw, r2.xyzw);
  r3.x = -0.5 + r2.w;
  r3.x = 0.5 + -abs(r3.x);
  r3.x = cmp(r3.x < 0);
  if (r3.x != 0) discard;
  r2.w = 1 + -r2.w;
  r2.w = saturate(g_fLightFalloffScale * r2.w);
  r2.w = log2(r2.w);
  r2.w = g_fLightFalloffPower * r2.w;
  r2.w = exp2(r2.w);
  r2.w = g_fDistanceFade * r2.w;
  if (g_bSkipMaterialResponse != 0) {
    r3.xyzw = r4.xyzw * r2.wwww;
    o0.xyz = min(float3(31.875,31.875,31.875), r3.xyz);
    o0.w = r3.w;
  } else {
    r0.xyzw = g_xAlbedoBuffer.Load(r0.xyz).xyzw;
    r3.x = dot(r1.xy, r1.xy);
    r3.x = 1 + -r3.x;
    r3.x = sqrt(abs(r3.x));
    r3.y = cmp(0 < r1.z);
    r1.z = r3.y ? r3.x : -r3.x;
    r3.xyz = g_xInvView._m01_m11_m21 * r2.yyy;
    r3.xyz = g_xInvView._m00_m10_m20 * r2.xxx + r3.xyz;
    r2.xyz = g_xInvView._m02_m12_m22 * r2.zzz + r3.xyz;
    r2.xyz = g_xInvView._m03_m13_m23 + r2.xyz;
    r2.xyz = g_xProjectorPos.xyz + -r2.xyz;
    r3.x = dot(r2.xyz, r2.xyz);
    r3.x = rsqrt(r3.x);
    r2.xyz = r3.xxx * r2.xyz;
    r3.xyz = g_xLightColour.xyz * r2.www;
    r3.xyz = r3.xyz * r4.xyz;
    r3.w = dot(v1.xyz, v1.xyz);
    r3.w = rsqrt(r3.w);
    r4.xyz = v1.xyz * r3.www;
    r3.w = dot(r1.xyz, r2.xyz);
    r3.w = min(1, r3.w);
    r1.xyz = r3.www * r1.xyz;
    r1.xyz = r1.xyz * float3(2,2,2) + -r2.xyz;
    r1.x = dot(r1.xyz, r4.xyz);
    r1.x = min(1, r1.x);
    r4.xyw = float3(0.990234375,0.994140625,0.998046875);
    r4.z = r0.w;
    r5.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r4.xz).xyzw;
    r6.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r4.yz).xyzw;
    r7.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r4.wz).xyzw;
    r2.xyz = r5.xyz * r2.www + -r3.xyz;
    r2.xyz = r5.www * r2.xyz + r3.xyz;
    r4.y = r3.w * 0.490234375 + 0.4921875;
    r5.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r4.yz).xyzw;
    r2.xyz = r5.xxx * r2.xyz;
    r2.xyz = r2.xyz * r0.xyz;
    r0.xyz = r0.xyz * r2.www + -r3.xyz;
    r0.xyz = r7.xxx * r0.xyz + r3.xyz;
    r3.xyz = r6.xyz * r2.www + -r0.xyz;
    r0.xyz = r6.www * r3.xyz + r0.xyz;
    r4.x = r1.x * 0.490234375 + 0.4921875;
    r3.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s, r4.xz).xyzw;
    r0.xyz = r3.yyy * r0.xyz;
    r0.xyz = r0.xyz * r1.www + r2.xyz;
    r0.xyz = g_bIgnoreSpecular ? r2.xyz : r0.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 00:41:08 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 [unused]
//   float4 g_xProjectionDirection;     // Offset:  144 Size:    16 [unused]
//   float4 g_xProjectorPosition;       // Offset:  160 Size:    16 [unused]
//   float2 g_xDetailOffset;            // Offset:  176 Size:     8
//   float g_fDetailScale;              // Offset:  184 Size:     4
//   bool g_bUseDetailTexture;          // Offset:  188 Size:     4
//   float4 g_xNearPlane;               // Offset:  192 Size:    16
//   float3 g_xProjectorPos;            // Offset:  208 Size:    12
//   bool g_bUseTexture;                // Offset:  220 Size:     4
//   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 [unused]
//   float g_fAngularFalloffScale;      // Offset:  252 Size:     4 [unused]
//   bool g_bSkipMaterialResponse;      // Offset:  256 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// g_xTrilinearWrap                  sampler      NA          NA    2        1
// g_xTrilinearClamp                 sampler      NA          NA    3        1
// g_xMaterialsTexture               texture  float4          2d    0        1
// g_xProjectedTexture               texture  float4          2d    1        1
// g_xProjectedDetailTexture         texture  float4          2d    2        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[17], immediateIndexed
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
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 8
ftoi r0.xy, v0.xyxx
mov r0.zw, l(0,0,0,0)
ld r1.xyzw, r0.xyww, t24.xyzw
mov r2.z, |r1.z|
mul r3.xy, r2.zzzz, cb4[0].xyxx
mad r3.zw, v0.xxxy, cb4[0].zzzw, l(0.000000, 0.000000, -1.000000, -1.000000)
mul r2.xy, r3.zwzz, r3.xyxx
mul r3.xyzw, r2.yyyy, cb4[2].xyzw
mad r3.xyzw, cb4[1].xyzw, r2.xxxx, r3.xyzw
mad r3.xyzw, cb4[3].xyzw, r2.zzzz, r3.xyzw
add r3.xyzw, r3.xyzw, cb4[4].xyzw
div r4.xyz, r3.xyzx, r3.wwww
add r5.xyz, r4.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
add r5.xyz, -|r5.xyzx|, l(0.500000, 0.500000, 0.500000, 0.000000)
lt r5.xyz, r5.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
or r3.z, r5.y, r5.x
or r3.z, r5.z, r3.z
discard_nz r3.z
if_nz cb4[13].w
  sample_l r4.xyzw, r4.xyxx, t1.xyzw, s3, l(0.000000)
else
  mov r4.xyzw, l(1.000000,1.000000,1.000000,1.000000)
endif
if_nz cb4[11].w
  div r3.z, cb4[11].z, r3.w
  mad r3.xy, r3.xyxx, r3.zzzz, cb4[11].xyxx
  sample_l r3.xyzw, r3.xyxx, t2.xyzw, s2, l(0.000000)
  mul r4.xyzw, r3.xyzw, r4.xyzw
endif
mov r2.w, l(1.000000)
dp4 r2.w, cb4[12].xyzw, r2.xyzw
add r3.x, r2.w, l(-0.500000)
add r3.x, -|r3.x|, l(0.500000)
lt r3.x, r3.x, l(0.000000)
discard_nz r3.x
add r2.w, -r2.w, l(1.000000)
mul_sat r2.w, r2.w, cb4[15].x
log r2.w, r2.w
mul r2.w, r2.w, cb4[15].y
exp r2.w, r2.w
mul r2.w, r2.w, cb4[14].w
if_nz cb4[16].x
  mul r3.xyzw, r2.wwww, r4.xyzw
  min o0.xyz, r3.xyzx, l(31.875000, 31.875000, 31.875000, 0.000000)
  mov o0.w, r3.w
else
  ld r0.xyzw, r0.xyzw, t25.xyzw
  dp2 r3.x, r1.xyxx, r1.xyxx
  add r3.x, -r3.x, l(1.000000)
  sqrt r3.x, |r3.x|
  lt r3.y, l(0.000000), r1.z
  movc r1.z, r3.y, r3.x, -r3.x
  mul r3.xyz, r2.yyyy, cb0[13].xyzx
  mad r3.xyz, cb0[12].xyzx, r2.xxxx, r3.xyzx
  mad r2.xyz, cb0[14].xyzx, r2.zzzz, r3.xyzx
  add r2.xyz, r2.xyzx, cb0[15].xyzx
  add r2.xyz, -r2.xyzx, cb4[13].xyzx
  dp3 r3.x, r2.xyzx, r2.xyzx
  rsq r3.x, r3.x
  mul r2.xyz, r2.xyzx, r3.xxxx
  mul r3.xyz, r2.wwww, cb4[14].xyzx
  mul r3.xyz, r4.xyzx, r3.xyzx
  dp3 r3.w, v1.xyzx, v1.xyzx
  rsq r3.w, r3.w
  mul r4.xyz, r3.wwww, v1.xyzx
  dp3 r3.w, r1.xyzx, r2.xyzx
  min r3.w, r3.w, l(1.000000)
  mul r1.xyz, r1.xyzx, r3.wwww
  mad r1.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), -r2.xyzx
  dp3 r1.x, r1.xyzx, r4.xyzx
  min r1.x, r1.x, l(1.000000)
  mov r4.xyw, l(0.990234375,0.994140625,0,0.998046875)
  mov r4.z, r0.w
  sample r5.xyzw, r4.xzxx, t0.xyzw, s3
  sample r6.xyzw, r4.yzyy, t0.xyzw, s3
  sample r7.xyzw, r4.wzww, t0.xyzw, s3
  mad r2.xyz, r5.xyzx, r2.wwww, -r3.xyzx
  mad r2.xyz, r5.wwww, r2.xyzx, r3.xyzx
  mad r4.y, r3.w, l(0.490234375), l(0.492187500)
  sample r5.xyzw, r4.yzyy, t0.xyzw, s3
  mul r2.xyz, r2.xyzx, r5.xxxx
  mul r2.xyz, r0.xyzx, r2.xyzx
  mad r0.xyz, r0.xyzx, r2.wwww, -r3.xyzx
  mad r0.xyz, r7.xxxx, r0.xyzx, r3.xyzx
  mad r3.xyz, r6.xyzx, r2.wwww, -r0.xyzx
  mad r0.xyz, r6.wwww, r3.xyzx, r0.xyzx
  mad r4.x, r1.x, l(0.490234375), l(0.492187500)
  sample r3.xyzw, r4.xzxx, t0.xyzw, s3
  mul r0.xyz, r0.xyzx, r3.yyyy
  mad r0.xyz, r0.xyzx, r1.wwww, r2.xyzx
  movc r0.xyz, cb6[4].zzzz, r2.xyzx, r0.xyzx
  min o0.xyz, r0.xyzx, l(31.875000, 31.875000, 31.875000, 0.000000)
  mov o0.w, l(1.000000)
endif
ret
// Approximately 95 instruction slots used

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