I find myself rather busy as of late, but I’m looking to write a short review of Nvidia’s custom branch of Unreal Engine 5.1, this time with support for caustics. I’m writing this now because my NVRTX editor appears to have bricked in an unrecoverable way (short of rebuilding it from source), so I’m writing the review while the systems are still fresh in my mind. I won’t be including performance profilings at this point, more just my musings on the system as a whole.
First off, unless brought up otherwise, systems are largely identical between NVRTX 5.0 and 5.1, barring performance improvements and the notable absence of DDGI (likely as the technology was superseded by lumen). Please see my previous post for context.
RTXDI has unfortunately not received significant improvements in my opinion, and while performant even in scenes of complex, occluding geometry and overlapping lights, the image resolve is significantly poorer than standard shadowmaps. There is a visible and obtrusive fizzle and noise, especially on specular surfaces, that degrades image quality rather significantly. If temporal stability can be improved however, I believe RTXDI would be an incredible lighting solution. Nvidia’s work is a technical marvel, but there is still some way to go.
The entire reason I pulled the engine down was to test how NVRTX’s real-time caustics rendering features would interact with lumen. And while the caustics effects are extremely technically impressive, I ultimately don’t believe the workflow they demand is worth the cost (ics). You can get visually stunning, offline-grade results, but it won’t be easy or cheap.
Caustics are the patterns cast by light refracting or reflecting off of a specular media: the warbling shadows cast by a glass of water, stained glass windows, the pattern of light on the ground outside a metal wall are all caustics. They’re very hard to render in games in real-time, even with real-time RT, but Nvidia created a very clever system to generate caustics at playable frame rates.
The issue is, setting up caustics in NVRTX isn’t nearly as straightforward as enabling GI with lumen. To use caustics, you have to first enable the feature engine-wide (and the requisite plugins), then tell a light to cast caustics, a mesh to reflect or refract them, and tune the various buffers and photon counts for performance in the PPvolume, light, and material. It’s a juggling act that’s rather time-consuming to get good results, but it can work well. Reading their documentation is a must-do in order to get meaningful, usable results. The biggest disappointment? Caustics, which can include anything from light reflected off of windows to colored shadows from glass, are only visible in screen-space. Normally this would be a small issue, but it completely rules out the possibility of scenes such as light through stained-glass windows lighting up a room, something lightmass could do rather handily. And while lumen, translucency, and the caustics solver are all extremely advanced pieces of tech on their own that are unlikely to innately interplay, the level of integration in the disparate systems is not something Nvidia documented well, in my opinion.
What’s more irritating in my opinion is their different translucency modes: NVRTX-caustics has four different modes of handling translucency, two stock with the engine, two new. They all offer different options on sorting transparency, handling reflections and refractions, even letting light scatter inside items. I have a strong liking of the tech art side of things, but even I was occasionally mystified at what a given setting was meant to do. There isn’t a lot of useful mouseover text in the engine either, so you should be ready to do a lot of googling and video-watching. The setup isn’t artist-friendly.
Furthermore, even in Nvidia’s archvis example level, there were strange visual bugs and inconsistencies that made me struggle to understand how the technology works. Hacks were used such as making the window panes emissive to read better, as well as faked light shafts through billboards and a handful of other tricks. Items were also culled from the RT scene without clear tagging to explain why.
Bottom line: I don’t think NVRTX is worth the artist time it demands to get good results. If you want caustics and maximum lighting quality, you can use lightmass and RT reflections. If you need real-time lighting, we have tiling caustics textures (and a handy baker epic provides), light functions and more tricks that can look pretty good with less time and artist setup.
If Nvidia wants the caustics branch to be more viable, I would appreciate it if they work on making it work more ‘out of the box’, like lumen. If there is a way of integrating the caustics buffers into the lumen scene to facilitate GI from caustics, that would be wonderful. If they can make the caustics system use performance heuristics and virtualization like lumen to maintain performance with less artist intervention, that could be wonderful.
Also, the engine crashed repeatably any time I tried to enable debug visualizations, so there are bugs that definitely need fixing.