Creating a Waterfall Material: Difference between revisions
mNo edit summary |
TomEdwards (talk | contribs) (great job - I've cleaned it up and linked to existing tutorials in a few places instead of reiterating stuff) |
||
Line 1: | Line 1: | ||
This is a Tutorial to create a Waterfall material. It will scroll downward and refract the image behind it, and optionally reflect. | |||
== The bump map == | |||
For a waterfall you need a Normalmap which Refracts the light so that the things behind it gets distorted. I used [[The_GIMP]] with a normalmap plug-in for this Tutorial. | |||
#Make a new Image with a maximum size of 1024x1024, I used a size of 512x512 pixels. | |||
#[[Image:Solid_noise(15%2C16%2C1_2).png|thumb|The 'solid noise' image]] We create now a solid Noise so you go to ''Filters → Render → Clouds → Solid noise''. Set: | |||
#* ''x'' to ''16.0''(the highest possible) | |||
Make a new Image with a maximum size of 1024x1024, I used a size of 512x512 pixels. | #* ''y'' to between ''1.0'' ''and 3.0'' | ||
We create now a solid Noise so you go to ''Filters → Render → Clouds → Solid noise'' | #* ''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]]. | |||
# Check the texture config dialogue's ''Generate Normal map'' box and set: | |||
#* ''Filter'' to ''4 Sample'' | |||
#* ''Height Source'' to ''Average RGB'' | |||
Save your file as TGA and open it with [[VTFEdit]]. | #* ''Scale'' to ''9.0'' | ||
#* ''Normal Format'' and ''Alpha Format'' to ''RGBA8888''. | |||
#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 Material == | ||
=== The basic Material === | === The basic Material === | ||
At first you have create a materialfile(vmt) and name it waterfall.vmt or similar. | At first you have create a materialfile(vmt) and name it waterfall.vmt or similar. | ||
In the materialfile you should use the '''LightmappedReflective''' shader: | In the materialfile you should use the '''[[LightmappedReflective]]''' shader: | ||
''' | '''LightmappedReflective''' | ||
{ | { | ||
} | } | ||
<br> | <br> | ||
So we don't need a '''$basetexture''' but we need a '''$RefractTexture''' and optionaly a '''$ReflectTexture'''. | So we don't need a '''$basetexture''' but we need a '''$RefractTexture''' and optionaly a '''$ReflectTexture'''. | ||
The attribute for the '''$RefractTexture''' parameter is ''_rt_WaterRefraction'' and for '''$ReflectTexture''' is it ''_rt_WaterReflection''. | |||
Now it should look like this: | |||
LightmappedReflective | |||
{ | { | ||
''' | '''$RefractTexture _rt_WaterRefraction''' | ||
} | } | ||
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''. | |||
LightmappedReflective | |||
{ | { | ||
$RefractTexture _rt_WaterRefraction | |||
''' | '''$normalmap nature/waterfall_n''' | ||
''' | '''$refractamount .08''' | ||
} | } | ||
See [[Water (shader)]] for more commands you'll want to use. | |||
=== Scroll animation === | === 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. | 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 the easier way we add | |||
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 | So now the whole vmt should look like this | ||
LightmappedReflective | |||
{ | { | ||
$RefractTexture _rt_WaterRefraction | |||
$normalmap nature/waterfall_n | |||
$refractamount .08 | |||
Proxies | |||
{ | { | ||
TextureScroll | |||
{ | { | ||
texturescrollvar $bumpTransform | |||
texturescrollrate 1.3 | |||
texturescrollangle 270.00 | |||
} | } | ||
} | } | ||
Line 119: | Line 115: | ||
*embeding into a map | *embeding into a map | ||
[[Category:Material System]] | |||
[[Category:Tutorials]] |
Revision as of 09:24, 8 August 2008
This is a Tutorial to create a Waterfall material. It will scroll downward and refract the image behind it, and optionally reflect.
The bump map
For a waterfall you need a Normalmap which Refracts the light so that the things behind it gets distorted. I used The_GIMP with a normalmap plug-in for this Tutorial.
- Make a new Image with a maximum size of 1024x1024, I used a size of 512x512 pixels.
- We create now a solid Noise so you go to 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.
- 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 RGBA8888.
- 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 create a materialfile(vmt) and name it waterfall.vmt or similar. In the materialfile you should use the LightmappedReflective shader:
LightmappedReflective { }
So we don't need a $basetexture but we need a $RefractTexture and optionaly a $ReflectTexture.
The attribute for the $RefractTexture parameter is _rt_WaterRefraction and for $ReflectTexture is it _rt_WaterReflection.
Now it should look like this:
LightmappedReflective { $RefractTexture _rt_WaterRefraction }
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.
LightmappedReflective { $RefractTexture _rt_WaterRefraction $normalmap nature/waterfall_n $refractamount .08 }
See Water (shader) 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
LightmappedReflective { $RefractTexture _rt_WaterRefraction $normalmap nature/waterfall_n $refractamount .08 Proxies { TextureScroll { texturescrollvar $bumpTransform texturescrollrate 1.3 texturescrollangle 270.00 } } }
Optional: Reflection
When you want Reflections you must add $ReflectTexture, $reflectamount and $fresnelpower. Use for $fresnelpower a value of 5 because I think it looks the best. For $reflectamount you must find your own value because there is no "Perfect value".
"LightmappedReflective" { "$RefractTexture" _rt_WaterRefraction "$ReflectTexture" _rt_WaterReflection "$normalmap" "nature/waterfall_n" "$refractamount" .08 "$reflectamount" .3 "$fresnelpower" 5 "Proxies" { "TextureScroll" { "texturescrollvar" "$bumpTransform" "texturescrollrate" 1.3 "texturescrollangle" 270.00 } } }
TODO
- embeding into a map