Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Vertex and Pixel shader

Iniciado por undol, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

undol

                                Muy buenas

Llevo algunos leiendo documentación acerca de la nueva pipeline de directx 8.1 y lo que podría ser la nueva versión de la 9.

Entre otras cosas he encontrado el concepto de Vertex and Pixel shader. La verdad es que me ha parecido muy interesante y me gustaría compartir con vosotros algunos comentarios al respeto, tambien me gustaría escuchar los suyos !
A modo teórico estas dos herramientas nos permiten programar a un nivel substancialmente muy bajo la pipeline de directx. Microsoft ha desarrollado una Api sobre otra Api, esta layer nos permite dinamizar el trabajo T&L y pixelado sobre la GPU !!!

Esto suena muy bien, pero supongo que como todo tiene sus inconvenientes.

Que passa si una tarjeta no soporta esa tecnología ? se emula mediante software ? si es emulada el coste de trabajo de la CPU puede ser alucinante ???

Hoy en día tengo entendido que solamente un 10% de las tarjetas que corren por los ordenadores personales tienen soportada esa tecnología !! esto limita inicialmente su expansión ??

Puede ser que Directx haya conseguido lo que no ha podido conseguir Opengl con sus famosas extensiones !!


ALguien ha empezado a programar con esa tecnología !!!

Saludos a todos
                               
aludos --{Undol}--

Drácula

                                Bien, yo he comentado algunas cosas sobre los shaders y voy a resumirlas un poco.

Los shaders te permiten llegar al nivel más bajo, sin embargo, en las versiones actuales, TE OBLIGAN a conocer con detalle lo que vas a hacer. Me explico, debes saber por ejemplo, que vas a utilizar 3 LUCES. Sin utilizas menos o más, debes crear un nuevo shader! Esto es..¡irreal! No se puede limitar tanto, es por ello que en la versión 2, por fin incluirán instrucciones de control de flujo, que son IMPRESCINDIBLES.

Sin embargo, puedes utilizar los shaders con tranquilidad, porque son compatibles, puesto que si no existen en la tarjeta, se emulan por CPU BASTANTE BIEN. Lo malo es que a lo mejor utilizas la versión 1.2 del shader, que sólo soportan algunas tarjetas y eso te limita mucho, porque entonces una GForce 3, que tiene GPU, no puede utilizar esta versión del shader y se desperdicia su GPU(no estoy completamente seguro de que la GForce 3 no soporte los 1.2!!)

Pero si tus efectos de Shader no se modifican, que hay muchos efectos a los que no le afecta el entorno(en mi ejemplo las luces), puedes utilizarlo con tranquilidad.

Yo de todas formas esperaré a la versión 9, porque no me gustaría reescribir mis Shaders!!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Grugnorr

                                Cuidadín, los Vertex Shader sí se emulan en la CPU, y a la misma velocidad... Los PixelShaders van más que lentos, si no son soportados por HW, no son utilizables. Las tarjetas actuales desde la Geforce3 y las venideras vienen con ámbos shaders,la Geforce4 con 2 unidades de Vertex Shaders, la nueva de ATi se rumorea que 2 de cada...

Ahora mismo existe el problema de distintas versiones de Shaders... dentro de la misma versión de DX!, pero creo que a partir de las DX9, microsoft vuelve a definir ellos los standares y no las compañías como pasó con los Vertex Shaders 1.4(sólo implementados por ATI).

A la vuelta ya os cuento más opiniones...
Link sobre un libro de Shaders, en plan Game Programming Gems:

http://www.shaderx.com


Byes...
                               
hat the hells!

ProD

                                Respecto a lo de un número determinado de por ejemplo luces... en un shader, decir que existe una aplicación (creo que lo es) llamada nVlink (de nvidia) que te permite enlazar en tiempo de ejecución nuevas características al shader, y la verdad es que parece bastante rápido, por lo menos visto desde el nVidia EffectBrownser, teneis más info de esto en la web de desarrollo de nvidia. Un saludo.
                               
as ideas son capitales que sólo ganan intereses entre las manos del talento

Drácula

                                Cierto, sustituye a los flujos de control, porque..¡lo hace el programador HARDCODE!  Pero sigue existiendo la limitación de la cantidad de instrucciones(que me parece que son 128!!)

Y si sabes que esto va a cambiar TOTALMENTE pronto...¡yo esperaría!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

_Grey

                                El VertexShader se emula solo con D3DDEVTYPE, o no?, perdereis toda la aceleracion por hardware si lo usais.
                               

BeRSeRKeR

                                Efectivamente, como dice ProD, se podrían crear fragmentos de shader cada uno que realizase una tarea determinada (proyectar el vértice, calcular la iluminación del vértice, etc) y después en tiempo de ejecución unir esos fragmentos para crear un vertex shader completo. El problema llega en lo que menciona Drácula y es que el límite de instrucciones por shader es de 128, límite que se me antoja algo corto...esperemos a las DX9 a ver que pasa :sonriendo:

Un saludo
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

                                Bueno para contestar a _Grey, creo que se emula si el procesamiento de vértices es por software (ya se que la GF1 y 2 tienen procesamiento de vértices por hardware pero si eliges un dispositivo de este tipo, al intentar ejecutar el vertex shader se producirá un error)...y si, si utilizas vertex shaders en una aceleradora como GF1 o GF2 las cuales no procesan los shaders por hardware (sino que los emula la CPU) pues pierdes la capacidad de estas aceleradoras de procesar ciertas operaciones a través de la fixed pipeline (vamos que pierdes las capacidades T&L)...pero por lo que dicen, la emulación de los vertex shaders es bastante rápida (no se si tanto como utilizar la fixed pipeline con hardware T&L)...en cambio no ocurre así con los pixel shaders que es totalmente inviable como han dicho por ahi arriba.

Un saludo
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.