Today, the Khronos Group announced the ratification and public release of the Vulkan Ray Tracing provisional extensions. The core functionality builds off the pre-existing Nvidia vendor extensions, but with some new features and as official extensions to the API. We're told changes to the functionality are relatively minor, and that porting from the Nvidia extensions to the new Vulkan extensions will be a trivial process. The goal now is to get developer and industry feedback, with an eye toward bringing the functionality into the core Vulkan API (ie, instead of as API extensions) in the coming months. The addition of ray tracing support brings the cross platform API up to parity with Microsoft's DirectX Raytracing (DXR) API, with some minor differences. Here's what you need to know about Vulkan's RT support, and why it matters.
We spoke with Khronos Group President Neil Trevett, who is also Vice President of Developer Ecosystems at Nvidia—the Khronos Group President is an elected position, incidentally. One of the main questions we had was what the differences were between the Vulkan RT extensions and what's currently available via the Nvidia RT vendor extensions, as well as the difference between DXR and Vulkan RT. The main changes relative to the Nvidia vendor extensions consist of renaming function prefixes from "NV_" to "VK_". We're told porting existing Vulkan RT applications (like Quake II RTX and Wolfenstein Youngblood) to the official extension will be "trivial."
As far as differences between Vulkan RT and DXR functionality, the above slide shows that the two APIs will be largely equivalent. Vulkan RT has support for ray tracing pipelines as well as ray tracing queries, with the latter being a new addition to the DXR 1.1 spec. We're told it doesn't require any hardware changes and merely represents an optional path for adding ray tracing effects to an application. Vulkan has also added support for writing shaders in GLSL (OpenGL Shading Language) or HLSL (High Level Shading Language), which makes porting applications between DirectX 12 and Vulkan far easier. HLSL is the language used for DirectX, so it's no longer required for developers to rewrite their shaders if they want to use the Vulkan API.
The final three items in the list are where Vulkan RT has a potential advantage over DirectX 12. Building the acceleration structure on the host refers to using the host CPU to handle that task. It might seem counterintuitive to have the CPU doing that graphics work, but with modern CPUs now sporting 8, 12, 16, and more cores, often those extra cores are just sitting idle. If the GPUs are fully loaded, as is often the case in games, shifting some work back to the CPU can result in overall improved performance. Deferred host operations is closely related, allowing for asynchronous execution over multiple CPU cores. And last, the capture/replay support is to help with debugging code.
The other slides Khronos provided are mostly a repeat of what we've heard about ray tracing since DXR was announced back in 2018. Bounding Volume Hierarchy remains the data structure used by Nvidia hardware to traverse a scene's geometry and determine if and where a ray intersects a triangle. Other vendors could use a different approach, as the acceleration structure is basically a black box: It gets passed to the hardware, which returns a result, and how it gets to that result is open to different implementations.
The ray tracing pipeline and ray queries details are interesting, if you haven't heard of ray queries before. Basically, they allow a sort of shortcut to just do individual rays, where the traditional pipeline do larger grids of arrays. And finally, the pipeline libraries are for making life easier for developers, as ray tracing can use lots of shaders.
Why does Vulkan RT matter?
The bigger question for many is why any of this is important, and the answer is simple: Vulkan is cross-platform. If you're only building an application (or game) for Windows, DirectX is perhaps the best choice. However, the PlayStation 5 and Xbox Series X are coming later this year, and one of those isn't from the Microsoft ecosystem. Google's Stadia also uses Vulkan exclusively for it's rendering pipeline. Giving game and application developers a single API that can be used on all platforms—including older versions of Windows—makes porting much easier. There's also the datacenter aspect to consider. Linux servers are generally less expensive than Windows servers, and large rendering farms can have hundreds of nodes. Being able to develop hardware accelerated ray tracing applications that work with Linux can cut costs and provide more flexibility.
Khronos Group is calling for feedback on their new extensions, and Nvidia is providing new developer drivers that support the API. For now, Nvidia remains the only graphics vendor with DXR or Vulkan RT support, but judging by the other industry support comments, it won't remain that way much longer.
AMD is naturally planning to support Vulkan RT with its future Navi 2x GPUs. Andrej Zdravkovic, senior VP of software development at AMD, said, "Standardizing ray tracing in Vulkan is an important step towards making ray tracing available across a wide range of devices, as well as enabling developers to use this technology to its full advantage. AMD intends to provide support for all of the major features in this extension, including ray shading, ray queries, and CPU acceleration structure management."
More interesting perhaps is Intel's statement. "The Intel Xe architecture roadmap includes support for hardware accelerated ray tracing, and we're excited to work with Khronos to implement full support into Vulkan," said Joshua Barczak, graphics software architect at Intel.
Finally, Rys Sommefeldt, senior director of product, Ray Tracing and High Performance Graphics for Imagination Technologies chimed in: "Imagination Technologies are very happy to see ray tracing become a standard part of Vulkan, helping the overall ray tracing ecosystem to grow substantially due to Vulkan's wide reach across many platforms and devices. We are very supportive of the standard, which will help us deliver the efficient, fast, and focused hardware solution we are developing for our customers."
Nvidia and AMD supporting ray tracing hardware is a given, and Intel has mentioned in the past that it expects to have hardware support for ray tracing as well, though whether that will be in the first generation Intel Xe Graphics this year, or a future iteration isn't clear—the latter seems more likely. Imagination Technologies chiming in could mean we'll see RT hardware added to smartphone and tablet chips at some point, though there have also been rumors of a "fourth party" entering the PC graphics card space. Wouldn't that be interesting! Meanwhile, I'm still waiting for the definitive ray tracing game to arrive that finally puts an end to the arguments about whether or not ray tracing in games is important. With the upcoming consoles featuring the API, hopefully that day will arrive sooner than later.
From the demos I have seen on the web and at GTC last year, there is no argument. It is VERY important and not just in games. It is important in all sorts of rendering applications, especially product design. I am really looking forward to it becoming ubiquitous.