#version 330 in vec2 fragTexCoord; in vec4 fragColor; in vec3 fragPosition; in vec3 fragNormal; uniform sampler2D texture0; uniform vec4 sunlightColor; uniform vec3 lightDir; out vec4 finalColor; void main() { vec4 texelColor = texture(texture0, fragTexCoord); vec3 N = normalize(fragNormal); vec3 L = normalize(lightDir); float ndotl = max(dot(N, L), 0.0); float ambient = 0.1; float sunfactor = ambient + (1.0 - ambient) * ndotl; sunfactor *= 1+min(0, L.y); vec3 Lmoon = normalize(-lightDir); float ndotlMoon = max(dot(N, Lmoon), 0.0); float moonfactor = (ambient + (1.0 - ambient) * ndotlMoon) * 8; moonfactor *= max(0, -L.y); // In fragColor, 'r' is blocklight R, 'g' is blocklight G, 'b' is blocklight B and 'a' is sunlight texelColor.r *= fragColor.a * sunlightColor.r * (sunfactor+moonfactor) + fragColor.r; texelColor.g *= fragColor.a * sunlightColor.g * (sunfactor+moonfactor) + fragColor.g; texelColor.b *= fragColor.a * sunlightColor.b * (sunfactor+moonfactor) + fragColor.b; finalColor = texelColor; }