Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Pogacha en 19 de Agosto de 2004, 10:41:05 PM

Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 19 de Agosto de 2004, 10:41:05 PM
 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

Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Haddd en 19 de Agosto de 2004, 11:42:02 PM
 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.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Zaelsius en 20 de Agosto de 2004, 12:12:43 AM
 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.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 20 de Agosto de 2004, 12:33:38 AM
 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?
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 20 de Agosto de 2004, 12:40:28 AM
 No lo conocia al TrueVision3d, se ven los ¿parallax? shaders.
Lo del ogre3d parece un puente a otro formato no?
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Zaelsius en 20 de Agosto de 2004, 01:06:06 AM
 - 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
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 20 de Agosto de 2004, 01:11:43 AM
 Lo que he escrito mal es solo de ignorante.
Y sobre el motor, quieres decir que no tengo posibilidades de terminarlo?
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Zaelsius en 20 de Agosto de 2004, 01:34:32 AM
 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.  :)  
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 20 de Agosto de 2004, 02:08:22 AM
 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.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: ethernet en 20 de Agosto de 2004, 07:11:09 AM
 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
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Haddd en 20 de Agosto de 2004, 12:23:35 PM
 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.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Zaelsius en 20 de Agosto de 2004, 01:29:55 PM
 
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.

Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 20 de Agosto de 2004, 02:32:18 PM
 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?
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Zaelsius en 20 de Agosto de 2004, 02:57:58 PM
 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:  
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: BeRSeRKeR en 20 de Agosto de 2004, 04:44:53 PM
 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.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 21 de Agosto de 2004, 04:50:34 PM
 Bien, ya mas o menos tengo una idea, gracias. Cuando ponía "vertex shader" o algo así en el google aparecian 300 paginas sobre cosas perifericas o benchmarks o placas con graficos o demos de las capacidades de tal placa y se me enquilomba todo. Si alguien tiene links especificos le agradeceria.

Lo que no sé, es ¿como funcionan?, ¿los drivers de la placa tienen un compilador que compilan los shaders en "tiempo real"?. No entiendo bien esto. ¿Hay que descargarse algo para programarlos?

En el trabajo tengo un PIV pero en casa, donde programo, solo uso un PIII 700 con una Savage 4, lo cual me limita y quiero comprar una placa donde funcionen los shaders y tambien en mi AGP de 4x.

Título: Iniciacion En Fp, Ps Y Vs
Publicado por: _Grey en 21 de Agosto de 2004, 07:50:42 PM
 Bueno reconozco que no he tocado los shaders mas que por la informacion que llega a mis manos, pero quiero aclarar algunas cosas.

Principalmente el problema es que pides informacion para OGL,cuando la mayoria que tiene conocimientos avanzados como para usar shaders en este foro lo hacen con DX.

Los libros que te han nombrado estan bien, pero quiero decir que...:

ShaderX .- Es el primero de la coleccion, con el aprenderas sobre shaders usando la base de DirectX 8.1, y todo lo que toques sera en ASM. Veras como tratarlos desde DirectX, y ademas, tendras un buen monton de shaders explicados. Entre ellos, compresion de informacion en los datos de vertices, y algun efecto de post-procesado.

ShaderX2 .- En realidad son 2 libros, enfocados a las DirectX 9, veras algo de ASM pero en general usa los HLSL, sobretodo cuando te enseña a programarlos. El primero, te enseña a programar shaders, y tiene un par de truquis de shaders. El segundo es una gran coleccion de shaders con trucos de todo tipo. Como nota, decir que se atreven a tocar los Shaders 3.0, cuando aun no estan disponibles, es mas hay otro libro ShaderX3 si no recuerdo mal, que ha salido hace no mucho. No habla mucho de como implementarlos en tus programas DirectX9, un par de paginas, no mas.

Puedes encontrar en Gamedev.net las primeras secciones del ShaderX:
Introduction to Shader Programming Part I: Fundamentals of Vertex Shaders
Introduction to Shader Programming Part II: Programming Vertex Shaders
Introduction to Shader Programming Part III: Fundamentals of Pixel Shaders
Introduction to Shader Programming Part IV: Programming Pixel Shaders

Puedes bajarte desde la web de ATI el Render Monkey. Puede que al principio parezca dificil, pero bueno, carga algun ejemplo y curiosea con el.

Sobre como sera con OGL... ni idea, pero puedes encontrar otros libros con OGL como enfoque, pero no creo que muchos del foro se puedan meter mucho ya en esto.

El equipo que necesitas... bueno, sin duda lo que tienes es algo antiguo (conste que empeze el año con un PIII a 300Mhz  :(  ). Pero bueno, puedes hacerlo por soft, eso si, solo creo factible usar vertex shaders por soft, los pixels shader ignoralos si no pudes hacerlos por hardware.
No soy el mejor para saber que version de shaders soporta cada targeta, pero lo mejor seria una targeta Directx9, quizas seria buena cosa, como minimo una 9500Pro, que segun el mensaje de ZaelSiuS tiene Shaders 2.0, pero con ese equipo me da cierto palo recomendar una targeta asi.
Si tienes pensado ponerte al dia, comprar maquina nueva, en no mucho tiempo, cogete una 6800 de Nvidia para PCI-Express, para cuando salga, con el equipo.
Con el equipo que tienes puedes por lo menos trastear con los Vertex Shaders.

Respecto a lo que dices de :
CitarLo que no sé, es ¿como funcionan?, ¿los drivers de la placa tienen un compilador que compilan los shaders en "tiempo real"?

Los shaders, por supuesto, como cualquier otro programa, se ejecutan a nivel binario. Lo que pasa es que no es extraño cargar el fichero fuente con el codigo, y usar las funciones que da DirectX para compilar el shader, y poder pasarselo asi a la targeta.Pero si se hace esto, es solo al principio, a nadie se le pasa por la cabeza recompilar el shader cada vez que se vaya a usar.

Bueno, creo que tienes material para ponerte un poco al dia e informarte de todo esto, pero si realmente te interesa para OGL, sera algo mas dificil de encontrar cositas.


Saludos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 21 de Agosto de 2004, 09:24:04 PM
 Al toque!!!
Gracias!!
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Minos en 22 de Agosto de 2004, 12:12:15 PM
 Bueno, ahi va la info sobre glsl:

-Libros: el mejor libro que hay sobre el lenguaje es el "Opengl Shading Language" de Randi J. Rost (el principal desarrollador del lenguage en 3dlabs) y esta publicado por la editorial Addison Wesley. (AKA Opengl Orange Book)
Puedes encontrar mas info sobre el libro aqui junto con un capitulo de ejemplo

-Tutoriales: en esta direccion, http://www.clockworkcoders.com/oglsl/tutorials.html,  tienes tutoriales sobre aprender el lenguaje y empezar a hacer algo.

-Mas informacion: dos grandes sitios.

*3DLabs Opengl2.0, 3dlabs es el principal desarrollador del opengl shading lenguaje, en esa pagina tienes multitud de informacion util sobre el lenguaje.
Te recomiendo "OpenGL Shading Language Master Class - March/April 2004" que esta en presentaciones.

*OpenGL.org, aqui mas que nada estan foros donde preguntar dudas que te surjan sobre la marcha, por supuesto tambien puedes preguntar en gamedev,etc

- Programas: pues para empezar a trastear con GLSL y no tenerte que hacer tu un IDE pillate el RenderMonkey 1.5 que lo soporta plenamente, de la pagina de desarrolladores de ATI.  
Si tienes una tarjeta de nvidia que no soporte glsl usa el NVEmulate, no se si ira con ATI.

- Tutoriales sobre opengl avanzados puedes encontrarlos en UltimateGameProgramming y sobre tecnicas avanzadas en Paul's Proyects

Y bajo GLSL , si, los drivers tienen incorporados el compilador del mismo, esto hace que cada drivers pueda exprimir al maximo la tarjeta optimizando el shader para ella al ser compilado.
Normalmente al iniciar tu programa compilas los codigo fuente de los shaders y luego los linkas en programas, que no te confunda este cachondeo de palabras ya que en bajo directx se refieren o aspectos un poco diferentes.

Si necesitas mas info sobre opengl avanzado o glsl no dudes en poner algun post por aqui.

OGL Rulz.  (uoh)  
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Minos en 23 de Agosto de 2004, 12:22:59 AM
 Ah, uno que se me olvidaba, tecnicas avanzadas. http://esprit.campus.luth.se/~humus/

Saludos
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Douch en 23 de Agosto de 2004, 12:35:53 PM
 No se si Minos ha llegado a ponertelo en la info (completita, sí señor) que ha puesto, pero por si acaso dejo aquí el link para descargarte el libro en PDF "The OpenGL Shading Languaje" desde www.opengl.org/.

Es muy completo aunque en un perfecto inglés técnico. "Pesa" poco menos de 1 MB.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 23 de Agosto de 2004, 05:51:18 PM
 Que buena info!. Gacias!

Me acogen las dudas:

Entonces en GLSL solo puede programar para las ATI?

Si hago un fragment program no funcionará en NVIDIA ?

Hay que hacer versiones para una placa y para otra ?


Título: Iniciacion En Fp, Ps Y Vs
Publicado por: BeRSeRKeR en 23 de Agosto de 2004, 06:01:47 PM
 
Cita de: "Pogacha"Entonces en GLSL solo puede programar para las ATI?
También puedes utilizarlo con las tarjetas de nVidia.

Cita de: "Pogacha"Si hago un fragment program no funcionará en NVIDIA ?
Claro que sí funcionará. :)

Cita de: "Pogacha"Hay que hacer versiones para una placa y para otra ?
Si ambas aceleradoras tienen las mismas capacidades no, el fragment shader será el mismo. Otra cosa es cuando no tienen las mismas capacidades. Por ejemplo, mientras que con una aceleradora podrías hacer un efecto en una sola pasada (accedes a varias texturas en el mismo fragment program), con otra aceleradora puede que tengas que dar varias pasadas. En ese caso sí tendrías que tener fragment programs diferentes.

Saludos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 24 de Agosto de 2004, 01:55:43 AM
 Bien tengo como para leer un mes entero.  O_O
Muchas gracias, todavia no tengo claro muchas cosas pero veré si no las puedo resolver leyendo de lo que he descargado.
Muchas gracias!   ;)

Por las dudas:

Que se usa para compilar un shader fuente (.txt)?
Es necesario compilarlo ?
Se genera un codigo objeto despues de compilado?
El programa que lo use debe cargarlo en memoria y usarlo mediante las externciones de tipo ARB_shader ... ?
El NVEmulator hace render por software, ejecuta los shaders por software o que hace ?
El NVEmulator andará en cualquier placa ?

No es necesario responder, pero si alguien la tiene clara ....
Saludos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Minos en 24 de Agosto de 2004, 10:53:35 AM
 
CitarQue se usa para compilar un shader fuente (.txt)?
Si te refieres a compilarlos en tu aplicacion tienes que guardar el texto en memoria y despues llamar a:

shaderID = glCreateShaderObjectARB(shaderType);
glShaderSourceARB (shaderID, numStrings, strings, lengths);
glCompileShaderARB (shaderID);

Una vez echo eso ya tienes el shader compilado

CitarEs necesario compilarlo ?
Pues si, es necesario si lo quieres usar  :P

CitarSe genera un codigo objeto despues de compilado?
Si, pero tu no te enteras de esto ya que bajo OpenGL solo usas ids de los shaders.Despues para hacer un program object tienes que unir varios shaders y linkarlos.

programID = glCreateProgramObjectARB ();
glAttachObjectARB(programID, shaderID);
glAttachObjectARB(programID, shaderID2);
glLinkProgramARB(programID);
// Y para usarlo
glUseProgramObjectARB (programID);

De esta manera podras tener colecciones de funciones y compartirla entre los shaders

CitarEl programa que lo use debe cargarlo en memoria y usarlo mediante las externciones de tipo ARB_shader ... ?
A menos que estes bajo linux con version de opengl 1.5  tienes que usar extensiones ya que windows solo da soporte hasta 1.1

CitarEl NVEmulator hace render por software, ejecuta los shaders por software o que hace ?
El NVEmulator que linkee antes se corresponde a nv30, yo solo lo ha usado para cG y creo que para GLSL no vale, te tendras que pillar la version que emula nv40, se que existe por este pdf:
http://download.nvidia.com/developer/prese...004_NV_GLSL.pdf
el progama te dicen que lo uses en la pag4.
Si tu tarjeta no lo soporta te lo hara por hardware

CitarEl NVEmulator andará en cualquier placa ?
Como te digo mi unica experiencia es con el nv30 para usar cG (de echo en el libro 'The cG Tutorial' te lo traian en el CD), y a mi me funcionó en una gf2MX. No se si ira en mas placas.


Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Minos en 24 de Agosto de 2004, 11:32:40 AM
Cita de: "Minos"
Si tu tarjeta no lo soporta te lo hara por hardware
Digooo, por software  :lol: , si es que escribir rapido..., vaya gazapo!

Por cierto, un poco mas de tiempo para edit please. :(  
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 24 de Agosto de 2004, 03:26:00 PM
 Muchas gracias!

Ese cG que ventajas tiene comparado con el GLSL?

Cual es mas optimo, mas rentable?

Si yo quiero hacer el Doom 3, cual seria el mas recomendable? ( "hacer el Doom 3" :) , tomenlo como ejemplificativo, pero ese tipo de engine )
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: BeRSeRKeR en 24 de Agosto de 2004, 06:30:02 PM
 Si yo utilizase OpenGL me tiraría a por el GLSL sin pensármelo. Más que nada porque Cg es de nVidia y nunca sabes por dónde te pueden salir (posibles incompatibilidades o poco optimizado para aceleradoras ATI). En cambio con GLSL el compilador va incorporado en los drivers de cada fabricante por lo que cada uno lo optimizará lo máximo para sus aceleradoras.

Saludos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 25 de Agosto de 2004, 05:30:48 PM
 En definitiva saco:

Los shaders se escriben, se prueban en una maquina pero se compilan al estilo Java mediante funciones de los drivers de cada placa de cada maquina que este usandolo.

Los mas comunes son:
GLSL: Estandar tipo c de OpenGL, andara en todos lados proximamente.

Cg: Estandar de NVidia, puede que ande mal en el fururo para otras placas - Mejor no

HLSL: Estandar de microsoft, supongo de DirectX, no se nada de este, es estilo ensamblador?

Hay algo mas ?
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: BeRSeRKeR en 25 de Agosto de 2004, 05:59:56 PM
Cita de: "Pogacha"HLSL: Estandar de microsoft, supongo de DirectX, no se nada de este, es estilo ensamblador?
Es otro lenguaje de alto nivel tipo C para shaders como son Cg y GLSL.

Creo que hay algunos lenguajes más pero ahora no los recuerdo. Pero vamos los que más se usan son los 3 de arriba.

Saludos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: boubou en 25 de Agosto de 2004, 07:40:46 PM
 Segun tengo entendido, Cg y HLSL son muy parecidos, no? Corregidme si me equivoco, please :)
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 25 de Agosto de 2004, 09:58:59 PM
 HLSL = High Level Shading Languaje?
No se que son esos que aparecen estilo ensamblador con "mov"s y demas.
Que lenguaje es ese?, este lo veo hasta en la sopa, pero no se cual es (parece el preferido o por lo menos el mas viejo).
De todas formas no tengo problemas de programar ensamblador ( no creo todas las maravillas que promete el GLSL
Bueno prove el NVEmulate en una GF2MX y anda al pelo, lo probe directamente con el counter strike y anda casi perfecto  :blink: , si puse el emulador y despues me fui al icono del cs y doble click y ahhh ... , en un pentium IV 2.4ght ht mother intel y todo de la puta madre con suerte 12 frames por minuto  :lol: , pero anda bien de todos modos, algunos problemitas con el depth buffer para los sprites nomas.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: boubou en 25 de Agosto de 2004, 10:06:45 PM
 Esto con HLSL:

char* env_map=
"float4x4 model_view;"
"float cr=255;float cg=255;float cb=255;float ca=255;"
"float cx,cy,cz;"
"texture cubemap;"

"sampler2D current_tex="
"sampler_state{"


   "MinFilter = Linear;"
   "MagFilter = Linear;"
   "MipFilter = Linear;"
"};"



"samplerCUBE sample_cubo="
"sampler_state{"

"Texture=<cubemap>;"
   "MinFilter = Linear;"
   "MagFilter = Linear;"
   "MipFilter = Linear;"
"};"


"struct mivertice{"

"float3 pos :POSITION;"
"float3 normal : NORMAL;"
"float3 o_pos : POSITION;"
"float3 tex: TEXCOORD0;"

"};"

"struct mivertice2{"

"float4 pos : POSITION;"
"float3 tex: TEXCOORD0;"
"float3 env_tex : TEXCOORD1;"

"};"

"struct mipixel{"

"float4 pix : COLOR0;"

"};"


"mivertice2 vertex_shader(mivertice v_in){"

"mivertice2 v_out;"

"v_out.pos=mul(model_view,float4(v_in.pos,1));"

"float3 v_n=mul(v_in.normal,model_view);"
"v_n=normalize(v_n);"

"float3 v_eye=-normalize(v_in.o_pos);"

"float3 vref=2*dot(v_eye,v_n)*v_n-v_eye;"


"v_out.tex=v_in.tex;"
"v_out.env_tex=vref;"



"return v_out;"


"}"


"mipixel pixel_shader(mivertice2 v_in){"
""

"mipixel p_out;"
"p_out.pix=texCUBE(sample_cubo,v_in.env_tex)*tex2D(current_tex,v_in.tex)*float4(cr,cg,cb,ca);"
"return p_out;"

"}"



"technique envmapping{"

"pass pass0{"

"SrcBlend=SRCALPHA;"
"DestBlend=INVSRCALPHA;"
   "AlphaBlendEnable=TRUE;"

"AlphaArg1[1]=TEXTURE;"
"AlphaArg2[1]=DIFFUSE;"
"AlphaOp[2]=MODULATE;"
"AlphaArg1[2]=CURRENT;"
"AlphaArg2[2]=TFACTOR;"
"Sampler[0]=(current_tex);"
"Sampler[1]=(sample_cubo);"
 
 "VertexShader= compile vs_1_4 vertex_shader();"
 "PixelShader= compile ps_1_4 pixel_shader();"

"}"


"}";


Al nene le guta :).
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 25 de Agosto de 2004, 10:32:46 PM
 OK, HLSL tipo C
Las comillas tambien van?  (asco)  edit: perdon no vi el char * map = {
Y ese que es "ensamblador" que lenguaje es?
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: BeRSeRKeR en 26 de Agosto de 2004, 01:57:20 AM
 
Cita de: "Pogacha"OK, HLSL tipo C
Las comillas tambien van?  (asco)  edit: perdon no vi el char * map = {
Y ese que es "ensamblador" que lenguaje es?
Pues es el lenguaje original de los vertex & pixel shaders. Si quieres programar en ensamblador puedes hacerlo sin ningún problema. Para ver ejemplos puedes descargarte el RenderMonkey y verás tanto ejemplos en HLSL como en ensamblador.

Y con respecto al post de boubou hay que aclarar que eso es HLSL integrado en un archivo de efectos (fx) de Microsoft (Cg tiene el CgFx que es algo similar) y que además, como bien has visto, lo ha especificado como una cadena de texto (de ahi lo de las comillas). Aunque yo preferiría tenerlo en un archivo a parte y así ahorrarme todas esas comillas (que por otra parte no entiendo por qué hay tantas).

Saludos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 26 de Agosto de 2004, 01:25:57 PM
 Lo de las comillas es un misterio, no habre ni sierra llave, y no hay comas  :blink: .
Bien, entonces hay ensamblador, y por ende OpenGL ya lo soportaba ...
Supongo, definitivamente, que esto si varía de placa a placa.

Bien yo creo que se ha dicho todo lo que se tiene que decir para iniciarce en shaders. Si alguien quiere agregar algo ...

Me siento mal por estar tan descolgado de las tecnologias actuales.

A todos muchisimas gracias.
Y prometo mostrar los shaders funcionando en mi motor, cuando funcionen claro! :lol: .

Saludos
Pogacha
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: BeRSeRKeR en 26 de Agosto de 2004, 03:06:06 PM
 
Cita de: "Pogacha"Bien, entonces hay ensamblador, y por ende OpenGL ya lo soportaba ...
Sí, OpenGL también soporta su propio lenguaje ensamblador (supongo que mejor utilizar arb_vertex_program y arb_fragment_program), parecido al de Direct3D.

Cita de: "Pogacha"Supongo, definitivamente, que esto si varía de placa a placa.
No. Si programas por ejemplo en ensamblador de Direct3D o utilizando el arb_vertex_program y el arb_fragment_program en OpenGL, el ensamblador es exactamente igual para una placa ATI que para una nVidia.

Saludos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 26 de Agosto de 2004, 09:57:26 PM
 ¿En la GeForce 440 MX anda el GLSL?
Todo lo que pude sacar de la pagina de la nvidia es que tiene compatibilidad con Ogl 1.3
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Zaelsius en 26 de Agosto de 2004, 11:38:11 PM
 Funcionarán los vertex programs pero no los fragment programs  :(  
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 27 de Agosto de 2004, 12:00:15 AM
 :( , era a lo que podia aspirar.
Donde consigues esa info? :ph34r:
Que placa de bajo costo andarian los fragment programs?

Por cierto:
Era GeForce4 440 MX
Es lo mismo?

La ATI 9500 esta como 170 U$S, puede ser ?
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: BeRSeRKeR en 27 de Agosto de 2004, 12:09:42 AM
 
Cita de: "Pogacha"La ATI 9500 esta como 170 U$S, puede ser ?
Yo tengo una ATI 9600 XT con 256MB (soporta pixel shaders 2.0) y si no recuerdo mal me salió por unos 127€. Creo que es una opción muy muy maja. :)

Saludos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 27 de Agosto de 2004, 12:18:09 AM
 En realidad pretendo algo menor a 80 U$S, no creo que halla, pero no es de avaro, si no que en donde estoy al precio tienes que multiplicarlo por 3.22 y al salario por 0.6  (grrr)
Mas me interesa cuales andan y cuales no, mas rapido o mas lento da lo mismo (relativamente).
Donde consigo info de funcionalidad, o sea, en que placa anda el GLSL o almenos los fragment programs de cualquier tipo. Sino voy aterminar haciendo render por software otra vez  :blink:
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 27 de Agosto de 2004, 12:23:49 AM
 Cuales de estas sirven ?, o como averiguo ?.

01 XFX  G-FORCE 4 MX440  64MB DDR  AGP8X  TV OUT 52,00
02 XFX  G-FORCE FX5200  128MB DDR  AGP8X  TV OUT 79,00
03 ASUS  A9200 SE  ATI  64MB DDR  AGP 8X  TV OUT 63,00
04 ASUS  A9200 SE  ATI  128MB DDR  AGP 8X  TV OUT 75,00
05 ASUS  A9600 SE  ATI  128MB DDR  AGP 8X  TV OUT 122,00
06 ABIT  G-FORCE FX 5200  128MB DDR  AGP 8X  TV OUT 107,00

Saludos
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 27 de Agosto de 2004, 12:33:42 AM
 Las paginas de ATI y nvidia no dicen nada, las de xfx, asus y demas tampoco, no se como saber si sirven o no, ¿que tendrian que decir? ¿ Hay alguna especificacion especial ?.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: BeRSeRKeR en 27 de Agosto de 2004, 01:17:40 AM
Cita de: "Pogacha"Cuales de estas sirven ?, o como averiguo ?.

01 XFX  G-FORCE 4 MX440  64MB DDR  AGP8X  TV OUT 52,00
02 XFX  G-FORCE FX5200  128MB DDR  AGP8X  TV OUT 79,00
03 ASUS  A9200 SE  ATI  64MB DDR  AGP 8X  TV OUT 63,00
04 ASUS  A9200 SE  ATI  128MB DDR  AGP 8X  TV OUT 75,00
05 ASUS  A9600 SE  ATI  128MB DDR  AGP 8X  TV OUT 122,00
06 ABIT  G-FORCE FX 5200  128MB DDR  AGP 8X  TV OUT 107,00

Saludos
Creo que todas las ATI desde 9500 para arriba y GeForceFX 5200 para arriba soportan pixel shaders 2.0

Saludos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 27 de Agosto de 2004, 01:54:49 AM
 Pero alguien sabe donde hay un lugar para averiguar que placas tienen que capacidades?. La 9500 esta lejos de mi presupuesto (anual)
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Zaelsius en 27 de Agosto de 2004, 02:27:58 AM
 Intenta buscar una ATI 9600 (no Pro) o SE, que son versiones algo más lentas que las PRO/XT, pero creo que soportan un par de cosas más que las FX5200, como multiple render-targets(pregunta a Haddd). Aquí las que te comento están por 90-100€ mas o menos.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 27 de Agosto de 2004, 12:14:07 PM
 Parece definitivo ATI 9600, a ver cuanto duele. Ademas de que haller se me pincho el disco duro lo cual son otro 70 u$s mas.
Nadie quiere comprar un higado?
Tiene 23 años de uso, muy buen estado, talvez principio de cirrosis, pero tira como para 10 años mas, intermediarios abstenerse.
Título: Iniciacion En Fp, Ps Y Vs
Publicado por: Pogacha en 27 de Agosto de 2004, 11:03:11 PM
 Haller? cuando es eso?  (nooo)