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