Computer Graphics (fall 2009)
description
Transcript of Computer Graphics (fall 2009)
Computer Graphics(fall 2009)
School of Computer ScienceUniversity of Seoul
Chap 6: Shading
1. Light and Matter2. Light Sources3. The Phong Reflection Model4. Computation of Vectors5. Polygonal Shading6. Approximation of a Sphere by Recursive Subdivision7. Light Sources in OpenGL8. Specification of Materials in OpenGL9. Shading of the Sphere Model10. Global Illumination
6.1 Light and Matter
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 JCM animation, EIAS)
(image courtesy of David Stoddard, 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
6.2 Light Sources
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:
b
g
r
III
I
Type #1: Ambient Light
Models uniform illumination Simplified as an intensity that is identical at
every point in the scene:
ab
ag
ar
a
III
I
Type #2: Point Sources
Located at p0:
Intensity received at p: High contrast than surface light Can be made soft by
the distance term:
0
0
0
0
ppp
pI
b
g
r
III
00
0 pIpp
ppi 2
1,
12 cdbda
Type #3: Spotlights
Cone-shaped directional range Distribution of the light within the cone
usually defined by ecos
Type #4: Distant Light Sources
Rays can be assumed parallel Direction instead of location:
1zyx
0p
0zyx
0p
6.3 The Phong Reflection Model
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):
ibsigbirs
ibdigdird
ibaigaira
LLLLLLLLL
is
id
ia
i
LLL
L
ibsigbirs
ibdigdird
ibaigaira
RRRRRRRRR
is
id
ia
i
RRR
R
irsirdirairsirsirdirdirairair IIILRLRLRI
i
arirsirdirar IIIII
#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
aaa LkI
#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): cosdR
0,max2 nl
dd
d Lcdbda
kI
#3: Specular Reflection
Characterized by smooth surfaces Depends on
Material property Location of the light source Location of the viewer
“shininess coefficient” ()
0,max2vr
s
ss L
cdbdakI
Phong Reflection Model
aassddsda LkLkLkcdbda
IIII
0,max0,max12
vrnl
Modified Phong Reflection Model
Modified by Blinn a.k.a. “Blinn-Phong Shading Model”
Simplified by halfway angle (h) for faster calcu-lation 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
vlvlh
6.4 Computation of Vectors
Computation of Vectors
How to compute the normal vector of a triangle? a (smooth) surface?
How to compute reflection vector? lnnlr 2
6.5 Polygonal Shading
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)
6.6 Approximation of a Sphere by Recursive Subdivision
6.7 Light Sources in OpenGL
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_AMBIENTGL_DIFFUSEGL_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)
2
1cdbda
Setting Lights (cont’d)
Infinite/local viewer: glLightModel*(GL_LIGHT_MODEL_LOCAL_VIEW
ER, value); One/two-sided lighting:
glLightModel*(GL_LIGHT_MODEL_TWO_SIDED, value);
Light sources are transformed by mod-elview matrices!
6.8 Specification of Materials in OpenGL
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!!!
6.9 Shading of the Sphere Model
6.10 Global Illumination