Text layers slow down essential graphics
I'm researching performance issues with mogrt files for the Danish National Broadcaster.
We've implemented most of their branding in a git versioned master project and export our assets to all systems from this master project using a jsx script for ci/cd and deployment of mogrts, alpha-renders etc.
In this process we have discovered a dissapointing fact about masterproperties on text layers.
It seems that when an essential text property on a layer is set to a different value than the default from the source comp, it slows down rendering considerably.
When previewing or rendering the source comp it easily achieves realtime playback, but when using it as the only layer in another comp and setting a text property to a different value the render time drops with a factor of up to four. In the absence of responsive dimensions for mogrts, we wish to precomp in our mogrts to retain a single comp for use in different aspect rations (High, Square and Wide)
As the contents of a text will not change interactively or by keyframes i've experimented with putting posterizeTime(0) and // cacheCompareSamplesPerSecond 0 in expressions linking textbased properties. But it does not help in the same way it can for other types of essential properties like sliders etc.
I have a hunch that the problem is missing caching on a text layer, whose sourceText is controlled by an essentialProperty set by expressions in a parent comp. Rendering as if the value of the essentialProperty changes in every frame.
As you can imagine this compounds probibitively when using eg. sourceRectAtTime() which still remains the heaviest call in expressions.
We're on the cusp of leaving the mogrt path for branding and implementing a html/css based rendering system for text animations instead. Or writing Premiere Pro plugins natively. A very expensive step.
For now our editors and production assistants have performance issues in Premiere Pro that are frustrating and expensive. Texting a podcast with a simple responsive time mogrt that animates key words does not render interactively, and they spend double the amount of editing time than when using Avid with the bug-prone and limited VIZ plugin !! 😭🙇🏻
But with a focused optimization of essential properties for text we can stay on this path, with the obvious benefits of having a single source of truth for all our corporate motion design in After Effects.
I have been unable to attach an example of mogrt that exhibits this behaviour. (Please, do allow your own file extensions, Adobe 🤦🏻) Instead i have made it available for download here: https://drive.denfrievilje.dk/d/s/lA3xmqEG9DlOeeb9QFzhOmkbqIFExgS8/Lt3XloUfzW2rQbXlA2MtBRfVlVc04BIJ-...
All brand-specific variations have been baked by our export script and there will be some disabled expressions as a result -
Best / Ole Kristensen
Danish Broadcasting Coorporation
Ole Kristensen commented
Appears to be compounded by pre comping.
For fun, I have gone through the sort of tedious manual process of 'unprecomping' the mogrt with astounding effect on rendering performance.
With the matrices of brands, rules for cross-referencing, aspect ratios etc. in our mogrts, this manual step remains prohibitively cumbersome and introduces a lot of duplication of designs and consequently a very high maintenance cost.
So yes, a thorough review of linked essential properties and caching remains a priority for us!
Ole Kristensen commented
This was posted in the community forum by mistake. Sorry for cross posting.