Mixing BSDFs

I’m tying to figure out what is the best way to mix shaders.
One way is to creade one BSDF for i.e. shiny metal, another one for rust and then just use a mask to distribute them.
Another way (the propper way, apparently) is to use just one BSDF while all textures should be mixed in advance and the result fed to the appropriate slots (colour, roughness…).

So I made a little experiment. I have two Susannes, each with different material created as per above. To me, the results are identical. Admitedly, it’s a simple material, I’m mixing only colours, but I assume the same case can be made for any other parameter?

My question is, is there any significant down side of either of the methods? Is there a case where there would be a noticeable difference in the result? Is there a performance difference?

One version of material

Another one

Both next to each other
Screenshot (288)

the result should be the same and I doubt it makes a big difference in terms of calculation, in the first case though you could set a different roughness for each Principled BSDF for example, but in the second you could plug another ColorRamp in the Roughness value to get the same result… So I guess for this precise case choose the simplest one, which is probably the second one

Can’t say anything for performance, but having two BSDFs makes more sense since rust and metal are two different “materials” entirely with different Color, Metallic and Roughness values. If anything it would simply be easier to edit.
That said, both setups should present no trouble for baking textures for when/if you need to export into another engine.

1 Like

Yeah, the example above was just that - a simple example. I agree that combining multiple BSFDs makes sense in case of complex, vastly different materials like metal vs dirt/rust. It’s also easier to manage when each material has its own textures for diffuse, roughens, normal etc.

I did read somewhere that blender has some issue with multiple BSFD material (something about screen space reflection?), but that might be old, inaccurate or plain wrong info.

So that’s why I reached out to the community for some opinions/ best practices :slight_smile:

It’s just easier for me to manage several complete materials mixed together. And often I need options that Principled don’t provide. Pretty much the only time I’d start mixing all parameters are if there are very few of them, or if I had to make a setup compatible with an external rendering engine. I may start out mixing parameters when it is convenience, only to separate them out to different trees when things get complex or I need easier to understand control.