Ayer por la noche recibí la confirmación de Gusi de que podía utilizar Managed DirectX en el trabajo a entregar para el cursillo de shaders. Así que claro, más contento que unas pascuas, ya que ahora podría usar mi motor SDE en el que ya tengo implementadas un montón de cosas. Incluso tenía soporte para shaders (algo básico) aún cuando no sabía programar shaders en aquél entonces.
De hecho ahora, sin casi acordarme de nada, me ha resultado muy sencillo de utilizar, así que creo que hice las cosas bastante bien. Ayer monté una escena básica y hoy añadí el cargador de terrenos que me tuve que currar por mi cuenta, porque en C# las cosas son un poco distintas.
Aunque la mayor parte del tiempo la culpa fue de no encontrar tutoriales ni documentación, porque ahora parece que todo cristo se ha pasado a XNA. Sin embargo, en cuanto encontré lo que necesitaba, lo terminé en un suspiro. De hecho ahora cargo el mapa de alturas usando las clases de C# en lugar de cargar una textura de DirectX, así que puedo cargar los tipos de imágen más comunes, y no solo png como hicimos en el cursillo.
Lo que tengo por ahora es una escena sencilla con muchas cosas a mejorar. Solo tengo dos objetos que usan shader (el mínimo de la práctica es 3). Uso un shader de ruido para el agua y otro de post proceso para hacer algo de bloom, aunque es un shader algo cutre, y no se nota mucho.
También tengo algo de aliasing entre el terreno y el plano del océano, aunque solo se aprecia al ampliar la imágen (haced clic en ella para verlo en detalle). Creo que tiene que ver con que el plano lejano de la cámara está demasiado lejos, así que el cálculo de profundidad las pasa canutas. Le he dado vueltas ahora mismo a una solución que puede funcionar, aunque prefiero guardármela hasta ver si funciona.
No está quedando mal, aunque es lo menos que se podía esperar teniendo en cuenta que lo tenía hecho. También he corregido los “tembleques” que tenía la cámara y ahora va más suave (aunque no me termino de creer que se haya resuelto del todo el problema).
- Práctica de shaders (3)
- Práctica de shaders (4)
- ¿Qué es un Fragment?
- ¡Montado en el shader!
- Sistemas de partículas en la GPU
- 19 de Noviembre de 2007 a las 9:41 am
Sickes dice:
Muy chulo.
Oie una duda que tengo desde la practica de gráfica de los coches. ¿El mapa que tienes es infinito?,¿o hay que hacer un mapa grande a huevo? porque en aquella practica al final no supe muy bien como hacer la carretera para que fuera infinita.
Sobre directx managed a ver que me puedes recomendar, que hoy empiezo a ponerme con ello para el proyecto de juego de cartas que tengo. En principio he decidido utilizar directx managed pk el resto del proyecto está en C# y necesito usar algunas de sus clases bases. Estos dias he leido que directx managed ya no tiene soporte y a partir de ahora es sustituido por XNA. Me dará esto algun problema?
Saludos.
Miguel Herrero dice:
En la práctica de gráfica, cuando llegabas a un borde, volvías a aparecer en el otro extremo, el mapa era finito (y bastante pequeño, al menos el mío).
Respecto a qué utilizar en C#… pues no te recomendaría usar MDX, porque ya no tiene soporte. Ahora mismo, a mí me va bien en mi ordenador, pero en el de otro compañero con una NVidia tiene fallos gráficos (intentaré arreglarlo, pero no sé muy bien por dónde van los tiros). Y claro, XNA es mucho cambio.
Puedes optar por usar OpenGL, por ejemplo con el Tao Framework. Yo usaría eso o XNA. Aunque no sé como está el tema de la distribución de ejecutables con XNA (lo que se tendrá que bajar la gente para ejecutar tu proyecto). Hace tiempo era un poco coñazo, pero igual ahora han mejorado ese aspecto.
Yo he usado MDX porque ya lo tenía hecho y me daba pereza volver a hacerlo todo para la práctica de shaders (aparte de que con C++ tardas mucho más en hacer lo mismo).
Sickes dice:
bueno ahora estoy tirando con Mogre a ver que tal sale, por recomendacion de Pablo.
Por cierto, ¿sabes si hay alguna manera de tener en una solucion poryectos en C# y C++ que funcionen conjuntamente? pk si pudiera hacer la parte gráfica en C++ con Directx utilizando las clases ya hechas en C#, estaria muy bien.
Saludos.
Miguel Herrero dice:
No tengo mucha idea de lo de mezclar proyectos de C# y C++, aunque se supone que utilizando Managed C++ podrías acceder a código de C#. Pero no se como





