Blueprint pure nodes were initially intended to be similar to "functional pure". In other words, they're deterministic and produce no side effects (eg: doesn't mutate state). However, pure nodes have violated both conditions for a while now.
Instead, pure nodes are simply function nodes with output values and no visible exec pins. While this can be convenient, they come with a downside: the pure node is evaluated for each connected output. This can lead to unexpected performance issues if the node is expensive to evaluate. In the case of non-deterministic nodes, this can lead to unexpected behavior. In both cases, the user often needs to cull multiple outputs of a pure node and cache the result manually.
The solution here is to add support for toggling purity at the call site. When a function node is placed, right-clicking on it and selecting either "Hide Exec pins" or "Show Exec Pins" will toggle purity. Additionally, the meaning of BlueprintPure and the "Pure" check box changes slightly: it now means that the function node _defaults_ to a pure state when placed in a graph. However, it can be toggled to show its exec pins.
In future changes, we'll also reevaluate which common library functions should continue to default as pure.
#jira UE-196156
#rb dan.oconnor, jodon.karlik, ben.zeigler
[CL 35309072 by dave jones2 in ue5-main branch]
[FYI] Yoan.StAmant
Original CL Desc
-----------------------------------------------------------------
Moved UserDefinedStruct to CoreUObject
#jira UE-216472
#rb Devin.Doucette
[CL 34486763 by gary yuan in ue5-main branch]
[FYI] Jurre.deBaare
Original CL Desc
-----------------------------------------------------------------
Added UFunction missing deprecation/message keywords to deprecated Animation APIs
#rb Thomas.Sarkanen
#ushell-cherrypick of 26178265 by Jurre.deBaare
[CL 26198808 by stan hormell in ue5-main branch]
Swarm review [at] https://p4-swarm.epicgames.net/reviews/25771279https://horde.devtools.epicgames.com/job/6480c6078417d79259d7b71c
Added functionality to strip at ratios higher 1 out of every 2. testing shows good savings at stripping 2/3 frames on NX64 and in editor of around 8mb with no noticeable visual degradation.
Works through the VariableFrameStripping object that is a member of the AnimSequence.
Fixed issue with valkyrie
[CL 25857620 by nick baltis in ue5-main branch]
#rnx
[FYI] nick.baltis
Original CL Desc
-----------------------------------------------------------------
Variable Frame Stripping
Swarm review [at] https://p4-swarm.epicgames.net/reviews/25771279
Added functionality to strip at ratios higher 1 out of every 2. testing shows good savings at stripping 2/3 frames on NX64 and in editor of around 8mb with no noticeable visual degradation.
Works through the VariableFrameStripping object that is a member of the AnimSequence.
Fixed issue with valkyrie
[CL 25809604 by hilda cruz in ue5-main branch]
Swarm review [at] https://p4-swarm.epicgames.net/reviews/25771279
Added functionality to strip at ratios higher 1 out of every 2. testing shows good savings at stripping 2/3 frames on NX64 and in editor of around 8mb with no noticeable visual degradation.
Works through the VariableFrameStripping object that is a member of the AnimSequence.
Fixed issue with valkyrie
[CL 25804411 by nick baltis in ue5-main branch]
[FYI] nick.baltis
Original CL Desc
-----------------------------------------------------------------
Due to Backout files marked for add could not show latest revision forcing me to submit this change directly though p4v.
Swarm review [at] https://p4-swarm.epicgames.net/reviews/25450246
Added functionality to strip at ratios higher 1 out of every 2. testing shows good savings at stripping 2/3 frames on Nx64 and in editor of around 8mb with no noticeable visual degradation.
Origional Cvar ssytem replaced with VariableFrameStrippingSettings Oject which is a member of AnimSequence. It contains PerPlatform variables for enableing the system and its rate.
The move to a member object wrapping around these settings were two fold. First to better mas change anim sequences by platform while also allowing for varried settings for edge cases. Second becuase due to the fact this affects objects in the cook, gateing it behind a cvar provides no hot fix saftey while hurting useability.
[CL 25521647 by edwin maynard in ue5-main branch]