Download Presentation
Graphics II 91.547 Shadow Maps Reflections

Loading in 2 Seconds...

1 / 31

# Graphics II 91.547 Shadow Maps Reflections - PowerPoint PPT Presentation

Graphics II 91.547 Shadow Maps Reflections. Session 5. Shadow Maps. Light Source. Objects. Eye Point. Shadow Maps: The algorithm. 1. Transform the scene objects to the light source coordinates (x’,y’,z’). 2. Disable color buffer writing and render the scene

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

## PowerPoint Slideshow about 'Graphics II 91.547 Shadow Maps Reflections' - xaria

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Graphics II 91.547Shadow MapsReflections

Session 5

Shadow Maps

Light Source

Objects

Eye Point

Shadow Maps:The algorithm

1. Transform the scene objects to the light source

coordinates (x’,y’,z’).

2. Disable color buffer writing and render the scene

objects into the z - buffer

3. Copy this buffer into a “shadow z - buffer”

4. Transform the scene back to the eye coordinates (x,y,z).

5. Render the scene. At each pixel, if a point on a surface

is deemed to be visible, it is transformed into light source

coordinates: (x,y,z) -> (x’,y’,z’). The x’ and y’ coordinates

are used to index into the shadow z-buffer and z’ is compared

with the z value in the buffer. If z’ is greater than this

value, the point is in shadow and it is rendered as if the

light is turned off.

6. Repeat for other light sources, and accumulate color

Shadow MapsTradeoffs
• Excellent for situations when shadowing and shadowed objects are both complex
• Some graphics systems do not provide necessary primitives or buffers
• Aliasing is a problem
• Possible solutions
• Use high - resolution shadow z buffer
• Jitter shadow texture to smooth out edges
• Difficult to find appropriate projection when light source is in the middle of scene objects
Finite light sources produce“soft shadows”

Finite size

light source

Shadowing

object

Simulating finite size light source byMultiple point sources: “dithering”

Light source moves in grid

Shadowing

Object (polygon)

Plane of projection

Shadows are “accumulated”

The Accumulation Buffer

Color Planes

Color data

Accumulation Buffer

Accumulation buffer use:

void glAccum(glenum op,glFloat value);

op:

GL_ACCUM reads each pixel from buffer currently selected for

reading and multiplies RGBA values by value and adds

the result to accumulation buffer.

GL_LOAD reads each pixel from the buffer currently selected for

reading, multiplies RGBA values by value and replaces values

in accumulation buffer.

GL_RETURN takes values from the accumulation buffer, mutiplies

them by value, and places them in the color buffer.

GL_ADD, GL_MULT adds or multiplies the value of each pixel in

the accumulation buffer by value and returns it to the

accumulation buffer.

Accumulation Bufferop = GL_ACCUM

Value

Color Planes

Accumulation Buffer

S

X

Accumulation Bufferop = GL_LOAD

Value

Color Planes

Accumulation Buffer

X

Accumulation Bufferop = GL_RETURN

Value

Color Planes

Accumulation Buffer

X

Accumulation Bufferop = GL_MULT

Value

Accumulation Buffer

X

Reflections

Direct ray

Eye point

Reflected

ray

Plane of Reflection

Reflection Transformations:the general case - constructing the transformation

Inverse transformation

Reflection across

X - Z Plane

Transformation to

move reflecting

plane to X - Z plane

Reflections:Visibility Issues

Real Cone

Real Ball

Eyepoint

Finite Size

Reflecting

Object

Reflected Ball

Not Visible

Reflected Cone

Reflections:Visibility Issues

“Reflected Cone”

Should not be visible

Eyepoint

Finite Size

Reflecting

Object

Real Cone

Should be obstructed by

reflecting object

Solution to visibility issues:use stencil and z buffer

The algorithm:

1. Disable the depth test

2. Set stencil operation to replace with 1

3. Draw the reflecting polygon

4. Set the stencil operation to only draw where stencil=1

5. Multiply reflecting transformation onto modelview matrix

6. Enable depth test, render objects. Clip objects that are on

opposite side of the reflecting plane from eyepoint.

7. Disable stencil test

8. Remove reflection transformation from modelview

9. Disable writing to color buffer

10. Draw the reflecting polygon

11. Enable writing to color buffer

12. Render the scene (unreflected)

Calculation of Texture Coordinates

For each vertex, the reflected vector direction is given by:

Let m be defined as:

The texture coordinates are given by:

Sphere Mapping:The OpenGL Algorithm

1. Bind the texture containing the sphere map.

2. Set sphere mapping texture coordinate generation:

glTexGen(GL_S, GL_TEXTURE_GEN_MODE,

GL_SPHERE_MAP);

glTexGen(GL_T, GL_TEXTURE_GEN_MODE,

GL_SPHERE_MAP);

3. Enable texture coordinate generation:

glEnable(TEXTURE_GEN_S)

glEnable(TEXTURE_GEN_S)

4. Draw the object, providing correct normals on a per-

face or per-vertex basis.

Obtaining the Sphere Map Manually

Reflective Sphere at

object location

Camera