Take notes about Textures and decals

In brief, I’ll explain the fundamental differences between a procedural texture and one created for a specific object.

For example BaseColor:

The texture on the left was created procedurally—meaning it was produced by blending different types of noise6 and applying certain filters to achieve this effect. In theory, I could apply this texture to any object, and each would more or less look as though it were made of stone.

The image on the right, however, shows a texture made specifically for a particular object (a rusty cabinet) with a UV map. This type of texture can’t be applied to just any object (unless it has a matching UV layout).”

(example for illustration on the model Suzanne)

Differences between Substance Painter and Substance Designer

Substance Designer vs. Substance Painter Comparison

As you can see, although these programs may look quite similar at first glance, the way you create within them is quite different. In Substance Designer (and other similar programs), as I mentioned earlier, creation is done through node-based workflows. Each node has a specific function—one generates noise, another blends it in a specific way with a different type of noise, while another creates a Normal Map, and so on. By arranging these nodes in a particular way, we can generate the textures we need in bitmap format.

In Substance Painter, however, the process is different because we work on a specific mesh. It is a more artistic tool, somewhat resembling Photoshop. However, this doesn’t mean that everything is painted manually with a virtual brush. SP includes a wide range of mask generators. After importing a mesh into the program, we generate bitmaps that define certain parameters (e.g., the angle between faces, wall thickness, etc.), which allow us to use the appropriate mask generators. For example, if we create a rust texture and apply a generated mask, the rust won’t cover the entire object but will appear only in specific areas.

How mask works

Now that I’ve roughly explained the differences between these programs (though I could go into much more detail), let’s return to the main topic—procedural textures and decals.

Problems, that I’ve met

In general, I’m self-taught, and before Take Notes, my experience with Substance Designer was very limited (maybe 4-5 textures?). So I was learning on the go.

The first thing I had to figure out was AORM textures. We can create them very easily using the „RGBA Merge” node—just plug in the textures one by one, and we get a combined output. However, this is where I ran into my first issue. The RGBA Merge node has four inputs, with the fourth being the alpha channel (transparency). I assumed that if I left this input empty, it would simply output an RGB texture without alpha, but that wasn’t the case. By default, the missing alpha channel is set to 0, which means full transparency.

To make things even trickier, in the texture preview window, everything looked fine—since it only displays RGB by default, and the alpha channel is only visible when manually toggled. No matter what format I used, Substance Designer either exported an empty file or a completely black texture (depending on whether the format supported an alpha channel or not).

Node RGB Merge and small but important button

It took me about 30 minutes to figure it out. The solution was simple—connect a „Uniform Color” node set to white to the alpha input.

Most of my textures were made by eye—I had a reference on one monitor and Substance Designer on the other. Creating these kinds of things is mostly trial and error. Of course, after working for a while, you start recognizing certain useful node combinations, but when watching tutorials, everything always seems way easier than it actually is.

Now that I’ve exposed my incompetence, let me show you a cool trick for decals (one I haven’t seen in any Indian tutorials 😆).

Most decal textures we use are streaks or drips, and the easiest way to create them is using noise textures. The procedural noise types in Substance Designer fill the entire image, which is great for seamless tiling. But what if we want to cut out a specific part of the noise? We could use a mask, but what kind of mask? A square? Triangle? Circle?

The problem is that organic shapes are hard to cut out with simple geometric masks. This is where two nodes come to the rescue: 2D Spline & 2D Spline Fill.

The 2D Spline node lets us draw an irregular shape around the part of the noise we want to use. Then, we apply 2D Spline Fill to fill it in. We can further modify this mask—for example, applying a Warp node with another noise texture plugged in to slightly distort the edges.

2D spline & 2D spline fill setup

While creating these textures, I really started to like the Warp node (and its entire family). It works by distorting one texture based on another in a specific way, which is super useful. I was already familiar with this concept from Blender, where plugging a texture’s output into another texture’s vector input results in a warped effect.

How warp node works

Conclusion

I don’t remember any more sins, but I repent for all of them…
Andrew Price, Donut King, be with us, fellow artists.

To wrap it up, here’s a small comparison—an early production stage where all walls had the same texture, versus the current version, where there are custom textures and decals.

  1. Base Color – (also called „Albedo”) is a raster texture that stores color information ↩︎
  2. Alpha – an additional channel (like RGB) found in some raster file formats (e.g., .png, .tiff) that stores transparency information. ↩︎
  3. NormalMap – (in simple terms) a texture that allows light reflections to be simulated on a flat surface without altering its geometry ↩︎
  4. AORM – in an AORM texture, the Red, Green, and Blue channels correspond to Ambient Occlusion, Roughness, and Metallic, respectively. By combining these textures, we can save a lot of space since instead of three separate images, we have just one. ↩︎
  5. Emmision – a map that defines which part of a model should emit light, in what color, and at what intensity. ↩︎
  6. Noise – an image generated based on a specific algorithm. There are many types of noise, often used for procedural texturing and effects. ↩︎