Hi,
I am reaching out as our game has been recently seeing some performance spikes on the game thread mainly awaiting on the RHI thread to catch up, ever so often due to a buffer allocation from the internal FD3D12PoolAllocator.
Since we are using the UE’s Water System, we wanted to know what sort of parameters of the Water System are driving these huge buffer allocation, (and the density of the quad tree mesh), to iterate over it, and hopefully drive the costs of allocation down. Additionally, this hitches have been happening with no camera movement whatsoever every 15 seconds or so.
[Image Removed]
[Image Removed]
Kind regards,
Cosmin B.
CTO of Dreamlit Games
Hi,
in addition to the Rendering settings on the WaterZone’s WaterMesh component (such as Tesselation Factor and LODScale), there are additional water system console commands for scalability and debugging at this link. The best way to see the impact of changing any of those is to visualise the water mesh by setting r.Water.WaterMesh.ShowWireframe to 1, disabling SkyLight and SkyAtmosphere and setting r.AntiAliasingMethod to 0. To decrease the water mesh density, set r.Water.WaterMesh.LODCountBias, r.Water.WaterMesh.TessFactorBias or r.Water.WaterMesh.LODScaleBias to a negative number.
It may also be worth experimenting with r.Water.WaterMesh.PreAllocStagingInstanceMemory which may prevent expensive memory allocations on the fly.
Changing the extents of both the WaterBodyOcean (Ocean Extent) and WaterZone (Zone Extent) may also reduce the performance impact.
That said, I have not been able to replicate the large framerate spikes caused by buffer allocations with the water system as seen in the profiling screenshot. I’m testing with UE 5.5.4. Is it possible to share a minimal repro scene to further investigate these spikes?
Thanks,
Sam