CS 6965: Parallel Hardware Ray Tracing

Fall 2011
2:00-3:20pm, MEB 3147 (SoC Conference Room)

Instructors: Erik Brunvand, Daniel Kopta, Josef Spjut

Ray Tracing is a computer graphics technique used to create highly realistic images. In this class students will design and implement a variety of ray tracing applications, specifically targeting a parallel ray tracing hardware architecture (TRaX) being developed by the HWRT research group. This architecture is supported by a custom compiler (based on LLVM) and both functional and cycle-accurate simulators. The first part of the course will be lectures and assignments on basic ray tracing techniques, and on the parallel TRaX architecture and simulation environment. The second part of the course will be an extended project phase where students will develop high-performance ray tracing applications to be run and benchmarked on the TRaX simulators.

No previous ray tracing experience will be assumed, but basic knowledge of computer graphics techniques, C/C++ programming skills, and a willingness to learn techniques from technical papers to be incorporated into the projects is required. This class is targeted at graduate students, but motivated undergraduates will be welcomed as well.

More details: Ray tracing operates in a fundamentally different way than graphics code running on commercial GPUs, which uses techniques derived from Catmull's original Z-buffer rasterization algorithm. Ray tracing is relatively simple in principle: At each pixel a primary ray is sent from the viewer's eye point through the screen into the virtual set of objects and returns information about the closest object hit by that ray. The pixel is then colored (shaded) based on material properties, lighting and perhaps using texture lookups or a procedurally computed texture. Most modern ray tracers use a hierarchical acceleration structure to prune the scene prior to ray intersection tests.

Ray tracing project ideas: path tracing, photon mapping, beam tracing, tracing ray bundles, ambient occlusion, motion blur, accelerating animated scenes, radio-frequency ray tracing, advanced acceleration structure implementation (grids, multi-grids, KD trees, BVH, etc.), "participating media" such as fog, smoke, etc., power saving techniques such as variable precision arithmetic or importance sampling, procedural geometry, procedural texturing, volume rendering, advanced shading techniques, other decoupled parallel applications, enhancements or extensions to the hardware architecture, memory system experiments, etc.




A set of RT papers that you can use to expand your understanding, and to help select a project. This list is certainly not complete, and may be a little out of date. Please suggest improvements and additions!