Transcript PowerPoint

CS 445 / 645
Introduction to Computer Graphics
Lecture 15
Shading
Lighting Review
Lighting Models
• Ambient
– Normals don’t matter
• Lambert/Diffuse
– Angle between surface normal and light
• Phong/Specular
– Surface normal, light, and viewpoint
Applying Illumination
We now have an illumination model for a point on
a surface
Assuming that our surface is defined as a mesh of
polygonal facets, which points should we use?
Keep in mind:
• It’s a fairly expensive calculation
• Several possible answers, each with different implications
for the visual quality of the result
Applying Illumination
With polygonal/triangular models:
• Each facet has a constant surface normal
• If the light is directional, the diffuse reflectance is constant
across the facet. Why?
Flat Shading
The simplest approach, flat shading, calculates
illumination at a single point for each polygon:
If an object really is faceted, is this accurate?
Is flat shading realistic for faceted
object?
No:
• For point sources, the direction to light varies across the
facet
– For specular reflectance, direction to eye
varies across the facet
Flat Shading
We can refine it a bit by evaluating the Phong
lighting model at each pixel of each polygon,
but the result is still clearly faceted:
To get smoother-looking surfaces
we introduce vertex normals at each
vertex
• Usually different from facet normal
• Used only for shading
• Think of as a better approximation of the real surface that
the polygons approximate
Vertex Normals
Vertex normals may be
• Provided with the model
• Computed from first principles
• Approximated by
averaging the normals
of the facets that
share the vertex
Gouraud Shading
This is the most common approach
• Perform Phong lighting at the vertices
• Linearly interpolate the resulting colors over faces
– Along edges
– Along scanlines
c1 + t1(c2-c1)
C1
– This is what OpenGL does

C3
Does this eliminate the facets?
C2
c1 + t1(c2-c1) + t3(c1 + t2(c3-c1)- c1 + t1(c2-c1))
c1 + t2(c3-c1)
Gouraud Shading
Artifacts
• Often appears dull, chalky
• Lacks accurate specular component
– If included, will be averaged over entire polygon
C1
C3
C2
Can’t shade that effect!
Gouraud Shading

Artifacts
– Mach Banding

Artifact at discontinuities in intensity or intensity slope
C1
C4
C3
C2
Discontinuity in rate
of color change
occurs here
Phong Shading
Phong shading is not the same as Phong lighting,
though they are sometimes mixed up
• Phong lighting: the empirical model we’ve been discussing
to calculate illumination at a point on a surface
• Phong shading: linearly interpolating the surface normal
across the facet, applying the Phong lighting model at
every pixel
– Same input as Gouraud shading
– Usually very smooth-looking results:
– But, considerably more expensive
Phong Shading
Linearly interpolate the vertex normals
• Compute lighting equations at each pixel
• Can use specular component
N1
N4
I total  ka I ambient 
N3
N2
#lights

i 1



I i  kd Nˆ  Lˆi  k s Vˆ  Rˆi


Remember: Normals used in
diffuse and specular terms
Discontinuity in normal’s rate of
change is harder to detect
nshiny


Shortcomings of Shading
Polygonal silhouettes remain
Gouraud
Phong
Perspective Distortion
Image
plane
Break up large polygons
with many smaller ones
i
i
i
i
i
i
uu u u
u
u
Z – into the scene
Notice that linear interpolation in screen space
does not align with linear interpolation in world space
Perspective Distortion
Image
plane
Break up large polygons
with many smaller ones
Z – into the scene
Notice that linear interpolation in screen space
does not align with linear interpolation in world space
Interpolation dependent on polygon
orientation
A
Rotate -90o
and color
same point
i
B
B
C
A
D
D
C
Interpolate between
AB and AD
Interpolate between
CD and AD
Problems at Shared Vertices
D
C
B
E
A
H
G
F
Vertex B is shared by the two
rectangles on the right, but not by the
one on the left
The first portion of the scanline
is interpolated between DE and AC
The second portion of the scanline
is interpolated between BC and GH
A large discontinuity could arise
Bad Vertex Averaging
Shading Models (Direct lighting)
Flat Shading
• Compute Phong lighting once for entire polygon
Gouraud Shading
• Compute Phong lighting at the vertices and interpolate lighting values
across polygon
Phong Shading
• Compute averaged vertex normals
• Interpolate normals across polygon and perform Phong lighting across
polygon
Global Illumination
We’ve glossed over how light really works
And we will continue to do so…
One step better
Global Illumination
• The notion that a point is illuminated by more than light from local
lights; it is illuminated by all the emitters and reflectors in the
global scene
The ‘Rendering Equation’
Jim Kajiya (Current head of Microsoft Research) developed this in
1986


I  x, x'  g  x, x'e  x, x'   r  x, x' , x' 'I  x' , x' 'dx' '
S


I(x, x’) is the total intensity from point x’ to x
g(x, x’) = 0 when x/x’ are occluded and 1/d2 otherwise (d = distance
between x and x’)
e(x, x’) is the intensity emitted by x’ to x
r(x, x’,x’’) is the intensity of light reflected from x’’ to x through x’
S is all points on all surfaces
The ‘Rendering Equation’
The light that hits x from x’ is the direct
illumination from x’ and all the light reflected by
x’ from all x’’
To implement:
• Must handle recursion effectively
• Must support diffuse and specular light
• Must model object shadowing
Shading Models (Indirect lighting)
Ray Tracing
Radiosity
Recursive Ray Tracing
Cast a ray from the
viewer’s eye through
each pixel
Compute intersection of
this ray with objects
from scene
Closest intersecting
object determines
color
Recursive Ray Tracing
Cast a ray from intersected object to
light sources and determine
shadow/lighting conditions
Also spawn secondary rays
• Reflection rays and refraction rays
• Use surface normal as guide (angle of
incidence equals angle of reflection)
• If another object is hit, determine the light it
illuminates by recursing through ray tracing
Recursive Ray Tracing
Stop recursing when:
• ray fails to intersect an object
• user-specified maximum depth is reached
• system runs out of memory
Common numerical accuracy error
• Spawn secondary ray from intersection point
• Secondary ray intersects another polygon on same object
Recursive Ray Tracing
Still producing PhD’s after all these years
Many opportunities to improve efficiency and
accuracy of ray tracing
• Reduce the number of rays cast
• Accurately capture shadows caused by non-lights (ray
tracing from the light source)
• Expensive to recompute as eyepoint changes
Image Synthesis Class
Prof. Humphreys is looking for students
Modeled after Stanford course (let’s beat ‘em)
• See: http://graphics.stanford.edu/courses/cs348b-competition/
Radiosity
Ray tracing models specular
reflection and refractive transparency, but
still uses an ambient term to account for
other lighting effects
Radiosity is the rate at which energy is
emitted or reflected by a surface
By conserving light energy in a volume,
these radiosity effects can be traced