Computer Graphics 1, Lecture 5 April 25, 2005

The Phong Reflection Model

ô Ambient reflection + ô Diffuse reflection + ô Specular reflection

Computer Graphics 1, Spring 2005 n v Lecture 5 r l θ φ Chapter 6

Ingela Nyström

Ambient reflection Ambient reflection

Ia = k a La

Diffuse reflection Diffuse reflection

n

l θ

θ • Id = kd Ld cos( ) = kd Ld (n l)

Lambert’s law

Ingela Nyström 1 Computer Graphics 1, Lecture 5 April 25, 2005

Specular reflection Specular reflection

n v r

φ l

α φ • α Is = ks Ls cos ( ) = ks Ls (v r)

Shininess = 20

The Phong Reflection Model Phong reflection

For each color (r,g,b) calculate the reflected intensity :

Ambient Distance term Diffuse Specular 1 • • α )) = Σ ( k L + 2 ( k L (n l) + k L (v r) I a a a+ bd + cd d d s s All lightsources Shininess Distance to lightsource

Material properties: n v α r ka, kd, ks , l θ φ Lightsource properties:

La, L d, L s, a, b, c

Calculation of reflection vector r

n l r ambient + diffuse + specular s s

(l • n) n r = l + 2 s = l + 2 ( ( l • n) n - l ) = 2 ( l • n) n - l

Ingela Nyström 2 Computer Graphics 1, Lecture 5 April 25, 2005

Use of halfway vector h When to use which parts of the model?

v n v n h n r r r l l ψ l φ v I = Ia + I d + I s I = Ia

Lightsource and observer are on the same side if sign ( l•n) = sign ( v•n) h = ( l+v) / | l+v| (v•r)α is replaced with ( n•h)α’ 2ψ = φ (or equally : (l•n)( v•n) > 0 )

Flat shading Flat shading

• One colour for the whole polygon • Normal vector is easily calculated from a cross product • Fast, but with rather poor result • Mach bands are very prominent

n c

a b n = (b-a) × (c-a) / |(b-a) × (c-a)|

Interpolated/ Interpolated/Gouraud shading

• Calculate one colour at each vertex point • Linearly interpolate the colour over the surface • Normal vector needed at each vertex point • Medium speed, medium result • Commonly used nc nc

c

na nb

a b

Ingela Nyström 3 Computer Graphics 1, Lecture 5 April 25, 2005

Phong shading Polygonal Shading

• Interpolate the normal vector over the surface • Calculate the colour at each pixel • Normal vector needed at each vertex point • Best result

• Slow in its original form nc

c

na nb

b a Flat Gouraud Phong

Gouraud vs Phong Gouraud vs Phong

• Gouraud interpolates colour

• Phong interpolates normal vectors

A highlight in the middle of a polygon is lost with Gouraud shading. This is most visible on large polygons with a close lightsource.

Gouraud Phong

Normal vectors of vertices Approximative

Average of neighbouring polygons

n2 n+ n+ n+ n n = 1 2 3 4 n + + + n 1 n1 n 2 n 3 n 4 n3

ô Make use of a 2D lookup table, n 4 In real-time, this takes computing power. a texture map Often we transform pre-calculated normal ô It is not a perfect approximation as vectors (which may be true normals). we do not care about changing the l-vector, but it still looks good

Ingela Nyström 4 Computer Graphics 1, Lecture 5 April 25, 2005

Shadows Shadows

ô Up to now a local model has been used ô Other objects are not involved ô Hence, no shadows are obtained ô But shadows can help the visual system to detect the third dimension

Shadows Shadows from projections

ô To calculate real shadows, we make a projection for each lightsource ô The lightsource itself is at the centre of projection (COP) ô Hidden surface removal techniques tell us which surfaces get illuminated ô We render the scene once for each lightsource

Special tricks Special tricks

A simple way to get a dark fuzzy blob If the lightsources do not move: under an object, is to add a “darksource“ pre-calculate “shadow polygons“ inside the object , i.e., a lightsource with If the objects do not move: negative light use “light maps“ (see texture lecture)

Ingela Nyström 5