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

dither_intensity defaults to 1.0 and speckles 8-bit output by ±1, so flat areas are not flat

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 optionCryptomatteMaterial Index passEmission materials by handMaterial ID
Usable in Photoshop with no pluginNoNoYesYes
Magic wand at tolerance 0——Only if you get all three exactness traps rightYes
Work per materialNoneSet an index by handBuild and assign a shaderNone
A new material is coveredAutomaticallyYou must set its indexYou must make another shaderAutomatically
Colours reproducible months later——Only if you kept notesYes, name-hashed
Named swatch file for PhotoshopNoNoNoYes
Extra render neededNoNoFull re-render with lightingAbout a second, no lighting
Comes out of a normal render tooYesYesNoYes, as an AOV
CostFreeFreeFreePaid

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

0 $

Facturé dans votre devise au paiement. Taxes en sus, s’il y a lieu.

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.