Terracotta Floor

Material Breakdown

Viktor Tounissoux


Viktor Tounissoux

Material Artist


Hello, my name is Viktor Tounissoux and I'm a French Material Artist.

I decided to change careers to combine my longstanding passion for video games with a future profession.
I started my transition a few years ago, and as I made progress, I developed a passion for material creation. It was from this point that I decided to become a material artist.


I had created this material for the first time when I first started using Substance Designer. I recreated it a second time to assess my progress and give it my best effort.

I aimed to achieve the most realistic result possible, pushing my portfolio to its highest potential. My main inspiration came from a house in my village that I often visit, which has a diagonal terracotta floor and terracotta and wood stairs.

At that time, I began searching for references to terracotta with wood and discovered that it existed. I was inspired to modify the pattern to create a floor that suited my taste better.

The reference photos I used were sent by a friend, along with some pictures of the house’s floor, and additional research on the internet.


Creation of my Graph

When I work on a material, I like the graph to be as readable as possible and well-organized. This seems important to me, especially if I were to share the file with a colleague in the future.

It should be easy for the person not to waste time figuring out where things are and to navigate easily. Generally, I organize and tidy up as I work on it.

Sometimes, during the finalization phase, I add or modify small details. At that point, my graph often ends up upside down, and I organize the modified part once it is perfectly validated.


The Height of the Terracotta

I initially started by creating the pattern for my terracotta and planning the placement for the wood.

The creation of the pattern itself is quite simple, involving two “tile samplers”, one with generation constrained by a mask, and the other multiplied with another mask.


Once the pattern was laid out, I sent it through an “edge detect” and “histogram scan” to blend them. The final blend of the model involves a multiplied bevel on top to create the tile borders.

Following that, I proceeded with creating the cracks. There are two types: primary cracks that exert an influence on the height map of my cracked tiles, providing a sense of real breakage and displacement of tile pieces, achieved through a “Flood fill to gradient.”

Additionally, there are secondary cracks designed to convey something more superficial than a fracture.

I particularly appreciate, the secondary cracks, using a technique I learned from Khayyam Naghiyev’s tutorial, which involves connecting the previous node and a “Blur HQ” of it into a “slope blur.”

This has the effect of controlling the thickness of the cracks in this case.


Following that, I worked on the small fractures at the edges of the tiles using “slope blur” and “spots,” along with the aforementioned tip to always control the severity of the damage.

I also addressed various types of damage such as erosion, small holes, or bumps on the surface of the tiles. Among these imperfections, there were some specific ones, like impurities embedded in the terracotta tiles, as if they were present before the tile was baked.

To achieve this, I used the result of a part of the graph that approximated what I was looking for and transformed it into these small impurities.

First, I added the impurities to my height map, and secondly, I removed their outlines to convey the idea that they were added during the creation of the tile as if a small pebble had embedded itself in the clay during the working process.

Now it’s time for the engravings, which are found on certain tiles. I have three different engravings: two for decoration inside the wooden frame and one for the tiles bordering the wooden frames. I worked on the engravings in two stages.

For the first stage, I followed Khayyam Naghiyev’s video. It was my first time using the “SVG” node. I referred to some of my references, either using them entirely or mixing them based on my needs.

They are worked on with 1 or 2 “SVG” nodes, on a part of the SVG or not. For those who worked on a part of the SVG (corner or half of the image), I connected them to a mirror grayscale to obtain my complete pattern.

Then, each pattern was worked on before being passed through my “tiles samplers.”

I thus recreated the pattern of my tile floor for each engraving to select the ones I needed in a “Multi-Material Blend” with my custom node for selection, creating a mask.

The second stage takes place after the Multi-Material Blend and involves specifying the thickness and basic damages of all my engravings before applying the damages they would have undergone.

As mentioned above, I set myself the challenge of creating a custom node that would enable me to generate a precise mask by selecting a shape and applying a shade of gray to it.

This way, similar to the process described earlier, I could have a mask ready for use in a “Multi-Material Blend.”

For the creation of this node, the article by Rosen Kazlachev was very helpful, as well as the reviews by Kelly Recco.

The Height of the Wood

After the Terracotta, I worked on the wood, starting with the basic shape and pattern of my planks.

Then, I created the damage on the planks, following their orientation, and introduced variation and slight height deformation using “Flood Fill to Gradient,” “Flood Fill to Random Grayscale,” and a subtle deformed Perlin noise.

Next, I worked on the wood grain, and it posed quite a challenge. I first had to understand the specificity of the wood species used for this type of flooring, which, in the case of planks, is oak.

Oak has very tight grains. That’s why, at that point, I turned to Derk Elshof’s videos.

After watching them, I realized I was on the right track, and what helped me in creating the wood grain was his trick of sending the result through a “Normal node” to bring it out in a “Normal to height HQ,” then a “highpass grayscale,” which yielded a very natural result when the base result and the “highpass” were mixed.

The second thing that significantly improved my wood, also influenced by Derk’s videos, is the creation, processing, and integration he applies to the wood nodes.

Moving forward, I also considered creating two independent graphs within my material, similar to Derk’s wood grain nodes, for the warping of my wood grain and the “Multi-Material Blend” of my wood.

This way, I could call them where needed, for example, to achieve the proper integration of cracks into the wood grain (warp) and for all the mask creations for the wood’s base color.

I finalized my height map by adding the mortar between the tiles and the wood. It’s a mixture of a noise map, spots, moisture, and fractal sum. The final mortar is multiplied with the edges and then divided by a Perlin noise to introduce height variations.

The mortar is added using the “Height Blend” node.

Color Base – Terracotta

I started by creating 4 or 5 color variations (orange, beige, violet, brown, and greenish).

Each color is mixed with its modified base color via an HSL node (often desaturation and darker) with a grunge map as opacity. Each variation is added with different tile masks, using one or more “Histogram Select” nodes to randomize the placement of each color.

It’s something I have always somewhat done, but I pushed it on this one after seeing others do it much more exaggeratedly in their works.


Once all the variations were added, I created a new mask, colored in a gradient map to introduce further color variations.

I then corrected these variations with an HSL adjustment before adding the colors corresponding to each type of damage in my material.

I then retrieved the impurities to create masks that would define whether they would be light or dark, adding a color variation.

Next, I did the same with the outline marking the hollows of the inclusions, accentuating them for a more pronounced effect.


To add overall color variation to my Terracotta, I created a mix of different grunge maps to generate two distinct textures for the two color variations I wanted to incorporate into my tiles.

One uses an “add” operation for lighter tones and the other uses a “multiply” operation for darker tones.

The two colors chosen in my gradient map are both in green tones to complement the colors selected for my tiles as much as possible.


Color Base – Wood

To create my base color for the wood, I used the independent graph of my wood grain warp to generate mixes of grunge that would always follow the shape of the wood grain in my material, making masks to create color variations.

Initially, there is the neutral base color of my wood, a uniform color mixed with its modified version through an HSL node and a grunge map as opacity. Then, a “directional noise” connected to my warp, mixed with other noises to create two types of masks.

One to add the light variations of my wood, and the other to introduce the dark variations.


After creating this solid foundation, throughout the rest of the graph.

I simply added variations and details: dark into light to emphasize the deeper parts of the wood, with the higher parts being a bit more worn and therefore lighter.

I also introduced dark colors to highlight scratches and cracks on the wood.


To conclude with my base color, the final touch was to add dust.

I did it in two steps to have better control, starting with the overall part and then focusing on the wood.



To begin with the roughness, I converted the final blend of my base color into grayscale, inverted it, and passed it through a “highpass.” Then, I inverted this same highpass to obtain the valid grayscale for the wood.

I mixed and added it to the previous highpass, resulting in a correct base to continue creating my roughness.


Following that, working on the roughness is similar to what I did for the base color, but by retrieving the mask for each and adding them (white) or subtracting them (black) while adjusting the opacity to manipulate the grayscale.


Lighting and Rendering

I rendered it in Marmoset. I had two fairly simple scenes: one for the material on a cylinder and a sphere, and another for showcasing the floor. My renders are always quite straightforward; I use an HDRI onto which I place lights, adjusting their intensity and color.

Once the rendered images are exported, I process them in Photoshop to add my vignette and sometimes an optimized sharpening filter.


I worked on my material in a fairly relaxed manner, relying on my knowledge and also referring to videos such as those by Khayyam Naghiyev or Derk Elshof. I adapted their tips and explanations to suit my needs whenever I encountered a problem.

I like to push my abilities to the maximum when working on a material, so I seek feedback from other artists to get as close as possible to what I envision.

I believe asking for feedback is a great practice as it allows for self-reflection through others’ opinions and their analysis, contributing to valuable learning experiences.

I would like to express immense gratitude to those who followed and provided guidance on the creation of this material. Their support enabled me to surpass my initial expectations, and I have learned a great deal from them.

A big thank you to GameArtist for allowing me to showcase this material.

It’s the first time I’ve talked about my work, and it was a real challenge to do so.

Thank you very much for taking the time to read, hoping that this might be inspiring for you, just as other articles have been for me.