Project 3 - Variety Hour

Topic Due 3/29 at 11:59pm Chicago time

Project Due 4/19 at 11:59pm Chicago time

The goal of this project is to make use of GPU programming techniques (GLSL and/or CUDA, or OpenCL with a GPU component, or  graphical or computation) in a project of your choice (subject to andy's approval). Ideally you will use GPU programming techniques to help you with your own research.

Proposal phase - by 3/29 you should create a web page that describes the project that you want to do, along with any reference material that would help convince me that this is a good project. Tell me why GPU programming techniques will be beneficial here and what you expect to gain. You should then email the location of that web page to andy. I will then make links to all those projects available on the class webpages so everyone can see what everyone else is doing.

Once andy approves of your project you move onto the implementation phase. As part of this you should do a decent amount of benchmarking, not only in terms of GPU-enhanced vs traditional programming methods, but also different ways of optimizing the GPU code.

Some possible project ideas:

- enhanced version of project 1 with real-time video processing from the camera to take incoming video and convert it to a variety of older looks - eg the user can choose from: 1920s silent movie (including colour gels), 1970s grindhouse film with print damage, Super-8 home movies, toon-shaded animated movie.

- volumetric raytracer for data found at a site like where the volumetric data is read into the card and the raytracing is done in parallel on the card. The user is then allowed to move a clipping plan back and forth and rotate the volume.

- self organizing feature maps or genetic algorithms in CUDA- they aren't completely parallelizable but you should be able to run more generations of much larger maps than would be possible on a CPU

- we have bathymetry, vector flow data, and salinity data for Corpus Christi Bay in Texas. The GPU could be very useful in generating streamlines or particle simulations in real-time of this 3D volume.

As with the two previous projects, to turn in your project you should set up a web page describing your work, including the well-commented source code and required files to be able to compile and run your program, and some screendumps showing what your application should look like when its running. You should then email andy with the location of this website before the deadline. It  would probably be a good idea to put a backup copy of the web page at a second website just in case I can't get to the first one.

When you send andy the location of your webpage you should again email a screen snapshot of your head that is 320 pixels wide by 240 pixels tall in jpeg format named p3.<your_last_name>.jpg. This image will be used on the class web pages along with the link to your project web page.

As with the two previous projects, each student will also give a presentation about their project in-class and answer some questions about your work. You should prepare a good presentation - you can use your project website, or create some slides. You should definitely run your code and show your shaders to the class. You should definitely discuss optimization issues. Be sure to practice your presentation so you finish within the alloted time so everyone has equal time to present.

last revision 3/10/09