#version 150 uniform vec4 diffuse; uniform vec4 ambient; uniform vec4 specular; uniform float shininess; uniform vec3 lightPos; in vec4 eye; in vec3 normal; in vec4 passColor; in vec2 passTexCoord; out vec4 outColor; void main() { vec4 spec = vec4(0.0); vec3 n = normalize(normal); vec3 e = normalize(vec3(eye)); float intensity = max(dot(n, lightPos), 0.0); if(intensity > 0.0) { vec3 h = normalize(lightPos + e); float intSpec = max(dot(h,n), 0.0); spec = specular * pow(intSpec, shininess); } outColor = max(intensity * diffuse + spec, ambient); }