#version 330 out vec4 outputColor; uniform sampler2D texture0; uniform sampler2D texture1; uniform vec3 viewPos; uniform vec3 lightPos; uniform vec3 lightColor; in vec4 Color; in vec4 FarColor; in vec3 Normal; in vec3 FragPos; in vec2 TexCoord; in vec4 TexType; in float RealType; void main() { vec4 color0 = texture(texture0, TexCoord); vec4 color1 = texture(texture1, TexCoord); vec3 norm = normalize(Normal); float inclineFactor = abs(norm.y); vec4 finalColor = mix(color0, color1, norm.y); vec3 lightDir = normalize(lightPos - FragPos); float diff = max(dot(norm, lightDir), 0.0); vec3 diffuse = diff * lightColor; vec4 litColor = vec4(diffuse, 1.0) * finalColor * Color; float distance = length(viewPos - FragPos); float interpolationFactor = clamp(distance / 1000.0, 0.0, 1.0); outputColor = mix(litColor, FarColor, interpolationFactor); }