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.8. Cg / HLSL Pragmas

Esta publicación está disponible en...

En nuestro shader podemos encontrar al menos tres pragmas que vienen escritos por defecto. Estas son directivas de procesador y están incluidas en nuestro programa Cg o HLSL. Su función es ayudar a nuestro shader a reconocer y compilar ciertas funciones que de otra manera no podrían ser reconocidas como tal.

El #pragma vertex vert permite que el vertex shader stage llamado vert pueda compilar en la GPU como vertex shader. Esto es fundamental, ya que sin esta línea de código la GPU no podrá reconocer a la función “vert” como el vertex shader stage, por ende, no podremos utilizar información de nuestros objetos y tampoco pasar información al fragment shader stage para proyectarlas en pantalla.

Si prestamos atención al pase que viene incluido en el shader USB_simple_color, encontraremos la siguiente línea de código relacionada al concepto explicado previamente.

// allow me to compile the "vert" function as a vertex shader. 
#pragma vertex vert   
// use "vert" as vertex shader. 
v2f vert (appdata v)
{
    v2f o;
    o.vertex = UnityObjectToClipPos(v.vertex);
    o.uv = TRANSFORM_TEX(v.uv, _MainTex);
    UNITY_TRANSFER_FOG(o, o.vertex);
    return o;
}

La directiva #pragma fragment frag cumple la misma función que el pragma vertex, con la diferencia que este permite que el fragment shader stage llamado “frag” pueda compilar en el código como fragment shader.

// allow me to compile the "frag" function as a fragment shader. 
#pragma fragment frag   

fixed4 frag (v2f i) : SV_Target
{
    fixed4 col = tex2D(_MainTex, i.uv);
    UNITY_APPLY_FOG(i.fogCoords, col);
    return col;
}

A diferencia de las directivas anteriores, el #pragma multi_compile_fog tiene una doble función. Por una parte, multi_compile se refiere a un shader variant la cual nos permite generar variantes con funcionalidades distintas dentro de nuestro shader. Por otro lado, la palabra “_fog” habilita las funcionalidades para fog desde la ventana Lighting en Unity, esto quiere decir que, si vamos a dicha pestaña, sección Environment / Other Setting, podremos activar o desactivar las opciones de fog para nuestro shader.

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.