Assignment 3: Multi-pass rendering

CMSC 491/691, Spring 2014

Due Friday, March 28, 2014

Assignment

Modify your assignment 1 or 2 code (or mine) to implement some multi-pass technique. You will need to render into a texture, then use one or more additional passes, each either re-rendering the scene geometry or a screen-aligned rectangle. The final pass should render to the framebuffer for display. If your method involves the interaction of objects, you should add a second object to the scene and some way to move it around (e.g. with the arrow keys).

Some options include run-time generated shadow maps, run-time generated cube reflection, high dynamic range bloom or tone mapping, screen space ambient occlusion, scalable ambient obscurance, depth of field, motion blur, skin, deferred shading, ...

www.songho.ca/opengl/gl_fbo.html has a good example of exactly what OpenGL calls are necessary to render into a texture and use it. Some additional notes:

691 students

Make sure to choose a method that requires at least two or more render to texture passes.

What to turn in

You will submit your work to your class CVS repository. Submit your project source only. I do not want your intermediate build files, executables, copies of GLFW, or other stuff I can get or build myself. Do include necessary texture or model files.

Check in a readme.txt file telling me what external sources you used, what you did for your assignment, and what I should notice. Check in all of your source code files, and anything else that cannot be regenerated from them, including any external textures or models. Do not include any compiled object files, libraries or executables. They won't do me any good, and can lead to strange hard to find bugs when compiled code not corresponding to your current source is resurrected from the repository. Do not package all of your files up into a single archive. CVS has limited ability to deal with binary files, and you'll quickly end up using more space than you think you're saving.

If you need your GL system quota increased (now, or at any time during the semester), let me know.

External help

I am once again expecting you will need make heavy use of web resources and sample code for this assignment. Such use is explicitly allowed for this assignment, provided you document your sources. In particular, it is even OK to look at other people's shading code for your chosen method

Objective

I'm trying to prepare you for the final project, where all aspects will be up to you. As such, there's considerable freedom in what you choose to do for this assignment. You should learn both to implement a multi-pass graphics technique, and to evaluate and choose what to do based on the time available (an important skill in game development!)