Commit Graph

282 Commits

Author SHA1 Message Date
paul chipchase
3e95ae2c21 Remove the bulkdata manifest that was generated when cooking.
- The manifest was for a prototype version of the IoStore commandlet and would attempt to record every bulkdata entry during a cook, which would allow us to generate the FioChunkId for each bulkdata entry when building the ucas files.
- Due to changes during development we stopped requiring this data and it was never used in actual production code.
- Since this code was never in use we can just remove it.

* IoStoreUtilities
- No longer attempt to load the manifest
- Removed use of BulkdataTypeToChunkIdType and just use the EIoChunkType directly instead.

#rb CarlMagnus.Nordin
#jira UE-112697
#test Full stage of ShooterGame
#rnx
#preflight 606f039028671300019c806a

[CL 15954210 by paul chipchase in ue5-main branch]
2021-04-08 10:10:34 -04:00
Zousar Shaker
2fcd7f4765 Avoid resolving references where possible during common operations in the blueprint compilation and re-instancing flow. This is to aid in the lazy loading of objects.
#rb Marc.Audy
#preflight 60526ad1d8ad810001128344

[CL 15730832 by Zousar Shaker in ue5-main branch]
2021-03-17 17:38:22 -04:00
Yuriy ODonnell
e70a2129bb Disable several very verbose profiling events by default. Changed DECLARE_CYCLE_STAT_WITH_FLAGS_EXTERN to always include ClearEveryFrame, as that's what all cycle counter stats expect. Removed explicit ClearEveryFrame at use sites.
Disabled profiling events:
- FMaterial::TryGetShaders
- Various D3D12 RHI cycle stats
- CreateClusters GT cycle counter
- Moved FLinkerLoad::Preload event into slow path
- PSOGraphics/ComputeFindOrCreateTime (added explicit profiling events when slow path is taken)

Dramatically reduces trace file sizes, even with quite detailed instrumentation via -statnamedevents.

#rb ionut.matasaru
#preflight 604fdda44f3ff20001294145

[CL 15702820 by Yuriy ODonnell in ue5-main branch]
2021-03-15 19:13:58 -04:00
Matt Peters
6895cee3ee EditorDomainSave - Strip bulk data from EditorDomain copies of packages. BulkData types in the EditorDomain have flags set to load the data from workspace domain version of the file.
#rb Paul.Chipchase
#rnx

[CL 15643329 by Matt Peters in ue5-main branch]
2021-03-08 14:13:00 -04:00
Matt Peters
6b0166c2b5 FUntypedBulkData::Serialize: refactor to ensure that all options for BulkData location (Inline, end of file, various separate files) are supported in all serialization environments.
#rb Paul.Chipchase
#rnx

[CL 15507362 by Matt Peters in ue5-main branch]
2021-02-23 17:21:09 -04:00
Sebastien Lussier
2aed158821 Removed FHashBuilderArchive, added FArchiveCrc32
#rb jeanfrancois.dube, patrick.enfedaque
#robomerge Release-5.0-EarlyAccess

[CL 15474543 by Sebastien Lussier in ue5-main branch]
2021-02-19 15:13:52 -04:00
brooke hubert
890a5c72c2 Implement Lasso Selection tool (brush based selection) in asset placement mode.
# Also exposed the typed element selection set to the queries API in ITF.
# Implemented a stash/pop selection on the typed element selection set for modes to use.

#Jira UE-107091
#rb jamie.dale chris.gagnon ryan.schmidt

#ROBOMERGE-SOURCE: CL 15359303 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15360406 by brooke hubert in ue5-main branch]
2021-02-08 17:13:32 -04:00
JeanFrancois Dube
f958e74863 Don't clear BP references on reinstantiation if the object reference shares an outer with the container, even if they aren't in the same package (in the case of objects with a package override).
#jira UE-104792
#rb patrick.enfedaque

[CL 15237967 by JeanFrancois Dube in ue5-main branch]
2021-01-28 09:49:10 -04:00
Zousar Shaker
e03298fa73 Prototype Wrapped Object Pointers (ObjectHandle/ObjectPtr)
Fix another issue of an FArchive that serializes object references without deriving from FArchiveUObject.  This one affects serialization to/from text assets.  Confirmed I can export an asset containing object references to text format when the fields are of wrapped pointer type.  Comparing the resulting output to a text export of the same asset when the fields are raw pointers show no diffs aside from Guid and Localization which are shown to vary from export-to-export or editor session to editor session.

NOTE: Unlike lazy/soft/weak pointers, I want serialization of wrapped pointers to match serialization of raw pointers, so I don't create a separate indexed array for it in the text output, it goes into the same "Objects" array as raw object pointers.

#rb devin.doucette
#fyi graeme.thornton

[CL 15201151 by Zousar Shaker in ue5-main branch]
2021-01-26 02:45:51 -04:00
Zousar Shaker
2fc47a2cf0 Prototype Wrapped Object Pointers (ObjectHandle/ObjectPtr)
Address the following serialization issues:

1) Ensure ObjectPtr Property can convert from SoftObjectProperty and anything else that Object Property can convert from by removing its ConvertFromType override.
2) Fix serialization of wrapped pointers through archives that don't derive from FArchiveUObject, but still expect to be able to serialize both raw and wrapped object references (FNetBitWriter, FExportArchive, and FObjectAndNameAsStringProxyArchive).
3) Restore assert in base FArchive serialization of wrapped object pointer which I had erroneously made in CL15130804 now that it is clear that it is not safe to be relying on silently not writing/reading a wrapped object pointer (even if that may be the default behavior for a raw pointer).
4) Bump Niagara custom version guid to avoid issues with incorrectly serialized data in DDC.

#jira UE-106943
#rb devin.doucette
#fyi rob.krajcarski

[CL 15178163 by Zousar Shaker in ue5-main branch]
2021-01-25 11:37:56 -04:00
Marc Audy
bc88b73a29 Merge Release-Engine-Staging to Main @ CL# 15151250
Represents UE4/Main @ 15133763

[CL 15158774 by Marc Audy in ue5-main branch]
2021-01-21 16:22:06 -04:00
Per Larsson
68ef26c161 Extract package store interface from I/O store package loader
#rb PJ.Kack, CarlMagnus.Nordin
#jira none

[CL 15146443 by Per Larsson in ue5-main branch]
2021-01-20 14:04:27 -04:00
Matt Peters
aae0fe62eb PackageResourceManager and PackagePaths
Create a new interface IPackageResourceManager that handles all attempts to load packages from storage. The default implementation passes through to loading from IFileManager. Future implementations will load from other services such as the EditorDomain and TargetDomain.
Add FPackagePath class that holds a LocalFilePath or LongPackageName, or a relative path to a package under a mounted content root (which can be converted into either the LocalFilePath or LongPackageName).
Modify LinkerLoad, BulkData, and AsyncLoader to use FPackagePath and IResourceManager.
Modify UPackage and FLinkerLoad to have a FPackagePath instead of a Filename.
#rb Paul.Chipchase, CarlMagnus.Nordin, Francis.Hurteau, Devin.Doucette
#rn Major Core

[CL 14814912 by Matt Peters in ue5-main branch]
2020-11-25 22:11:10 -04:00
paul chipchase
ab3002c705 CIS Fix: Change the ::Unlock method for BulkData2 to be const to match the original API.
- This stops code compiling fine in the editor then breaking when compiled for a different config.

#rb Martin.Ridgers
#fyi ben.ingram
#rnx

[CL 14812609 by paul chipchase in ue5-main branch]
2020-11-25 08:14:11 -04:00
danny couture
c23f6884fe Async Static Mesh Compilation / Loading
- 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]
2020-11-09 07:50:34 -04:00
Marc Audy
4c1bb11c29 Merge UE5/Release-Engine-Staging to UE5/Main @ 14548662
This represents UE4/Main @ 14525125 + cherrypicked fixes
#skipundocheck

[CL 14551026 by Marc Audy in ue5-main branch]
2020-10-22 19:19:16 -04:00
danny couture
0bc26cdebe Reduce memory usage by allowing meshdescription and rawmesh bulkdata to be cleaned up if possible
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]
2020-10-22 10:35:43 -04:00
Zousar Shaker
77d13185b7 Copying //UE5/Dev-Cooker@14539516 to Main (//UE5/Main)
[CL 14539954 by Zousar Shaker in ue5-main branch]
2020-10-21 17:56:05 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Marc Audy
7379fa99c5 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14229157
[CL 14233282 by Marc Audy in ue5-main branch]
2020-09-01 14:07:48 -04:00
Rune Stubbe
0d53893648 Nanite streaming:
-Moved processing to async thread
-Switched to much more efficient batched IO using the new IODispatch API
-Added fallback/legacy path for when IODispatch is disabled or not supported on the platform
-Changed page size back to 128KB (from 256KB) and doubled number of streaming pages
-256MB saving from smaller root pages. 32MB of those used for IO staging buffer
#rb graham.wihlidal
#fyi brian.karis

[CL 14110783 by Rune Stubbe in ue5-main branch]
2020-08-14 02:49:21 -04:00
Marc Audy
a7c9001a94 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14075166
#rb
#rnx

[CL 14075271 by Marc Audy in ue5-main branch]
2020-08-11 01:36:57 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
pj kack
6a096853e0 AsyncLoading2: Replace GlobalImports with PublicExports.
Move RefCount tracking for imports from import object level to package level.
Only track currently loaded public exports, and their packages.
Replace import object weak pointers with public export raw pointers (uobject index).
Add new NotifyUnreachableObjects GC hook to get information about all objects to be destroyed.
When a public export is destroyed, clean up its raw pointer, and mark its package as not loaded.
When a package is destroyed, clean up its ref count tracking data.

#rb per.larsson


#ushell-cherrypick of 13114335 by PJ.Kack

#ROBOMERGE-SOURCE: CL 13147624 via CL 13147625 via CL 13147626 via CL 13147627
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v688-13145358)

[CL 13147628 by pj kack in Main branch]
2020-05-04 09:14:12 -04:00
pj kack
5e49316bc4 AsyncLoading2: Fix incorrect check in ToPackageImport
#jira none
#rb none


#ushell-cherrypick of 12997588 by PJ.Kack

#ROBOMERGE-SOURCE: CL 12997796 in //UE4/Release-4.25Plus/... via CL 12997808
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)

[CL 12997823 by pj kack in Main branch]
2020-04-23 02:54:37 -04:00