$alphatest: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
Line 20: Line 20:
{{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.
{{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.
: {{bug|<code>$alphatestreference</code> cannot be updated in real time with [[Material_proxies|proxies]].}}
: {{bug|<code>$alphatestreference</code> cannot be updated in real time with [[Material_proxies|proxies]].}}
: {{Tip|This limitation can be circumvented by using $alphatestreference 1, and modifying the <code>[[$alpha]]</code> value instead. (requires $alpha to be raised above 1, its normal threshold, this may cause sorting issues)}}}}
: {{Tip|This limitation can be circumvented by using $alphatestreference 1, and modifying the <code>[[$alpha]]</code> value instead. (requires $alpha to be raised above 1, its normal threshold, this may cause sorting issues)}}
: {{Tip|For [[VertexLitGeneric|VertexLitGeneric]] on models you can use <code>[[$detail]]</code> with <code>$detailblendmode 3</code> and modifying the <code>$detailblendfactor</code> value. Detail texture must be a copy of <code>[[$basetexture]]</code> with a different alpha channel.}}}}
{{MatParam|$allowalphatocoverage|bool|Creates transparent steps based on alpha values. Can be used for softer edges. This parameter is incompatible with <code>$alphatestreference</code>.
{{MatParam|$allowalphatocoverage|bool|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.}}}}
: {{note|MSAA must be enabled in order for this to have effect.}}}}

Revision as of 16:52, 4 April 2022

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

LightmappedGeneric
{
	$basetexture		"glass\window001a"

	$alphatest		1

	$alphatestreference	.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