48
CSPC 352: Computer Graphics Chapter 6: Lighting and Shading

CSPC 352: Computer Graphics

  • Upload
    gordon

  • View
    65

  • Download
    0

Embed Size (px)

DESCRIPTION

CSPC 352: Computer Graphics. Chapter 6: Lighting and Shading. Overview. Local and global illumination Phong reflectance model (local illumination) Flat, Gouraud, and Phong Shading on a polygonal mesh Surface subdivisions Shading in OpenGL. Need for shading. - PowerPoint PPT Presentation

Citation preview

Page 1: CSPC 352:  Computer Graphics

CSPC 352: Computer Graphics

Chapter 6:Lighting

and

Shading

Page 2: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 2

Overview Local and global illumination Phong reflectance model (local

illumination) Flat, Gouraud, and Phong Shading on a polygonal mesh Surface subdivisions Shading in OpenGL WebGL lighting demo

Page 3: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 3

Page 4: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 4

Need for shading How do you make something look 3D? Shading that is

appropriate for the lighting is the primary cue to 3D appearance

[What are some other cues?]

Page 5: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 5

Illumination models General approach:

model the world simulate physics

Global illumination models (ray tracing, radiosity) determine shading by bouncing light around an entire environment (too slow for interactive graphics, usually [1] [2])

Local illumination models consider only the surface, light direction, and viewing direction

Page 6: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 6

Page 7: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 7

Local illumination To make lighting fast, we will initially

restrict our attention to: Light source, one surface, and viewer

(ignore inter-object reflections, shadows) Ambient, diffuse, and specular reflection

(ignore transparency, refraction, reflection, …)

Page 8: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 8

Page 9: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 9

Light sources In general, a light source is a rather

complicated thing. It can emit different amounts of light for each Location (x, y, z) Direction (, f) Wavelength (l)

Illumination function:I(x, y, z, , f, l)

Examples: ambient, point, area, spot,distant, …

Page 10: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 10

Colored lights Intensity of emitted light can also be a

function of wavelength We usually model as I = [Ir, Ig, Ib]

components Some experiments have been done

with a whole spectrum of color values, giving more realistic results in some cases

Page 11: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 11

Ambient light Intensity doesn’t vary with x, y, z, , f I = [Iar, Iag, Iab]

Page 12: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 12

Point lights Point lights have a location (so farther

objects receive less light) but are not directional

I(p0) = [Ir(p0), Ib(p0), Ig(p0)] How would you compute the

illumination at point p? Illumination proportional to

inverse square of distance I(p, p0) =

(1/d2) [Ir(p0), Ib(p0), Ig(p0)]

Page 13: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 13

Limitations of point lights Usually result in artificially

high-contrast images Can generate umbra

(full shadow) but notpenumbra (partial shadow)

Area lights generate softershadows, but are usuallyused only in non-interactive graphics (e.g. raytracing or radiosity)

Page 14: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 14

Distant (directional) lights Light point lights, but

Without attenuation based on the distance Without difference in direction (parallel

rays) Location of light source

becomes [x, y, z, 0]; noattenuation

More efficient to computethan point sources

Page 15: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 15

Spotlights Directional, i.e. light is emitted

in a narrow range of angles, More realistic spotlights would

model a gradual fall-off of light E.g. cose f

= (s • l)e if s is direction ofsource, l direction to source, both unit vectors

Page 16: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 16

Illumination and shading How do these light sources affect

brightness of a surface point? Most commonly used model for

interactive graphics: Phong Illumination Model

Involves terms: Ambient Diffuse Specular

It is a (simplified) model of the physics of reflection

Page 17: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 17

Vectors used by Phong model The directions used by the phong

model n: surface outward normal v: direction to viewer l: direction to light source r: reflection direction

Since these are directions, theyare unit vectors.

Page 18: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 18

Ambient term of Phong model An object has an ambient reflectivity

coefficient, ka A light source gives off a certain

amount of ambient light, La Total ambient illumination:

Ia = ka La (For colored light, we repeat this

computation for R, G, and B ambient light values and reflectivity coefficients)

Page 19: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 19

Page 20: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 20

Diffuse term A perfectly diffuse reflector is so rough

that it scatters light equally in all directions

But note that when thelight comes in at an angle,the same energy is spreadout over larger area

Such surfaces are calledLambertian surfaces (obeying Lambert’s Law)

Page 21: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 21

Diffuse shading At noon, illum. is 1 As the angle (u in

figure) decreases, illumination goes to zero

Illumination is proportional to cos() (Lambert’s law)

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

Page 22: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 22

Page 23: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 23

Specular Term Specular term adds highlights

in the reflection direction Note that the smoother and

shinier the object, the tigher and brighter thehighlight

Highlight power falls as viewer v moves away from reflection dir, r. (cos f = v • r)

Modeled as cosa f, a is shininess coefficient (1..200)

Is = ks Ls (r • v)a

Page 24: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 24

Page 25: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 25

Phong illumination model Phong illumination model:

I = Ambient + Diffuse + Specular= Ia + Id + Is = ka La + kd Ld l • n + ks Ls (r • v)a

May add light attenuation term 1/(a+bd+cd2) ( ka La + kd l • n Ld) + ks Ls (r •

v)a

Parameters needed: Light: La, Ld, Ls for each light Surface: ka, kd, ks, a Repeat for each color component, light

source How hard to calculate?

Page 26: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 26

Polygon shading How do you use the Phong Illumination

Model to render an object with shading? Consider a polygonal sphere

approximation How do you find the normals to the faces? Shade a face with a constant color?

glShadeModel(GL_FLAT);

Called flat shading or Constant shading How much computation would this require

Per pixel? Per vertex?

Page 27: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 27

Page 28: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 28

Flat shading drawbacks The human visual system enhances

edges We see stripes

(known as MachBands) along edges

Much like aconvolution!

How to avoid?

Page 29: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 29

Gouraud shading Gouraud shading:

Define vertex normals as averageof surrounding faces

Compute lighting equation at each vertex

Interpolate colors across polygonglShadeModel(GL_SMOOTH);

Computation required Per pixel? Per vertex? Very fast! Especially with reasonably large

polygons and hardware color interpolationExample

Page 30: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 30

Bilinear interpolation Rasterization is done a scan-line at a

time Bilinear interpolation: given a color at

each vertex, how do you render a scan-line with smooth shading? interpolate vertex colors along each edge

of the polygon to get colors for start and end of scanline

interpolate colors along the scanline

Page 31: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 31

Page 32: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 32

Gouraud drawbacks Drawbacks of Gouraud

shading? Polygon edges are still visible Brightness is modelled as

a linear function, but that’snot really accurate

Real highlights are smalland bright and drop off sharply

If polygons are too large, highlights get distorted and dimmed (notice the funny shape)

How to avoid these artifacts?

Page 33: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 33

Phong shading To eliminate artifacts,

interpolate normals Results: better shading,

much nicer highlights Computation required

per pixel?

Computationally much more expensive, but modern graphics cards can do it

Example

Page 34: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 34

Page 35: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 35

Shading summary Don’t confuse Phong Illumination Model

and Phong Shading Gouraud shading: compute illumination

model at each vertex. Interpolate colors. (Often done in hardware)

Phong shading: interpolate vertex normals. Compute illumination model at each vertex

Page 36: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 36

Specifying lights in OpenGL OpenGL supports those four light types Point, directional lights

GLfloat light0_pos[] = {1.0, 2.0, 3.0, 1.0};GLfloat light0_pos[] = {1.0, 2.0, 3.0, 0.0};

Diffuse, Ambient, Specular coefficients GLfloat diffuse0[] = {1, 0, 0, 1};GLfloat ambient0[] = {1, 0, 0, 1};GLfloat spedular0[] = {1, 1, 1, 1};

glEnable(GL_LIGHTING)

Page 37: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 37

Page 38: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 38

Enabling lights Can enable at least 8 lights:

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_SPECULA, specular0);

Spotlights: set more light parameters as above GL_SPOT_DIRECTION GL_SPOT_EXPONENT GL_SPOT_CUTOFF

Page 39: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 39

Specifying Materials Material properties are part of the

drawing state, specified by glMaterialfvGLfloat 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};glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);glMaterialfv(GL_FRONT, GL_SPECULAR, specular);glMaterialf(GL_FRONT, GL_SHININESS, 100.0);

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

Use GL_FRONT_AND_BACK for two-sided faces

Page 40: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 40

Page 41: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 41

OpenGL Gouraud Shading OpenGL needs to know vertex normals

as well as locationsglNormal3fv(n);glVertex3fv(p);

How to compute vertex normals? Cross product for face normals Average normals of surrounding faces

How to find neighboring faces?

Page 42: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 42

Virtual Trackball shading Flat shading

Compute a normal for each face Gouraud shading

Compute a normal for each vertex as average of adjacent faces

[Defect: you may not want to smooth-shade across every edge: how should it really be done?]

Phong shading? What would you have to do to handle

material properties, surface colors, etc?

Page 43: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 43

Surface subdivision In real modelers…

one can usually define smooth curved surfaces

Eg spheres, quadrics, NURBS, smoothed polygons

Modeler renders with smoothness setting Recursively split polygons into smaller

pieces, with new vertices on the smooth surface

Splitting a triangle can be done by Bisecting angles Computing the centrum Bisecting sides

Of course, smoother surfaces take longer to draw

Page 44: CSPC 352:  Computer Graphics

What’s missing? Now that the rendering pipeline is all

software, we can add additional effects What’s missing?

Interactive Computer GraphicsChapter 3 - 44

Page 45: CSPC 352:  Computer Graphics

Fresnel Effect Surface reflectance depends on viewing angle Fresnel shaders: allow reflection, specularity,

other attributes to depend on viewing angle

Interactive Computer GraphicsChapter 3 - 45

Page 47: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 47

Page 48: CSPC 352:  Computer Graphics

Interactive Computer GraphicsChapter 3 - 48

Chapter summary Phong illumination model has ambient,

diffuse, and specular terms It can be used for Flat, Gouraud, and

Phong shading OpenGL supports eight ambient, point,

distant, and spot lights You must specify light and material

properties with many OpenGL function calls

Curved surfaces are modeled with polygon subdivisions