You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
884 B

#version 330
uniform vec3 ambientColor;
uniform vec3 diffuseColor;
uniform vec3 specularColor;
uniform float shininess;
uniform vec3 lightAmbientColor;
uniform vec3 lightDiffuseColor;
uniform vec3 lightSpecularColor;
in vec3 transformedNormal;
in vec3 lightDirection;
out vec4 color;
void main() {
/* Ambient color */
color.rgb = ambientColor*lightAmbientColor;
/* Add diffuse color */
float intensity = max(0.0, dot(transformedNormal, lightDirection));
color.rgb += diffuseColor*lightDiffuseColor*intensity;
/* Add specular color, if needed */
if(intensity != 0) {
vec3 reflection = reflect(-lightDirection, transformedNormal);
float specularity = pow(max(0.0, dot(transformedNormal, reflection)), shininess);
color.rgb += specularColor*lightSpecularColor*specularity;
}
/* Force alpha to 1 */
color.a = 1.0;
}