// 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 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_s                sampler      NA          NA    2        1
// g_xTrilinearClamp_s               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
// StereoParams                      texture  float4          2d  125        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_resource_buffer (float,float,float,float) t125
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps linear v1.xyz
dcl_output o0.xyzw
dcl_temps 8
ld r0.xyzw, l(0, 0, 0, 0), t125.xyzw
round_z r0.zw, v0.xxxy
ftoi r1.xy, r0.zwzz
mov r1.zw, l(0,0,0,0)
ld r2.xyzw, r1.xyww, t24.xyzw
mov r3.z, |r2.z|
mul r0.zw, r3.zzzz, cb4[0].xxxy
mad r4.yz, v0.xxyx, cb4[0].zzwz, l(0.000000, -1.000000, -1.000000, 0.000000)
div r0.y, r0.y, r3.z
add r0.y, -r0.y, l(1.000000)
mad r4.x, -r0.x, r0.y, r4.y
mul r3.xy, r0.zwzz, r4.xzxx
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 r4.xyz, r0.xyzx, r0.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 r0.z, r5.x, r5.y
or r0.z, r0.z, r5.z
itof r0.z, r0.z
ne r0.z, r0.z, l(0.000000)
discard_nz r0.z
movc r0.z, cb4[13].w, l(1), l(0)
if_nz r0.z
  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
movc r0.z, cb4[11].w, l(1), l(0)
if_nz r0.z
  div r0.z, cb4[11].z, r0.w
  mad r0.xy, r0.xyxx, r0.zzzz, cb4[11].xyxx
  sample_l r0.xyzw, r0.xyxx, t2.xyzw, s2, l(0.000000)
  mul r4.xyzw, r0.xyzw, r4.xyzw
endif
mov r3.w, l(1.000000)
dp4 r0.x, cb4[12].xyzw, r3.xyzw
add r0.y, r0.x, l(-0.500000)
add r0.y, -|r0.y|, l(0.500000)
lt r0.y, r0.y, l(0.000000)
discard_nz r0.y
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
movc r0.y, cb4[16].x, l(1), l(0)
if_nz r0.y
  mul r5.xyzw, r0.xxxx, r4.xyzw
  min o0.xyz, r5.xyzx, l(31.875000, 31.875000, 31.875000, 0.000000)
  mov o0.w, r5.w
else
  ld r1.xyzw, r1.xyzw, t25.xyzw
  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.x, r0.yzwy, r0.yzwy
  rsq r3.x, r3.x
  mul r0.yzw, r0.yyzw, r3.xxxx
  mul r3.xyz, r0.xxxx, 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, r2.xyzx, r0.yzwy
  min r3.w, r3.w, l(1.000000)
  mul r2.xyz, r2.xyzx, r3.wwww
  mad r0.yzw, r2.xxyz, l(0.000000, 2.000000, 2.000000, 2.000000), -r0.yyzw
  dp3 r0.y, r0.yzwy, r4.xyzx
  min r0.y, r0.y, l(1.000000)
  mov r4.xyw, l(0.990234375,0.994140625,0,0.998046875)
  mov r4.z, r1.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, r0.xxxx, -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, r1.xyzx, r2.xyzx
  mad r1.xyz, r1.xyzx, r0.xxxx, -r3.xyzx
  mad r1.xyz, r7.xxxx, r1.xyzx, r3.xyzx
  mad r0.xzw, r6.xxyz, r0.xxxx, -r1.xxyz
  mad r0.xzw, r6.wwww, r0.xxzw, r1.xxyz
  mad r4.x, r0.y, l(0.490234375), l(0.492187500)
  sample r1.xyzw, r4.xzxx, t0.xyzw, s3
  mul r0.xyz, r0.xzwx, r1.yyyy
  mad r0.xyz, r0.xyzx, r2.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 105 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.164 on Wed Oct 28 14:28:24 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_s : register(s2);
// SamplerState g_xTrilinearClamp_s_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);
// Buffer<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;
//
//   r0.xyzw = StereoParams.Load(float4(0,0,0,0)).xyzw;
//   r0.zw = trunc(v0.xy);
//   r1.xy = (int2)r0.zw;
//   r1.zw = float2(0,0);
//   r2.xyzw = g_xNormalBuffer.Load(r1.xyw).xyzw;
//   r3.z = abs(r2.z);
//   r0.zw = g_xCameraTanHalfFOV.xy * r3.zz;
//   r4.yz = v0.xy * g_xTwoOverScreenDims.xy + float2(-1,-1);
//   r0.y = r0.y / r3.z;
//   r0.y = 1 + -r0.y;
//   r4.x = -r0.x * r0.y + r4.y;
//   r3.xy = r4.xz * r0.zw;
//   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;
//   r4.xyz = r0.xyz / r0.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));
//   r0.z = (int)r5.x | (int)r5.y;
//   r0.z = (int)r0.z | (int)r5.z;
//   r0.z = (int)r0.z;
//   r0.z = cmp(r0.z != 0.000000);
//   if (r0.z != 0) discard;
//   r0.z = g_bUseTexture ? 1 : 0;
//   if (r0.z != 0) {
//     r4.xyzw = g_xProjectedTexture.SampleLevel(g_xTrilinearClamp_s_s, r4.xy, 0).xyzw;
//   } else {
//     r4.xyzw = float4(1,1,1,1);
//   }
//   r0.z = g_bUseDetailTexture ? 1 : 0;
//   if (r0.z != 0) {
//     r0.z = g_fDetailScale / r0.w;
//     r0.xy = r0.xy * r0.zz + g_xDetailOffset.xy;
//     r0.xyzw = g_xProjectedDetailTexture.SampleLevel(g_xTrilinearWrap_s_s, r0.xy, 0).xyzw;
//     r4.xyzw = r4.xyzw * r0.xyzw;
//   }
//   r3.w = 1;
//   r0.x = dot(g_xNearPlane.xyzw, r3.xyzw);
//   r0.y = -0.5 + r0.x;
//   r0.y = 0.5 + -abs(r0.y);
//   r0.y = cmp(r0.y < 0);
//   if (r0.y != 0) discard;
//   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 = g_bSkipMaterialResponse ? 1 : 0;
//   if (r0.y != 0) {
//     r5.xyzw = r4.xyzw * r0.xxxx;
//     o0.xyz = min(float3(31.875,31.875,31.875), r5.xyz);
//     o0.w = r5.w;
//   } else {
//     r1.xyzw = g_xAlbedoBuffer.Load(r1.xyz).xyzw;
//     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.x = dot(r0.yzw, r0.yzw);
//     r3.x = rsqrt(r3.x);
//     r0.yzw = r3.xxx * r0.yzw;
//     r3.xyz = g_xLightColour.xyz * r0.xxx;
//     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(r2.xyz, r0.yzw);
//     r3.w = min(1, r3.w);
//     r2.xyz = r3.www * r2.xyz;
//     r0.yzw = r2.xyz * float3(2,2,2) + -r0.yzw;
//     r0.y = dot(r0.yzw, r4.xyz);
//     r0.y = min(1, r0.y);
//     r4.xyw = float3(0.990234375,0.994140625,0.998046875);
//     r4.z = r1.w;
//     r5.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s_s, r4.xz).xyzw;
//     r6.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s_s, r4.yz).xyzw;
//     r7.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s_s, r4.wz).xyzw;
//     r2.xyz = r5.xyz * r0.xxx + -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_s, r4.yz).xyzw;
//     r2.xyz = r5.xxx * r2.xyz;
//     r2.xyz = r2.xyz * r1.xyz;
//     r1.xyz = r1.xyz * r0.xxx + -r3.xyz;
//     r1.xyz = r7.xxx * r1.xyz + r3.xyz;
//     r0.xzw = r6.xyz * r0.xxx + -r1.xyz;
//     r0.xzw = r6.www * r0.xzw + r1.xyz;
//     r4.x = r0.y * 0.490234375 + 0.4921875;
//     r1.xyzw = g_xMaterialsTexture.Sample(g_xTrilinearClamp_s_s, r4.xz).xyzw;
//     r0.xyz = r1.yyy * r0.xzw;
//     r0.xyz = r0.xyz * r2.www + r2.xyz;
//     r0.xyz = g_bUseNormalDetailMap ? r2.xyz : r0.xyz;
//     o0.xyz = min(float3(31.875,31.875,31.875), r0.xyz);
//     o0.w = 1;
//   }
//   return;
// }
/////////////////////////////////////////////////////////////////////////////
