$envmapmask: Difference between revisions
ShiroDkxtro2 (talk | contribs) (Additional Information, Broken Parameter Combinations and more) |
(→Alternative methods: made the format way nicer to look at by utilizing bullet list) |
||
Line 36: | Line 36: | ||
If you do use these commands, transformations and other such parameters applied to {{code|$basetexture / $bumpmap}} will also apply to the specular mask. | If you do use these commands, transformations and other such parameters applied to {{code|$basetexture / $bumpmap}} will also apply to the specular mask. | ||
{{MatParam|$basealphaenvmapmask|bool|Use the alpha channel of the {{code|$basetexture}} as the specular mask. {{note|Alpha channels embedded in {{code|$basetexture}} work in reverse. Transparent areas are reflective, opaque areas are matte. This is because, say, a window texture's alpha mask would be mostly black to allow for transparency -- yet that black part of the mask would also be the most reflective part. To avoid having to duplicate a texture file simply to invert the alpha mask, you can use this material parameter instead. | {{MatParam|$basealphaenvmapmask|bool|Use the alpha channel of the {{code|$basetexture}} as the specular mask.}} | ||
{{note| | |||
* Alpha channels embedded in {{code|$basetexture}} work in reverse. Transparent areas are reflective, opaque areas are matte. This is because, say, a window texture's alpha mask would be mostly black to allow for transparency -- yet that black part of the mask would also be the most reflective part. To avoid having to duplicate a texture file simply to invert the alpha mask, you can use this material parameter instead. | |||
* The alpha channel '''''is not''''' inverted in the Source 2007 engine ''and'' {{csgo}} for models, but the alpha channel '''''is''''' inverted for brushes! | |||
* {{l4d2}} auto enables if '''$envmap''' is present. Opaque areas are reflective while transparent are matte. Set as [[bool|true]] to invert {{code|$basetexture}} alpha channel behaviour. This allow {{code|[[$bumpmap]]}} have a dedicated {{code|[[$phong]]}} mask, when material transparency is not needed.}} | |||
{{bug| | |||
* In CSGO, this parameter breaks materials using $translucent. Use {{code|$envmapmask}} instead. | |||
* In all of: {{gmod}}{{src13}}{{tf2}}{{as}}{{csgo}} on {{ent|VertexLitGeneric}} ('''Without''' {{ent|$phong}}), {{ent|WorldVertexTransition}} and {{ent|LightmappedGeneric}}, <code>$basealphaenvmapmask</code> cannot be used with {{ent|$bumpmap}}. | |||
{{MatParam|$normalmapalphaenvmapmask|bool|Use the alpha channel of the {{code|$bumpmap}} or {{code|$normalmap}} as the specular mask. | * In all of: {{gmod}}{{src13}}{{tf2}}{{as}}{{csgo}} on {{ent|LightmappedGeneric}} and {{ent|WorldVertexTransition}}, <code>$basealphaenvmapmask</code> cannot be used with {{ent|$selfillum}}, {{ent|$seamless_detail}} or {{ent|$distancealpha}}. | ||
* In {{csgo}}, on {{ent|LightmappedGeneric}} and {{ent|WorldVertexTransition}}, <code>$basealphaenvmapmask</code> cannot be used with {{ent|$detailblendmode}} "9" or {{ent|$envmapanisotropy}}. | |||
* In {{csgo}}, on {{ent|Lightmapped_4WayBlend}}, <code>$basealphaenvmapmask</code> cannot be used with {{ent|$selfillum}}.}} | |||
{{MatParam|$selfillum_envmapmask_alpha|float|Use the alpha channel of the {{code|$envmapmask}} as the {{ent|$selfillum}} mask instead of {{code|$basetexture}}'s alpha. In this event this command replaces {{code|$selfillum}} - do not use both.}} | <br>{{MatParam|$normalmapalphaenvmapmask|bool|Use the alpha channel of the {{code|$bumpmap}} or {{code|$normalmap}} as the specular mask. | ||
{{MatParam|$envmapmaskintintmasktexture|bool|Use the red channel of the {{ent|$tintmasktexture}} as the specular mask.|only={{csgo}}|shaders=VertexLitGeneric}} | {{note|Will not work if {{code|[[$phong|$basemapalphaphongmask]]}} or {{code|[[$phong|$basemapluminancephongmask]]}} are used.}}}} | ||
{{bug| | |||
* In all of: {{gmod}}{{src13}}{{tf2}}{{as}}{{csgo}} on {{ent|VertexLitGeneric}} ('''Without''' {{ent|$phong}}), <code>$normalmapalphaenvmapmask</code> cannot be used with {{ent|$selfillumfresnel}}. | |||
* In {{csgo}}, on {{ent|LightmappedGeneric}} and {{ent|WorldVertexTransition}} {{code|[[$normalmapalphaenvmapmask]]}} cannot be used with {{ent|$detailblendmode}} "9" or {{ent|$envmapanisotropy}}.}} | |||
<br>{{MatParam|$selfillum_envmapmask_alpha|float|Use the alpha channel of the {{code|$envmapmask}} as the {{ent|$selfillum}} mask instead of {{code|$basetexture}}'s alpha. In this event this command replaces {{code|$selfillum}} - do not use both.}} | |||
<br>{{MatParam|$envmapmaskintintmasktexture|bool|Use the red channel of the {{ent|$tintmasktexture}} as the specular mask.|only={{csgo}}|shaders=VertexLitGeneric}} | |||
==Merging Specular Level into Normal Alpha in 3ds Max== | ==Merging Specular Level into Normal Alpha in 3ds Max== |
Revision as of 01:54, 16 February 2023
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.

$envmapmask
which is not stored in a subfolder will cause the texture to fail loading in-game. [todo tested in ?]
$envmapmask
will not work with materials using $bumpmap. Except on VertexLitGeneric(only in 

VMT syntax example
$envmapmask <texture>
VertexLitGeneric { $envmap env_cubemap $envmapmask "props/tvscreen_test" }
Additional parameters

$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.

- Alpha channels embedded in $basetexture work in reverse. Transparent areas are reflective, opaque areas are matte. This is because, say, a window texture's alpha mask would be mostly black to allow for transparency -- yet that black part of the mask would also be the most reflective part. To avoid having to duplicate a texture file simply to invert the alpha mask, you can use this material parameter instead.
- The alpha channel is not inverted in the Source 2007 engine and
for models, but the alpha channel is inverted for brushes!
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.

- In CSGO, this parameter breaks materials using $translucent. Use $envmapmask instead.
- In all of:
on VertexLitGeneric (Without $phong), WorldVertexTransition and LightmappedGeneric,
$basealphaenvmapmask
cannot be used with $bumpmap. - In all of:
on LightmappedGeneric and WorldVertexTransition,
$basealphaenvmapmask
cannot be used with $selfillum, $seamless_detail or $distancealpha. - In
, on LightmappedGeneric and WorldVertexTransition,
$basealphaenvmapmask
cannot be used with $detailblendmode "9" or $envmapanisotropy. - In
, on Lightmapped_4WayBlend,
$basealphaenvmapmask
cannot be used with $selfillum. [todo tested in ?]

- In all of:
on VertexLitGeneric (Without $phong),
$normalmapalphaenvmapmask
cannot be used with $selfillumfresnel. - In
, 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
- $basetexture
- $envmap (environment map)
- $phong (diffuse reflection)
- $selfillum