The original ENABLE_BLUEPRINT_REAL_NUMBERS macro was strictly meant for AB testing in the Dev-LWC. Currently, disabling it won't work, and would likely lead to broken behavior. Its presence might incorrectly indicate to licensees that this is an option that can be toggled safely.
#rb marc.audy
#jira UE-140327
#preflight 61fc6449dc0b3ecbecb6f381
#lockdown julien.marchand
#ROBOMERGE-AUTHOR: dave.jones2
#ROBOMERGE-SOURCE: CL 18864654 in //UE5/Release-5.0/... via CL 18864683 via CL 18864993
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18865002 by dave jones2 in ue5-main branch]
#rb Rex.Hill
#preflight 61fbfcdee058822bda9ab04b
#ROBOMERGE-AUTHOR: dave.belanger
#ROBOMERGE-SOURCE: CL 18863343 via CL 18863389 via CL 18863403 via CL 18863429 via CL 18863995 via CL 18864392
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18864406 by dave belanger in ue5-main branch]
#rb Per.Larsson
#jira UE-141304
#rnx
#lockdown Mark.Lintott
#preflight 61fd3cccb5092d45ad18c953
- Not all backends gain from pushing payloads in batches. In this case the backend can opt not to override the default implementation which will just iterate over the batch of payloads and then push each one individually.
- However when the default path was used, FPushRequest::Status was not updated after the push was performed, which resulted in each request returning the default (failed) status.
-- The backends that use the default path are not enabled in any of our internal projects so this was not noticed.
- So even though the payloads were pushed, the virtualization process would log and error and block any submit being performed.
-- Subsequent submits of the same packages would work because we would note much earlier that the payloads are already stored in the backend and the broken code path would never run.
- Added fall through comment as required by the coding standards
#ROBOMERGE-AUTHOR: paul.chipchase
#ROBOMERGE-SOURCE: CL 18863318 in //UE5/Release-5.0/... via CL 18863334 via CL 18863548
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18863566 by paul chipchase in ue5-main branch]
Ensure that template flag is propagated in the regular factory use case
#jira UE-140017 Editor crashes when opening Child Blueprint Class
#rb Jurre.deBaare
#lockdown laurent.delayen
#preflight 61fd24f40a43b689e172ddb2
#ROBOMERGE-AUTHOR: thomas.sarkanen
#ROBOMERGE-SOURCE: CL 18863199 in //UE5/Release-5.0/... via CL 18863205 via CL 18863370
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18863374 by thomas sarkanen in ue5-main branch]
If TCHAR happens to change to something other than a 16bit integer (e.g. because wchar_t is four bytes on a platform, or because the engine changes to UTF8), the analysis engine will no longer be able to read traces with char16_t-type strings.
#rb jb
#rnx
#preflight 61fd3091ed26b9fd9c7fcc0e
[CL 18862539 by Martin Ridgers in ue5-main branch]
- Implemented move-constructor/assignment operator. Transport keeps an array threads, each of which of owns a FStreamBuffer instance. When Transport resizes this array, it copies items about. Because there are no move constructors, the compiler ends up cloning FStreamBuffers (via copy-constructing) and incorrectly deleting Buffer pointers still in use.
#rb jb
#rnx
#preflight 61fd3044e17efe76d1b6174c
[CL 18862467 by Martin Ridgers in ue5-main branch]
- Memory Insights: Fixed analysis for Memory.Free and Memory.ReallocFree trace events to correctly read the RootHeap field.
- Memory Insights: Added INSIGHTS_MEM_TRACE_LEGACY_FORMAT toggle macro and comments to isolate code for temporary backward compatibility with legacy format of memory trace (5.0-EA) which can be deprecated and removed at a later date.
#rb Johan.Berg
#preflight 61fd146451378325c3352e2b
[CL 18861964 by ionut matasaru in ue5-main branch]
#rb Per.Larsson
#rnx
#preflight 61fabeb8ad2ae6c3b763a2b9
- Renamed to ::QueryPayloadStatuses since the output data is in the form of an array of FPayloadStatus
- The method now returns EQueryResult rather than bool, which has 'Success' as value 0, all other values indicate an error.
-- This can be expanded in the future if we start to provide more info from backends as to what actually failed.
- FPayloadStatus has been cleaned up so that 'Partial' is not 'FoundPartial' to give a better indication that the payload was found in at least one storage backend, but not all of them.
[CL 18861036 by paul chipchase in ue5-main branch]
The async cache hierarchy:
- Is required to add compression to the legacy cache by forwarding LegacyPut/LegacyGet to PutValue/GetValue.
- Is always present in the graph, unlike the previous cache hierarchy, which will allow significant simplification of leaf cache stores.
- Allows for the leaf cache store nodes to operate asynchronously without blocking a worker thread like the previous cache hierarchy.
- Shifts from controlling cache behavior by speed class to controlling cache behavior by local/remote classification, which is a critical distinction for a cache like Zen that can identify as both local and remote.
- Respects the local/remote and query/store flags in the cache policy.
- Does not fully implement the partial record cache policy at this time.
- Does not propagate records or values in GetChunks, which will be added in a future release.
The verify wrapper was previously missing an implementation for the new cache interface. This version is more efficient than the previous because requests through the new cache interface can compare data without loading it from storage, and load it only when a mismatch has been detected, to dump it to disk.
#jira UE-134381
#lockdown Mark.Lintott
#preflight 61fc32ac0a50c2606f266388
#rb Zousar.Shaker
#rnx
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18851861 in //UE5/Release-5.0/... via CL 18851943 via CL 18852169
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18852184 by devin doucette in ue5-main branch]
When running with ODSC in the editor Materials can have incomplete or partial shader maps. In other words some shaders _might_ be missing. If a render system requires all shaders to be present and can't use ODSC functionality to compile the necessary shaders we need a mechanism for compiling just the missing shaders.
- Added UMaterialInterface::CacheShaders() which is implemented for UMatetrial and UMaterialInstance. The call is just forwarded along to CacheResourceShadersForRendering and InitStaticPermutation respectively.
- You can call CacheResourceShadersForRendering multiple times (even with a completed shader map) and it will not recache uniform expressions. If the Resource's shader map is complete the function is a no-op.
- FObjectCacheContext can accept a UWorld and will only return primitives that are in that world.
- Added a function SubmitRemainingJobsForWorld(UWorld* World, EMaterialShaderPrecompileMode CompileMode) that will iterate all materials used by primitives in the world and compile the missing shaders.
- SubmitRemainingJobsForWorld() is used in various scenarios in the editor to ensure _all_ shaders are compiled for all materials before proceeding.
- Explicitly try to compile UI and PP materials. Since we don't know which ones are used in the given world we just have to iterate all loaded ones. This is a potential area of optimization.
- If there are already complete shader maps (if you are not running with the shader job cache), SubmitRemainingJobsForWorld is fast and results in a no-op for each material.
#rb Arciel.Rekman, Danny.Couture
#jira UE-136442, UE-136447
#preflight 61fc0e9c176256ec4f764206
[CL 18848560 by Jason Nadro in ue5-main branch]
- Fixes for the ini console command for other platforms
- Allow for reading Config files from another project (for instance from a program like UnrelPak)
#rb matt.peters
#preflight 61fae9189a71b11fd38faa0e
#ROBOMERGE-AUTHOR: josh.adams
#ROBOMERGE-SOURCE: CL 18834077 via CL 18835502 via CL 18835961 via CL 18836096 via CL 18844966 via CL 18845578
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18845601 by josh adams in ue5-main branch]
These both trim detail from the Nanite data that is stored to disk and can be used to optimize disk size after import. Should be a super useful tool late in production.
#rb rune.stubbe
#lockdown michal.valient
#preflight 61fb25e6033a864b77e11ed6
#ROBOMERGE-AUTHOR: brian.karis
#ROBOMERGE-SOURCE: CL 18838594 in //UE5/Release-5.0/... via CL 18838602 via CL 18838937
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18838962 by brian karis in ue5-main branch]
A couple of BP reals changes were missed for IKRig and a new-ish function in RigVMTypeUtils.
For RigVMTypeUtils, we simply need to ensure that we're using the correct PC_Real category when dealing with float/double CPPTypes.
For IKRig, the alpha pin needs to be a real/double type. Additionally, when copying the property data to the FIKRigGoal instance, we need to treat the property's value as a double type. Since FIKRigGoal::Position et al. use the alpha as a normalized value, it likely doesn't need the precision of a double, so it's been left as is. As a result, we need to perform a narrowing conversion when copying over the data.
#jira FROST-8496
#preflight 61faf7115e35b9215b000da8
#rb julien.marchand
#lockdown julien.marchand
#ROBOMERGE-AUTHOR: dave.jones2
#ROBOMERGE-SOURCE: CL 18835074 in //UE5/Release-5.0/... via CL 18835086 via CL 18835353
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18835421 by dave jones2 in ue5-main branch]