Title: CSC 830 Computer Graphics Lecture 5 Shading
1CSC 830 Computer GraphicsLecture 5Shading
Course Note Credit Some of slides are extracted
from the course notes of prof. Mathieu Desburn
(USC) and prof. Han-Wei Shen (Ohio State
University).
2Shading
Determining the light traveling from a point in
the scene to the viewers eye
Images courtesy of Watt, Watt Watt, and Foley
van Dam
3Shading
Light comes from many sources
reflection
scattering
absorption
transmission
emission
4Local versus Global Illumination
- Global Illumination
- Considers indirect illumination
- Reflection
- Refraction
- Shadows
- Local Illumination
- Only considers direct illumination
- No reflection
- No refraction
- Shadows possible
5Local versus Global Illumination
Direct Illumination
Indirect Illumination
We will do local only for this lecture
6Local illumination
- Only consider the light, the observer position,
and the object material properties
7Local versus Global Illumination
Images courtesy of Francois Sillion
To understand shading properly, we need to
review some basic notions of physics
8Basic Illumination Model
- Simple and fast method for calculating surface
intensity at a given point - Lighting calculation are based on
- The background lighting conditions
- The light source specification color, position
- Optical properties of surfaces
- Glossy OR matte
- Opaque OR transparent (control refection and
absorption)
9Radiance
Radiance Power per unit projected area
perpendicular to the ray, per unit solid
angle in the direction of the ray
Think of it as a flux of photons leaving the
surface
10Irradiance
Irradiance Radiant energy per unit area
Think of it as a flux of photons bombarding the
surface
11BRDF
Bidirectional Reflection Distribution Function
Determines the fraction of light from an incoming
direction reflected to an outgoing direction
Relates reflected radiance to incoming
irradiance
Image courtesy of Watt, 3D Computer Graphics
12Properties of the BRDF
Reciprocity
In photography and holography, reciprocity refers
to the relationship between the intensity of the
light and duration of the exposure that result
in identical exposure. Within the normal range
for intensity and time for the film, the
reciprocity law states that exposure intensity
time. Outside the normal range the reciprocity
law breaks down, which is known as reciprocity
failure.
13Properties of the BRDF
Anisotropy
Anisotropy (the opposite of isotropy) is the
property of being directionally dependent. In
the field of computer graphics, an anisotropic
surface will change in appearance as it is
rotated about its geometric normal, as is the
case with velvet. Anisotropic scaling occurs
when something is scaled by different amounts in
different directions.
14Reflectance Equation
BRDF allows us to calculate outgoing light, given
incoming light
Image courtesy of Watt, 3D Computer Graphics
15Splitting the BRDF
In practice, BRDF can be really funkyTo
simplify, we divide the BRDF into 3 components
16Reflectance
Slide Courtesy of Dutre et. al on SIGGRAPH 2001
17Ideal Specular Reflection
Reflection is only in the mirror direction
18Ideal Diffuse Reflection
Reflection is equal in all directions
19Directional Diffuse Reflection
Reflection is concentrated around the mirror
direction
20Ambient Light
If a surface is visible from the eye, but not a
light, it will be rendered black (if indirect
light is not considered).
- Ambient light is an approximation to indirect
light - Difficult to compute
- Approximate this as a constant
- Or a light source at the eye
21Phong Reflection
Assume point lights and direct illumination only
22Diffuse Light
- The illumination that a surface receives from a
light source and reflects equally in all
directions - This type of reflection is called Lambertian
Reflection (thus, Lambertian surfaces) - The brightness of the surface is indepenent of
the observer position (since the light is
reflected in all direction equally)
23Lamberts Law
- How much light the surface receives from a light
source depends on the angle between its angle and
the vector from the surface point to the light
(light vector) - Lamberts law the radiant energy Id from a
small surface da for a given light source is - Id IL cos(q)
- IL the intensity of the light source
- is the angle between the surface
- normal (N) and light vector (L)
24Phong Diffuse Component
Diffuse component depends only on incident angle.
Note L and N are unit
Image courtesy of Watt, 3D Computer Graphics
25Examples
Sphere diffusely lighted from various angles !
26Specular Light
- These are the bright spots on objects (such as
polished metal, apple ...) - Light reflected from the surface unequally to all
directions. - The result of near total reflection of the
incident light in a concentrated region around
the specular reflection angle
27Specular Highlights
- Shiny surfaces change appearance when viewpoint
is changed - Specularities are caused by microscopically
smooth surfaces. - A mirror is a perfect specular reflector
28Phong Specular Component
Phong combines directional diffuse ideal
specular
Image courtesy of Watt, 3D Computer Graphics
29Half Vector
- An alternative way of computing phong lighting
is Is ks Is (NH)n - H (halfway vector) halfway between V and L
(VL)/2 - Fuzzier highlight
- Check http//www.lighthouse3d.com/opengl/glsl/inde
x.php?ogldir2
N
H
L
V
30Phong Illumination
Moving Light
Change n
31Phong Ambient Component
Treat it as a constant
Where is the ambient light in the scene.
32Adding Color
33Adding Lights
34Phong Reflection
Image courtesy of Watt, 3D Computer Graphics
35Aluminium
36Bronze
37Chrome
38Stainless Steel
39OpenGL Materials
GLfloat white8 .8, .8, .8, 1., white2
.2,.2,.2,1.,black0.,0.,0. GLfloat
mat_shininess 50. / Phong
exponent / glMaterialfv( GL_FRON
T_AND_BACK, GL_AMBIENT,
black) glMaterialfv( GL_FRONT_AND_BACK,
GL_DIFFUSE, white8) glMaterialfv( GL_FRON
T_AND_BACK, GL_SPECULAR, white2)
glMaterialfv( GL_FRONT_AND_BACK, GL_SHININESS,
mat_shininess)
40OpenGL Lighting
GLfloat white 1., 1., 1., 1.
GLfloat light0_position 1., 1., 5., 0. /
directional light (w0) /
glLightfv(GL_LIGHT0, GL_POSITION,
light0_position) glLightfv(GL_LIGHT0,
GL_DIFFUSE, white) glLightfv(GL_LIGHT0,
GL_SPECULAR, white) glEnable(GL_LIGHT0)
glEnable(GL_NORMALIZE) / normalize normal
vectors / glLightModeli(GL_LIGHT_MODEL_TWO_SI
DE, GL_TRUE)/ two-sided lighting/
glEnable(GL_LIGHTING)
41Vertex Normals vs. Face Normals
What are the normals to the surface?
Each polygonal face has a normal.
c
N (b - a) x (c - b)
a
b
We call these face normals.
42Flat Shading
Assume a constant color across the polygon
c
a
b
Uses face normals
Equivalent to single point sampling
Polygon mesh is only an approximation. Can we do
better?
43Vertex Normals vs. Face Normals
Should use the actual surfaces normals
Usually stored at the vertices of the object Can
calculate as averages of face normals
44Mach Band ?
45Mach Band ?
46- Shading Models for Polygons
- Constant Shading (flat shading)
- Compute illumination at any one point on the
surface. Use face or one normal from a pair of
edges. Good for far away light and viewer or if
facets approximate surface well. - Per-Pixel Shading
- Compute illumination at every point on the
surface. - Interpolated Shading
- Compute illumination at vertices and interpolate
color
47Interpolation
Given vertex normals, how to color the interior
- Gouraud Interpolation
- Phong Interpolation
48Un-lit
49Flat Shading
50Gouraud Interpolation Interpolated Shading
51Phong Interpolation Per pixel Shading
52Gouraud Interpolation
Calculate the color at each vertex
C(c)
C(a)
C(b)
Interpolate the colors
C(c)
C t C(b) (1 t) C(c)
C(a)
C(b)
53Gouraud Interpolation Problems
Misses some highlights
light
shading will be constant!
Shading is not linear
54Phong Interpolation
Interpolate the normals, then compute the colors
light
Interpolation is usually done component-wise
55- Phong Shading Model
- Gouraud shading does not properly handle
specular highlights, specially when the n
parameter is large (small highlight). - Reason colors are interpolated.
- Solution (Phong Shading Model)
- 1. Compute averaged normal at vertices.
- 2. Interpolate normals along edges and
scan-lines. (component by component) - 3. Compute per-pixel illumination.
56(No Transcript)
57Interpolation
Image courtesy of Watt Watt, Advanced Animation
and Rendering Techniques
58Interpolated Shading - Problems
- Problems at shared vertices shared by right
polygons and not by one on left and hence
discontinuity - Incorrect Vertex normals no variation in shade
59Shade Trees
Phong Shade Tree
ka
ks
pow
Il
Ia
dot
n
kd
dot
Il
N
H
N
L
60Shading Language
A language for implementing shading models
State is passed to/from the shader by global
variables Ci Outgoing ray color Oi Outgoing
ray opacity Cs Surface color Os Surface
opacity P Surface point N - Surface normal I
- Direction of viewing (eye ray) L -
Direction to the light source
N
I
L
61Shading Language
Phong Surface Shader
surface plastic(float Ks .5, float Kd .5,
float Ka 1, float roughness .1, color
specularColor 1) point Nf
faceforward(N,I) Oi Os Ci
Os(Cs(Kaambient()Kddiffuse(Nf)
specularColorKsspecular(Nf,-I,roughness)
62Light Sources
- Point light source
- Directional light source e.g. sun light
- Spot light
63Spot Light
- To restrict a lights effects to a limited area
of the scene - Flap confine the effects of the light to a
designed range in x, y, and z world coordinate - Cone restrict the effects of the light using a
cone with a generating angle d
64Light Source Attenuation
- Takes into account the distance of the light from
the surface - IL I L fatt (d)
- IL the received light after attenuation
- I L the original light strength
- fatt the attenuation factor
- d the distance between the light source and
the surface point - fatt max ( 1/(c1 c2d c3d2) , 1)
- C1, C2, C3 are user defined constants associated
with each light source
65Hints for HW4
- Shading can be done in easily in view space or in
world space where all light, view, surface
normal vectors are described in same coordinate
space. how can you achieve this effect? - For normal transformation, use only 3x3 rotation
matrix out of the 4x4 transformation inverse
transpose of it remember normal transformation
from the lecture 2? - For Phong shading, interpolate normal compute
shading for each pixel. For Gouraud shading,
compute shading at only vertex and interpolate
the color.