La información en este artículo es para Source. Haga clic aquí para más información.

$alphatest

From Valve Developer Community
Jump to: navigation, search
English (en)Español (es)Русский (ru)

$alphatest es un UNTRANSLATED string "shader parameter" see Template:This is a/strings disponible en todos los juegos de Source Source. Especifica una máscara para usar para determinar la opacidad(en) 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(en), excepto que no puede ser semi-opaco (sin Wikipedia icon 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(en) worldspawn(en)).

Sintaxis

$alphatest <bool(en)>

Ejemplo de VMT

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
LightmappedGeneric(en) { "$basetexture(en)" "glass/window001a" "$alphatest" 1 // "$alphatestreference" 0.5 "$allowalphatocoverage" 1 // incompatible con $alphatestreference }

Parámetros adicionales

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.
Valor predeterminado "0.5".
Icon-Bug.pngError:Actualizar $alphatestreference en tiempo real con proxies(en) solo afecta a las sombras proyectadas (como la linterna).
Tip.pngConsejo:Esta limitación se puede sortear usando $alphatestreference 1 y modificando el valor de $alpha(en) en su lugar. (requiere que $alpha se eleve por encima de 1, su umbral normal, esto puede causar problemas de ordenamiento)
Tip.pngConsejo:Para VertexLitGeneric(en) en modelos puedes usar $detail(en) con $detailblendmode 3 y modificar el valor de $detailblendfactor. La textura de detalle debe ser una copia de $basetexture(en) con un canal alfa diferente.
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.
Este parámetro es incompatible con $alphatestreference.
Warning.pngAviso:MSAA debe estar habilitado para que esto tenga efecto.
La granularidad de los pasos depende de la cantidad de MSAA elegida; 2x MSAA tendrá menos pasos translúcidos que 8x MSAA.
Note.pngNota:A 8x MSAA (Probado en Source 2013 Source 2013) hay 7 pasos de translucidez. (9 si incluyes completamente opaco y completamente transparente)

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)

Blank image.pngPendiente: Hacer una tabla para esto. Una que considere otros niveles de MSAA. Siempre hay un paso de translucidez menos que el número de muestras de MSAA (o uno adicional, si se incluyen completamente transparente y completamente opaco).
Tip.pngConsejo:Alpha to coverage funciona mejor con canales alfa nítidos y de alta resolución, ya que esto mitiga los artefactos de banding inherentes causados por la falta de afilado de los shaders estándar al ampliar texturas alpha to coverage.

Comparación

$translucent $alphatest
Imagen original, renderizada con $translucent
Vista previa animada de la misma imagen, pero con $alphatest. La primera imagen muestra el efecto de $allowalphatocoverage 1 (a 4x MSAA). El resto muestra $alphatest con $alphatestreference que va de 0.1 a 0.9

Observa cómo el círculo derecho de $alphatest apenas cambia.

Ver también