Does GPU acceleration matter?

General Moho topics.

Moderators: Víctor Paredes, Belgarath, slowtiger

RichardU
Posts: 155
Joined: Sun Mar 20, 2011 6:53 pm
Location: Atlanta

Re: Does GPU acceleration matter?

Post by RichardU »

I'd be glad to answer any questions I can about the GTX 1070. I'm not sure about masking previews. If someone wants to give me a link to a file I will open it and make a screengrab if that would help.

In general, everything does seem to work more smoothly. My previous card was a GTX 770. In a benchmark test it scored 106 fps while the GTX 1070 scored 257 fps in the same test.

One nice thing about the GTX 1070 is how many monitors it supports. Previously I had my 770 feeding my 30" monitor, and another old card for my two 23" side monitors (in portrait to match the 1070 in height). On the 1070, I was able to remove the old card and feed all three monitors from one card using DP to DVI adapter cables. (There are three DP outlets in addition to an HDMI and a Double DVI.)

Richard
chucky
Posts: 4650
Joined: Sun Jan 28, 2007 4:24 am

Re: Does GPU acceleration matter?

Post by chucky »

Hi Richard,
The best files to test with are in the library, that way everyone can use them as a benchmark.
Try in Scenes/CK Crustacea ( for image based) and CK the Quick and the Dead, which is heavier on vector with brushes.
I don't know how to actually measure how many frames are skipping, but maybe without frames skipping the time it takes to play through could be a good judge.
For example, Quick and the Dead @1080/24fps for 420 frames with dynamics on and frame skipping off, plays back in 19.9 seconds.
RichardU
Posts: 155
Joined: Sun Mar 20, 2011 6:53 pm
Location: Atlanta

Re: Does GPU acceleration matter?

Post by RichardU »

For the Quick and the Dead I measured 20.04 sec with a stopwatch. So it sounds like it's having no problem rendering in real time.
chucky
Posts: 4650
Joined: Sun Jan 28, 2007 4:24 am

Re: Does GPU acceleration matter?

Post by chucky »

RichardU wrote:For the Quick and the Dead I measured 20.04 sec with a stopwatch. So it sounds like it's having no problem rendering in real time.
Wow, so it seems exactly the same...that's no fun. I would have been delighted to know that there could be an improvement in the display ( for when project get really massive) :twisted:
User avatar
Lost Marble
Site Admin
Posts: 2347
Joined: Tue Aug 03, 2004 6:02 pm
Location: Scotts Valley, California, USA
Contact:

Re: Does GPU acceleration matter?

Post by Lost Marble »

Your GPU is not used for final rendering, so there's no effect on quality or rendering times as far as that goes.

On the canvas, the GPU works best for images. GPUs are really good at drawing textured triangles, and that's how we draw image layers on the canvas. So if you're doing cutout-style animation or you're using a lot of images in the construction of your characters, you might see a really big boost (both in interactive/playback speed and quality).

For vectors it's more complicated. It's been difficult for the GPU vendors to settle on a vector graphics API. There's OpenVG (https://www.khronos.org/openvg/), but it doesn't seem to have really gained a lot of traction. Nvidia has its own API for certain cards, but I'm not that enthusiastic about supporting an API that only works on Windows and only for certain cards from a certain manufacturer.

So what Moho does for vector graphics is that we need to chop up vector elements into tiny triangles - the GPU likes triangles. But that chopping-up process is a good amount of work by itself, so some of the performance gain of GPU drawing is lost in the chopping process. Some of the GPU vector APIs I've looked at are not really geared towards animation - for example, if you only need to chop up a vector shape once, then you can draw the triangles very quickly from there on out. But we're animating here so vector shapes change all the time, requiring constant re-chopping.

Anyway, it gets complicated with vectors, but where the GPU is a clear win is when you're working with image-based graphics.
chucky
Posts: 4650
Joined: Sun Jan 28, 2007 4:24 am

Re: Does GPU acceleration matter?

Post by chucky »

Hey thanks Mike for clearing that up, I've always wondered how that all works.
So CPU is king in Vectorland, huh, we can keep that in mind when buying hardware?
That could be good info for a FAQ somewhere easy to find.

Now I understand that, there could be room to take advantage of what power the GPU does have- for images huh?
Makes me think of those audio programs when to save computing energy on a track which is applying a lot of effects, you can ' freeze' a track ( which renders it invisibly and temporarily until the more editing is needed) for playback purposes.
Sometimes they have render to new track, but that's sometimes a bit clumsy.

Actually I have wondered about this idea ( even just the render to new track idea) for situation when there is lot of computing going on for a layer or group that basically is set and forget for much of the animating process. Like particles or groups with a lot of masking or dynamics applied.
So we could 'freeze ' or Lock' the layer it secretly and quickly renders it invisibly behind the hood in an optimised image format for playback , then you get fast accurate playback in supporting layers , to enable fast and accurate playback in the vector layers being edited?

Of course we can already hide the layer with comps ( which is extremely useful) , but what if you need to see those layers?
Also we could comp it and render it and then drag the rendered sequence in , but do we know what is the optimal format for playback in MOHO and that's a lot of messing around, when it could be as simple as pressing ' Lock' or 'render to new ' or just like in the audio world 'freeze' * which normally has a little snowflake icon.

Maybe in a future release we could have something like that ( obviously freeze is taken- maybe 'key all' would have been better for that :shock: eek :? ) bummer that .


Just some out loud thinking.
User avatar
Greenlaw
Posts: 9191
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Does GPU acceleration matter?

Post by Greenlaw »

I think what you're talking about is caching.

The two compositing programs I use, Fusion and After Effects can do this. Basically, if you enable this feature, the program renders frames in the background (in the case of Fusion, it can even use other computers on the network.) AE's caching is pretty simple...it just caches everything and you don't have much control over how it does this. Fusion is much more controllable in that you can enable separate caches for different branches in your node structure. In both cases, they can speed up performance, especially if you're working with high-res images and footage.

Procedural features like particles and dynamics could also benefit from caching.

There are some limitations to be aware of. For example, caching works best if you have a fast drive (like an SSD) or a very fast network. Because you're pushing a lot of data back and forth, and constantly rendering, you'll want to avoid caching over a slow network or wifi connection. And sometimes caches can get mixed up or corrupted and you might see the wrong images. When this happens, you'll need to manually purge the cache and and let the software rebuild it from scratch.

Personally, I'm not sure I need caching in ASP/Moho...compared to Harmony and AE, ASP 11 has been so much faster to animate high-res bitmap characters with, so I'm just loving it right now. But every project will have different demands on software and, sooner or later, I'll probably wish we had caching in Moho too.

That said, I think I would prefer to see more improvements to the drawing and FBF tools.
chucky
Posts: 4650
Joined: Sun Jan 28, 2007 4:24 am

Re: Does GPU acceleration matter?

Post by chucky »

Greenlaw wrote:I think what you're talking about is caching.

The two compositing programs I use, Fusion and After Effects can do this. Basically, if you enable this feature, the program renders frames in the background (in the case of Fusion, it can even use other computers on the network.) AE's caching is pretty simple...it just caches everything and you don't have much control over how it does this. Fusion is much more controllable in that you can enable separate caches for different branches in your node structure. In both cases, they can speed up performance, especially if you're working with high-res images and footage.

Procedural features like particles and dynamics could also benefit from caching.

There are some limitations to be aware of. For example, caching works best if you have a fast drive (like an SSD) or a very fast network. Because you're pushing a lot of data back and forth, and constantly rendering, you'll want to avoid caching over a slow network or wifi connection. And sometimes caches can get mixed up or corrupted and you might see the wrong images. When this happens, you'll need to manually purge the cache and and let the software rebuild it from scratch.

Personally, I'm not sure I need caching in ASP/Moho...compared to Harmony and AE, ASP 11 has been so much faster to animate high-res bitmap characters with, so I'm just loving it right now. But every project will have different demands on software and, sooner or later, I'll probably wish we had caching in Moho too.

That said, I think I would prefer to see more improvements to the drawing and FBF tools.
No not caching, but that's a good idea too.
I mean what I mean, actually prerendering and accesses those renders for fast playback.

Clearly I'm no expert and I'm just using fuzzy 'chucky' understanding , which is much like an rough guess, so apologies if I'm wrong about those apps, still I mean what I mean about this being potentially good for Moho.
I like the idea of caching too, should also be an option.

Image
Freezing might be different, but I do use 'render to new layer' in video apps when things get boggy.
User avatar
Greenlaw
Posts: 9191
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Does GPU acceleration matter?

Post by Greenlaw »

chucky wrote:I mean what I mean, actually prerendering and accesses those renders for fast playback.
I think we're probably are talking about the same thing. I've seen the terms freezing, flattening and baking to generally mean the same thing, but I know these same terms can be used to describe different things depending on their usage.

Anyway, I agree...it would be awesome to right-click on a skeleton layer and choose 'bake this character' or something like that. :P

Another thing I'd like to see is a way to point media to a proxy version. In Fusion, for example, any Loader node has two source directories to pull an image or footage from, one for the full res file and the other for a lower res proxy version. The proxy is used when you're working with the files but the software automatically switches to the high-res version at render time. If you don't point to a proxy file, Fusion can still generate a lower res cache version in RAM if you enable that feature. In AE, it's a little different: there is a command that generates a proxy version and links it for you--it's less 'hands on' but it works well too.

Anyway, I think it could be useful if Moho's Image Layer supported a proxy source option, especially if you use a lot of high-res footage.

Some of the rigs I've set up recently have many 2k to 4k images. Moho is surprisingly fast in animating these rigs but I imagine things will slows down when I have many such characters in a scene. I'm hoping it will be faster than Harmony though--I've had to animate as many as 17 rigged hi-res bitmap characters in that program and the performance hit can be pretty painful to animate with there, and Harmony isn't even using a proper IK system like Moho does. If Moho could switch to a proxy mode, either at the individual layer level, group level, or globally, that could reduce the memory overhead considerably. Just a thought.
Last edited by Greenlaw on Fri Aug 05, 2016 5:29 pm, edited 2 times in total.
User avatar
Lost Marble
Site Admin
Posts: 2347
Joined: Tue Aug 03, 2004 6:02 pm
Location: Scotts Valley, California, USA
Contact:

Re: Does GPU acceleration matter?

Post by Lost Marble »

Pre-rendering or caching or whatever you want to call it is an interesting idea. I think we'd need to do it under user control. You could imagine caching layers that haven't been changed, but we have a lot of inter-dependencies between layers (bones are the simplest example, but reference layers, path following, etc. all mean that a change to one layer can affect another). Also, pre-rendering individual layers is less useful than pre-rendering an entire finished character - all of its layers composited. I'll have to put more thought into this.

Of course, there are ways to do this manually: render out a character as a movie or image sequence, and import that back in. I've recommended that for complex particle effects for a long time. It helps with not just playback in the app, but rendering too: no need to re-render complex compositing effects every time (the new motion blur is cool, but can be slow). But a button to cache or pre-render a character with just a click would obviously be more convenient.
User avatar
Greenlaw
Posts: 9191
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Does GPU acceleration matter?

Post by Greenlaw »

Lost Marble wrote:Also, pre-rendering individual layers is less useful than pre-rendering an entire finished character - all of its layers composited. I'll have to put more thought into this.
Yes, exactly.

Sorry, I revised my post above just before I saw your post but I added that being able to bake-flatten-freeze-cache at the skeleton level for a character could be very useful. Maybe a right-click command and and another command to release the cache? If you add that, you might also want to add a pair of 'delete cache' commands for purging the selected layer's cache or all cached files.

Thanks for looking into this Mike.
User avatar
Greenlaw
Posts: 9191
Joined: Mon Jun 19, 2006 5:45 pm
Location: Los Angeles
Contact:

Re: Does GPU acceleration matter?

Post by Greenlaw »

Lost Marble wrote:Of course, there are ways to do this manually...But a button to cache or pre-render a character with just a click would obviously be more convenient.
Yes, I agree. This is one of the reasons I prefer to set up and render layer comps for compositing elsewhere. If I need to revise the scene, I only need to render out the affected layer comps, not the entire scene. Naturally, the compositing can be done in Moho as well.

I just had another thought/question: In the current Moho, if you import a pre-rendered character as an Image Sequence layer, place it above the character's skeleton, and then disabled/hide the skeleton in the Layer panel, will Moho skip processing the disabled rigged version of the character? It seems like it should but I was just wondering.
chucky
Posts: 4650
Joined: Sun Jan 28, 2007 4:24 am

Re: Does GPU acceleration matter?

Post by chucky »

Lost Marble wrote:
Of course, there are ways to do this manually...But a button to cache or pre-render a character with just a click would obviously be more convenient.
Yay :)) :D
Last edited by chucky on Sat Aug 06, 2016 6:12 am, edited 1 time in total.
User avatar
synthsin75
Posts: 9934
Joined: Mon Jan 14, 2008 11:20 pm
Location: Oklahoma
Contact:

Re: Does GPU acceleration matter?

Post by synthsin75 »

I think I'd be happy with just an automated way to render a group, import it (matching any of the group's masking settings), and hide the original.
chucky
Posts: 4650
Joined: Sun Jan 28, 2007 4:24 am

Re: Does GPU acceleration matter?

Post by chucky »

synthsin75 wrote:I think I'd be happy with just an automated way to render a group, import it (matching any of the group's masking settings), and hide the original.
Yep , render to layer with one click would be great.
Post Reply