This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035
[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
- The MeshDescription for each source model LOD is now wrapped in a UStaticMeshDescription, meaning that it can be transacted separately to the parent static mesh. This improves memory and time performance in static mesh transactions, e.g. when assigning materials.
- FStaticMeshSourceModel now has its own API for managing the mesh description and its bulk data.
- A new optional Hi-res SourceModel member has been added to StaticMesh; this allows the original source data to be stored here, while a reduced LOD0 can be stored as SourceModel LOD0, to allow geometry modelling tools to work efficiently.
- MeshDescription is now serialized using a proxy archive object which ensures that FNames can always be archived as strings.
- UStaticMeshDescription is now serialized.
- UStaticMeshDescription has been reverted to only holding its own mesh description, instead of being able to reference any external mesh description. This previous change was never released.
- RawMesh is now immediately converted to MeshDescription in PostLoad, so that the MeshDescription[BulkData] pointers are always valid, and can be tag serialised automatically during transactions. RawMesh should now not be used in the editor at all, and will soon be deprecated.
This change results in far quicker and memory-efficient transactions in StaticMeshes. e.g. assign material to a static mesh section for a 20000 vertex mesh now takes less than a second (discounting time to rebuild the render proxy) instead of 7+ seconds.
#rb Alexis.Matte, Danny.Couture
[CL 15248935 by Richard TalbotWatkin in ue5-main branch]
Add check similar to pthread_rw on Mac/Linux to make sure Windows FRWLock is not held when destroyed
Fix the one place that we were actually copying a RWLock
Introduce a new TDontCopy wrapper that can be used to make a class member an exclusive entity of that class. (Contributed by Steve.Robb)
#rnx
#rb Steve.Robb
[CL 14675525 by danny couture in ue5-main branch]
Also add protection so meshdescription can be read from multiple threads in editor
- Loading Reverb's P_World with empty DDC
- 319GB to 242GB peak private byte
- 166GB to 80GB permanent memory usage after map load
#rb Richard.Talbot-Watkins, Matt.Peters, Paul.Chipchase
[CL 14544739 by danny couture in ue5-main branch]