Blend Nodes in Substance Designer

The Blend node is one of the most important nodes in Substance Designer. This tutorial is an effort to take some of the guesswork out of which Blending Mode you need to achieve various effects. I’ll keep things as simple as possible.

A Note on Height Maps

Substance Designer does not show height maps by default. If you’d like to enable that, follow this guide: Rendering Height in Substance Designer

Adding or Subtracting Height Relatively

Here’s an example where the goal was to have raised dots, relative to the existing height. You’ll notice that this includes slopes at the edges of the raised blocks.

To achieve this effect, you can blend a foreground of dots on top of a background block using the “Add (Linear Dodge)” Blending Mode.

It really doesn’t matter what you choose for foreground and background, the important thing is to use Levels nodes before blending them together with the Add Blending Mode. In plain English, you need to make both darker so that they can be safely added together without maxing out the whitest pixels.

Grayscale pixels are represented with a value between 0 and 1. Black is 0, white is 1, and anything in between is a decimal fraction, e.g. 0.3 is a dark gray, 30% of the way from black to white. The Levels node can help clamp the darkest and brightest pixels so that you never add two values together that will sum to more than (and be cut off at) 1.

The screen clipping above is from the Properties panel of the Levels node from my dots. The arrows on the bottom of the histogram allow us to set the blackest and whitest values. By setting the lower-right arrow at about 25%, I’m saying that the dots will never be brighter than 0.25.

I set the lower-right arrow of the Levels node for my background to about 0.5, so the maximum we’ll see when the brightest spots are added together is 0.25 + 0.5 = 0.75. You can choose whatever numbers you want here. Just make sure they add up to something less than or equal to 1.

All that’s left is to pass both of these into a Blend node, set the Blending Mode to “Add (Linear Dodge)”, and pass the output on to a Normal node and directly into the Height map.”


If you switch the Blending Mode to “Subtract”, you will get the opposite effect. The catch in this case is that because the darkest a pixel can go is 0 (pure black), dots will not appear anywhere that the background is already black.


Combining Height with Max and Min

The “Min” and “Max” Blending Modes take either the minimum pixel value (darker) or maximum pixel value (lighter) between foreground and background inputs.

In this first image, foreground and background are combined with “Min”.

As the pyramid shape and grid are combined, the Blend output is the darkest pixels from both inputs. The grooves of the grid pattern are the same dark color, so the depth is the same, regardless of the height of the blocks in between the grooves. This is different from the Subtract Blend Mode, which would have kept the groove depth relative to the pyramid.

The outputs are simple here. Just feeding the Blend output into a Normal node and out to Height.

If result of using the “Max” Blend Mode is the exact opposite. The brightest pixels are taken.

Blending in Finer (Darker) Detail with Multiply

Here’s an example of a bamboo weave pattern. As with most materials, the larger shapes are created first, then the finer detail/texture is added in after.

To add finer detail to a larger shape or pattern, you can use the Multiply Blending Mode. For this material, Anisotropic Noise is multiplied in to get the fibrous texture of bamboo. The Weave Generator node has convenient masks that can be used for the Opacity of the Blend node so that the fibers can be applied to the correct part of the image with the correct rotation (the Transformation 2D node just rotates 90 degrees).

The Multiply Blending Mode takes the pixel value of the foreground and background and multiplies them together. In plain English, we are combining darkness and shading in fine detail.

In grayscale, pixel values go from 0 (black) to 1 (white). So in the case where we multiply a pixel value of 0.8 (light gray) and a pixel value of 0.5 (middle gray), the resulting value is 0.8 * 0.5 = 0.4 (darker gray). If pure black pixels result in multiplying by 0, so the result is always black.

After doing the two Multiply blends, I fed the blend into a Gradient map with a few colors sampled from a photo of a bamboo basket I found on Google.

The rest is straight forward. I passed in the texture through a Normal node, inverted the colors and used that for the Roughness output to add a bit of shine, and used a Levels node to make the height a bit more subtle.

[More coming soon…]