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. You can also access it on the web here (thanks, Thibault Coppex!). The online references page for this chapter provides URLs for references cited. We list below free (and non-free) books on ray tracing.
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. Christoph Peters led a path tracing workshop which has videos and ShaderToy exercises for you to implement. SIGGRAPH has a free seven-hour course led by Rajesh Sharma; each opens with a ten-minute interview with someone working in the field. Other short tutorials can be found at Morgan McGuire's now-free Graphics Codex discusses basic ray casting and other related topics, providing code snippets (main site). 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 or search his database. 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. 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. For light transport in general, TU Wien provides 39 YouTube videos from their course on light transport, along with slide sets and other resources.
Talks from NVIDIA's GTC conferences and GDC 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. Jacco Bikker has written a set of 10 articles on building and updating a modern bounding volume hierarchy, representing triangles, and much else, and it includes working programs on Windows. Well worth your time. 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. More NVIDIA demos. 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 a developer access program for their denoiser.
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. See Techspot's page, for example, for the latest game-related ray tracing articles. Older: 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. Newer still, their experience porting to new consoles. 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 SIGGRAPH presentations have more recorded presentations on real-time ray tracing. NVIDIA has older tutorials on Github for learning about more low-level DXR calls.
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" here means "not DXR-based." If you want to see hardware-independent progressive rendering path tracing, a good place to start is Eric Loftis's rendering demos. Go to the Live Demos section and give them a whirl - they're browser-based, using Javascript and WebGL through three.js, so no installation or download is needed. Open source. One takeaway for me is how the rate of reduction of variance over time decreases, as described in section 15.3 in Ray Tracing Gems. That is, it takes a lot more samples later on to decrease noise a bit, which points towards denoising as the other key part of high-performance ray tracing. In a similar vein, 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. 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.
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:
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.
What follows are books focused on the subject of ray tracing and related algorithms, in reverse year order of the latest edition.
|