e4s-sdk/gamedata/shaders/d3d11/lod.ps.hlsl
2026-06-17 23:06:51 +03:00

56 lines
1.2 KiB
HLSL

#include "common.hlsli"
#include "sload.hlsli"
void sample_Textures(inout float4 D, inout float4 H, float2 tc1, float2 tc0, float4 af)
{
float4 D1 = s_base.SampleLevel(smp_base, tc1, 0.0f);
float4 D0 = s_base.SampleLevel(smp_base, tc0, 0.0f);
float4 H0 = s_hemi.SampleLevel(smp_base, tc0, 0.0f);
float4 H1 = s_hemi.SampleLevel(smp_base, tc1, 0.0f);
H0.xyz = H0.rgb * 2.0f - 1.0f;
H1.xyz = H1.rgb * 2.0f - 1.0f;
D = lerp(D0, D1, af.w);
D.w *= af.z;
H = lerp(H0, H1, af.w);
H.w *= af.x;
}
void main(in p_bilbord I, out IXrayGbufferPack O)
{
float4 D, H;
sample_Textures(D, H, I.tc1, I.tc0, I.af);
float3 N = normalize(H.xyz);
clip(D.w - def_aref);
float Sun = saturate(H.w * 2.0f);
IXrayMaterial M;
M.Depth = I.position.z;
M.Point = I.position.xyz;
M.Color = D;
M.Sun = Sun;
M.AO = 1.0f;
M.SSS = 0.0f;
M.Hemi = H.w;
M.Normal = N.xyz;
M.Roughness = 0.95f;
M.Metalness = 0.0f;
#ifdef USE_LEGACY_LIGHT
M.Metalness = L_material.w;
M.Roughness = def_gloss;
#endif
M.SnowMask = 0.95f;
O.Velocity = I.hpos_curr.xy / I.hpos_curr.w - I.hpos_old.xy / I.hpos_old.w;
GbufferPack(O, M);
}