Quake 4 usando Ray tracing en tiempo real

Hablar de RayTracing es hablar de secuencias generadas por ordenador que son indistinguibles de la realidad. El inconveniente de esta técnica es que, sus requerimientos de procesador son tan enormes, que cada fotograma requiere varios minutos para generarse. Debido a esto, el uso de esta técnica en videojuegos era impensable, quedando limitada a la industria del cine y a las aplicaciones de CAD. Sin embargo, el incremento en la potencia de los procesadores puede hacer que, en un futuro mas o menos próximo, esta técnica también pueda utilizarse en videojuegos.

En primer lugar, ¿Que 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, que 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 de PCs totalmente convencionales, sin ningún tipo de hardware específico.

Pero las cosas están cambiando; un equipo alemán ha desarrollado openRT, una librería para realizar raytracing en tiempo real, librería que está disponible para descarga. Así, un estudiante llamado Daniel Pohl ha reescrito los motor es de renderización de Quake 3 y Quake 4 para basarse en dicha librería, con lo que estos juegos han pasado a funcionar sobre raytracing. ¿Los resultados? Podemos verlos en estas dos páginas:

Y aquí tenemos los vídeos:


Quake 3 con raytracing


Quake 4 con raytracing

Lo mas impresionante de estas demos no son los juegos en si, sino sus requerimientos: el equivalente a un procesador de 36Ghz; mas concretamente, para efectuar este renderizado se utilizo un cluster de 20 procesadores Athlon-XP. ¿Veremos algún día juegos con RayTracing? Por supuesto, todo dependerá de que se consigan crear tarjetas gráficas específicas; de momento, los creadores de OpenRT han creado saarcor, un coprocesador que implementa el soporte de RayTracing. Según explica, con la ayuda de este chip estas versiones de Quake pueden funcionar en un Athlon-XP convencional.

NOTICIAS RELACIONADAS:

 

 

Related Posts Plugin for WordPress, Blogger...
Widget By Best Accounting Services