Scene capture high VRAM usage for shadows under Vulkan/DX12

I have an empty scene with a SceneCaptureCube actor set to capture every frame. I get really good frame rate (90fps) in the editor for DX11 but not for Vulkan/DX12 (50fps). The performance difference gets even worse for a populated scene, e.g. DX11- 40fps vs Vulkan 1fps.

Profiling using Unreal Insights shows that there is significant time being spent on memory allocation which is not present in DX11. I have attached screenshots of the frames for each. I have noticed that reducing the shadows from epic to low in scalability settings improves the fps significantly to match DX11 performance. DX11 also uses ~3GB less VRAM compared to Vulkan/DX12. I’m thinking it’s something to do with VSMs.

Is this a bug? I need the SCC in Vulkan to work comparably to DX11 with realistic shadows.

System:
UE 5.1, 5.2
Graphics: 3070 laptop 8GB

DX11

I have RHI thread enabled as it gives better performance.

Vulkan

DX12

VSM are not supported on DX11, so you’re probably mostly comparing cascade shadows against VSM. VSM shadows are expensive, but can be cached and work well with Nanite.

If you want a fair comparison of DX11/DX12, switch to cascade shadows for both tests.

I wasn’t aware DX11 doesn’t support VSMs. Is it stated anywhere? I’ve been using software-based Lumen in DX11 with Shadow Map Method set to VSM. Now that I check it, it doesn’t seem to be doing anything.

Anyways, that’s besides the point if it is a completely empty scene. There shouldn’t be any shadow calculations.

“Virtual Shadow Maps are currently supported on PlayStation 5, Xbox Series S|X, and PCs with graphics cards meeting these specifications, using the latest drivers with DirectX 12”

1 Like