Shading - Computing Science · Shading CMPT 361 Introduction to Computer Graphics ... small flat...

18
© Machiraju/Zhang/Möller Shading CMPT 361 Introduction to Computer Graphics Torsten Möller

Transcript of Shading - Computing Science · Shading CMPT 361 Introduction to Computer Graphics ... small flat...

© Machiraju/Zhang/Möller

Shading

CMPT 361Introduction to Computer Graphics

Torsten Möller

© Machiraju/Zhang/Möller2

Reading• Chapter 5.5 - Angel• Chapter 16 - Foley, van Dam, et al

© 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öller8

Results of flat shading

© 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öller10

Mach Banding (2)• Problems - Machbands!

© 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öller13

Flat vs. Gouraud Shading

Gouraud ShadingFlat Shading

© 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)

© Machiraju/Zhang/Möller18

Further problems with shading models so far (3)

• Unrepresentative normals– As shown, all vertex and interpolated normals

are the same• Solution: subdivide further