Improved fog a little bit.

This commit is contained in:
Faerbit 2014-11-21 02:46:02 +01:00
parent c47ed4646d
commit 1006f1cbc9
2 changed files with 5 additions and 3 deletions

View File

@ -22,6 +22,7 @@ uniform vec3 lightColors[128];
uniform float lightIntensities[128];
uniform float fogStart;
uniform vec4 fogColor;
uniform vec3 cameraCenter;
void main()
{
@ -52,8 +53,8 @@ void main()
}
vec3 finalColor = specularColor + diffuseColor + ambientColor;
float distanceCamera = distance(camera, vec3(fragPosition));
float fogFactor = clamp((1.0 - exp(-distanceCamera+fogStart)), 0.0, 1.0);
float distanceCameraCenter = distance(cameraCenter, vec3(fragPosition));
float fogFactor = clamp((1.0 - exp(-distanceCameraCenter+fogStart)), 0.0, 1.0);
fogFactor = mix(fogFactor, 0.0, clamp((1.0 - exp(-fragPosition.y+20.0)), 0.0, 1.0));
vec4 texture = texture(uTexture, vTexCoord).rgba;

View File

@ -140,8 +140,9 @@ void Graphics::render(Level* level, ACGL::OpenGL::SharedShaderProgram shader)
}
// set fog Parameters
shader->setUniform("fogStart", farPlane-50.0f);
shader->setUniform("fogStart", (float)((farPlane-40.0f)/sqrt(2)));
shader->setUniform("fogColor", level->getFogColor());
shader->setUniform("cameraCenter", level->getCameraCenter()->getPosition());
// set Material Parameters
shader->setUniform("ambientColor", level->getAmbientLight());