GPU deformers


#1

I thought it most appropriate to start this thread here. My apologies for any really elementary questions as I’m new to programming altogether.

I was wondering why Maya and any other applications don’t move deformations to the GPU? It would seem like a better use of the GPU’s power to calculate all that vertex animation, rather than making the CPU do it all.

Here’s an example where this gentleman appears to have written a custom blendshape node that utilized his GPU here: http://www.youtube.com/watch?v=BUgi50toRls

Motion Builder 2011 to some degree implements GPU deformation playback and as an animator, it would be great to have this speedy playback right inside of Maya (or Max).

Could anyone shed some light on why this might not be possible, or better yet, how it could be possible?


#2

Some problems with GPU shader based nodes:

  • render-farms may not have access to a GPU. Will your node still work if no GPU is available? Will your node still work when OpenGL isn’t available?

  • Whatever GPU method you use, you have to support the lowest common denominator. You will need GL1.2 support in addition to any GL4.1 codepaths…

  • The nodes in these apps must by and large compute and set an output. This means the skin node would have to send the data to the GPU, process, flush the queue, and then read the data back. This will most likely negate many (if not all) of the benefits of using the GPU.

  • Not all deformers work well on the GPU. Certainly some do (eg skinning). Some use more memory as a result (Blend Shapes), and the vast majority have problems deforming the normals via shaders (i.e. FFD’s, non linears etc). Certainly there are ways around this, but it’s not ideal.

  • GPU’s tend to be limited to 32bit precision (some of the newer ones aren’t). Ideally you want to perform your computation in double precision to avoid any potential accuracy loss.

  • Maya’s deformers can be applied to any geometry object, so you may struggle to implement a GPU deformer that also worked with a nurbs surface for example…


#3

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.