En contraposición con los shooter clásicos, renderizados por software o usando hardware corriente de rasterización, para buscar un equilibrio entre calidad de imagen, velocidad y precio, se han llevado a cabo experimentos para desarollar shooters aplicando técnicas de raytracing.
El primer juego con el que se experimentó fue el Quake III, en 1999. El proyecto fue llevado a cabo por la universidad de Saarland, en cooperación con la universidad de Erlangen.
Impresionantes sombras en tiempo real.
El motor del juego se reescribió por completo. Soporta prácticamente el mismo nivel de iteracción y jugabilidad que el juego original, y también es capaz de cargar los mismos mapas y modelos de jugadores. Para implementar raytracing, se ha usado el API de OpenRT. El API en sí es similar a OpenGL, ocultando la implementación del motor de raytracing.
También se rediseñaron algunos modelos del juego original, ya que aplicando raytracing se puede elevar el número de polígonos de la imagen sin observar un cambio dramático en la velocidad de renderización. Por ejemplo, muros que antes estaban formados por dos triángulos, pasaron a construirse con 5,000.
Smooth shadows: La sombra se impregna del color de un objeto semi-transparente.
A diferencia del escenario en el que se aplica comunmente raytracing, es decir, en el renderizado off-line, en este proyecto, el renderizado es en tiempo real. Dadas las exigencias computacionales del raytracing, es necesario utilizar clusters de ordenadores para conseguir mover mínimamente el juego. Por ejemplo, con un cluster de 36Ghz, el framerate todavía se mantiene en los 20fps, aún usando estructuras como el BSP para optimizar la gestión del espacio.
Raytracing por hardware en acción.
Sin embargo, es interesante apuntar a una alternativa al uso de clusters para renderizar por software en tiempo real usando raytracing. Existe, un pequeño chip, llamado SaarCOR, que implementa autónomamente el algoritmo de raytracing, y que, con un coste de fabricación similar al del hardware de rasterización actual, consigue unos framerates comparables, consumiendo menos recursos del sistema. Todavía es un prototipo, pero ya se ha visto en funcionamiento, y con buenos resultados.
"Somebody called for an exterminator?"
El SaarCOR es el primer dispositivo que consigue por hardware una implementación de raytracing completa, funcional y orientado a renderización en tiempo real. Anteriormente hubo otros modelos, algunos de los cuales salieron al mercado, pero mucho más limitados. Los primeros empezaron por acelerar únicamente el cálculo de intersecciones entre rayos y triángulos, pero la el sistema de acelerar sólo partes del proceso se deshechó bastante pronto, ya que su rendimiento se veía afectado por el cuello de botella del bus del sistema, obligado a mover volúmenes de datos demasiado elevados. Posteriormente, aparecerían los primeros raycasters integrados, pero sólo calculaban rayos primarios, es decir, generaban rayos recursivamente a partir de los primarios. El rendimiento de estos dispositivos se acercaba a cotas interactivas, pero su limitada funcionalidad los hacía inválidos para representar escenas realistas.
El siguiente producto con el que se experimentó la técnica del raytracing aplicado a juegos fue el Quake IV (desarollado por Raven Software, pero utilizando una versión mejorada del motor del Doom III).
Quake IV, desarollado con un motor bastante más potente y exigente que el del Quake III, presenta una complejidad mucho mayor que su precuela, en cuanto a número de triángulos y de luces dinámicas en escena, y en el uso de geometría dinámica.
Rayos aproximando una esfera envolvente alrededor del jugador.
El motor del juego se desarolló tomando como base el motor de Q3RT (lo que permitió reducir el tiempo de desarollo de los 6 meses de Q3RT a 4 meses), pero añadiendo nuevas funcionalidades, como por ejemplo nuevos algoritmos de detección de colisiones empleando también raytracing: para detectar la colisión de un proyectil con su objetivo, basta con trazar un rayo, pero para gestionar las colisiones del jugador con su entorno, es necesario trazar un haz de rayos en forma de esfera alrededor del mismo, como si se tratara de un rádar.
Cálculo de la colisión de un proyectil con un único rayo.
Las marcas de fábrica y los Copyright pertenecen a sus respectivos propietarios.