Specular to Metalness Conversion


Specular to Metalness Conversion

I appreciate it isn’t possible to just convert from one system to another exactly but can anyone point me to any guides.

I have a principled shader setup on a UV unwrapped model in blender and I’m trying to bake out the UV’s to display in a game engine environment.

If anyone could point me to a blender specific tutorial or any advice/tips it would be greatly appreciated.

I’ve exported my baked diffuse, AO and Normal maps to Materialize then used that to create the missing metalness etc.

Still a little confused though?



I’m not sure I am clear on what you’re asking.

Are you referring to a conversion between the two workflows, specular to metalness? What does your node setup look like?

The specular workflow uses an albedo, glossy, and specular map to define a surface. This is what you have?

The metalness workflow uses a base color (sometimes incorrectly called albedo or diffuse), roughness and metalness map to define a surface. This is what you’re trying to convert to?

You can use either workflow in Cycles, or you can start with one, and bake out to the other.

Thanks for your reply.

I understand the base colour being a flat image with no lighting effect on it.

It’s the Metalness map I’m having trouble with. I understand it’s binary ie. black/white on/off no in-between is that correct? How do I create/bake this UV map in blender from a specular principled shader?

Also I have a normal map which gives me overall model edge detail but ! can’t figure out how to bake out the fine detail/bump to a UV and would that then be the Roughness map?



I made the distinction above because there is a difference between diffuse(albedo***) and base color. I can go into more detail if you’d like, but it doesn’t really matter as I think we’re on the same page now.

Correct, the metalness is typically a black and white map that essentially tells the shader which parts are metal and which parts are dielectric.

The principled BSDF is geared for the metalness workflow, not specular. However, the BSDF alone does not generate any information about the metalness of your material. Rather, you define the metalness and feed it into the metalness input. Alone, this input is 0 / black.

There are several ways you can go about creating a metalness map, but it depends on what you’re trying to texture. It’s probably going to involve some amount of manual painting, or selecting groups of polys and assigning black for non-metal, and white for metal surfaces. Or if you’re trying to achieve something like metal edge wear in blender, there are various procedural techniques.

Roughness and bump are separate, but relatable things.
A roughness map is a grayscale map ranging from 0/glossy to 1/diffuse. Diffuse objects are really just super bumpy objects at a microscopic level.
Bump handles your larger scale surface detail.

I believe there is a way to bake a bump map into your detail normals map, but I’m unfamiliar as my normals are usually coming in from outside of Blender. I’ll let someone else chime in on that front. @Secrop, you have a tool for that, don’t you? I thought I read something, somewhere.


Yes, even that is a debatable term, for you purists that care about such things. :slight_smile:

1 Like

just for baking the normals…there’s the nodegroup, and the pynode (they work pretty much the same, thought the pynode has a few more options).

1 Like

Thanks that’s been really helpful!

So is roughness on a greyscale 0/glossy and black/1 rough or the other way round?

As a further example on a leather sofa model with wooden feet would the metalness UV be completey white? ie. no metal at all!

The gloss reflectivity info would come from a negative areas on a roughness UV and not the metalness shader in this case.

What I really need to do is combine/bake my leather fine texture surface detail with my deeper detail normal map to cover all bump together, and use roughness to define gloss/reflection.

Getting there I think, many thanks…

Roughness is 0 (black)/glossy to 1 (white)/diffuse.
Metalness is 0/non-metal to 1/metal.

In your case, you can forget about the metalness map. It’s really only needed if an object has a mix of metal and non-metal parts. Otherwise, it’s just 0 or 1.

The rest of your questions require a little more detail. I’m about to hit the sack, so we can continue tomorrow if your questions haven’t already been answered by then.

@Secrop, yeah the node group is the one I was thinking of. Thanks, man.

If I understand you correctly, you have a highpoly sofa with textures applied to it and want to bake the highpoly normal map and the leather texture normal map on a lowpoly mesh? If that’s the case, you don’t have to do anything special, Blender automatically combines the mesh and texture normals correcly while baking, as long as the normal map texture is in the normal map slot. Make sure to select Non-Color Data for the normal map texture and put a Normal Map node between the texture and your shader.

Yes, roughness and glossiness are the same texture, except they are inverted. You only ever use one of them. Which one you use depends on the engine or tool. Unreal for example uses roughness, while Source 2 uses glossiness.

Thanks, I have exactly that setup but it only bakes the poly edge detail of the high res model with but not the leather texture detail.

I’m using cycles by the way!

Thanks for help.

I have found the solution to baking combining fine bump to a normal map in cycles here…


Thanks for your help with these questions…

1 Like