From Valve Developer Community
Revision as of 20:59, 25 August 2020 by Deprecated (talk | contribs) (Added shaders for $nodiffusebumplighting)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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: $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.

  • 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 X axis.
  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.
Note:All values must be included!
Bug: Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place.
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.
$bumpscale <float>  (DX8)
Scales the bump map by the given value in DirectX 8. To do: Does this actually exist? Seemingly not present in DX8 fallback shaders.
$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.
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 in <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> (only in <Counter-Strike: Global Offensive>)
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:$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:Only used by <Half-Life 2>materials/nature/toxicslime002a.
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