$envmapmask: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
Line 34: Line 34:
==Alternative methods==
==Alternative methods==


Rather than creating a whole new texture just for a specular mask, you can use the alpha channel of either the <code>[[$basetexture]]</code> or <code>[[$bumpmap]]</code>. Note that this unfortunately ''won't'' reduce the overall amount of data on-disk or in-memory.
Rather than creating a whole new texture for a specular mask, you can embed one into the [[alpha channel]] of the <code>[[$basetexture]]</code> or <code>[[$bumpmap]]</code>. Model materials with <code>$bumpmap</code> '''must''' do this. Unfortunately, it ''won't'' reduce memory usage.


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.
If you do use these commands, transformations and other such parameters applied to $basetexture / $bumpmap will also apply to the specular mask.
 
; <code>$basealphaenvmapmask <bool></code>
: Use the alpha channel of <code>[[$basetexture]]</code> 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.''


; <code>$basealphaenvmapmask <[[bool]]></code>
: Use the alpha channel of <code>[[$basetexture]]</code> as the specular mask. {{bug|Alpha channels embedded in $basetexture work in reverse. Black areas are reflective, white areas are matte.}}
; <code>$normalmapalphaenvmapmask <bool></code>
; <code>$normalmapalphaenvmapmask <bool></code>
: Use the alpha channel of <code>[[$bumpmap]]</code> as the specular mask.  
: Use the alpha channel of <code>[[$bumpmap]]</code> as the specular mask.
: ''This must be used if the model material has a bump map.''


==See Also==
==See Also==

Revision as of 08:37, 4 January 2010

$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

Warning.pngWarning:$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.
  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 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.
Icon-Bug.pngBug:Alpha channels embedded in $basetexture work in reverse. Black areas are reflective, white areas are matte.  [todo tested in ?]
$normalmapalphaenvmapmask <bool>
Use the alpha channel of $bumpmap as the specular mask.

See Also