Adding surface defects by adding a second material on top without copy paste of material node setup?


I’ve always wondered if there is a way to combine two materials ontop of each other without fully copying one materials node setup into the other one and than using a mix shader node.

Ideally like this. You have an object, say a laquered piece of wood and you want to add another material for surface defects on top. Anything like raindrops, scratches or the like.
Say you have a material already perfectly defining your wood, and for the sake of it, say it is a complicated node setup.
Say you already have a material already perfectly defining your defects, and for the sake of it, say it is a complicated node setup too.

Now normally I would take the wood texture and copy paste the nodes of the surface defects into it and use a mix shader to combine them. Essentially this creates a new material combining the two.

What I am looking for is a fast and simple way to keep the two node trees apart (and the individual materials intact) and simply kind of drop the semi transparent surface defect shader onto the base material. Similar to what you would do in a photo editing software. Base material and drop a surface defect layer on top.

How do you do this without combining the two node trees & copying nodes in between them. Is there an add-on which can achieve this?

Thanks for your thoughts,


I collapse to a node group, then I can use the node group in any material I want. The downside is having to enter the node group to edit the contents, but the inconvenience level is far from as bad as when we couldn’t preview things within the node group.
But no, a single face can only be affected by a single material.
Raindrops and scratches on lacquer, you may want to approach it a bit more complex than it first appears. Wetting a material will make the substrate less specular (IOR interfaces), darker, and more saturated depending on the class and porosity of the substrate (ignoring hue shifts). So what feeds and mixes the raindrops might also have to drive part of the substrate. For lacquer the same thing happens to specularity, it may darken by angle depending on thickness, and you may want to let some bigger bumps bigger show through into the lacquer itself - unless you pour over a wooden floor, the gaps between the planks will not be lacquered. Even if so, you may want a low frequency bump on only the lacquer as well as bumps for scratches.
Example of a clear lacquered floor (by pouring, not individually lacquered boards pre-lay):

Note how the “wet” floor is darker and more saturated, and how there is a waviness to the reflections. If the floor was already shiny, most of this would go away (lowered specularity) - this happens to all dielectric materials (not metals). Observe the reflections on a plastic spoon and a metal spoon in a glass of water. However, if it sells without all this added complexity, go for it.
But yeah, node groups is the way to go. Any value not exposed to the node group input side you only have to change inside the node group to affect all materials it is used. And now since we can preview the inside, it’s not really a hazzle at all anymore.

Thanks for your answer.
While you are right in what you say its not what I am looking for.

I am not after a solution for partially wet surfaces or similar, as you describe there are ways to deal with it.
What I suggest is a simple and efficient solution to add flat out different surface deficiencies to complete surfaces which may have already a decent node setup.
Say I also have a decent nodesetup for adding sais defficiencie material on to (a bit darker and so on) I am looking for a one click solution WITHOUT entering the node editor. I am able to use it, but if you have complex 3D scenery which you render in 360 degree, as I do frequently, it is just cumbersome and inefficient to edit each surface in the way you describe. It would be far easier (and way faster) to be able to just plonk an already completly preparered secondary material from a material manager on top.

In 90% of cases an 80 % result is good enough, as long as you gain some speed that way.

The solution I am after would simply combine the material trees of two material slots which one manually adds to an object from a library, remove them from the object and replace them with a material slot of the new combined material. In many cases that would really speed up the workflow and it would not mess up the library material nodes neither.
All in a more or less one touch operation.