EXR-IO and Cryptomatte: A Compositing Guide for 3D Artists
Introduction
When we render complex 3D scenes—whether architectural visualizations, character work, or product shots—we're rarely satisfied with a single flat output. We need separation. We need control. We need the ability to adjust materials, isolate objects, and refine color grading after render time without touching the 3D scene itself. This is where multi-layer OpenEXR files become essential, and where EXR-IO and Cryptomatte transform our compositing workflow.
At Super Renders Farm, we work with distributed rendering pipelines that generate enormous datasets of multi-layer EXR sequences. These files contain dozens of passes—beauty, diffuse, specular, normal maps, object IDs, material IDs—all stacked in a single format. Accessing and manipulating these layers efficiently is not optional; it's foundational to production work. The EXR-IO 2.0 Photoshop plugin, combined with Cryptomatte support, gives us the tools to do exactly that.
This guide walks through the complete workflow: from understanding what EXR-IO and Cryptomatte are, to setting them up in Photoshop, to implementing real-world compositing strategies that we use on our farm.
What Is EXR-IO?
EXR-IO is a Photoshop plugin that reads and writes OpenEXR files—the industry standard for visual effects and professional rendering. Unlike standard Photoshop file formats, OpenEXR (.exr) can store multiple layers, channels, and metadata, all with 32-bit floating-point color depth. This means we retain full color precision and dynamic range from the render engine.
EXR-IO allows Photoshop to:
- Import multi-layer EXR files directly as Photoshop layers
- Read arbitrary channel data from render engines (V-Ray, Arnold, Corona, RenderMan)
- Access metadata embedded in the EXR file (render time, engine version, frame number)
- Export Photoshop comps back to EXR, preserving layer structure and color space
For us, this means we can take a 50-layer EXR file from our render farm, open it in Photoshop, and immediately see every pass separated into its own layer. No conversion. No loss. No guesswork about which pass corresponds to which channel.
What Is Cryptomatte?
Cryptomatte is a standard layer encoding system developed for visual effects. Instead of traditional matte channels (which store grayscale masks), Cryptomatte encodes object and material IDs into layers using an encrypted hash. This means:
- We can click on any object in the rendered image
- Cryptomatte generates a perfect matte mask for that object automatically
- The matte captures motion blur, reflections, and transparency correctly
- We can select multiple objects and combine mattes
- Cryptomatte works across render engines (V-Ray, Arnold, Corona, RenderMan, all support it)
When we enable Cryptomatte output in our render engine, the renderer creates two layers per matte type: Object and Object00 (the data layer and the matte layer). EXR-IO can read these layers directly in Photoshop, and Photoshop plugins (or manual selection workflows) can extract the mattes we need.
The value here is speed. Instead of hand-painting masks or running expensive external tools, we click an object, and we get a pixel-perfect matte. For character work with hair, feathered reflections, or complex transparency, this is game-changing.
Setting Up EXR-IO in Photoshop
Before diving into Cryptomatte workflows, we need EXR-IO installed and configured.
Installation:
- Download EXR-IO 2.0 from the official EXR-IO site
- Extract the plugin to Photoshop's Plugins folder (typically
Applications/Adobe Photoshop/Plugins/on Mac orProgram Files/Adobe/Adobe Photoshop/Plugins/on Windows) - Restart Photoshop
- Verify installation: go to File > Open and you should now see
.exrfiles in the file browser
Preference Settings:
Once installed, open Photoshop preferences for EXR-IO:
- Color Space: Set to "Linear" if your render output is linear (standard for CG). Set to "sRGB" only if explicitly required by your render engine
- Alpha Premultiplication: Match your render engine's output (most engines use "Straight" alpha)
- Layer Organization: Enable "Auto-Flatten" only if you want to merge all layers on import—we do not recommend this, as we need separation
- Memory Management: If working with 8K sequences, enable "Lazy Load" to prevent Photoshop from loading all layers into RAM at once
EXR-IO: Basic Multi-Layer Workflow
Opening a multi-layer EXR in Photoshop with EXR-IO is straightforward:
- File > Open, select your
.exrfile - EXR-IO presents a dialog showing all available layers
- Select which layers to import (or import all)
- Click Open
- Photoshop creates a new document with each EXR layer as a Photoshop layer
This is where precision matters. A typical render from our farm might export:
- Beauty (final composite from the render engine)
- Diffuse Direct / Diffuse Indirect
- Reflection / Refraction
- Specular
- Shadow
- Ambient Occlusion
- Z-Depth (for fog and depth effects)
- Normal Map
- Object IDs
- Material IDs (where Cryptomatte applies)
Each becomes its own Photoshop layer. From there, we:
- Adjust layer blending modes (Multiply for shadows, Screen for reflections)
- Apply adjustment layers (Curves, Levels, Hue/Saturation)
- Use masks to constrain effects to specific regions
- Export the final composite back to EXR for archival or downstream work
The critical point: we work non-destructively. The original EXR and all its data remains intact.
Understanding Cryptomatte Layers in EXR-IO
When a render engine outputs Cryptomatte data, the EXR file contains multiple layer pairs. For example, a single object Cryptomatte pass generates:
Object(the matte layer—the actual mask)Object00(the data layer—the encrypted hash)
If the render engine also outputs Material Cryptomatte:
MaterialMaterial00
When we import the EXR with EXR-IO, both layers appear in Photoshop. The matte layers (Object, Material) are grayscale images where white = selected, black = not selected. The data layers (Object00, Material00) contain the hashes we need if we're using plugins or external tools to decode the mattes.
In a typical workflow, we focus on the matte layers themselves. A Cryptomatte object matte can be used directly as a layer mask, or duplicated into an adjustment layer mask to control color corrections per-object.
Cryptomatte Workflow: Render Engine Setup
To output Cryptomatte data, we configure our render engines. Here's how we do it across different engines used at Super Renders Farm.
V-Ray (3ds Max, Maya, Cinema 4D):
- Open the V-Ray Render Settings
- Navigate to Render Elements
- Add a new element: "Cryptomatte (Object)"
- Enable "Multi-Matte Mode" if you want both Object and Material data
- Set output path (EXR format)
- Configure file naming:
[Scene]_[Layer]_[Pass].exr
Arnold (Maya, Houdini):
- In AOV Manager, create new AOVs
- Select "Cryptomatte" as the AOV type
- Choose "Object" or "Material" or both
- Render and Arnold writes Cryptomatte data directly to the EXR
Corona Renderer (3ds Max, Cinema 4D):
- In Render Setup, go to Corona Map Packs
- Enable "Cryptomatte" pack
- Check "Object" and "Material" as needed
- Render to EXR
All three engines output standard Cryptomatte data. The difference is UI. The output format is identical.
Exporting Multi-Layer EXR with Cryptomatte
Once your render is complete and includes Cryptomatte passes, the engine writes an EXR file containing:
- All standard beauty and technical passes (diffuse, specular, etc.)
- Cryptomatte Object layers and data
- Cryptomatte Material layers and data (optional)
- All metadata (render time, frame number, engine version)
We save these at the highest quality settings: 16-bit or 32-bit float, no compression (or lossless ZIP compression to save disk space). A single frame from a complex scene might be 500 MB to 2 GB. For sequences, we optimize storage using lossless compression and store on fast SSD arrays.
Photoshop Masking with Cryptomatte Layers
Once the EXR is open in Photoshop via EXR-IO, we have the Cryptomatte matte layers available. Here's our workflow for extracting and using object masks.
Step 1: Locate the Cryptomatte Matte Layer
In the Layers panel, find the layer named Object (or Material for material-based mattes). This is a grayscale image where each object/material has a different shade.
Step 2: Create a Layer Mask
Select the layer you want to mask (e.g., a color adjustment layer). Right-click > Add Layer Mask. Ensure "Layer Mask" is selected (not "Vector Mask").
Step 3: Assign the Cryptomatte Matte to the Mask
Select the layer mask (not the layer itself—the white rectangle in the Layers panel). Copy the Cryptomatte Object layer. With the mask selected, Paste. The Cryptomatte data is now controlling what the adjustment layer affects.
Step 4: Refine the Mask
If the mask is too soft or includes unwanted areas, adjust it:
- Use Levels or Curves on the mask (select the mask, not the layer)
- Apply a Threshold adjustment to create hard-edged selections
- Use a brush to paint in or out of the mask for manual refinement
This approach is fast. Instead of hand-selecting objects or using AI selection tools, Cryptomatte gives us precision based on the render engine's own object IDs.
Practical Compositing Example: Character With Hair
Let's walk through a specific example: compositing a character with complex hair. The challenge is that hair intersects with the character's face, shoulders, and background. A traditional matte would need careful edge work. Cryptomatte handles this seamlessly.
Render Setup:
- Render the character and background with V-Ray or Arnold
- Output standard passes: Beauty, Diffuse, Specular, Shadow, AO
- Output Cryptomatte Object with IDs for:
Character_Body,Character_Hair,Environment
In Photoshop:
- Open the EXR with EXR-IO
- Import all layers
- Create a Hue/Saturation adjustment layer above the Beauty layer
- Add a layer mask to the adjustment layer
- Alt+click the layer mask, paste the Object Cryptomatte layer
- Use Curves or Levels on the mask to isolate the hair (the specific shade corresponding to
Character_HairID) - In the adjustment layer itself, reduce saturation and increase warmth for the hair only
- Add another adjustment layer for shadow darkening, masked to the hair again
Result: We've separated hair adjustments from body adjustments without manual masking. The edge quality is determined by the render engine, not by our hand work.
Handling Render Farm Output: Multi-Frame Sequences
At Super Renders Farm, we don't typically render single frames. We render sequences. An animation might be 240 frames, and each frame produces a 1 GB EXR file with Cryptomatte data. Automating the import and organization is essential.
Workflow:
- Batch Consolidation: After the render completes, we copy all EXRs from the render farm to a local SSD array
- Metadata Review: We check one or two frames in Photoshop (via EXR-IO) to verify all expected layers are present
- Color Space Confirmation: We verify the color space matches our output spec (Linear, sRGB, ACEScg, etc.)
- Python Scripting (Optional): For complex sequences, we write Python scripts (Photoshop has a Python API) to batch-import EXRs, apply consistent masks, and export adjusted sequences
For sequences, we typically don't open all 240 frames in Photoshop at once. Instead, we:
- Develop the look on frame 1 (with Cryptomatte masks in place)
- Apply the same Photoshop adjustment layers to the entire sequence using "Edit > Fill Layers" or Action-based batch processing
- Export each frame back to EXR
- The result is a new EXR sequence with the same compositing applied to all frames
This is where the power of EXR-IO becomes tangible. We preserve all layers and data through the edit cycle.
FAQ
Q: Can EXR-IO read 8-bit or 16-bit EXRs, or only 32-bit? A: EXR-IO reads all bit depths—8-bit, 16-bit, and 32-bit float. Photoshop internally converts to 32-bit when working with floating-point EXRs. For archival and delivery, we typically export 16-bit EXR, which balances file size and precision.
Q: Do I need to purchase a separate Cryptomatte plugin for Photoshop? A: No. EXR-IO reads Cryptomatte layers as standard grayscale data. You can use the matte layers directly as masks without additional software. Third-party Cryptomatte plugins (like Cryptomatte for After Effects) offer automated picking tools, but for Photoshop work, the matte layers themselves are sufficient.
Q: What if my render engine doesn't support Cryptomatte? A: Older engines (V-Ray 3.x, older Arnold versions, some Corona builds) may not have Cryptomatte built-in. Check your engine documentation or update to the latest version. Cryptomatte has been standard in modern render engines since 2019.
Q: Can I export a Photoshop document back to EXR with EXR-IO? A: Yes. File > Export As, select EXR format, and EXR-IO writes all visible Photoshop layers to the EXR file. Choose 16-bit or 32-bit, set compression, and save. The exported EXR retains layer structure and metadata.
Q: How do I handle color space mismatches between the render and Photoshop? A: Always verify your render engine outputs the same color space as your Photoshop working space. We use Linear color space universally in our pipeline. In EXR-IO preferences, set Color Space to "Linear." If your image appears too bright or dark after import, verify the render engine's output color space and adjust the EXR-IO preference accordingly.
Learn More
For foundational compositing techniques, see our guide to best 3D rendering software. For deeper technical workflows, explore professional rendering workflows for VFX teams.
Additional resources: EXR-IO Official Documentation