$bumpmap: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (Revamped with MatParam changes)
(Added $bump_force_on from CSGO, added shader information for some parameters)
Line 8: Line 8:
{{note|
{{note|
* In the <code>[[Water_(shader)|Water]]</code> shader, <code>$bumpmap</code> is for a DX8 [[Du/dv_map|du/dv map]]. Use <code>$normalmap</code> instead.
* In the <code>[[Water_(shader)|Water]]</code> shader, <code>$bumpmap</code> is for a DX8 [[Du/dv_map|du/dv map]]. Use <code>$normalmap</code> instead.
* Bumpmaps cannot be used on decal textures, except in {{csgo}}.}}
* Bump maps cannot be used on decal textures, except in {{csgo}}.}}


==Basic syntax==
==Basic syntax==
Line 23: Line 23:
{{MatParam|$bumptransform|matrix|Transforms the bump map texture. {{todo|Does this actually require DX9? Present in DX8 fallback shaders.}}
{{MatParam|$bumptransform|matrix|Transforms the bump map texture. {{todo|Does this actually require DX9? Present in DX8 fallback shaders.}}
{{VMT UVtransform}}|dx9=1}}
{{VMT UVtransform}}|dx9=1}}
{{MatParam|[[$ssbump]]|bool|Flags the bump map texture(s) as being self-shadowing. Click for more details.|since={{src07}}}}
{{MatParam|$bumpscale|float|Scales the bump map by the given value in DirectX 8. {{Todo|Does this actually exist? Seemingly not present in DX8 fallback shaders.}}|dx8=1}}
{{MatParam|$bumpscale|float|Scales the bump map by the given value in DirectX 8. {{Todo|Does this actually exist? Seemingly not present in DX8 fallback shaders.}}|dx8=1}}
{{MatParam|$bumpframe|int|The frame to start an animated bump map on.}}
{{MatParam|$bumpframe|int|The frame to start an animated bump map on.}}
{{MatParam|$nodiffusebumplighting|bool|Stops the bump map affecting the lighting of the material's [[albedo]], which help combat [[Material optimization#Overdraw|overdraw]]. Does not affect the [[specular]] map.
{{MatParam|$nodiffusebumplighting|bool|Stops the bump map affecting the lighting of the material's [[albedo]], which help combat [[Material optimization#Overdraw|overdraw]]. Does not affect the [[specular]] map.
: {{bug|Does not function beyond {{Game link|Source 2007}}.}}}}
: {{bug|Does not function beyond {{Game link|Source 2007}}.{{confirm}}}}}}
{{MatParam|$forcebump|bool|If 0, use bumpmapping if the card says it can handle it. If 1, always force bumpmapping on.|dx8=1}}
{{MatParam|[[$ssbump]]|bool|Flags the bump map texture(s) as being self-shadowing. Click for more details.|since={{src07}}|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}}
{{MatParam|$addbumpmaps|bool|Enables the usage and blending of two bump maps together for {{ent|LightmappedGeneric}}.|only={{csgo}}}}
{{MatParam|$forcebump|bool|If 0, use bumpmapping if the card says it can handle it. If 1, always force bumpmapping on.|dx8=1|removed={{l4d}}}}
{{MatParam|$bumpmap2|texture|The second bump map to use, for either {{ent|WorldVertexTransition}} or for <code>LightmappedGeneric</code> in {{csgo}} for bump map blending.|dx9=1}}
{{MatParam|$bump_force_on|bool|Force bump mapping on, even for low-end machines.|only={{csgo}}|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}}
{{MatParam|$bumpframe2|int|Same as <code>$bumpframe</code>, but for the second bump map.|dx9=1}}
{{MatParam|$addbumpmaps|bool|Enables the usage and blending of two bump maps together for {{ent|LightmappedGeneric}}.|only={{csgo}}|shaders=LightmappedGeneric}}
{{MatParam|$bumpmap2|texture|The second bump map to use, for either {{ent|WorldVertexTransition}} or for <code>LightmappedGeneric</code> in {{csgo}} for bump map blending.|dx9=1|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}}
{{MatParam|$bumpframe2|int|Same as <code>$bumpframe</code>, but for the second bump map.|dx9=1|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}}
{{MatParam|$bumptransform2|matrix|Same as <code>$bumptransform</code>, but for the second bump map.
{{MatParam|$bumptransform2|matrix|Same as <code>$bumptransform</code>, but for the second bump map.
: {{Note|<code>[[$detail]]</code> used with <code>$detailscale</code> will override this on <code>LightmappedGeneric</code>.}}|dx9=1}}
: {{Note|<code>[[$detail]]</code> used with <code>$detailscale</code> will override this on <code>LightmappedGeneric</code> if the shader is using <code>$addbumpmaps</code>.}}|dx9=1|shaders=LightmappedGeneric, Lightmapped_4WayBlend, WorldVertexTransition}}
{{MatParam|$bumpdetailscale1|and=$bumpdetailscale2|normal|The strength of the first and second bump maps for bump map blending.|only={{csgo}}}}
{{MatParam|$bumpdetailscale1|and=$bumpdetailscale2|normal|The strength of the first and second bump maps for bump map blending.|only={{csgo}}|shaders=LightmappedGeneric}}


==Console commands==
==Console commands==

Revision as of 18:15, 24 April 2020

A material's albedo (left) compared to its bump map.
The above material in-game.

Template:Shaderparam 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.pngWarning:$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.pngNote:
  • 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

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

Additional parameters

$bumptransform $bumpscale $bumpframe $nodiffusebumplighting [[$ssbump|$ssbump]] $forcebump $bump_force_on $addbumpmaps $bumpmap2 $bumpframe2 $bumptransform2 $bumpdetailscale1

Console commands

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

See also