$envmapmask: Difference between revisions
Jump to navigation
Jump to search
Note:
Warning:If you do this, transformations and other such parameters applied to the base texture/normal map will also apply to the specular mask.
TomEdwards (talk | contribs) (+image) |
TomEdwards (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
{{toc-right}} | {{toc-right}} | ||
'''<code>$envmapmask</code>''' defines a specular mask, which affects how strongly a surface reflects light an [[$envmap]]. The mask should be a greyscale image in which entirely reflective areas are black and entirely matte areas are white. | |||
{{note|<code>$envmapmask</code> will not work in materials using <code>[[$bumpmap]]</code>. See [[#Alternative_methods]].}} | |||
==VMT syntax example== | ==VMT syntax example== | ||
Line 17: | Line 19: | ||
} | } | ||
==Additional | ==Additional parameters== | ||
[[Image:Scanner mask.jpg|thumb|[[npc_cscanner]]'s mask.]] | [[Image:Scanner mask.jpg|thumb|[[npc_cscanner]]'s mask.]] | ||
; <code>$envmapmasktransform <matrix></code> | ; <code>$envmapmasktransform <matrix></code> | ||
: Adjusts [[UV map]]ping of | : Adjusts [[UV map]]ping of the specular mask. | ||
: DirectX 8 and below use <code>$envmapmaskscale</code> instead. | : DirectX 8 and below use <code>$envmapmaskscale</code> instead. | ||
Line 28: | Line 30: | ||
; <code>$envmapmaskscale <[[float]]></code> | ; <code>$envmapmaskscale <[[float]]></code> | ||
: Scales the | : Scales the specular mask by the given value. | ||
: See also <code>$envmapmasktransform</code>, above. | : See also <code>$envmapmasktransform</code>, above. | ||
: Requires DirectX 8. | : Requires DirectX 8. | ||
Line 36: | Line 38: | ||
; <code>$selfillum_envmapmask_alpha <[[bool]]></code> | ; <code>$selfillum_envmapmask_alpha <[[bool]]></code> | ||
: Derives [[self-illumination]] values from the [[alpha channel]] of | : Derives [[self-illumination]] values from the [[alpha channel]] of the specular mask. | ||
: Requires DirectX 9. | : Requires DirectX 9. | ||
: See also <code>[[$selfillum]]</code>. | : See also <code>[[$selfillum]]</code>. | ||
==Alternative | ==Alternative methods== | ||
Rather than creating a whole new | 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 amount of data on-disc or in-memory. | ||
{{ | {{warning|If you do this, transformations and other such parameters applied to the base texture/normal map will also apply to the specular mask.}} | ||
; <code>$basealphaenvmapmask <bool></code> | ; <code>$basealphaenvmapmask <bool></code> | ||
: Use the alpha channel of | : Use the alpha channel of <code>$basetexture</code> as the specular mask. | ||
; <code>$normalmapalphaenvmapmask <bool></code> | ; <code>$normalmapalphaenvmapmask <bool></code> | ||
: Use the alpha channel of | : Use the alpha channel of <code>$bumpmap</code> as the specular mask. '''This must be used if the material has a bump map.''' | ||
==See Also== | ==See Also== |
Revision as of 07:48, 10 July 2008
$envmapmask
defines a specular mask, which affects how strongly a surface reflects light an $envmap. The mask should be a greyscale image in which entirely reflective areas are black and entirely matte areas are white.

$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.
- 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 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 amount of data on-disc or in-memory.

$basealphaenvmapmask <bool>
- Use the alpha channel of
$basetexture
as the specular mask. $normalmapalphaenvmapmask <bool>
- Use the alpha channel of
$bumpmap
as the specular mask. This must be used if the material has a bump map.