projects
/
demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added fog (need to set the fog params)
[demo]
/
gl_shaders
/
default.f.glsl
diff --git
a/gl_shaders/default.f.glsl
b/gl_shaders/default.f.glsl
index
490efab
..
17d4353
100644
(file)
--- a/
gl_shaders/default.f.glsl
+++ b/
gl_shaders/default.f.glsl
@@
-11,11
+11,14
@@
varying vec3 normal;
varying vec3 ldir;
varying vec2 tex_coord;
varying vec3 ldir;
varying vec2 tex_coord;
+const float fog_density = 0.005;
+const vec4 sky_color = vec4(0.35, 0.5, 0.65, 1.0);
+
out vec4 color;
void main()
{
out vec4 color;
void main()
{
- vec3 p = normalize(pos);
+ vec3 p = normalize(pos); // view space dir
vec3 n = normalize(normal);
vec3 l = normalize(ldir);
vec3 n = normalize(normal);
vec3 l = normalize(ldir);
@@
-25,7
+28,14
@@
void main()
float cdiff = max(dot(l, n), 0.0);
float cspec = pow(max(dot(r, vdir), 0.0), shininess);
float cdiff = max(dot(l, n), 0.0);
float cspec = pow(max(dot(r, vdir), 0.0), shininess);
+ float dist = -pos.z;
+ float fog = clamp(exp(-fog_density * dist), 0.0, 1.0);
+
vec4 texel = texture2D(tex, tex_coord);
vec4 texel = texture2D(tex, tex_coord);
- color.xyz = diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec;
- color.w = 1.0;
+
+ vec4 object_color;
+ object_color.xyz = diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec;
+ object_color.w = 1.0;
+
+ color = mix(sky_color, object_color, fog);
}
}