300 likes | 534 Views
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.
E N D
CS 445 / 645Introduction 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 pointsshould 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?
For specular reflectance, direction to eye varies across the facet Is flat shading realistic for faceted object? • No: • For point sources, the direction to light 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 surfaceswe introduce vertex normals at eachvertex • Usually different from facet normal • Used onlyfor shading • Think of as a better approximation of therealsurface 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 • Does this eliminate the facets? C3 C2 c1 + t1(c2-c1) + t3(c1 + t2(c3-c1)- c1 + t1(c2-c1)) c1 + t2(c3-c1)
C1 C3 C2 Can’t shade that effect! Gouraud Shading • Artifacts • Often appears dull, chalky • Lacks accurate specular component • If included, will be averaged over entire polygon
Gouraud Shading • Artifacts • Mach Banding • Artifact at discontinuities in intensity or intensity slope C1 C4 C3 C2 Discontinuity in rateof color changeoccurs 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 Remember: Normals used in diffuse and specular terms Discontinuity in normal’s rate of change is harder to detect N3 N2
Shortcomings of Shading • Polygonal silhouettes remain Gouraud Phong
Perspective Distortion Imageplane Break up large polygonswith many smaller ones i i i i i i u u u u u u Z – into the scene Notice that linear interpolation in screen spacedoes not align with linear interpolation in world space
Perspective Distortion Imageplane Break up large polygonswith many smaller ones Z – into the scene Notice that linear interpolation in screen spacedoes not align with linear interpolation in world space
A B i i C B A D D C Interpolate betweenCD and AD Interpolate betweenAB and AD Interpolation dependent on polygon orientation Rotate -90oand colorsame point
Problems at Shared Vertices Vertex B is shared by the two rectangles on the right, but not by the one on the left C H D The first portion of the scanlineis interpolated between DE and ACThe second portion of the scanlineis interpolated between BC and GHA large discontinuity could arise B G F E A
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’) 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