Ray Tracing Resources Page

This page gathers some resources about ray tracing in its various forms. It is not exhaustive, nor exhausting, but rather sources of information that we have found useful.

We wrote a free chapter called Real-Time Ray Tracing for our book, as events after the manuscript was delivered to the publisher practically demanded it. The online references page for this chapter provides URLs for references cited.

We list below free (and non-free) books on ray tracing.

Basics

First, for a quick introduction to what ray tracing is about, watch the Ray Tracing Essentials series (the first talk also has a version with Chinese subtitles), or read Scratchapixel's set of six short articles. Also, the Disney video on path tracing gives an intuitive sense of how this algorithm works. Its 50's style is a treat.

Peter Shirley's free books are a fast and free way to dig into the topic and learn by coding; there's even a CUDA (and another CUDA (and OpenMP)) implementation. Google and you'll find more.

Other short tutorials can be found at Scratchapixel. Morgan McGuire's Graphics Codex discusses basic ray casting and other related topics, providing code snippets. There are plenty of more books, some now free, listed in our books section, with Kevin Suffern's book being a slightly-dated but good choice for a more in-depth introductory book focused on the topic.

Blogs related to ray tracing: Aras's, Pete Shirley's, Ingo Wald's, Wolfgang Engel's, Alan Wolfe's, Microsoft, NVIDIA. Resources: NVIDIA ray tracing articles, SIGGRAPH 2019 links, Jendrik Illner's summaries.

For basic ray/object intersection algorithm references, see our object/object intersection page.

For pure amusement, Andrew Kensler's minimal ray tracer is worth a look. Taking it a step further, smallpt provides global illumination in 99 lines.

Once you are past the basics, dig into the literature. Newer papers are usually found in conference proceedings, such as High Performance Graphics 2018. These can also serve as a guide to important papers in their areas, as each article begins with a summary of previous work. Older courses such as this from SIGGRAPH 2013 can have information of interest.

Much useful information can be found in blogs such as Matt Pharr's, Peter Shirley's, as well as pieces such as as Demofox's Path Tracing – Getting Started With Diffuse and Emissive and Anders Lindqvist's Pathtracing Coherency. NVIDIA's blog has practical information, such as on profiling ray performance and on stochastic levels of detail. Aras Pranckevičius has an in-depth series on writing a path tracer, with many more links to resources (which we mostly will not copy here). Matt Pettineo also has a path tracer using DXR.

SIGGRAPH 2019: All ray and path tracing related events and links to slides, notes, and papers listed here; also see the SIGGRAPH 2019 links.

Real-Time

For newer articles, I highly recommend Jendrik Illner's weekly reports. These often contain links to interactive ray tracing articles. Will Usher's blog includes articles on using the new ray tracing APIs effectively.

Talks from GDC 2019 and GTC 2019 are available for viewing and download.

With Microsoft's announcement of the DXR ray tracing API for DirectX in March 2018 at the Games Developers Conference, real-time ray tracing has become synonymous with this effort, along with initiatives in Vulkan such as NVIDIA's (video here). NVIDIA has much more information. Their Nsight Graphics tool has support for ray tracing debugging.

Will Usher has API-agnostic articles on real-time ray tracing, including one on the shader binding table and on faster ways of computing shadows.

There are other efforts out there, such as Apple's support for ray tracing in their Metal API.

Unreal Engine 4.22 includes ray tracing support. The Ray Tracing in Unreal talk from GDC 2019 covers the new features (though go here to watch the Troll demo).

Eye candy includes the Star Wars demo from GDC 2018, the Porsche demo, and NVIDIA's Project SOL demo and followup, which includes an explanation.

For real-time demos using RTX cards, see the path-traced Quake II RTX demo (YouTube, source code here) or join the Minecraft RTX beta program (tech. talk). NVIDIA provides other tech demos, with the newer ones using RTX.

Denoising is critical for real-time DXR performance when using path tracing or other Monte Carlo techniques. Alain Galvan's summary posts on ray tracing denoising and machine-learning denoising are good places to start. Zwicker et al. give a state of the art report about this area; note that it is from 2015, however, so is not fully up to date. Intel provides free code in their Open Image Denoise filter collection. The Quake II RTX demo includes shader code for the A-SVGF filter for denoising. NVIDIA has an early access program for their denoiser.

DXR-Specific

The DirectX Raytracing Functional Spec is a good place to start for learning about DXR. NVIDIA's DXR tutorial part 1 (setup) and part 2 (rendering) gets you programming with Microsoft's sample programs. Version 1.1 of DXR 12 adds more features. The DirectX-Specs website provides additional documentation in web form about other new features, such as mesh shaders.

Adam Marrs gives a pure DXR tutorial to allow you to get right into the specification.

The RTXGI SDK provides real-time global illumination by using ray tracing to form light probes in a way that minimizes light and shadow leaks found in traditional probe systems.

Working with DXR directly can be a bit painful. Confetti's The Forge supports DXR and much else. NVIDIA's Falcor 4.0 framework is useful for research and prototyping. One project built atop this framework is ray-traced ambient occlusion, though sadly this project has not been updated to Falcor 4.0.

You can find all DXR-related posts on NVIDIA's website with this link. A best practices page was developed by NVIDIA for running DXR on RTX hardware. Freshness date: March 20, 2019. Newer is the video for the GTC 2020 talk "RTX Real Time Ray Tracing Best Practices." Older resources follow.

Our blog entry on DXR contains a large set of links to resources, demos, and related articles that came out around or soon after GDC 2018.

There have been many videos about DXR effects and demos. Fortnite uses real-time ray tracing to make trailers. SEED's Pica Pica demo gives a quick runthrough of some possible effects and their benefits. Digital Foundry's runthrough of Battlefield V has fairly detailed explanations of effects and how they were done with DXR, though one or two things appear incorrect, e.g., BVH varying with image resolution. You can read an analysis and Q&A here. The Atomic Heart explanation is short and sweet, and is particularly good at showing the limitations of screen-space reflections. Metro Exodus use of ray tracing has a significant effect on the atmosphere of the game; you can use a slider to compare the differences yourself. Read about Metro Exodus's use of ray tracing and other features, watch their presentation, and see Digital Foundry's video and this post that looks under the hood.

DXR implies GPU hardware dedicated to improving ray tracing performance, such as NVIDIA's RTX. However, for simpler scenes, or for powerful clusters of machines, interactive ray tracing is possible using traditional CPUs or less-specialize GPUs. 3Dmark's Port Royal benchmark is designed for interactive ray tracing.

The SIGGRAPH 2018 course Introduction to DirectX RayTracing has notes and sample code available, as well as much other useful information for getting started with DXR shaders. You can watch the entire course on YouTube. This code has been polished and expanded, and blogged about here. NVIDIA's Wednesday SIGGRAPH 2018 courses have more recorded presentations on real-time ray tracing.

NVIDIA has older tutorials on Github for learning about more low-level DXR calls.

Vulkan-Specific

NVIDIA has an Vulkan ray tracing tutorial, using their extensions. HLSL shaders for ray tracing can now be converted to VKRay. Keep this article in mind for writing an efficient Vulkan renderer in general.

Basic Vulkan ray tracing tutorials with code are available from one user.

Christoph Schied and many others have released open-source for a fully ray traced version of Quake 2, on Vulkan.

Interactive

"Interactive" here means "not DXR-based."

A number of hardware vendors provide free ray tracing software in various forms:

Enscape provides a rundown of their approach to building an interactive hybrid raster/path-tracing system.

KeyShot uses ray tracing for all rendering, even when positioning objects and lights in a scene. Nice eye candy, too.

Many shadertoy demos are based on ray marching or other ray casting techniques run in (often complex) shaders. Mikael Christensen has a series of articles on modeling surfaces for such rendering. Electric Square provides a tutorial on ray marching techniques.

Historically, the idea of interactive ray tracing has been around for over thirty years, with the introduction of AT&T's Pixel Machine. There have been other (commercially unsuccessful) efforts over the years, such as ART's RenderDrive from 1998, and Imagination Technologies' mobile (!) offering from 2013.

Baking global illumination into models is a common use of ray tracing. One company notes a 50x speed-up in bake time - from 14 minutes down to 16 seconds - in moving from a CPU to GPU baking system.

The demoscene has had simple interactive ray traced demos since 1995. Don't bother trying to download and run code, though; better is to watch these on YouTube.

Non-Interactive

Ray tracing has been used in film production for decades, first seen in Blue Sky Studio's work which won an Oscar in 1998. Ray tracing is now the standard way CGI effects are rendered by every major studio. Frames are computed on render farms, clusters of upwards of tens of thousands of processors.

For technical information, the notes from the Path Tracing in Production SIGGRAPH course give valuable information about techniques used in film production. Another worthwhile resource is the Special Issue On Production Rendering in ACM TOG.

There are a wide range of offline rendering systems, based on ray and path tracing and other related techniques. Here's a short list:

  • Nori is a simple C++ ray tracer, written for educational purposes.
  • pbrt is well-established, with a great book about the code.
  • Mitsuba - a research-oriented ray tracer which is somewhat like pbrt.
  • Tungsten is often compared with Mitsuba, built on Embree, with a liberal license.
  • OptiX focuses on GPU acceleration of ray tracing.
  • OSPRay is geared towards scientific visualization.
  • Cycles is the standard ray tracer for Blender.
  • Lux works with Blender.
  • Appleseed works with Maya.
Models suitable for these can be found in the Models listing on our portal page.

There are thousands of other ray tracers on Github alone - let me know which you think is the best. Back in the day POV-Ray was a popular hobbyist ray tracer, and is now over 30 years old; the Github repository still shows activity and the code works fine. This ray tracer and older resources such as the Ray Tracing News helped lure people such as Marcos Fajardo to get into the field.

There's even a path tracer specifically for rendering Minecraft worlds - a few examples here and here.

Books

Our free chapter on interactive ray tracing is just a starting spot, and our book has but a few more pages on ray tracing.

What follows are books focused on the subject of ray tracing and related algorithms, in reverse year order of the latest edition.

cover The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer, Jamis Buck, Pragmatic Bookshelf, March 2019 (Publisher's page, video advertisement).
cover download for free Ray Tracing Gems, edited by Eric Haines and Tomas Akenine-Möller, Apress, March 2019 (Book's website, publisher's page, Amazon).

A gems-style collection, one focused on techniques for serious practitioners, helping fill the gap between guides on the basics and research literature.

cover Physically Based Rendering, Third Edition: from Theory to Implementation, by Matt Pharr, Wenzel Jakob, and Greg Humphreys, Morgan Kaufmann, November 2016 (more information, Google Books sample), read for free.

A seminal book, presenting best practices and showing what goes into a professional rendering system, with well-documented code.

cover download for free Ray Tracing: The Rest Of Your Life, by Peter Shirley, March 2016 (, blog), download for free.

Last in the series.

cover download for free Ray Tracing: the Next Week, by Peter Shirley, March 2016 (Code, tweet, blog), download for free.

Second in the series.

cover download for free Ray Tracing in One Weekend, by Peter Shirley, January 2016 (Code, tweet, blog, CUDA implementation), download for free.

Start with this one.

cover The Graphics Codex, V2.15, by Morgan McGuire, 2011-2018: sample entries.

An affordable Ebook/site that is both a guide to the basics of computer graphics and a practitioner's reference manual. It is continually updated with mini-tutorials, code snippets, algorithm descriptions, and formulae that the author has found of use. Not about ray tracing per se, but includes elements such as ray-triangle intersection.

cover Ray Tracing from the Ground Up, by Kevin Suffern, September 2007 (author's site, Google Books sample).

This book walks through the process of implementing classical ray tracing in detail, warning of problems along the way.

cover Advanced Global Illumination, Second Edition, by Philip Dutré, Kavita Bala, and Philippe Bekaert, A.K. Peters, August 2006 (extensive lecture notes, authors' site, Google Books sample).

An overview of theory and a variety of global illumination techniques (some now out of style).

cover Realistic Ray Tracing, Second Edition, by Peter Shirley and R. Keith Morley, A.K. Peters, July 2003 (Google Books sample).

A book that presents the elements of a ray tracing system and related rendering techniques, up through Monte Carlo sampling.

cover download for free Principles of Digital Image Synthesis, by Andrew S. Glassner, Morgan Kaufmann, 1995: download for free.

An incredible book, and physics doesn't change (much), so despite its age this book is full of useful information.

cover download for free An Introduction to Ray Tracing, edited by Andrew Glassner, Morgan Kaufmann, 1989.

The first book on ray tracing. Ancient, but most of the information is still valid - math is math, data structures are data structures. Download the PDF or DJVU version for free. Andrew Glassner's page on the book here, errata page for first printing here (all errata are corrected in the PDF version); review by Matt Pharr here.