Mostafa Balakho discussed the Flagstone Material project, shared the workflow, and talked about customizing materials in Substance Designer.
My name is Mostafa Balakho, I'm 22 and I work as an Environment and Material Artist at Rababa Games, I've been loving the technical side of art for a while now, which made me interested in learning Substance Designer.
I'm a self-taught artist since 2015, I was always fascinated by video games, and I have always had an interest in making video games and such since I was a kid, which evolved into me getting interested in Environment art.
Getting Into Substance Designer
I started learning Substance Designer in 2019 when I got inspired by how the game studios such as Naughty Dog were utilizing it with the procedural workflow, which was astonishing and very powerful, I started learning how to use Substance Designer using Daniel Thiger's fundamentals tutorials which were very useful to start with. I always try to experiment with the nodes and how they work together, as you need to improvise on solutions most of the time which is fun to do. I also watched a lot of YouTube videos that were filled with a lot of information that helped me improve my methods and way of thinking to approach the materials. Since then, Substance Designer has been one of, if not the favorite and most enjoyable software to use, with the way it handles technicality and art fascinatingly and admirably.
Seasonal Flagstone Project
I try to think of material ideas that would make good practice in multiple ways and would look interesting when I finish them. With this Material, my goals were to learn more about organic and naturistic elements, and achieve a realistic look while working on the material.
I start with collecting the necessary references and inspirations which are critical in creating materials, I break down the references into smaller pieces to not get overwhelmed with the amount of detailing and shapes from the references, I mainly use Google to search for the references that I collect inside PureRef, which is a great and simple program to arrange your references in. I break down my references into their separate categories and elements to make things easier to approach.
This material can be broken down into several elements:
- The flagstone
The flagstone is the base layer of this material, and the other elements could be blended on top of it to create more variation and beauty to the material. I wanted to pay attention to the flagstone surface to create a convincing material, as it was one of the most important elements since it covers most of the surface of the material.
I start by using a main Cells 4 node with a combination of 2 others blended with the main one to break up the uniformity of the first Cells 4 node.
After that, I use Multi Dir. Warp Grayscale and Slope Blur Grayscale hooked with a Histogram Scan to break up the shape.
I used Flood Fill after that with a Flood Fill To Bbox Size then I connect it to Auto Levels and then to a Histogram Scan, that way I can eliminate unneeded small shapes that occurred from the previous blending of the Cells 4 nodes:
I then start adding the detailing using Slope Blurs to add the edge damage and surface details by blending multiple noises with the main shape, I mainly used the Clouds 2, Clouds 1, Crystal 1, BnW Spots 2 nodes.
Dirt was quite simple to make, I started by connecting the flagstone height into a Histogram Scan and inverted it, after that, I connect it to a Highpass node so there would be some lifting effect in the border of the dirt mask, then I use Slope Blur to break up the shape a bit and blend it with a combination of noises to make the dirt surface and detailing. After all that is done, I connect it to the flagstone using the Height Blend node and make sure to set the Height Blend Contrast to 1 so no weird blending would occur.
I made a separate Subgraph as a leaf generator so I could have multiple variations easily to scatter them on top of the flagstone.
I start by using a Disc shape connected to Trapezoid Transform Grayscale node with Transform nodes to play with the shape a bit till I get something decent to make the main leave shape.
I then use a slope blur to break up the borders a bit, then I blend it with a Gradient Linear 3 to end up with this shape:
After that's done I connect it to multiple Slope Blurs and Multi Dir. Warp Grayscale node to break up the shapes blended with some noises to create the leaf surface.
For the leaf petiole, I create the shape by using a thin Square shape connected to Trapezoid Transform Grayscale, then I connect it to a Non-Uniform Blur Grayscale using the main input as both the grayscale and blur map inputs to have smoothed borders, then I use a Shape Splatter node and set the X and Y amount to 1, that way I can use the node to make the petiole conform on the leaf's surface using conform to the background and smooth conformed background parameters.
For the damage, I mainly use a blurred Clouds 2 node blended with a Gaussian Spots 1 node and then connected to a Histogram scan, the Damage mask is then connected to some Slope Blurs that is then used to subtract from the main leaf shape.
Like the leaves, I made a separate Subgraph for the stones for the same reasons.
I start with a Half bell shape using a Tile Sampler node to get randomized shapes with the random seeds and then blend it with a Cells 1 node using subtract mode with a maximum value of 0.5 to maintain the volume of the shape and then connect it with the Levels node, that way I have the main shape and silhouette of the stone.
After that, I use a Flood Fill node connected to 3 Flood Fill To Gradient nodes blended together using the Min (darken) mode to create the surface shape for the stones.
Afterward, I start using Slop Blurs and Multi Dir. Warp Grayscale nodes blended some noises to break up the shapes and create the stone surface.
I start by making a moss leaves generator that I would scatter using a Shape Splatter and then blend it with a Moisture noise.
Here is the Subgraph for the moss leaves:
I blend the Moisture noise with other noises and use Slope Blurs and Non-Uniform Direction Warp Grayscale:
After that, I connect the moss leaves Subgraphs to Splatter circular nodes and then I would connect them to a Shape Splatter node to blend them with the noise above to get surface variation for the moss.
Assembling all the elements together:
After everything is done, I start by blending those elements on top of each other, for dirt and moss I used height blend, and for the other elements, such as the leaves, stones, and the twigs, I used Shape Splatter to conform those shapes on top of the Flagstone.
Here is the layering order:
Albedo and Roughness
For the Albedo and Roughness, I start by working on each element separately to not get lost in the process.
My usual workflow for the Albedo is to start by using a uniform color node, I dislike using the Gradient Map node since it limits the customizability of the color later on or it makes it more difficult to do. The main nodes I use for making the Albedo are usually the Curvature, Curvature Smooth, Dirt, Dust, Ambient Occlusion, and the main Height Map, plus the noises for the surface variations and such, I blend those nodes with the main Uniform color.
I sometimes like to use multiple Uniform color nodes for the same element to have more surface variation, for example, I used 3 Uniform color nodes for the flagstone and blended them using random masked flagstones.
With Subgraphs that contains maps other than the height map that I will use with the scatter, I like to use the Shape Splatter node since I can extract the maps and apply them to the scatter by connecting it to either a Shape Splatter Blend or Shape Splatter Blend just like in the graph below:
I try to use a decent amount of layering to add more depth and variation to the material, that way your material will look more enjoyable to look at and much more interesting.
Here is the process for the base color for the elements together:
The process for the roughness is quite simple, I use a base roughness value for each element using uniform color using the grayscale mode, after that, I add the used noises for each element with different values to create the roughness variation. When that's done, I combine all the elements together using their masks.
Parameters and Customizability
This is where Substance Designer shines, you can make variations with so much ease if done correctly, so while creating this material, I wanted to keep in mind that I wanted to be able to create variations easily with customizable parameters. With this material, I'm able to change the color of some elements such as flagstones, dirt, leaves, stones, and moss. I'm able to change the pattern and size of the flagstones, the color of it, height variation, slant, and such. With the stones, I can change the color and the way it scatters across the surface or how dense they are scattered. I can also change the color of the leaves, the way they are scattered, and whether they are damaged or not. I also used a water level node which makes it very easy to flood your materials with water the way you want.
Here are some of the variations I can have with this material:
I like to keep my Graphs as organized as possible, that way it would be easy to adjust whatever needs adjusting and would be easy to add any elements in the future if I decide to.
The full graph:
The biggest challenge was to make the elements look right and how the texture maps will look together, I had to do a couple of iterations for the flagstone surface until I was satisfied, the same thing for other elements such as the moss too. I wanted to create convincing material, so I had to put some extra time into it. I would say take it slowly and don't rush the process as you will get lost and everything will get difficult to fix.
With learning Substance Designer, it's important to challenge yourself with every material that you make, experiment with how you can use the nodes together, and think outside the box! And as I said before, even if you aren't satisfied with the result while working on the material, try to spend a little bit more time and you will see better results, and don't shy away to ask for help and critiques from other artists as it will help immensely with your material and you'll improve much quicker.
I would recommend paying attention to your Height Map and try to perfect it before tackling the other maps such as the Basecolor, Roughness, etc... if your Height Map looks good, it will be easier to make the material look convening even after applying the other maps.
I also like to make some "special" materials even if they wouldn't be useful for production, but you will most likely learn a lot from those kinds of materials.
If you want to learn Substance Designer, I recommend watching Daniel Thiger's fundamental videos and Substance's YouTube channel, also try to get your hands on some .SBS files from other artists whether it was paid or free to see how they work with Substance Designer to create the materials, it will help you a lot to find out how to do certain stuff or how to use nodes effectively. And if you would like to learn how to prepare the lighting and the presentation of your material, I would highly suggest watching this tutorial by Javier Perez Rendering Materials Using Marmoset with Javier Perez.
I hope this article was useful to you and if you have any feedback or questions don't shy away from contacting me! You can reach me via Instagram, ArtStation, or LinkedIn. If you are interested, you can grab the Flagstone Substance graph by clicking this link.
I would like to thank the 80 Level team and Arti Sergeev for the chance and opportunity for this interview and article, it is such a pleasure!
You may find these articles interesting