Metro Dev: Ray Tracing Is Doable via Compute Even on Next-Gen Consoles, RT Cores Aren’t the Only Way
Once again, 4A Games delivered a technically advanced game which supports both NVIDIA DLSS (Deep Learning Super-Sampling) and RT (ray tracing) technologies on PC if you own a GeForce RTX graphics card. While DLSS has been criticized in the game for its blurry image quality (though NVIDIA promised improvements are on the way), the game’s implementation of ray tracing is the best we’ve seen yet.
Eurogamer’s Digital Foundry posted a massive interview with the developers yesterday, where they discussed all the various improvements made to the engine for Metro Exodus. With regards to the possibility of ray tracing becoming available on hardware with no specialized ray tracing cores, such as next-generation consoles for instance, Rendering Programmer Ben Archard said that fast compute cores are also a viable path.
It doesn’t really matter – be it dedicated hardware or just enough compute power to do it in shader units, I believe it would be viable. For the current generation – yes, multiple solutions is the way to go.
This is also a question of how long you support a parallel pipeline for legacy PC hardware. A GeForce GTX 1080 isn’t an out of date card as far as someone who bought one last year is concerned. So, these cards take a few years to phase out and for RT to become fully mainstream to the point where you can just assume it. And obviously on current generation consoles we need to have the voxel GI solution in the engine alongside the new ray tracing solution. Ray tracing is the future of gaming, so the main focus is now on RT either way.
In terms of the viability of ray tracing on next generation consoles, the hardware doesn’t have to be specifically RTX cores. Those cores aren’t the only thing that matters when it comes to ray tracing. They are fixed function hardware that speed up the calculations specifically relating to the BVH intersection tests. Those calculations can be done in standard compute if the computer cores are numerous and fast enough (which we believe they will be on the next gen consoles). In fact, any GPU that is running DX12 will be able to “run” DXR since DXR is just an extension of DX12.
Other things that really affect how quickly you can do ray tracing are a really fast BVH generation algorithm, which will be handled by the core APIs; and really fast memory. The nasty thing that ray tracing does, as opposed to something like say SSAO, is randomly access memory. SSAO will grab a load of texel data from a local area in texture space and because of the way those textures are stored there is a reasonably good chance that those texels will be quite close (or adjacent) in memory. Also, the SSAO for the next pixel over will work with pretty much the same set of samples. So, you have to load far less from memory because you can cache and awful lot of data.
Working on data that is in cache speeds things up a ridiculous amount. Unfortunately, rays don’t really have this same level of coherence. They can randomly access just about any part of the set of geometry, and the ray for the next pixels could be grabbing data from and equally random location. So as much as specialised hardware to speed up the calculations of the ray intersections is important, fast compute cores and memory which lets you get at your bounding volume data quickly is also a viable path to doing real-time RT.
We’ll likely know more about the feasibility of ray tracing via compute when AMD reveals more details about the Navi GPU architecture, which is believed to have been chosen by Sony and Microsoft to power their next consoles.