Could you share more info on these technical reasons that make you want to stay away from Nanite for that game? We made this step because our mid/long term vision is that everything is Nanite in platforms that support it (which means we intend to expand its support to areas where it is not complete like translucency, etc). Providing two different code paths and embracing people go for non Nanite one would be a big pain in the future, given that we want to guarantee forever asset compatibility in UEFN. I empathize with your fears though, and would like to understand the underneath issues better to see if there are more blind spots that need to be handled. We are confident this will not be an issue very soon and will do our best to reach that point as soon as possible.
Hey! Of course.
Starting from one of the biggest issues we’ve encountered with Nanite is with our custom ocean, we have a fully custom water shader (which does not work with Nanite due to 1.- its incompatibility with SingleLayerWater and 2.- due to a crash related to SingleLayerWater and Nanite) that we created with manually built LODs that allow us to easily simulate Ocean “physics” that we have been unable to replicate with Nanite.
We’re using a mesh that has around 95k vertices but due to how many we have distributed around the map, Nanite creates seams between them due to it being Cluster based that we don’t have much control over. The reason why we decided to use LODs for this is so we could only remove detail (vertices) anywhere away from the seams, which allows us to have a perfectly seamless ocean that hardly ever affected performance regardless of its poly density. Going from 95k vertices, to 1.6k on Screen Size 0,5.
One of the only solutions that we have is having a multi-million poly plane, a singular one that covers the whole world (around 5sq-km) which is not really optimal.
Apart from this, we have a bunch of foliage that looks “wrinkly” due to the Cluster Distribution used by Nanite, now, I know that we can tweak this but it doesn’t feel as controllable as LODs are, where we just set a Screen Size and a percentage that looks good and we don’t need to worry about it anymore.
We are also using a lot of translucency which is not great with Nanite.
And finally we kind of don’t want Nanite on our Skybox?
So basically and generally speaking, we feel like we should have control over what method we use to properly optimize our assets, even more, now that it is in our hands and not in Epic’s, whereas Nanite being forced means we have little control.
We feel like Nanite is not suitable for every situation where LODs can be used.
Question for you, how would we make a performance friendly ocean mesh that has WPO capabilities for simulating water (waves), that spans 5sq-km, using Nanite (inside UEFN)? Really curious if there’s a better way to do it!
We don’t understand why a future where both are available is not considered.
We are willing to jump on a quick call whenever you are free if you’d like to discuss this further and why we chose this path and the technical issues behind it, and also to see the problems we are facing with Nanite on this specific scenario, if that’s something that interests you, please let us know!
Thank you!
Hi! Just noting here that Single Layer Water on Nanite should now fall back to non-Nanite and not crash (in 24.10).
Translucency doesn’t work with Nanite and will also not use it.
Feel free to update us on any issue you are seeing!
As for how to create a large water surface, have you looked into using the built in water features? You can find the ocean as a compiled blueprint by searching for Ocean in the Content Browser Fortnite folder.
There’s more detailed information about the feature itself here: Water System in Unreal Engine | Unreal Engine 5.1 Documentation
It has been used in Fortnite for a number of years and has a built-in wave system with simple paramters if you don’t want to roll your own.
// Kev
Hi Rynex,
Apart from what Kev said, we are fixing other important issues in 24.10/24.20 that are impacting the Nanite workflow. We are also discussing with the team how we can improve scenarios as the one you described. Thanks so much for sharing this!
Hey Kev!
Really appreciate your response!
We were actually not aware of this, so thank you so much for letting us know!
We have seen the Fortnite ocean but it did not fit our world style at all, that’s why we created our own that gave us more control over the looks of it, for example:
- Absorption and Scattering amounts and colors
- Number of waves, direction and speed
- Distance field based foam and location based foam.
We were able to finally get it working today and live on our game which is amazing to see as we had been working on it for months!
Thank you!
Hey Juan, really appreciate it! Excited to see the Nanite changes and everything related to it. Is there any ETA on when this LOD/Nanite visual issue might be resolved?
Thanks!
Hi Rynex,
We released 24.20 a couple of days ago and that contains some important fixes. We are also discussing how to improve other areas discussed in this thread.
Thanks again!
Hey Juan,
First thing I checked when 24.20 went live, and couldn’t be more thankful with how quick it was fixed.
Thank you all so much!!
Glad it is working now, thanks again for all the feedback!
The status of UCB-1056 incident has been moved from ‘Awaiting Validation’ to ‘Closed’.