Brick Wall

Material Breakdown

Zeqi Mu


Zeqi Mu

Environment Artist


Hello, my name is Zeqi Mu, and I am a Chinese 3D environment artist. I studied transportation and product design in the USA and started working in the game industry in 2016.

Currently, I live and work in Shanghai.

Right now, my focus is on creating procedural textures and texture/shader representation in the Unreal Engine. If I have enough time, I would like to build a scene from the movie Spirited Away or Howl's Moving Castleā€”I am planning on that!


The goal of this procedural Substance Designer graph is to take a simple grayscale mask as a wall plaster fall-off mask and procedurally generate a nice and usable game-ready tilable brickwall texture based solely on the fall-off mask, with minimal parameter tweaking.


Substance Designer

Inspiration and References

I already have what I need to achieve in mind, and I have been making many brickwall materials. For this graph, I didn’t particularly rely on any references, but I have a lot of great brickwall materials on ArtStation as references in my mind.

Graph Overview

I organized my graph into four main pipelines: height pipeline, mask pipeline, base color pipeline, and roughness pipeline. It is VERY important to organize your graph into sections.



Height Pipeline

First of all, I made a 6×14 tile generator grid height atlas with many variations of bricks on it. Then I used the Atlas Scatter node to arrange the bricks into the correct scale and density.

I also took the input damage mask map into consideration, where the undamaged part of the wall has its underlying bricks with lower heightmap values. Now the base layer of the heightmap is done.

Next, I added mortar.


Then, I worked on making the plaster part of the texture. I took the input fall-off mask, converted it into a cell-based grayscale mask using the flood fill to grayscale node.

Further processing the plaster part of the wall involved using nodes like slope blur, multi-directional warp, and non-uniform blur.


Combining the top plaster and bottom bricks and mortar layer, now the heightmap section is complete.

Mask Pipeline

I chose various procedural grunge maps like grunge leaks and bnw spots 2 at the beginning of the mask pipeline and packed them into a 4-channel color map using the RGBA merge node.


Along the pipeline, they will be requested at approximately the same vertical location by other pipelines.


The screenshot above is the brick-making part of the heightmap pipeline.

The green section is the mask pipeline. When I need any of the grunge maps for blending, I simply use the RGBA split node to unpack the 4-channel grunge map and deliver the image right up to where it’s needed.


A large part of the masks that I use for coloring and roughness require both procedural grunge maps and heightmap-generated maps.

These masks will be formed inside the mask pipeline frame, and their locations also match corresponding vertical positions of other nodes in other pipelines.

The above screenshot is the part where I am using grunge maps and heightmap-generated information to generate masks to color the bricks.

My Basecolor pipeline and Roughness pipeline are in sync, so their demand for mask maps is pretty much the same at any given vertical location.


Base Color and Roughness Pipeline

My coloring process is pretty straightforward. I take the masks from grunge maps and heightmaps to form the color and roughness.

The pipeline is section-based, consisting of brick color, mortar and plaster color, wall paint color, and a post-processing section that refines the blending result of the brickwall.


Input for the Mask Change

Here are screenshots of me changing the input damage mask.

Rendering in Marmoset Toolbag

My setup is very simple for the sphere render. I use two directional lights for basic lighting, one warm light pointing towards the front left and the cold light pointing towards the back bottom of the sphere. For highlights, I use a spotlight.


As for the wall plane render, I used some basic roof models that I built to cast some roof curvy shadows on the wall.

Thank you for reading – I hope you have learned something or I have provided some useful information to aid in your workflow!