Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "CSPC 352: Computer Graphics Chapter 6: Lighting and Shading."— Presentation transcript:

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

2 Interactive Computer GraphicsChapter 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 demolighting demo

3 Interactive Computer GraphicsChapter 3 - 3

4 Interactive Computer GraphicsChapter 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?]

5 Interactive Computer GraphicsChapter 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])12 Local illumination models consider only the surface, light direction, and viewing direction

6 Interactive Computer GraphicsChapter 3 - 6

7 Interactive Computer GraphicsChapter 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, …)

8 Interactive Computer GraphicsChapter 3 - 8

9 Interactive Computer GraphicsChapter 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 ( ,  ) Wavelength ( ) Illumination function: I(x, y, z, , , ) Examples: ambient, point, area, spot, distant, …

10 Interactive Computer GraphicsChapter Colored lights Intensity of emitted light can also be a function of wavelength We usually model as I = [I r, I g, I b ] components Some experiments have been done with a whole spectrum of color values, giving more realistic results in some cases

11 Interactive Computer GraphicsChapter Ambient light Intensity doesn’t vary with x, y, z, ,  I = [I ar, I ag, I ab ]

12 Interactive Computer GraphicsChapter Point lights Point lights have a location (so farther objects receive less light) but are not directional I(p 0 ) = [I r (p 0 ), I b (p 0 ), I g (p 0 )] How would you compute the illumination at point p? Illumination proportional to inverse square of distance I(p, p 0 ) = (1/d 2 ) [I r (p 0 ), I b (p 0 ), I g (p 0 )]

13 Interactive Computer GraphicsChapter Limitations of point lights Usually result in artificially high-contrast images Can generate umbra (full shadow) but not penumbra (partial shadow) Area lights generate softer shadows, but are usually used only in non-interactive graphics (e.g. raytracing or radiosity)

14 Interactive Computer GraphicsChapter 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]; no attenuation More efficient to compute than point sources

15 Interactive Computer GraphicsChapter 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. cos e  = (s l) e if s is direction of source, l direction to source, both unit vectors

16 Interactive Computer GraphicsChapter 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

17 Interactive Computer GraphicsChapter 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, they are unit vectors.

18 Interactive Computer GraphicsChapter Ambient term of Phong model An object has an ambient reflectivity coefficient, k a A light source gives off a certain amount of ambient light, L a Total ambient illumination: I a = k a L a (For colored light, we repeat this computation for R, G, and B ambient light values and reflectivity coefficients)

19 Interactive Computer GraphicsChapter

20 Interactive Computer GraphicsChapter Diffuse term A perfectly diffuse reflector is so rough that it scatters light equally in all directions But note that when the light comes in at an angle, the same energy is spread out over larger area Such surfaces are called Lambertian surfaces (obeying Lambert’s Law)

21 Interactive Computer GraphicsChapter 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 I d = k d l n L d

22 Interactive Computer GraphicsChapter

23 Interactive Computer GraphicsChapter Specular Term Specular term adds highlights in the reflection direction Note that the smoother and shinier the object, the tigher and brighter the highlight Highlight power falls as viewer v moves away from reflection dir, r. (cos  = v r) Modeled as cos  ,  is shininess coefficient (1..200) I s = k s L s (r v) 

24 Interactive Computer GraphicsChapter

25 Interactive Computer GraphicsChapter Phong illumination model Phong illumination model: I = Ambient + Diffuse + Specular = I a + I d + I s = k a L a + k d L d l n + k s L s (r v)  May add light attenuation term 1/(a+bd+cd 2 ) ( k a L a + k d l n L d ) + k s L s (r v)  Parameters needed: Light: L a, L d, L s for each light Surface: k a, k d, k s,  Repeat for each color component, light source How hard to calculate?

26 Interactive Computer GraphicsChapter 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?

27 Interactive Computer GraphicsChapter

28 Interactive Computer GraphicsChapter Flat shading drawbacks The human visual system enhances edges We see stripes (known as Mach Bands) along edges Much like a convolution! How to avoid?

29 Interactive Computer GraphicsChapter Gouraud shading Gouraud shading: Define vertex normals as average of surrounding faces Compute lighting equation at each vertex Interpolate colors across polygon glShadeModel(GL_SMOOTH); Computation required Per pixel? Per vertex? Very fast! Especially with reasonably large polygons and hardware color interpolation Example

30 Interactive Computer GraphicsChapter 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

31 Interactive Computer GraphicsChapter

32 Interactive Computer GraphicsChapter Gouraud drawbacks Drawbacks of Gouraud shading? Polygon edges are still visible Brightness is modelled as a linear function, but that’s not really accurate Real highlights are small and bright and drop off sharply If polygons are too large, highlights get distorted and dimmed (notice the funny shape) How to avoid these artifacts?

33 Interactive Computer GraphicsChapter 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

34 Interactive Computer GraphicsChapter

35 Interactive Computer GraphicsChapter 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

36 Interactive Computer GraphicsChapter 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)

37 Interactive Computer GraphicsChapter

38 Interactive Computer GraphicsChapter 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

39 Interactive Computer GraphicsChapter Specifying Materials Material properties are part of the drawing state, specified by glMaterialfv 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}; 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

40 Interactive Computer GraphicsChapter

41 Interactive Computer GraphicsChapter OpenGL Gouraud Shading OpenGL needs to know vertex normals as well as locations glNormal3fv(n); glVertex3fv(p); How to compute vertex normals? Cross product for face normals Average normals of surrounding faces How to find neighboring faces?

42 Interactive Computer GraphicsChapter 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?

43 Interactive Computer GraphicsChapter 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

44 What’s missing? Now that the rendering pipeline is all software, we can add additional effects What’s missing? Interactive Computer GraphicsChapter

45 Fresnel Effect Surface reflectance depends on viewing angle Fresnel shaders: allow reflection, specularity, other attributes to depend on viewing angle Interactive Computer GraphicsChapter

46 How would you do this? Refraction: Interactive Computer GraphicsChapter

47 Interactive Computer GraphicsChapter

48 Interactive Computer GraphicsChapter 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


Download ppt "CSPC 352: Computer Graphics Chapter 6: Lighting and Shading."

Similar presentations


Ads by Google