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.

- Intro lecture (8/23 and 8/25): PDF two to a page and six to a page
- Intro to graphics math, vector/ray/color classes, etc.: In PDF (8/30)
- Shading for ray tracing: In PDF (9/1)
- Cameras and Triangles: In PDF (9/6)
- Hit Records and other programming logistics: In PDF (9/6)
- Acceleration structures: In PDF (9/8)
- Bounding Volume Hierarchies: In PDF (9/13)
- TRaX Memory Models: in PDF (9/15)
- BVH and memory access for TRaX: in PDF (9/20)
- More triangles and reflectance: in PDF (9/22)
- Materials and TRaX: in PDF (9/27)
- Transmission and reflection: in PDF(9/27)
- Texturing - image and procedural textures: in PDF (9/29)
- Sampling: in PDF (10/4)
- Path Tracing: in PDF (10/6)
- TRaX data analysis: in PDF (11/22)

- Information about installing the compiler, simulator, and other tools can be found here. These instructions are likely to evolve as the semester progresses
- An evolving guide to TRaX programming that includes a discussion of compiler/simulator features and restrictions.
- Linear algebra review quiz - this is a quiz that Pete and Steve gave the last time they taught the course. You don't need to turn it in, but you can use it to see what linear algebra background you might want to have, or be able to find.
- Programming assignment 1 is a very simple ray caster that uses the TRaX infrastructure. Due September 5th.
- Programming assignment 2 is to get your assignment 1 running on the TRaX HW simulator, and to add simple shading and shadows to your ray tracer. Due September 16th.
- Programming assignment 3 is to add triangles and boxes, and to read scene information from the global memory as initialized by the simulator Due Monday Sept 26 at midnight
- Programming assignment 4 is to add BVH traversal and to demonstrate on a larger (conference) example. Due 11:59:59 PM, October 6, 2011
- Programming assignment 5 is to add multi-sampling and path tracing to your ray tracer. Due 11:59:59 PM, October 20, 2011
- Here's Danny's reference solution for Assignment 5. You can use this code as a starting point for your projects if you are unhappy with your own Assignment 5 results...

- Here's Danny's reference solution for Assignment 5. You can use this code as a starting point for your projects if you are unhappy with your own Assignment 5 results...

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!

- The Classics:
- The classic - Turner Whitted: An Improved Illumination Model for Shaded Display (1980)
- The other classic: James Kajiya: The Rendering Equation (1984)

- Rendering Frameworks
- D. Greenberg, A framework for realistic image synthesis,
*CACM*42(8), pp. 44-53, Aug. 1999 - D. Greenberg, K. Torrance, P. Shirley, at. al. A framework for realistic rendering, SIGGRAPH 97
- Kirk, Arvo, The Ray Tracing Kernel, Ausgraph, 1988.

- D. Greenberg, A framework for realistic image synthesis,
- Basic Algorithms
- A. Glassner, An Introduction to Ray Tracing
- See E. Haines, Essential ray tracing algorithms (pp. 33-78), and P. Hanranan, A survey of ray-surface intersection algorithms (pp.79-120)

- K. Suffern,Ray Tracing from the Ground Up
- T. Moller, B. Trumbore, Fast, minimum storage ray-triangle intersection,
*Journal of Graphics Tools*- Fast triangle intersection algorithm. - P. Hanrahan, Ray-triangle and ray-quadrilateral intersection in homogeneous coordinates, unpublished manuscript by Hanrahan about ray-triangle intersection using Plucker coordinates.

- A. Glassner, An Introduction to Ray Tracing
- Acceleration Techniques
- J. Arvo, D. Kirk, A survey of ray tracing acceleration structures, In Glassner, An Introduction to Ray Tracing, pp. 201-262
- The [http://www.cgg.cvut.cz/BES/ Best Efficiency Scheme Homepage]. Includes a cComparison of many common acceleration data structures, including grids, hierarchical grids, adaptive grids, k-d trees, and oct-trees. A technical paper describing their results is available from this page.
- I. Wald, V. Havran, On building fast kd-trees for ray tracing, and on doing that in O(N log N), SCI Technical Report 2006-009
- A. Reshetov, A. Soupikov, J. Hurley, Multi-level ray tracing algorithm, SIGGRAPH 2005
- Introduction to real-time ray tracing, SIGGRAPH 2005 Course Number 28, Part I - Fundamentals
- Wald, Boulos, and Shirley, Ray Tracing deformable Scenes using Dynamic Bounding Voluume Hierarchies,
- Thiago Ize, Efficient Acceleration Structures for Ray Tracing Static and Dynamic Scenes - PhD Thesis.
- D. Kopta, et. al., Fast, Effective BVH Updates for Dynamic Ray-Traced Scenes using Tree Rotations, Tech Report.

- Monte-Carlo Techniques
- Chapters 2 & 3, Fundamentals of Monte Carlo Integration, State of the Art in Monte Carlo Ray Tracing for Realistic Synthesis, SIGGRAPH 2001 Course 29, 2001.
- P. Shirley, Realistic ray tracing, Chapter 11: Monte Carlo Integration, Chapter 12 Choosing sample points, and Chapter 15 Soft Shadows.
- Cook, Stochastic Sampling in Computer Graphics, ACM TOG, 1986
- Cook, Carpenter, Porter, Distributed ray tracing, Proceedings of SIGGRAPH 1984,
- D. Mitchell, Spectrally optimal sampling for distribution ray tracing, Proceedings of SIGGRAPH 91,
*Computer Graphics*25(4), pp. 157-164, 1991. - M. Lee, R. Redner, S. Uselton, Statistically optimized sampling for distributed ray tracing, Proceedings of SIGGRAPH 85,
*Computer Graphics*19(3), pp. 61-68, 1985, - Boulos et. al.,
*Packet-based Whitted and Distribution Ray Tracing*GI 07, - Boulos, Interactive Distrubution Ray Tracing - SIGGRAPH 2006 course.

- Path Tracing
- P. Hanrahan, Solving the rendering equation, SIGGRAPH 2001 Course 29: Monte Carlo Ray Tracing.
- M. Fajardo, Monte Carlo ray tracing in action, SIGGRAPH 2001 Course 29: Monte Carlo Ray Tracing.
- J. Arvo, Backward ray tracing, In Developments in Ray Tracing, SIGGRAPH `86 Course Notes, August 1986.
- E. LaFortune, Y. Willems, Bi-directional path tracing, Proceedings of Compugraphics '93, Alvor, Portugal (December '93), pp. 145-153.

- Irradiance Caching and Photon Maps
- G. Ward, F. Rubinstein and R. Clear, A ray tracing solution for diffuse interreflection, SIGGRAPH '88
- Ray tracing topic to write reflective essay
- H. W. Jensen, Global illumination using photon maps, In
*Rendering Techniques '96*, - Henrik Wann Jensen,
*Realistic Image Synthesis Using Photon Mapping*A. K. Peters, 2001.

- Ambient Occlusion
- Steve Hill's article in Gamastura.
- Greg Coombe's Assorted Notes about Ambient Occlusion
- Research paper topics about Prallel Hardware Ray

- Beam Tracing
- Heckbert and Hanrahan, Beam Tracing Polygonal Objects, COmputer Graphcs, July 1984
- Overbeck et. al., A Real-Time Beam Tracer with Application to Exact Soft Shadows, Eurographcs Symp. on Rendering, 2007
- Liktor and Dachsbacher, Real-Time Volume Caustics with Adaptive Beam Tracing, I3D 2011
- Argumentative essay topics about tracing polygonal
- Write a great persuasive essay here
- Ghazanfarpour and Hasenfratz, A Beam Tracing Method with Precise Antialialiasing for Polyhedral Scenes.

- TRaX Hardware
- Spjut et. al., TRaX: A Multicore Hardware Architecture for Real-Time Ray Tracing, TCAD, 2009
- Kopta, et. el. Efficient MIMD Architectures for High-Performance Ray Tracing, ICCD 2010
- Hardware project work cause and effect essay topics
- Great place to find leadership essay
- Spjut, Kensler, Brunvand, Hardware Accelerated Gradient Noise for Graphics, GLSVLSI 2009. Not really about TRaX directly, but possibly interesting.