Files
aya/client/common/shaders/source/ui.hlsl
2025-12-17 16:47:48 +00:00

59 lines
1.1 KiB
HLSL

#include "common.h"
struct Appdata
{
float4 Position : POSITION;
float2 Uv : TEXCOORD0;
float4 Color : COLOR0;
};
struct VertexOutput
{
float4 HPosition : POSITION;
float2 Uv : TEXCOORD0;
float4 Color : COLOR0;
#if defined(PIN_FOG)
float FogFactor : TEXCOORD1;
#endif
};
uniform float4 UIParams; // x = luminance sampling on/off, w = z offset
TEX_DECLARE2D(DiffuseMap, 0);
VertexOutput UIVS(Appdata IN)
{
VertexOutput OUT = (VertexOutput)0;
OUT.HPosition = mul(G(ViewProjection), IN.Position);
OUT.HPosition.z -= UIParams.w; // against z-fighting
OUT.Uv = IN.Uv;
OUT.Color = IN.Color;
#if defined(PIN_FOG)
OUT.FogFactor = (G(FogParams).z - OUT.HPosition.w) * G(FogParams).w;
#endif
return OUT;
}
float4 UIPS(VertexOutput IN): COLOR0
{
float4 base;
if (UIParams.x > 0.5)
base = float4(1, 1, 1,tex2D(DiffuseMap, IN.Uv).r);
else
base = tex2D(DiffuseMap, IN.Uv);
float4 result = IN.Color * base;
#if defined(PIN_FOG)
result.rgb = lerp(G(FogColor), result.rgb, saturate(IN.FogFactor));
#endif
return result;
}