Layered Cliff

Material Breakdown

Baek Jongchan


Baek Jongchan

Environment Artist


Hello, I'm Baek Jongchan. I've been deeply interested in console games since I was young, and this fascination led me to pursue a career in the game industry. It has been a magical journey for me.

I am an environment artist with over 2 years of experience in the game industry, and I am currently working on AAA games at NCsoft in Korea. My primary focus is on creating textures and props for these games.


When I was studying Substance Designer two years ago, I wanted to make a material with a complex structure in Substance Designer for skill development. I found a cliff with a complex layered structure and various variations of colors for it, and I decided to try creating it.

Before I started, I observed small, medium, and large details on the cliff. I tried to replicate each layer’s unique sizes and characteristics. I also attempted to copy the characteristics and surface texture expressions from the layered references by combining them.


At first, I used shape nodes and a Tile sampler to capture the basic shape, and each layer was created accordingly. To add variations to the cliff’s size, I introduced a random horizontal line in the scale input.

I utilized Tile Random to create several types of horizontal lines, introducing deviations between the cliff layers, and then created nodes to bend these deviations (I am not aware of the technical term for sedimentation that deviates from the cliff layers, so I’ll refer to them as deviations).

Through the nodes that we created, we adjusted the height of the Z-axis and introduced large deviations for the cliff. Additionally, we added small deviations and bending between these deviations.

Next, I used Auto Levels to give a height difference, and Directional Warp to soften the over-expressed sections. I also added details through Shadows.

I repeated the same process as before to construct a larger shaped cliff, sizing and positioning it with Safe Transform and 2D Transform. I created the desired shape through a height blend.


Afterward, I added details to the cliff using Detect Edge and Slope Blur, following the process I had established earlier.

To break the straightness of the cliff, I applied Directional Warp (a node that allows you to warp your shots without pushing them off-screen) and partially softened the sharp edges.


I continued this process to increase complexity, as I did before.


Using Histogram Scan, I adjusted the height of the layers to achieve the desired floor height.


Next, I created a crack using Splatter Circular and Distance, and then formed a natural crack shape using the previously produced deviation node.


I added details to the stones on the outside using Ambient Occlusion.


Feeling that there was a lack of large shapes compared to the reference, I combined the previous work into a single graph, changed the shape, and mixed it again.

To add vertical flow and detail, I used a simple Shape and Tile Sampler to create two types of large and small details.

Overall, I added small details, while large details were added to the stones inside. The reason is that the inner surfaces of the stones are rougher, while the outer surface is softer due to the influence of nature.

Once again, I continued blending to enhance the details.


I used Cloud 2 and Fractal Sum Base maps to represent the finest texture of the surface. I proceeded similarly to the previous method of creating the crack and added a large crack to the innermost layer. This completed the overall height work.


For the base, I relied on the height map that I had created so far and made masks using Ambient Occlusion, Curvature Smooth, and Normal maps.


When creating the base color, I interpreted the reference intuitively and then created masks based on that interpretation.

In addition to what is shown in the example image, I considered various aspects such as the expression of the corners and the lower part of the stone (the mask that can be obtained from the G channel of Normal).

I used Curvature, AO and Normal (inside and outside of the cliff, corners, and inside corners, etc.) to create the desired size and representation.

I used nodes like Add, Subtract, Min, Max, and Multiply for the basic blend.

Through adjustments using Level, Histogram Range, and Scan, I created the desired expressions by combining the desired space with the provided Grunge.

For the expressions of moss and other elements on the cliff, I created the desired mask using Curvature maps and various Grunge and Ground Dirt, and then replicated a similar expression to the reference using Tile Sampler.

Additionally, I blended the height map for normal expression.


For the vegetation expression on the soil, I used a classical method and employed Tile Sampler.


The roughness is based on the Base Color. After converting it to grayscale, I used Highpass and Levels to achieve the desired effect.


After that, I sequentially produced the expression of wetness on the bottom and the expression of moss.


The rendering process is relatively simple.

I used HDRI for lighting and didn’t make any additional adjustments.

I created and recalled a curved Tiled Mesh in Maya and used the height map to create a three-dimensional shape.


Rendering options. Lighting only used HDRI and no additional arrangement was made.

Create and recall a curved Tiled Mesh in Maya and create a three-dimensional shape using the height map.


I completed this project about two years ago, but I wanted to release it after finishing my personal project. Unfortunately, it was delayed due to personal reasons.

I want to express my gratitude to Daniel Thiger, whose basic lectures were helpful and inspirational during my study.

I would also like to thank the GA team for requesting this meaningful breakdown.

If you have any questions, feel free to contact me via messenger! I’ll be glad to assist you!