logo de intelIntel presentó recientemente una demostración de sus nuevo procesador gráfico Larrabee, pudiendo realizar exitosamente una demo de Enemy Territory: Quake Wars renderizado con Ray Tracing.

La demo funcionó sobre un equipo con cuatro procesadores Xeon de 2.93Ghz (para ser un total de 16 nucleos), corriendo a 16fps (cuadros por segundo) con una resolución de 720p (1280x720 píxeles). Si, suena como mucha máquina para poco resultado, pero recuerden que hasta ahora era imposible pensar en utilizar la técnica de ray tracing en tiempo real.

Las ventajas del RayTracing frente a los métodos tradicionales de render en tiempo real son enormes. En unos años más sin dudas va a ser la técnica preferida para crear imágenes en tiempo real cada vez más fotorealísticas.

Pero... ¿Qué es el RayTracing?

En los juegos actuales, el proceso para generar un fotograma de pantalla comienza con los modelos 3D de los objetos, siendo cada modelo una lista de polígonos que definen el modelo. El primer paso es seleccionar los polígonos que se ven en pantalla; luego, a cada polígono se le aplica las transformaciones necesarias (si recibe luz, se le aplica un brillo correspondiente con esa luz; si debe mostrar alguna imagen, se le imprime dicha imagen, …), luego se le aplican los escalados y giros necesarios, y por ultimo se imprime en pantalla. En RayTracing, partimos de los pixels de pantalla; para cada pixel, seguimos su línea de visión (la línea que recorrería el rayo de luz que lo "ilumina"), hasta llegar al objeto que "produce" ese rayo de luz. Si, a su vez, el objeto es un espejo o un cristal (es decir, no tiene un color propio, sino que transforma la luz que recibe), entonces continuamos el proceso; seguimos el rayo de luz que indice sobre ese punto del objeto, y así sucesivamente hasta llegar a la fuente original de luz.

Dicho con otras palabras, el RayTracing funciona al reves que las técnicas de rendering convencionales; si en estas el punto de partida es el objeto y llegamos hasta la pantalla, en RayTracing el punto de partida es la pantalla y desde ahí llegamos hasta los objetos. Y aquí es donde reside el problema; en las técnicas de rendering convencionales, partimos de una estructura de alto nivel (la definición del objeto 3D), que vamos descomponiendo en piezas mas pequeñas y simples, hasta llegar a un flujo de números sobre el que hay que realizar operaciones aritméticas; es decir, buena parte del trabajo son algoritmos de bajo nivel susceptibles de ser implementados en hardware, en coprocesadores específicos (las GPUs).

En cambio, en RayTracing todo el trabajo se hace sobre las definiciones 3D de los objetos, lo que implica que todo el proceso son algoritmos de alto nivel para los que es muy dificil crear un hardware específico que produzca una mejora visible del rendimiento. De hecho, para generar las escenas para películas cinematográficas se utilizan granjas enormes de PCs totalmente convencionales, sin ningún tipo de hardware específico.

Imágenes y video

En la nota Video shows ray traced Quake Wars de PC HardwareX hay varias imágenes y un video demostrando el uso de raytracing en Quake 3, Quake 4 y Enemy Territory: Quake Wars. Sumamente interesante ver las reflexiones múltiples y otros trucos hoy imposibles de hacer en tiempo real!

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw