Lars Bouaraba shared the workflow for his latest procedural material Old British Building Facade: generating bricks, window arches and windows with the dirt effect, elevated elements, and more.
In case you missed it
You might find these articles interesting
My name is Lars Bouaraba, I was born in Marburg, Germany, and I'm 23 years old. I graduated from SAE Leipzig this year with a bachelor's in 3D Game Art and Animation on the topic of semi surface aware real-time materials inside of UE4.
I started creating game art when I was around 10 years old, beginning with painting zombies by hand, scanning them, and then using them as sprites in simple engines like GameMaker. I remember that I spent what felt like forever doing this by hand, but the results fascinated me.
After finishing school I decided to publish some environments on the Unity Asset Store, and the reception was so good that I decided to study game art and subsequently make my passion into my profession.
Discovering Substance Designer
I was always intrigued by the way Substance Designer lets you combine simple commands to create complex materials. I don't remember exactly when I discovered Allegorithmic's tools, but I bought Substance Painter Indie in late 2015 and I remember using Substance Designer before that.
I felt comfortable with using Substance Designer since I was familiar with Filter Forge which works in a similar way.
What really got me into using Substance Designer extensively was the realization that it would allow me to work completely free from photo references. No long searches for the perfect patch of grass or being questioned by a passerby why you are photographing a boring wall.
I was reading George Orwell's 1984 which inspired me to create something akin to an old British building. I also saw an older Substance Designer project from Enrico Tammekänd, whose work I've been admiring for quite a long time now, named “Substance Designer - Spanish Building Wall“.
I put the two together and set forth to create an old British building facade in Substance Designer. After looking for some photo references to define the style of the architecture I stumbled upon the old Writers' Building in Kolkata which this substance is loosely inspired by.
I believe it's always important to constantly try and learn new methods and workflows to improve your own efficiency. This project was no different in that regard and I learned a couple of cool new tricks for Substance Designer, but more on that later.
The very first thing I decide for every Substance Designer project is what size will be represented by the material at the end of the day. Since buildings from that era often have a very high ceiling and I wanted to include two stories, I decided the substance should represent an area of 8x8 meters. 4 meters for each story.
I started with a simple brick wall made out of 40 by 120 bricks. This comes down to a size of 20x6.6cm per brick which is roughly the size of a regular brick. Keeping these details in scale with their real-life counterparts will help to sell the material later on and give it that extra bit of realism. I simply used the Brick Generator node for this with a bevel of 0.12 in both directions and no gap. I then combined the brick texture with a Cloud 2 node into a Slope Blur node and set the intensity to something very low like 0.1, while keeping the samples at max. This will give the bricks a little bit of edgewear. You can always change things like the size of the Cloud nodes or the intensity of the Slope Blur to heighten or lessen this effect.
I always use the Flood Fill node extensively in my projects. However, you need to keep in mind that this node is very computationally intensive, so if you want to use your substances as .sbsar files in your project I would try to avoid this node as much as possible.
In this case, I used the Flood Fill node to calculate a random angle and height for the bricks to break up the repetition of the surface. After that, I use the Flood Fill node to create a random color for every brick. The Random Color node then gets fed into a Vector Warp Grayscale node together with a grunge texture which then, in turn, gets multiplied onto the bricks. This gives the bricks a more realistic surface.
For the flat but elevated elements of the building facade, I simply used a Linear Gradient fed into a Histogram Scan node to determine the width of the elevated strip. Since I knew the wall was 8x8 meters I could easily calculate that I had to set the position of the Histogram Scan node to 0.05 if I wanted the strip to be 40cm or exactly two bricks wide.
But it's important not to set the contrast of the Histogram Scan node to 1. Setting it a little bit lower will make the side of the elevated element use up more pixels, and having the contrast at 1 will make the texture look really stretched at these parts.
I then used a Transform Node to position the elevated element. I repeated this step until I had all elements positioned. I then blended them on top of each other via the Max (Lighten) blending method to determine how far they will extrude from the brick texture base.
Using the same technique while utilizing the Gradient Radial node I created the cutouts for the windows. I set the absolute zero point of the elevated strips from before to 0.5 via the Levels node and then multiplied the window cutouts on top.
I then fed this texture into a Height to Normal node to create a curvature map of these elements. After using the Levels node to select only the convex areas of the curvature map, I used the Slope Blur node combined with the Clouds 2 node to create some edge damage. I then simply subtracted this data from the elevated elements in order to have them look used and worn.
This created a texture that, when blended on top of the brick base with the overlay blend method, heightened or lowered the bricks according to my needs.
For the window arches, I multiplied the Polygon node on top of a Gradient Linear 1 node. I set the Polygon nodes parameters to use 4 sides and the scale to 0.99 while turning autoscale off.
I then fed the result into the Curve node and edited the profile in exactly the same way as I did with the story overhang from before. Feeding the resulting image into a Shape Mapper node will give you a full circle of bricks with a custom profile. The width of the bricks can be determined by changing the pattern amount parameter. Combining a Gradient Linear 1 node with a Histogram Scan node set to position 0.5 and contrast 1 will result in a mask that can then be multiplied on top of the brick circle, leaving you with a perfect window arch.
Using the Transform node I then changed the size and position as well as the number of the window arches.
Creating the windows was fairly easy. I just used a mix of polygon nodes and blended them together to create a basic silhouette. After positioning them I added some strips to divide the windows and make them look more appealing. Next, I added a Bevel node, changing the bevel distance will change the width of the windows framing. Once again the Curve node comes into play at this point. Here we can change the profile of the bevel so that it will look like proper window frames. Afterward, we can add the glass panels by using the max light blend method and the original basic window shape. The depth of the glass panels can be controlled via a Level node. We can add an outer window frame by reusing the basic window shape and adding a bevel, but this time in a positive direction. By repeating the steps from the inner window frames we can then simply create a nice-looking frame around the window. The outer frame should be a little bit thicker so that it properly encloses the window and gives it a sturdy appearance.
The substance was made with a very specific look in mind, therefore it is not as customizable as you might think. There are not many exposed parameters and those that are exposed mainly change features like the amount of dirt and the color of the elements.
I changed a couple of parameters in the picture below to create a more spooky version of the building facade. I hope this will give you an idea of what can and can’t be changed in this substance. I simply set the window arches to polygon instead of circle and did the same for the window frames. Adjusting the curve of the big story divider also quickly changes the look and feel of the building. Things like different ornaments would have to be added manually since I only created one, however, I flipped the staircase style bricks once and offset them to create a little more variation.
On the left is the original substance and on the right is the customized one:
The production of this material proved to be quite time-consuming but it wasn't overly complicated. Its whole complexity relies on the layering and creation of many rather simple shapes in order to create one big surface. This is great since it means that I can greatly speed up the production of similar substances because of my new experience. Most of the time spent on this substance was put into finding out how to do something instead of asking myself what to do. Since the “how to..?” part is answered I can now focus more on sheer creativity.
The one thing I was not satisfied with for quite some time was the grout material, but thanks to Clark Coots's tutorial on how to utilize the Non-Uniform Blur node to create convincing grouts, I was able to create an effect that really united all the different elements. This made the substance look much more grounded and not just stamped out of a brick material.
Clark also has an awesome tutorial for creating pillars.
Resources for Learning Substance Designer
Substance Designer is definitely a program that needs to be learned through a lot of trial and error.
The best way to learn Substance Designer efficiently is by downloading already made substances and analyzing them. A great resource for this is Allegorithmic's own Substance Source. See how they are made, change random parameters, and try to adjust them to your own liking.
It is also always a good idea to look at what other people are doing and to be inspired by their works. For example in this case, as I mentioned, I was inspired by the works of Enrico Tammekänd. In another instance, I created a rubble substance (you can find it on my ArtStation) by trying to use the workflow Ben Wilson demonstrated at GDC 2018:
A good understanding of the PBR render pipeline also really helps to create good-looking substances.
A great tip that I learned from Daniel Thiger is to look at scanned materials and try to understand and analyze their heightmap. A good understanding of how shapes work together is helpful in every art department and Substance Designer is all about understanding shapes.
Allegorithmic also has their own YouTube channel with lots of tutorials and tips.
I personally have a collection on ArtStation to which I add every interestingly made substances and otherwise helpful tips and tricks.
Working with Substance Designer has really developed my abilities as an artist, and I am extremely excited to see other people's work and learn from their experience.
I believe it’s always important to learn new tools and to evolve as an artist. Substance Designer has really shown us all how quickly a new tool can become industry-standard.
Big thanks to 80 Level for reaching out to me and giving me the opportunity to do this interview. I have always been a huge fan of 80.lv, and hope this information gave you some insight on working with Substance Designer.
I am always open to questions and if anyone wants to know more about this substance and how I created it or has any other questions about game art, feel free to contact me!