#version 430 core uniform vec3 color; uniform vec3 lightDir; uniform vec3 lightColor; uniform vec3 cameraPos; uniform float time; in vec3 vertexNormalOut; in vec3 vertexPosOut; out vec4 outColor; void main() { vec3 normalizedVertexNormal = normalize(vertexNormalOut); float intensity = dot(normalizedVertexNormal, -lightDir); intensity = max(intensity, 0.0); vec3 viewDir = normalize(cameraPos - vertexPosOut); vec3 reflectDir = reflect(lightDir, normalizedVertexNormal); float glossPow = 8; float specular = pow(max(dot(viewDir, reflectDir), 0.0), glossPow); float diffuse = intensity; outColor = vec4(lightColor * (color * diffuse + specular ), 1.0); }