How Final Cut Pro X Caches Render Files (and how to prevent Beauty Box from re-rendering)

What causes Final Cut Pro X to re-render? If you’ve ever wondered why sometimes the orange ‘unrendered’ bar shows up when you make a change and sometimes it doesn’t… I explain it all here. This is something that will be valuable to any FCP user but can be of the utmost importance if you’re rendering Beauty Box, our plugin for doing skin retouching and beauty work on HD/4K video. (Actually we’re hard at work making Beauty Box a LOT faster, so look for an announcement soon!)

Currently, if you’ve applied Beauty Box to a long clip, say 60 minutes, you can be looking at serious render times (this can happen for any non-realtime effect), possibly twelve hours or so on slower computers and video cards. (It can also be a few hours, just depends on how fast everything is)

FCP showing that footage is unrendered

Recently we had a user with that situation. They had a logo in .png format that was on top of the entire video being used as a bug. So they rendered everything out to deliver it, but, of course, the client wanted the bug moved slightly. This caused Final Cut Pro to want to re-render EVERYTHING, meaning the really long Beauty Box render needed to happen as well. Unfortunately, this is just the way Final Cut Pro works.

Why does it work that way and what can be done about it?

One solution is to render out the clip with Beauty Box applied as an intermediary clip, re-import that and then use that in your timeline. This is probably the best solution if you have the disk space.

You can also do all the edits, graphics, and whatnot, get the client to sign off on those and then do the Beauty Box pass last.

However, I talked to FCP developer Paul Schneider to get some sense of when FCP caches renders and when it needs to re-render things. So this post will relay most of that info along with some insights I’ve gotten from a few experiments. (luckily this is public info, so unlike most conversations with Apple employees this wasn’t a ‘I can tell you but then I have to kill you’ type of thing)

This article should give you a better understanding of what Final Cut is doing when it renders and when it keeps those renders cached . Of course, I think this info is useful for any FCP users, not just Beauty Box users.

First off, let’s look at how Final Cut Pro views your timeline. Each edit is a ‘segment’ as far as rendering goes. So if we view it on the timeline, each edit is sort of like a silo… everything in it will cause the segment to be re-rendered if it’s changed.

In the image below, if you change the .png file, it only affects the first two segments. Which makes sense and is what you’d expect.

FCP Timeline with everything rendered including Beauty Box Video

What’s important to note here is that if we delete the .png file the two segments need to be re-rendered (note the orange bar). Final Cut Pro doesn’t do a render per Track. It does it per segment (think of the silo) and any Track in that segment needs to be re-rendered if there’s a change on any other track. If you have effects applied to the clip in any of those tracks, those need to render as well.

FCP does not render per track

However, as you’re adding things, FCP is rendering. It doesn’t render per track, BUT if you add a video clip to Track 1 it will render that. If you add something to Track 2 after Track 1 has been rendered, the render for Track 1 will be kept around. That means you can delete what was on Track 2 and a re-render won’t be required. This allows you to delete clips/images, undo changes, or revert to an old version of the project and not have to re-render.

FCP will render out a segment and keep in around indefinitely

 

FCP renders the new logo on top of the existing footage

 

FCP loads the cached render so there's no re-render

What does this mean for non-realtime effects like Beauty Box? You can apply Beauty Box to the clip first, let it render, and then that render is cached. As you make, delete or move things on other tracks, it means the Beauty Box track won’t always have to render (particularly if you delete something). You can also turn off Beauty Box on the clip, do all your edits and graphics, and then turn it back on. In areas where there’s nothing in the segment (‘silo’), like segments 3 & 4 below, Beauty Box won’t need to re-render. So that should save you a lot of rendering time.

The sections with nothing above them don't need to be re-rendered even if the filter was turned off and is now on

The worst case scenario is as described earlier… you have a graphic being used as a bug across your entire 30 minute production. In that case, if you move the bug, EVERYTHING has to be re-rendered because it’s in every segment. So getting anything like that locked down and approved early in the process could save you some rendering headaches later.

Remember that Final Cut Pro caches old renders. So if your clip is rendered with the bug on it, it’s pretty much permanently stored. You can delete or undo other images/clips/effects that you add later and FCP will load the cached render. It also allows you to use FCP X’s Audition feature.

If disk space gets tight, FCP will start deleting older cached files. It only does this as a last resort and otherwise will keep your renders around. This is great, it gives you a lot of flexibility. However, if you’d rather not have FCP using your entire hard drive as a scratch disk, you can delete the render files here:

File>Delete Generated Event Files (why they couldn’t just call this ‘Delete Render Files’ or something a bit more obvious I don’t know)

That should give you some insight into how Final Cut Pro X manages rendered files. It’s not rocket science but it’s good to know what’s going on. Feel free to ask questions in the Comments and I’ll do my best to answer them or get them answered.

Leave a Reply

Your email address will not be published. Required fields are marked *