I’ve set up an RVT material on a ground plane to blend objects sitting above it. Everything works as expected when Nanite support is disabled. However, when I enable Nanite support, I encounter an issue:
To confirm the shader itself is functioning correctly, I applied it to a landscape actor, and everything works fine, even with Nanite displacement and tessellation enabled:
This leads me to my question:
Does Nanite RVT functionality only work on landscape actors and not on static meshes? Or am I missing something in the setup?
Any insights or advice would be greatly appreciated!
Hi, nanite meshes cannot write to the RVT (last tested it in ue5.3). Sampling from the RVT works fine though (tested in ue5.4). So if the plane is a nanite mesh, then it won’t be able to write to the RVT.
As to why it works with a nanite enabled landscape, from their documentation about nanite landscape:
Nanite Landscapes stream on top of the existing Landscape data streaming since both Nanite and non-Nanite data are necessary at runtime. Non-Nanite Landscape data is required for Runtime Virtual Textures, water rendering, and more.
So its likely using a non-nanite landscape to write to the RVT…
So what you could do would be to have two meshes, one with nanite enabled that does not write to the RVT and another that has nanite disabled, writes to the RVT and is set to never render in the main pass (so that it only renders to the RVT but is not rendered).
But then sampling from an RVT seems to be rather heavy (never benchmarked it though), so there may be cheaper ways to achieve the same thing, especially in the example you’ve shown.