From Valve Developer Community
Jump to: navigation, search
A material's albedo (left) compared to its bump map.
The above material in-game.

The $bumpmap VMT parameter specifies a texture that will provide three-dimensional lighting information for a material. The texture is a bump map, but the process it is used for is called normal mapping. The two terms are often used interchangeably, however.

Warning:$bumpmap will disable prop_static's per-vertex lighting in every Source game but CS:GO. Not enough data is stored in the vertices for normal mapping, so the engine has no choice but to fall back.
  • In the Water shader, $bumpmap is for a DX8 du/dv map. Use $normalmap instead.
  • The $bumpmap parameter is not compatible with decals textures.

Basic syntax

	$basetexture	brick/brickwall021a
	$surfaceprop	brick
	$bumpmap		brick/brickwall021a_normal}

Additional parameters

$bumptransform <matrix>
Transforms the bump map texture. Requires DirectX 9 or above.
The default position is "center .5 .5 scale 1 1 rotate 0 translate 0 0".
  1. center defines the point of rotation. Only useful if rotate is being used.
  2. scale fits the texture into the material the given number of times. '2 1' is a 50% scale in the X axis.
  3. rotate rotates the texture anti-clockwise. Accepts any number, including negatives.
  4. translate shifts the texture by the given number of heights/widths. '.5' will shift it half-way.
Note:All values must be included!
Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place.
Rotating textures applied on brushes will rotate around the map origin (confirm: Orangebox engine only?). A fix for this is to change the center position in the VMT to the brush's origin.
Flags the bump map texture as being self-shadowing. Click for more details.
$bumpscale <float>
Scales the bump map by the given value in DirectX 8.
$bumpframe <integer>
The frame to start an animated bump map on.
$nodiffusebumplighting <bool>
Stops the bump map affecting the lighting of the material's albedo, which help combat overdraw. Does not affect the specular map.
$forcebump <bool>
Forces DirectX 8 cards to render the bump map. They normally don't for performance reasons.
$bumpoffset <?>
Confirm:DX8 version of center?
$bumpmap2 <texture>
$bumpframe2 <integer>
Used by the WorldVertexTransition shader in blend materials that display two textures. DirectX 9 required.

Console commands

mat_fastnobump <bool>
Quickly enables/disabled normal mapping.
mat_normalmaps <bool>
Displays the bump map texture of all materials that have one in place of their albedo.

(Yes, these two commands have bump and normal the wrong way around!)

See also