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.2. ShaderLab ZWrite

Esta publicación está disponible en...

Este comando controla la escritura de los píxeles de la superficie de un objeto en el Z-Buffer, o sea, permite ignorar o respetar la distancia de profundidad entre la cámara y un objeto. ZWrite posee dos valores los cuales son: On y Off, donde “On” corresponde a su valor por defecto. Generalmente utilizaremos este comando cuando trabajemos con transparencias, e.g., cuando activemos las opciones de Blending.

  • ZWrite Off, Para transparencias.
  • ZWrite On, valor por defecto.

¿Por qué razón debemos desactivar el Z-Buffer cuando trabajamos con transparencias? Principalmente por la superposición de píxeles translúcidos (Z-fighting). Cuando trabajamos con objetos semitransparentes, es común que la GPU no sepa qué objeto va delante de otro, produciendo un efecto de superposición entre los píxeles cuando movemos la cámara en la escena. Para solucionar este problema, simplemente debemos desactivar el Z-Buffer haciendo el comando ZWrite igual a “Off” como muestra el siguiente ejemplo:

Shader “InspectorPath / shaderName”
{
    Properties {} …
    SubShader
    {
        Tags { "Queue" = "Transparent" “RenderType”=”Transparent”} 
        Blend SrcAlpha OneMinusSrcAlpha
        ZWrite Off
    }
}

El Z-fighting ocurre cuando tenemos dos o más objetos exactamente a la misma distancia respecto a la cámara, causando valores idénticos en el Z-Buffer.

(Fig. 030)

Este efecto se produce cuando se intenta procesar un píxel al final del rendering pipeline. Dado que el Z-Buffer no puede determinar qué elemento está detrás del otro, se producen líneas parpadeantes que cambian de forma según la posición de la cámara.

Para corregir este problema, simplemente debemos desactivar el Z-Buffer mediante el comando “ZWrite off”.

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.