$alphatest: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
(Changed to use Shaderparam and MatParam templates, misc fixes)
Line 1: Line 1:
The <code>[[$alphatest]]</code> command specifies that the material uses a mask 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 it can not be semi-opaque and the engine can sort it properly when layered.
{{Shaderparam|$alphatest}} 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 {{ent|$translucent}}, except that it can not be semi-opaque, is much faster to render, and the engine can sort it properly when layered.
 
{{note|Much faster to draw than [[$translucent]].}}
 


==VMT syntax example==
==VMT syntax example==
Line 19: Line 16:
==Additional parameters==
==Additional parameters==


; <code>$alphatestreference [[float]]</code>
{{MatParam|$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.
: 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|<code>$alphatestreference</code> cannot be updated in real time with [[Material_proxies|proxies]].}}}}
 
{{MatParam|$allowalphatocoverage|bool|Creates transparent steps based on alpha values. Can be used for softer edges. This parameter is incompatible with <code>$alphatestreference</code>.
; <code>$allowalphatocoverage [[Boolean|<bool>]]</code>
: {{note|MSAA must be enabled in order for this to have effect.}}}}
: Creates transparent steps based on alpha values. Can be used for softer edges. This parameter is incompatible with <code>$alphatestreference</code>
{{note|MSAA must be enabled in order for this to have effect.}}


==Comparison with $translucent==
==Comparison with $translucent==
Line 34: Line 29:
|}
|}
Notice how the right circle hardly changes.
Notice how the right circle hardly changes.
{{bug|$alphatestreference cannot be updated in real time from [[Material_proxies|Proxies]]}}


== See also ==
== See also ==

Revision as of 11:39, 26 June 2019

Template:Shaderparam 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>
LightmappedGeneric
{
	$basetexture glass\window001a
	$alphatest 1
        
        $alphatestreference .5
        $allowalphatocoverage 1
}

Additional parameters

$alphatestreference $allowalphatocoverage

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