Me pareció interesante postearlo, ya que es bueno saberlo a la hora de elegir una placa de video...
¿Qué son? ¿Para qué se utilizan? ¿Qué placas lo incluyen? Todas estas preguntas y otras más serán contestadas en el siguiente informe



Pixel shaders y Vertex shaders


Desde que comenzó la “revolución 3D” en el ámbito de los juegos de computadora, allá por mediados de la década de los 90’, la tendencia de la tecnología aplicada a este rubro ha sido trasladar el trabajo de procesamiento de gráficos tridimensionales, desde la CPU hacia la tarjeta de video.

En primer lugar fue el filtro de las texturas, para lo cual se crearon chips especialmente dedicados para realizar esta tarea. Así nacieron las famosas placas aceleradoras 3D, que incorporaban dichos chips y un cantidad de memoria propia en la misma tarjeta. Luego, con la salida del GeForce 256 de NVIDIA, el procesador gráfico pasó a encargarse de lo que, hasta ese momento, realizaba la CPU. Estamos hablando de la función de Transformación e Iluminación (Transform & Lighting), utilizada para llevar a cabo los cálculos de geometría y de iluminación general de una escena en 3D. Hubo una versión mejorada de este motor, a la que se llamó de Segunda Generación. Ésta vino incluida a partir de la GeForce 2 y la gama Radeon de ATI, avanzando un poco más en cuanto a materia gráfica.

Directx
Una tarjeta ASUS basada en el GeForce 256, primero en incorporar Transform & Lighting por hardware


El gran cambio se dio a partir de la incorporación de los Píxel shaders y Vertex shaders. Esto permitió a los programadores una mayor libertad a la hora de diseñar gráficos en tres dimensiones, ya que puede tratarse a cada píxel y cada vértice por separado. De esta manera, los efectos especiales y de iluminación puede crearse mucho más detalladamente, sucediendo lo mismo con la geometría de los objetos. Veamos de qué se tratan estas dos características, tan importantes dentro de una tarjeta de video hoy en día.

pixel
Una parte del famoso árbol que mostraba las bondades de
la tecnología de Transformación e Iluminación


Una breve explicación de qué son, cómo funcionan y dónde se implementan comúnmente
Así se los denomina normalmente. Sin entrar en terrenos de difícil comprensión, podemos decir que son pequeños programas que se encargan del procesamiento de vértices (Vertex shaders) y de pixeles (Píxel shaders). La principal ventaja es que, como su naturaleza lo indica, pueden ser programados por el desarrollador, otorgando una flexibilidad que hasta antes de la aparición de los shaders era poco más que impensada. Recursos como las operaciones condicionales o los saltos se utilizan de forma similar que en los lenguajes más conocidos. Sin los shaders, muchos de los efectos eran realizados en conjunto con la unidad de procesamiento central, disminuyendo en gran medida el rendimiento y limitando el avance a nivel gráfico de los mismos.

Un vertex shader es una función que recibe como parámetro un vértice. Sólo trabaja con un vértice a la vez, y no puede eliminarlo, sólo transformarlo. Para ello, modifica propiedades del mismo para que repercutan en la geometría del objeto al que pertenece. Con ésto se puede lograr ciertos efectos específicos, como los que tienen que ver con la deformación en tiempo real de un elemento; por ejemplo, el movimiento de una ola. Donde toma una gran importancia es en el tratamiento de las superficies curvas, y su avance se vio reflejado en los videojuegos más avanzados de la actualidad. Particularmente, en el diseño de los personajes y sus expresiones corporales.

En cambio, un píxel shader no interviene en el proceso de la definición del “esqueleto” de la escena (Wireframe), sino que forma parte de la segunda etapa: la rasterización (Rendering). Allí es donde se aplican las texturas y se tratan los pixeles que forman parte de ellas. Básicamente, un píxel shader especifica el color de un píxel. Este tratamiento individual de los pixeles permite que se realicen cálculos principalmente relacionados con la iluminación del elemento del cual forman parte en la escena, y en tiempo real. Teniendo la posibilidad de iluminar cada píxel por separado es como se lograron crear los fabulosos efectos de este estilo que se pueden apreciar en Doom 3, Far Cry y Half Life 2, por mencionar sólo los más conocidos. La particularidad de los píxel shaders es que, a diferencia de los vertex shaders, requieren de un soporte de hardware compatible. En otras palabras, un juego programado para hacer uso de píxel shaders requiere si o si de una tarjeta de video con capacidad para manipularlos.

model
Comparen la diferencia entre aplicar y no aplicar pixel shaders. Es perceptible a simple vista, no como muchos otros efectos conocidos en el rubro


shader
Esquema de funcionamiento de una Unidad de Pixel Shader en la Radeon X800


Cambiando de tema, cuando hablamos de la compatibilidad con DirectX nos referimos al conjunto de instrucciones de shaders incluidas en estas librerías de Microsoft. En realidad, las instrucciones de píxel y vertex shaders vinieron a partir de DirectX 8 en adelante. Por ello, cuando se dice que una tarjeta de video es compatible con esta u otra versión posterior de DirectX por hardware, se está especificando que es capaz de aprovechar las instrucciones de shaders incorporadas en estas librerías. Por cierto, en algunos lados se declara la compatibilidad a nivel general, tanto con píxel como con vertex shaders. El conjunto de ambas funciones se conoce como Shader Model x, donde x es la versión de este modelo de referencia (que depende de las versiones de los propios shaders).

A lo largo de su corta historia, los shaders fueron evolucionando y mejorando sus prestaciones. Desde sus comienzos hasta el dia de hoy, detallado a continuación.
Hubo una evolución lógica de los shaders en estos últimos años. Este progreso tiene que ver, principalmente, con cuestiones internas de programación. Parámetros como la cantidad de registros disponibles, el número de instrucciones permitido por programa y la incorporación de instrucciones aritméticas más complejas, entre otros, aumentaron la flexibilidad a la hora de programar los shaders. Estos valores son los que diferencian una versión de Shader Model de otra.
A continuación veremos una lista de las distintas versiones de DirectX con soporte para shaders y los procesadores gráficos compatibles con cada una. Vale aclarar que existe la retro-compatibilidad, por lo que, por ejemplo, si una GPU soporta Shader Model 2.0, también lo hace con Shader Model 1.1.

DirectX 8.0 (Pixel Shader 1.1 – Vertex Shader 1.1): Familia GeForce 3, de NVIDIA.

DirectX 8.1 (Pixel Shader 1.3 y 1.4 – Vertex Shader 1.1): Familia GeForce 4 TI, de NVIDIA (hasta Pixel Shader 1.3). Radeon 8500, 9000, 9100, 9200 y 9250, de ATI (hasta Pixel Shader 1.4).

DirectX 9.0 (Pixel Shader 2.0 – Vertex Shader 2.0): Familia GeForce FX, de NVIDIA. Radeon 9500, 9700, 9800 y Familia Xx00, de ATI. Familia 900 y 950, de Intel. Familia Volari, de XGI. Deltachrome y Gammachrome, de S3.

DirectX 9.0c (Pixel Shader 3.0 – Vertex Shader 3.0): Familia GeForce 6 y GeForce 7, de NVIDIA. Familia X1000, de ATI.

DirectX 10 (Pixel Shader 4.0 - Vertex Shader 4.0): Familia GeForce 8 de NVIDIA. Familia HD2000 de ATI.

DirectX 10.1 (Pixel Shader 4.1 - Vertex Shader 4.1): Familia HD3800 de ATI



vertex
Shader Model 3.0


Pixel shaders y Vertex shaders
Shader Model 4.0


Espero que les haya resultado interesante y/o útil. Saludos!

Fuente