$envmapmask
Jump to navigation
Jump to search
$envmapmask
defines a specular mask, which affects how strongly each pixel of a material reflects light from the $envmap. The mask should be a greyscale image in which entirely reflective areas are white and entirely matte areas are black

$envmapmask
will not work in model materials using $bumpmap
. See #Alternative_methods.VMT syntax example
$envmapmask <texture>
VertexLitGeneric { $envmap env_cubemap $envmapmask "props/tvscreen_test" }
Additional parameters

npc_cscanner's mask.
$envmapmasktransform <matrix>
- Adjusts UV mapping of the specular mask.
- DirectX 8 and below use
$envmapmaskscale
instead.
- 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 ?]
$envmapmaskscale <float>
- Scales the specular mask by the given value.
- See also
$envmapmasktransform
, above. - Requires DirectX 8.
$envmapmaskframe <integer>
- The frame to start an animated specular mask on.
Alternative methods
Rather than creating a whole new texture for a specular mask, you can embed one into the alpha channel of the $basetexture
or $bumpmap
. Model materials with $bumpmap
must do this. Unfortunately, it won't reduce memory usage.
If you do use these commands, transformations and other such parameters applied to $basetexture / $bumpmap will also apply to the specular mask.
$basealphaenvmapmask <bool>
- Use the alpha channel of
$basetexture
as the specular mask.Note:Alpha channels embedded in $basetexture work in reverse. Black areas are reflective, white areas are matte. This is because, say, a window texture's alpha mask would be mostly black to allow for transparency -- yet that black part of the mask would also be the most reflective part. To avoid having to duplicate a .VTF file simply to invert the alpha mask, you can use this VMT parameter instead.
Note:The alpha channel isn't inverted in the Source 2007 engine, at least for models.
Todo: Check if this is true for Source 2007 world materials not used on models. $normalmapalphaenvmapmask <bool>
- Use the alpha channel of
$bumpmap
as the specular mask. $selfillum_envmapmask_alpha <bool>
- Use alpha channel as the $selfillum mask instead of
$basetexture
's alpha. In this event this command replaces $selfillum - do not use both.
See Also
- $basetexture
- $envmap (environment map)
- $phong (diffuse reflection)
- $selfillum