Programmer Ramblings – Initial Thoughts on UE5

The new stuff…

In terms of new stuff, Nanite – the polygon crunching star of the past couple videos – and Lumen – their updates to dynamic lighting in the engine – are the obvious stars. Together they provide a significantly more dynamic visual presence but at a significantly high performance cost. I’ve been testing on my work PC which, while not particularly high end is still much higher than your average Steam PC, and has some distinct advantages over the new generation of consoles. For the purposes of testing performance, I made a cooked Test configuration cooked build (basically most CPU optimizations on, but with some debug / stat functionality preserved) for the Valley of the Ancients demo. My core specs as far as testing the demo are:

  • CPU: AMD 3950x (16 core, 32 thread – 3.5ghz)
  • GPU: Nvidia GTX 1080
  • RAM: 64 gigs
  • Storage: Samsung 970 EVO
  • Resolution for testing – 3440×1440 (more details on this later)

Compared to something like a PS5 or Series X, I have a far stronger CPU, a slightly weaker GPU than PS5 and far weaker than Series X, significantly more RAM, and marginally slower storage. I’m including some screenshots below taken at screen percentages of 50 and 100 with stat unit running to show the frame times. For reference, this can be changed in the in-game console with the command r.screenpercentage x. Under these resolutions, the effective render size is 3440×1440 or 1720×720. I recommend full screening the captures to see them in detail compared to each other.

In this first shot of the opening campfire, we hit a bit above 30 fps at 50%, but end up a bit under 20 fps for 100%. This is going to generally be a pattern that we see for various view. In this case, the resolution difference is pretty obvious because a lot of the scene is up close.

For this canyon shot, we see slightly better performance, but a similar ratio. 50% is closer to 50 fps while 100% is a bit above 20fps. In this shot, the resolution change is less apparent thanks to the temporal anti-aliasing, and at least on 2000+ series Nvidia GPUs we’d see a similar, if not slightly better situation through the use of DLSS.

What I will note here is that there’s some really bad artifacting around the player character when she turns. This is exacerbated by the low framerate, which leads me to guess it’s the temporal anti-aliasing itself, or some other post process dependent on temporal data. In any case, it doesn’t look good and really stood out to me in playback.

The final comparison shots are from the end by the golem. In this case you’re talking about 30 fps at 50% and around 15 fps at 100% resolution. In this case the resolution change again not that apparent because the scene tends to be a bit longer in terms of sight lines.

Given my initial pass, I’m considering the following four things as a set of visual bars to push for:

  • Use of Nanite
  • Use of Lumen
  • Native 4k, or at least dynamic resolution attempting to hit 4k
  • 60 fps+

If I’m looking at that list, I’m kind of expecting that the new generation of consoles only gets to pick two of those. If I were to guess what the current demo was running at on PS5/Series X given how it’s playing on my PC, I’d guess it was dynamic resolution ranging from 1080p to maybe 1440p upscaled at a 30 FPS target. On a series S I’m guessing they go even further, with a lower bound maybe at 720 or 900p. Given this is a tech demo, it’s pushing more than a typical game would so you can expect some better performance in a general case, but I’m hesitant to say that it gets you reliably three or four from my list up there.

Also, to be frank, I’m not sure how much of a benefit Nanite is for most assets. Zooming up close to some of the Nanite-focused assets, they often feel artifically lumpy to me. In cases like that, I’m not entirely convinced that the old style of a low poly mesh with a baked normal map isn’t still a better idea. Where I do think it will be useful is in allowing LDs to go heavy on things like small rocks and other similar detail work, allowing for high density detail work that can be automatically LOD’d away, but mixed in with more traditional assets to cover the bulk of the screen space. If you’re launching on the previous generation of consoles or Switch, you need that anyway since Nanite isn’t supported there. Looking at the state of the Steam hardware survey, you’re going to want the Nanite off fallback anyway for a lot of users.

File size is also somewhat of a concern here. Even cooked, the Valley of the Ancients demo is 26 gigs, with 11 gigs of that being megascans data. That’s a LOT of data for something that is a couple of minutes long. Stuff like that is going to be a case of picking and choosing the bang for your buck, and not just blanketing your entire game in it, because at the end of the day most teams are going to have to make something that is functionally capable of fitting on a Bluray disc.

On the other hand, Lumen looks wonderful, and I think going with a baked lighting setup is probably not going to be worth the visual downgrade. Dynamic lighting in UE4 has gotten much better over the engine’s lifespan, and Lumen seems like the natural continued iteration of that. The tools in place are far better than they have been for UE4, so I’m excited to see this continued evolution.