controls for fog to select params
[demo] / gl_shaders / default.f.glsl
1 #version 450
2
3 uniform sampler2D tex;
4
5 uniform vec4 diffuse;
6 uniform vec4 specular;
7 uniform float shininess;
8
9 varying vec3 pos;
10 varying vec3 normal;
11 varying vec3 ldir;
12 varying vec2 tex_coord;
13
14 // const float fog_density = 0.005;
15 uniform float fog_density;
16 const vec4 sky_color = vec4(0.35, 0.5, 0.65, 1.0);
17
18 out vec4 color;
19
20 void main()
21 {
22         vec3 p = normalize(pos); // view space dir
23         vec3 n = normalize(normal);
24         vec3 l = normalize(ldir);
25
26         vec3 r = normalize(-reflect(l, n));
27         vec3 vdir = normalize(-p);
28
29         float cdiff = max(dot(l, n), 0.0);
30         float cspec = pow(max(dot(r, vdir), 0.0), shininess);
31
32         float dist = -pos.z;
33         float fog = clamp(exp(-fog_density * dist), 0.0, 1.0);
34
35         vec4 texel = texture2D(tex, tex_coord);
36
37         vec4 object_color;
38         object_color.xyz = diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec;
39         object_color.w = 1.0;
40
41         color = mix(sky_color, object_color, fog);
42 }