$bumpmap: Difference between revisions
Jump to navigation
Jump to search
Warning:
. Not enough data is stored in the vertices for normal mapping, so the engine has no choice but to fall back.
Note:
No edit summary |
Deprecated (talk | contribs) (Documented normal map blending from CSGO, removed $bumpoffset as it doesn't seem to exist, misc fixes) |
||
Line 2: | Line 2: | ||
[[Image:Example of bump mapping.jpg|thumb|The above material in-game.]] | [[Image:Example of bump mapping.jpg|thumb|The above material in-game.]] | ||
The '''$bumpmap''' [[ | The <code>'''$bumpmap'''</code> [[material]] 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 [[Wikipedia:Normal mapping|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 {{csgo}}. Not enough data is stored in the vertices for normal mapping, so the engine has no choice but to fall back.}} | {{warning|<code>$bumpmap</code> will disable <code>[[prop_static]]</code>'s per-vertex lighting in every Source game but {{csgo}}. Not enough data is stored in the vertices for normal mapping, so the engine has no choice but to fall back.}} | ||
{{note| | {{note| | ||
* In the <code>[[Water_(shader)|Water]]</code> shader, $bumpmap 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}}.}} | ||
==Basic syntax== | ==Basic syntax== | ||
Line 21: | Line 21: | ||
==Additional parameters== | ==Additional parameters== | ||
; <code>$bumptransform <matrix></code> {{dx9}} | ; <code>$bumptransform <[[matrix]]></code> {{dx9}} | ||
: Transforms the bump map texture. {{todo|Does this actually require DX9? Present in DX8 fallback shaders.}} | : Transforms the bump map texture. {{todo|Does this actually require DX9? Present in DX8 fallback shaders.}} | ||
{{VMT UVtransform}} | {{VMT UVtransform}} | ||
Line 32: | Line 32: | ||
;<code>$nodiffusebumplighting <[[bool]]></code> | ;<code>$nodiffusebumplighting <[[bool]]></code> | ||
: 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. | : 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 in Orange Box builds and later.}} | |||
;<code>$forcebump <bool></code> {{dx8}} | ;<code>$forcebump <bool></code> {{dx8}} | ||
: If 0, use bumpmapping if the card says it can handle it. If 1, always force bumpmapping on. | : If 0, use bumpmapping if the card says it can handle it. If 1, always force bumpmapping on. | ||
; <code>$ | ; <code>$addbumpmaps <bool></code> {{CSGO add}} | ||
: Enables the usage and blending of two bump maps together for <code>[[LightmappedGeneric]]</code>. | |||
; <code>$bumpmap2 <texture></code> {{dx9}} | ; <code>$bumpmap2 <texture></code> {{dx9}} | ||
: The second bump map to use, for either <code>[[WorldVertexTransition]]</code> or for <code>LightmappedGeneric</code> in {{csgo}} for bump map blending. | |||
; <code>$bumpframe2 <integer></code> {{dx9}} | ; <code>$bumpframe2 <integer></code> {{dx9}} | ||
: Same as <code>$bumpframe</code>, but for the second bump map. | |||
; <code>$bumptransform2 <matrix></code> {{dx9}} | ; <code>$bumptransform2 <matrix></code> {{dx9}} | ||
: | : 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>.}} | |||
; <code>$bumpdetailscale1 <[[normal]]></code> {{CSGO add}} | |||
: The strength of the first bumpmap, used for bump map blending. | |||
; <code>$bumpdetailscale2 <normal></code> {{CSGO add}} | |||
: The strength of the second bumpmap, used for bump map blending. | |||
==Console commands== | ==Console commands== |
Revision as of 14:02, 14 May 2019

A material's albedo (left) compared to its bump map.
The $bumpmap
material 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.

$bumpmap
will disable prop_static
's per-vertex lighting in every Source game but 

Basic syntax
LightmappedGeneric
{
$basetexture brick/brickwall021a
$surfaceprop brick
$bumpmap brick/brickwall021a_normal
}
Additional parameters
$bumptransform <matrix>
(DX9 SM2)- Transforms the bump map texture. Todo: 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.
- center defines the point of rotation. Only useful if rotate is being used.
- 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.
- rotate rotates the texture counter-clockwise in degrees. Accepts any number, including negatives.
- 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: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. [todo tested in ?]
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. [todo tested in ?]
$ssbump
- Flags the bump map texture as being self-shadowing. Click for more details.
$bumpscale <float>
(DX8)- Scales the bump map by the given value in DirectX 8. Todo: Does this actually exist? Seemingly not present in DX8 fallback shaders.
$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.
Bug:Does not function in Orange Box builds and later. [todo tested in ?]
$forcebump <bool>
(DX8)- If 0, use bumpmapping if the card says it can handle it. If 1, always force bumpmapping on.
$addbumpmaps <bool>
Template:CSGO add- Enables the usage and blending of two bump maps together for
LightmappedGeneric
. $bumpmap2 <texture>
(DX9 SM2)- The second bump map to use, for either
WorldVertexTransition
or forLightmappedGeneric
infor bump map blending.
$bumpframe2 <integer>
(DX9 SM2)- Same as
$bumpframe
, but for the second bump map. $bumptransform2 <matrix>
(DX9 SM2)- Same as
$bumptransform
, but for the second bump map. Note:
$detail
used with$detailscale
will override this onLightmappedGeneric
.$bumpdetailscale1 <normal>
Template:CSGO add- The strength of the first bumpmap, used for bump map blending.
$bumpdetailscale2 <normal>
Template:CSGO add- The strength of the second bumpmap, used for bump map blending.
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!)