$alphatest: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (→‎Additional parameters: clean up, replaced: {{modernNote| → {{note|)
Line 22: Line 22:
{{MatParam|$allowalphatocoverage|bool|Creates translucent steps based on alpha values. Can be used for softer edges. This parameter is incompatible with <code>$alphatestreference</code>.
{{MatParam|$allowalphatocoverage|bool|Creates translucent steps based on alpha values. Can be used for softer edges. This parameter is incompatible with <code>$alphatestreference</code>.
{{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.}}
{{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.}}
{{modernImportant|Alpha to Coverage works best with when the alpha channels of mipmaps are sharpened in a specific way; {{vtex|4}} does this by default, {{VTFEdit|4}} does not.}}
{{modernImportant|Alpha to Coverage works best with when the alpha channels of mipmaps are sharpened in a specific way; {{vtex|4}} does this by default{{cn}}, {{VTFEdit|4}} does not.}}
{{note| At maximum MSAA Level (Tested in {{src13|2}}) there are 7 transparency steps. ( 9 if you include fully Opaque and fully Transparent )<br>
{{note| At maximum MSAA Level (Tested in {{src13|2}}) there are 7 transparency 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>

Revision as of 19:30, 6 January 2024

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

$alphatest is a material shader parameter avaliable in all 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. This effect is similar to $translucent, except that it can not be semi-opaque, is much faster to render, and the engine can sort it properly when layered.

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. The rest show alphatest with $alphatestreference ranging from 0.1 to 0.9

Notice how the $alphatest right circle hardly changes.

See also