I am on UE 5.1 preview 2. I made a rectangular box mesh with lots of vertices in hope nanite would use this for high res mesh (left screen). When I convert this mesh to nanite though, its vertex count go down a lot, and this even when close to the camera. Therefore using WPO for displacement on it (with a height map) is totally ineffective. Maybe I don’t understand how to use the system, but my point is to get a replacement for tessellation, I though nanite+WPO would do it but apparently not. Any idea?
(UE 5.1 preview 2 with SM6 enabled, Windows 10.0.19045 22H2, nvidia drivers 526.47)
Nanite does not work with WPO well, in its’ current state especially.
I got to hear from Brian Karris (creator of Nanite) indirectly about this, but by and large WPO with Nanite is extremely experimental, and any very suprising/unpredictable results are par for the course.
If you’re looking for a replacement for tessellation, you are unfortunately somewhat out of luck. The new recommended pathway instead is to use Epic’s in-engine subdivision tools to modify your meshes to the appropriate detail, with Nanite supporting whatever you need (at least that was the recommended pathway at some point). Epic has orphaned the tessellation featureset.
Also, just out of pure personal curiosity, what is the benefit in your workflow to having a densely-tesselated Nanite mesh to then displace, as opposed to simply having a Nanite mesh already in the shape you desire?
I haven’t tested myself with a tessellated box, but are you sure nanite is enabled and it’s not a fallback mesh (checking the nanite debug views with the asset placed in the scene)?
If Nanite is working, maybe you could add a tiny bit of noise/variation to the box so Nanite doesn’t automatically compress away all the geometry?
Another way to look at it: The whole point of Nanite is that you make the shape in geometry, not in shaders. You should be able to model the geometry at a high enough resolution that you don’t need the shader-level WPO.
Btw, that box does not look like it has “a lot” of verties – if you want it to have real definition at the fine-grained level, you need like 100x more vertices. That’s where Nanite really shines!
This way I can manipulate the texture tiling multiplier at will, I can map another set of textures on the same mesh, use tri-plannar mapping etc. This provides independence between the mesh and the material, which is lost if I conform the mesh geometry to the height map.
Yes Nanite is enabled, you can see it on the screenshot. Indeed adding noise may help, I’ll try this, thanks for the tip!
I am not using Nanite wishfully here, I am just trying to have an equivalent to tesselation, but that isn’t the case. I think Epic has deprecated tessellation too early, their system apparently is not able to fully replace it.
@ZacD suggestion to add noise to the surface to make the Nanite conversion keep more vertices worked! So now I am with another issue, shadowing as you can see on the screenshot. I have these shadowing artifacts whether or not using Lumen.
Nanite is the replacement for tesselation. You should model your assets at the very dense vertex resolution. That’s how the system is supposed to be used. Do not use WPO or move the vertices of static geometry in the shader.
If you want to use the old system, then use the old version of the engine. Some people who want the old behaviors, even still use UDK (unreal engine 3.) There’s nothing wrong with that, if that’s what suits your needs the best. You have the source, so if there are bugs in the old version, you can still fix them yourself.
hmm is there a way to set things up so shadows are ignored for WPO? Displacing only outwards doesn’t fix the problem, and creates another one as orthogonal mesh parts get separated from each other.
If so then Nanite breaks the material vs. mesh independence that we had before. Again, I think if Epic was not able to replace tessellation fully, it should not have deprecated it. Using an older engine is not a solution to me, there are many other things interesting in UE5 that I would not have access to.
Sure, that is an argument one can make. Meanwhile, this is what we have
EPIC clearly said “we want to move away from putting geometry in shaders” and that’s what they’ve done.