Consigue un 20% de descuento usando el código RELEASE en la compra de tu libro. Por tiempo limitado.

Introducción al lenguaje de programación de shaders

3.2.3. ShaderLab ZTest

Esta publicación está disponible en...

ZTest controla el cómo se debe realizar el Depth Testing y es utilizado generalmente en shaders con multi-pase para generar diferencia de colores y profundidades. Esta propiedad posee siete valores distintos los cuales son:

  • Less.
  • Greater.
  • LEqual.
  • GEqual.
  • Equal.
  • NotEqual.
  • Always.

Los cuales corresponden a una operación de comparación.

  • ZTest Less: (<) Dibuja los objetos por delante. Son descartados aquellos objetos que están a la misma distancia o detrás de aquel que posee el shader.
  • ZTest Greater: (>) Dibuja al objeto que está detrás. No dibuja aquellos objetos que están a la misma distancia o delante de aquel que posee el shader.
  • ZTest LEqual : (≤) Valor por defecto. Dibuja los objetos que están por delante o a la misma distancia. No dibuja aquellos objetos que están por detrás de aquel que posee el shader.
  • ZTest GEqual: (≥) Dibuja el objeto que está detrás o a la misma distancia. No dibuja aquellos objetos que están delante de aquel que posee el shader.
  • ZTest Equal: (==) Dibuja a los objetos que están a la misma distancia. No dibuja aquellos objetos que están delante o detrás de aquel que posee el shader.
  • ZTest NotEqual: (!=) Dibuja al objeto que no está a la misma distancia. No dibuja a los objetos que están a la misma distancia de aquel que posee el shader.
  • ZTest Always: Dibuja todos los píxeles independientemente de la distancia de un objeto respecto a la cámara.

Para entender este comando, haremos el siguiente ejercicio: Vamos a suponer que tenemos dos objetos en nuestra escena; un cubo y una esfera. La esfera se encuentra en frente del cubo respecto a la cámara y la profundidad de los píxeles es la esperada.

(Fig. 031)

Si posicionamos la esfera por detrás del cubo entonces nuevamente los valores de profundidad serán los esperados, ¿por qué razón? Porque el Z-Buffer está almacenando los valores de profundidad para cada píxel en la pantalla. Los valores de profundidad son calculados en relación a la cercanía de un objeto respecto a la cámara.

(Fig. 032)

Ahora, ¿qué pasaría si activamos ZTest Always? En este caso, el Depth Testing no sería realizado, por lo tanto, todos los píxeles figuraría con la misma profundidad en pantalla.

(Fig. 033)

Su sintaxis es la siguiente:

Shader “InspectorPath / shaderName”
{
    Properties {} ...
    SubShader
    {
        Tags { "Queue" = "Transparent" “RenderType”=”Transparent”} 
        ZTest LEqual
    }
}

Siguenos para mantenerte informado sobre todas las novedades, actualizaciones y más.

Únete al grupo para compartir tus experiencias con otros desarrolladores.

¡Suscríbete a nuestro canal y sigue aprendiendo sobre desarrollo de juegos!

jettelly-logo

Jettelly Team

Somos un equipo de desarrolladores independientes con más de 9 años de experiencia en videojuegos. Como estudio independiente, hemos desarrollado Nom Noms el que publicamos con Hyperbeard en 2019. Actualmente estamos desarrollando La Biblia de Shader en Unity.

Síguenos en nuestras redes sociales.