Cryptomatte - OpenEXR's hot new de-facto feature

If you find it silly to be a fanboy of a file format, then count me guilty as charged: I love OpenEXR. It's elegant yet powerful, specifically tailored to the needs of the VFX industry, it's the unsung hero of the silver screen. If you read my book you already know about the numerous amazing extensions: Tiled EXR for working with huge images, stereoscopic SRX files, or unlimited embedded layers for extra flexibility in compositing. Truly remarkable. Cyptomatte is the latest - although somewhat unofficial - extension.

Cryptomattes solve the eternal compositing question: How can you select a particular material/object in a rendered image?

You see, up until now everybody was depending on Material ID or Object ID passes, more commonly known as "clown pass". By rendering a flat color for each material, the hope was to extract a selection mask for targeted adjustments. That strategy works great for texturing (i.e. in Substance Painter), because here that mask only needs to provide a starting point for further refinement. But for compositing, such ID passes never worked reliably.

Highslide JS
Example of a classic ID pass from Trollbridge


The trouble is, on the border of two surfaces you get antialiasing, and that naturally graduates through all the colors inbetween, which may happen to include colors of other masks. This cross-talk between colors makes it nearly impossible to extract precise masks for fine structures and details. Worse even, in real production scenes you may well have hundreds of materials and objects in a scene, and then the ID colors end up very close to each other - completely defeating the purpose of easy selection.

Highslide JS
Why traditional ID passes never really worked.


So the whole concept of rendering compact ID passes has always been questionable at best. In real life we either constrained ourselfes to individual alpha masks on-demand (only when the compositor asks for it), or resorted to manually bundling up 3 masks at a time in RGB layers. Tedious monkey work for the CG artist, that also inflates the file size, yet still leaves a non-zero chance to receive panicked phone calls with matte requests from the comp department.

Cryptomatte solves all that.


And best of all, it does it fully automatically. By using an auto-generated combination of ID and coverage masks, it can deal with subpixel-accuracy, motion blur, transparencies, and automatically packs all that data in the most efficient form. More importantly: it also includes a clever hashing mechanism to preserve the names of materials and objects. That means, instead of picking a color in compositing, you can literally pick materials from a list!


Originally developed by Jonah Friedman & Andrew C. Jones at Psyop, this idea was just too good to remain a secret. They published their tech at SIGGRAPH 2015, proclaimed it an Open Source project, and it has quickly turned into a buzzing grassroots-like movement to integrate it everywhere. By now Cryptomatte is the de-facto standard for ID mattes, it is readily supported in V-Ray, Houdini, Blender Cycles, RenderMan, Redshift, Clarisse, Arnold, Nuke, Fusion, Flame, After Effects. The latest addition is Lightwave 2018 support, via Micheal Wolf's EXRTrader plugin:


Big thanks to all involved! Even though my beloved Modo is not on that list yet, I'm very happy for all my fellow CG artists and compositors, whose lifes have just become a little bit easier. And it's also a shining example of a good idea sweeping through the industry, fueled by the power of Open Source, and establishing a de-facto standard solution for a previously painful problem. Go Crypromatte, Go!

Grab the plugins for your pipeline from https://github.com/Psyop/Cryptomatte.

And if you're in Vancouver for SIGGRAPH2018, don't miss your chance to meet the creators at the first ever Cryptomatte BOF meetup:
"Cryptomatte - Present and Future Uses" / Monday August 13, 3:30pm-5pm / Vancouver Convention Centre, East Building, Meeting Room 11

Next Page