mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-25 05:01:24 +00:00
It's not perfect (double fog on translucent surfaces, the scatter/absorption isn't right, and no local lighting on the fog itself), but it at least seems to look ok.
27 lines
599 B
Text
27 lines
599 B
Text
vec4
|
|
FogBlend (vec4 color, vec4 fog)
|
|
{
|
|
float az = fog.a * 1 / gl_FragCoord.w;
|
|
vec4 fog_color = vec4 (fog.rgb, 1.0);
|
|
|
|
float fog_factor = exp (-az);
|
|
return mix (fog_color, color, fog_factor);
|
|
}
|
|
|
|
vec4
|
|
FogBlend (vec4 color, vec4 fog, float dist)
|
|
{
|
|
float az = fog.a * dist;
|
|
vec4 fog_color = vec4 (fog.rgb, 1.0);
|
|
|
|
float fog_factor = exp (-az);
|
|
return mix (fog_color, color, fog_factor);
|
|
}
|
|
|
|
vec4
|
|
FogTransmit (vec4 color, vec4 fog, float dist)
|
|
{
|
|
float az = fog.a * dist;
|
|
vec3 fog_color = exp (-az * fog.rgb);
|
|
return vec4 (color.rgb * fog_color, color.a);
|
|
}
|