Hello everybody!
(This post was co-authored by Tim Kurkoski (After Effects Product Owner), Andrew Cheyne (After Effects Engineering Manager), and Victoria Nece (After Effects Product Manager).)
This thread has been sitting here for quite a while without a response. To start, we want to apologize for that. We haven’t been ignoring you or your feedback – this is just a particularly complex topic. That said, it’s time for us to check in with you, clarify a few things, and give you an idea of what we’re looking at for the future of After Effects, especially when it comes to performance.
To start, we fully understand that you want After Effects to be as fast as it can be – utilizing your computer’s hardware resources to render as fast as possible. Over the last several years, we have been working on the performance of After Effects constantly. Sometimes those performance gains are obvious, like GPU rendering or improving an individual effect’s use of the CPU. Sometimes it’s less obvious, like making expressions evaluate faster via a modern JavaScript engine.
Before jumping into the specific request here (multi-threading AE), we should talk about how the AE team looks at performance in general. There are three areas:
- Rendering Performance: How fast can AE get pixels onto your screen?
- Interactive Performance: How fast does the UI respond to your actions?
- Workflow Performance: How fast can you complete a task in AE?
All three are important. All three impact how quickly you can make creative decisions and get your work done. This request and this discussion are focused on the first area, rendering, so we will focus on that, however we don’t want to lose sight of the bigger picture.
Rendering Performance
What have as the AE Team been doing? When we set out to tackle rendering performance, we looked at the potential improvement offered by different technical paths. And we set a high bar: we didn’t want to just have an incremental speed increase. We wanted a major leap forward in rendering power.
The obvious technology that would enable us to achieve that goal was leveraging the GPU. Because GPU processing power has leapfrogged the CPU — and is explicitly designed to handle this type of processing — the decision was made to invest in getting AE’s core rendering pipeline running on the GPU.
This is not a small task, and we’re not done yet. The most visible result of this effort has been the porting of individual effects to the GPU – more than 40 so far. Less visible is the work we’ve done getting the rest of the After Effects rendering pipeline on the GPU, such as layer transforms and motion blur or debayering RED raw R3D footage.
We still have further to go, as the real power of the GPU is unlocked when you don’t have to send a frame back and forth between CPU and GPU for different stages of rendering. As more links of the GPU chain come online, you can expect further rendering performance gains.
Multi-Threading
We do know what you’re thinking at this point. You want to know what we’re doing about multi-threading.
We all recognize that After Effects would benefit from additional general-purpose multi-threaded rendering. And while we can’t get into specifics here or make any promises about our future roadmap (that’s all confidential when you’re a publicly traded company), we are actively working on multi-threaded CPU rendering.
Ultimately, when it comes to achieving the best rendering speeds possible for AE, we know we’ll need a combination of GPU and CPU processing that maxes out all the resources on your machine.
We recently partnered with the folks at School of Motion and they did a fantastic video on how to get a more optimized system for After Effects: https://www.schoolofmotion.com/tutorials/after-effects-computer
Please keep posting and letting us know what you think. We’ll continue to watch this thread (and all the others on UserVoice). And we appreciate your patience with our response to this post.
/drool