Metallic option for Cycles baking

I’ve created a very efficient workflow which allows me to generate very detailed assets very quickly for a game I am working on. The workflow however relies on mixing BSDF to keep the shader editor node networks clean and organized:

Right now, I am stuck in a situation where I can utilize the great toolset of Blender combined with this workflow to rapidly produce the assets but I am unable to get them out of Blender into the game engine as the Metallic baking output is missing. Given how complex the node networks are, it would be very difficult to reconstruct the entire workflow to happen before to BSDF closure by mixing the individual material parameters. Even after that, I would still have to be using the ugly workaround of utilizing emissive output to bake unsupported channels.

I was so desperate to get this working I even tried to dig in the Blender’s source code, despite not having anywhere near sufficient skillset to do that. I used roughness baking channel as reference, and simply duplicated and renamed occurrences to “metallic” where it applied. In the data passes enum, in the renderer rna, session file, etc… but I’ve got stuck when I was following roughness reference through some shader_bsdf_average_roughness function all the way into the PrincipledDiffuseBsdf structure, where there is some member variable for roughness but none for metallic to be found :confused:

The requests to add Metallic baking channel are already out there.

Could we finally get metallic at least for 3.0? I believe the change itself is not that big but the benefit is huge, because metallic is literally the only, last missing component, which currently makes Blender incapable of baking complete, basic PBR texture sets. Which is especially odd since the PBR is currently the primary shading workflow not only in Blender, but also in rest of the industry software.

Blender relies on PBR shading, yet is unable to produce textures for PBR shading.

7 Likes