El ray tracing, también conocido como trazado de rayos en una traducción directa al español, es una tecnología que lleva entre nosotros mucho tiempo, tanto que tenemos que remontarnos a los años ochenta para encontrar los primeros trabajos realmente importantes basados en dicha tecnología. Con el paso de los años esta tecnología ha evolucionado, pero su base, y sus objetivos, siguen siendo los mismos.

Durante los últimos treinta años, el mundo de los videojuegos ha experimentado una evolución enorme, sobre todo desde el punto de vista técnico. Esto ha sido posible gracias a la evolución que ha vivido, de forma correlativa, la GPU, un componente que ha sido el pilar central sobre el que se han ido construyendo y asentando todos esos saltos.

En nuestro artículo dedicado a explicar qué es una GPU y qué elementos la forman, tuvimos la oportunidad de dar un pequeño repaso a esa evolución que nos llevó del sprite al triángulo, y también vimos otros saltos importantes que han quedado marcados en la historia de los motores gráficos, como por ejemplo la utilización de una profundidad de color de 32 bits, la introducción de la transformación e iluminación por hardware o el debut de los motores de sombreado unificados.

Ray tracing en Metro Exodus. Logra una iluminación global altamente realista.

Durante todos esos años, el ray tracing siempre estuvo ahí, es decir, podía haberse implementado en los videojuegos desde el momento en el que se produjo la llegada de las aceleradoras 3D de consumo general, pero no lo hizo porque se trata de una tecnología muy exigente, tanto que, incluso hoy, que disponemos de tarjetas gráficas tan potentes como las RTX 3090 y la RX 6900 XT, todavía no podemos dar forma a un juego con un alto grado de complejidad a nivel de geometría basado por completo en ray tracing.

Pensad, por un momento, en Quake 2 RTX. Este título mantiene la base del original, lo que significa que la complejidad de su geometría es la propia de un título de la segunda mitad de los años 90. Esa base tan modesta ha hecho que sea posible aplicarle ray tracing a un nivel tan completo que el juego luce de maravilla, incluso a pesar de esas limitaciones a nivel de geometría que hemos mencionado.

Sin embargo, el ray tracing que integra dicho juego es tan exigente que una tarjeta gráfica tan potente como la GTX 1080 Ti supera los 1000 FPS en Quake 2 trabajando con resolución 1080p, pero ronda entre los 10 y los 13 FPS cuando activamos el ray tracing. Impresionante, ¿verdad? Este sencillo ejemplo nos ayuda a entender el enorme impacto que puede tener el trazado de rayos en un juego.

¿Qué es exactamente el ray tracing?

Un vistazo a algunas de las posibilidades que ofrece el ray tracing

Podemos definirlo como un método de renderizado que permite recrear, de forma realista, el comportamiento de la luz al interactuar con diferentes objetos. No quiero entrar en definiciones teóricas profundas, ya que creo que solo añadirán complejidad al artículo y no os ayudarán a entender de verdad qué es el trazado de rayos, así que con esta explicación tenemos el punto de partida que necesitamos.

Cuando ejecutamos un juego actual, este muestra las imágenes en pantalla que han sido creadas a través de diferentes procesos necesarios para dar forma a la geometría, las texturas, las sombras, la iluminación, los colores y otros elementos secundarios, como el suavizado de bordes y diferentes efectos de post-procesado.

El ray tracing aplicado a sombras puede ser muy exigente, pero cuenta con la ventaja de no tener rebotes.

El rasterizado ha alcanzado un nivel de realismo realmente bueno a día de hoy, tanto que para el ojo menos experto puede ser complicado distinguir una buena rasterización, con efectos de iluminación dinámica y reflejos de espacio de pantalla, de un ray tracing básico. Sin embargo, cuando la calidad del ray tracing se mueve en niveles aceptables, la diferencia que marca es enorme, y también lo es su impacto a nivel de rendimiento.

Cuando se renderiza un juego a través de un proceso íntegro de rasterización, las interacciones que produce la luz, aplicada tanto a iluminación como a sombras y a reflejos, se crean de una forma automatizada y «artística» que carece de ese enfoque realista que ofrece el ray tracing. Es cierto que, gracias a la iluminación direccional de distinta intensidad, a los reflejos de espacio de pantalla y a las mejoras a nivel de sombreado dinámico que se han producido durante los últimos años, el realismo del rasterizado ha mejorado muchísimo, pero no tiene nada que ver con el trazado de rayos.

El ray tracing aplicado a la iluminación global es, sin duda, la implementación más exigente, tanto por cantidad de rayos como por los rebotes.

Vamos a verlo mejor con un ejemplo. En un juego basado en rasterización, la iluminación se puede generar, por ejemplo, mediante mapas de iluminación, que podemos definir como un grupo de texturas que se aplican en momentos concretos para crear un «falso» efecto de iluminación y sombreado. En Quake 2, id Software utilizó este método para conseguir esos efectos de iluminación tan geniales que mostraba la «blaster» al ser disparada.

También es posible recurrir a los mapas de sombras, que toman como punto de partida la cámara del jugador, y determinan qué partes de la escena deberían aparecer con sombreado y cuáles no. Esta técnica es similar a la que utiliza la iluminación directa. Logran resultados bastante buenos, pero se limitan a esa parte visible desde nuestra cámara, a una sección concreta, y no son capaces de reproducir de forma realista la manera en la que la luz interactuaría con todos los elementos de dicha escena.

El ray tracing aplicado a la oclusión ambiental es uno de los tipos menos exigentes.

Cuando hablamos de reflejos, la técnica más utilizada es, como os hemos dicho, la de los reflejos de espacio de pantalla. Dicha técnica, identifica, desde la cámara del jugador, qué elementos están presentes en la escena, determina cuáles de ellos deberían verse reflejados y, como ya están renderizados, los reproduce como reflejo. Puede lograr resultados bastante buenos, pero tiene carencias importantes, ya que no muestra los elementos que no aparecen directamente en pantalla, y no se lleva bien con formas complejas.

El ray tracing aplicado a reflejos es menos exigente, pero también conlleva rebotes en los rayos.

¿Cómo funciona el ray tracing? Rayos, impacto-fallo y colisiones

El ray tracing también parte de la cámara desde la que vemos una determinada escena, pero su funcionamiento no tiene nada que ver con todo lo que hemos dicho anteriormente. Esa cámara está ubicada en una escena en concreto, lo que significa que la geometría de la misma ya está creada, y que por tanto se ha dado un paso previo de gran importancia.

Desde esa cámara se van lanzando rayos dirigidos a los píxeles que forman la escena, y se determina el comportamiento de cada uno de esos rayos en relación con las fuentes de luz que se encuentran presentes en esa escena. Para ello, es necesario calcular los conteos de impacto o fallo, es decir, cuando un rayo impacta o no en un píxel, y también las intersecciones de esos rayos. Como habréis podido imaginar, cuantos más píxeles, más rayos y más intersecciones se utilicen, mayor será la carga de trabajo que generará este paso.

Para contextualizarlo con el ejemplo que hemos puesto al hablar de iluminación directa trabajando bajo rasterización. Dicho sistema de iluminación parte de una fuente de luz concreta, y calcula cómo afecta esa iluminación a los píxeles que encuentra en su camino de forma directa, pero es incapaz de calcular los efectos de iluminación indirecta que se derivarían del impacto de dicha fuente de luz. Por ejemplo, un coche que recibe luz en su puerta tendría un aspecto realista, pero esa luz no se reflejaría de forma indirecta en un elemento cercano, cosa que sí ocurriría en el mundo real.

Los núcleos RT realizan una carga de trabajo muy importante. Turing a la izquierda, Ampere a la derecha.

Con el ray tracing se pueden calcular todas las interacciones que dicha luz producirá en una escena, tanto la directa como la indirecta. También es posible determinar las interacciones que tienen los objetos de una escena entre ellos, utilizando un modelo conocido como «sistema de colisiones», que se basa en un árbol de jerarquía de objetos presentes en la escena basado en cajas de contacto, y que supone otra importante carga de trabajo.

Dicho árbol permite establecer una especie de guion con el que podemos, por ejemplo, identificar cómo interaccionan entre sí los objetos «A», «B», «C» y «D» de una escena. Sí «A» y «C» fuesen una fuente de luz, generarían nuevos rayos e intersecciones, y tendrían una interacción más compleja que el resto de objetos. Estas interacciones también afectan a las sombras y reflejos que se generan entre objetos, no solo a la forma en la que la luz interactúa con ellos.

Color, sombreado y reducción del ruido: la importancia del hardware especializado

La carga de trabajo que supone el ray tracing no termina con el cálculo de los impactos, los fallos, las intersecciones y las interacciones entre objetos en una escena concreta. Cuando hemos completado esos pasos, todavía nos quedan por delante otros dos puntos importantes: la aplicación del color y del sombreado, y la reducción del ruido.

El ray tracing introduce nuevas cargas de trabajo, y la reducción del ruido es, como vemos, muy importante.

A la hora de aplicar el color y el sombreado a toda la escena se tiene en cuenta, como no podía ser de otra forma, todos los cálculos previos realizados por el ray tracing que han determinado las interacciones de la luz con la geometría de la misma. Cuanto mayor sea la profundidad del color y la calidad del sombreado, más impacto tendrá en el rendimiento.

Ya estamos casi a punto de terminar. Tenemos entre manos una imagen que puede presentar una calidad buena, pero es probable que esta muestre un nivel de ruido demasiado elevado, o que venga con pequeños defectos que, al final, pueden afectar de forma severa a la calidad de imagen. Reducir el ruido y pulir esos defectos es el último paso, y es fundamental para lograr una alta calidad de imagen. Normalmente, este paso se completa utilizando algoritmos de reducción de ruido.

Completar todos esos pasos conlleva un importante consumo de recursos, y requiere de un tiempo determinado que viene expresado en milisegundos. Es importante que dicho tiempo se mantenga en unos niveles aceptables, ya que de lo contrario no podremos mantener tasas aceptables de fotogramas por segundo, y podríamos tener problemas serios de «stuttering».

En amarillo el trabajo de los núcleos RT, en verde el de los shaders.

Lo entenderemos mejor con un ejemplo. Para mantener una tasa de 60 fotogramas por segundo, cada fotograma tiene que terminarse en un máximo de 16,66 milisegundos. Esto quiere decir que esos 16,66 milisegundos deben repartirse entre todos los pasos que hemos visto por cada fotograma que queramos generar. ¿No te impresiona? Pues debería, piensa que, cuando juegas en resolución 4K con ray tracing activado tu PC tiene que mover más de 8 millones de píxeles y varios millones de rayos en 16,66 milisegundos para llegar a una tasa de 60 fotogramas por segundo.

El ejemplo anterior nos sirve también para entender por qué las tasas de 30 fotogramas por segundo se han convertido, en muchos casos, en un compañero «inseparable» del ray tracing. En este caso, el «presupuesto» que tiene cada fotograma para ser generado es de 33,33 milisegundos, el doble que en el ejemplo anterior. Los 30 fotogramas por segundo dan un margen más razonable, y más cómodo para el hardware más modesto, por ello no es extraño que las consolas de la generación actual, PS5 y Xbox Series X, tengan que limitarse a mantener 30 fotogramas por segundo cuando utilizan trazado de rayos.

¿Cómo se saca adelante esa enorme carga de trabajo?

Unidades SM, núcleos RT y núcleos tensor trabajando al unísono para reducir el tiempo de renderizado.

Pues gracias al hardware especializado, y también ajustando y optimizando la carga de trabajo, obviamente. A día de hoy, se utiliza un renderizado híbrido en juegos, lo que significa que el rasterizado se mantiene como la base sobre la que se renderiza un juego, y que el ray tracing se aplica de una manera secundaria y limitado, normalmente, a mejorar un aspecto en concreto. Por ejemplo, Battlefield V utiliza trazado de rayos aplicado a reflejos, y Shadow of the Tomb Raider lo aplica en sombras y oclusión ambiental.

Sin embargo, también hemos visto títulos que se atreven a aplicar el  a todos los frentes posibles, como Cyberpunk 2077, que utiliza ray tracing para ofrecer iluminación global difusa, reflejos sombras y oclusión ambiental de alta calidad. El resultado es soberbio, como os contamos en nuestro análisis técnico, pero tiene un impacto muy grande en el rendimiento, y solo es recomendable utilizar la configuración máxima de ray tracing si contamos con una tarjeta gráfica muy potente.

El hardware especializado ha sido clave para permitir que el ray tracing se empiece a utilizar en videojuegos, aunque sea de una manera híbrida. En este sentido, NVIDIA fue la primera en mover ficha con los núcleos RT, un tipo de hardware especializado que comparte espacio a nivel de silicio con los demás elementos de la GPU, y que libera a los shaders, a las unidades de textura y a los motores de geometría de la carga de trabajo asociada al trazado de rayos. Esto es lo que hacen los núcleos RT:

  • Calculan las intersecciones transversales BVH, y las intersecciones rayo-triángulo.
  • Determinan las intersecciones delimitadoras de cuadro y el sistema de colisiones.
  • Los núcleos RT de segunda generación, presentes en las RTX 30 basadas en Ampere, calculan también la interpolación de cada triángulo en el tiempo.

Quake 2 RTX luce de maravilla gracias al ray tracing.

Los núcleos tensor también intervienen en el proceso final, ya que la tarea de reducción de ruido se realiza con el apoyo de estos, algo perfectamente comprensible ya que, como anticipamos, se utiliza un algoritmo de reducción de ruido.

AMD también ha empezado a utilizar hardware especializado en ray tracing con sus Radeon RX 6000, pero la implementación que ha llevado a cabo ha sido distinta a la de NVIDIA, ya que cada núcleo especializado se integra en junto a las unidades de texturizado, dando forma a una estructura de recursos compartidos en la que el sistema no puede trabajar de forma simultánea con operaciones de texturizado y de trazado de rayos, lo que al final acaba afectando al rendimiento.

Sin los núcleos RT, toda la carga de trabajo que implica el ray tracing tendría que realizarse de forma ineficiente combinando todos los elementos que forman una GPU, y el resultado sería terrible, tanto que, como hemos dicho, ni siquiera una potente GTX 1080 Ti podría con Quake 2 RTX en 1080p. Dicho de una forma más simple, sin hardware especializado, ni siquiera ese ray tracing híbrido sería viable.

¿Es posible optimizar y jugar con la complejidad del ray tracing? ¿Qué ventajas representa?

Devil May Cry 5 en PS5 con ray tracing. Sí, eso se supone que es un reflejo generado mediante ray tracing, pero de muy baja calidad.

Quizá te sorpresa, pero así es. Ya te lo hemos adelantado de forma implícita a lo largo del artículo, sobre todo cuando hemos dicho que la complejidad del ray tracing no depende únicamente de la resolución, sino también de los rayos que se generen. A mayor conteo de píxeles mayor carga de trabajo, y a mayor cantidad de rayos por píxel mayor complejidad tendrá la escena.

Un juego que se renderice en 4K tendrá 8.294.400 píxeles. Si utilizamos ray tracing con cuatro rayos por pixel, el resultado sería impresionante, ya que tendríamos 33.177.600 rayos generados en tiempo real, produciendo rebotes, aciertos, fallos e interacciones entre objetos, y tendríamos que completar cada fotograma en 33,33 milisegundos para mantener 30 FPS, o en 16,66 milisegundos para llegar a 60 FPS.

Reflejos generados en Control (PC) con ray tracing de alta calidad. La diferencia con la imagen de Devil May Cry 5 es tan enorme que asusta.

Al bajar el número de píxeles, y la cantidad de rayos por píxel, se reduce de forma drástica la carga de trabajo y la complejidad de la escena, pero también se sacrifica el realismo y la calidad gráfica de la misma, y se aumentan los problemas de ruido durante la fase de coloreado y de sombreado. Con esto en mente, es fácil entender por qué NVIDIA ha apostado con tanta fuerza por el DLSS 2.0, una tecnología sobre la que ya hemos hablado anteriormente, y que como sabemos reduce la resolución de renderizado sin pérdida de calidad de imagen.

Cuando activamos el DLSS 2.0, se combinan varias imágenes renderizadas con entre un 50% y un 67% de los píxeles totales de la resolución nativa seleccionada, y con ellas se crea una imagen de alta calidad que es capaz de mantener el nivel de calidad que obtendríamos con una imagen que contuviera el 100% de esos píxeles. Es mucho más que un reescalado inteligente, es una técnica de reconstrucción de imagen basada en inteligencia artificial que, ciertamente, ha demostrado que es capaz de obrar milagros.

Un vistazo al potencial del DLSS 2.0.

Reducir píxeles y generar menos rayos son dos formas efectivas de reducir la carga de trabajo que representa el trazado de rayos, pero no son las únicas. Con la llegada de Crysis Remastered a PS4 Pro y Xbox One X, y de Control a PS5 y Xbox Series X, hemos podido comprobar que los desarrolladores ya están aceptando sacrificios importantes para suavizar el impacto del ray tracing. Por ejemplo, el primero reduce la distancia de visualización de los objetos limitando el recorrido de los rayos, mientras que Control utiliza trazado de rayos renderizado a la mitad de la resolución del juego, y limita la distancia y la utilización del trazado de rayos en superficies opacas.

¿Y qué hay de sus ventajas? El ray tracing eleva la iluminación, los reflejos, las refracciones, las transparencias y las sombras (en sentido amplio) a un nivel de realismo que es simple y llanamente imposible de alcanzar mediante las técnicas tradicionales bajo rasterización. Dicha tecnología representa un paso importante que debemos dar si queremos llegar al fotorrealismo, y obviamente se ha convertido en el camino a seguir durante los próximos años.

No hay duda de que todavía nos queda mucho que andar, y que el renderizado híbrido con ray tracing va a estar entre nosotros durante mucho tiempo, pero lo importante es que ha llegado para quedarse, y que cuando se implementa cumpliendo unos mínimos logra marcar una diferencia enorme.

Fuente: Muycomputer