M,W: 3:00-4:20 WEB 1248

Instructors: Daniel Kopta, Konstantin Shkurko

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.

- The simulator and compiler can be found on the simtrax google code page. This also contains programming guidelines and examples of using the simulator and writing your own TRaX programs.

- Lectures 1&2: Intro lecture (1/7 and 1/9): slides (courtesy of Erik Brunvand)
- Lecture 3: Basic TRaX architecture, intro to geometry for graphics (1/13): slides (supplemental courtesy of Steve Parker)
- Lecture 4: Intro to geometry for graphics (1/15): slides (supplemental courtesy of Steve Parker)
- Lecture 5: Intro to shading (1/22): slides
- Lecture 6: Lights, Cameras (1/27): slides
- Lecture 7: Implementation suggestions, Triangles (1/29): slides(1) slides(2)
- Lecture 8: Profiling, Acceleration structures (2/3): slides(1) slides(2)
- Lecture 9: AABBs, Intro to TRaX memory (2/5): slides(1)slides(2)
- Lecture 10: Loading the scene (2/10): slides
- Lecture 11: BVH layout, Caches (2/12): slides
- Lecture 12: Caches (2/19): slides
- Lectures 13/14: DRAM (2/24) (Erik Brunvand guest lecture): slides
- Lecture 15: Sampling, Path Tracing (3/3): slides (supplemental)
- Project Pitches (3/5): slides(1)slides(2)
- Lecture 17: Adv. Materials (3/17): slides

- 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.
- Lab 0 - Getting started - Due January 15, 11:59pm
- Lab 1 - RT infrastructure - Due January 24, 11:59pm
- Lab 2 - Shading - Due February 7, 11:59pm (solution)
- Lab 3 - BVH and global memory - Due February 26, 11:59pm
- Lab 4 - Path tracing and DRAM - Due March 24, 11:59pm
- Final Project Proposal - Document due March 13, 11:59pm. Presentation due in class, March 19
- Final Project Report - Document and presentation due April 30, 1:00pm. (NOTE: This is not the regular class start time!)

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.
- Kopta et. al., Fast, Effective BVH Updates for Animated Scenes, I3D, 2012

- 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
- 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

- 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
- Ghazanfarpour and Hasenfratz, A Beam Tracing Method with Precise Antialialiasing for Polyhedral Scenes.

- TRaX Hardware
- Kopta et. al., An Energy and Bandwidth Efficient Ray Tracing Architecture, HPG, 2013
- Spjut et. al., A Mobile Accelerator Architecture for Ray Tracing, SHAW, 2012
- 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
- Spjut, Kensler, Brunvand, Hardware Accelerated Gradient Noise for Graphics, GLSVLSI 2009. Not really about TRaX directly, but possibly interesting.