Ceramic Tiles Randomizer

by Paco Barruguer in Surfacing

About the node

If you are engaged in architectural visualization, you have probably encountered the issue of texture tiling. Nowadays, there are many ceramic tile companies that offer their textures on the web, allowing us to download several graphics of the same model.

But what is the best way to utilize these textures?

At first glance, there are two approaches to tackle this.

  • If we have modeled the ceramic tiles, we could create a separate material for each texture and manually apply it to the different tiles. However, this method would be impractical since it would result in numerous materials that only work with a specific texture position.
  • If we have a plane to apply our material to, we would need to create a composite texture (or a master texture) in an image editing software, which incorporates all the downloaded graphics. When generating this composite image, we would have to rotate the textures to introduce variation. Additionally, we would need to consider the grout, which cannot be edited later if the client requests changes. If the ceramic tile model features relief, metallic areas, or different levels of roughness, we would have to create a separate composite image for each attribute, ensuring that the variation we introduce in the diffuse texture matches the new map.

Both methods are impractical and time-consuming when aiming to achieve high-quality materials without noticeable tiling.

To address this challenge, we have developed a node-based system that efficiently handles the tiling issue and grants us control to differentiate between square and rectangular ceramic tiles, utilize roughness maps, metalness, specular highlights, and bump mapping, generate diverse variations, and more.

25 ceramic tiles with a single texture. Left: Tiled, Right: With our node


We can load up to 8 different textures. If we need more, we simply import another material containing the node. This way Blender, when importing a material with the same nodes, will rename them to *.001 and we will be able to add up to 8 new textures.

We make a random selection of 50% of the tiles to apply the new material and we would already have 16 different textures.

Our node works in the same way with each ceramic tile being an object or all of them being inside the same object, even if we work with a vector (which is the most efficient way).

Generally, ceramic tiles can be square or rectangular. Our node works with both types of tiles.

For square tiles (C), the node generates 4 variations for each texture, randomly rotating it 0º, 90º, 180º and 270º. For rectangular tiles (R), in principle the node generates 2 variations, rotating the texture 0º and 180º. This is how the randomness would be in real life.

However, to give more variety to the rectangular tiles, we have the option to allow mirroring of the texture, giving 2 more variations for each texture.

Finally, we have a Seed slider that allows us to create new random combinations.


·    For the node to load the textures, we must have the UVs correctly deployed.

  • If you have different textures for roughness, metalness, etc. you must load them all in the same order as you loaded the diffuse so that each colour texture is correctly assigned to roughness, metallicity, etc.
  • Cycles only

Using the node

Published about 1 year ago
Blender Version 4.1, 4.0, 3.6, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.93, 2.92, 2.91, 2.9, 2.83, 2.82, 2.81, 2.8
Render Engine Used Cycles
License GPL
Have questions before purchasing?

Contact the Creator with your questions right now.

Login to Message