430 likes | 518 Views
Computer Graphics (fall 2009). School of Computer Science University of Seoul. Chap 6: Shading. Light and Matter Light Sources The Phong Reflection Model Computation of Vectors Polygonal Shading Approximation of a Sphere by Recursive Subdivision Light Sources in OpenGL
E N D
Computer Graphics(fall 2009) School of Computer Science University of Seoul
Chap 6: Shading • Light and Matter • Light Sources • The Phong Reflection Model • Computation of Vectors • Polygonal Shading • Approximation of a Sphere by Recursive Subdivision • Light Sources in OpenGL • Specification of Materials in OpenGL • Shading of the Sphere Model • Global Illumination
Rendering Methods • Rendering equation [Kaj86] • Integral eq. resulted by recursive scattering • Physics-based, slow to compute • Radiosity, raytracing (Ch.12) and photon mapping • Approximation of rendering equation for particular surfaces • Still slow • Phong reflection model • Fast!
Rendering Equation • Proposed in “The rendering equation” (by James Kajiya, 1986) • Based on “conservation of energy”
Radiosity • FEM (Finite Element Method) applied to solve the rendering equation • For scenes with diffuse surfaces
Radiosity (cont’d) • Supported by 3D Max, EIAS, etc. (image courtesy of David Stoddard, EIAS) (image courtesy of JCM animation, EIAS)
Raytracing • Rendering by tracing rays for each pixel from the viewer (camera) • Suitable for reflective surfaces (image courtesy of Wikipedia)
Raytracing (cont’d) • Supported by POV-Ray, YafaRay, etc. (“Glasses” by Gilles Tran, POV-Ray) (“Nikon” by Bert Buchholz, YafaRay)
Photon Mapping • Rays from the light source & camera are traced independently Image courtesy of Wikipedia)
Light-Surface Interaction • Reflected, absorbed and transmitted • Depends on • opaqueness • wavelength- “Why does an object look red?” • roughness - “Why does an object look shiny?” • Orientation • etc.
Surface Types • Specular surfaces • Diffuse surfaces • Translucent surfaces
General Light Source Model • Can be modeled by an illumination function I(x,y,z,,,) • Each frequency consideredindependently • Total contribution can becomputed by integration • Directional properties canvary with frequency • Too complicated to compute
Simplified Light Sources • Four types: ambient lighting, point sources, spotlights, and distant lights • Light sources with three components, RGB- based on “three-color theory” • Each component calculated independently • Intensity or luminance:
Type #1: Ambient Light • Models uniform illumination • Simplified as an intensity that is identical at every point in the scene:
Type #2: Point Sources • Located at p0: • Intensity received at p: • High contrast than surface light • Can be made soft bythe distance term:
Type #3: Spotlights • Cone-shaped directional range • Distribution of the light within the cone usually defined by
Type #4: Distant Light Sources • Rays can be assumed parallel • Direction instead of location:
Phong Reflection Model • Introduced by Phong • Four vectors used • Three types of material-light interactions – ambient, diffuse, and specular • Local model (image courtesy of Wikipedia)
Phong Reflection Model (cont’d) • i-the light source: • Reflection terms for a material: • Contribution of each light color (e.g., red): • Contribution of all sources (e.g., red):
#1: Ambient Reflection • Intensity same at every point on the surface • Depends on • Material property • Independent of • Location of the light source • Location of the viewer
#2: Diffuse Reflection • Characterized by rough surfaces • Assumed to be “perfectly diffuse” • Depends on • Material property • Location of the light source • Independent of • Location of the viewer
#2: Diffuse Reflection (cont’d) • Lambert’s law (for perfectly diffuse surface):
#3: Specular Reflection • Characterized by smooth surfaces • Depends on • Material property • Location of the light source • Location of the viewer • “shininess coefficient” ()
Modified Phong Reflection Model • Modified by Blinn a.k.a. “Blinn-Phong Shading Model” • Simplified by halfway angle (h) for faster calculation • rv replaced by n h • Faster calculation when the lightand the viewer are at infinity (WHY?) • GL_LIGHT_MODEL_LOCAL_VIEWER • Default model in OpenGL
Computation of Vectors • How to compute the normal vector of • a triangle? • a (smooth) surface? • How to compute reflection vector?
Flat & Gouraud Shading • Flat shading • The normal of the first vertex used • Gouraud shading • Lighting calculation at vertices • Linearly interpolated at each fragment • Artifacts for coarse polygon
Phong Shading • Lighting computation at each fragment • Not directly supported by OpenGL • Can be implemented using GLSL (OpenGL Shading Language)
Setting Lights • Enable/disable: • glEnable(GL_LIGHTING); • glEnable(GL_LIGHT#); • At least 8 lights • Positional or directional light: • glLight*(GL_LIGHT#, GL_POSITION, position); • Ambient, diffuse, specular components: • glLight*(GL_LIGHT#, GL_*, value); • GL_AMBIENT • GL_DIFFUSE • GL_SPECULAR
Setting Lights (cont’d) • Global ambient: • glLightModel*(GL_LIGHT_MODEL_AMBIENT, value); • Distance-attenuation model: • glLight*(GL_LIGHT#, GL_*, value); • GL_CONSTANT_ATTENUATION (a) • GL_LINEAR_ATTENUATION (b) • GL_QUADRATIC_ATTENUATION (c) • Spotlight: • glLight*(GL_LIGHT#, GL_*, value); • GL_SPOT_DIRECTION • GL_SPOT_EXPONENT • GL_SPOT_CUTOFF ([0,90] or 180)
Setting Lights (cont’d) • Infinite/local viewer: • glLightModel*(GL_LIGHT_MODEL_LOCAL_VIEWER, value); • One/two-sided lighting: • glLightModel*(GL_LIGHT_MODEL_TWO_SIDED, value); • Light sources are transformed by modelview matrices!
Setting Materials • Material properties are OpenGL states! • Ambient, diffuse, specular, emissive: • glMaterial*v(face, GL_*, value); • GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION, GL_DIFFUSE_AND_SPECULAR • Emissive property • Does not affect any other surface (it’s not a light!) • Simply adds color • Shininess: • glMaterial*(face, GL_SHININESS, value); • Front/back/front&back: • GL_FRONT, GL_BACK, GL_FRONT_AND_BACK • glColorMaterial • Various materials: refer to teapots.c!
Nate Robin’s Tutor • Try yourself!!!