I was hoping to get a bit more insight into the internals of playable graph evaluation to better understand the performance implications of different playable setups. A few questions:
-
I’ve read calling Update manually on an Animator " means your animators will run single-threaded ". How much of the cost of an Animator update comes from the graph evaluation? Is calling Evaluate on a playable graph with Animation Outputs essentially equally expensive?
-
When dealing with a Timeline graph that has both script and animation outputs, are the animation outputs evaluated at a different point during the update cycle? Is that work threaded during the internal animation update? Just the ProcessFrame part?
-
Related to #2; when overriding the outputs on a custom TrackAsset to have AnimationPlayableBindings, is the resulting Animation Output updated and processed in the same way as default Animation Track outputs? Does this have any impact on the PrepareData phase of a custom playable connected to this branch?
-
And more generally; Are any of the PrepareData, PrepareFrame and ProcessFrame phases ever run outside of Evaluate? The documentation on why these particular phases exist (or what happens inbetween them) is quite brief.