Efficient way to uniquely offset a great volume of noise textures?

Godot Version

4.4.1v rc1

I’m creating a game with isometric-like tiles.
I’ve given myself a goal to create a sort of wave effect on the outskirts of my tiles using shaders(noise), given that my tiles change their vertical position regularly I change the shader based on the tile height giving them the effect of emerging from the tides.
Because I need every tile to have a differently offset wave pattern I create a new instance of a saved noise_texture2D that has a fast_noise_lite for every tile on screen. I then modify the noise offset property and append the texture to the tile shader. This adds up when I use 600+ tiles and creates quite a bit of overhead when I first load the tiles (also unnecessary RAM usage).

Is there a way to individually offset the noise of the noise texture on the tiles without having to duplicate it for every tile?

I’ve thought of making a single overlaying mesh for the wave effect, but that would prove to be difficult given the isometric-like projection. Not sure I could z-sort that.
I’ve also thought of not modifying the offset property entirely and just moving the textures UV via shader, but that could prove to make a repetitive pattern, also seams.

Any help is greatly appreciated.

If you duplicate the NoiseTexture resource, it’ll duplicate the generated texture data in RAM. Nothing can be done about that.

I’d go for the shader approach instead. This allows you to use fancier approaches like hex tiling which do a great job at reducing visible tiling in large repeating textures.

1 Like

Oh, didn’t know about such an approach, I’ll look it up.
Thanks a bunch:)