CLASS TIMES: MW, 12:10-1:30 PM, Chemistry 176


You are expected to do three projects. Note that each project is built on the previous one. By the end of the quarter, you will have a fairly usable interactive volume visualization system. A code is provided to those of you who had little experience with OpenGL and making interactive systems.

PROJECT 1 (Due 11:59pm, Nov 02)

You will create a basic raycasting volume renderer. An interactive user interface must be provided to operate your renderer. Rendering must be GPU accelerated to deliver interactive performance (i.e., at 10-60 frames per second). The Phong illumination model should be used for shading. The user should be able to:

  • Select a volume dataset to load
  • Select an existing 1D transfer function
  • See an image of the data in the display window
  • be able to roate, zoom, and pan the visualization
  • choose to see a bounding box of the volume
The display window should be resizable.

PROJECT 2 (Due 11:59pm, Nov 23)

In this project, you will enhance your interactive system by adding the following components/functionalities:

  • an interactive transfer function editor
  • slicing and cut away visualization
  • isosurface visualization with pre-integration
  • improved lighting with ambient occlusion
Your system should stay highly interactive and easy to use.

PROJECT 3 (Due 11:59pm, Dec 16)

With this project, you are expected to enhance your system's functionalities and/or usability either by implementing techniques/designs in published papers or by developing new ones on your own. You will demonstrate this system to the whole class on December 15th.


  • A chapter from GPU Gems on GPU volume rendering

  • Qt

  • OpenGL Programming Guide, 8th Edition, by Dave Shreiner et al., Addison Wesley
    Available at [Link]

  • OpenGL Shading Language, 3rd Edition by Randi Rost et al., Addison Wesley
    Available at [Link]

  • GLSL Tutorial and Reference

  • Volume data repository I

  • Volume data repository II