Is there 'Surface ID' render output in Blender?


Is it possible to create ‘Surface ID’ output in Blender? This option basically renders each material with a random color, just like on the examples below:

This is extremely useful in digital painting to easily separate things out in Photoshop or GIMP. If there is no such option, would there be any chance to put in on the wish list? :smiley:

Yes, there is Object ID and Material ID, you simply set a number to each object or material, and it is rendered in one layer as alpha masks.
Some while ago i used to make the materials as pure color emission, and a solid color for each material, and then i traced it to SVG.

you simply set a number to each object or material, and it is rendered in one layer as alpha masks.

Can you explain the latter a bit?

oh, i meant, pass, each pass has a layer.
Diffuse pass is stored in one layer, Glossy pass is stored in another, and so forth, Material and Object IDs are stored as such, like a pass, in one layer, if you go to the layers settings, and look under render passes, you can activate all passes, diffuse direct, indirect and everything, you’re gonna see Material ID and Object ID, activate them, then, if you render, in the compositor nodes, the render layer is going to have several outputs, including the material and object ids. if you save the render result as OpenEXR Multilayered, all the layers are going to be saved separatelly so you can composite them later.

Strictly speaking, it really doesn’t make sense for outputs such as material-ID or object-ID to be antialiased. These are, literally, two-dimensional matrices of numbers, the width and height of the output image. They provide, for every (x,y) coordinate of a generated pixel, the identity of the 3D-render object that provided the source of that pixel. They identify the pixel, but have nothing at all to do with the pixel’s (R,G,B,A) color-value. Anti-aliasing and so forth are modifiers of the color-values.

Uh-huh. Then why is Blender the only 3D app/renderer I know of that doesn’t antialias the surface ID pass/output?
I really don’t care what “strictly speaking” should happen, I want something that actually works. As they are now, the object/material ID passes are IMHO more or less an exercise in futility.

Would there be any chance to put it on the roadmap?
I’m wondering if they would accept such proposal…

Ok’ I’m late to the party but I was looking for that, found the way to do it and I’m posting it in case someone else is looking for the solution. :slight_smile:


I was looking for a solution to this problem from the very first day since I have switched to Blender 4 years ago. I understand the benefits of Cryptomatte and different ways of usage. But I wanted just one easy pass with material ID with every render, which I can save to PNG and use in Photoshop. In the end, I have made my own addon. If it could help anybody, please enjoy it.

Do you have any set up info for this? :slight_smile: