430 likes | 520 Vues
Explore rendering methods like Phong reflection, photon mapping, and Raytracing for realistic image synthesis. Learn about light sources, surface interactions, and surface types in the context of computer graphics. Find out how to compute vectors and achieve smooth shading effects using various techniques.
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!!!