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

2.0.1. Qué es un shader?

Esta publicación está disponible en...

Considerando parte del conocimiento previo visto anteriormente, nos adentraremos al tema de los shaders en Unity. Un shader es un pequeño programa con extensión “.shader” (e.g. color.shader) el cual podemos utilizar para generar efectos interesantes en nuestros proyectos. En su interior posee cálculos matemáticos y listas de instrucciones (comandos) que permiten el procesamiento de color para cada pixel dentro del área que cubre un objeto en la pantalla de nuestro computador.

Dicho programa nos permite dibujar elementos (mediante sistemas de coordenadas) basándonos en las propiedades de un objeto poligonal. Los shaders son ejecutados a través de la GPU dado que cuentan con una arquitectura en paralelo que consiste en miles de núcleos pequeños y eficaces, diseñados para resolver tareas de manera simultánea, mientras que la CPU ha sido diseñada para el procesamiento en serie secuencial.

Cabe destacar que en Unity nos encontraremos con tres tipos de archivos asociados a shaders. Por una parte tenemos programas con extensión “.shader” que son capaces de compilar en los distintos tipos de render pipeline.

Por otra parte, tenemos programas con extensión “.shadergraph” que sólo pueden compilar ya sea en Universal RP como en High Definition RP. Además, tenemos archivos con extensión “.hlsl” que permiten la creación de funciones customizadas; generalmente utilizadas dentro de un tipo de nodo llamado Custom Function, el cual podemos encontrar en Shader Graph.

Además existe otro tipo de programa con extensión “.cginc” el cual revisaremos en detalle más adelante. Por ahora nos limitaremos a hacer la siguiente asociación: “.cginc” está relacionado a “.shader” CGPROGRAM, y “.hlsl” está vinculado a “.shadergraph” HLSLPROGRAM. Es fundamental conocer esta analogía debido a que cada extensión cumple una función distinta y se utilizan en contextos específicos.

(Fig. 019. ícono de referencia para shaders en Unity)

En Unity existen al menos cuatro tipos de estructuras definidas para generar shaders, entre las cuales podemos encontrar la combinación de vertex shader y fragment shader; surface shader para cálculo de iluminación automática y compute shader para conceptos más avanzados. Cada una de estas estructuras cuentan con propiedades y funciones previamente descritas que facilitan el proceso de compilación, así como también podremos definir nuestras operaciones con facilidad dado que el software agrega dichas estructuras de manera automática.

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.