Upload
field
View
43
Download
0
Embed Size (px)
DESCRIPTION
CSC 830 Computer Graphics Lecture 5 Shading. 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). Shading. Determining the light traveling from a point in the scene to the viewer’s eye. - PowerPoint PPT Presentation
Citation preview
1
CSC 830 Computer CSC 830 Computer GraphicsGraphicsLecture 5Lecture 5ShadingShading
CSC 830 Computer CSC 830 Computer GraphicsGraphicsLecture 5Lecture 5ShadingShading
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).
2
ShadingDetermining the light traveling from a point in the scene to the viewer’s eye
Images courtesy of Watt, Watt & Watt, and Foley & van Dam
3
ShadingLight comes from many sources:
absorbedscattered
dtransmitte
reflectedemittedlight
scattering
absorption
reflection
transmissionemission
4
Local versus Global Illumination
Global Illumination Considers
indirect illumination
Reflection Refraction Shadows
Local Illumination Only considers direct
illumination No reflection No refraction Shadows possible
5
Local versus Global Illumination
2P1P
Indirect Illumination
Direct Illumination
We will do local only for this lecture…
6
Local illumination• Only consider the light, the observer position,
and the object material properties
7
Local versus Global Illumination
Images courtesy of Francois Sillion
To understand shading properly, we need to review some basic notions of physics…
8
Basic 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)
9
RadianceRadiance: Power per unit projected area
perpendicular to the ray, per unit solid angle in the direction of the ray
d
dA
N),( xI
Think of it as a flux of photons leaving the surface…
10
IrradianceIrradiance: Radiant energy per unit area
dxIdEE cos),(
),( xI
Think of it as a flux of photons bombarding the surface…
11
BRDFBidirectional Reflection Distribution Function
Determines the fraction of light from an incoming direction reflected to an outgoing direction
),(
),(),,(
i
rri xdE
xIxf
Image courtesy of Watt, 3D Computer Graphics
Relates reflected radiance to incoming irradiance…
12
Properties of the BRDFReciprocity
),,(),,( irri xfxf 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.
13
Properties of the BRDFAnisotropy
),,,,(),,,,( rriirrii xfxf
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.
14
Reflectance EquationBRDF allows us to calculate outgoing light, given incoming light
),(),,(),( irirfrom xdExfxIi
Image courtesy of Watt, 3D Computer Graphics
15
Splitting the BRDFIn practice, BRDF can be really funky…To simplify, we divide the BRDF into 3 components:
specularidealdiffuseldirectionadiffuseideal ffff
NL NL
MNL
M
16
Reflectance• 3 forms
Slide Courtesy of Dutre et. al on SIGGRAPH 2001
17
Ideal Specular Reflection
Reflection is only in the mirror direction
NL
M
18
Ideal Diffuse ReflectionReflection is equal in all directions
diffuserixf ),,(NL
19
Directional Diffuse Reflection
Reflection is concentrated around the mirror direction
NL
M
20
Ambient LightIf 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
21
Phong Reflection
speculardiffuseambient IIII
Assume point lights and direct illumination only
22
Diffuse 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)
23
Lambert’s 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)
• Lambert’s law: the radiant energy ’Id’ from a small surface da for a given light source is:
Id = IL * cos)IL : the intensity of the light source is the angle between the surface normal (N) and light vector (L)
24
Phong Diffuse Component
)(
cos
LNkI
kII
dl
dldiffuse
Diffuse component depends only on incident angle.
Image courtesy of Watt, 3D Computer Graphics
Note: L and N are unit…
25
Examples
Sphere diffusely lighted from various angles !
26
Specular 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
27
Specular Highlights
• Shiny surfaces change appearance when viewpoint is changed• Specularities are caused by microscopically smooth surfaces.• A mirror is a perfect specular reflector
28
Phong Specular Component
nsl
nslspecular
VRkI
kII
)(
cos
Phong combines directional diffuse & ideal specular
Image courtesy of Watt, 3D Computer Graphics
29
Half Vector• An alternative way of computing phong
lighting is: Is = ks * Is * (N*H)n • H (halfway vector): halfway between V and L:
(V+L)/2• Fuzzier highlight• Check
http://www.lighthouse3d.com/opengl/glsl/index.php?ogldir2 L
N H
V
30
Phong Illumination
Moving Light
Change n
31
Phong Ambient Component
aaambient kII
Treat it as a constant:
Where is the ambient light in the scene.aI
32
Adding Color
bsbl
gsgl
rsrln
bdbl
gdgl
rdrl
baba
gaga
rara
b
g
r
kI
kI
kI
HN
kI
kI
kI
LN
kI
kI
kI
I
I
I
,,
,,
,,
,,
,,
,,
,,
,,
,,
)()(
33
Adding Lights
lightsll
nsdaa
lightslbsbl
gsgl
rsrln
bdbl
gdgl
rdrl
babal
gaga
rara
b
g
r
IHNkLNkIkI
kI
kI
kI
HN
kI
kI
kI
LN
kI
kI
kI
I
I
I
)()(
)()(
,,
,,
,,
,,
,,
,,
,,
,,
,,
34
Phong Reflection
Image courtesy of Watt, 3D Computer Graphics
35
Aluminium
36
Bronze
37
Chrome
38
Stainless Steel
39
OpenGL Materials
GLfloat white8[] = {.8, .8, .8, 1.}, white2 = {.2,.2,.2,1.},black={0.,0.,0.}; GLfloat mat_shininess[] = {50.}; /* Phong exponent */ glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT, black);
glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE, white8);
glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, white2);
glMaterialfv( GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);
40
OpenGL Lighting
GLfloat white[] = {1., 1., 1., 1.}; GLfloat light0_position[] = {1., 1., 5., 0.}; /* directional light (w=0) */
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_SIDE, GL_TRUE);/* two-sided lighting*/
glEnable(GL_LIGHTING);
41
Vertex Normals vs. Face Normals
What are the normals to the surface?
Each polygonal face has a normal.
We call these face normals.
a
c
b
N = (b - a) x (c - b)
42
Flat ShadingAssume a constant color across the polygon
Uses face normalsEquivalent to single point sampling…
a
c
b
Polygon mesh is only an approximation.Can we do better?
43
Vertex Normals vs. Face Normals
Should use the actual surface’s normals
Usually stored at the vertices of the objectCan calculate as averages of face normals
44
Mach Band ?
45
Mach 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
47
Interpolation
Gouraud Interpolation Phong Interpolation
Given vertex normals, how to color the interior:
48
Un-lit
49
Flat Shading
50
Gouraud Interpolation – Interpolated Shading
51
Phong Interpolation – Per pixel Shading
52
Gouraud InterpolationCalculate the color at each vertex
Interpolate the colors
C(a)
C(c)
C(b)
C(a)
C(c)
C(b)
C = t C(b) + (1 – t) C(c)
53
Gouraud Interpolation Problems
Misses some highlights
light
Shading is not linear
shading will be constant!
54
Phong InterpolationInterpolate 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
57
Interpolation
Image courtesy of Watt & Watt, Advanced Animation and Rendering Techniques
58
Interpolated 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
59
Shade Trees
dot
N L
dot
N H
*
Il
*
Il pow
n
+
Phong Shade Tree:
Ia
*
ka
kd
ks
60
Shading LanguageA language for implementing shading models
State is passed to/from the shader by global variablesCi – Outgoing ray colorOi – Outgoing ray opacity
Cs – Surface colorOs – Surface opacityP – Surface pointN - Surface normalI - Direction of viewing (eye ray)L - Direction to the light source
I N
L
61
Shading Languagesurfaceplastic(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*(Ka*ambient()+Kd*diffuse(Nf)
+ specularColor*Ks*specular(Nf,-I,roughness);}
Phong Surface Shader:
62
Light Sources• Point light source• Directional light source: e.g. sun
light• Spot light
63
Spot Light
• To restrict a light’s 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
64
Light Source Attenuation
• Takes into account the distance of the light from the surface
I’L = I L * fatt (d)
I’L: the received light after attenuation
I L: the original light strengthfatt: the attenuation factord: the distance between the light source
and the surface point
• fatt = max ( 1/(c1 + c2*d + c3*d2) , 1) • C1, C2, C3 are user defined constants
associated with each light source
65
Hints 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.