From Valve Developer Community
Revision as of 02:36, 8 May 2021 by HGrunt (talk | contribs)
Jump to: navigation, search
A material's albedo (left) compared to its bump map.
The above material in-game.

$bumpmap is a material shader parameter available in all Source games. It 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.png Warning: $bumpmap will disable prop_static's per-vertex lighting in every Source game but Counter-Strike: Global Offensive. Not enough data is stored in the vertices for normal mapping, so the engine has no choice but to fall back.
Note.png Note: 
  • In the Water shader, $bumpmap is for a DX8 du/dv map. Use $normalmap instead.
  • Bump maps cannot be used on decal textures, except in Counter-Strike: Global Offensive.

Basic syntax

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

Additional parameters

$bumptransform <matrix>  (DX9+)
Transforms the bump map texture. To do: Does this actually require DX9? Present in DX8 fallback shaders.
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 horizontal X axis while the vertical Y axis is still at original scale.
  3. rotate rotates the texture counter-clockwise in degrees. Accepts any number, including negatives.
  4. translate shifts the texture by the given numbers. '.5' will shift it half-way. 1 will shift it once completely over, which is the same as not moving it at all.
Note.png Note: All values must be included!
Bug.png Bug: Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place.
Bug.png Bug: 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.
$bumpframe <integer>
The frame to start an animated bump map on.
$nodiffusebumplighting <boolean>
Stops the bump map affecting the lighting of the material's albedo, which help combat overdraw. Does not affect the specular map, making it useful for distorted reflections on flat surfaces.
Bug.png Bug: Does not function beyond <Source><Source> Source 2007 .[confirm]
Shaders: LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
$ssbump <boolean> (in all games since <Source><Source>)
Flags the bump map texture(s) as being self-shadowing. Click for more details.
Shaders: LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
$forcebump <boolean>  (removed since Left 4 Dead)  (DX8)
If 0, use bumpmapping if the card says it can handle it. If 1, always force bumpmapping on.
$bump_force_on <boolean> (in all games since Portal 2)
Force bump mapping on, even for low-end machines.
Shaders: LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
$addbumpmaps <boolean> (only in Counter-Strike: Global Offensive)
Enables the usage and blending of two bump maps together for LightmappedGeneric.
Shaders: LightmappedGeneric
$bumpmap2 <texture>  (DX9+)
The second bump map to use, for either WorldVertexTransition or for LightmappedGeneric in Counter-Strike: Global Offensive for bump map blending.
Shaders: LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
$bumpframe2 <integer>  (DX9+)
Same as $bumpframe, but for the second bump map.
Shaders: LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
$bumptransform2 <matrix>  (DX9+)
Same as $bumptransform, but for the second bump map.
Note.png Note: $detail used with $detailscale will override this on LightmappedGeneric if the shader is using $addbumpmaps.
Shaders: LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition
$bumpmask <texture>  (DX9+)
If using two bump maps, use a third bump map to act as the base, with the alpha channel acting as a mask for the first two bump maps. The alpha channel of $bumpmask is also used as a specular mask.
Note.png Note: Only used by Half-Life 2materials/nature/toxicslime002a.
Note.png Note: Does not work with $seamless_scale.
Shaders: LightmappedGeneric
$bumpdetailscale1 and $bumpdetailscale2 <normal> (only in Counter-Strike: Global Offensive)
The strength of the first and second bump maps for bump map blending.
Shaders: LightmappedGeneric

Console commands

mat_fastnobump <boolean>
Quickly enables/disabled normal mapping.
mat_normalmaps <boolean>
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!)
mat_bumpmap <boolean>
Enable or disable normal mapping. Default 1.

See also