The team over at CRYENGINE demonstrated a unique, hardware-agnostic implementation of real-time ray tracing within the Neon Noir demo at GDC 2019, brazenly demonstrating accurate reflections working on an AMD RX Vega 56 as if it were no big, Nvidia-affronting deal. And now they’re ready to talk in greater detail about how they achieved this.
The Neon Noir demo, we can now confirm, was running at 1080p and achieving a hearty 30fps on AMD’s second-tier Vega architecture graphics card from 2017: the RX Vega 56. Vladimir Kajalin, principal rendering engineer for CRYENGINE, and Ron Frölich, principle 3D artist for Hunt: Showdown, have taken to the web to answer some of the burning questions as to how this effect and performance is possible.
“Ahead of GDC 2019, we revealed Neon Noir, a research and development project showcasing real-time mesh ray traced reflections and refractions created with an advanced new version of CRYENGINE’s Total Illumination real-time lighting solution. Needless to say, we did receive a lot of questions about the demo and ray tracing in CRYENGINE.”
Nvidia’s latest RTX 20-series graphics cards feature specialised silicon designed for this highly-demanding task, RT Cores. These full-fat Turing cards fair particularly well with ray tracing in comparison to ageing architectures, easily crushing Nvidia’s Pascal graphics cards mano a mano in real-time workloads.
Yet CRYENGINE’s solution is seemingly able to bypass some (not all) of this hardware requirement. This was achieved utilising the company’s own lighting system, building upon the voxel cone tracing already within the engine.
“Before we added mesh ray tracing into the engine, we already had a lighting system that used a lot of ray tracing,” Kajalin says, “also known as voxel cone tracing. That meant we didn’t have to build an entirely new lighting system from scratch.
“One of the key factors which helps us to run efficiently on non-RTX hardware is the ability to flexibly and dynamically switch from expensive mesh tracing to low-cost voxel tracing, without any loss in quality. Furthermore, whenever possible we still use all the established techniques like environment probes or SSAO. These two factors help to minimize how much true mesh ray tracing we need and means we can achieve good performance on mainstream GPUs.”
This approach is similar to how DICE lowered demands for Battlefield V’s RTX features post-launch. A considerable performance increase can be gained by opting to ray trace only highly reflective surfaces. For example: puddles, mirrors, and windows.
“All the objects in the Neon Noir Demo use low-poly versions of themselves for reflections,” Frölich says. “As a few people have commented, it is noticeable on the bullets, but it’s a lot harder to spot in most cases. That said, we can easily fix the reflection on the bullets by using more detailed LODs or just not using LODs at all.”
How will Nvidia RTX 20-series GPUs perform in CRYENGINE?
CRYENGINE will receive further optimisations for dedicated ray tracing silicon and the latest API support. While there’s little to be gained from the RTX 20-series today within CRYENGINE, the developers will unlock more performance from these cards as development continues.
“Broadly speaking,” Kajalin says, “RTX will not allow new features in CRYENGINE, but it will enable better performance and more details.”
Ray traced implementations of shadows and ambient occlusion are on the backburner for the company due to their perceived lack of visual impact to the gamer. But the developers are considering including these effects further down the line.
Reflections and refraction are currently still deemed an “experimental feature”, but the developers are confident progress is being made rather rapidly towards improving the quality and efficacy of ray tracing within the engine.
CRYENGINE’s Total Illumination tech is remains on track to be included within the engine’s official release sometime this year, and you can find out more from the Q&A here. The Neon Noir demo will also be made available to the public at a later date.