Es/$alphatest: Difference between revisions
m (Links updated) |
No edit summary |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{LanguageBar|title=$alphatest}} | ||
{{toc-right}} | |||
{{this is a|shader parameter|name=$alphatest}} Especifica una máscara para usar para determinar la {{L|Opacity|opacidad}} binaria. El blanco representa completamente opaco, mientras que el negro representa completamente transparente. Cualquier valor intermedio se redondea a 0 o 1. Este efecto es similar a <code>{{L|$translucent}}</code>, excepto que no puede ser semi-opaco (sin {{w|Colour banding|banding}}), es mucho más rápido de renderizar y el motor siempre puede ordenarlo correctamente cuando está en capas (en lugar de solo en {{L|func_detail|detalle}} {{L|worldspawn}}). | |||
==Sintaxis== | ==Sintaxis== | ||
{{CodeBlock|$alphatest < | {{CodeBlock|$alphatest <{{L|Boolean|bool}}>}} | ||
==Ejemplo de VMT== | ==Ejemplo de VMT== | ||
{{CodeBlock|lines= | {{CodeBlock|lines=8|{{L|LightmappedGeneric}}<nowiki> | ||
{ | { | ||
"</nowiki>{{L|$basetexture}}<nowiki>" "glass/window001a" | |||
"$alphatest" 1 | |||
// "$alphatestreference" 0.5 | |||
"$allowalphatocoverage" 1 // incompatible con $alphatestreference | |||
}</nowiki>}} | }</nowiki>}} | ||
==Parámetros adicionales== | ==Parámetros adicionales== | ||
{{ | {{MatParamDef|$alphatestreference|float|Especifica el valor del canal alfa umbral en el que la superficie debe ser transparente en lugar de opaca. Un valor de ".3" creará una forma más gruesa, mientras que un valor de ".7" creará una forma más delgada.<br>Valor predeterminado "0.5". | ||
: {{bug|Actualizar <code>$alphatestreference</code> en tiempo real con | : {{bug|Actualizar <code>$alphatestreference</code> en tiempo real con {{L|Material_proxies|proxies}} solo afecta a las sombras proyectadas (como la linterna). {{Tip|Esta limitación se puede sortear usando $alphatestreference 1 y modificando el valor de <code>{{L|$alpha}}</code> en su lugar. (requiere que $alpha se eleve por encima de 1, su umbral normal, esto puede causar problemas de ordenamiento)}} {{Tip|Para {{L|VertexLitGeneric}} en modelos puedes usar <code>{{L|$detail}}</code> con <code>$detailblendmode 3</code> y modificar el valor de <code>$detailblendfactor</code>. La textura de detalle debe ser una copia de <code>{{L|$basetexture}}</code> con un canal alfa diferente.}} | ||
}} }} | }} }} | ||
{{ | {{MatParamDef|$allowalphatocoverage|bool|Crea pasos translúcidos basados en valores alfa. Se puede usar para bordes más suaves, así como para reducir en gran medida el parpadeo cuando se ve a distancia.<br>Este parámetro es incompatible con <code>$alphatestreference</code>. | ||
{{warning|MSAA debe estar habilitado para que esto tenga efecto.<br>La granularidad de los pasos depende de la cantidad de MSAA elegida; 2x MSAA tendrá menos pasos translúcidos que 8x MSAA. {{note|A 8x MSAA (Probado en {{src13|2}}) hay 7 pasos de translucidez. (9 si incluyes completamente opaco y completamente transparente)<br> | {{warning|MSAA debe estar habilitado para que esto tenga efecto.<br>La granularidad de los pasos depende de la cantidad de MSAA elegida; 2x MSAA tendrá menos pasos translúcidos que 8x MSAA. {{note|A 8x MSAA (Probado en {{src13|2}}) hay 7 pasos de translucidez. (9 si incluyes completamente opaco y completamente transparente)<br> | ||
Los niveles deberían organizarse aproximadamente de esta manera:<br> | Los niveles deberían organizarse aproximadamente de esta manera:<br> | ||
Line 40: | Line 42: | ||
Observa cómo el círculo derecho de <code>$alphatest</code> apenas cambia. | Observa cómo el círculo derecho de <code>$alphatest</code> apenas cambia. | ||
==Ver también== | ==Ver también== | ||
*<code> | *<code>{{L|$alpha}}</code> | ||
*<code> | *<code>{{L|$distancealpha}}</code> | ||
*<code> | *<code>{{L|$vertexalpha}}</code> | ||
{{ACategory|Shader parameters|alphatest}} |
Latest revision as of 12:07, 23 August 2025
$alphatest
es un parámetro de un shader disponible en todos los juegos de Source. Especifica una máscara para usar para determinar la opacidad binaria. El blanco representa completamente opaco, mientras que el negro representa completamente transparente. Cualquier valor intermedio se redondea a 0 o 1. Este efecto es similar a
$translucent
, excepto que no puede ser semi-opaco (sin banding), es mucho más rápido de renderizar y el motor siempre puede ordenarlo correctamente cuando está en capas (en lugar de solo en detalle worldspawn ).
Sintaxis
Ejemplo de VMT
Parámetros adicionales
Valor predeterminado "0.5".
Error:Actualizar
$alphatestreference
en tiempo real con proxies solo afecta a las sombras proyectadas (como la linterna).Consejo:Esta limitación se puede sortear usando $alphatestreference 1 y modificando el valor de
$alpha
en su lugar. (requiere que $alpha se eleve por encima de 1, su umbral normal, esto puede causar problemas de ordenamiento)Consejo:Para VertexLitGeneric en modelos puedes usar
$detail
con$detailblendmode 3
y modificar el valor de$detailblendfactor
. La textura de detalle debe ser una copia de$basetexture
con un canal alfa diferente.
Este parámetro es incompatible con
$alphatestreference
.

La granularidad de los pasos depende de la cantidad de MSAA elegida; 2x MSAA tendrá menos pasos translúcidos que 8x MSAA.


Los niveles deberían organizarse aproximadamente de esta manera:
Lineal: completamente transparente - 0.06 - 0.18 - 0.31 - 0.43 - 0.56 - 0.68 - 0.81 - 0.93 - completamente opaco
RGB: completamente transparente - 15 - 46 - 80 - 110 - 143 - 174 - 207 - 238 - completamente opaco
(valores 0-255 redondeados al más alto siguiente. La fórmula utilizada es LinearValue * 255)

Comparación
$translucent |
$alphatest
|
---|---|
Observa cómo el círculo derecho de $alphatest
apenas cambia.