Assignment 3: Shadows

CMSC 491, Spring 2011

Due March 31, 2011

Assignment

Show a reasonably complex 3D object (bunny, teapot, ...) casting a soft shadow from a square light source. The environment should consist of at least two walls and a floor, plus some non-planar geometry for the shadow to fall across.

You can use the platform and language of your choosing. You can also use any existing point shadow implementation or sample code (e.g. shadow maps or shadow volumes), but have to code the soft shadow extensions yourself.

Show and Tell

On April 5th, I'd like to spend just a couple of minutes for each of you to show your results, and tell the class about the methods you used. To avoid spending too much time switching computers, we'll once again show images or video rather than live demos. Let me know in the README file in your submission what files you would like to show so I can have them loaded up and ready to go.

What to submit

Turn in all necessary source files (shaders, code, textures, model files), and whatever interesting image, images or animation you feel will best show off your efforts. You should also check in an informal one to two page write-up in a file named README in your assignment directory. While the write-up may be informal, I will count off for spelling and grammar. Please proofread before you turn it in. The write-up shoud describe what help you got, if any, what you did, how you did it, how well you think it worked, and what further work you might do. Include what hardware and software you used (it is not necessary to use the gl.umbc systems, though you must submit there), and what files you'd like to use at the show and tell.

Turn files into the new assn3 directory in your class repository. This new directory is in the repository, but not on your local computer. To get a copy, you'll need to pull andupdate (analogous to commit and push when submitting changes). With command-line hg, you'd run these commands in your local copy:

hg pull
hg update

Once again, I strongly recommend committing your changes often as you work on the assignment. It is your choice whether to push each commit or wait until the end.