In 5.6 VSM not working unless Nanite is enabled?

In Unreal 5.6 If the Nanite option is disabled in the project settings (r.Nanite.ProjectEnabled=False). The Virtual Shadow Maps won’t work, it falls back to CSM.

Enabling Nanite in the project settings, but disabling Nanite via the r.Nanite=False command works, but Nanite is still appearing in the render resource viewer occupying 2GB of VRAM with the Nanite.StreamingManager.ClusterData. I don’t have any nanite objects on the level, yet it’s still there. So I’m a bit lost how can I get rid of that without sacrificing VSM. I have a super small level, with a very few objects with low poly assets, so it’s not worth it to use nanite.

This was not the case in 5.5. Is it possible to make it work in 5.6?

welcome back.

i don’t know if vsm can work without nanite.

i’ve seen another post like this on the forum. but i don’t know the answer.

I posted this same problem last week, and received nothing useful yet.

I’m in the same boat as you, it was working fine in 5.5 with nanite disabled.

I reported this as a possible bug, but it would definitely be good if more people reported it too.

Let me know if you hear anything, or find any new info! (I’ll do the same) Thanks!

Hey folks, this was an unintentional side-effect of CL#41759390 (b6da8bb) Disable lumen and nanite per project and strip content at cook time.

This change was made as part of a larger effort to strip unnecessary shaders from packages for platforms that didn’t need them. You’ll need to revert parts of the changes in that CL made to RenderUtils.cpp to get back VSM support without Nanite.

That said, in general we don’t recommend disabling Nanite unless you’re running on a platform which doesn’t support Nanite, in which case, you usually cannot afford VSMs and should be using CSMs. Generally the cost of rendering non-nanite into VSMs is pretty high, though it can be hidden by caching if your game is fairly static but there’s situations that come up where there’s no cache data and you can get big hitches. But ultimately, if you’re happy with the uncached/force invalidate performance of VSMs with your content, that’s what matters, and it’s OK to continue using VSMs without Nanite, but be prepared to maintain the custom engine change above, because we don’t currently have plans to officially re-enable VMS support without Nanite.

Nanite is still appearing in the render resource viewer occupying 2GB of VRAM with the Nanite.StreamingManager.ClusterData

Lowering r.Nanite.Streaming.StreamingPoolSize to 0 should bring this down. You may want to also lower r.Nanite.Streaming.NumInitialRootPages and set r.Nanite.Streaming.DynamicallyGrowAllocations 0

Also, if you decided not to use Nanite in your project and measured how much package bloat was added by enabling Nanite or performance drops that occurred by enabling Nanite, please share that data, if you can, because we don’t have many reports or data points from games using VSMs without Nanite. Thanks!

Thanks for the reply, at least we know it was intended.

I’m fine with keeping nanite enabled, as long as it’s not sacrificing any framerate.

The question is, for a project that does not need LOD or high-polygon nanite meshes… is there any techniques that should be done to improve performance for VSMs? The thing is, I don’t want my meshes altered at all when rendered. Not even 1 polygon. Yet I want VSMs.

Can you make use of nanite on meshes without disrupting the polygon count, and still provide benefits for VSMs? Or does nanite being “on” by default automatically fix this even on non-nanite meshes?

Any advice?

Thanks!