Entry 24 · Passes
Cryptomatte
Selecting an object after the render rather than before it.
- Entry
- 24
- Section
- 05 Passes
- By
- Clare Dunnet
- Read
- 2 min
One mask per object, generated once
Every compositor has done it: a render arrives, a client asks for a tweak on one object, and the only way to isolate it is to re-render with a visibility override or dig out a matte that was never requested. Cryptomatte solves the problem upstream, at render time, encoding every object — and every material, and every asset — into a set of float passes that can produce a clean matte for any element in the scene at any point downstream, without a second render.
The system was developed at Psyop and released as an open specification, which is why it now appears across virtually every production renderer and compositing application. The core idea is simple: each object in the scene is assigned a unique hash — a deterministic ID derived from its name — and that hash is written into the red and blue channels of each EXR layer, with the matching coverage values in the green and alpha channels. One layer can hold a limited number of simultaneous IDs per pixel; real scenes use several such layers stacked together. Wherever a pixel sees multiple objects — a feathered edge, a transparent surface, a motion-blurred boundary — the coverage values record exactly how much each object contributed. The matte that comes out the other side is not a binary cutout. It is a properly anti-aliased, sub-pixel-accurate mask.
That accuracy is the thing worth understanding. Cryptomatte is not a render-time object ID pass in the old sense, where an integer channel forces a pixel to belong entirely to one object and aliasing eats the edges. Because it stores fractional coverage, a strand of hair crossing a background lands correctly: some fraction of the pixel is hair, the rest is sky, and a compositing tool can reconstruct both mattes at full quality. The same mechanism handles transparency — a wine glass in front of a label gives the glass its correct partial matte and leaves the label's matte intact underneath.
What you can extract depends on what the renderer wrote: object names, material names, or asset names (groupings defined at export time). A scene where objects are named carefully gives a compositor total per-object control; a scene where everything is left at default naming gives them very little. Naming discipline at the modelling and scene-assembly stage is, in that sense, part of the lighting pipeline.
The cost is modest — a handful of extra float layers in the EXR — and the information is lossless relative to what the renderer knew. No separate matte pass, no held-out beauty, no re-render. The passes that a finished frame is assembled from tend to grow with production demands; Cryptomatte is the one that grows the compositor's freedom rather than their render time.
More in Passes
Every entry in this section is listed on the Passes page, and all twenty-four sit in the full register.