Final Project

For my final project I implemented a system for rendering water and bubbles in real-time. I used custom shaders for the water surface and the bubbles and simulated the water surface using the shallow water equations. I was able to get ~30-40fps on an NVidia 8400M GT.

Water Simulation

The water surface is represented by a 2D height field that is updated at each time step using the shallow water equations. The surface is initially flat but is modified when a bubble reaches the surface and pops, creating an outward moving wave

Water Surface Rendering

The water surface is rendered using a custom shader written in NVidia Cg. The shader is designed to handle the following effects:

  • Local reflections
  • Refraction
  • External Lighting
  • Fresnel Effect

Bubble Rendering

The bubbles are also rendered using a custom shader that handles:

  • Refraction (Lens Effect)
  • External Lighting (Specular Highlights)

My final presentation (with images to illustrate all the effects listed above) can be downloaded here.

A binary of the program and (hopefully) all of the dependencies required to run is are here.