shader

El shader, el as oculto de los gráficos 3D

A pesar de la influencia del shader en la creación de gráficos por ordenador, existe cierta confusión sobre qué es y cómo funciona. Muchas veces nos referimos a shading como el proceso de creación de materiales para ser usados en un motor de juego. Nosotros ya cubrimos este aspecto en este artículo sobre materiales y texturas , pero hoy vamos a explorar su faceta más técnica y descubrir los entresijos de su funcionamiento.

Un poco de historia

Un shader (o sombreador en español) es un pequeño programa con instrucciones para colorear cada píxel renderizado según diversas variables. Tal como indica su nombre, su función principal es procesar la información sobre la luz, los materiales y las sombras que puedan arrojar los objetos. No obstante, tienen un sinfín de usos, como modificar la geometría de la escena o aplicar propiedades a la cámara.

Hasta finales de los ‘80 estos cálculos eran ejecutados por la CPU, cuya arquitectura está pensada para tareas de todo tipo. El procesamiento de gráficos, que requiere una enorme capacidad de cálculo, es una tarea en la que resultan toscos y poco eficientes. Las tarjetas gráficas surgieron para cubrir ese defecto. Al contar con miles de núcleos, si bien mucho más sencillos que los del procesador principal, son ideales para grandes cargas de operaciones matemáticas.

blog-shader-tarjeta-grafica-animum

Los shaders nacieron para sacar partido a este nuevo hardware, con el que se comunican directamente. Inicialmente había que programarlos a bajo nivel (instrucciones directas que requieren un gran conocimiento de la gráfica) hasta que otros lenguajes de alto nivel facilitaron su aprendizaje y control. Actualmente los más utilizados son:

  • Cg o C for graphics de Nvidia, común desde el principio y compatible tanto con OpenGL como DirectX.
  • HLSL DirectX Shader Language, de Microsoft, fue introducido en DirectX 9 y dio un gran salto en simplificar el control de las tarjetas de vídeo.
  • GLSL OpenGL Shader Language, de código abierto, incluido en OpenGL 2.0, es desde entonces la principal competencia de DirectX.

blog-shader-lenguajes-programacion-animum

Tipos de shader

Hoy en día tanto OpenGL como Direct3D utilizan modelos de shader unificados, es decir, cuyas etapas tienen las mismas capacidades (leer texturas, almacenar datos en búfer, etc.) y en conjunto cumplen las funciones que anteriormente eran un shader aparte. Vamos a ver algunos de ellos y para qué se usan:

  • El vertex shader detecta los vértices de los modelos 3D y los procesa uno a uno. Es utilizado en procesos de deformación de la superficie, como el ondular del agua, que se obtienen mediante bump o normal maps.
  • El hull shader y el domain shader trabajan junto con el script de teselado para subdividir un polígono en varios y lograr geometrías más suaves.
  • El geometry shader ejecuta acciones sobre un modelo completo, pudiendo modificar, añadir o eliminar vértices. Su uso es extendido en los efectos de partículas, basados enteramente en la generación y destrucción rápida de geometría.
  • El pixel shader (también llamado fragment shader) es la última fase y se encarga de procesar cálculos de iluminación y sombreado. Su output es un valor de color para cada píxel visible en pantalla.
  • El compute shader exprime la tarjeta de vídeo para tareas no relacionadas con generar píxeles y triángulos.

blog-shader-antes-despues-animum El mundo del shader es complejo y lo que hemos visto no es más que la punta del iceberg, pero esperamos que te haya servido para entender un poco lo que hay por debajo de los gráficos.

En Animum no programamos shaders pero, si tienes curiosidad por el mundo del 3D, tenemos la formación que estás buscando.


New call-to-action

Compartir
Elsa Carrasco
Artista 3D, especialista en modelado e iluminación de personajes
FORMACIÓN RELACIONADA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Categorías
Entradas Destacadas
Suscríbete a nuestra newsletter
Animum Formación, S.L. (en adelante, “Animum”), tratará los datos de carácter personal que usted ha proporcionado con la finalidad de atender a su solicitud de información, reclamación, duda o sugerencia que realice sobre los productos y/o servicios ofrecidos por Animum, incluido por vía telefónica, así como para mantenerle informado de nuestra actividad.A su vez, le informamos que vamos a realizar un perfilado de sus datos de carácter personal para poderle enviar información personalizada en función de sus intereses. Puede consultar información adicional pinchando aquí.Usted podrá ejercer los derechos de acceso, supresión, rectificación, oposición, limitación y portabilidad, así como ejercitar los derechos reconocidos en los artículos 15 a 22 del Reglamento (UE) 2016/679, mediante solicitud dirigida Calle Canales 10, local 1, 29002, Málaga, España, o a la siguiente dirección de correo electrónico: arco@animum3d.com, adjuntando copia de su DNI o documentación acreditativa de su identidad.Si lo desea puede consultar información adicional y detallada sobre protección de datos en el siguiente enlace: https://www.animum3d.com/aviso-legal/