74
CS452/552; EE465/505 Intro to Lighting 2-10–15

10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

CS452/552; EE465/505

Intro to Lighting 2-10–15

Page 2: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Projection Normalization ! Introduction to Lighting (and Shading)

Read: Angel •Chapter 5., sections 5.4 - 5.7 Parallel Projections •Chapter 6, sections 6.1 - 6.3 Lighting & Shading

Lab2: use ASDW to move a 2D shape around

Outline

Page 3: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Consider the vertex shaders for each of these examples:

!Coordinate systems (from Chastine)

!ColorCube example (from Matsuda)

! perspective example (from Angel)

3

From model to viewing

Page 4: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

(c) 2015 Jeff Chastine

From model to view: Chastinein vec4 vPosition; // The vertex in the local coordinate system uniform mat4 mM; // The matrix for the pose of the model uniform mat4 mV; // The matrix for the pose of the camera uniform mat4 mP; // The projection matrix (perspective)

void main () { gl_Position = mP*mV*mM*vPosition;

}Original (local) position

New position in NDC

Page 5: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

attribute vec4 a_Position; attribute vec4 a_Color; uniform mat4 u_MvpMatrix; varying vec4 v_Color;

void main() { gl_Position = u_MvpMatrix * a_Position; v_Color = a_Color; }

ColoredCube Vertex Shader

Page 6: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Angel: perspective2.htmlattribute vec4 vPosition; attribute vec4 vColor; varying vec4 fColor; uniform mat4 modelViewMatrix; uniform mat4 projectionMatrix;

void main() { gl_Position = projectionMatrix*modelViewMatrix*vPosition; fColor = vColor; }

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 7: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

ortho(left,right,bottom,top,near,far)

WebGL Orthogonal Viewing

near and far measured from camera

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 8: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

frustum(left,right,bottom,top,near,far)

WebGL Perspective

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 9: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

!With frustum it is often difficult to get the desired view

✦perpective(fovy, aspect, near, far) often provides a better interface

Using Field of View

aspect = w/h

front plane

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 10: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Computing Matrices! Compute in JS file, send to vertex shader with gl.uniformMatrix4fv

! Dynamic: update in render() or shader

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 11: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Rather than derive a different projection matrix for each type of projection, we can convert all projections to orthogonal projections with the default view volume

! This strategy allows us to use standard transformations in the pipeline and makes for efficient clipping

Projection Normalization

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 12: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Pipeline View modelview

transformation projection

transformationperspective

division

clipping projection

4D → 3D

against default cube3D → 2D

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 13: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

!We stay in four-dimensional homogeneous coordinates through both the modelview and projection transformations Both these transformations are nonsingular Default to identity matrices (orthogonal view)

! Normalization lets us clip against simple cube regardless of type of projection

! Delay final projection until end Important for hidden-surface removal to retain depth information as long as possible

Notes

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 14: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

ortho(left,right,bottom,top,near,far)

Orthogonal Normalization

normalization ⇒ find transformation to convert specified clipping volume to default

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 15: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Two steps Move center to origin T(-(left+right)/2, -(bottom+top)/2,(near+far)/2))

Scale to have sides of length 2 S(2/(left-right),2/(top-bottom),2/(near-far))

Orthogonal Matrix

2right − left

0 0 −right − leftright − left

0 2top − bottom

0 −top+ bottomtop − bottom

0 0 2near − far

far + nearfar − near

0 0 0 1

#

$

% % % % % % %

&

'

( ( ( ( ( ( (

P = ST =

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 16: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Set z =0 ! Equivalent to the homogeneous coordinate transformation

! Hence, general orthogonal projection in 4D is

Final Projection

!!!!

"

#

$$$$

%

&

1000000000100001

Morth =

P = MorthST

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 17: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! The OpenGL/WebGL projection functions cannot produce general parallel projections

✦oblique parallel projections are useful ✦an oblique projection is characterized by the angle the projectors make with the projection plane

! However if we look at the example of the cube it appears that the cube has been sheared

! Oblique Projection = Shear + Orthogonal Projection

Oblique Projections

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 18: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

side view

General Shear

top view

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 19: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

xy shear (z values unchanged)

Projection matrix

General case:

Shear Matrix

!!!!

"

#

$$$$

%

&

100001000φcot100θcot01

H(θ,φ) =

P = Morth H(θ,φ)

P = Morth STH(θ,φ)

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Shearing matrix

Page 20: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Consider a simple perspective with the COP at the origin, the near clipping plane at z = -1, and a 90 degree field of view determined by the planes

x = ±z, y = ±z

Simple Perspective

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 21: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Simple projection matrix in homogeneous coordinates

Note that this matrix is independent of the far clipping plane

Perspective Matrices

!!!!

"

#

$$$$

%

&

− 0100010000100001

M =

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 22: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

N =

Generalization

!!!!

"

#

$$$$

%

&

− 0100βα0000100001

after perspective division, the point (x, y, z, 1) goes to

x’’ = x/z y’’ = y/z Z’’ = -(α+β/z)

which projects orthogonally to the desired point regardless of α and β

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 23: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Picking α and β

If we pick

α =

β =

nearfarfarnear

+

farnearfarnear2

the near plane is mapped to z = -1 the far plane is mapped to z =1 and the sides are mapped to x = ± 1, y = ± 1

Hence the new clipping volume is the default clipping volume

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 24: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

original clipping volume

Normalization Transformation

original object new clipping volume

distorted object projects correctly

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 25: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Although our selection of the form of the perspective matrices may appear somewhat arbitrary, it was chosen so that if z1 > z2 in the original clipping volume then the for the transformed points z1’ > z2’

! Thus hidden surface removal works if we first apply the normalization transformation

! However, the formula z’’ = -(α+β/z) implies that the distances are distorted by the normalization which can cause numerical problems especially if the near distance is small

Normalization and Hidden-Surface Removal

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 26: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

✦gl.frustum allows for an unsymmetric viewing frustum (although gl.perspective does not)

WebGL Perspective

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 27: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! The normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume. Finally, the perspective matrix results in needing only a final orthogonal transformation

OpenGL Perspective Matrix

P = NSH

our previously defined perspective matrix shear and scale

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 28: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

!Normalization allows for a single pipeline for both perspective and orthogonal viewing

!We stay in four dimensional homogeneous coordinates as long as possible to retain three-dimensional information needed for hidden-surface removal and shading

!We simplify clipping

Why do we do it this way?

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 29: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Perspective Matrices

P =

2* nearright − left

0 right − leftright − left

0

0 2* neartop − bottom

top+ bottomtop − bottom

0

0 0 −far + nearfar − near

−2* far * nearfar − near

0 0 −1 0

#

$

% % % % % % %

&

'

( ( ( ( ( ( (

P =

nearright

0 0 0

0 neartop

0 0

0 0 −far + nearfar − near

−2* far * nearfar − near

0 0 −1 0

#

$

% % % % % % %

&

'

( ( ( ( ( ( (

frustum

perspective

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 30: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Lighting

Page 31: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Jeff Chastine

What is Light?! A very complex process ◦ Find a dark area – how is it being lit? ◦ Light bounces (mirrors, shiny objects) ◦ Light refracts through other media (water, heat) ◦ Light comes from everywhere (Global Illumination) ◦ Light bounces off of lakes in weird ways (Fresnel effect)

! THUS ◦ We’re forced to make approximations ◦ Tradeoff between time and realism ◦ “If it looks good, it is good” – Michael Abrash

http://darrentakenaga.com/3d.html

http://en.wikipedia.org/wiki/File:Global_illumination.JPG

Page 32: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Lighting Principles! Lighting simulates how objects reflect light ■ material composition of object ■ light’s color and position ■ global lighting parameters

! Lighting functions deprecated in 3.1 ! Can implement in ■ Application (per vertex) ■ Vertex or fragment shaders

Page 33: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

!Why does the image of a real sphere look like

! Light-material interactions cause each point to have a different color or shade

! Need to consider Light sources Material properties Location of viewer Surface orientation

Shading

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 34: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Light strikes A Some scattered Some absorbed

! Some of scattered light strikes B Some scattered Some absorbed

! Some of this scattered light strikes A and so on

Scattering

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 35: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! The infinite scattering and absorption of light can be described by the rendering equation Cannot be solved in general Ray tracing is a special case for perfectly reflecting surfaces

! Rendering equation is global and includes Shadows Multiple scattering from object to object

Rendering Equation

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 36: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Global Effects

translucent surface

shadow

multiple reflection

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 37: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

!Correct shading requires a global calculation involving all objects and light sources Incompatible with pipeline model which shades each polygon independently (local rendering)

!However, in computer graphics, especially real time graphics, we are happy if things “look right” Exist many techniques for approximating global effects

Local vs Global Rendering

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 38: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Light that strikes an object is partially absorbed and partially scattered (reflected)

! The amount reflected determines the color and brightness of the object A surface appears red under white light because the red component of the light is reflected and the rest is absorbed

! The reflected light is scattered in a manner that depends on the smoothness and orientation of the surface

Light-Material Interaction

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 39: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

General light sources are difficult to work with because we must integrate light coming from all points on the source

Light Sources

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 40: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Point source Model with position and color Distant source = infinite distance away (parallel)

! Spotlight Restrict light from ideal point source

! Ambient light Same amount of light everywhere in scene Can model contribution of many sources and reflecting surfaces

Simple Light Sources

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 41: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! The smoother a surface, the more reflected light is concentrated in the direction a perfect mirror would reflected the light

! A very rough surface scatters light in all directions

Surface Types

smooth surface rough surface

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 42: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! A simple model that can be computed rapidly ! Has three components

Diffuse Specular Ambient

! Uses four vectors To source To viewer Normal Perfect reflector

Phong Model

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 43: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

!Normal is determined by local orientation ! Angle of incidence = angle of reflection ! The three vectors must be coplanar

Ideal Reflector

r = 2 (l · n ) n - l

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 44: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Perfectly diffuse reflector ! Light scattered equally in all directions ! Amount of light reflected is proportional to the vertical component of incoming light reflected light ~cos θi

cos θi = l · n if vectors normalized There are also three coefficients, kr, kb, kg that show how much of each color component is reflected

Lambertian Surface

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 45: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

!Most surfaces are neither ideal diffusers nor perfectly specular (ideal reflectors)

! Smooth surfaces show specular highlights due to incoming light being reflected in directions concentrated close to the direction of a perfect reflection

Specular Surfaces

specular highlight

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 46: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Phong proposed using a term that dropped off as the angle between the viewer and the ideal reflection increased

Modeling Specular Relections

φ

Ir ~ ks I cosαφ

shininess coef

absorption coef

incoming intensityreflected intensity

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 47: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

! Values of α between 100 and 200 correspond to metals

! Values between 5 and 10 give surface that look like plastic

The Shininess Coefficient

cosα φ

φ 90-90

Angel and Shreiner: Interactive Computer Graphics 7E © Addison-Wesley 2015

Page 48: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Modified Phong Model! Computes a color or shade for each vertex using a lighting model (the modified Phong model) that takes into account ■ Diffuse reflections ■ Specular reflections ■ Ambient light ■ Emmision

! Vertex shades are interpolated across polygons by the rasterizer

Page 49: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

The Modified Phong Model! The model is a balance between simple computation and physical realism

! The model uses ■ Light positions and intensities ■ Surface orientation (normals) ■ Material properties (reflectivity) ■ Viewer location

! Computed for each source and each color component

Page 50: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Surface Normals! Normals define how a surface reflects light ■ Application usually provides normals as a vertex atttribute

■ Current normal is used to compute vertex’s color ■ Use unit normals for proper lighting ● scaling affects a normal’s length

Page 51: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

Material Properties! Define the surface properties of a primitive ■ you can have separate materials for front and back

Property Description

Diffuse Base object color

Specular Highlight color

Ambient Low-light color

Emission Glow color

Shininess Surface smoothness

Page 52: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

A BASIC LIGHTING CONCEPT• How can we determine how much light should be cast onto a triangle from a directional light?

P2

P0

P1

Directional light - position doesn’t matter - triangle is almost fully lit

52

Page 53: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

A BASIC LIGHTING CONCEPT• How can we determine how much light should be cast onto a triangle from a directional light?

P2

P0

P1

(Triangle less lit)

53

Page 54: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

A BASIC LIGHTING CONCEPT• How can we determine how much light should be cast onto a triangle from a directional light?

P2

P0

P1

(Little to no light hits the surface)

54

Page 55: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

A BASIC LIGHTING CONCEPT• How can we determine how much light should be cast onto a triangle from a directional light?

P2

P0

P1

(Directional light)

55

Page 56: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

A BASIC LIGHTING CONCEPT• How can we determine how much light should be cast onto a triangle from a directional light?

P2

P0

P1

(Directional light)

56

Page 57: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

A BASIC LIGHTING CONCEPT• How can we determine how much light should be cast onto a triangle from a directional light?

P2

P0

P1

(Directional light)

Lesson learned: Lighting depends on angles between vectors!

57

Page 58: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

A BASIC LIGHTING CONCEPT• How can we determine how much light should be cast onto a triangle from a directional light?

P2

P0

P1

(Directional light)

Assuming N and L are normalized, and N·L isn’t negative58

Page 59: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

BASIC LIGHTING• Four independent components:

• Diffuse – the way light “falls off” of an object • Specular – the “shininess” of the object • Ambient – a minimum amount of light used to simulate “global illumination” • Emit – a “glowing” effect

Only diffuse

59

Page 60: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

BASIC LIGHTING• Four independent components:

• Diffuse – the way light “falls off” of an object • Specular – the “shininess” of the object • Ambient – a minimum amount of light used to simulate “global illumination” • Emit – a “glowing” effect

Diffuse+Specular

60

Page 61: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

BASIC LIGHTING• Four independent components:

• Diffuse – the way light “falls off” of an object • Specular – the “shininess” of the object • Ambient – a minimum amount of light used to simulate “global illumination” • Emit – a “glowing” effect

Ambient

Diffuse+Specular+Ambient

61

Page 62: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

BASIC LIGHTING• Four independent components:

• Diffuse – the way light “falls off” of an object • Specular – the “shininess” of the object • Ambient – a minimum amount of light used to simulate “global illumination” • Emit – a “glowing” effect

D+S+A+Emit

Note: emit does not produce light! 62

Page 63: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

INTERACTION BETWEEN MATERIAL AND LIGHTS• Final color of an object is comprised of many things:

• The base object color (called a “material”) • The light color • Example: a purple light on a white surface • Any textures we apply (later)

• Materials and lights have four individual components • Diffuse color (cd and ld) • Specular color (cs and ls) • Ambient color (ca and la) • Emit color (ce and le) • cd * ld = [cd.r*ld.r , cd.g*ld.g , cd.b*ld.b] // R, G, B

63

Page 64: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

GENERAL LIGHTING• Primary vectors

• l – the incoming light vector • n – the normal of the plane/vertex • r – the reflection vector • v – the viewpoint (camera)

l n

r

θ θ

v

Page 65: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

LAMBERTIAN REFLECTANCE(DIFFUSE COMPONENT)

l n

θ

Page 66: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

LAMBERTIAN REFLECTANCE(DIFFUSE COMPONENT)

l n

θ

Note: final_colordiffuse has R, G, B

scalar 3 parts (R, G, B)

Page 67: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

LAMBERTIAN REFLECTANCE(DIFFUSE COMPONENT)

l n

θ

Page 68: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

BLINN-PHONG REFLECTION(SPECULAR COMPONENT)

• Describes the specular highlight and is dependent on viewpoint v • Also describes a “half-vector” h that is halfway between v and l

l

n

r

θ θ

v

h

Page 69: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

BLINN-PHONG REFLECTION(SPECULAR COMPONENT)

l

n

r

θ θ

v

h

Note: vectors should be normalized

Page 70: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

BLINN-PHONG REFLECTION(SPECULAR COMPONENT)

l

n

r

θ θ

v

h

Page 71: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

s = ~1 s = ~30 s = ~255

Page 72: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

AMBIENT AND EMIT COMPONENTS•

Page 73: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

FINAL COLOR• To determine the final color (excluding textures) we sum up all components:

http://en.wikipedia.org/wiki/Phong_reflection_model

final_colordiffuse final_colorspecular final_colorambient final_coloremit

final_color

+

Page 74: 10.lighting - Clarkson UniversityThe normalization in frustum requires an initial shear to form a right viewing pyramid, followed by a scaling to get the normalized perspective volume

JEFF CHASTINE

WHAT ABOUT MULTIPLE LIGHTS?•