]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - shaders/3d/fragment.glsl
dcfb212810f05672a9005d0669c2e79e31934538
[dragonblocks_alpha.git] / shaders / 3d / fragment.glsl
1 in vec3 fragmentPosition;
2 in vec3 fragmentNormal;
3 in float fragmentTextureIndex;
4 in vec2 fragmentTextureCoords;
5 in vec3 fragmentColor;
6
7 out vec4 outColor;
8
9 uniform float daylight;
10 uniform vec3 lightDir;
11 uniform vec3 cameraPos;
12 uniform sampler2D textures[MAX_TEXTURE_UNITS];
13
14 void main()
15 {
16         vec3 lightColor = vec3(1.0);
17         vec3 fogColor = mix(vec3(0x03, 0x0A, 0x1A), vec3(0x87, 0xCE, 0xEB), daylight) / vec3(0xFF);
18
19         float ambientStrength = mix(0.3, 0.7, daylight);
20
21         vec3 ambient = ambientStrength * lightColor;
22         vec3 diffuse = 0.3 * daylight * clamp(dot(normalize(fragmentNormal), normalize(lightDir)), 0.0, 1.0) * lightColor;
23
24         vec3 light = ambient + diffuse;
25
26         outColor = texture(textures[int(fragmentTextureIndex + 0.5)], fragmentTextureCoords) * vec4(fragmentColor, 1.0) * vec4(light, 1.0);
27         outColor.rgb = mix(outColor.rgb, ambientStrength * fogColor, clamp(length(fragmentPosition - cameraPos) / 255.0, 0.0, 1.0));
28
29         if (outColor.a == 0.0)
30                 discard;
31 }