Added an recursive actor class filter to specify which type of actors should be loaded. This try to reduce the amount of loading required by loading only the levels or external actos that have an dependency to the specified actor types.
Changed the gabage collection strategy to one that is less agressive. it will behave like the cook and use the same setting to decide when it should be run.
Configure the asset registry config so that it is used properly and it now start loading in async manner early during the boot sequence of the commandlet.
#rb Benoit.Deschenes
[CL 29530756 by julien stjean in ue5-main branch]
#rb jonathan.bard
#rb jian.ru
#jira UE-199029
* Allows for material expressions to indicate they can sample from multiple textures
* Material landscape expressions can now sample from texture arrays if enabled (disabled for now)
* Added WeightMapArray place holder texture
#virtualized
[CL 29499700 by don boogert in ue5-main branch]
- Added BasePlugin.ini (plugin .ini files now use that instead of Base.ini) so that plugin .ini's are fully saved, but a plugin can override it in the plugin's Default .ini file
#rb Brian.White
[CL 29486326 by josh adams in ue5-main branch]
- Added r.ParallelGatherDynamicMeshElements to control whether the feature is enabled. When disabled, tasks are constrained to the render thread as before.
- Added r.Visibility.DynamicMeshElements.NumTasks and r.Shadow.DynamicMeshElements.NumTasks which both default to 4. Thread contention becomes an issue at higher task counts for proxies which do a lot of uniform buffer or resource creation / updates.
Implementation Details:
The scene view visibility path typically has many dynamic elements per view, whereas there are typically more shadow views processing fewer elements each.
The main visibility path pushes dynamic primitives into a queue which is then processed by N async tasks, each with its own mesh collector and global vertex / index buffer. If a scene proxy is marked as not supporting parallel GDME, it is processed instead on the render thread in parallel with other async tasks. Niagara is currently the only proxy which is marked as unsupported by parallel GDME, as it has many potential sync points that would need to be untangled. When the async tasks complete, the task contexts are merged back to the view in an async task prior to launching dynamic mesh passes. Another important detail is that all material and GPU scene ops are deferred by the mesh collector and finalized at the end on the render thread. Deferring materials is necessary to allow the VT update task to overlap with GDME. The GPU scene updates are not thread safe and must be deferred.
The shadow path instead creates a queue of FProjectedShadowInfo's which is processed in parallel by async gather tasks (each with its own collector context). If a particular shadow has proxies that do not support parallel GDME, then a second pass is done over that FProjectedShadowInfo on the render thread to process the render thread only proxies. The dynamic mesh passes are launched asynchronously as well and are waited on by the shadow depth rendering passes later in the frame.
#rb krzysztof.narkowicz, christopher.waters
[CL 29289633 by zach bethel in ue5-main branch]
OpenGL ES and Metal use framebuffer fetch.
Vulkan uses dual source blending.
For Vulkan and OpenGL ES there is a fallback shader permutation for drivers that don't support this. The fallback is the same as the existing solution that uses regular blending (i.e. looks different).
Others uses dual source blending and we force use of DXC for those shaders.
#rb Dmitriy.Dyomin, Florin.Pascu
[CL 29245271 by florian penzkofer in ue5-main branch]
* Server will now immediately force disconnect a client when it detects a protocol mismatch for critical classes
#rb Mattias.Hornlund
#rnx
[CL 29086295 by louisphilippe seguin in ue5-main branch]
[FYI] kendall.tucker
Original CL Desc
-----------------------------------------------------------------
Added the following to ConsoleVariables.ini:
r.Nanite.AllowTessellation=1
r.Nanite.Tessellation=1
[CL 28892555 by kendall tucker in ue5-main branch]
This functionality is now well covered by Lumen reflections which are the supported path going forward.
#jira UE-198247
#rb Aleksander.Netzel,Yuriy.ODonnell
[CL 28866153 by chris kulla in ue5-main branch]
General
Add support for returning tokenized messages from validation.
Unify validation reporting for different validation entry points - in particular, source control window context menu.
Move EDataValidationUsecase to CoreUObject for use by UObject::IsDataValid.
UEditorValidatorSubsystem
Add support for validating changelists. Use of this interface allows building lists of unmodified assets to re-validate based on the changes that were made.
Allow subclassing, with functions GatherAssetsToValidateFromChangelist and ShouldValidateAsset to modify behavior of validation.
Add optional to load assets for validation to validation parameters.
Capture logs during asset loads to report as errors (optional in validation parameters).
Allow limit to number of assets to validate in validation parameters, report limit reached.
Add message log page to validation parameters.
Add validation parameter to validate referencers of deleted assets in changelists for validation
UEditorValidatorBase
Centralize dispatch to BP/Native validation in non-virtual ValidateLoadedAsset function.
Add native interface functions to UEditorValidatorBase that take FDataValidationContext.
Rename BP interface functions to have K2 prefix and different signature to native functions.
FDataValidationContext
Add validation usecase.
Add 'associated assets' to allow associating external actors with maps for validators.
UDataValidationChangelist
Support changelists based on changelist objects, file states, and simple lists of files.
Group modifications into packages/non-assets and modified/deleted ahead of time for validators to inspect.
#rb dominic.couture
[CL 28824042 by robert millar in ue5-main branch]
[FYI] robert.millar
Original CL Desc
-----------------------------------------------------------------
Adding redirect for ControlRig refactor to BaseControlRig.
#rb none
[CL 28812025 by robert millar in ue5-main branch]