Import gears_using_shaders into git
[gears_using_shaders.git] / shiny.fsh
blob27023d6f82d1abee5bd18dc799d381d828202858
1 // Based on Point Light shader from oZone3D.Net \r
2 // http://www.ozone3d.net/tutorials/glsl_lighting_phong_p2.php\r
3 \r
4 varying vec3 normal, light_direction, eye_position;\r
5 varying float attenuation;\r
6 \r
7 void main(void)\r
8 {\r
9   vec4 final_color = \r
10     (gl_FrontLightModelProduct.sceneColor * gl_FrontMaterial.ambient) + \r
11         (gl_LightSource[0].ambient * gl_FrontMaterial.ambient)*attenuation;\r
12                                                         \r
13   vec3 N = normalize(normal);\r
14   vec3 L = normalize(light_direction);\r
15         \r
16   float lambert_term = dot(N,L);\r
17         \r
18   if(lambert_term > 0.0)\r
19         {\r
20       final_color += gl_LightSource[0].diffuse * \r
21                      gl_FrontMaterial.diffuse * lambert_term * attenuation;     \r
22                 \r
23       vec3 E = normalize(eye_position);\r
24       vec3 R = reflect(-L, N);\r
25                 \r
26       float specular = pow(max(dot(R, E), 0.0), gl_FrontMaterial.shininess);\r
27                 \r
28       final_color += gl_LightSource[0].specular * gl_FrontMaterial.specular * \r
29                      specular * attenuation;    \r
30         }\r
32         gl_FragColor = final_color;                     \r
33 }\r