During its State of Unreal address at GDC 2023, Epic announced a wide-ranging suite of features for Unreal Engine 5.2. But perhaps the most important feature coming in the updated engine doesn’t relate to lighting, geometry detail, or ray tracing. It’s all about performance.
Unreal Engine games, rightly or wrongly, have been associated with stuttering and hitches over the past few years. With the new release, Epic is finally tackling the problem head-on, so I thought it was high time to break down why Unreal games so commonly show stutter, what Epic is doing to solve the problem, and when we can expect to see those efforts show up in new releases.
Remember the stutter
Over the past few years, Unreal Engine has become synonymous with stuttering. We’ve seen it over and over again, from Star Wars Jedi: Fallen Order to Stray to Gotham Knights, and they all have the same issue in common. It’s compilation stuttering.
You’ll typically hear about shader compilation stuttering, but recent sources of hitches aren’t due to individual shaders. In recent graphics APIs like Vulkan and DirectX 12, packages known as Pipeline State Objects (PSOs) are leveraged to tell the game about the state of your GPU. PSOs are meant to make rendering more efficient, allowing dozens of parameters, including shaders, to be interfaced between the API and the GPU in a single package.
However, they introduce a different problem. Because PSOs contain so much information, generating a new one on the fly takes a long time (according to Unreal’s documentation, 100 or more milliseconds). This runtime PSO creation is the source of a stutter, where the engine has to generate a new PSO while you’re actually playing.
To combat this, PSO caching is available in Unreal Engine. This creates a cache of possible PSOs so new ones don’t need to be generated while you’re playing the game, but they aren’t perfect. As Epic explains, PSO precaching can “be burdensome for large projects, and still leave gaps in the cache leading to hitches.” That’s why, even in games that precompile shaders on the GPU, you’ll still occasionally see a stutter (even if they’re few and far between).
Epic is attempting to automate this process by gathering PSOs rather than leaving it to developers to account for every possible GPU parameter. It’s on Epic’s public road map, but only an experimental version is available now. In Unreal Engine 5.2, the goal is to improve PSO caching to further reduce hitches.
All for Fortnite
There’s a lot to be excited about in Unreal Engine 5 (I’ll get to some of that next), but we don’t have a clear view into how the engine works just yet. So far, it’s only been used in tech demos and Fortnite among major releases. Even games like Redfall that promised to leverage Unreal Engine 5 have backpedaled to Unreal Engine 4.
To be clear, the tools available in Unreal Engine 4 allow developers to optimize their games to avoid stuttering. Atomic Heart is one of many examples of that. But the complex state of PSOs has left the door open to hitches during gameplay, and Epic’s automated PSO gathering was only introduced in Unreal Engine 5.1.
Although I’m happy to see Epic addressing the issue directly, we haven’t seen the automatic PSO cache in process yet. As more complicated, varied releases come out from smaller teams, the demand for PSO generation goes up, and the possibility of hitches and stutters becomes more present.
This is particularly concerning for games that include ray tracing, as Unreal Engine 5 doesn’t support PSO caching for ray tracing PSOs. As Nvidia explains, it’s possible to distribute the work of creating a ray tracing PSO to multiple threads, but that doesn’t necessarily mean developers will use this process.
Still a lot to be excited about
We still need to see automated PSO gathering in Unreal Engine 5, but there’s actually a ton to be excited about in the engine. First and foremost, Lumen. Lighting is extremely important for graphical fidelity, and expensive techniques like path-traced lighting showcased in Portal RTX are tough on hardware. Lumen splits the difference.
Lumen leverages ray tracing, but it’s a highly optimized form of
The results are already clear. Fortnite is running on consoles with Lumen at 60 frames per second (fps), and it looks stunning on PC, even in Fortnite’s cartoon world.
Nanite works in tandem with Lumen. It’s a virtualized geometry system that contains highly detailed, highly compressed meshes that can adjust during gameplay. It’s basically a complex Level of Detail (LOD) for meshes that automatically swaps between detailed and vague meshes depending on where the camera is looking.
More importantly, Nanite runs on its own rendering pass, so it’s not caught up in the traditional GPU pipeline. That means that your gameplay remains smooth even when Nanite is swapping out mesh complexity. Between Nanite and Lumen, you have two visually impressive, computationally efficient features that raise the bar for graphical fidelity.
Epic shared more during its State of Unreal address, though. Substrate is a new material system in Unreal 5.2 that includes more detailed shader control. Epic demoed this with an opal surface material, showcasing multiple layers and accurate light refraction throughout them.
The new Procedural Content Generation Framework (PCG) is also exciting, even if it doesn’t directly relate to visual fidelity. With limited input, the PCG can generate new objects to allow developers to rapidly build out worlds with a high level of detail. That’s exciting for more expansive worlds that don’t need the touch of an artist at every corner.
There’s a ton more, from advancements in MetaHuman to full path tracing within Unreal Engine. It’s exciting, but the stuttering issues commonly associated with Unreal Engine releases remain. Hopefully, Epic’s advancements in PSO caching can bypass that issue, but we don’t have a lot of Unreal Engine 5 games to see how that system works yet.
This article is part of ReSpec – an ongoing biweekly column that includes discussions, advice, and in-depth reporting on the tech behind PC gaming.