mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-01-22 17:32:05 +00:00
54 lines
1.2 KiB
GLSL
54 lines
1.2 KiB
GLSL
|
|
void main()
|
|
{
|
|
#ifdef NO_CLIPDISTANCE_SUPPORT
|
|
if (ClipDistanceA.x < 0 || ClipDistanceA.y < 0 || ClipDistanceA.z < 0 || ClipDistanceA.w < 0 || ClipDistanceB.x < 0) discard;
|
|
#endif
|
|
|
|
Material material = CreateMaterial();
|
|
vec4 frag = material.Base;
|
|
|
|
#ifndef NO_ALPHATEST
|
|
if (frag.a <= uAlphaThreshold) discard;
|
|
#endif
|
|
|
|
#ifdef SIMPLE2D // uses the fog color to add a color overlay
|
|
#ifdef TM_FOGLAYER
|
|
float gray = grayscale(frag);
|
|
vec4 cm = (uObjectColor + gray * (uAddColor - uObjectColor)) * 2;
|
|
frag = vec4(clamp(cm.rgb, 0.0, 1.0), frag.a);
|
|
frag.rgb = frag.rgb + uFogColor.rgb;
|
|
#else
|
|
frag.rgb = frag.rgb + uFogColor.rgb;
|
|
#endif
|
|
#else
|
|
#ifdef TM_FOGLAYER
|
|
float fogdist = 0.0;
|
|
float fogfactor = 0.0;
|
|
|
|
// calculate fog factor
|
|
if (uFogEnabled != 0)
|
|
{
|
|
if (uFogEnabled == 1 || uFogEnabled == -1)
|
|
{
|
|
fogdist = max(16.0, pixelpos.w);
|
|
}
|
|
else
|
|
{
|
|
fogdist = max(16.0, distance(pixelpos.xyz, uCameraPos.xyz));
|
|
}
|
|
fogfactor = exp2 (uFogDensity * fogdist);
|
|
}
|
|
|
|
frag = vec4(uFogColor.rgb, (1.0 - fogfactor) * frag.a * 0.75 * vColor.a);
|
|
#else
|
|
frag = getLightColor(material);
|
|
#endif
|
|
#endif
|
|
|
|
FragColor = frag;
|
|
#ifdef GBUFFER_PASS
|
|
FragFog = vec4(AmbientOcclusionColor(), 1.0);
|
|
FragNormal = vec4(vEyeNormal.xyz * 0.5 + 0.5, 1.0);
|
|
#endif
|
|
}
|