From Valve Developer Community
Revision as of 18:53, 11 October 2019 by ThunderKeil (talk | contribs) (added workaround for updating $alphatestreference in real time)
Jump to: navigation, search

$alphatest is a material shader parameter available 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.

VMT syntax example

$alphatest <bool>
	$basetexture glass\window001a
	$alphatest 1
        $alphatestreference .5
        $allowalphatocoverage 1

Additional parameters

$alphatestreference <float>
Specifies the minimum color value of the alpha channel in which the effect is rounded to 255. A value of ".3" will create a thicker shape while a value of ".7" will create a thinner shape.
Bug.png Bug: $alphatestreference cannot be updated in real time with proxies.
Tip.png Tip: This limitation can be circumvented by using $alphatestreference 1, and modifying the $alpha value instead.
$allowalphatocoverage <boolean>
Creates transparent steps based on alpha values. Can be used for softer edges. This parameter is incompatible with $alphatestreference.
Note.png Note: MSAA must be enabled in order for this to have effect.

Comparison with $translucent

$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 right circle hardly changes.

See also