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