OpenST

La idea de este proyecto es agrupar en un solo proyecto todo lo necesario para construir aplicaciones de simulación o juegos, evitando cualquier dependencia de librerías externas. OpenST es código abierto bajo la licencia GNU LGPL versión 3.0.

OpenST v12.XX (Fecha de publicación: xx)

(13-Noviembre-2012) OpenST 12.11 Development Versión (Released)

He introducido mejoras y corrección de errores, también añado una adaptación de "NVIDIA OpenGL SDK 10 Code Samples-Cascaded Shadow Maps". Aún queda mucho trabajo por hacer.

(19-Abril-2012) OpenST 12.04 Development Versión (Released)

http://i1378.photobucket.com/albums/ah113/descargator09/floppy4_zps1f0hq27z.gif

Por ahora solo consiste en un cargador y visualizador de modelos de Quake 3, Doom 3 y Obj, pero el proyecto va tomando forma. He conseguido integrar el motor gráfico Gwent.net que ha quedado muy bien, los errores que encontraba en el manejo del menú principal se debían a una errónea conversión desde .net 3.0 (Linq) a .net 2.0.

Todo el código requiere una revisión, pero para hacer esto correctamente es necesario documentar el código ya existente. "Es la pescadilla que se muerde la cola", por falta de tiempo normalmente se genera mucho código no documentado o con documentación mínima y esto influye negativamente en la optimización del mismo.

Lo ideal sería a partir del código existente dedicar dos o tres meses a documentarlo y optimizarlo, ¡pero demonios! yo lo que quiero es ver correr a estos guerreros en un terreno y luchando entre ellos.

El próximo objetivo: Terrain + (Octree ó Quadtree) + Frustum Culling

Los modelos incluidos no son de mi propiedad y los distribuyo solo con fines educativos.

OpenTK Models Loader&Viewer

(14-Abril-2012) Ahora todos los modelos se cargan desde un único programa. He utilizado Gwen.net para el interface gráfico y ha quedado muy bien, aunque el menú necesita una revisión.

Las cajas de volumen ahora se pueden representar en los modelos OBJ y MD3, para los modelos MD5 aún queda trabajo por hacer.Cuando consiga esto y arregle alguna que otra cosa que no funciona muy bien publicaré el código fuente del cargador para que la gente empiece a hacer sus pruebas con los modelos.¡Los modelos MD5 se ven realmente bien!OpenTK Quake 3 Model Loader & Viewer

(27-Marzo-2012) Añadido el soporte de carga y visionado de modelos de Quake 3, incluyendo animaciones. Ha sido bastante fácil, nada que destacar. He comprendido que hasta que no pueda interpolar las animaciones utilizando la GPU no tiene sentido utilizar VBOs, por lo tanto, para este tipo de modelos solo utilizo "vertex arrays".

(22-Marzo-2012) Acabo de descubrir que hay una diferencia abismal entre ejecutar el programa en modo de depuración "debug" y en modo "release". En modo debug solo consigo unos 36 fps (frames por segundo) y en modo release obtengo unos 264 fps. Para mi sorpresa también he podido constatar que cuando se trata de actualizar los datos del modelo en cada frame de renderizado utilizar "Vertex Arrays" es más rápido que utilizar VBO. A continuación una pequeña tabla con unas pruebas que he hecho (los valores mostrados son aproximaciones).

Para el caso de la tarjeta ATI es curioso comprobar que aunque en la prueba 2 se están actualizando más datos que en la prueba 3 (en la prueba 2 se actualizan todos los datos (vértices, normales, coordenadas de textura y tangentes)), mientras que en la prueba 3 se actualizan (vértices, normales, y tangentes) en cada frame), aún así es más rápido actualizarlo todo usando GL.BufferData() que mapear la memoria hardware. Me imagino que tendrá que ver con la utilización de acceso directo a memoria DMA.

Conclusiones:

Está claro que para poder utilizar este tipo de modelos (md5-doom 3) en un Engine 3D de tiempo real es necesario utilizar la transformación de vértices utilizando la GPU (gpu vertex skinning) o bien utilizar modelos muy simples, o bien utilizar pocos modelos en la escena (que es lo que ocurre en el juego Doom 3).

Por ahora me voy a centrar en la animación por software utilizando "vertex arrays" que es la técnica que ha demostrado ser la más rápida hasta que en un futuro (espero no muy lejano) pueda implementar "GPU Vertex Skinning".

OpenTK Doom 3 Model Loader & Viewer

(20-Marzo-2012) Añadido el soporte de carga y visionado de modelos de Doom 3, incluyendo animaciones. Soporta bump mapping, specular mapping.

Está basado en el trabajo previo de David Henry's homepage.

Aparte de limpiar el código, tengo que resolver el problema de un bajo ratio de

frames por segundo. En mi computadora con tarjeta gráfica ATI solo consigo unos 36 frames por segundo, en una tarjeta NVIDIA (ver imagen) unos 116 frames por segundo. En el código original se consiguen unos 450 frames por segundo utilizando "vertex pointer arrays".

Yo estoy utilizando VBO que actualizo cada frame, quizás este sea el problema.

OpenTK Alias-Wavefront Model Loader & Viewer

(28-Enero-2012) Esta es la primera "criatura" gestada dentro del proyecto OpenST. Es un cargador y visualizador de modelos *.obj (Alias|Wavefront). Soporta VBO e IBO, y normal mapping. Está basado en el trabajo previo de dhpoware.

En la imagen se aprecia un ratio (frames por segundo) de 178 FPS, este valor es debido al dibujo del texto, al omitir el dibujo del texto se alcanzan unos 930 FPS.

Por ahora el código fuente está muy sucio, las clases relacionadas con el sombreado GLSL aún no las tengo muy claras, como siempre, el código estará disponible cuando esté listo, ¡pronto!.