UE4 - Static Mesh LOD memory management

Anyone know if there are any utilities in UE4 to only have one LOD per mesh loaded in memory at a time. We have a large amount of high ploy meshes and we’re looking to cull the memory footprint.

LOD streaming sounded like what we’re looking for but after tinkering we’re unable to figure out what LOD streaming is exactly or how it works.

Tracking memory during run-time shows that the amount of static mesh memory does not change while you can see the static mesh switching between LODs. We are hoping to stream LODs from disk and only have one LOD in memory per mesh.

To my knowledge no, unless you swap to a new asset (env proxy) at a distance. Dealing with the memory and asset streaming consequences of this is one of the bigger challenges working with the engine.

That said, UE4 is hardly alone here and for a very good reason. Streaming (many) LODs from disc based HDD is not at all practical. Performance would be severely impacted by the additional needle travel necessary to read individual LODs.

So instead a given asset’s LODs are generally loaded together, meaning us Tech Art and Art teams must take extra special care to keep total asset costs to a minimum. This can lead to some pretty wild cost cutting solutions, but as a starting point I’d recommend reassessing exactly how many LODs are truly necessary for the GPU to maintain good performance.

This challenge, along with with the need to duplicate data on disc to reduce seek times, is a big reason why an all SSD future is soo important for the industry. Most developers (and engines) will not have the luxury of dropping disc HDD support for a while though.