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