# Need to produce an animated texture of Water where each image tiles in all directions

I need to produce a 2D 'animated' texture of "water" for a game in which each image tiles in 'all' directions, much like those produced by the Caustics Generator, but with the power and flexibility of something the likes of Blender.

The final result from Caustics Generator is 32 images that are actually animated such that when the full 32 images are played in a loop they will seamlessly loop forever. They will not only loop in time, but each image also tile in all directions. This is nice, but it comes in only one flavor so to speak.

I'd like to accomplish the same thing with a Blender type tool, and I have actually gotten to the point where I generate the X number of images, but they do not tile in 'all' directions, nor are they slightly animated. I've tried Blender texture animations using offsets but with only limited success.

Does anyone know of how to (or of a tool) which will animate textures such that they tile in all (4) directions?

Many thanks in advance ....

• Rather than doing it this way, you could produce a single water texture and have some turbulence applied to it in a pixel shader. – Maximus Minimus Oct 31 '12 at 16:13
• The problem is its going to go into a 2D game engine AGK by Game Creators and it'll have to be invoked as a series of static images to be useful. – ProfVersaggi Oct 31 '12 at 18:16
• Not really helping for what you are looking for, but just as an inspiration for seamless tiled water rendering: tiled directional water shader with flow map – msell Nov 1 '12 at 6:46
• I may have stumbled upon a potential solution, I'm investigating in depth it now. The problem w/Caustics as a tool is that it produces the light texture which shines on the bottom of a pool, sea bed, etc. It's quite good for that. What I required was something that could produce the waves at the tops and animate in a similar tiles, fashion. I've found that Genetica Studio (not the light) does exactly that. I've run a proof of concept test for the animation sequence and the tiling capabilities and it seems to do the job. I'll report back later w/the final product once I get it to my liking. – ProfVersaggi Nov 3 '12 at 10:02
• Why don't you try to generate it by yourself using some noise (perlin or worley noise) for 2D a 3D rigid perlin would do the waves just great (3D noise animates in time). The advantage of using noise is that it is infinitely tiable and random :) – nosmirck Nov 15 '13 at 3:03

This may not be an answer, but rather an explanation.
Graphic assets like 'tile-able' tiles are usually not automatically generated, but created by an artist.
For creating them by hand (digitally painting them) there are numerous ways and none is really simple to explain and apply. They also differ greatly based on what style of graphic you want (for a game etc.).

One tutorial for creating seamless tiles (pulled off Google) for your idea, using PhotoShop: http://www.game-artist.net/forums/spotlight-articles/892-tutorial-create-tileable-texutres.html

I am not saying that there is no tool for generating (some) seamless tiles with various textures (maybe including water), but they are not widely used and one reason for it is the quality of result is rarely usable. (I'm sorry but I don't know any I can recommend.)

So one advice would be to hire an artist to make them.
Or you can use some from free galleries on web (there are some, but obviously not very good quality and not a big choice of styles) or even 'borrow' them from some old games.

I disagree with the first answer. It is possible to procedurally generate seamless images, it is described in Michael Goodfellow's blog post Part 84: Seamless Textures.

Although the article shows an example for an animated lava texture, the technique can of course be adapted for water easily.

I ran into something on the net which said "just do it in four dimensions." You can get a seamless texture in x by sampling a circle in two dimensions, and do the same for y using the other two dimensions. So the noise is sampled with a code like

for (i = 0; i < height; i++) {
y = 2*PI*i/height;
for (j = 0; j < width; j++)
{
x = 2*PI*j/width;
texture[i*width+j] = simplexNoise(sin(x), cos(x), sin(y), cos(y));
}
}