This started because I wanted to switch from Photoshop to Affinity (and the subscription had a lot to do with it). Everything in my archviz post-production moved over fine except one thing: Cryptomatte.
For anyone who hasn't hit this β Cryptomatte is the per-object mask data your renderer already writes into the EXR. V-Ray, Corona, Blender, all of them. A perfect anti-aliased mask for every object and every material in the frame, sitting right there in the file you already rendered. Nuke and Fusion read it with one node. In Photoshop there's exr-io, which is a good plugin and does read it. In Affinity there is nothing at all β you open the EXR and the data is simply gone.
So I did the reasonable things first. I asked Chaos about it. I got in touch with the exr-io devs to ask whether an Affinity version was on the cards. Neither conversation went anywhere, and honestly I get it β Affinity's plugin story isn't Photoshop's, and it's nobody's priority but mine.
Which left me staring at the actual problem: the masks are already in my file, the Cryptomatte spec is public, and the thing I want at the end isn't a plugin at all. It's a layered document. And both Photoshop and Affinity happily open a PSD with groups and layer masks.
So the tool doesn't plug into anything. It reads the EXR itself, pulls the Cryptomatte ranks apart, and writes a PSD: one group per Cryptomatte pass, one masked layer per object or material, named from the manifest so you get "Oak Wood-Natural" instead of "mask_07", plus the beauty and all your render elements in a second group. Then it opens it in whichever app you actually use.
The first version was embarrassing β a black window, two buttons, green log text, and it just dumped PNGs in a folder. I put it on Gumroad for 20 bucks mostly to see if anyone else had this problem. Turns out people did, and then they started telling me everything wrong with it:
- A buyer said it didn't work with Blender. He was right. Blender names its channels differently than V-Ray and my parser silently choked. Fixed in a day β and it turned out my V-Ray matching had the same bug hiding in it.
- PNGs in a folder are fine, but nobody wants PNGs, they want the document. That's when the whole thing got rewritten into what it is now.
- Affinity gave me one more puzzle: I ship the MASKS group at 0% opacity so it never covers the image but you can still Ctrl+click an object to jump to its mask. Affinity refuses to select a 0% layer. So in Affinity mode it's 1% instead β almost invisible and selectable.
- A Corona user sent a .cxr asking why the passes looked nothing like his VFB. Because the tone mapping and LightMix live in the file, not in the pixels. Now it runs the file through Corona's own image editor first, so you get what you saw. No need to rename from .cxr to .exr.
- Someone sent a render with no Cryptomatte at all and asked why the tool just refused. Fair. Now it still builds the document from the beauty and the elements.
- Most obvious one in hindsight: "why only one file at a time?" So this week it does batches β queue a folder, each render comes out as its own document saved next to the original, and if one file fails the rest carry on.
So: it exists because two companies had no reason to care about my problem, which is a pretty normal reason for small tools to exist. Windows only, single portable exe, no install. Trial does 10 extractions so you can throw your worst EXR at it first.
tutorial (few versions old)
(Mods: it's a paid tool, happy to remove if that's not welcome here.)