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