Wiki
Los shaders (o sombreadores, si lo tradujeramos literalmente) son pequeños programas escritos para el procesador gráfico de los ordenadores (aceleradoras_gráficas?). Los shaders se vienen usando en los renderers de software tradicionales desde el comienzo de los gráficos por computadora en los años 80, siendo los más conocidos los escritos para Renderman (de Pixar) o los de MentalRay.
Los rasterizadores hardware tardaron sin embargo varios años en exponer al programador el concepto de shader (que ya utilizaban internamente en cualquier caso), hasta que en alrededor del 2003 se finalizaron los estándares para los dos API principales: GLSL para OpenGL y HLSL para Direct3D.
Qué nos trajeron los shader?
Un shader básicamente permite al coder decidir qué color tendrá cada píxel de la pantalla (algo que le estuvo vetado al programador que trabajaba con tarjetas gráficas desde su aparicion sobre 1998).
Con los shaders los coders recuperaron el terreno que les había sido robado, y que tanto juego les había dado desde el comienzo de la demoscene sobre las plataformas tradicionales (Commodore, Amiga, MsDos, etc).
Pero cómo
La función básica del shader es calcular un color. Sin más. Para cada pixel que cada triángulo cubra sobre la pantalla, la GPU invocará el shader, éste calculara un color, y la GPU almacenará el color en ese píxel.
Para ello el shader se puede valer de cierta información (parámetros) de entrada que pueden ser cualquier cosa que el programador desee. La información puede ser de 3 tipos:
1. constantes, 2. datos que se indican sólo en los vértices de los triángulos (y que el rasterizador se encarga de interpolar linealmente para cada píxel) 3. texturas (que se suelen ver como grandes tablas de datos, con capacidad de interpolación en hardware).
Es ya cosa de cada programador utilizar estos datos para producir un color. Mediante fórmulas de iluminación, o mediante cualquier otra fórmula/algoritmo que se le ocurra.
Sus consecuencias
La consecuencia de la aparición de los shaders para muchos fue que la demoscene volviera a tener cierto sentido. Como en todo cambio (aunque sea bueno o no) hubo algunos detractores en su momento cuyo argumento era la "falta de shaders" en todas las tarjetas gráficas. De hecho aún en el 2006 la demo 1995 se jactaba de no usar shaders, [comentarioSarcasticoPeroCierto]como si eso de dejar que el driver escriba los shaders pot ti fuera un mérito.[/comentarioSarcasticoPeroCierto]
Hoy en día no existen tarjetas gráficas sin shaders, y de hecho los drivers suelen tener que simular las funcionalidades tradicionales (o "sin shaders") de OpenGL y Direct3D mediante shaders preescritos por sus desarrolladores. Es más, es habitual que los renderers sin shaders sean más lentos que los que hacen uso de ellos, ya que el driver no puede especializar sus shaders internos para cada caso particular como un programador puede.
A nivel creativo la llegada de los shaders fue como una bocanada de aire fresco a un mundo que se estaba homogeneizando, donde lo único que se podía hacer era bump mapping, capas de blending y glow, y donde por tanto todas las demos estaban empezando a parecer iguales (salvo contadas excepciones como Variform). Tras la programabilidad de las GPU mediante los shaders, un sinfín de programadores de todo el mundo, tanto dentro como fuera de la demoscene, se volcaron en la búsqueda de nuevos algoritmos y técnicas, algo que no ha cesado desde enctonces y que cada dia nos sorprende.

