← All ideas
  • Published 19 Jul 2021

Blender Deformation GPU Override.

I did some simple deformation tests between Blender & Maya and the results are but astonishing which made me wonder, why the Blender team hasn't invest in this crucial feature yet? and I'm only speakng here about (GPU Override aka GPU Skinning) but I also would like to bring the other features to the proposal so the overall idea is more clear.

I know that there is openSubdiv GPU acceleration which is supposed to give some boost to the deformation for quads based models but that doesn't benefit everyone like in video games or even hollywood VFX where they even use high res for the main characters to get as much fidelity as possible.

Of course I'm nowhere as a technical person to understand all of this stuff but from my humble understanding, Maya has few systems working well togather that gives it the edge over many DCCs in this area.

1 - the Parallel Evaluation which allows using all the available cores and divide the evaluation process for more complex scenes/rigs simultaneously.

2 - GPU-override , deformers in the scene will be evaluated on the GPU giving extra boost to both the deformation and the interaction/manipulation of the rigs, of course not all deformers are supported as some of them are legacy CPU deformers.

3- a tool called the Performance Profiler, which visualizes the evaluation of the animation data (Curves, Deformers,Nodes...) ,so you can optimize the scene even further and find the bottlenecks for even more boost.

And I'm sure there are some other few things under the hood which are not available to the public as Autodesk doesn't provide such technical information.

My proposal is.before revamping the whole rigging & animation ,adding cached playback or the node based workflow ,Performance for deformations should be improved, by adding this GPU override option first as I assumed from the results that Blender's deformations are also working in Parallel mode otherwise the Devs would know which needs to come first, so when the nodes workflow gets in and the complexity of the rigs rises exponentially the deformations will mitigate for the performance while then we wouldn't have to look for workarounds or reduce the quality of the work.

Now to the results of the tests.

Cylinder divided : 361 472 verts.

Maya Viewport Playback & Interaction.

DG Eval : 13 FPS

Serial & Parellel Eval No GPU : 19 FPS

Serial & Parellel Eval GPU: 150 FPS

Maya Interaction : 80 - 96 FPS

Blender Viewport Playback & Interaction.

Autosmooth off : 10 -11 FPS and if on 6 to 7 FPS.

Blender Interaction: 10 - 15 FPS

image

As you can see the results speak for themselves to the point I was curious what if I up the polycount so I did, and here is where the shock came in.

image

This is a sculpted model with lots of triangles.

3 456 713 verts.

Maya Viewport Playback & Interaction.

Parellel Eval No GPU : 3 FPS

Parellel Eval GPU: 73 FPS

Maya Interaction : ~ 65 FPS

Tried to do the same in Blender hoping for the best but the binding to the mesh itself took +18 minutes to complete while in Maya was just few seconds also GPU driven and I couldn't even enter the Pose mode without a complete freeze so had to kill the process.

I'm in no mean trying to be ungrateful or imply to just copy what other softwares have but rather on the contrary, I'm deeply hoping that Blender could reach if not exceed this level easily, the Devs have already done it with the 2.8 and now 3.0's edit mode, Cycles X .... but this is as important if not one of the most important things for an animation software and I don't believe it's hard to achieve as GPUs are getting better & better everyday, sure adding GPU based Deformation wouldn't be any harder for the Devs and this idea is just planting the seed for the future.

Here is a read for a practical example from a Maya TD talking about these features and their use ,limitations and solutions.

medium.com/@kattkieru/deformation-layering-in-mayas-parallel-gpu-world-15c2e3d66d82

Thank you for reading this whole rant because as you can see I'm a bit dazzled by the results that I had to come here and vent.

Wish the Best for Blender :)

96%

Development Status: Open

Upvote 24 Downvote 1
Pascal
19 Jul 2021

1 Comment

There are a lot of areas of Blender where GPU acceleration would be very helpful. However, the two people who are most familiar with GPU bound programming are working on CyclesX and mesh deformation can be tricky to get working on the GPU as stated in the article:

If a deformer supports GPU evaluation and very importantly if the deformation chain is GPU friendly, Maya will move the mesh onto the GPU and use the GPU to do deformations, increasing your frame rate significantly in many cases. Unfortunately, what constitutes a “GPU friendly deformation chain” isn’t readily apparent. For starters, you have to limit your rigs to the deformers with GPU overrides, and even in Maya 2018 not every deformer is GPU capable. (That’s right — No wires or wraps.) But more damning is that you absolutely cannot chain animated meshes as sources for GPU deformers.