Commit Graph

1002 Commits

Author SHA1 Message Date
Arne Schober
9712441191 UE5 - This is the first step of an upcomming TaskGraph refactoring. New Frontends will be comming at a later time. The goal of this Step is to have a common Backend and prove its performance as well as stability. We have proven that the Taskpool and the TaskGraph can run on the same Backend. The Performance has been tested in Fortnite and is comparable on Android as well as PS4. We have completed all the Engine Test sucessfully, tested the Texture and Shader-compilation as well as cooking pipeline extensively and have run Reverb and Frosty. The Backend is disabled by default and can be enabled with -TaskGraphForceNewBackend Commandline option
[CL 14823215 by Arne Schober in ue5-main branch]
2020-11-30 16:27:34 -04:00
Matt Peters
be1c7b2bdc IPackageResourceManager: Fix crashes in !WITH_ENGINE programs: startup and shutdown need to be called outside of WITH_ENGINE blocks.
#rnx
#rb Catalin.Dragoiu

[CL 14815833 by Matt Peters in ue5-main branch]
2020-11-26 09:46:13 -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
Marc Audy
a7f9391231 Merge UE5/Release-Engine-Staging @ 14811410 to UE5/Main
This represents UE4/Main @ 14768117

For ReleaseObjectVersion.h
#lockdown Marcus.Wassmer

[CL 14811440 by Marc Audy in ue5-main branch]
2020-11-24 18:42:39 -04:00
Andriy Tylychko
2a3b4a94cb fixed stoping audio thread on exit: as AudioDeviceManager is released before audio thread stopped, this can lead to (subject of timing) an audio command executing after GAudioDeviceManager was set to nullptr, which causes null reference exception
#rb aaron.mcleran

[CL 14743995 by Andriy Tylychko in ue5-main branch]
2020-11-13 08:27:31 -04:00
danny couture
1c2d4922c7 Remove time limitation for MeshCards and DistanceFields since they are now extremely fast to update due to the recent removal of the FlushRenderingCommmands requirement
- Will help to converge a lot faster when thousands of small mesh are part of a scene
  - Will also reduce distance field atlas fragmentation due to improved batch ordering

#rb Francis.Hurteau

[CL 14734205 by danny couture in ue5-main branch]
2020-11-12 11:29:53 -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
john hable
32f8efc794 Chaning ShaderAutogen to make shader autogen code in FEngineLoop::PreInitPreStartupScreen, instead of when first shader is compiled.
#rb arciel.rekman
#jira ue-101762

[CL 14666446 by john hable in ue5-main branch]
2020-11-05 13:18:41 -04:00
danny couture
b14a910b92 Async Texture Compilation Improvements
- Update primitive component's relying on a texture to avoid GPU cached values to become stale (i.e. Lumen, Virtual Textures).
   - Reduce flickering during texture update by removing virtual texture flush as it is not required anymore with the previous fix.
   - Prioritize on screen textures even for nanite mesh and virtual textures by looking at "last seen" primitive component material's usage.
   - Force heighmap texture to be ready for PIE and -game to avoid falling through the landscape.

General Optimizations
   - Eliminated FlushRenderingCommands from both MeshCards/DistanceFields update to reduce heavy stuttering.
   - Reuse expensive ObjectIterator scans between MeshCards/DistanceFields/Shaders/Textures/StaticMesh during the same tick.

#rb Francis.Hurteau

[CL 14649969 by danny couture in ue5-main branch]
2020-11-03 22:22:30 -04:00
danny couture
1e415c4b85 Fix missing trace system shutdown when compiled without the engine causing missed event at end of application.
#rb Martin.Ridgers

[CL 14643787 by danny couture in ue5-main branch]
2020-11-03 13:28:13 -04:00
danny couture
3bdb7415f2 Reduce LargeThreadPool priority to be below TaskGraph's High Priority to improve general responsiveness under high load
#rb Francis.Hurteau

[CL 14641767 by danny couture in ue5-main branch]
2020-11-03 10:38:42 -04:00
Jason Bestimt
20c77883a2 Tagging main thread as game thread on Android (similar to CL 14378525 for HL2)
#JIRA: UE-99920
#CodeReview: jules.blok, arne.schober

[CL 14630758 by Jason Bestimt in ue5-main branch]
2020-11-02 14:37:51 -04:00
Marc Audy
68150e0be7 Merge UE5/Release-Engine-Staging to UE5/Main @ 14611496
This represents UE4/Main @ 14594913

[CL 14612291 by Marc Audy in ue5-main branch]
2020-10-29 13:38:15 -04:00
john hable
01ede939c4 Fixing issue with creating directory when WITH_EDITOR is disabled.
#rb arciel.rekman

[CL 14571854 by john hable in ue5-main branch]
2020-10-26 00:48:44 -04:00
john hable
e77e89694e Fixing build issue with missing intermediary directory.
#rb arciel.rekman

[CL 14565474 by john hable in ue5-main branch]
2020-10-23 19:17:04 -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
john hable
5f3ff39aed First major checkin for flexible GBuffer.
#rb kevin.ortegren, arciel.rekman

[CL 14547614 by john hable in ue5-main branch]
2020-10-22 14:41:45 -04:00
Matt Kuhlenschmidt
af7c60fb82 Consolidated toolbox, gammaui, and module ui into a single debug tools plugin. The goal of the plugin is to house editor debug UIs going forward.
[CL 14517095 by Matt Kuhlenschmidt in ue5-main branch]
2020-10-19 15:21:41 -04:00
Marc Audy
50a3d7d368 Merge Release-Engine-Staging to Main @ CL# 14467590
This represents UE4/Main @ 14432125 + some cherrypick fixes

[CL 14468207 by Marc Audy in ue5-main branch]
2020-10-09 22:42:26 -04:00
danny couture
6e8494009d DistanceField and MeshCards async queues are now reusing existing threadpool instead of spawning their own
DistanceField and MeshCards are not limited anymore to a single thread and can scale to the number of physical cores available
DistanceField and MeshCards are now both limiting their tick time length to avoid huge game-thread stalls when lots of assets are being built
Fix potential race-condition in DistanceFieldAsyncQueue found while fixing MeshCardAsyncQueue

#rb Alexis.Matte

[CL 14420000 by danny couture in ue5-main branch]
2020-10-05 08:22:37 -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
Jason Bestimt
a648720a73 Fixes to get HoloLens working on device
#RB: arne.schober
#FYI: steve.smith, juliet.talcott

[CL 14378525 by Jason Bestimt in ue5-main branch]
2020-09-23 13:37:25 -04:00
jaco vandyk
f82c61dc69 Fix LaunchCorrectEditorExecutable when using Unique BuildEnvironment.
#rb: Ben.Marsh

#ushell-cherrypick of 14078689 by Martin.Sevigny

#ROBOMERGE-SOURCE: CL 14319460 in //UE5/Release-5.0-M2/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-M2 -> Main) (v738-14305781)

[CL 14319468 by jaco vandyk in ue5-main branch]
2020-09-15 11:15:52 -04:00
Ben Marsh
03675533ea Rename UE4Game -> UnrealGame, UE4Client -> UnrealClient, UE4Server -> UnrealServer.
Mostly a find/replace, though I have looked through the changes and attempted to update references to other things as necessary (eg. renaming IOS plist files for IOS). I'm not set up to test on any platforms other than windows, and was hoping to get your blessing to submit and give QA enough time as possible to uncover issues before the next milestone release.

Particular things that I know I'm not sure about:
- Android references /UE4Game/ paths everywhere (for paths on device, I think). I have no idea if I've got them all.
- I've renamed the iOS mobileprovisions, but I don't know if they need regenerating for the new app name.
- Likewise, not sure what needs to be updated for icon bundles on iOS.

Things that have not been changed:
- Windows still uses IDI_UE4ICON for its icon
- UE4CommandLine.txt
- There's still a UE4Game module which is used by content-only projects

#rb none

[CL 14301890 by Ben Marsh in ue5-main branch]
2020-09-11 15:54:42 -04:00
Ben Marsh
486408b1a9 Rename UE5Editor to UnrealEditor.
#rb none
#jira UE-97600

[CL 14292067 by Ben Marsh in ue5-main branch]
2020-09-10 15:39:00 -04:00