Motivations of this change:
1) Temporal upscale by default in game builds even when dynamic resolution is not supported;
2) Fixes "Editor Preferences > Performance > Viewport Resolution > Override game screen percentage settings with editor settings in PIE" or (r.Editor.Viewport.OverridePIEScreenPercentage) that used to override r.ScreenPercentage in PIE by default to prevent accidental out of video memory when going PIE on high resolution/DPI display that was not discoverable enought user and generating misunderstanding;
3) Makes editor UI more understandable that the resolution controls under Settings > Engine Scalability Settings is actually PIE resolution settings, since the editor viewport screen percentage is controled independently in editor viewport top left menus;
4) Fixes inconsistency where VR and mobile renderer viewport didn't have their own settings like path tracer or non-realtime editor viewports had;
5) Adds resolution quality presets: just a slider for the 3D rendering resolution is very subjective to a player what to choose, whereas presets allows to more intuitively suggests trade off on the screen percentage range.
What this changes does to the end user:
1) Implements default screen percentage project settings in Project Preferences > Rendering > Default Screen Percentage (or r.ScreenPercentage.Default.*) for each indivual uses case that are: desktop renderer, mobile renderer, VR rendering, path tracer
1.1) Desktop renderer renderer default to screen percentage based on display resolution to automatically temporally upscale;
1.2) All other rendering methods (mobile render, VR renderer, path tracer) defaults to native resolution rendering as before.
2) Adds editor viewport screen percentage settings for mobile renderer and VR in Project Settings > Editor Performance > Viewport Resolution
3) Changes defaults of sg.ResolutionQuality and r.ScreenPercentage to 0 and fallbacks to project settings' default screen percentage
4) Rewrite Level Editor UI > Settings > Engine Scalability Settings to:
4.1) Says it only apply to PIE viewport, not including Simulate in Editor since these is still viewed with editor viewports, and warn when there is no PIE game viewports;
4.2) Explicitly says what is the current screen percentage of the PIE game viewport;
4.3) Explicitly says what is the current rendering and display resolutions;
4.4) Says what rendering mode is being applied (Desktop renderer, mobile renderer, VR rendering, path tracer)
4.5) Says where the settings come from, r.ScreenPercentage was directly set by console code, or whether the Engine Scalability was overident (sg.ResolutionQuality>0) or where the default settings come from (project's default screen percentage settings or editor viewport preferences)
4.6) Says the actually setting is being used (Manual, Based on Display Resolution, Based on OS DPI Scale)
4.7) Explicitly says which anti-aliasing method is being used on the anti-aliasing scalability group
5) The "Editor Preferences > Performance > Viewport resolution > Override project's default screen percentage settings with editor viewports' settings in PIE" (r.Editor.Viewport.OverridePIEScreenPercentage) now chooses whether the default screen percentage project settings should be overriden by the editor viewport's default settings. sg.ResolutionQuality and r.ScreenPercentage now behaving as a override, it means they are also applied in PIE to avoid user confusions when they do indeed what to take control of it in the project settings or game logic.
6) Adds resolution quality presets in BaseScalability.ini that can be customised in a project's DefaultScalability.ini:
6.1) Default 3D resolution preset: Sets sg.ResolutionQuality=0 to end up using the default project settings presets which for the case of the desktop renderer means temporal upscaling by default based on the display resolution like Fortnite's Recommended settings.
6.2) Performance 3D resolution preset: Sets sg.ResolutionQuality=100*1080/2160
6.3) Balanced 3D resolution preset: Sets sg.ResolutionQuality=100*1260/2160
6.4) Quality 3D resolution preset: Sets sg.ResolutionQuality=100*1440/2160
6.5) Native 3D resolution preset: Sets sg.ResolutionQuality=100
#rb rob.srinivasiah, jack.porter, juan.canada, allan.bentham
#jira UE-184651
[CL 25988162 by guillaume abadie in ue5-main branch]
Implement new function for switching view mode and visualize buffer before taking screenshots;
Screenshot individual buffers instead of using lighting on screenshot tests;
Fix import tests using whatever render context to import was serialized into the config for the import tests;
Disable geometry cache notification on other geometry cache tests;
Increase tolerance on test_pie_streaming_level to give more time for levels to stream in and out before checking for loaded actors;
#jira UE-138139
#rb Anousack.Kitisa, Jerome.Delattre
#preflight 620a448cd332bab853185b48
[CL 18977675 by daniel coelho in ue5-main branch]
1) Editor viewports now display at high DPI by default for better Gen5-console feeling in editor on high DPI monitors.
2) Realtime editor viewports now display at screen percentage based on the display pixel count. Fix screen percentage independent of the pixel range could either render not enough pixel at low display resolution or be too slow at high display resolution. Given the level editor viewport can scale in size based on editor user layout preference, monitor, the screen percentage automatically scalling based on display pixel count gives a better experience of quality consistency/GPU cost for rendering frame, especially when going level editor fullscreen with F11 or not. The curve to compute rendering resolution from display resolution is in BaseEngine.ini
3) Non-realtime editor viewports still display at a screen percentage based on OS DPI scale, independent of the display pixel count because use spatial upscaler and therefore need consistent sharpness not worst than editor fonts, but keep same rendering resolution as before to not increase out of GPU memory errors. The performance of potentially rendering at high resolution than a realtime viewport is ignored given the non real-time viewports are not rendering every frame.
4) PIE viewports now override r.ScreenPercentage by default to have consistent resolution quality and performance between realtime editor viewport and gameplay viewport by default without risk of introducing out of GPU memory errors loosing possibly unsaved editor work if the game's graphic settings default to a screen percentage higher. To advertise discoverability of this change, any update to the r.ScreenPercentage cvar will lead to a message display in console/log if overriden by editor settings or dynamic resolution settings.
5) As much as a project can change the default anti-aliasing method, can also configure on a per project basis the default screen percentage behavior in project preference that the editor user can then override locally for his/her own use with his editor settings. For instance mobile only or forward renderer MSAA only video games.
6) When working very high end work-in progress rendering tech project in a econemic context where lattest GPUs are hard to get, the range of GPU performance can vary greatly between contributor of the same projects. To provide more robustness for lowerend GPU of collegues with tech not yet scaling, the project settings now offer a MaxRenderingResolution for editor viewports that can also be overriden on a per user basis.
7) Automated screenshot already takes care of forcing r.ScreenPercentage.
#rb none
#preflight 61e58d4a873f2ea48f33facd
#ROBOMERGE-AUTHOR: guillaume.abadie
#ROBOMERGE-SOURCE: CL 18633512 in //UE5/Release-5.0/... via CL 18633532 via CL 18633538
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)
[CL 18637384 by guillaume abadie in ue5-main branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
Now only r.AntiAliasingMethod prevails to selects the anti-aliasing method explicitly for the deferred shading renderer. Each AA technic have it's own cvars to control their quality independently
FXAA now have its own r.FXAA.Quality. The FXAA shader permutations where mis configured with r.PostProcessAAQuality=1 & 2 both mapping to the FXAA_PC_CONSOLE=1 that is now r.FXAA.Quality=0. Instead r.FXAA.Quality now offer more mid-quality settings for FXAA_PC=1 with r.FXAA.Quality=1 & 2 & 3. Backward comaptible migration is as followed:
- r.AntiAliasingMethod=1 r.PostProcessAAQuality=0 -> r.FXAA.Quality=0
- r.AntiAliasingMethod=1 r.PostProcessAAQuality=1 -> r.FXAA.Quality=0
- r.AntiAliasingMethod=1 r.PostProcessAAQuality=2 -> r.FXAA.Quality=0
- r.AntiAliasingMethod=1 r.PostProcessAAQuality=3 -> r.FXAA.Quality=3 but with some neighborhood search setting changed in FXAAShader.usf
- r.AntiAliasingMethod=1 r.PostProcessAAQuality=4 -> r.FXAA.Quality=4
- r.AntiAliasingMethod=1 r.PostProcessAAQuality=5 -> r.FXAA.Quality=5
TAA now have its own r.TemporalAA.Quality. Backward compatible migration is as followed:
- r.AntiAliasingMethod=2 r.PostProcessAAQuality=0 -> r.AntiAliasingMethod=0
- r.AntiAliasingMethod=2 r.PostProcessAAQuality=1 -> r.AntiAliasingMethod=1 r.FXAA.Quality=0
- r.AntiAliasingMethod=2 r.PostProcessAAQuality=2 -> r.AntiAliasingMethod=1 r.FXAA.Quality=0
- r.AntiAliasingMethod=2 r.PostProcessAAQuality=3 r.TemporalAAUpsampleFiltered=0 -> r.TemporalAA.Quality=0
- r.AntiAliasingMethod=2 r.PostProcessAAQuality=3 r.TemporalAAUpsampleFiltered=1 -> r.TemporalAA.Quality=1
- r.AntiAliasingMethod=2 r.PostProcessAAQuality=4 -> r.TemporalAA.Quality=2
MSAA r.AntiAliasingMethod=3 & TSR r.AntiAliasingMethod=4 remains unchanged.
sg.AntiAliasingQuality now maps to different r.TemporalAA.Quality or r.FXAA.Quality
Automated tests on base CL: https://horde.devtools.epicgames.com/job/60d5b8410123b700014f9db5
Automated tests on change CL: https://horde.devtools.epicgames.com/job/60d47cde57b302000114bebf
#rb none
[FYI] jack.porter, wei.liu
#lockdown michal.valient
#ROBOMERGE-SOURCE: CL 16823623 via CL 16823646
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16823657 by guillaume abadie in ue5-release-engine-test branch]
Added a high level define (WITH_AUTOMATION_TESTS) that is set when thier WITH_DEV_AUTOMATION_TESTS or WITH_PERF_AUTOMATION_TESTS is set).
This allows support code to be wrapped in a single define and the WITH_DEV / WITH_PERF macros used for simply including/excluding test definitions.
#jira UE-89839
#rb na
#tests compiled UE4Game in dev/test/shipping
#ROBOMERGE-SOURCE: CL 11843115 in //UE4/Release-4.25/... via CL 11843116
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 11843119 by andrew grant in Main branch]
#rnx
#rb none
#ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870584 by ryan durand in Main branch]
Automation - Adding more options for forcing and waiting for loading and streaming to finish and more utilities for waiting for that to happen entirely for tests.
Lauren.Ridge
#ROBOMERGE-OWNER: lina.halper
#ROBOMERGE-AUTHOR: nick.darnell
#ROBOMERGE-SOURCE: CL 5382989 via CL 5383481 via CL 5383540
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim)
[CL 5385045 by nick darnell in Dev-Anim branch]
Automation - Adding more options for forcing and waiting for loading and streaming to finish and more utilities for waiting for that to happen entirely for tests.
Lauren.Ridge
#ROBOMERGE-SOURCE: CL 5382989 via CL 5383481
[CL 5383540 by nick darnell in Main branch]
#lockdown Nick.Penwarden
#rb JeanMichel.Dignard
============================
MAJOR FEATURES & CHANGES
============================
Change 3770717 by Simon.Tourangeau
Fix Blank Enterprise template project creation
Change 3773186 by Simon.Tourangeau
Fix asset migration to correctly handle the migration of content from Content Plugins
Change 3773230 by JeanLuc.Corenthin
Adding new material asset for CAD importer
Removing old material assets for CAD importer
Change 3774391 by JeanMichel.Dignard
Added support for IES asymmetrical light profile
- IES textures are now 2D (256*256) and the shader will use the light tangent to sample the texture.
- Point light tangent is now the Z axis to match the spot lights. Tube shaped point lights will be automatically rotated to compensate for this change. Dynamically generated point lights with a source length will need to have a 90 degrees pitch added to their orientation.
#jira UEENT-55
Change 3775668 by JeanMichel.Dignard
Fixed linux and mac editor builds. Use FVector::DotProduct instead of Dot3 since we're using FVectors.
Change 3781147 by Jamie.Dale
[Python] Prevent the Xcode version of Python being used by default
Change 3781991 by JeanMichel.Dignard
Send the IES texture profile to lightmass in a separate TArray to fix warning 6262 about using too much stack during static analysis.
Change 3783479 by Simon.Tourangeau
Fix NewProjectWizard crash if starter content was enabled
#jira UEENT-635
Change 3784279 by Jamie.Dale
[Python] Added ScopedEditorTransaction and an editor specific module
Change 3787566 by JeanLuc.Corenthin
Fixed issue with display of units which were not reflecting the project settings when enbling unit display.
Got Jamie Dale to help me find the correct solution to this problem: a lambda function.
Thanks, Jamie!
Change 3788178 by Martin.Sevigny
Make sure that FLightPropagationVolume is properly initialized before using it. Can currently trigger a check in FProjectedShadowInfo::SetupWholeSceneProjection because of an uninitialized BoundingBox if LPVIntensity is saved at 0.
Solves: https://udn.unrealengine.com/questions/354040/switching-gi-lpvs-at-runtime.html
Change 3788301 by JeanLuc.Corenthin
On behalf of Anousack:
UE assets necessary to properly handle Cropped procedural textures.
#jira UEENT-522
Change 3789146 by Martin.Sevigny
Bringing back the LPVIntensity test as per MarcusW review.
Change 3789467 by Patrick.Boutot
Add Analytics to PythonScriptPlugin.
Change 3789473 by Patrick.Boutot
Add a slow task dialog when executing a Python script.
Change 3790809 by Patrick.Boutot
Add GIsRunningUnattendedScript. If true, we are running an editor script that should not prompt any dialog modal. The default value of any model will be used. This is used when running a Blutility or script like Python and we don't want an OK dialog to pop while the script is running. Could be set for commandlet with -RUNNINGUNATTENDEDSCRIPT
Change 3790970 by Patrick.Boutot
Add SavePackages with Dialog version in EditorLoadingAndSavingUtils. Refactor some internal save & checkout function in FileHelpers to prevent dialogs from showing when it was not requested.
Change 3790976 by Patrick.Boutot
Add RenameAssetsWithDialog to AssetTools. All previous implementation now use the WithDialog version.
Allow DeleteObject & DuplicatedAsset to be completed without dialog.
Change 3791597 by Simon.Tourangeau
Fix custom window positions in "windowed mode"
#jira UE-52873
Change 3791633 by Patrick.Boutot
Expose to Blueprint the actor' label and folder path.
Change 3791634 by Patrick.Boutot
Change size of the OutputLog's SuggestionList box.
Change 3791637 by Patrick.Boutot
Make sure the suggestions panel is closed before executing the command. Some command wants to run dialog and the suggestions panel may prevent it from opening.
Change 3791661 by Jamie.Dale
[Python] Fixed a bug where we could return an object of the incorrect type from the cache
This could happen if the same instance pointer actually represented two different things, such as when a struct had a different struct as its first member as both of those have the same address, but reflect two different things.
We now treat the type as significant in the cache, and only return something if it matches both the instance and the type.
#jira UEENT-651
Change 3794968 by Patrick.Boutot
Extend File menu to include Python menu. Save the last 10 scripts executed in the user config.
Change 3795084 by Jamie.Dale
[Python] Added a way to purge all references to a given UObject (or set of UObjects) from any living Python objects
Change 3795324 by Jamie.Dale
[Python] Ensure that Python objects referencing the current world/level are purged when the active world/level is changed
This is needed to avoid a fatal assert about a GC leak
#jira UEENT-658
Change 3796248 by Jamie.Dale
FilterAssetDataWithNoTags no longer implicitly removes localized assets
Change 3773185 by Simon.Tourangeau
Move DatasmithImporter plugin content to a content-only plugin under Engine/Plugins/Enterprise/DatasmithContent
This makes it possible to load content created with the DatasmithImporter without having access to Enterprise plugins.
#jira UEENT-544
Change 3790982 by Patrick.Boutot
Set GIsRunningUnattendedScript to EditorScriptUtilities callable functions.
Load level without a prompt.
Change 3791539 by Jamie.Dale
[Python] Added ScriptName and ScriptNoExport meta-data to allow control over how things are exposed to scripts
ScriptName can be used to override the basic name we use when converting classes, structs, enums, properties, and functions to their Python names. It has been used here to remove all the K2_ and BP_ prefixes, and to remove Kismet and Blueprint from some library names.
ScriptNoExport can be used to prevent a property or function from exporting to Python. It has been used here to prevent exporting some deprecated functions that had names that would conflict if we stripped off the K2_ prefix of some newer functions (there were only a handful of these cases).
Change 3773163 by Patrick.Boutot
Improve ConvertActors implementation. Check if the StaticMesh path is valid and do not use dialog in the case we are converting a Brush to a StaticMesh.
Change 3776401 by Patrick.Boutot
Add function to spawn and destroy an actor in editor mode. Spawn use the Place functionality of the editor, you can spawn from an asset, class, archetype or factory.
Change 3778137 by Patrick.Boutot
Add 2 functions to EditorAssetLibrary. GetPathNameForLoadedAsset, wrapper for UObject.GetPathName(). FindPackageReferencersForAsset similar to AssetRegistry.FindPackageReferencer. It will load the assets and all the referencers to confirm the reference.
EditorAssetLibrary now support full path.
Change 3778139 by Patrick.Boutot
Update example data for EditorScriptingUtilities.
Change 3778768 by Patrick.Boutot
Update EditorScriptingUtilities py file with the new naming convention.
Change 3779291 by Patrick.Boutot
Remove const& on TSubLassOf because Blueprint do not show the Pick tool with it.
Update py script & blueprint to point to the new paths.
Change 3783246 by Patrick.Boutot
After review. Tech art prefer to have a filter that check the class and not have the class pass as argument for GetAllLevelActor.
Fix return type in Blueprint for SpawnActorFromClass.
Change 3789367 by Patrick.Boutot
Gets all TagValues associated with an asset as strings value.
Change 3789438 by Patrick.Boutot
Split EditorLevelLibrary into EditorFilterLibrary. All filter function are now in their own modules.
Change 3789489 by Patrick.Boutot
Update script examples with copyright and with the split from EditorFilterLibrary.
Change 3790980 by Patrick.Boutot
Prevent all dialog modal from showing up when running a Python script via command line.
Change 3790984 by Patrick.Boutot
Fix typo in content_browser.py. Delete asset with the loaded version. Fix double values initialized by float.
[CL 3797855 by Simon Tourangeau in Main branch]