$alphatest: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (→‎VMT example: comment out $alphatestreference)
Line 27: Line 27:
<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>
<code>RGB : fully transparent - 15 - 46 - 80 - 110 - 143 - 174 - 207 - 238 - fully opaque</code><br>
<code>RGB : fully transparent - 15 - 46 - 80 - 110 - 143 - 174 - 207 - 238 - fully opaque</code><br>
( 0-255 values are rounded to the next highest. Formula used is <code>LinearValue * 255)</code>}}
( 0-255 values are rounded to the next highest. Formula used is <code>LinearValue * 255)</code>
{{todo|Make a table for this. One that considers other MSAA Levels}}
{{todo|Make a table for this. One that considers other MSAA Levels}} }}
{{tip|Alpha to coverage works best with sharp, high-resolution alpha channels, as this mitigates the inherent banding artefacts caused by the stock shaders' lack of sharpening when magnifying alpha to coverage textures.}}
}}
}}



Revision as of 19:45, 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 // incompatible with $alphatestreference }

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