Simulation / Modeling / Design

DXR Training: A Conversation with Adam Marrs, Sr. Graphics Engineer at NVIDIA

On Tuesday, March 21st at 2:40pm, NVIDIA will host “Introduction to DirectX Raytracing,” a three hour tutorial session. Chris Wyman, Adam Marrs, and Juha Sjöholm will provide GDC attendees with an overview on how to integrate ray tracing into existing raster applications.

This image has an empty alt attribute; its file name is amarrs.png
Adam Marrs, Sr. Graphics Engineer at NVIDIA

We asked Adam about adding ray tracing to a custom engine, and what developers should do first when experimenting with Microsoft DXR.

What level of experience should a developer have with ray tracing if they intend to take this class?

No experience with ray tracing is necessary. Our goal is for the course to be accessible to developers of all experience levels, with a focus on developers who are familiar with traditional real-time rendering using rasterization. The course begins with an introduction to ray tracing concepts before diving into the details of how to use ray tracing with DirectX. General knowledge of DirectX 12 is helpful, especially for the discussion of host-side low-level DXR initialization and setup, but it isn’t required.

Are there unique challenges and opportunities to adding a ray tracing pipeline if you are working off of a custom engine?

Absolutely. Many years of graphics research, hardware innovations, and game developer hours have been poured into finding ways to render important visual effects such as reflections, soft shadows, and ambient occlusion in real time. Many of the algorithms that resulted from these efforts were built on approximations that were ultimately limited by not having access to fast GPU ray tracing. With Turing and RTX, more accurate light transport simulations are now possible in real time and opportunities to render these visual effects with a greater level of realism have arrived. This shift in possibilities is exciting, but doesn’t come without fresh challenges. Rays are fast on Turing (up to 10 Gigarays!), but rays aren’t free. Being smart about how you use the rays available will make a substantial difference in image quality. NVIDIA professors Matt Pharr and Morgan McGuire spoke about exactly this last year at Siggraph.

The opportunities and challenges of ray tracing may come in equal measure, but the end result is a new class of incredibly realistic real-time images for all engines.

What’s the first thing a developer should do post-training session, when they’re back at their desks, and they want to get started with ray tracing?

Download the sample code, grab an RTX GPU, and trace all the rays! I’ve written a blog post that will jump start developers with the low-level DXR code that I’m discussing during the course. The simple sample application separates the D3D12 functionality graphics programmers are already used to (swap chains, command lists, fences) and the DirectX Raytracing concepts that are new (acceleration structures, shader tables, ray tracing shaders). Hopefully, this will make understanding DXR a snap. If you’re feeling adventurous, you can even access this sample code before the course happens (i.e. right now!).

Once you have the basic code samples up and running, I recommend reading Peter Shirley’s (free) ray tracing mini books, starting with Ray Tracing in One Weekend. I’ve also added a few “suggested exercises” at the end of my blog post. These exercises should get you tracing rays in exciting new directions in no time flat. For even more ray tracing goodness, check out the advanced algorithms in the upcoming Ray Tracing Gems book. Ray traced shadows, ambient occlusion, reflections, antialiasing, and even global illumination are all at your fingertips with your newfound DXR knowledge and an RTX GPU.

I’m looking forward to seeing the amazing images you create!

All GDC attendees are invited to attend this session.
Title: Introduction to DirectX Raytracing
Date: Tuesday, March 19, 2019
Time: 2:40pm – 5:40pm
GDC Location: Room 205, South Hall

> (opens in a new tab)”>Add to Calendar >>

Discuss (0)