This is a short step-by-step guide on how to create a simple brick wall material using Substance Designer, one of the most widely used tools in the industry for creating procedural materials. It allows you to generate PBR textures (such as normal, roughness, height, etc.) in a non-destructive way, enabling dynamic and reusable adjustments.
Here, I will share some tips with brief explanations to help you get started with Substance Designer, using some of its most essential nodes, such as Blend, Levels, and Flood Fill.
As a result, we will have a material ready to be used in Unreal Engine or Unity. With a few modifications to the level of detail and color, this material can be adapted to suit various game styles, whether stylized or realistic.
1. Creating the Project
- Open Substance Designer.
- Go to File > New Substance and choose Physically Based (Metallic/Roughness).
- Set an output size, such as 2048×2048 for high resolution.
2. Creating the Base Brick Pattern
- Gerar os Tijolos
- Use the Tile Generator Grayscale as the base.
- Adjust the following parameters:
- X Amount / Y Amount: Set the number of bricks horizontally/vertically.
- Offset: Change the position of the lines for a more natural and “blended” pattern.
To minimize the stretched effect that occurs when modifying the X/Y Amount, follow these steps:
- Use a Shape with Size X = 0.95 and Size Y = 0.9.
- If you still find it a bit stretched, connect your Tile Generator to a Levels and adjust it until you are satisfied.
- Adding Imperfections to the Geometry
- You can add variations to the shape of the bricks using a Warp to slightly deform them. Connect a Perlin Noise (Scale between 30-50) or another grunge/noise of your choice to the Warp input.
- This will create variations in the overall shape, but it may still look uniform. To enhance it and add even more variation, use a Blend between this Perlin Noise and another one with a much smaller scale (such as 5-10).
- Adding Height Variation
- Connect the Warp to a Flood Fill > Flood Fill to Gradient.
- In the Gradient parameters, set Angle Variation to 1 to create height variations per brick.
- Adjust the Random Seed to find the variation you prefer.
- Connect this Gradient to a Levels and adjust the black pivot at the bottom to set the desired height.
- Adding Extra Erosion Details
- Connect Flood Fill to another Flood Fill to Gradient.
- Set Angle Variation to 1 in the Gradient parameters. Adjust the Random Seed if needed.
- Connect the Gradient to a Levels, then move the black pivot to the right until it isolates just the brick edges.
- Connect this Levels to an Invert Grayscale.
- Connect this node to the Foreground of a Blend and connect the previous Levels to the Background. Set this Blend to Min (Darken).
- You can control the variation of this erosion through the Blend’s opacity or by adjusting the Levels.
- Enhancing the Edges
- Add a Blur (Intensity 0.65-0.75) to give a greater sense of depth and improve the edges in the Normal Map.
- Add a Blur (Intensity 0.65-0.75) to give a greater sense of depth and improve the edges in the Normal Map.
3. Creating the Cement
- Generating the Cement
- Take the last node and connect it to the Background of a Blend set to Max (Lighten). Add a Perlin Noise to the Foreground.
- Adding Roughness and Volume
- Use Clouds 1 or 2 and combine them with a Blend (Multiply) on the Perlin Noise.
- Connect this Blend to another one, adding a low-scale Perlin Noise.
- Connect this Blend to a Levels and lighten the map to make it stand out more.
- Connect this Levels to a Blend with the last Blur node to integrate the bricks and the mortar.
4. Connecting to the Maps
- Connect the final Blend to the Normal Map, an Ambient Occlusion (HBAO) > Ambient Occlusion, and the Height output.
- Adjust the Normal and AO intensity for the desired effect.
- Check the result so far, and if necessary, go back a few steps to fine-tune it as needed.
5. Adding General Micro Details
- Micro Details that Vary per Brick
- Connect your Flood Fill to a Flood Fill Random Grayscale, then connect it to a Gradient Map.
- Connect this Gradient to a Vector Warp Grayscale and use a Grunge Map of your choice.
- Set the Warp intensity to 1. Adjust the Balance and Contrast of the grunge to enhance details.
- Adjust the Random Seed of the Flood Fill Random Grayscale to achieve your desired result.
- Connect this Warp to an Invert Grayscale and use it as the Foreground in a new Blend (Subtract, 0.04 Opacity).
- Connect the main Blend to the Background of this new Blend.
- Update the Normal and Height with this new Blend.
6. Roughness Variation
- Creating a Variable Roughness
- Use a Grunge Map of your choice. If you want even more variation, blend it with Clouds.
- You can use Flood Fill > Flood Fill Random Grayscale to create different variations per brick.
- Apply a Histogram Scan to control the intensity.
- If you want to create a greater variation per brick, you can change that Flood Fill Random Grayscale with this base.
- It’s interesting to add some more prominent Spots for contrast.
- Don’t forget to connect it to the Roughness output.
7. Creating the Base Color
- Brick Base Color
- Connect the Flood Fill to Random Grayscale to a Blend (Copy 0.9-0.97 Opacity) with a Uniform Color as the Foreground.
- Add variations using Grunge Maps.
- You can use Warp with the Flood Fill to Random Grayscale to create variations per brick.
- Cement Base Color
- Connect the Levels node from the cement base to a Gradient Map.
- In the Gradient Map, click on Gradient Editor, then select Pick Gradient. A color picker will appear, allowing you to sample a color variation from a reference—just click and drag.
- Depending on the reference, multiple pivots may appear in the gradient. You can choose another reference or rearrange/delete some pivots until you achieve a color of your preference.
- You can mix this result with additional Grunge Maps to create a more interesting color variation.
- Blending the Bricks with the Cement
- To apply color to the cement, we need to isolate it and create a mask to blend everything together.
- First, take the Blur from the brick base and subtract it using a Blend (Subtract). Set the Background as the Blend node that previously combined the Cement + Bricks. This will isolate the cement that appears above the bricks.
- Connect this Blend to a Levels node and move the white pivot on top towards the left to brighten this map significantly.
- Connect this Levels node to the Foreground of another Blend (Add – Linear Dodge).
- Take the Warp from the brick base and Invert Grayscale, then connect it to the Background of this Blend.
- Connect this Blend to another Levels node and adjust the white pivot to the left to highlight the mask further.
- Now that the mask is ready, simply blend the brick color (Background) + cement color (Foreground) + cement mask (Opacity).
8. Final Result & Material Export
If you’ve followed all the steps, your result should now resemble a brick wall material. There may be variations due to different values and maps, so feel free to experiment with the nodes to refine the results and better understand how everything works.
- To export your material, connect the maps to the appropriate outputs:
- Base Color
- Normal
- Roughness
- Height
- Ambient Occlusion (opcional)
- Metallic (se necessário)
- Right-click on your material’s name and select Export Outputs.
- A window will appear where you can choose the export location, image format, and naming conventions. You can also select specific maps to export.
- Once you’ve set up everything, simply click Export Outputs, and your maps will be ready for use in game engines like Unreal Engine and Unity.