#version 330 core out vec4 FragColor; uniform vec3 color; in vec3 vFragPos; uniform vec3 cameraPos; uniform vec3 fogColor; uniform float fogDensity; uniform float fogAmount; void main() { // Basic color with fog applied vec3 base = color; // vFragPos provided by vertex shader float dist = length(vFragPos - cameraPos); float fogFactor = 1.0 - exp(-fogDensity * dist); fogFactor = clamp(fogFactor * fogAmount, 0.0, 1.0); vec3 finalColor = mix(base, fogColor, fogFactor); FragColor = vec4(finalColor, 1.0); }