Tutorial: Breaking Texture Repetetion in Godot using Height Map
Before > After


Prerequisites
Addons - Height Blend Node & UV Manipulation. Both can be installed from the asset library within the editor.


Shader
We’ll use noise textures to blend different variations of the same texture. These variations will have different angles, scale and offset. To do this, we need to modify the UV. This is best done with the UV Manipulation node I made.
We need to sample the texture multiple times. We can use multiple Texture2D nodes, or better yet, use a Texture2DParameter with SamplerPorts. This way we only need to input the texture once.

Use UVManipulation nodes with different scale, rotation and offset.

We can use an image noise texture, or godot’s built-in noise texture.

Enable seamless, increase blend skirt & disable fractal. Now we have a smooth perlin noise. Change frequency to change noise scale.

Multiply the main UV by noiseScale parameter. Duplicate the noise texture and connect a UVManipulation node. Set the scale to a higher value and change rotation.

Using the base noise textures for blending will reduce details of the textures, especially normal maps.
We’ll use the noise texture with the material’s heightmap and the HeightBlend node that’ll result in a sharp and natural blend.

Adjust contrast and height offset to get a similar result to the image below. The values below are: Contrast: 4.0, Height Offset: 0.2.

Use Mix node to blend between all 3 variations.

