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
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.
1. Transform the scene objects to the light source
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
Light source moves in grid
Plane of projection
Shadows are “accumulated”
void glAccum(glenum op,glFloat value);
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
Plane of Reflection
Y- Z Plane
X - Z Plane
X - Y Plane
X - Z plane
X - Z Plane
plane to X - Z plane
Should not be visible
Should be obstructed by
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)
For each vertex, the reflected vector direction is given by:
Let m be defined as:
The texture coordinates are given by:
1. Bind the texture containing the sphere map.
2. Set sphere mapping texture coordinate generation:
3. Enable texture coordinate generation:
4. Draw the object, providing correct normals on a per-
face or per-vertex basis.
Reflective Sphere at