$envmapmask: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
<div style="float:right;padding:0 1em;background:#FFF;">__TOC__</div>
{{toc-right}}
* The ''specular map'' or '''envmapmask''' affects how the surface reflects light from the [[$envmap]].
* The (greyscale) envmapmask defines shiney areas as black (0), and dull areas as white (255).


"$envmapmask" <texture>
The ''specular mask'' or '''envmapmask''' affects how strongly the surface reflects light from the [[$envmap]]. It is a greyscale image in which entirely reflective areas are black and entirely matte areas are white.
* Masks the [[$envmap]] reflections according to the alpha channel of the named <code><texture></code>.


==VMT syntax example==
==VMT syntax example==
  "[[VertexLitGeneric]]"
 
$envmapmask <texture>
 
  [[VertexLitGeneric]]
  {
  {
"[[$envmapmask]]" "props/tvscreen_test"
[[$envmap]] env_cubemap
  "[[$envmapmasktransform]]" "center .5 .5 scale .25 .25 rotate 0 translate 0 0" //dx9 only
'''$envmapmask "props/tvscreen_test"'''
  "[[$envmapmaskscale]]" .25 //duplicates dx9 transform/scale (25%) for dx8 GPUs
$envmapmasktransform "center .5 .5 scale .25 .25 rotate 0 translate 0 0" ''//dx9 only''
  "[[$envmapmaskframe]]" ???
$envmapmaskscale .25 ''// dx8 only''
  "[[$selfillum_envmapmask_alpha]]" 1 //dx9 only
$envmapmaskframe 1
$selfillum_envmapmask_alpha 1 ''//dx9 only''
  }
  }


==Additional Parameters==
==Additional Parameters==


===$envmapmasktransform===
; <code>$envmapmasktransform <matrix></code>
"$envmapmasktransform" <matrix>
: Adjusts [[UV map]]ping of <code>$envmapmask</code>.
* Adjusts [[UV map]]ping of [[$envmapmask]]
: DirectX 8 and below use <code>$envmapmaskscale</code> instead.
 
{{VMT UVtransform}}
{{VMT UVtransform}}
* DirectX 9 or HDR required. (LightmappedGeneric, VertexlitGeneric, UnlitGeneric)
* DirectX 8 uses [[$envmapmaskscale]] instead.
===$envmapmaskscale===
"$envmapmaskscale" <float>
* Scales the [[$envmapmask]] by the <nowiki><float></nowiki> value.
* DirectX 8 required. (LightmappedGeneric, VertexlitGeneric, UnlitGeneric)
* Also see [[$envmapmasktransform]].


; <code>$envmapmaskscale <[[float]]></code>
: Scales the <code>$envmapmask</code> by the given value.
: See also <code>$envmapmasktransform</code>, above.
: Requires DirectX 8.


===$envmapmaskframe===
; <code>$envmapmaskframe <[[integer]]></code>
"$envmapmaskframe" <integer>
: The frame of an animated texture to use as the mask.
* ?


===$selfillum_envmapmask_alpha===
; <code>$selfillum_envmapmask_alpha <[[bool]]></code>
$selfillum_envmapmask_alpha <float>
: Derives [[self-illumination]] values from the [[alpha channel]] of <code>$envmapmask</code>.
* Defines that selfillum value comes from envmap mask alpha. {{todo|confirm: ie it uses the alpha channel of [[$envmapmask]]?}}
: Requires DirectX 9.
* Default value is ''0.0''.
: See also <code>[[$selfillum]]</code>.
* Requires DirectX 9.
* A new parameter.
* See also [[$selfillum]]


==Alternative Methods==
==Alternative Methods==
* Rather than creating a whole new VTF just for the [[$envmapmask]], you can use the alpha channel of either the [[$basetexture]] or [[$bumpmap]] to store the Specular Map. If so, transform, etc parameters applied to the basetexture/normalmap will also apply to the Specular map.


===$basealphaenvmapmask===
Rather than creating a whole new VTF just for a specular mask, you can use the alpha channel of either the [[$basetexture]] or [[$bumpmap]].
"$basealphaenvmapmask" 1
* Use the alpha channel of the [[$basetexture]] texture as the specular map.  


===$normalmapalphaenvmapmask===
{{note|If you do this, transformations and other such parameters applied to the base texture/normal map will also apply to the specular mask.}}
"$normalmapalphaenvmapmask" 1
* Use the alpha channel of the [[$bumpmap]] texture as the specular map.  


==See Also==
; <code>$basealphaenvmapmask <bool></code>
*[[$envmap]]
: Use the alpha channel of [[$basetexture]] as the specular mask.  
* compare [[$phong]].


; <code>$normalmapalphaenvmapmask <bool></code>
: Use the alpha channel of [[$bumpmap]] as the specular mask.


==See Also==
* [[$envmap]]
* [[$phong]] (diffuse reflection)


[[Category:List of Shader Parameters]]
[[Category:List of Shader Parameters]]
[[Category:VMT Reflections]]
[[Category:VMT Reflections]]
[[Category:VMT Texture Reference]]
[[Category:VMT Texture Reference]]

Revision as of 04:43, 9 July 2008

The specular mask or envmapmask affects how strongly the surface reflects light from the $envmap. It is a greyscale image in which entirely reflective areas are black and entirely matte areas are white.

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

$envmapmasktransform <matrix>
Adjusts UV mapping of $envmapmask.
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 $envmapmask 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 $envmapmask.
Requires DirectX 9.
See also $selfillum.

Alternative Methods

Rather than creating a whole new VTF just for a specular mask, you can use the alpha channel of either the $basetexture or $bumpmap.

Note.pngNote:If you do this, transformations and other such parameters applied to the base texture/normal map will also apply to the specular mask.
$basealphaenvmapmask <bool>
Use the alpha channel of $basetexture as the specular mask.
$normalmapalphaenvmapmask <bool>
Use the alpha channel of $bumpmap as the specular mask.

See Also