X-Git-Url: https://eleni.mutantstargoat.com/git/?p=demo;a=blobdiff_plain;f=gl_shaders%2Fmorphing.f.glsl;h=df74c905a4b19bdd741d24638ba510b12f1c37a2;hp=490efabef796096809fbbc85c6079aaff90cc149;hb=198fff0ac38a65f6c2db8d9061e47481febfb008;hpb=c99060df01719b24ebd793b149d3c2dc5748cad5 diff --git a/gl_shaders/morphing.f.glsl b/gl_shaders/morphing.f.glsl index 490efab..df74c90 100644 --- a/gl_shaders/morphing.f.glsl +++ b/gl_shaders/morphing.f.glsl @@ -6,6 +6,9 @@ uniform vec4 diffuse; uniform vec4 specular; uniform float shininess; +uniform float fog_density; +const vec3 sky_color = vec3(0.35, 0.5, 0.65); + varying vec3 pos; varying vec3 normal; varying vec3 ldir; @@ -26,6 +29,11 @@ void main() float cspec = pow(max(dot(r, vdir), 0.0), shininess); vec4 texel = texture2D(tex, tex_coord); - color.xyz = diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec; + vec3 object_color = diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec; + + float dist = -pos.z; + float fog = clamp(exp(-fog_density * dist), 0.0, 1.0); + + color.xyz = mix(sky_color, object_color, fog); color.w = 1.0; }