quakeforge/libs/video/renderer/vulkan/shader/fog.finc
Bill Currie 8f20638cd9 [vulkan] Implement deferred fog
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.
2024-01-23 14:32:30 +09:00

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);
}