1 // Based on Point Light shader from oZone3D.Net
\r
2 // http://www.ozone3d.net/tutorials/glsl_lighting_phong_p2.php
\r
4 varying vec3 normal, light_direction, eye_position;
\r
5 varying float attenuation;
\r
10 (gl_FrontLightModelProduct.sceneColor * gl_FrontMaterial.ambient) +
\r
11 (gl_LightSource[0].ambient * gl_FrontMaterial.ambient)*attenuation;
\r
13 vec3 N = normalize(normal);
\r
14 vec3 L = normalize(light_direction);
\r
16 float lambert_term = dot(N,L);
\r
18 if(lambert_term > 0.0)
\r
20 final_color += gl_LightSource[0].diffuse *
\r
21 gl_FrontMaterial.diffuse * lambert_term * attenuation;
\r
23 vec3 E = normalize(eye_position);
\r
24 vec3 R = reflect(-L, N);
\r
26 float specular = pow(max(dot(R, E), 0.0), gl_FrontMaterial.shininess);
\r
28 final_color += gl_LightSource[0].specular * gl_FrontMaterial.specular *
\r
29 specular * attenuation;
\r
32 gl_FragColor = final_color;
\r