Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Iniciacion En Fp, Ps Y Vs

Iniciado por Pogacha, 19 de Agosto de 2004, 10:41:05 PM

« anterior - próximo »

Pogacha

 Prologo:
Que tal, estaba leyendo que Doom3 no usa lightmaps, sino que calcula en tiempo real por medio de los vertex y pixel shaders. Estoy en la etapa de creación de LightMaps de mi motor. Resolvi la compilación de .map, creacion del bsp, precalculo de pvs (al final use un metodo propio, que a mi entender es mejor que varios, no es optimo, pero es mucho mas rapido: Quake 1 . start map . 6 min -Rapido; 13 min -Completo).
Supongo que la radiosidad se pierde, o se usara un metodo indirecto como ambient light clusters y demas. Y me veo muy atrasado en la tecnologia, lo cual me preocupa. Tambien estoy con el tema de shaders para los poligonos y no quiero avanzar mas en algo que esta obsoleto.

Al grano (mi consulta):
Que es necesario para iniciarse en la programacion de Pixel Shaders, Vertex Shaders, Fragment Programs y toda esta rola ?. Principalmente estoy interesado en OpenGl.
Con la pregunta me refiero a hardware (placa de video o demas), y a software (compilador, o no se que usan para esto, he visto que es en tiempo real, supongo a travez de alguna funcion).
Y donde tengo algun tutorial para iniciarme, tengo mucha información pero me confunde.
Gracias


Haddd

 Yo uso D3D. Empecé con los libros ShaderX y ShaderX2. Creo que van a sacar ahora una versión OGL. De todas formas, los shaders son sencillos de entender. Creo que la mayoría de documentación es sobre HLSL, que es una especie de C para programar shaders, puesto que fue el primer standard que apareció. Luego tienes CG de NVidia, que es bastante parecido a HLSL.

Zaelsius

 A mí lo que me echa para atrás de ponerme a "programar shaders" es el gran esfuerzo que hay que realizar para integrarlos con éxito en la cadena de producción..

Me explico: es muy "fácil"(entre comillas) coger un par de modelos, aplicarles iluminación ultramega-estratosférica, bump-mapping y mostrar varios efectos de postproceso.

Lo complicado de verdad a mi parecer es integrar los "shaders" en el sistema de materiales, permitiendo a los artistas(si los tienes) y diseñadores de niveles aplicar esos efectos de manera sencilla y flexible. De poco sirve tener un sistema que te permita aplicar 4 efectos contados y que lo que se salga de ahí se tenga que hacer añadiendo código c++.

Lo que significa esto a nivel de un motor 3d, es que en la mayoria de los casos valga la pena reescribir la mayoria del código de materiales y rendering... mucho trabajo.

En fin Pogacha, mi consejo es que si vas a simplemente "trastear" con shaders no hay problema en hacerte tus Hello World y tus tech-demos(pon capturas aqui :D), pero si lo que tienes en mente es hacer un juego con shaders no te pongas a la tarea de construir un motor de última generación(conclusión previsible pero es que no me canso de advertir XD), a no ser que sea el sueño de tu vida claro está :D.


A mí personalmente me gustaria hacer algun juego con Truevision3d cuando salga la nueva versión para finales de año ó 2005, ya que soportará el uso de shaders de manera (espero)sencilla.

Ogre3D tambien tiene un buen sistema.. pero esta ya es otra historia que se ha comentado en otros hilos.

Pogacha

 Busco mas bien links.

Pero hasta ahora tengo:

Bibliografia:
ShaderX y ShaderX2 (para D3D

Estandares:
HLSL, que es una especie de C para programar shaders
CG de NVidia, que es bastante parecido a HLSL.

Pero navegando encuentro tantas cosas que no se que me sirve o no, y no le encuentro la punta al ovillo, o sea como hago un hello-world?.
Por cierto, SI es el sueño de mi vida, y puedo hacer el quake 3 entero de pies a cabeza, excepto la parte de redes, que no tengo ni idea,  pero eso no sirve necesito ir mas allá, por que cuando lo termine, supongo en un año, estara muy viejo.
Por eso tengo que usar los vertex shaders, en Ogl creo que son vertexs shaders y fragment programs, pero no estoy seguro, veo tantas cosas que no encuentro nada.

Sobre lo que hablas de los efectos contados:
Tengo una idea millonaria, así que no comentar!, hacer un codigo que programe el vertex shader segun los datos de cada efecto!!!  ;) , espero que funque, por cierto, si le sacas un solo mango a esta idea acordate del contrato verval. Ya antes he trabajado con codigo automodificable(del pasado) y codigo autogenerado.

Todavia no sé:

A partir de que placa se pueden programar? (pronto comprare una nueva y esta info me ayuda a elegir)
Cambian de placa a placa?
En Ogl hay que descargarse alguna libreria o se usa con una extension?

Pogacha

 No lo conocia al TrueVision3d, se ven los ¿parallax? shaders.
Lo del ogre3d parece un puente a otro formato no?

Zaelsius

 - En OpenGL se llaman vertex programs(no sé si has escrito mal sin querer) y fragment programs.

- Si quieres programar shaders lo mejor sería adquirir una GeForce 6800, ya que es la que soporta la última revisión del estándar(Shader Model 3.0). No obstante que yo sepa se puede obtener siempre el mismo efecto visual sin perder calidad en tarjetas que soporten el estándar 2.0(aunque los shaders resultantes podrian no ser tan eficientes). Ahora mismo lo más común es programar ciñiéndose al estándar 2.0, haciendo tambien una versión para el estándar anterior 1.4/1.1 cuando es posible(no todo puede hacerse con 1.x).

Algunas compañias(las más importantes) se dan el lujo de hacer versiones optimizadas de algunos programas usando el SM3.0, sólo soportado por las NVIDIA 6800. Es el caso de Far-Cry.

En resumen:

Soportan Shader Model 1.x(no seré muy concreto):

NVIDIA GeForce3
NVIDIA GeForce4(las MX no cuentan)
ATI Radeon 8500 series
ATI Radeon 9000 series

Soportan Shader Model 2.0:

NVIDIA GeForce FX(lentas respecto a ATI en este campo)
ATI Radeon 9500 en adelante(incluyendo la 9550)
ATI Radeon X800 series

Soportan Shader Model 3.0:

NVIDIA GeForce 6800


- Truevision3d permitirá el uso de shaders. El "parallax mapping", "offset bumpmapping" o como lo quieras llamar es un shader más cualquiera. Aunque creo que vendrá uno ya de ejemplo, siempre lo puedes programar tu. En los foros, en el hilo de "Diario de desarrollo" puedes ver varios videos e información varia sobre las capacidades de la próxima revisión del motor.

- No entiendo muy bien que quieres decir con lo de Ogre3d(es un motor open-source más)  :huh:

Sobre el motor "in-house".. tú mismo:  80%(nooo)  + 20%(ole)  jeje

Pogacha

 Lo que he escrito mal es solo de ignorante.
Y sobre el motor, quieres decir que no tengo posibilidades de terminarlo?

Zaelsius

 No lo digo por tu capacidad, lo digo porque es una ardua tarea que para una sóla persona puede llevar 2 o 3 años fácilmente, además es siempre una pena hacer un motor sin que haya luego un juego que demuestre su potencia(más tiempo)...

Es cuestión de gustos/prioridades, pero ponte en el caso de una entrevista de trabajo: suele ser más positivo mostrar un juego terminado con un motor "normalito"(o de terceros) que una tech-demo(aunque tenga un motor completo debajo). En fin yo siempre hablo de como yo lo veo, que intento que casi todo lo que hago me sirva algun dia de muestras para entrar en la industria :rolleyes:

Pero si lo tuyo es la programación de motores, pues adelante.  :)  

Pogacha

 En realidad el proyecto tiene 3 meses, lo que pasa es que estoy haciendo un motor desde que tengo 16 años, y cuando estoy terminandolo  ya es viejo, este ultimo no esta tan mal.
Se muy bien que solo no lo puedo hacer un juego, y mi idea es hacer un FPS-RPG, pero cuando me formo o me uno a un grupo, resultan unos cara de wascas, "si ya lo hago, mañana lo mando ... " , supongo conoceras la historia.
Fondos como para armar una empresa no tengo, pero tengo la esperanza de encontrar gente que quiera trabajar en serio, y sepa algo, del juego, puedo hacer casi todo, el tema es tiempo, solo le de dico 3 o 4 hs por día codeando lo que pense en el día.
Por cierto la MX no sirve.

ethernet

 Yo por mi parte estoy con un ojo puesto en glsl ( http://www.opengl.org/documentation/oglsl.html ) ya que sera integrado en el code de opengl a partir de la 2.0 (que ya ha sido anunciada http://www.sgi.com/newsroom/press_releases...ust/opengl.html ). Estoy esperado a tener una tarjeta que lo soportr para poder hacer alguna cosa

Haddd

 Estoy deacuerdo con Zelsius. Lo realmente difícil es integrarlo en tu engine. Los shaders 3.0 ayudan muchísimo, porque podemos utilizar los codiciados "if" en el pixel shader. Creo que se podrá hacer un shader genérico en 3.0 para integrarlo en un motor. Será un poco lento, a base de tantos "if", pero tendrá la ventaja de que sólo tendremos un shader.

Zaelsius

 
Citar
Pero navegando encuentro tantas cosas que no se que me sirve o no, y no le encuentro la punta al ovillo, o sea como hago un hello-world?.

Con lo del Hello World me refería a hacer algo básico, como un par de quads con iluminación por píxel. La última SDK de DirectX en este sentido está muy bien, hay muchos ejemplos de shaders y técnicas básicas.


Pogacha

 A eso mismo me referia: no sé que es lo basico, por donde empezar.
Por ejemplo, estaba mirando el Ogl Shader Languaje pero me dice ethernet que todavia no esta listo.
Y así es como me pierdo!.
Que es lo mas usado actualmente en Ogl?
Que es lo que se puede usar Ogl?
Que es lo que se va ha usar en Ogl?

Zaelsius

 En OpenGL estoy poco informado... pero

puedes usar Cg de NVIDIA. En un principio sólo funcionaba con tarjetas NVIDIA, no sé si habrá cambiado la cosa(alguien está al corriente?). Cg tambien puede usarse desde DirectX y comparte casi toda la sintaxis con HLSL.

El GLSL de OpenGL 2.0 aun no está disponible, pero es probable que sea el lenguaje de shaders más usado en OpenGL cuando se implante.

Alguien que use fragments programs en GL que hable :rolleyes:  

BeRSeRKeR

 Ahora mismo se puede programar shaders con glsl sin ningún problema en aceleradoras Radeon 9500 o superior y GeForceFX o superior. Aunque no sé si en las de nVidia hay que tocar algo en el registro. Con las ATI puedes utilizarlo sin más.

Eso sí, la implementación del glsl está presente en los drivers más recientes (aunque en los de ATI ya lleva bastante tiempo).

Saludos.
¡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.