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 08: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