$alphatest: Difference between revisions
Jump to navigation
Jump to search
SirYodaJedi (talk | contribs) |
SirYodaJedi (talk | contribs) (→Additional parameters: when the gradient is wide enough, you can count the alpha to coverage samples, so I did. results are as expected.) |
||
Line 19: | Line 19: | ||
}} }} | }} }} | ||
{{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, as well as greatly reducing shimmering when viewed at a distance.<br>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. {{note|At 8x MSAA (Tested in {{src13|2}}) there are 7 | {{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. {{note|At 8x MSAA (Tested in {{src13|2}}) there are 7 translucency 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> | ||
<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. There are always 1 fewer translucency steps than the number of MSAA samples (or one additional, if including fully transparent and fully opaque).}} }} }} | ||
{{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.}} | {{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 17:31, 13 January 2024
$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
VMT example
Additional parameters
Comparison
$translucent |
$alphatest
|
---|---|
Notice how the $alphatest
right circle hardly changes.