© Machiraju/Zhang/Möller3
Shading• Illumination Model: determine the color of a
surface (data) point by simulating some light attributes.– Local IM: deals only with isolated surface
(data) point and direct light sources.– Global IM: takes into account the
relationships between all surfaces (points) in the environment.
• Shading Model: applies the illumination models at a set of points and colors the whole scene.
© Machiraju/Zhang/Möller4
Shading of surfaces• We can shade a point on a surface using a
local IM• How about surfaces?
– Flat (planar) polygons are computationally attractive
• Normals, intersections, visibility, projections, etc., are all easy to compute
• hardware acceleration available– Curved surfaces are often tessellated into many
small flat polygons in graphics – polygonal meshes
© Machiraju/Zhang/Möller5
Polygonal meshes• Composed of a set of polygons (often
quadrilaterals or triangles) pasted along their edges
• The dominant surface model for 3D shapes (esp. free-form shapes), e.g., in games
• Well, now there are points
© Machiraju/Zhang/Möller6
Shading of flat polygons• Flat (constant, faceted) shading
– compute illumination once per polygon and apply it to whole polygon:glShadeModel(GL_FLAT)
• Interpolated/smooth/Gouraud shading– compute illumination at borders (e.g. vertices)
and interpolate: glShadeModel(GL_SMOOTH)• Accurate shading – e.g., Phong shading
– compute illumination at every point of the polygon
© Machiraju/Zhang/Möller7
Flat shading
N1 N2
• A single color across the polygon – efficient• Intensity discontinuity across edges• Flat shading would be correct if
– Light source is at infinity, i.e., light vector l is constant, so n⋅l is constant across polygon, and
– viewer is at infinity, so r⋅v is constant across polygon, and
– polygons represent actual surface, not an approximation
• Also, if there are a very large number of very small polygons, the faceting effects is less obvious – spatial integration of our eyes
© Machiraju/Zhang/Möller9
Mach Banding• Creates discontinuities in colour
– easily visible– hence we can see the distinct surface patches
easily• Machbands!
– caused by “lateralinhibition” of thereceptors in the eye
© Machiraju/Zhang/Möller11
Gouraud shading• This shading model is interpolative:
– Given colors of the polygon vertices, interior points are colored through bilinear interpolation
• How to compute the normal at a mesh vertex?– E.g., take the (normalized) average of the
normals of adjacent faces
– Also, area weighted normals
© Machiraju/Zhang/Möller12
Color interpolation• Interpolate colors along edges and scan-
lines• Can be done incrementally, i.e., via scan-
lines
© Machiraju/Zhang/Möller14
Phong shading• Gouraud shading does not properly handle
specular highlights because of color interpolation
• Phong shading – accurate shading – Interpolates normals at each point instead of colors– Apply LIM at each point according to approximated
normal
© Machiraju/Zhang/Möller15
Phong vs. Gouraud shading • Phong shading:
– Handles specular highlights much better– Does a better job in handling Mach bands– But much more expensive than Gouraud
shading
© Machiraju/Zhang/Möller16
Further problems with shading models so far (1)
• Polygonal silhouette – we are quite sensitive in picking these up
• Solution: subdivide further• Exercise: How to determine
whether an edge in a mesh is a silhouette edge?
• Orientation dependence– Note first that interpolation is done along
horizontal scanlines– When the orientation of the same polygon
changes, the same point p may be colored differently
• Solution: triangulate
© Machiraju/Zhang/Möller17
Further problems with shading models so far (2)