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.5. ShaderLab Pass

Esta publicación está disponible en...

El tercer componente en nuestro shader corresponde a los pases (Pass).

Dentro de un shader pueden existir múltiples pases, sin embargo, por defecto Unity agrega sólo uno dentro del campo de un SubShader.

Si prestamos atención a nuestro shader USB_simple_color, encontraremos el siguiente pase incluido.

Pass
{
    CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag
    // make fog work
    #pragma multi_compile_fog

    #include “UnityCG.cginc”

    struct appdata {}; ...

    struct v2f {}; ...

    sampler 2D _MainTex;
    float4 _MainTex;

    v2f vert (appdata v) {} ...

    fixed4 frag (v2f i) : SV_Target {} ...
}

Un pase se refiere literalmente a un Render Pass. Para aquellos que han trabajado con rendering en software 3D (e.g. Maya o Blender) este concepto les será más fácil de entender ya que cuando se está procesando una imagen, se pueden generar distintas capas o pases por separado (e.g. color pass, light pass, occlusion pass, etc) y así obtener una composición separada en distintas capas.

Cada Pass renderiza un objeto a la vez, es decir, si tenemos dos pases en nuestro shader, el objeto será renderizado dos veces en la GPU y el equivalente a eso sería dos draw calls.

Un Pass es igual a un draw call, por esta razón debemos utilizar la menor cantidad de pases posibles, de otra manera podríamos generar una carga gráfica significativa.

Shader “InspectorPath / shaderName”
{
    Properties {} ...
    SubShader
    {
        Tags { “RenderType”=”Opaque”} 
        Pass
        {
            // first default pass
        }

        Pass
        {
            // second additional pass
        }
    }
}

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.