34 lines
693 B
GLSL
34 lines
693 B
GLSL
|
|
uniform vec4 ambient, diffuse, specular;
|
|
uniform float shininess;
|
|
|
|
varying vec3 eye_pos_i;
|
|
varying vec3 normal_i;
|
|
|
|
void main(void)
|
|
{
|
|
vec3 n, lightDir;
|
|
vec4 color;
|
|
float NdotL, RdotEye;
|
|
|
|
lightDir = vec3(-0.1, 0, -0.9);
|
|
color = ambient; /* ambient light */
|
|
n = normalize(normal_i);
|
|
|
|
NdotL = max(dot(n, -lightDir), 0.0);
|
|
|
|
if (NdotL > 0.0)
|
|
{
|
|
/* diffuse component */
|
|
color += diffuse * NdotL;
|
|
/* specular component */
|
|
RdotEye = dot(normalize(eye_pos_i), normalize(reflect(-lightDir, n)));
|
|
if (RdotEye > 0.0)
|
|
{
|
|
color += specular * pow(RdotEye, shininess);
|
|
}
|
|
}
|
|
|
|
gl_FragColor = color;
|
|
}
|