#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);
}