Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Tutoriales sobre programacion de engines (en castellano)

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

« anterior - próximo »

Emotion

                                Para Klinex:

Vamos a ver... dices lo de OpenGL como si fuera algun tipo de cancer o enfermedad maligna que siega vidas, pero es que Direct3D es justamente eso: un azote en el pompis, ya que para inicializar cualquier cosa, desde un viewport hasta un objeto o una simple mezcla de texturas, tienes que escribir la biblia en verso, y en OpenGL solo escribes lo que necesitas, ya que OpenGL esta mas orientado al hardware.

Ademas, cualquier juego hecho en OpenGL rebasa a sus homonimos de Direct3D como tropecientasmil veces, y el UNICO engine que ha sabido aprovechar las tristes y flagrantes posibilidades de DX es Max Payne.

Por lo demas, nada mas que decir... aunque una pregunta, solo por curiosidad... has probado alguna vez OpenGL?

Saludos.
                               
G3: Get the Power!

Emotion

                                Para Berserker:

Bueno, es cierto que el BSP aun sigue dando mucha velocidad de proceso, pero con las nuevas extensiones de hardware para el vertex streaming como el VAR (Vertex Array Range) de las GeForce o simplemente, listas de visualizacion o arrays de vertices entrelazados ya puedes tranquilamente darle mas 'potencia' al codigo y olvidarte un poco de la velocidad, que para eso estan las extensiones.

De esta manera, es mas facil escribir potentes motores graficos con infinidad de efectos, y aun asi, los sistemas de visualizacion no se ven afectados de manera(normalmente con hacer un buen frustum y un backface culling con las normales convenientemente tratatadas) escandalosa.

El problema es que la mayoria de los desarrolladores se limitan a coger el 3D Studio MAX, hacer un modelo 3D y se lo llevan al motor grafico, y ya esta. Pues NO ESTA. Una de las cosas que se deben hacer es corregir TODOS los vectores normales de los objetos y las superficies. De esa manera, el culling por cara opuesta hace MILAGROS y el frustum es bastante util.

Un saludo.
                               
G3: Get the Power!

Klinex

                                Para Emotion:

Me parece que te equivocas... yo no he dicho que OGL sea una mierda ni na por el estilo (porque si que lo he usado, poco pero lo he usado) lo que pasa que tambien me gustaria aprender a usar Direct3D y me da rabia ver que casi tos los cargadores de MD* son pa OGL. No pretendia iniciar la tipica pelea de OGL vs D3D que ya esta mas que vista ni mucho menos, me gustan los dos y punto, pero ahora quiero aprender tambien de D3D.                                

turrican

                                No creo ni mucho menos que las BSP actualmente no valgan para nada. Si tienes un escenario minimamente grande tendras que discriminar partes de alguna forma, con BSP, portales o lo que quieras y el BSP es una opcion muy valida, y personalmente de las que mas me gustan.
Si ID sigue haciendo juegos basando su tecnologia en BSP sera por algo.
Y si no ponte un escenario de 100000 poligonos e intenta hacer backface culling ya vereis que bien va.

Salu2                                

BeRSeRKeR

                                Emotion:

Es cierto que para el tema del render podríamos pasar del tema de la jerarquización y mirar qué objetos, a través de sus bboxes, bspheres o lo que sea están dentro del frustum y una vez que tenemos esos objetos que son visibles (o parcialmente visibles) hacer un backface culling de las faces de dichos objetos...pero aún así, ¿no sería mejor tener una jerarquización de la escena para decartar esos objetos de una forma mucho más rápida?...lo que quiero decir es que teniendo un sistema por ejemplo de portales tenemos que si estamos en un sector en el que hay un portal a través del cual vemos otro sector, si a través de dicho portal no vemos otro portal quiere decir que aunque el nº de sectores que pudiesen haber (cada uno con los objetos que contuviese) fuese de 1000 pues tan sólo recorreremos 2 (el sector en el que estamos y el sector que vemos a través del portal).

Y lo mismo se puede decir para las colisiones...no es lo mismo averiguar si hemos colisionado con 40 objetos que con 1000...supongo que nos ahorraremos unos cuantos cálculos...

Por otro lado creo que si John Carmack se decidiese a programar en Direct3D, haría engines tan rápidos y buenos como si los hiciese en OpenGL...los programas no son más rápidos o buenos porque se utilice una u otra API sino porque el programador que los haya creado se ha preocupado de que así sea.

Yo personalmente utilizo Direct3D (comencé con OpenGL y lo utilicé durante unos 2 años) y la verdad me ahorro toda la problematica de las extensiones y de tener que reprogramar muchas cosas para cada una de las aceleradoras del mercado (o bueno, por lo menos las GeForce y la Radeon). Porque si OpenGL es portable entre plataformas y sistemas no lo es tanto entre aceleradoras (vale, es cierto que si utilizamos un glVertex pues no nos preocupamos...¿pero a donde vamos con un glVertex?...tu mismo has comentado la extensión Vertex Array Range sólo presente en las GeForce de nVidia). No creo que a nadie se le pase por alto que el sistema de extensiones se está convirtiendo en un lio padre...de ahí que se estén presentando las bases para un nuevo OpenGL...OpenGL 2.0

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


BeRSeRKeR

                                Así es la vida del programador querido Lessman :sonriendo:...un aprender sin fin!!                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Ithaqua

                                Tranqui Lessman, para cuando OpenGL 2.0 se estandarice tu ya habrás pasado una larga temporadita programando la 1.3 :sonriendo:


     Saludos,

          Ithaqua.

http://ithaqua.stravaganza.org
                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org

BeRSeRKeR

                                Quiero dejar claro que no soy un experto en engines o programación 3D (todos los días se aprende) ni quiero parecerlo...pero no creo que lo que digo esté exento de lógica alguna...y si no, ¿por qué todos los juegos que conozco utilizan un VSD?. Así es en el caso de la serie quake y derivados y Unreal (BSP trees), Blade y el tan esperado (por lo menos para mi :sonriendo:) Doom3 (portal rendering)...y no creo que por utilizar por ejemplo un sistema de portales estés limitando la posibilidad de crear cualquier efecto que se te pase por la cabeza siempre y cuando sea posible en el hardware presente.

También quiero dejar otra cosa clara. No quiero que nadie se ofenda con lo que he dicho sobre OpenGL entre otras cosas porque no he dicho ninguna mentira. La cuestión es que ni quiero ni me apetece entrar en una discusión de este tipo porque como han dicho por ahí arriba eso ya está muy visto y todo lo que digamos será repetir una y otra vez lo que ya hemos leído u oído (muchas cosas de personas que en su vida han utilizado Direct3D y que tan sólo se guían por aquel famosísimo plan de Carmack sobre DX3 o 5, no recuerdo...y la verdad, las cosas han cambiado mucho desde aquel entonces). Sólo diré una cosa más sobre el tema...incluso el mismísimo Carmack reconoció la capacidad de la "nueva" versión de Direct3D y no sólo eso sino que además en su último plan también manifestó su disgusto por todo el tema de las extensiones (que si los vertex programs de nVidia no valen en los de ATI y muchas cosas más).

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

Ithaqua

                                Por cierto, sobre el tema de las extensiones OpenGL, y el lío que es inicializarlas y luego utilizarlas...
Yo ahora mismo utilizo el sistema de extensiones que viene con el NVidia OpenGL SDK, y ciertamente es un ahorro de curro increible. Olvidaros de wglGetProcAddress, de definir a mano constantes, de funcionar con punteros...etc
Vaya, que es como si tuvieras el header de OpenGL 1.3 y pudieras utilizar todo ese API mas las extensiones como funciones, solo que chequeas primero si existen (d3dcaps?).
Hace un par de días apareció una noticia en Stratos con algo parecido, no lo probé pero tenía buena pinta ya que soportaba también extensiones de ATI.

Es cierto que el tema de las extensiones está fragmentando OpenGL bastante, pero vamos, no es ningún suplicio usarlas. Quejicas :sonriendo:

Sobre el tema de vertex array range, etc.
Con OpenGL no hay nada mejor que las display lists, y siempre seguirá siendo lo mejor ya que es decirle al driver "toma esta geometría y guárdala de tal forma que la proceses lo mas rápido posible". Cada driver optimizará ese proceso según el hardware, y siempre de la forma mas rápida.
¿Que no vale para geometría dinámica? no, es cierto que no vale, pero la proporción geometría estática/dinámica en una escena es abismal. Aparte de que glDrawElements ya de por sí es rápido, y la extensión de compiled vertex arrays la soportan todas las tarjetas ahora.
Y en el caso de que aún no estés contento, te curras 2 o 3 implementaciones distintas de geometría dinámica con las extensiones mayoritarias y listo. Y si es un lío es porque no tienes bien estructurado el código, pero eso no es problema de OpenGL :ojo:

Joer, vaya charla... lo dejo aquí :sonriendo:

Saludos,

        Ithaqua

http://ithaqua.stravaganza.org
                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org

BeRSeRKeR

                                Ithaqua

Reconozco que hace ya algún tiempo que dejé de utilizar OpenGL y está claro que vosotros (los que lo utilizáis a diario) y no yo sois los que podéis hablar con conocimiento sobre el tema. Pero lo mismo que digo esto también pido que aquel que no haya utilizado Direct3D (a partir de la versión 8) se abstenga de criticar ya que precisamente esas personas son las más radicales, las que lanzan las críticas mas duras y encima muchas de ellas sin sentido y falsas...ahora, si escucho las críticas de una persona como Dracula que ha utilizado intensivamente Direct3D pues me callo porque sé que habla con conocimiento de causa y punto...sin problemas ni rencores porque al fin y al cabo el fin de todo es crear ese engine que tanta ilusión nos hace con este y aquel efecto...y da igual con que medios lo consigamos, ¡el caso es conseguirlo! (bueno y que vaya bien ;))

Un saludo

[ Este Mensaje fue editado por: BeRSeRKeR el 2002-03-14 23:35 ]                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Ithaqua

                                Totalmente de acuerdo :sonriendo:

Saludos,

         Ithaqua


http://ithaqua.stravaganza.org                                
thaqua^Stravaganza
http://ithaqua.stravaganza.org

Drácula

                                Quisiera añadir algo al tema de las optimizaciones.
Hace unos años un amigo mio me dijo, en referencia a la recién salida Voodoo Banshee:
¡Ahora ya no hace falta optimizar, porque las tarjetas son tan rápidas que se lo comen todo!
Yo le miré y le dije:eso no es cierto. Si tu antes utilizabas 500 polígonos para hacer un coche, ahora lo que deberías hacer es utilizar 2.000, pero seguir optimizando, porque así las tarjetas no nos dan velocidad, nos dan calidad.

Pensad en que esta afirmación se hizo hace muchos años, en los que en los juegos 3D que aparecían, lo que más se destacaba era su aspecto gráfico.

Ahora pensad en el presente. ¿se fijan ahora tanto en los gráficos en un juego? Yo creo que no. Hemos superado esta etapa y ahora se fijan mucho en la simulación de la realidad, en la sensación que te proporciona ese juego.

Por ello, creo que si se utiliza un sistema de partición, este debe ir encaminado a que el juego sea más real, y no a que sea más rápido. Si vamos a usar un BSP, nos limita mucho. Si usamos portales tenemos mucha más libertad. ¡Y si no usamos nada pues mejor!(aunque como bien se ha dicho...¡esto tiene un límite!)

Yo por ello estoy en contra de los vertex shaders. Significa limitar para conseguir mejores gráficos. Y no es ese el camino que creo que hay que seguir.

Por cierto, Berserker, gracias por el comentario, pero creeme, no conozco D3D lo suficiente para que digas esto de mi! Sin embargo, espero ansioso el DX9 para volver otra vez a la Scene!

                               
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

Ithaqua

                                No estoy muy de acuerdo en eso de los gráficos, justo en esta etapa :sonriendo:

Y lo de los vertex shaders ya te lo leí una vez. Sigo sin pillarlo :-? Limitar de que modo? si aparte del fixed pipeline te dan la posibilidad de programar tu mismo el pipe. Y esta flexibilidad/potencia irá aumentando cada vez mas. En que sentido te limita?

Happy coding,

        Ithaqua.


http://ithaqua.stravaganza.org                                
thaqua^Stravaganza
http://ithaqua.stravaganza.org

Drácula

                                Hay un artículo en tomshardware que explica esto en más profundidad.
En resumen dice que si tienes que usar un vertex shader con luces, DEBES saber de antemano qué luces le afectan y qué tipo de luces le afectan. Convendrás conmigo que ESTO es limitar.

Pero esperemos a DX9. Aunque probablemente NINGUNA tarjeta soporte sus nuevos shaders! Por lo que la standarización de un juego pasará por..¡no usar 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






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.