Many HEXUS readers were impressed by the Crytek Neon Noir real-time raytracing demo, as revealed at GDC 2019, mid-March. The headlining claim to fame of this gorgeous looking real-time demo was that it wasn't running on one of Nvidia's shiny new GeForce RTX graphics cards but an AMD Radeon Vega 56 - at an impressive 4K 30fps. At the time Crytek confirmed that its hardware agnostic demo would run well on "most mainstream, contemporary AMD and Nvidia GPUs". We didn't learn a lot about the Crytek real-time raytracing engine at GDC but were promised that it would make it into CryEngine 5.5 later this year.
Crytek has shared an update on how its real-time raytracing works in an interview-formatted blog post featuring Vladimir Kajalin, Principal Rendering Engineer for CryEngine, and Ron Frölich Principal 3D Artist for Hunt: Showdown - two key members of the Neon Noir dev team.
Kajalin explained that CryEngine has been using a form of raytracing inside its Global Illumination solution since 2015. However the detail levels of real-time reflections were good except for when very smooth and reflective surfaces like mirrors came into the scene. In Neon Noir and upgrade was applied to implement real-time mesh ray-traced reflections and refractions. "This technique shows high-quality scene meshes and textures perfectly reflected in mirrors and reflective surfaces using GPU ray tracing," says Kajalin. Currently raytraced ambient occlusion or soft shadows aren't being implemented.
Before mesh raytracing came to CryEngine a lighting system that was used that was known as voxel cone tracing. Kajalin said this technique was merged with the new mesh raytracing - used on smooth and clean reflective surfaces like mirrors. Thus the compute intensive raytracing can be rationed within any scene and voxel tracing used elsewhere. Raytracing requires de-noising, and nicely that feature already existed in CryEngine.
Future architectures
The original Neon Noir raytracing demo video showed real-time rendering using an AMD Vega 56 GPU powered system. Crytek says that its raytracing implementation is both API and hardware agnostic but it still has plenty of scope for improvements and tuning at this time.
As the tech is developed it will benefit from modern APIs like Vulkan or DX12, and/or dedicated hardware like the latest generation of graphics cards - the RTX cards from Nvidia, for example. When RTX or similar dedicated raytracing accelration hardware is present - it won't allow new effects or features in CryEngine, rather it will "enable better performance and more details". On the topic of detail levels, the developers added that reducing the resolution of reflections "allows much better performance without too much quality loss".
Frölich summed up the appeal of real-time raytracing in a games engine like CryEngine by saying "Like most modern rendering features, ray tracing is another step towards visual realism in games." He added, to illustrate its use cases "When used aggressively in special cases like mirrors, and subtly in most other cases like windows and wet surfaces, ray tracing can improve the overall image quality," while breaking down barriers for developers.