This article's documentation is for anything that uses the Source engine. Click here for more information.

$alphatest: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
Line 25: Line 25:
{{MatParam|$allowalphatocoverage|nolink=1|bool|Creates translucent steps based on alpha values. Can be used for softer edges, as well as greatly reducing shimmering when viewed at a distance.<br>While it may not immediately appear to be the case, <code>$alphatestreference</code>is still used when this command is used, for controlling projected shadow masking, for if the client has MSAA disabled, and in Hammer (where $allowalphatocoverage doesn't work).
{{MatParam|$allowalphatocoverage|nolink=1|bool|Creates translucent steps based on alpha values. Can be used for softer edges, as well as greatly reducing shimmering when viewed at a distance.<br>While it may not immediately appear to be the case, <code>$alphatestreference</code>is still used when this command is used, for controlling projected shadow masking, for if the client has MSAA disabled, and in Hammer (where $allowalphatocoverage doesn't work).
{{Expand|title=Notes|
{{Expand|title=Notes|
{{warning|MSAA must be enabled in order for this to have an effect.<br>The granularity of the steps is dependent on chosen amount of MSAA; 2x MSAA will have fewer translucent steps than 8x MSAA. {{note|At 8x MSAA (Tested in {{src13|2}}) there are 7 translucency steps. ( 9 if you include fully Opaque and fully Transparent )<br>
{{warning|[[Anti-aliasing#MSAA|MSAA]] must be enabled in order for this to have an effect.<br>The granularity of the steps is dependent on chosen amount of MSAA; 2x MSAA will have fewer translucent steps than 8x MSAA. {{note|At 8x MSAA (Tested in {{src13|2}}) there are 7 translucency steps. ( 9 if you include fully Opaque and fully Transparent )<br>
The levels should roughly be arranged as such:<br>
The levels should roughly be arranged as such:<br>
<code>Linear : fully transparent - 0.06 - 0.18 - 0.31 - 0.43 - 0.56 - 0.68 - 0.81 - 0.93 - fully opaque</code><br>
<code>Linear : fully transparent - 0.06 - 0.18 - 0.31 - 0.43 - 0.56 - 0.68 - 0.81 - 0.93 - fully opaque</code><br>

Revision as of 23:45, 14 July 2025

English (en)Español (es)Русский (ru)中文 (zh)Translate (Translate)

$alphatest is a material shader parameter available in all Source Source games. It specifies a mask to use to determine binary opacity. White represents fully opaque, while black represents fully transparent. Any values in-between are rounded to either 0 or 1, unless $allowalphatocoverage is also used. This effect is similar to $translucent, except that it can not be semi-opaque (without Wikipedia icon banding), is much faster to render, and the engine can always sort it properly when layered (instead of only on non-detail worldspawn).

Syntax

$alphatest <bool>

VMT example

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
LightmappedGeneric { $basetexture "glass\window001a" $alphatest 1 $alphatestreference 0.5 $allowalphatocoverage 1 }

Additional parameters

$alphatestreference

$allowalphatocoverage

Comparison

$translucent $alphatest
Original image, rendered with $translucent
Animated preview of the same image, but with $alphatest. The first image shows the effect of $allowalphatocoverage 1 (at 4x MSAA). The rest show $alphatest with $alphatestreference ranging from 0.1 to 0.9. Click image if not animating.

Notice how the right circle, which has a sharp alpha channel, hardly changes.

See also