Merging
//depot/UE4-Orion/Engine/Source/Runtime/Engine/Private/Animation/AnimNode_Slot.cpp
to //depot/UE4/Engine/Source/Runtime/AnimGraphRuntime/Private/AnimNodes/AnimNode_Slot.cpp
[CL 2682911 by Lina Halper in Main branch]
Optimization is enabled by default but is an engine setting in case it needs to be disabled (bOptimizeAnimBlueprintMemberVariableAccess).
Expanded FExposedValueHandler to also contain an array of source & dest properties (copy records) to copy between. These are resolved to read/write addresses on init & a simple memcpy at runtime instead of calling the usual generated custom event.
Custom events are not added at all if all properties use copy records. The event may still be added & called however as mixed-mode access is still supported (i.e. a thunk and a memcpy to different pin properties).
Unfortunately this required initialization of all ExposedValueHandlers (as I didnt want to add the branch overhead of lazy init) so all the anim nodes have needed a small change to call their base class Initialize().
[CL 2678504 by Thomas Sarkanen in Main branch]
//depot/UE4-Orion/Engine/Source/Runtime/AnimGraphRuntime/Private/BoneControllers/AnimNode_Trail.cpp
to //depot/UE4/Engine/Source/Runtime/AnimGraphRuntime/Private/BoneControllers/AnimNode_Trail.cpp
[CL 2671622 by Lina Halper in Main branch]
//depot/UE4-Orion/...
to //depot/UE4/...
UE4 - rollup of many performance changes
* increased max threads for task graph and added a way to reduce task threads at runtime for testing the optimal number
* added a way to track excessive allocation at runtime without using the memory profiler: LogGameThreadMallocChurn.Enable
* ps4: fixed a few problems with the platform properties, IsRunningGame was returning false
* added inline storage for one delegate in multicast delegates
* fixed excessive allocation on the script stack traceback
* fixed excessive malloc calls throughout the animation system
* added stats throughout the animation system
* reworked parallel queue ticks
* fixed excessive malloc calls in cloth and physics animation systems
* fixed GHitchThresholdCVar
* minor improvements to abtest
* added ability to change thread affinities on the fly so they can be tuned
* cvars to control animrate optimization and spew the results: EnableAnimRateOptimization, SpewAnimRateOptimization, DrawAnimRateOptimization, ForceAnimRate
* optimized malloc calls in cascade and gpu particles
* optimized malloc calls in input system
* removed visual logging and ability log from consoles and fixed a few compile errors related to doing that
* optimized gameplaytags
* added a few cvars to cause stalls in various parts of the pipeline to identify critical paths and bottlenecks: CriticalPathStall.*
* added console command to toggle all known outstanding perf tweaks: Orion.SetupPerfCVars
[CL 2642061 by Gil Gribb in Main branch]
- One driver value can now drive multiple components
- How a component is driven is now configurable (add to input, replace, add to ref pose and replace)
- The range limit is now defined on the input (before the multiplier is applied) rather than the output (existing ranges are fixed up on load)
- New details customization to make working with the node easier
- Individual scale components can now be a driver or one of the driven components, rather than just the max component of scale
- The node title now displays the driving equation (e.g., driven.rotation.z = -0.5 * driver.rotation.x)
Animation: Added a custom version for AnimGraph/AnimGraphRuntime usage
Upgrade Note: The exact behavior of the original node was not preserved, but there are now more configuration options, so please revisit any uses of bone driven controllers in your animation blueprints
[CL 2606968 by Michael Noland in Main branch]
- Added support for using a curve to map from input range to output range
- Added compilation warnings when a bone or component still needs to be selected
- Added a customization to hide the range/multipler when using a curve, and gated editing of the range based on bUseRange
- Minor optimization to evaluation speed
- Reorganized the properties into logical groups (Source/Driver, Mapping, Destination/Driven)
[CL 2591125 by Michael Noland in Main branch]