A 3d fps game made in OpenGL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Symmetry/assets/shaders/fog.glsl

41 lines
836 B

struct Fog
{
int fogMode;
float density;
float start;
float max;
vec4 color;
};
uniform Fog fog;
const int FOG_NONE = 0;
const int FOG_LINEAR = 1;
const int FOG_EXPONENTIAL = 2;
const int FOG_EXPONENTIAL_SQRD = 3;
vec4 applyFog(vec4 color)
{
vec4 finalColor = color;
if(fog.fogMode != FOG_NONE)
{
float fogFactor;
float distFromEye = abs(length(vertex - eyePos));
if(fog.fogMode == FOG_LINEAR)
{
fogFactor = (fog.max - distFromEye) / (fog.max - fog.start);
}
else if(fog.fogMode == FOG_EXPONENTIAL)
{
fogFactor = exp(fog.density * -distFromEye);
}
else if(fog.fogMode == FOG_EXPONENTIAL_SQRD)
{
fogFactor = exp(-pow(fog.density * distFromEye, 2));
}
fogFactor = clamp(fogFactor, 0.0, 1.0);
finalColor = mix(fog.color, color, fogFactor);
}
return finalColor;
}