Sombreador


En gráficos por computadora , un sombreador es un programa de computadora que calcula los niveles apropiados de luz , oscuridad y color durante la representación de una escena 3D (o 2D), un proceso conocido como sombreado . Los sombreadores han evolucionado para realizar una variedad de funciones especializadas en efectos especiales de gráficos por computadora y posprocesamiento de video , así como computación de propósito general en unidades de procesamiento de gráficos .

Los sombreadores tradicionales calculan los efectos de representación en el hardware de gráficos con un alto grado de flexibilidad. La mayoría de los sombreadores están codificados (y se ejecutan en) una unidad de procesamiento de gráficos (GPU), [1] aunque este no es un requisito estricto. Los lenguajes de sombreado se utilizan para programar la canalización de representación de la GPU , que en su mayoría ha reemplazado a la canalización de funciones fijas del pasado que solo permitía funciones comunes de transformación de geometría y sombreado de píxeles ; con sombreadores, se pueden usar efectos personalizados. La posición y el color ( tono , saturación ,brillo y contraste ) de todos los píxeles , vértices y/o texturas utilizadas para construir una imagen renderizada final se pueden modificar mediante algoritmos definidos en un sombreador, y se pueden modificar mediante variables externas o texturas introducidas por el programa informático que llama al sombreador. [ cita requerida ]

Los sombreadores se usan ampliamente en el posprocesamiento de cine , imágenes generadas por computadora y videojuegos para producir una variedad de efectos. Más allá de los modelos de iluminación simples, los usos más complejos de los sombreadores incluyen: alterar el tono , la saturación , el brillo ( HSL/HSV ) o el contraste de una imagen; producción de desenfoque , floración de luz , iluminación volumétrica , mapeo normal (para efectos de profundidad), bokeh , sombreado de celdas , posterización , mapeo de relieve ,distorsión , incrustación de croma (para los llamados efectos de "pantalla azul/pantalla verde "), detección de bordes y movimiento , así como efectos psicodélicos como los que se ven en la demostración . [ aclaración necesaria ]

Este uso del término "shader" fue presentado al público por Pixar con la versión 3.0 de su especificación de interfaz RenderMan , publicada originalmente en mayo de 1988. [2]

A medida que evolucionaron las unidades de procesamiento de gráficos , las principales bibliotecas de software de gráficos , como OpenGL y Direct3D , comenzaron a admitir sombreadores. Las primeras GPU compatibles con sombreadores solo admitían sombreado de píxeles , pero los sombreadores de vértices se introdujeron rápidamente una vez que los desarrolladores se dieron cuenta del poder de los sombreadores. La primera tarjeta de video con un sombreador de píxeles programable fue la Nvidia GeForce 3 (NV20), lanzada en 2001. [3] Los sombreadores de geometría se introdujeron con Direct3D 10 y OpenGL 3.2. Eventualmente, el hardware de gráficos evolucionó hacia un modelo de sombreador unificado .

Los sombreadores son programas simples que describen las características de un vértice o un píxel . Los sombreadores de vértices describen los atributos (posición, coordenadas de textura , colores, etc.) de un vértice, mientras que los sombreadores de píxeles describen los rasgos (color, profundidad z y valor alfa ) de un píxel. Se llama a un sombreador de vértices para cada vértice en una primitiva (posiblemente después de la teselación ); por lo tanto, un vértice adentro, un vértice (actualizado) afuera. Luego, cada vértice se representa como una serie de píxeles en una superficie (bloque de memoria) que finalmente se enviará a la pantalla.


Los sombreadores se usan más comúnmente para producir áreas iluminadas y sombreadas en el renderizado de modelos 3D . El sombreado de Phong (derecha) es una mejora del sombreado de Gouraud , y fue uno de los primeros modelos de sombreado por computadora desarrollados después del sombreado plano básico (izquierda), que mejora en gran medida la apariencia de las superficies curvas en los renderizados.
Otro uso de los sombreadores es para efectos especiales, incluso en imágenes 2D (por ejemplo, una foto de una cámara web ). La imagen sin alterar ni sombrear está a la izquierda, y la misma imagen tiene un sombreado aplicado a la derecha. Este shader funciona reemplazando todas las áreas claras de la imagen con blanco y todas las áreas oscuras con una textura de colores brillantes.