Shader

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Shader

La tecnología shaders o coloreadores es cualquier unidad escrita en un lenguaje de coloreado que se puede compilar independientemente. Es una tecnología reciente y que ha experimentado una gran evolución destinada a proporcionar al programador una interacción con la unidad de procesamiento gráfico (GPU) hasta ahora imposible. Los shaders son utilizados para realizar transformaciones y crear efectos especiales, como por ejemplo iluminación, fuego o niebla. Para su programación los shaders utilizan lenguajes específicos de alto nivel que permitan la independencia del hardware.

Historia[editar]

En el 2000 la serie 2 de tarjetas GeForce permitía a la GPU hacerse cargo de funciones de transformación e iluminación que hasta ahora debía hacerlas la CPU, sin embargo no fue hasta la GeForce 3 (2001) que se incluyó la posibilidad de programarlas con la primera versión del modelo de coloreado. Sucesivas versiones de dicho modelo añadieron más funcionalidad: programación de operaciones sobre vértices, píxels y texturas. Cada tipo de operación disponía de hardware específico en la GPU.

Las GPU modernas llevan coloreadores unificados que permiten realizar distintas operaciones de coloreado con un mismo hardware, eliminando el particionado estático de la misma y maximizando su uso. La primera generación de programación unificada por parte de Nvidia fue el chip G80 usado en las tarjetas GeForce 8 y Nvidia Tesla. La primera generación de ATI (ahora AMD) se introdujo con el chip R600 usado en las tarjetas Radeon HD 2000, basados en la microarquitectura TeraScale. La Xbox 360 fue la primera videoconsola en emplear programación unificada en la GPU de la mano del chip Xenos basado en el diseño unificado de ATI.

Lenguajes de coloreado[editar]

Para la escritura de esas instrucciones, los programadores hacen uso de lenguajes de programación diseñados específicamente para ello. Cada uno de estos lenguajes de programación necesita enlazarse mediante una API, entre otras OpenGL, Vulkan o Direct3D. Existen otros lenguajes pero los siguientes son los más conocidos.

  • GLSL es el lenguaje desarrollado por el grupo Khronos. Está diseñado específicamente para su uso dentro del entorno de OpenGL. Sus diseñadores afirman que se ha hecho un gran esfuerzo para lograr altos niveles de paralelismo. Su diseño se basa en C y RenderMan como modelo de lenguaje de coloreado.
  • CG lenguaje propiedad de la empresa Nvidia resultante de su colaboración con Microsoft para el desarrollo de un lenguaje de coloreado. Su principal ventaja es que puede ser usado por las APIs OpenGL y DirectX. Otra ventaja de este lenguaje es el uso de perfiles. Estos lenguajes no son totalmente independientes del hardware por lo tanto es recomendable crear programas específicos para diferentes tarjetas gráficas. Los perfiles de CG se encargan de elegir para su ejecución el más adecuado de los programas disponibles para el hardware.
  • HLSL es la implementación propiedad de Microsoft, la cual colaboró junto a Nvidia para crear un lenguaje de coloreado. Este lenguaje se debe utilizar junto a DirectX (la primera versión para la que se puede utilizar es Direct3D 8.0). Anteriormente al Direct3D 8 (Direct3D 7, 6, 5...) se utilizaba otro método el cual era más complicado y complejo para ser utilizado. (Entre lo que era el lenguaje, creación de objetos, sonidos, partículas, entre otras).

A la hora de estudiar rendimientos es difícil aseverar nada. No sólo se deben tener en cuenta el fabricante (Nvidia o ATI) sino la versión del modelo de coloreado, el controlador instalado y el lenguaje usado. Usualmente cuanto más avanzada sea la versión del shader, la cantidad de objetos, texturas, efectos ambientales (Sol, Nubes 3D, Humos, Fuegos Realistas, Agua, Iluminación) será mayor; con formas, colores y texturas más realistas.

Enlaces externos[editar]