Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Pixel Y Vertex Shaders

Iniciado por J_F_NASH, 01 de Julio de 2005, 10:03:43 PM

« anterior - próximo »

J_F_NASH

 Acabo de iniciarme con openGL y leo que la forma de transformar (esto es: mover, rotar y escalar [corregidme si me equivoco]) se hace mediante funciones de alto nivel tipo:
glTranslate()
glRotate()
(Claro que tambien puedes hacerlas multiplicando manualmente las matrices. Algo en lo que no me molesto en entrar.)

Luego leo sobre los PxShaders y VxShaders que "toda mi vida" he pensado se utilizaban para efectillos, sombreados y tal y parece que con ellos tambien podemos hacer ¿tranformaciones?.

En caso de que así sea podeis explicar básicamente:
1) ¿Cuales son las diferencias?
2) ¿De cuantas formas podemos mover un polígono en un espacio 3D?
3) ¿Cual es la mas SENCILLA de utilizar?.
4) ¿La mas ventajosa?



S2.

vincent

 La manera de emular el gltranslate i el glrotate seria con los vertex shaders que actuan a nivel de vértice i no con los pixel shaders que actuan a nivel de pixel, es decir, una vez el vértice ya ha sido transformado. Para una introducción rápida puedes leerte este paper de gamasutra http://www.gamasutra.com/features/20030418.../engel_01.shtml

La forma más sencilla ( y más si te acabas de iniciar ) es con los glrotates i gltranslates de toda la vida, que seran igual o más rápidos que hacerlo por shaders ya que toda aceleradora que se precie los implementa por hardware.

Así que de momento no me haria la olla con los shaders y seguiria aprendiendo opengl.

Suerte!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

Lord Trancos 2

 Coincido con vincent en que si te acabas de iniciar en OpenGL no te tires de cabeza a programar shaders.

Respescto a las diferencias.

Los shaders son una tecnologia bastante reciente que REEMPLAZA lo que se conoce como FIXED PIPELINE.

La FIXED PIPELINE no es mas (asi a groso modo) que la forma "estandar" de trabajar para un tarjeta 3D.

Por ejemplo; tu activas una serie de luces y le dices a OpenGL que pinte un poligono. Lo que hara OpenGL sera calcular la luz (el color) de cada uno de los vertices y pintara el poligono usando un sombreado goraud (una simple interpolacion de los colores de los vertices a traves de todo el poligono; una especie de gradiante).

Con la FIXED PIPELINE si tu quieres hacer que la iluminacion no sea por vertice (goraud) sino que sea por pixel (phong), simplemente no puedes (bueno, algun truco guarrillo para simular phong abra).

Los shaders permiten que tu decidas ciertas cosas que antes la tarjeta 3D hacia siempre igual y que no podias alterar (osea la FIXED PIPELINE).

Los vertex shaders te permiten reescribir casi en su totalidad como se transforma un vertice.
Los pixel/fragment shaders te permiten reescribir sobre como se pinta un pixel.

Si usas shaders, tienes que ser tu el que se encarge de decir como se transforman los vertices y como se pintan los pixels. En el ejemplo anterior, por muchas luces que actives, si no escribes en los shaders codigo para "utilizar" las luces, el poligono  no va a salir "iluminado" el solito.

Si todavia no queda claro, aqui tienes un tutorial bastante sencillo sobre GLSL:
http://www.lighthouse3d.com/opengl/glsl/

Viendo los ejemplo creo que te quedará claro como funcionan los shaders.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)






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.