Castle Rockwall

Material Breakdown

Federico Brunetti


Federico Brunetti

Material Artist


My name is Federico Brunetti, I’m currently working at 1047 Games as a Texture and Environment Artist. I also collaborated with Dekogon to create materials.
Ever since I was younger, I have always been passionate about modifying and creating textures in games and in fact today texturing is the part of my job I enjoy the most


While traveling around I’m always attracted to all the materials I see and I always think about how I could reproduce them on Substance Designer. A little while ago I was at Ristonchi Castle, in Tuscany, and I took some pictures of the wall because it looked very interesting to recreate.

Bricks General Shape

I started by using a Tile random setting with the following values:
● X at 11 e Y at 23
● X Random Size at 0.83 and Y Random Size at 0.94
● Rotation Random at 0.005
● Offset Position at 0.69

After that an Edge Detect, to get more round shapes and a Slope Blur Grayscale, to give some movement, I did a Flood Fill to get the basic shapes that I needed to do two Edge Detects of different sizes, to blend them together and get a variable space between the bricks.

Brick Height

Next, I added a Flood Fill to Gradient and did a couple of Slope Blur Grayscale to give some noise to the height map. I created a grunge map taking a Cells 1 along with a Directional Warp and a Multi Dir. Warp. I blended that grunge with the height base using a Min (Darken) blending mode at 0.31 to get a more advanced height map.

Flood Fill

Flood Fill is a very important node that is used to do a lot of things, like the masks I used in the next steps.

Rocky Bricks Pattern

I added a Tile Sampler where the Pattern Input is Polygon 2 blended with a Gradient Linear 1 Min (Darken) Mode. The final tiled pattern has not to be even. Then I tiled that and stretched horizontally and I used a Make It Tile Photo Grayscale to get rid of seams. I made use of a mask obtained from the Flood Fill node in order to add a rocky shape to some bricks.

Cuts Pattern

To get some directional cuts, I used a Tile Sampler which can use a vector map as input for rotational direction (in my case I plugged a Perlin noise converted as a normal map). Remember to modify the rotation and Vector Multiplier in the Tile Sampler, here I used:

● Scale Vector Map Multiplier at 0.22
● Vector Map Displacement at 0.09
● Vector Map Multiplier in Rotation at 0.14

Then I modified the final result with a Slope Blur and a Warp to get a noisy output; to get some fine details, I randomly scattered around some other cuts.


To make the cracks I created a tile sampler by scattering square shapes with random positions, rotation and random colors. With a Histogram scan and the Distance node, I got shapes that look like cracks. After Edge Detect, Slope Blur and Warp passes I got the final cracks that I subtracted to the height map.

Height Details

To add detail to the height map, I blended:

● Moisture Noise with Soft Light mode at 0.25
● Fractal Sum Base with Add Sub at 0.09
● Clouds 3 with Add sub at 0.03

I always recommend that you add these kinds of noises with a slight blending mode to the height map to get more realism.


Mortar Height

To get the mortar mask I used the wall’s main heightmap along with a Levels node in order to select only a specific range of grayscale values. I extrapolated mortar in the areas closest to the bricks. I created noise with Cells 1 inverted and Directional Warp and Multi Dir. Warp passes then I blended with the previous map to obtain the final mortal height map.

Diffuse Map

To create the Diffuse Map, I started using an Edge Select from a Curvature map that allows me to start with an optimal baseline. The Edge select is set as follows:

● Level at 0.75
● Contrast at 0.1
● Concave Softness at 0.25
● Concave Intensity at 1
● (Other values at 0)

I used a Gradient Map node with the Edge Select as Input with the color gradient in the first pic. Then I blended it with another Gradient Map node with a Flood Fill to Random Grayscale as input with the color gradient of the second pic. I also did an HSL pass to add some brightness in some spots.

To add some orange spots I used a combination between a Shadows node and Levels node to select only the upper part of each brick and the usual Slope Blur/Warp pass

I recommend you to blend a Curvature Smooth node (converted in color with a Gradient map) and base diffuse with an Add Sub blending mode. That helps make the texture more realistic. I also added some more cold tones with an HSL on some spots

I usually use grunges from Megascan because they have a lot of variation and the library is almost infinite. In fact, to add some details to the diffuses, I used a lot of combinations between Mask Builder, Dirt Mask and Flood Fill to Gradient. I also did a pass on the rocky bricks to obtain a more rough feel.

Mortar Diffuse

For the Mortar Diffuse, I used the same method of the wall, where I used a Gradient Map from the Mortar Height with the color gradient in the pic, and I also added the Curvature Smooth with an Add Sub blending mode. I also added some spots of dirt to obtain a result like a reference.I added the Mortar Diffuse to the wall with the mask obtained from the Height Blend.

White Spots Mask

I added the white spots with a Tile Sampler using Bell as Pattern Input and the Mortar Mask as Mask Map Input. After the usual pass of Slope Blur, I blended the result with a Perlin Noise to mask out some parts and I made a final Levels pass to obtain a sharper mask.

Final Diffuse

To get the final Diffuse I appended the AO blended with a Multiply blending mode and to obtain the final result I made a sharpness pass.

Height, Normal and AO

To get the final Normal I blended two Normal maps (intensity at 5) for the rocky bricks, and Normal (intensity at 3) for the remaining part of the texture. The AO is get from the Height Map and I did a Blur HQ at 0.3 of intensity for the final Height used for the tessellation.


I got the Roughness map using a Levels pass from the Height Map, inverting it and making the parts that come out brighter, and adding an almost white for the Mortar part.


I rendered the material in Marmoset. I usually use a set of three lights:: a fill light which I use to illuminate the sphere, and two rim lights, one cold and one warm. I always test the render without the diffuse and if I’m satisfied with the result I continue rendering. I did the same thing with the plane render, adding just a bit of fog to get a more dense atmosphere and catch light details.


Thank you for reading the articles, thanks also to GamesArtist that gave me this wonderful opportunity to share my work with you. I hope you enjoyed it and found it useful.

Feel free to check out my work and contact me in case you want to ask me anything.