Material Breakdown

Dima Aminev


Dima Aminev

Material Artist


Hey! My name is Dima Aminev, I am Material/Environment Artist from Chelyabinsk, Russia.

Today I will share with you my approach to material production with Substance 3D Designer and other 3D content for games. Many things in this article are not new and have already been shown by famous artists, including Daniel Thiger, Javier Perez, Ben Wilson, Joshua Lynch, Derk Elshof and many others.

This article is suitable for beginners who are just beginning their way into Substance 3D Designer, but most likely experienced artists will also find something useful.

Where do I start?

The first two questions I ask myself when I start to create anything, no matter props, material or anything else:

How does it work? and How would other artists make it?

How does it work?

Here, it is important to understand the natural mechanism for creating an object. I take attention to the fractal patterns (link will be at the end of the article) that underlie this object, their patterns and relationships.

The big mistake that you can make here is a thoughtless attempt to copy shapes. The first thing I did was I found some pictures on the Internet that I used as references.

I drew attention to the fractal patterns that are the basis of lava forms (these are mainly repeated self-similar folds and circular bubble shapes that are layering and deform each other).

After that, I found some lectures on petrology and geology on youtube and watched them focusing on the processes that form the visual component of lava. All this information is very helpful to read the references, because you begin to understand what you are looking at, see the basis, and it is instilled as very simple.

The hard part is always made from simple parts.


How would other artists make it?

It is very important to study examples of similar works of other artists, to note the advantages and mistakes that a particular artist made in order to try to dodge them in your work.

I highly recommend using all available information about the techniques of creating materials: breakdowns, GDC, blogs, other articles and communication with artists.

How I begin

After studying the object, I begin to try to find an approach to its creation. I use the information I have obtained about the mechanisms of formation of an object in nature and the fractal patterns that are at its core to simulate these processes procedurally in the Substance 3D Designer.

I always start by forming a Height Map. Even if the material is complex of several objects (for example, volcanic folds, sand, pebbles, stones, branches, foliage) – I am focused on creating a finished Heightmap. It’s very important to make a good foundation, to work out the silhouette, for me it’s about 40-50% of the success of all the work.


Research is the first thing I do. First, I look at the largest shapes of the object, which form a silhouette, and I try to discard the secondary and tertiary forms. It’s more of a cognitive process than direct work with Substance 3D Designer.

So what I’m trying to do is to find these combinations of nodes that simulate the mechanisms by which an object is formed in nature. Usually, I find several variants at once, which in fact lead to similar results and choose the optimal, which will be the basis of the entire graph. At this stage, it is important not to dwell on the graph to the final result, but to experiment.

Usually, I find a procedural texture in the library with a similar fractal pattern to what I need, then pass through Height to Normal and adjust the scales of forms/density using Slope Blur. This technique is very versatile and is suitable even for creating mud and sand

(A link to the breakdown of this technique from Derk Elshof will be at the bottom)


Otherwise, I create a Shape node and work it out with Gradients, Directional Warps, Slope Blurs, etc. Even less frequently, I use the Tile Sampler node (or the new version 2 of this node) to create the basic, the advantage of this method is that you can easily add a variety to each individual element using the Flood Fill nodes group.


Form Development

Finding the optimal large shapes, building them in Substance 3D Designer and giving them enough variety in silhouette and height, I start to work with secondary shapes.

I try to make 2-3 characteristic details that repeat throughout the object, break it and give it character.

I often resort to the principle of fractal self-similarity, simply copying already finished forms, tiling them 2 times with the Safe Transform node and adding them to large forms with Blend or Height Blend nodes, playing with the parameters. If I’m happy with the result, I simply change the warp settings to make the new shapes unique. Otherwise, I create secondary forms from scratch.

Remember, you need to pay enough attention to the organization of your graph, it should be simple and clear so that you can easily make changes to it at any time. Group nodes with Frames, use dot nodes to avoid confusion and leave comments for yourself to be comfortable.


This is always a painstaking process. First of all, I try to support a sense of scale by adding some pebbles, branches, foliage and so on. And then I move on to adding cracks, small folds and surface texture. The good thing about Substance 3D Designer is that you can do two jobs at a time and add additional node chains at any time and change their places to achieve the best result.

It is important for me to avoid noise and maintain the balance of detailed areas and rest zones. I try to make 2-3 types of detail, which have logic, so as not to fill everything with one boring, monotonous noise.

*It is also very important that your eyes are not tired, you need to look at everything with fresh eyes and rest enough before returning to work.

Remember that Height and Normal are different maps. Height is responsible for pushing the surface with tessellation and Normal for the behavior of light. This is why it is important to keep on the Heightmap only the information that really affects the silhouette and to add the fine detail of the surface texture on the Normal.

Also, if you want to add some micro-details to Normal, but you get the noise, then try to add it to Roughness, then this detail will be pleasantly manifested only at certain angles of lighting, creating no noise, which will give the material more life.

*Try not to use too much resolution in nodes noise and gradient, often enough resolution 1024 or 512, so you will reduce the time of calculation and work towards the end of the graph will be much more pleasant. This also applies to the parameter samples, it is not always necessary to twist it to the maximum, more often it I use values of 10-24.


Colour & Roughness

The tricky thing about the colour and roughness cards is that they can both support each other and kill each other. It’s essential for me to keep both cards unique, and I always try to make them logical, but not repeat each other, So they must support each other. First of all, I try to avoid adding the behavior of light to Color, for example, not making an edge highlight but passing it to Roughness.

When considering a reference for creating Color, it will not be superfluous to help yourself by reducing the light and shadows on the reference using Photoshop or Substance 3D Sampler. Then to form the basis of color I create a Gradient Map node, go to its parameters and press Gradient Editor, then select Pick Gradient and conduct the referent. So you can create several different options for subsequent sampling and combine them.

Before connecting Curvature or another node to the Gradient Map, I try to break it up by mixing in some interesting procedural texture or a small noise from the library so that there is no effect of perfect repetition and unnecessary layering. You can also pass Curvature through the Highpass node to reduce color variations if necessary. To add color sand, mud, etc, you need to learn to choose the card parts you want to repaint.

You can usually use the masks you got from Height Blend or create them by connecting Height or adding a part to Threshold. For masks, you can also use Edge Select, Shadow+Auto Levels, Get Slope (available free with Substance Source), Ambient Occlusion, Histogram Select, etc. It is essential to avoid extreme values of roughness and color of final cards.

They can be adjusted with Clamp, Histogram Range, Levels, etc. I recommend reading the article about PBR, this is very important information for material/texture artists, all links will be below. I always try to make the color as varied as possible and contrast, not forgetting to stay close to the reference image.



When mixing two maps together, for me it is important not to lose the balance of large, medium and small shapes. Usually, I use Blend, Height Blend and Shape Splatter nodes.

Before blending I try to make the contrast of mixed maps optimal. If the contrast is too high, I reduce it with Histogram Range, etc. If too low, I use Levels. For a smoother transition, you can use Non-Uniform Blur to add one of the mixed maps to the Blur Map slot. To add small objects like pebbles, Shape Splatter is great, there is a built-in option with blur.

It often happens that before blending you need to make warp one object over the surface of another, for this, I usually use Non-Uniform Directional Warp, it gives a more natural look, unlike Warp and Directional Warp.

Final Points

– Learn the mechanism of what you’re going to create.

– Try to remember the principle of fractal self-similarity, when building forms.

– Use the reference to compare and adjust the work.

– Try to go from large to small.

– Try to keep your graph organized and optimized.

– Maintain an artistic balance of large, medium and small shapes.

– Do not bury yourself in details and avoid the noise in your work.

– Make sure that your eyes do not overload during work. Rest enough.

Thank you for reading my article, I hope you enjoyed and or also learned something.
Feel free to write me any questions you may have, I will be happy to answer them in my free time!

References below:


Derk Elshof, simple techniques:

Get Slope Node: