$envmapmask

From Valve Developer Community
Revision as of 21:09, 12 July 2008 by Russian box (talk | contribs) (The wording of the spec in the alpha dident make it clear that the user had to invert the alpha to what there used to using. this wording is abit more clear as to the $basealphaenvmapmask)
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 black and entirely matte areas are white.

Warning.pngWarning:$envmapmask will not work in materials using $bumpmap. See #Alternative_methods.

VMT syntax example

$envmapmask <texture>
VertexLitGeneric
{
	$envmap			env_cubemap
	$envmapmask		"props/tvscreen_test"
	$envmapmasktransform	"center .5 .5 scale .25 .25 rotate 0 translate 0 0"	//dx9 only
	$envmapmaskscale	.25	// dx8 only
	$envmapmaskframe	1
	$selfillum_envmapmask_alpha	1	//dx9 only
}

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.
  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 horizontal X axis while the vertical Y axis is still at original scale.
  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. 1 will shift it once completely over, which is the same as not moving it at all.
Note.pngNote:All values must be included!
Icon-Bug.pngBug: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 ?]
Icon-Bug.pngBug: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 of an animated texture to use as the mask.
$selfillum_envmapmask_alpha <bool>
Derives self-illumination values from the alpha channel of the specular mask.
Requires DirectX 9.
See also $selfillum.

Alternative methods

Rather than creating a whole new texture just for a specular mask, you can use the alpha channel of either the $basetexture or $bumpmap. Note that this unfortunately won't reduce the overall amount of data on-disc or in-memory.

If you do use these commands, transformations and other such parameters applied to the base texture/bump map will also apply to the specular mask.

$basealphaenvmapmask <bool>
Use the alpha channel of $basetexture as the specular mask.
When putting your specular map in the alpha channel you will have to invert it.
or else it will work the wrong way round.
black = more reflective, white = duller.
$normalmapalphaenvmapmask <bool>
Use the alpha channel of $bumpmap as the specular mask.
This must be used if the material has a bump map.

See Also