jueves, febrero 08, 2007

El programa más largo

¿Qué es esto? ¿Más noticias sobre ray tracing? Sí, pero sólo en parte. Es, efectivamente, una imagen producida por un programa de ray tracing, pero el programa ¡está escrito íntegramente en Freya!
Lo que he hecho es traducir el núcleo básico de XSight RT a Freya, buscando errores del compilador, construcciones incómodas para el programador, traducciones ineficientes, y más cosas de este estilo. Los programas que estaba usando como pruebas del compilador no pasaban de dos o tres páginas, y quería probar con un ejemplo más ajustado a la realidad.
En realidad, el programa está empaquetado en sólo 1120 líneas de código, que he agrupado por conveniencia en un único fichero fuente. Puede examinar el fichero siguiendo este enlace:
En la vida real, el código estaría distribuido entre varios ficheros, pero como Hammer maneja de momento sólo un documento por vez, mezclé los ficheros para simplificar la compilación. Cuando Freya esté terminado, utilizará un sistema de proyectos y soluciones muy parecido al de Visual Studio, adicional a las actuales posibilidades del compilador.

¿Qué contiene la prueba, y qué no contiene? La demo puede trabajar con esferas, cilindros y uniones. No he incluído soporte para operaciones de intersección y diferencia, y los materiales son, básicamente, plástico y metal. Claro, el modelo básico ya estaba suficientemente probado con C#, y todo este jaleo me ha llevado menos de un día para escribirlo, probarlo y darle forma definitiva.
¿Y qué tal de velocidad? Primero, una aclaración: la velocidad de XSight RT es similar a la de un ray tracer "nativo", gracias a todo tipo de optimizaciones y a un cuidadoso diseño. En el código de ejemplo en Freya he preferido utilizar construcciones del lenguaje más elegantes que eficientes. Por ejemplo, XSight RT prácticamente renuncia al uso de operadores definidos por el programador, mientras que el ejemplo los utiliza sin reparos. A pesar de ello, los tiempos de ejecución son comparables: un ejemplo que tarda de 80 a 90 milisegundos en XSight RT se genera en Freya en un tiempo que va de 110 a 120 milisegundos.
... aunque también es cierto que el compilador de Freya está especialmente preparado para que genere mejor código que el propio compilador de C#. Ya hablaremos de optimización, en su momento...

Etiquetas:

2 Comments:

Blogger Rox said...

Para cuando un Maya o un 3D Studio Max , jeje el POV ya lo tienes muy logrado.

martes, febrero 13, 2007 10:51:00 a. m.  
Blogger Ian Marteens said...

:) En cualquier momento...

En serio, lo que hace falta es tiempo... o su equivalente: dinero. El compilador todavía tiene "trayectoria", quiero decir, todavía tiene mucho por donde avanzar, pero el ray tracer ya ha llegado al punto en que ampliarlo ya no compensa. Y al compilador, llegado a ese punto, le pasará lo mismo: o aparece un patrocinador, o lo tengo que dejar en barrica de roble.

martes, febrero 13, 2007 12:13:00 p. m.  

Publicar un comentario

<< Home