$envmapmask

From Valve Developer Community
Revision as of 01:18, 16 February 2023 by ShiroDkxtro2 (talk | contribs) (Additional Information, Broken Parameter Combinations and more)
Jump to navigation Jump to search
English (en)Français (fr)Русский (ru)中文 (zh)Translate (Translate)

Template:Shaderparam 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.

Icon-Bug.pngBug:In Source 2007 games, using an $envmapmask which is not stored in a subfolder will cause the texture to fail loading in-game.  [todo tested in ?]
Warning.pngWarning:$envmapmask will not work with materials using $bumpmap. Except on VertexLitGeneric(only in Mapbase) and LightmappedGeneric(only in Counter-Strike: Global Offensive). See #Alternative_methods.

VMT syntax example

$envmapmask <texture>
VertexLitGeneric
{
	$envmap			env_cubemap
	$envmapmask		"props/tvscreen_test"
}

Additional parameters

npc_cscanner's mask.

$envmapmasktransform $envmapmaskscale $envmapmaskframe

CS:GO WorldVertexTransition Parameters

$envmapmask2 $envmapmasktransform2 $envmapframe2

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

Note.pngNote:Left 4 Dead 2 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.
Icon-Bug.pngBug: In CSGO, this parameter breaks materials using $translucent. Use $envmapmask instead.  [todo tested in ?]
Icon-Bug.pngBug: In all of: Garry's ModSource 2013Team Fortress 2Alien SwarmCounter-Strike: Global Offensive on VertexLitGeneric (Without $phong), WorldVertexTransition and LightmappedGeneric, $basealphaenvmapmask cannot be used with $bumpmap.  [todo tested in ?]
Icon-Bug.pngBug: In all of: Garry's ModSource 2013Team Fortress 2Alien SwarmCounter-Strike: Global Offensive on LightmappedGeneric and WorldVertexTransition, $basealphaenvmapmask cannot be used with $selfillum, $seamless_detail or $distancealpha.  [todo tested in ?]
Icon-Bug.pngBug: In Counter-Strike: Global Offensive, on LightmappedGeneric and WorldVertexTransition, $basealphaenvmapmask cannot be used with $detailblendmode "9" or $envmapanisotropy.  [todo tested in ?]
Icon-Bug.pngBug: In Counter-Strike: Global Offensive, on Lightmapped_4WayBlend, $basealphaenvmapmask cannot be used with $selfillum.  [todo tested in ?]

$normalmapalphaenvmapmask

Icon-Bug.pngBug: In all of: Garry's ModSource 2013Team Fortress 2Alien SwarmCounter-Strike: Global Offensive on VertexLitGeneric (Without $phong), $normalmapalphaenvmapmask cannot be used with $selfillumfresnel.  [todo tested in ?]
Icon-Bug.pngBug: In Counter-Strike: Global Offensive, on LightmappedGeneric and WorldVertexTransition $normalmapalphaenvmapmask cannot be used with $detailblendmode "9" or $envmapanisotropy.  [todo tested in ?]

$selfillum_envmapmask_alpha $envmapmaskintintmasktexture

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