bump mapped water/reflection


doing water with a reflection texture that gets mapped orthogonally onto the screen with texture coordinates perturbed by the normals of the bump map of the water surface is quite common. However: how to create a realistic (or at least good looking) bump map for the water surface?

Or rather, for animated water, a set of bump maps… I did something with perlin noise with a cycled and seamless noise function to create 100 bump maps which fit neatly and this looks at least a little bit like water, but not really very good… I use it in all my water screenshots, for example look at


The first and the last screenshot look quite realistic. The other two are overexposed.
Maybe a pseudo-reflection of the environment will add some realism to this.

Is there any change to post the shader source and/or the noise-map generation?

what do you mean with “pseudo-reflection”? There IS a reflection of the environment on the water… I don’t know if I can post the code as it’s copyright protected, but I can explain how I did it, but it’s not very sophisticated anyway.

here IS a reflection of the environment on the water…

Oh… hm It’s hard to detect…

I don’t know if I can post the code as it’s copyright protected…


We use artist authored bump maps. It’s long to author, and a real PITA. Yet, it gives correct results : http://ffiw.succubus.fr


thanks… looks good, although I have to say that from the screenshots, mine do not look very different. Is there not “the one” mathematical solution somewhere?

The approach I am thinking about right now to create a 3d mesh with the resolution of the bump texture, for example 256 x 256 grid cells, and then do a cycled animation that makes this surface move like a water surface, and simply turn every step of the animation into a bump map. But how to calculate the “water animation”? Perlin noise? Sine curves?

Are your bump maps animated? I guess that is an additional PITA for the artists :wink: .

A lot of good reading here: http://www.vterrain.org/Water/index.html

It seems like choppy ocean water resembles Perlin noise, but calm lake water resembles summed sine waves. To get really, really realistic water, I think you can use sine waves for the large swells (vertex displacement). But for the small details (normal maps) you see the effects of wind and colliding waves. Wind can shear the usual sine waves and cause little repeating strings of ripples. Colliding waves tend to splash up, losing their sine wave shape and making spray sometimes. It would take a pretty clever physics model to do all of this and make a tileable texture out of it.