Non-repeating textures

if you need to repeat a texture multiple times across a large plane, you end up with very obvious tiles. if you have a set of 10 textures that are seamless but varied (say the edges match, but the inside is different), is there a way to randomise the placement of those tiles in blender, so that you don’t have that obvious repeating pattern. In 3d max, as far as I know, you can use a BerconTile to do this.

I am not sure, how to achieve this with cycles nodes. We lack a random node, which produces something like “cellnoise” or “hashnoise”.

You can achieve it with OSL. Three images, each contains number 1 to 3.

The shader; a rough sketch for 3 image textures. (Texture names stored in T0, T1 and T2.)

shader random_tiles(point PP=P, string T0="", string T1="", string T2="", output color C=color(0))
{
    point Coords = transform("shader",4*PP);
    float pU = -1*Coords[0];
    float pV = Coords[1];
    float tile_id = floor(3*cellnoise(Coords));
    
    if (tile_id < 1) 
        {
            C = texture(T0, pU, pV, "wrap", "periodic");
        }
    else if (tile_id < 2) 
        {
            C = texture(T1, pU, pV, "wrap", "periodic");
        }
    else 
        {
            C = texture(T2, pU, pV, "wrap", "periodic");
        }
}
1 Like

See this thread for a node approach.

You can configure the brick texture to generate randomly “shaded” bricks. If you pass the output through a noise node (with parameters 42.5, 0, 42.5), you get a random color on those bricks which you can then multiply and other maths stuff to influence the coordinates you pick your texture from.

1 Like

Thanks for the post. I will play around with this solution and see if I can get it to work for me.