1#version 120 2 3uniform sampler2D sampler; 4uniform sampler2D sky_sampler; 5uniform float timer; 6uniform float daylight; 7uniform int ortho; 8 9varying vec2 fragment_uv; 10varying float fragment_ao; 11varying float fragment_light; 12varying float fog_factor; 13varying float fog_height; 14varying float diffuse; 15 16const float pi = 3.14159265; 17 18void main() { 19 vec3 color = vec3(texture2D(sampler, fragment_uv)); 20 if (color == vec3(1.0, 0.0, 1.0)) { 21 discard; 22 } 23 bool cloud = color == vec3(1.0, 1.0, 1.0); 24 if (cloud && bool(ortho)) { 25 discard; 26 } 27 float df = cloud ? 1.0 - diffuse * 0.2 : diffuse; 28 float ao = cloud ? 1.0 - (1.0 - fragment_ao) * 0.2 : fragment_ao; 29 ao = min(1.0, ao + fragment_light); 30 df = min(1.0, df + fragment_light); 31 float value = min(1.0, daylight + fragment_light); 32 vec3 light_color = vec3(value * 0.3 + 0.2); 33 vec3 ambient = vec3(value * 0.3 + 0.2); 34 vec3 light = ambient + light_color * df; 35 color = clamp(color * light * ao, vec3(0.0), vec3(1.0)); 36 vec3 sky_color = vec3(texture2D(sky_sampler, vec2(timer, fog_height))); 37 color = mix(color, sky_color, fog_factor); 38 gl_FragColor = vec4(color, 1.0); 39} 40