Project Ideas & Proposals

Below are ideas for your semester project. We will be learning about these as the semester proceeds. Please feel free to choose any of these, or to come up with your own.

Most of the ideas are technical implementations of graphics techniques, which we prefer you implement in WebGL/javascript, or OpenGL/Visual C++ if necessary or preferred.

An alternative to technical demos are "demo reels," which combine several effects implemented in existing engines or libraries, to more artistic ends. Unlike technique implementations, demo reels may also use higher level libraries or engines such as three.js or Unity.

Whatever you'd like to to, you should submit a proposed project description using this form by the date indicated on our work schedule.

Here are some suggested technical demos:

  • A VR game: code a simple VR game on one of our Lab's Magic Leap headsets (or another headset you have). 
  • Occlusion culling: implement a complex occlusion technique, or two simple ones.
  • Advanced collision detection: implement an advanced hierarchical collision detection algorithm, and demonstrate the resulting speedups.
  • Global illumination: implement a path tracer, along with several improvements, such as importance sampling or different BRDFs.
  • Interactive global illumination: implement a global illumination algorithm using NVidia's new OptiX toolkit.
  • Local illumination: implement and compare several real time illumination models in shaders.
  • Advanced shadows: implement a demo comparing several advanced shadow techniques.
  • Ambient occlusion: implement one of the ambient occlusion techniques we read about.
  • Reflections: implement a demo comparing various reflection and environment mapping techniques on the GPU.
  • Caustics and refraction: implement a refraction technique, or one of the caustics techniques we discussed.
  • Bump mapping: implement a demo comparing several different bump mapping techniques in shaders.
  • Level of detail: implement a model simplification technique, and integrate it into your simple game engine.
  • Flocks and particles: build a flocking/particle system.
  • Animation: animate a skeleton with splines blending keyframed poses, and include some simple skinning.
  • Physics: integrate a 3D physics model into your simple game engine.
  • Terrain rendering: implement a terrain rendering technique with advanced LOD. Include demo modes making clear the speedups and internal methods.
  • Non-photorealistic rendering: implement single complex technique (e.g. painterly effects), several simple ones.
  • Procedural modeling: implement several different uses of Perlin's noise, a plant L-system, or a fractal terrain.
  • Perception and graphics: implement a demo of an optical illusion or a perceptual limit, implement a tone-mapping renderer, or do color-to-gray conversion.
  • Shape modeling: implement a renderer of blobby models, or parametic patches.
  • Volume rendering: implement a splatting renderer of volume data.
  • Point-based rendering: implement a renderer of point primitives.
  • Head tracked display: connect renderer to a Wiimote or Kinect.
  • Fluids and goo: implement some splashing or smoke demos.
  • Advanced billboarding: implement a demo using 2D approximations of 3D models.

And here are a few demo reel ideas: 

  • a very cool looking character walking down a hallway.
  • a car speeding along a track.
  • a projectile producing an explosion.
  • Flocks and particles: use toolkits to combine several different effects in a demo reel.
  • Physics: use a public toolkit to create a reel including object deformation and fracture.