phong.glsl 488 B

123456789101112131415161718192021222324252627
  1. varying vec4 Ca;
  2. varying vec4 Cd;
  3. varying vec4 Cs;
  4. varying vec4 V_eye;
  5. varying vec4 L_eye;
  6. varying vec4 N_eye;
  7. vec3 reflect(vec3 N, vec3 L)
  8. {
  9. return 2.0*N*dot(N, L) - L;
  10. }
  11. void main(void)
  12. {
  13. vec3 V = normalize(vec3(V_eye));
  14. vec3 L = normalize(vec3(L_eye));
  15. vec3 N = normalize(vec3(N_eye));
  16. float diffuse = clamp(dot(L, N), 0.0, 1.0);
  17. vec3 R = reflect(N, L);
  18. float specular = clamp(pow(dot(R, V), 16.0), 0.0, 1.0);
  19. gl_FragColor = Ca + (Cd*diffuse) + (Cs*specular);
  20. }