forked from 0ad/0ad
31 lines
622 B
GLSL
31 lines
622 B
GLSL
#version 110
|
|
|
|
uniform sampler2D baseTex;
|
|
|
|
varying vec2 v_tex;
|
|
varying vec4 v_color;
|
|
|
|
uniform vec3 fogColor;
|
|
uniform vec2 fogParams;
|
|
|
|
vec4 get_fog(vec4 color)
|
|
{
|
|
float density = fogParams.x;
|
|
float maxFog = fogParams.y;
|
|
|
|
const float LOG2 = 1.442695;
|
|
float z = gl_FragCoord.z / gl_FragCoord.w;
|
|
float fogFactor = exp2(-density * density * z * z * LOG2);
|
|
|
|
fogFactor = fogFactor * (1.0 - maxFog) + maxFog;
|
|
|
|
fogFactor = clamp(fogFactor, 0.0, 1.0);
|
|
|
|
return vec4(mix(fogColor, color.rgb, fogFactor),color.a);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
gl_FragColor = get_fog(texture2D(baseTex, v_tex) * v_color);
|
|
}
|