- Add protection against async property accessed during async build and postload.
- Split PostLoad into 3 steps with the most part now being made async.
- Make Build/BatchBuild API async when the feature is activated.
- Add a new StaticMesh compilation manager. (This will be refactory later to reduce duplicated code with texture compiler).
- Skip RenderState creation for any static mesh component still being built so they only show up when ready.
- Fixed DistanceField and MeshCard computation that might trigger too soon if fixups are required to RenderData during PostLoad.
- Dynamic priorisation for building and updating static meshes nearest to the viewport.
- Implement different PIE modes, current default is to stall only for mesh that might affect nagivation/collision for players/bots.
- Add a new generic interface for assets being built (still a WIP).
- Add ability in FrontEnd filters to skip serialization of asset being async compiled and refresh when compilation finishes.
- Prevent auto-save while textures and static meshes are being built (same as shaders)
- Logic has been reordered in some Fortnite Building Component to avoid unnecessarily touching static mesh properties.
General Optimizations
- Use cached thumbnails until shaders/textures/static meshes are ready to improve performance and avoid rendering incomplete thumbnails.
DEBUGGING
- Can be forcibly enabled/disabled through command-line via -asyncstaticmeshcompilation=[off, on, paused]
- Can pause staticmesh compilation using Editor.AsyncStaticMeshCompilation = 2 or -asyncstaticmeshcompilation=paused
- Can manually resume a specified amount of paused compilation using Editor.AsyncStaticMeshCompilationResume [Num]
- Can forcibly wait on all compilation using Editor.AsyncStaticMeshCompilationFlushAll
BENCHMARKS
- 2m19s to 17.9s for Loading FortGPUTestbed's LumenTest with an empty local only DDC
- 2h45m to 5mxxs for Loading Reverb's P_World with an empty local only DDC
- 17m29 to 10m27s for Loading Apollo_Terrain_Edit with an empty local only DDC
TESTS
- Loading maps from Reverb, Fortnite, ShooterGame, QAGame, FortGPUTestbed
- Content browser interactions while still under heavy compilation
- Importing with Datasmith / Dataprep
- Working with the new Mesh Modeling Tool
- Shutting down the editor while loading
- Most of EngineTest Test Suite
REFERENCES
- Design https://docs.google.com/document/d/1O4GI1G9AtQN6l0SaGFfXw0DyNhlLunLoEqne5INvxIQ
- Documentation https://docs.google.com/document/d/1KCdFEMhhcsGwfgOisTVwlOwtsmEd7qbB0V6Tc39Gb10
#rb Francis.Hurteau
[CL 14688146 by danny couture in ue5-main branch]
Addition of ANavigationDataChunkActor, external actors used to hold navdata chunks
Addition of UWorldPartitionBuildNavigationDataCommandlet, commandlet to generate world partition navigation data
At the moment steps to generate a partitioned world with navmesh per cell are:
1) convert world to WP (WorldPartitionConvertCommandlet)
2) generate navigation data chunk actors (WorldPartitionBuildNavigationDataCommandlet)
3) pre cook (WorldPartitionPreCookCommandlet)
4) cook
#review @Yoan.StAmant
#rb Yoan.StAmant
[CL 14396364 by Aris Theophanidis in ue5-main branch]
Lightweight instances allow a low memory representation of objects. Instances can be converted into full actors when necessary. Actors can also be reduced down to light weight instances when the full representation is no longer needed.
Hit results now return a handle that may refer to either an actor or lightweight instance.
#rb Michael.Noland
[CL 14369221 by Fred Kimberley in ue5-main branch]
[REVIEW] [at]maxime.mercier, [at]mikko.mononen
#rnx
#ROBOMERGE-SOURCE: CL 13114611 via CL 13114615 via CL 13114624 via CL 13114631
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v686-13045012)
[CL 13114637 by guillaume guay in Main branch]