Today at GDC, Microsoft may have just revealed the future of 3D graphics, Direct X 12 Raytracing or DXR. Raytracing is pretty much the gold standard for creating realistic 3D renderings and is the technique that powers pretty much every single 3D film or game cut-scene released over the last 30 years. The problem with raytracing is, it’s computer intensive, potentially taking hours or even days to render a single frame of animation. Modern games have to render each frame of animation in about 23 milliseconds or less… so obviously, something has to give. This is where DXR comes in.
Here is a description of what DXR for DX12 does, from the MSDN blog:
At the highest level, DirectX Raytracing (DXR) introduces four, new concepts to the DirectX 12 API:
- The acceleration structure is an object that represents a full 3D environment in a format optimal for traversal by the GPU. Represented as a two-level hierarchy, the structure affords both optimized ray traversal by the GPU, as well as efficient modification by the application for dynamic objects.
- A new command list method, DispatchRays, which is the starting point for tracing rays into the scene. This is how the game actually submits DXR workloads to the GPU.
- A set of new HLSL shader types including ray-generation, closest-hit, any-hit, and miss shaders. These specify what the DXR workload actually does computationally. When DispatchRays is called, the ray-generation shader runs. Using the new TraceRay intrinsic function in HLSL, the ray generation shader causes rays to be traced into the scene. Depending on where the ray goes in the scene, one of several hit or miss shaders may be invoked at the point of intersection. This allows a game to assign each object its own set of shaders and textures, resulting in a unique material.
- The raytracing pipeline state, a companion in spirit to today’s Graphics and Compute pipeline state objects, encapsulates the raytracing shaders and other state relevant to raytracing workloads.
The blog goes into a great deal more detail of the specifics of DXR and also includes this extremely early preview of the API. Additionally Microsoft have updated their Direct X profiling PIX to support raytracing.
This announcement isn’t a software only initiative. Obviously Microsoft will be releasing a software layer in the form of Direct X 12, and will provide a software fallback if hardware doesn’t fully support it. However it is also a hardware initiative and NVidia have already announced their support in the form of NVIDIA RTX. Their future Volta generation of GPUs are going to be the first to support DXR. Additionally their game tool NVIDIA Gameworks is being updated to support Direct X 12 Raytracing.
Learn more in the video below: