Creating a Waterfall Material
This is a Tutorial to create a Waterfall material. It will scroll downward and refract the image behind it.
The bump map
A waterfall requires a Normalmap. This tutorial will teach you how to create the said normalmap, then scroll it on it's surface to give the illusion of moving, refracting water.. For this tutorial you can use an image editing program of your choice.
- Make a new Image with a maximum size of 1024x1024.
- We mus now create a Solid Noise effect Filters → Render → Clouds → Solid noise. Set:
- x to 16.0(the highest possible)
- y to between 1.0 and 3.0
- Detail to 15(highest possible)
- Finally, you must check the Tileable box to make it seamless.
- Save your file as TGA and open it with VTFEdit. Keep an extra copy of the greyscale image you just used! We will use that later in the tutorial!
- Check the texture config dialogue's Generate Normal map box and set:
- Filter to 4 Sample
- Height Source to Average RGB
- Scale to 9.0
- Normal Format and Alpha Format to DXT5.
- Save this bump map in a folder like "nature/" in your mod materials folder or game materials folder and give it a name like "waterfall_n.vtf".
The Material

The basic Material
At first you have to create a material file(vmt) and name it something like waterfall.vmt.
Side Note: Vmt files need to have the same name as the texture you created. I named all of my files the same name: "waterfall.vtf", "waterfall.vmt", "waterfall_n.vtf".
In the material file you should use the Refract shader:
Refract { }
Side Note: Since we are using "refract" not "lightmappedgeneric" we don't need a $basetexture for this vmt file (or shader).
That is now the base of our Material. Now we add the Normalmap with $normalmap and the path to it like "nature/waterfall_n".
For the right refraction amount we add $refractamount with a value between 0 and 1 like 0.08.
Refract { $normalmap nature/waterfall_n $refractamount .08 }
See Refract for more commands you'll want to use.
Scroll animation
When you use your material in a map you should see that the refraction looks frozen, so you must add a "Scrolling" effect.
We can do this with an animated texture, or for the easier way we can add the TextureScroll material proxy:
Proxies { TextureScroll { texturescrollvar $bumpTransform texturescrollrate 1.3 texturescrollangle 270.00 } }
So now the whole vmt should look like this
Refract { $normalmap nature/waterfall_n $refractamount .08 Proxies { TextureScroll { texturescrollvar $bumpTransform texturescrollrate 1.3 texturescrollangle 270.00 } } }
Final Product
Download a sample of the finished texture. http://s3g.brainnerd.com/forum/index.php/topic,142.0.html
You can also download a sample map that uses the textures from the same site.