$envmapmask
$envmapmask
is a Shader parameter available in all Source games. It defines a specular mask which affects how strongly each pixel of a material reflects light from the $envmap. The mask should be a grayscale image in which entirely reflective areas are white and entirely matte areas are black. For diffuse type specularity which does not rely on $envmap
, see $phong.
$envmapmask
which is not stored in a subfolder will cause the texture to fail loading in-game. [todo tested in?]$envmapmask
will not work with materials using $bumpmap/ in most situations; see #Alternative_methods.
- LightmappedReflective (uses $normalmap)
- (only in ) VertexLitGeneric
- (only in )LightmappedGeneric
$envmapmask
will not work with materials using $phong, at all. By default it will use the $basetexture's alpha channel for masking the envmap.VMT syntax example
$envmapmask <texture>
VertexLitGeneric { $envmap env_cubemap $envmapmask "props/tvscreen_test" }
Additional parameters
- Transforms the specular mask texture.
- The default position is
center .5 .5 scale 1 1 rotate 0 translate 0 0
.center
defines the point of rotation. Only useful ifrotate
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?]
$envmapmasktransform
, above.CS:GO WorldVertexTransition Parameters
$envmapmask2
.$envmapmask2
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.
$basetexture
as the specular mask.- Alpha channels embedded in
$basetexture
work in reverse. Transparent areas are reflective, opaque 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 texture file simply to invert the alpha mask, you can use this material parameter instead. - The alpha channel is not inverted in Source 2007 and Counter-Strike: Global Offensive for models, but the alpha channel is inverted for brushes!
- auto enables if $envmap is present. Opaque areas are reflective while transparent are matte. Set as true to invert
$basetexture
alpha channel behaviour. This allow$bumpmap
have a dedicated$phong
mask, when material transparency is not needed.
- In CSGO, this parameter breaks materials using $translucent. Use
$envmapmask
or$normalmapalphaenvmapmask
instead.
- In all of: on VertexLitGeneric (Without $phong), WorldVertexTransition and LightmappedGeneric,
$basealphaenvmapmask
cannot be used with $bumpmap.
- In all of: on LightmappedGeneric and WorldVertexTransition,
$basealphaenvmapmask
cannot be used with $selfillum, $seamless_detail or $distancealpha.
- In , on LightmappedGeneric and WorldVertexTransition,
$basealphaenvmapmask
cannot be used with $detailblendmode "9" or $envmapanisotropy.
- In , on Lightmapped_4WayBlend,
$basealphaenvmapmask
cannot be used with $selfillum. - This cannot be used with $bumpmap on LightmappedGeneric
$bumpmap
or $normalmap
as the specular mask.
$basemapalphaphongmask
or $basemapluminancephongmask
will set the mask used for the $envmap to be those instead. There are additional caveats when using $phong. See its entry for more information about possible issues.
- In all of: on VertexLitGeneric (Without $phong),
$normalmapalphaenvmapmask
cannot be used with $selfillumfresnel.
- Note: Using
$normalmapalphaenvmapmask
with $phong and $selfillumfresnel has special caveats that should be considered. Check $phong for for more information.
- In , on LightmappedGeneric and WorldVertexTransition,
$normalmapalphaenvmapmask
cannot be used with $detailblendmode "9" or $envmapanisotropy. [todo tested in?]
$envmapmask
as the $selfillum mask instead of $basetexture
's alpha.- Bug:This Parameter replaces
$selfillum
. If both are used it will result in an error. The material will not render. [todo tested in?] - Warning:Only on VertexLitGeneric - Note that
$envmapmask
does not work with $bumpmap or $phong on VertexLitGeneric.
$envmapmask
and in fact that parameter is required to use this. Move it to Additional Parameters
and pray links on other pages don't break.Merging Specular Level into Normal Alpha in 3ds Max
To merge a Specular Level map into the Normal Map alpha, you can create a Composite Map node with the normal map in Layer 1 and the specular map in Mask 1. Then right-click the composite map, click Render Map and save this new image to file (remembering to keep the Gamma at 1.0 and using 32 bits per pixel in the save options).
These steps are automated in the Alpha Spec tool in Wall Worm 2.72+.
See also
- $basetexture
- $envmap (environment map)
- $phong (diffuse reflection)
- $selfillum