How to do it...

To create a shader that produces a fog-like effect, use the following code for the fragment shader:

in vec3 Position; 
in vec3 Normal; 
// Light and material uniforms ...
uniform struct FogInfo {
float MaxDist;
float MinDist;
vec3 Color;
} Fog;

layout( location = 0 ) out vec4 FragColor;

vec3 blinnPhong( vec3 position, vec3 n ) {
// Blinn-Phong reflection model ...
}

void main() {
float dist = abs( Position.z );
float fogFactor = (Fog.MaxDist - dist) /
(Fog.MaxDist - Fog.MinDist);
fogFactor = clamp( fogFactor, 0.0, 1.0 );
vec3 shadeColor = blinnPhong(Position, normalize(Normal));
vec3 color = mix( Fog.Color, shadeColor, fogFactor );
FragColor = vec4(color, 1.0);
}
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.186.6