The foliage material is not very complex, rather typical foliage (trees from the CityPark package, in fact).
It’s clear that the cache is still being invalidated: You can see the shadow moving from a great distance - so I don’t really think material complexity has much to do with it.
The impact is so large because the trees have a lot of geometry and there are a lot of shadow calculations that have to be updated every frame.
Any solution/news on this topic? I see that VSM in combination with Nanite Foliage using WPO in 5.2 is still an issue and the VSM shadows are still very expensive.
From what I saw the console command r.Shadow.Virtual.Cache.MaxMaterialPositionInvalidationRange still doesn’t work in 5.2 preview.
You can change the WPO disable distancing in Foliage Actors too, it’s in the properties of the mesh when you select it in Foliage Edit mode (1.).
5.3 also introduces another option - Shadow Invalidation type (2.) - you can set this to static, it still uses WPO on your foliage, but doesn’t update the shadow - this is very efficient when combined with a WPO disable distance.
You can also access the WPO disable distance from blueprints, changing straight onto a InstancedStaticMesh Component or HISM Component - affecting all instances in that component.
Alternatively, I’ve got a couple of plugins on the marketplace, they’re called rdBPtools (Instance and Prefab editor) and rdInst (a singleton Instance manager, written in c++ for speed).
I’ve exposed all the instance settings such as WPO distance and shadow invalidation in there to make it easy to set things like that.