452 Illumshade
452 Illumshade
L N(N•L) L L
R = 2N(N•L) - L
• Fuzzier highlight V
Phong Illumination
Moving Light
Changing n
Putting It All Together
• Single Light (white light source)
I = Ka Ia + Kd IL (NL) + Ks IL (RV)n
Multiple Light Sources
• For m light sources:
I = Ka Ia + ( Kd ILi (NLi) + Ks ILi (RiV)n )
1im
glMaterialfv(GL_FRONT_AND_BACK,
GL_AMBIENT_AND_DIFFUSE, white8);
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS,
mat_shininess);
OpenGL Lighting
GLfloat white[] = {1., 1., 1., 1.};
Glfloat amb[] = {.3, .3, .3, 1};
/* directional light (w=0) */
GLfloat light0_position[] = {1., 1., 5., 0.};
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, amb);
glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
glLightfv(GL_LIGHT0, GL_DIFFUSE, white);
glLightfv(GL_LIGHT0, GL_SPECULAR, white);
glLightfv(GL_LIGHT0, GL_POSITION, light0_position);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
Shading Models for Polygons
Constant Shading (flat shading)
Compute illumination at any one point on the surface.
Use face or one normal from a pair of edges. Good for
far away light and viewer or if facets approximate
surface well.
Interpolated Shading
Compute illumination at vertices and interpolate color.
Per-Pixel Shading
A
B
A
C
D B
C
Interpolated Shading - Problems
Problems at shared vertices – shared by right polygons and
not by one on left and hence discontinuity