Animation Performance improvements

Maya 2023.2 includes significant enhancements to the GPU deformation workflow. One of them addresses the issue of frequent rebuilding (or repartitioning) of the graph for GPU evaluation which could sometimes be disruptive on large scenes when changes occur. Now, creating and deleting keys no longer causes unnecessary repartitioning. Also, a new scheduling mode greatly reduces repartitioning when using Display Layers or Isolate Select to hide or show objects.

Another major change is that the Evaluation Manager now schedules the nodes for the GPU in more granular fashion instead of as a small number of big clusters. This allows for better pruning of the graph.

The Evaluator now claims nodes that potentially go on the GPU instead of only nodes that have been fully checked and verified to be evaluated on the GPU. When GPU evaluation is turned on, the evaluator now dynamically decides which nodes are evaluated on the GPU or on the CPU after repartitioning, making it more responsive to dynamic changes and greatly reducing the need for repartitioning.

GPU Download

GPU Download/Rebuild Optimization: approx 250k vert character with 3 layer facial rig + 115 joints

For example, the character in the above illustration has a necklace which has a uvPin node that attaches the rigid pendant to the ribbon. The ribbon itself is deformed by the body geometry. Previously, because a uvPin or follicle could not be on the GPU, the entire character could not be on the GPU.

In this particular case, the pendant prohibited the necklace from going on the GPU, which in turn, blocked the character's entire body from going on the GPU. Workarounds often included introducing Parallel deformation structures at lower resolutions.

Now, GPU downloads or readbacks are supported. The ribbon geometry is automatically converted after GPU deformation to a CPU mesh. This way, the constraint is calculated on the CPU. (It can be seen in the visualization graph as an arrow that changes from green to blue.)

GPU Download Example: Top is with GPU Download disabled. Bottom is enabled with more green nodes now running on GPU

Note: GPU Download is a new capability within the Evaluation Manager. This feature is always on, but you can turn it off temporarily as a debug option from the Evaluation Toolkit. Alternatively, you can block GPU Download per group of connected nodes in the GPU Outliner as a blocking policy.

Evaluation Toolkit

To provide insight into what is going on, a number of UI and debugging tools have been added to the Evaluation Toolkit. For example, you can see in the Viewport how many nodes are claimed by the evaluator and which of these are evaluated on the GPU.

For example, the below image shows "351k [46/184]", meaning the scene has approximately 341 000 vertices, and that 46 out of 184 nodes in the deformerEvaluator are on the GPU.
Also, enhancements to the Visualization Graph generated from the Evaluation Toolkit show more information: Nodes in green are evaluated on the GPU, while nodes in blue on the CPU. Grey nodes are the nodes external inputs and outputs of the evaluator.
There is also a new Outliner that shows all the nodes in the evaluator, how they are evaluated, the reasons why they might not be on the GPU, and how they are grouped.

GPU Outliner

You can also use this to generate a partial visualization of the deformation graph to focus on just a small part of the scene.

Note:

Since the efficiency of the GPU evaluation heavily depends on the available hardware, sometimes you might need manual control to prohibit nodes from going on the GPU.

Use the Outliner to set a variety of modes to block nodes (or sets of nodes) from going on the GPU.