Unreal Engine 5.4: Epic's latest revision delivers big performance and feature wins
Yet frame-time stability, traversal stutter and shader precompilation still need improvement.
Unreal Engine 5 has reached a new milestone release, version 5.4. Alongside technology that sets the groundwork for future iterations of the engine, developer Epic Games is promising substantial performance improvements with better CPU utilisation, potentially solving a common bugbear we've seen on PC and consoles this generation. Of course, the new release also includes visual improvements, including to the Nanite geometry system and Temporal Super Resolution (TSR) upscaling. We've tested this latest engine revision to see how everything works and to get a sense of the kind of performance improvements that might be possible in the new version.
As stunning as it was, the first Matrix Awakens Unreal Engine 5.0 demo back in 2021 already exhibited the core performance issues that Epic is looking to address with 5.4. Moving through the Matrix demo city at speed on PlayStation 5 was enough to cause precipitous performance drops, as the engine grapples with loading in new areas. This is just a demo, of course, not a shipping game, but the sub-30fps readouts and frame-time stutters coupled with dynamic resolution scaling suggested a severe CPU limitation on console hardware. This was confirmed with the City Sample demo on PC in 2022, where simple CPU and GPU utilisation metrics show severe CPU bottlenecking even on powerful modern CPUs like the Ryzen 7 7800X3D.
Logically, this makes sense. A lot of the most prominent UE5 features have significant CPU components, like MetaHuman, open world streaming, hardware ray tracing and Nanite, and therefore place a heavy demand on CPU performance. More critically, you tend to be limited by single-thread performance, so higher core count CPUs aren't able to meaningfully scale by spreading the load across multiple cores and threads. Given that both budget PCs and consoles tend to have core counts in the six to eight range and an increasing number of Unreal Engine 5 games are coming to market, that's a lot of untapped performance potential.
Enter Unreal Engine 5.4. There are a fair few changes here, but the biggest and most imporant change is renderer parallelisation - essentially splitting up the render thread to better utilise multi-core CPUs. This change has a profound impact on performance when comparing Unreal Engine's city benchmark between versions 5.0 and 5.4. In a CPU-limited scenario on a Ryzen 7 7800X3D, the frame-rate is 42 percent higher in 5.4.
Put another way, you're going from having basically no chance to see 60fps on one of the best gaming CPUs - one that wasn't even available when the first UE5 demo launched! - to easily pushing frame-rates into the 80s. That's a huge improvement to overall performance, despite the content and settings remaining the same, and it's predominantly down to that better CPU utilisation.
That's great news for PC, but it's also a boon for consoles. While we can't run the UE 5.4 demo on consoles directly as we can on PC, we can use our Frankenstein PC to get a sense of how current-gen console-equivalent hardware fares. This PC is equipped with an AMD RX 6700, a graphics card close to that in the PS5, and a 4800S desktop kit, which is the actual APU from the Xbox Series X. That mish-mash theoretically ought to deliver performance in the same ballpark as a current-gen console, but in reality frame-rates are far below what we'd imagine on 'epic' settings.
Regardless, we get a 60 percent average frame-rate uplift when running through the streets going between versions 5.0 and 5.4, complete with much less spiky frame-times as we start to become GPU limited. When flying through the city, stressing the CPU more, that differential shifts to 80 percent. While this test isn't indicative of actual console performance then, it does show that the UE version improvements help lower-end configurations more than higher-end ones, relatively speaking.
While Unreal Engine 5.4 does show convincing average performance gains, the engine still has some way to go in terms of other performance scenarios. As I've pointed many times in Digital Foundry articles, UE has a big shader compilation stutter issue. There are a lot of reasons for this, but you can see the issue big-time when you first run the Matrix city sample in version 5.0 - massive frame-time spikes into the hundreds of milliseconds. To fix this, developers tend to use a manual shader precompilation step, but this is labour-intensive for the developer to prepare and requires a thorough approach to pick up all shaders.
Due to this, Epic has moved to automated shader pre-caching from Unreal Engine version 5.1 that compiles shaders on demand on background CPU threads. This automatic system eliminates the most jarring stutters with a 'cold' shader cache, but you still need proper shader precompilation to maximise performance and minimise stutters.
![ue5.4 performance comparison between 'cold' and 'warm' shader caches](https://assetsio.gnwcdn.com/Unreal-Engine-5-4-Analysis-8-7-screenshot.png?width=690&quality=75&format=jpg&auto=webp)
Despite this progress, even games like Epic's own Fortnite that run on UE 5.4 and use the combination of the automatic asynchronous caching system and a shader compilation step can exhibit issues. Playing the game for the first time on a beefy PC with an RTX 4090 and a Ryzen 7 7800X3D at 1080p to purposefully unburden the GPU, the game doesn't lock to a perfect 60fps - and indeed stutters are obvious here in our first Fortnite match even before getting off the bus. In fact, it took me until about my 8th match or about one hour of playtime to stop seeing large frame-time spikes when going to new areas of the game world. Given that a game developed with the support Epic UE5 engineers and on a massive budget still has these issues on a flagship-grade PC, it's clear that some inherent challenges remain.
Frame health could also be improved. If we go back to the Matrix city demo in version 5.4, it's clear that there are still spikes into the 33.3ms region every few seconds - which are visible even on the best VRR monitors out there. In fact, the spikey frame-times are arguably subjectively worse than the same city in 5.0, due to the greater disparity in frame-times. This issue of moving through the game world and getting big spikes to frame-time is what I call traversal stutter and it is something endemic to many Unreal Engine games. Unreal Engine 5.4, though it helps boost frame-rate averages, doesn't seem to greatly help traversal stutter based on my experience.
Beyond performance, the updates to Unreal Engine since the 5.0 release have included interesting visual improvements. One good example is glass rendering, which doesn't include ray-traced reflections in version 5.0 but does when using higher settings on PC in 5.4 for a more visually consistent result.
![comparing reflection quality settings in unreal engine 5.4](https://assetsio.gnwcdn.com/Unreal-Engine-5-4-Analysis-12-44-screenshot.png?width=690&quality=75&format=jpg&auto=webp)
![demo of higher-quality hit lighting in ue 5.4, with a small performance penalty: 60fps disabled and 52fps enabled](https://assetsio.gnwcdn.com/Unreal-Engine-5-4-Analysis-13-43-screenshot.png?width=690&quality=75&format=jpg&auto=webp)
Another PC-facing feature that Epic has been continuously updating since 5.0 is the hit lighting, which makes lighting in reflections look much more realistic. Without hit lighting, dynamic objects like character models have no colour in reflections, so it can be an impactful improvement. Version 5.4's reflections also exhibit more detailed and realistic textures and materials in reflections, plus ray-traced shadows. This feature now works well and has only a 13 percent performance cost on an RTX 4090 at a native 4K - so expect a smaller hit when using upscalers like DLSS or lower resolutions.
Another interesting upgrade to UE5 comes in its emissive lighting, which handles the night-time artificial lights of the cityscape in the Matrix demo with Lumen ray tracing. This has been improved significantly between versions 5.0 and 5.4, with more coverage evident on the newer version - albeit at the expense of more flicker from very small emissive lights at a distance (and indeed light sources more generally, which appear a little less stable in this version).
Looking toward the future beyond version 5.4 there are a few interesting things to look out for, but for my money, I'd say the most interesting is Nanite being extended to work for character models. This feature is currently experimental, but footage provided by UE specialist Dylan Browne from Model Farm is impressive. It allows for near-infinite geometric detail no matter how close a camera gets to the character, and in this case, Dylan is using 3D noise hooked up to the UV that is scrolling. This gives the appearance of a boiling and uneven moving surface all across the model - very cool.
![showing a normal and nanite triangle view of a character with Unreal Engine 5's Nanite enabled](https://assetsio.gnwcdn.com/Unreal-Engine-5-4-Analysis-16-43-screenshot.png?width=690&quality=75&format=jpg&auto=webp)
This is just a demo of course, but it's impressive to see all of that detail being delivered by incredibly dense geometry. It's easy to imagine the type of detail that this could unlock for games of the future, such as damage systems on characters for horror games or characters that morph and change in real-time.
It's evident that Unreal Engine 5.4 is an significant release, particularly if that circa 40 percent CPU performance we saw in the Matrix demo is anything like indicative of the sort of uplift we might see in shipping games. And, as we saw elsewhere, UE 5.4 is better-looking than 5.0 in many areas, especially using the higher quality presets made for PC graphics cards.
It's equally clear that UE would also benefit from further performance improvements, specifically with regard to frame-time stability. Shader caching still needs work too, if Epic's own game Fortnite is an accurate measuring stick - a game like this shouldn't stutter so badly on a high-end CPU. I'd like to see a more systemic approach to alleviating traversal stutters too, as these are found all over the Matrix demo and almost every UE5 game out there.