Blender 4.2+ add-on
A material ID pass, the way V-Ray does it
Every material renders as one flat block of colour, so you open the image in Photoshop, magic-wand a colour, and get a clean selection of everything using that material.
What it does
A checkbox, not a workflow
It sits in the Passes panel next to Cryptomatte and the Shader AOVs, and the pass comes out of any ordinary render — including into a multilayer EXR, alongside Combined.
One flat colour per material
Colours come from a hash of the material name, so a material keeps its colour as the scene grows, and a re-render months later produces the same mattes.
Exact colours end to end
The hex shown next to a material is the hex that lands in the PNG. The pass bypasses the scene view transform (AgX would otherwise repaint every colour) and dithering is switched off, because a single pixel of noise is enough to break a tolerance-0 selection.
Crisp edges
The ID render uses one sample and no pixel filter, so no pixel holds a blend of two materials. A 90×90 test render of five materials contains exactly six colours — five materials plus black background.
Your compositor is left alone
Nothing is ever added to it behind your back. The pass is an ordinary AOV socket on the Render Layers node, so plug it in yourself — or press Add File Output Node if you want it written on every normal render.
Photoshop swatches
Exports a .aco swatch file with every swatch *named after its material*, plus a .csv legend. Load the swatches and you are clicking material names instead of hunting pixels.
Why the colours come out exact
This is the part that decides whether a magic wand at tolerance 0 works, and it is the part every hand-rolled ID setup gets wrong. Three separate things in Blender will quietly ruin a flat colour, and the add-on defeats all three.
What ruins it | What it does to your pass | Handled by |
|---|---|---|
View transform | AgX, Blender's default, repaints every flat colour into something else entirely | The export overrides colour management to Standard/sRGB |
Dithering | | Forced to 0 for the ID render, with a warning and a fix button in the panel |
Anti-aliasing | Edge pixels hold a blend of two materials, leaving ragged holes in a selection | The ID render uses one sample and no pixel filter |
The result: the hex shown beside a material is the hex in the file. A 900×600 render of seven materials with spheres, a torus and a cone contains exactly eight colours — seven materials plus the black background — with every material covering an identical pixel count. No blended edge pixels anywhere.
Known limits
Limit | Detail |
|---|---|
Anti-aliasing on a normal render | The pass on an ordinary render is filtered, so edge pixels blend between neighbouring materials. Fine as a soft matte, not for tolerance 0 — use Render ID Pass for exact colours. |
Materials set to Blended | A material whose Render Method is Blended writes no ID at all; you see through to whatever is behind it. Set it to Dithered, or pin and exclude deliberately. Glass and transmission materials on the default Dithered setting are fine. |
Partial alpha | A material with Alpha below 1 gives partial, dithered coverage rather than a clean matte |
Linked materials | Library materials cannot be edited, so they are skipped and counted in the report. They render black. |
Grease pencil materials | No shader AOV path; skipped |
Node-less materials | Switched over to nodes so they can carry the pass. The count is reported, because it does edit the material. |
Black is not a material | Excluded, linked and skipped materials all render black, the same as the background |
Depth of field, motion blur | The crisp ID render is a single sample, so neither is applied to the pass |
Compared with the alternatives
| For each option | Cryptomatte | Material Index pass | Emission materials by hand | Material ID |
|---|---|---|---|---|
| Usable in Photoshop with no plugin | No | No | Yes | Yes |
| Magic wand at tolerance 0 | — | — | Only if you get all three exactness traps right | Yes |
| Work per material | None | Set an index by hand | Build and assign a shader | None |
| A new material is covered | Automatically | You must set its index | You must make another shader | Automatically |
| Colours reproducible months later | — | — | Only if you kept notes | Yes, name-hashed |
| Named swatch file for Photoshop | No | No | No | Yes |
| Extra render needed | No | No | Full re-render with lighting | About a second, no lighting |
| Comes out of a normal render too | Yes | Yes | No | Yes, as an AOV |
| Cost | Free | Free | Free | Paid |
At a glance
- Blender
- 4.2 or newer (developed on 5.2 LTS; CI runs 4.2 and 5.2)
- Engines
- Cycles and EEVEE — verified pixel-identical
- Where
- Properties ▸ View Layer ▸ Passes ▸ Material ID
- Setup
- One checkbox. No build step, no per-material work
- Pass type
- Real AOV — appears on the Render Layers node and in multilayer EXR
- Exports
- 8- or 16-bit PNG, Photoshop .aco swatches, .csv legend
- ID render time
- About a second — no lighting is needed
- Licence
- GPL-3.0-or-later
Buy Material ID
- Material ID 1.1.0, for Blender 4.2+
- No licence key or account needed
CA$0
Charged in your currency at checkout. Plus tax where it applies.
Before you buy
Which versions does it work with?
Blender 4.2 or newer. It is developed against 5.2 LTS, and CI runs the test suite on both 4.2 and 5.2 before every release.
Does it work in Cycles and EEVEE?
Both. The pass was verified pixel-identical between them across glass, transmission, transparent and partial-alpha materials.
Why would I use this instead of Cryptomatte?
If your selection happens inside a compositor that understands Cryptomatte, use Cryptomatte — it handles overlapping and anti-aliased coverage properly, and it is free and already in Blender.
This is for the other case: the selection happens in Photoshop. Cryptomatte needs a plugin there and works from a manifest rather than colours. A flat colour pass needs nothing — you magic-wand a colour and you have the material.
Can't I just do this by hand with emission materials?
You can, and plenty of people do. It works until you count the cost: a shader built and assigned per material, redone whenever you add one, plus a full re-render with lighting. And it usually still fails at tolerance 0, because three separate things in Blender quietly break flat colours — the AgX view transform repaints them, dithering speckles 8-bit output by ±1, and anti-aliasing blends every edge pixel. Get any one wrong and your selection comes out with ragged holes.
This add-on removes the per-material work and handles all three.
What about the Material Index pass that's already in Blender?
It writes an integer, not a colour. You set an index by hand on every material, then build ID Mask nodes in the compositor to turn indices into mattes. Nothing reaches Photoshop as a flat colour without more work, and a new material silently gets index 0 until you notice.
Is it worth it if I only have five materials?
Probably not for the colour assignment alone — you could pick five colours yourself. It is worth it for the exactness, because that is the part that is fiddly regardless of how many materials you have, and for the named swatch file.
Do I need a licence key or an account?
No. No key, no account, no internet connection. Install the zip and it works.