63
1 Chapter 6 Shading

1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

Embed Size (px)

Citation preview

Page 1: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

1

Chapter 6

Shading

Page 2: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

2

Objectives Learn to shade objects so their images appe

ar three-dimensional Introduce the types of light-material interac

tions Build a simple reflection model---the Phon

g model--- that can be used with real time graphics hardware

Page 3: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

3

Why we need shading Suppose we build a model of a sphere usin

g many polygons and color it with glColor. We get something like

But we want

Page 4: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

4

Shading 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

Page 5: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

5

Scattering Light strikes A

Some scattered Some absorbed

Some of scattered light strikes B Some scattered Some absorbed

Some of this scatterd

light strikes A

and so on

Page 6: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

6

Rendering Equation 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

Page 7: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

7

Global Effects

translucent surface

shadow

multiple reflection

Page 8: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

8

Local versus Global Rendering 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

Page 9: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

9

Computer Viewing

Page 10: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

10

Light-Material Interaction 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

Page 11: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

11

Surface Types 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

specular diffuse translucent

Page 12: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

12

Light Sources Each point on the light source:

I(x, y, z, , , ) General light sources are difficult to work

with because we must integrate light coming from all points on the source

Page 13: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

13

Color Sources Consider a light source through a three-

component intensity or luminance function

b

g

r

I

I

I

I

Page 14: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

14

Simple Light Sources – 1/3 Ambient light

Same amount of light everywhere in scene Can model contribution of many sources and

reflecting surfaces

ab

ag

ar

a

I

I

I

I

Page 15: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

15

Simple Light Sources – 2/3 Point source

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

Replacing a point by a direction vector

umbra

penumbra

Page 16: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

16

Simple Light Sources – 3/3

Spotlight

Restrict light from ideal point source

eI cos

Page 17: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

17

Phong Model A simple model that can be computed rapidly Has three components

Diffuse Specular Ambient

Uses four vectors To source To viewer Normal Perfect reflector

Page 18: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

18

Light Sources In the Phong Model, we add the results fro

m each light source Each light source has separate diffuse, spec

ular, and ambient terms to allow for maximum flexibility even though this form does not have a physical justification

Separate red, green and blue components Hence, 9 coefficients for each point source

Idr, Idg, Idb, Isr, Isg, Isb, Iar, Iag, Iab

Page 19: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

19

Material Properties Material properties match light source prop

erties Nine absorbtion coefficients

kdr, kdg, kdb, ksr, ksg, ksb, kar, kag, kab

Shininess coefficient

Page 20: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

20

Ambient Reflection Ambient light is the result of multiple inter

actions between (large) light sources and the objects in the environment

Amount and color depend on both the color of the light(s) and the material properties of the object

Add ka Ia to diffuse and specular terms

reflection coef intensity of ambient light

Page 21: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

21

Diffuse Reflection – 1/2 Perfectly diffuse reflector

(Lambertian Surface) Light scattered equally in all directions

Rough Surface

Page 22: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

22

Diffuse Reflection – 2/2 Amount of light reflected is proportional to the v

ertical 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

Page 23: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

23

Specular Surfaces Most surfaces are neither ideal diffusers nor perfe

ctly specular (ideal refectors) Smooth surfaces show specular highlights due to

incoming light being reflected in directions concentrated close to the direction of a perfect reflection

specularhighlight

Page 24: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

24

Modeling Specular Reflections Phong proposed using a term that dropped

off as the angle between the viewer and the ideal reflection increased

Ir ~ ks I cos

shininess coef

absorption coef

incoming intensityreflectedintensity

Page 25: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

25

The Shininess Coefficients Values of between 100 and 200 correspond to

metals Values between 5 and 10 give surface that look

like plastic

cos

90-90

Page 26: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

26

Distance Terms The light from a point source that reaches a surfac

e is inversely proportional to the square of the distance between them

We can add a factor of the

form 1/(ad + bd +cd2) to

the diffuse and specular

terms The constant and linear terms soften the effect of

the point source

Page 27: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

27

Examples

Only differences in these teapots are the parametersin the Phong model

Page 28: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

28

Computation of Vectors Normal vectors Reflection vector

Page 29: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

29

Normal for Triangle

p0

p1

p2

n

plane n ·(p - p0 ) = 0

normalize n n/ |n|

p

Note that right-hand rule determines outward face

Page 30: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

30

Normal for Sphere

Tangent plane to a sphere

Page 31: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

31

Ideal Reflector Normal is determined by local orientation Angle of incidence = angle of relection The three vectors must be coplanar

r = 2 (l · n ) n - l

Page 32: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

32

Halfway Vector

|| vl

vlh

2x

x

x

Page 33: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

33

Transmitted Light

Snell’s Law:

nn

nl

nt

n

n

lt

lt

tt

lt

l

t

t

l

coscos1

)cos1()(1cos

sin

sin

222

l

t

Page 34: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

34

Critical Angle

Page 35: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

35

Polygonal Shading Shading calculations are done for each vert

ex Vertex colors become vertex shades

By default, vertex colors are interpolated across the polygon glShadeModel(GL_SMOOTH);

If we use glShadeModel(GL_FLAT); the color at the first vertex will determine the color of the whole polygon

Page 36: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

36

Flat Shading Polygons have a single normal

Shades at the vertices as computed by the Phong model can be almost same

Identical for a distant viewer (default) or if there is no specular component

Consider model of sphere Want different normals ateach vertex even thoughthis concept is not quitecorrect mathematically

Page 37: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

37

Smooth Shading

We can set a new normal at each vertex

Easy for sphere model If centered at origin n = p

Now smooth shading works

Note silhouette edge

Page 38: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

38

Mesh Shading – 1/2 The previous example is not general becau

se we knew the normal at each vertex analytically

For polygonal models, Gouraud proposed we use the average of normals around a mesh vertex

|nnnn|

nnnnn

4321

4321

Page 39: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

39

Mesh Shading – 2/2

Page 40: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

40

Gouraud and Phong Shading Gouraud Shading

Find average normal at each vertex (vertex normals) Apply Phong model at each vertex Interpolate vertex shades across each polygon

Phong shading Find vertex normals Interpolate vertex normals across edges Find normals along edges Interpolate edge normals across polygons Find shade from its normal for each point in the poly

gon

Page 41: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

41

Phong Shading

Page 42: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

42

Comparison If the polygon mesh approximates surfaces with a

high curvatures, Phong shading may look smooth while Gouraud shading may show edges

Phong shading requires much more work than Gouraud shading Usually not available in real time systems

Both need data structures to represent meshes so we can obtain vertex normals

Page 43: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

43

Approximation of a Sphere by Recursive Subdivision

Start with a tetrahedron whose four vertices are on a unit sphere:

1/3)- /3,2- /3,6( 1/3),- ,/32- /3,6(- 1/3),- ,3/22 ,0( ),1 ,0 ,0(

3

4x

2

3

x6

3

x

z

x

y

Page 44: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

44

Recursive Subdivision – 1/3void triangle(point3 a, point3 b, point3 c){

glBegin(GL_LINE_LOOP);glVertex3fv(a);glVertex3fv(b);glVertex3fv(c);

glEnd();}Void tetrahedron(){

triangle(v[0], v[1], v[2]);triangle(v[3], v[2], v[1]);triangle(v[0], v[3], v[1]);triangle(v[0], v[2], v[3]);

}

0

1 2

3

Page 45: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

45

Recursive Subdivision – 2/3Bisecting angles Computing the centrum Bisecting sides

void normal(point3 p){

double d=0.0;int i;for(i=0; i<3; i++) d+=p[i]*p[i];d=sqrt(d);if(d>0.0) for (i=0; i<3; i++) p[i]/=d;

}

Normalization

Page 46: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

46

Recursive Subdivision – 3/3void divide_triangle(point3 a, point3 b, point3 c, int n){

point3 v1, v2, v3;int j;if(n>0) {for(j=0; j<3; j++) v1[j]=a[j]+b[j];normal(v1);for(j=0; j<3; j++) v2[j]=a[j]+c[j];normal(v2);for(j=0; j<3; j++) v3[j]=c[j]+b[j];normal(v3);divide_triangle(a, v1, v2, n-1);divide_triangle(c, v2, v3, n-1);divide_triangle(b, v3, v1, n-1);divide_triangle(v1, v3, v2, n-1);}elsetriangle(a, b, c);

}

a

b c

v1 v2

v3

Page 47: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

47

Enabling Shading Shading calculations are enabled by

glEnable(GL_LIGHTING)

Once lighting is enabled, glColor() ignored Must enable each light source individually

glEnable(GL_LIGHTi) i=0,1….. Can choose light model parameters

glLightModeli(parameter, GL_TRUE) GL_LIGHT_MODEL_LOCAL_VIEWER do not use simplif

ying distant viewer assumption in calculation GL_LIGHT_MODEL_TWO_SIDED shades both sides of po

lygons independently

Page 48: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

48

Defining a Point Light Source For each light source, we can set an RGB for the

diffuse, specular, and ambient parts, and the position

GL float diffuse0[]={1.0, 0.0, 0.0, 1.0}; /* red diffuse */GL float ambient0[]={1.0, 0.0, 0.0, 1.0}; /* red ambient */GL float specular0[]={1.0, 1.0, 1.0, 1.0}; /* white specular */Glfloat light0_pos[]={1.0, 2.0, 3,0, 1.0};

glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glLightfv(GL_LIGHT0, GL_POSITION, light0_pos);glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);glLightfv(GL_LIGHT0, GL_SPECULAR, specular0);

Page 49: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

49

Global Ambient Light Ambient light depends on color of light sou

rces A red light in a white room will cause a red a

mbient term that disappears when the light is turned off

OpenGL allows a global ambient term that is often helpful glLightModelfv(GL_LIGHT_MODEL_AMBIE

NT, global_ambient)

Page 50: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

50

Distance and Direction The source colors are specified in RGBA The position is given in homogeneous

coordinates If w =1.0, we are specifying a finite location If w =0.0, we are specifying a parallel source

with the given direction vector The coefficients in the distance terms are by

default a=1.0 (constant terms), b=c=0.0 (linear and quadratic terms). Change by

a= 0.80;glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, a);

Page 51: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

51

Spotlights Use glLightv to set

Direction GL_SPOT_DIRECTION Cutoff GL_SPOT_CUTOFF (angle) Attenuation GL_SPOT_EXPONENT

Proportional to cos

Page 52: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

52

Calculation of Reflection OpenGL assumes the distance between the viewe

r and the object is infinite, therefore the calculation is easier

UseglLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); to turn it on

Page 53: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

53

Front and Back Faces The default is shade only front faces which works

correct for convex objects If we set two sided lighting, OpenGL will shaded

both sides of a surface Each side can have its own properties which are s

et by using GL_FRONT, GL_BACK, or GL_FRONT_AND_BACK in glMaterialf

back faces not visible back faces visible

Page 54: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

54

Material Properties

Material properties are also part of the OpenGL state and match the terms in the Phong model

Set by glMaterialv() GLfloat ambient[] = {0.2, 0.2, 0.2, 1.0};

GLfloat diffuse[] = {1.0, 0.8, 0.0, 1.0};GLfloat specular[] = {1.0, 1.0, 1.0, 1.0};GLfloat shine = 100.0glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);glMaterialfv(GL_FRONT, GL_SPECULAR, specular);glMaterialfv(GL_FRONT, GL_SHININESS, shine);

Page 55: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

55

Emissive Term We can simulate a light source in OpenGL

by giving a material an emissive component

This color is unaffected by any sources or transformations

GLfloat emission[] = 0.0, 0.3, 0.3, 1.0);glMaterialfv(GL_FRONT, GL_EMISSION, emission);

Page 56: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

56

Efficiency Because material properties are part of the state, if

we change materials for many surfaces, we can affect performance

We can make the code cleaner by defining a material structure and setting all materials during initialization

We can then select a material by a pointer

typedef struct materialStruct { GLfloat ambient[4]; GLfloat diffuse[4]; GLfloat specular[4]; GLfloat shineness;} MaterialStruct;

Page 57: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

57

Moving Light Sources Light sources are geometric objects whose

positions or directions are affected by the model-view matrix

Depending on where we place the position (direction) setting function, we can Move the light source(s) with the object(s) Fix the object(s) and move the light source(s) Fix the light source(s) and move the object(s) Move the light source(s) and object(s) independently

Page 58: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

58

Transparency Material properties are specified as RGBA

values The A value can be used to make the

surface translucent The default is that all surfaces are opaque

regardless of A Later we will enable blending and use this

feature

Page 59: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

59

Polygon Normals Polygons have a single normal

Shades at the vertices as computed by the Phong model can be almost the same

Identical for a distant viewer (default) or if there is no specular component

Consider model of sphere Want different normals ateach vertex even thoughthis concept is not quitecorrect mathematically

Page 60: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

60

Normals – 1/2 In OpenGL the normal vector is part of the state Set by glNormal*()

glNormal3f(x, y, z); glNormal3fv(p);

Usually we want to set the normal to have unit length so cosine calculations are correct Length can be affected by transformations Note the scale does not preserved length glEnable(GL_NORMALIZE) allows for auton

ormalization at a performance penalty

Page 61: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

61

Normals – 2/2Void triangle(point3 a, point3 b, point3 c){

point3 n;cross(a, b, c, n); calculation of the normalglBegin(GL_POLYGON);glNormal3fv(n);glVertex3fv(a);glVertex3fv(b);glVertex3fv(c);glEnd();

}

Page 62: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

62

Global Rendering

Ray Tracing and Radiosity Use the original pipeline

to simulate some globaleffect

Page 63: 1 Chapter 6 Shading. 2 Objectives Learn to shade objects so their images appear three-dimensional Introduce the types of light-material interactions Build

63

Summary and Notes Why do we need shading? What does shading do? Light sources, material properties, normals

… Ambient, diffuse, specular terms Local shading versus global shading