-varying vec3 pos, vpos;
+uniform sampler2D tex;
+uniform vec3 fog_color, grid_color;
-float grid(vec2 p, float duty)
-{
- float w = duty * 0.5;
- p = fract(p);
- return smoothstep(1.0 - w, 1.0, p.x) + (1.0 - smoothstep(0.0, w, p.x)) +
- smoothstep(1.0 - w, 1.0, p.y) + (1.0 - smoothstep(0.0, w, p.y));
-}
+varying vec3 vpos;
void main()
{
- vec3 p = pos * 500.0;
-
- const vec3 grid_color = vec3(1.0, 0.2, 0.8);
- const vec3 bg_color = vec3(0.5, 0.1, 1.0);
- vec3 color = grid_color * grid(p.xz, 0.2);
+ vec3 texel = texture2D(tex, gl_TexCoord[0].st).xyz;
+ vec3 color = pow(texel * grid_color, vec3(0.76)) * 5.0;
- float fog = min(abs(vpos.z) * 0.05, 1.0);
+ float dist = abs(vpos.z);
+ float fog = 1.0 - exp(-dist * 0.12);
- gl_FragColor.xyz = mix(color, bg_color, fog);
+ float t = clamp(fog, 0.0, 1.0);
+ gl_FragColor.xyz = mix(color, fog_color, t);
gl_FragColor.a = 1.0;
}