Water (shader)
From Valve Developer Community
(Redirected from $dudvmap)
A custom Water material from Resistance And Liberation.
Real-time reflection of entities in Episode Two.
Water is one of the Source engine's most complex shaders. It creates animated, real-time reflective and refractive, fogged, normal-mapped water.
| Table of contents |
[edit]
Expensive and cheap
Water materials fall into two groups: expensive and cheap. Expensive water reflects and refracts the world in real-time, while cheap water uses an $envmap and does not refract.
Users can disable expensive Water materials through their video options.
[edit]
Above and below
Water actually requires two materials: one for above the surface and one for below. These materials are independent of each other, but of course for proper effect need to correlate in most areas.
[edit]
Shader parameters
[edit]
Textures
Tip: There is no $basetexture here. The surface is a combination of fog colour, animated bump map, and reflection.-
$abovewater <bool> - Whether this material is used for above or below the water’s surface.
-
$bottommaterial <material> - Required field. This is the material (not texture) to use when underneath the water’s surface. The bottom material must have
$reflecttextureand$abovewaterdisabled, but can otherwise do whatever it wants. -
$bumpmap <texture> -
$normalmap <texture> - A Du/dv map for DirectX 8 rendering (
$bumpmap), and a bump map for DirectX 9 and above ($normalmap). These should be animated unless the water is to be perfectly still. -
$dudvframe <int> -
$bumpframe <int> - Frame to start the animated du/dv map and bump map on, respectively. Somewhat confusingly,
$bumpframeaffects$normalmap, which should be pointing to a bump map.
[edit]
Fog
-
$fogcolor <RGB matrix> - This is the color of the water’s volumetric fog. Generally this value should match the color used in the bottom material.
-
$fogenable <bool> - Enable volumetric fog for the water.
-
$fogend <float> - This is the distance in inches from the eye at which water fog ends.
-
$fogstart <float> - This is the distance in inches from the eye at which water fog starts.
-
Warning: This must be 0for edge fading to work properly.
[edit]
Reflection/Refraction
-
$envmap <env_cubemap / texture> - Provides reflections for cheap water. See
$envmap -
$forcecheap <bool> - Make this water cheap regardless of the water_lod_control entity's or user's settings. This will disable real-time reflection and instead use
$envmap. Refraction is assumed to be opaquely the water fog color. -
$forceexpensive <bool> - This forces the water to render itself as expensive, regardless of the map's water_lod_control or the user's settings.
-
$reflectamount <float> - This is the amount of warp for the reflection. Higher values produce more visible reflections.
-
$reflectentities <bool> - Make the water reflect entities. By default, no entities are reflected.
-
$reflecttexture <texture> - Texture to use for reflection. For real-time reflections, use
_rt_WaterReflection. -
Tip: Specify $refracttexturewithout$reflecttextureto get real-time refraction on$envmapreflections. -
$reflecttint <RGB matrix> - This is the color tint for the real-time reflection and environment map.
-
$refractamount <float> - This is the amount of warp for the refraction. Higher values produce more warping.
-
$refracttexture <texture> - Texture to use for refraction. For real-time refractions, use
_rt_WaterRefraction. -
Tip: Specify $refracttexturewithout$reflecttextureto get real-time refraction on$envmapreflections. -
$refracttint <RGB matrix> - This is the color of the refraction.
-
Warning: It is recommended that you set this to white or something close to white so that edge transitions work properly on DX9.
[edit]
Other
-
%compilewater <bool> - This is needed to make a map using the material compile properly.
-
$surfaceprop water - Used by the physics system to define the surface as being water.
-
%tooltexture <texture> - Defines the texture Hammer will display in the material browser.
-
WaterLOD proxy - This connects the water_lod_control entity in a level to the water’s internal parameters. This must be declared in the material for the LOD mechanisms to work properly.
[edit]
See also
- Adding Water (in Hammer)
- Creating a Waterfall Material

