miércoles, 25 de noviembre de 2009
Ayúdanos a crecer, haz NeoTeo tu página de inicio RegistrarseIniciar sesión

Pixel Shaders y Vertex Shaders

Por: Patricio Barbosa  @  viernes, 05 de mayo de 2006  Nota vista 159362 veces
Habitualmente, manejamos estos términos dentro del rubro de las placas de video, pero... ¿Qué son? ¿Para qué se utilizan? ¿Qué tarjetas lo incluyen? Todas estas preguntas y otras más serán contestadas en el siguiente informe
¿te interesa?
403 -67
470 votos
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.

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.
Una tarjeta ASUS basada en el GeForce 256, primero en incorporar Transform & Lighting por hardware
Una parte del famoso árbol que mostraba las bondades de la tecnología de Transformación e Iluminación
La prueba de 3DMark 2003 que evalúa los shaders
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.
Esquema de funcionamiento de una Unidad de Pixel Shader en la Radeon X800
Comparen la diferencia entre aplicar y no aplicar pixel shaders. Es perceptible a simple vista, no como muchos otros efectos conocidos en el rubro
Los vertex shaders no obligan a que esté presente el hardware necesario para ejecutarlos en el ordenador
Para establecer los comandos de las funciones de píxel y vertex shaders se utiliza el lenguaje HLSL (High Level Shader Languages), que vendría a ser un lenguaje de alto nivel para trabajar con estos programas. Existe uno de bajo nivel, bastante más difícil de programar, que se denomina ensamblador. Su sintaxis comparte muchas características con los ensambladores utilizados para programar sobre las CPU. La ventaja del HLSL es la de todo lenguaje de alto nivel: facilidad para llevar a cabo operaciones mediante unas pocas instrucciones de fácil aprendizaje. Como punto débil encontramos el mismo defecto que poseen todos los lenguajes de este tipo, y es la falta de optimización del código. Trabajando directamente sobre el hardware, es mucho más factible que se lleguen a aprovechar todas sus posibilidades. En cambio, habiendo un compilador de por medio, siempre se pierde algo de rendimiento en el programa final.
Una aplicación -no un lenguaje- destinada a trabajar con píxel shaders es RenderMonkey. Fue creada por ATI, fabricante de los populares chips Radeon. Se puede descargar gratuitamente de la pagina oficial (vean los links relacionados a la nota) para que cualquier programador o artista pueda crear un shader y verlo en funcionamiento. Una importante característica es que permite la modificación de elementos en tiempo real, viendo como repercuten los cambios al momento de establecerlos.

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). El último y más reciente es el Shader Model 3.0, compuesto por píxel shader 3.0 y vertex shaders 3.0. Hasta el momento, escasos juegos aprovechan las posibilidades de este modelo, pero los que lo hacen son espectaculares. Sin ir más lejos, tenemos el reciente caso de The Elder Scrolls: Oblivion, considerado como el videojuego con mejores gráficos de todos los tiempos.
El lenguaje HLSL tiene una sintáxis que recuerda a sus pares de alto nivel
La aplicación RenderMonkey puede descargarse desde la web de ATI
Tarjeta de Leadtek con chip GeForce 3, el primero en soportar shaders por parte de NVIDIA
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.0Vertex 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.0Vertex Shader 3.0): Familia GeForce 6 y GeForce 7, de NVIDIA. Familia X1000, de ATI.


Como verán, ATI implementó la cuarta versión de los shaders recién a partir de su última línea (la X1000). Por su parte, NVIDIA fue pionera al utilizarlo desde la familia GeForce 6 (6200, 6600 y 6800), salida mucho tiempo antes que la recién mencionada de ATI, obteniendo una leve ventaja. Pero, como ya dijimos, recién ahora se está empezando a utilizar el Shader Model 3.0 en los juegos de ordenador. Por esa razón es que se justifica la decisión de ATI de no realizar un cambio de arquitectura prematuro.
El Radeon 8500, de ATI, fue el primero en soportar Pixel shader 1.4
El más reciente y poderoso Radeon X1900 ejecuta los shaders 3.0 a velocidades asombrosas
Far Cry, una pequeña muestra de lo que pueden lograr los shaders 3.0
El futuro de estas funciones programables es prometedor. Microsoft ya está ultimando detalles de lo que será la próxima versión de DirectX, denominada DirectX 10. En ésta se incluirá la quinta versión de los shaders, conformando en Shader Model 4.0. Por supuesto, NVIDIA y ATI están pensando en esta tecnología para optimizar sus productos y sacarle el mayor provecho. Hasta el momento, sólo se conocen los nombre clave de estos futuros chips: el G80 en el caso de NVIDIA y el R600 por parte de ATI.

Habrá que esperar hasta el año que viene, cuando llegue Windows Vista (fecha en la cual se planea lanzar DirectX 10) para descubrir, a través de imágenes y videos de demostración, que se puede lograr a través de la quinta generación de shaders.
Si con Shader Model 3.0 se puede conseguir algo así, imagínense con la siguiente generación de shaders...
Crysis, el próximo gran juego de Crytek, está siendo construido para aprovechar los avances en DirectX 10


Tags:
Redes sociales:
DiggDigg | MenéameMenéame | Deliciousdel.icio.us | FresquiFresqui | Mr.WongMister Wong | WikioWikio
Artículo Siguiente
Horseman 3D, la cámara para sacar tus fotos tridimiensionales
Artículo Anterior
Zoho Writer
CopyRight
Prohibida su copia total con o sin fines comerciales. Copias parciales deben citar la fuente.

 

URL Trackback para esta noticia:
Votos: 0 de 0
angel_100
angel_100
angel_100
01/07/2007
21:02:12
#1   hola q buen buen tema estan presentando me callo como anillo al dedo y quisiera saber si algun amigo ya sea el dueño del sitio o algun usuario me pueda asesorar sobre de donde puedo descargar o conseguir el pixel shader q tanto me hace falta mi tajeta de video es una ati radeon 9250 se los agradeseria muchisimo gracias
     Responder 
Votos: -1 de 1



04/07/2007
18:55:49
#2   los pixel shaders no se pueden bajar de internet la única forma de conseguirlos es comprandote una trajeta de video que soporte los pixel shader,
     Responder 
Votos: 0 de 0
CoTeCiO
CoTeCiO
CoTeCiO
10/07/2007
22:52:07
#3   Y yo tengo una Radeon 9200 y no me funciona ni el Aero del windows vista, quedó evidentemente claro que mi computadorcito quedó algo viejo ya... Sin contar que no tiene puerto PCI-X asi que no puedo aprovechar de las nuevas targetas de la gama Shader Model 3, y por cierto, no hablaste del Colin McRae Dirt, que igual tiene unos graficos bastante buenos.
     Responder 
Votos: 4 de 4
Saracatunga
Saracatunga
Saracatunga
19/07/2007
23:58:17
#4   Tengo una Ati Radeon x1050 de 256mb .. pero instalo el Splinter Cell: Double Agent .. que necesita Pixel Shaders 3.0 .. y me tira error .. Alguien me podria dar una mano ? pq no entiendo .. si la x1050 supuestamente soporta shaders 3.0 .. o quizas exista algun patch o algo para fixearlo .. muchas gracias .. mi mail es ke.bajon@gmail.com si tienen alguna idea mandenla ahi por favor
     Responder 
Votos: 0 de 0
metasearchforAGPs
metasearchforAGPs
metasearchforAGPs
20/04/2008
20:52:08
#1   Sobre el nuevo pixel shader esplico de forma breve segun lei.
Es una "chip" que trabaja el systema de iluminacion y sombreado sobre la superficie (textura) de los objetos en los juegos y permite que halla una gama mas grande de colores al activar estas sombras avanzadas.Bueno este PixelShader model 3.0 es requerido en juegos mas nuevo de la gama de PS3 supongo pues piden bastante tarjeta estos nuevos juegos. Bueno al traer integrado este systema la tarjeta de video, la misma se ve liberada del trabajo por parte del cpu (es procesado por un chip de forma automatica). Bueno uno dijo que la pc estaba vieja porque no tenia PCI-E, bueno mira yo tengo una AMD 3000+ y es un CPU basico para que ande la gran mayoria de juegos asi que pienso reformar mi tarjeta de AGP en los proximos meses y tuve mucho en cuenta esto del shader al elegirla pues por lo que dicen no corre siquiera el juego sin ella, cosa que pense no era tan asi. Bueno para que sepan les digos las tarjetas mas viejas que soportan este pixel 3.0 y les digo cual elegi.
las tarjetas agp mas potentes en orden de menos a mas son estas (a mi eleccion)
AGP GF 6800 ultra (700 puntos le daria en mi escala)
AGP GF 7600 GS y GT (la 7600gs no la apruebo, mas grosa es la GT y esa pienso comprar y es 30% mas rapida que 6800 ultra +o-).
Ati x1650xt (es muy similar muy muy a la 7600gt en todo, pero no compara con las feas x1600pro o xt, esta es mas rapida por lindo margen.)
Bueno la que nose si descartar aun es la ATI x800xt pe y x850xt pe similares ambas y es la mas potente del mercado para agp pero trabaja con pixel 2.0 (esta es un 30% o 40% mas rapida que x1650xt o 7600gt pero no de velocidad sino por los chip que trae supongo, pero con esa gran desventaja, mucho power pero sin el sporte pixel 3.0).
para el futuro pienso comprar otra PC y ya me veo comprando comprar GF 8800 Ultra en SLI (2 o mas tarjetas en paralelo) o superior si es que no se va por los aires el precio.
2 Dual core ya fué y me fui de tema pero que lindo saber que se superaron los cpus tambien aguante multi CPU x4 o más.
     Responder 
Votos: 0 de 0
knight
knight
knight
08/08/2007
19:12:27
#5   tengo una motherboard Pcchips m535 que tarjeta de video me aconsejan que sea compatible con esta.
     Responder 
Votos: 0 de 0



17/08/2007
7:00:01
#6   Solo quiero decir GRACIAS!!! por explicar todo esto bien y sencillo... y tengo la misma preg. k los demas sobre los pixel shaders no se pueden bajar de internet la única forma de conseguirlos es comprandote una trajeta de video que soporte los pixel shader ??,... segun tengo entendido solo se pueden tener comprando una tarjeta de video k la tenga y lo digo por que no he podido jugar juegos como fable: the lost chapters, ni Prince of Persia: the sands of time por mi tarjeta una Geforce 4 MX, pero increiblemente si pude jugar prince of persia warrior within y the two thrones.
     Responder 
Votos: -1 de 1



17/08/2007
16:55:16
#7   tengo el demo del juego wtcc pero me falta el shader model 2.0 kien lo tenga ke me lo pase pascu_descals@hotmail.com
     Responder 
Votos: 3 de 3



20/08/2007
5:36:46
#8   Tengo una ATI radeon 9250, al ejecutar el juego Lost Planet ,me muestra "Unsupport pixel shader version detected 1.4", me sirve esta tarejta para jugarlo o no? Si no me sirve me mato ya que la acabo de comprar justamente para este juego.
     Responder 
Votos: 0 de 0



22/08/2007
4:22:33
#9   hola tengo un problema tengo una tarjeta de video Intel® 945G Express Chipset y cuando intalo algunos juegos me dice no cuenta con shader :S cosa q es falso por q en la pag dice q mi tarjeta si cuenta con esto :S o nose si esta desacrivado tengo el directx 9.0c y el ultimo driver de mi tarjeta pero aun no soluciono el problema q podra ser espero q me puedas ayudar
     Responder 
Votos: -1 de 1



01/09/2007
7:35:38
#10   segun lo que veo (todavia no lo probe en la mia) con el programa rendermonkey para las ati y el cgshaders para las nvidia se puede como "emular" el pixel shaders, segun lo que tengo entendido, tengo una radeon 9250 y no me andan varios juegos pero probare con el rendermonkey a ver si me ahorro unos cuantos pesos.Saludos
     Responder 
Votos: 0 de 0
taver
taver
taver
02/09/2007
2:17:29
#11   esta muy bien explicado, gracias, pero creo que hace falta incluir un paartado acerca de que tarjetas graficas inchullen esto y que versiones manejan.
     Responder 
Votos: 0 de 0
Javucho
Javucho
Javucho
11/09/2007
5:07:23
#12   Hola.. no te puedo creer que hayas comprado una 9250 para jugar el Lost Planet, con es plaquita no anda nada, por lo menos tenes que tener algun 6200 de las buenas o de ahi para arriba.
     Responder 
Votos: 0 de 0
rafiki
rafiki
rafiki
13/09/2007
1:47:55
#13   hola quisiera saber que tarjetas soportan el pixel shader 3.0 o cuales lo tienen porke mi tarjeta es una ati radeon x550 de 512 Mb pero tiene el pixel shader 2.0 y quiero jugar el lost planet rainbowsix vegas y no me deja jalarlos por esa falla de pixel shader.. porfavor ayudenme rafa_07_07@hotmai.com
     Responder 
Votos: 0 de 0
mauricio
mauricio
mauricio
19/09/2007
3:13:04
#14   Tengo una Ati Radeon x330 o x550 de 256mb .. pero instalo el lost planet : que necesita Pixel Shaders 3.0 .. y me tira error .. Alguien me podria dar una mano ? pq no entiendo .. si la x330 o x550 supuestamente soporta shaders 3.0 .. o quizas exista algun patch o algo para fixearlo .. muchas gracias .. mi mail es mvaldivia_g@hotmail.com si tienen alguna idea mandenla ahi por favor
     Responder 
Votos: 1 de 1
Saracatunga
Saracatunga
Saracatunga
20/09/2007
2:14:32
#15   Copiate mi post tranqilo .. no problem ¬¬
     Responder 
Votos: 0 de 0
mati
mati
mati
24/09/2007
2:32:04
#16   bueno les cuento mi caso quiero jugar al spider-man 3, tengo todos los requicitos menos uno, tengo la placa ATI RADEON X800 GT y tiene 2.0 Pixel Shaders y Vertex Shaders y el spider pide 3.0 x solo eso cuando pongo el juego no se ve la imagen(pantalla en negro) algunas opciones para que vea el juego??
     Responder 
Votos: 0 de 0
LOco
LOco
LOco
01/10/2007
17:37:28
#17   TIenes que comprar otra targeta de video
     Responder 
Votos: 0 de 0
rykrd0
rykrd0
rykrd0
02/10/2007
7:38:05
#18   bueno px, les explico mazo como es esto del shader en las taejetas ati, para los ke no sepan cuales modelos tiene y cuales no un determinado tipo de shader: Ati radeon 7000<->8000(pixel sahder 1.1) Ati radeon 8500<->9250(pixel shader 1.4) Ati radeon 9550<->x800(pixel sahder 2.0) Ati radeon 1300<->1950(pixel shader 3.0) Ati radeon HD2300<->2900(pixel shader 4.0) asi ke iia saben, ke grafica comprar y cual no, dependiendo de cual sea su necesidad o su economia
     Responder 
Votos: 1 de 1



11/10/2007
20:22:24
#19   Hola Tengo una ati 9200 que compre hace no mucho, y me acabo de dar cuenta que no servia desde hace casi 2 años ya, pues nisiquiera tiene el ps 2.0 Con esto me he percatado de que lo mas importante para ver la compativilidad de la tarjeta grafica con un juego no es la ram si no la version de shader y vertex. Las fabricantes de tarjetas graficas deberian poner mas enfacis en esto... de que me sirve una ati 2250 con 250 mb si solo tiene ps1.4? los 250 mb pesan menos que un popcorn, gracias
     Responder 
Votos: 0 de 2



17/10/2007
3:18:51
#20   instale el truecrime streets of la y me tira el error que no tengo cpacidad 3D y que necesito vertex shaders 1.1 para arriba que es eso ????
     Responder 
 
 
Datos  Login Registrarse
Usuario
   
Email
Website
 
Nuevo comentario:


Tags HTML permitidos: br
 

Síguenos en TwitterAgréganos a tu RSS

 

Autores