Thinking in terms of hardware in the future is pretty silly. I did that before and only found that people who want to play my game are still using 10 and 20 series GPU’s.
Scalability is important. This is nonexistent in current Nanite. Upscaling is an important tool to support a wide range of PC hardware. Upscaling with no uplift is useless. This is a feedback thread so I will provide my feedback on the current state of Nanite.
I agree that upscalers are a major W for game developers and gamers. Way way back in the day, we used to decrease the resolution of the game with no upscaling to improve performance. Now we can decrease while maintaining some level of detail. However, upscalers are not a replacement for conventional contention mitigation techniques. Until hardware can solve the multithreading synchronization issue’s, we have to bank on the tried and true.
I’ve been in this industry since ~'07 and have seen how rendering hardware makes it possible to perform more calculations, but waiting on threads to synchronize has always been an issue that traditional optimization techniques aimed to mitigate as to not bottleneck the hardware. I have experience writing complex renderers with OpenGL and DirectX
I’ve already been able to optimize Lumen and VSM’s. It’s Nanite that is causing me most of the trouble right now with its lack of scalability & optimization options. Epic also tells you that Nanite should pretty much be enabled on every static mesh possible.
I agree with Epic on the fact that Nanite typically renders faster. But they neglect to tell you that you have to worry about the contention issues in the rasterization process with no ability to mitigate them currently.
Here is proper demonstration of contention issues
Details:
Resolution: 1440p @ 100% screen resolution with TSR disabled. TAA instead
GPU: RTX 3090ti 24GB
CPU: AMD Ryzen 9 5950X
Lumen: Disabled
VSM’s: Disabled
Reflections: Disabled
Shadows: Disabled
In this scene, I stacked 1000 planes on top of each other with a simple masked material. This is a completely fresh project in the Launcher version of UE 5.3. I am running P.I.E. I know it's a very ugly image, but it's meant to show you what I see in the viewport.
Here is how the mesh was created in 3ds max. Just a simple plane that is heavily subdivided:
As you can see, standard culling is equipped to handle overdraw like this far better than what Nanite can do currently.
For demonstration on what the performance would be like without occlusion & scene culling + nanite disabled, here ya go:
You can see the jump from ~5ms to ~18.5 ms. Nanite is faster than non nanite + no occlusion culling in this demonstration.
Nanite has a lot of area’s to improve and it comes with massive overhead.
World Outliner for reference:
Very soon, I’m going to be doing a public release so players can report performance.