A Fondo
Ray tracing o trazado de rayos: todo lo que siempre quisiste saber, pero nunca te atreviste a preguntar
El trazado de rayos, también conocido como ray tracing en una traducción directa al inglés, 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.
Durante todos esos años, el trazado de rayos 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 trazado de rayos.
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 trazado de rayos 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 trazado de rayos 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 trazado de rayos. 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 trazado de rayos?
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 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 trazado de rayos básico. Sin embargo, cuando la calidad del trazado de rayos 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 trazado de rayos. 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.
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.
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.
¿Cómo funciona el trazado de rayos? Rayos, impacto-fallo y colisiones
El trazado de rayos 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.
Con el trazado de rayos 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 trazado de rayos 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.
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 trazado de rayos 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.
La reducción de ruido es fundamental para conseguir una imagen limpia y libre de artefactos, como podemos ver en las dos imágenes situadas justo encima de estas líneas, que nos muestran cómo luce Quake II RTX sin reducción de ruido y con dicha tecnología aplicada. La diferencia es enorme, y os puedo asegurar que en movimiento es mucho más marcada.
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».
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 trazado de rayos activado tu PC tiene que mover más de 8 millones de píxeles y una gran cantidad 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 trazado de rayos. 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?
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 trazado de rayos 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 trazado de rayos 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 trazado de rayos si contamos con una tarjeta gráfica muy potente.
El hardware especializado ha sido clave para permitir que el trazado de rayos 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.
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 trazado de rayos 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 trazado de rayos 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 trazado de rayos híbrido sería viable.
¿Es posible optimizar y jugar con la complejidad del trazado de rayos? ¿Qué ventajas representa?
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 trazado de rayos 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 utilizásemos trazado de rayos 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.
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.
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 trazado de rayos. 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 trazado de rayos 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 trazado de rayos 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 a nivel de calidad gráfica.
Ada Lovelace y el auge del trazado de trayectorias
NVIDIA ha sido la gran pionera del trazado de rayos en juegos, y con la arquitectura Ada Lovelace, presente en las GeForce RTX 40, consiguió nuevos avances que han permitido la llegada del trazado de trayectorias a juegos de la generación actual. Esta tecnología también se conoce como trazado de caminos, y se ha implementado en Cyberpunk 2077 y en Alan Wake 2, aunque de forma limitada debido a lo exigente que resulta.
Ya sabemos cómo funciona el trazado de rayos, es una tecnología que lanza rayos en diferentes direcciones para recrear de forma realista el comportamiento de la luz en una escena. Con ella se calculan fallos y colisiones, y también los rebotes que se producen cuando hay una o más colisiones. El trazado de caminos parte de un enfoque similar, pero se centra en lanzar una mayor cantidad de rayos de inicio y reduce el número total de rebotes si es necesario para minimizar el impacto a nivel de rendimiento.
El trazado de caminos puede utilizar también ecuaciones integrales durante sus diferentes ciclos de trabajo para resolver diferentes situaciones, utilizar muestras de forma óptima y descartar los rayos que no sean necesarios para producir una imagen final de alta calidad. Al tener más rayos de inicio se consiguen resultados muy buenos en diversos aspectos, como por ejemplo en la iluminación y sus rebotes, pero esta técnica puede ser contraproducente en escenas en las que tenemos muchos reflejos y refracciones, porque estas requieren de un mayor número de rebotes, así que será necesario ajustar de forma adecuada el número de rebotes a calcular.
Obviamente también es imprescindible contar con un sistema de reducción de ruido eficiente que sea capaz de hacer frente al cambio que representa el trazado de trayectorias, un desafío al que NVIDIA respondió con la reconstrucción de rayos, tecnología que está integrada en DLSS 3.5 y que marca una evolución enorme frente a los reductores de ruido tradicionales, ya que utiliza IA acelerada por hardware y es capaz de:
- Trabajar con más datos del motor gráfico y utilizar información adicional para mejorar el proceso de reconstrucción de rayos-píxeles.
- Identifica y recoge información de efectos de trazado de rayos diferentes en fotogramas distintos, lo que le da aún más información.
- La IA está entrenada para poder diferenciar de una manera más precisa los píxeles buenos y los píxeles malos, tanto a nivel espacial como temporal.
- Es capaz de retener una alta frecuencia de datos y los aplica al proceso de reescalado. Trabaja también con la imagen reescalada si estamos aplicando NVIDIA DLSS Super Resolution, lo que se mejora en gran medida el resultado final.
Un vistazo a las mejoras que introduce el trazado de trayectorias
Para entender de una manera más clara y precisa cómo mejora el trazado de trayectorias frente al trazado de rayos vamos a ver un ejemplo concreto, Cyberpunk 2077. Este juego fue el primero de la generación actual en contar con esa tecnología, y a día de hoy es el que mejor la utiliza, ya que la aplica de una manera más amplia que Alan Wake 2, el otro gran abanderado del path tacing.
La implementación del trazado de rayos en Cyberpunk 2077 se hizo de una forma muy concreta que podemos ver perfectamente resumida en la primera imagen. El pipeline de renderizado resultaba muy complejo y partía de cuatro grandes fuentes que, además, tenían una presencia limitada tanto en número de rayos como en cantidad total de rebotes (uno por regla general). Al final había que aplicar la reducción de ruido e integrar la iluminación.
Con la integración del trazado de trayectorias el pipeline se reduce de forma drástica como podemos ver en la segunda imagen, y además se introducen mejoras importantes que nos permiten disfrutar de un mayor realismo tanto en la iluminación como en los reflejos y en las sombras. Estas son las más importantes:
- Cada una de las fuentes de luz del juego produce una iluminación más precisa y realista que, además, puede interactuar de forma directa e indirecta con todos los elementos del juego. Esto permite crear sombras y colores más precisos.
- Se aplican ahora múltiples rebotes de rayos que afectan tanto a la iluminación como a los reflejos, lo que permite mejorar el realismo y la precisión con la que se producen ambos efectos gráficos. Los reflejos son sin duda los más beneficiados de este cambio, y estos se renderizan ahora a resolución completa.
- Se ha mejorado la física de la iluminación, ya no es necesario recurrir a la oclusión ambiental tradicional y se eliminación las limitaciones a la hora de generar sombras mediante trazado de rayos, con todo lo que ello supone a nivel de calidad de imagen.
Con el trazado de trayectorias en Cyberpunk 2077 la cantidad de operaciones de trazado de rayos por píxel se incrementa a 635. A efectos comparativos, en Battlefield V dicha cantidad es de solo 39 operaciones por píxel. Obviamente esto tiene un enorme impacto en la calidad de imagen, pero también en el rendimiento. Para compensarlo es necesario activar DLSS 3.5, que integra súper resolución, generación de fotogramas y reconstrucción de rayos.
Esta tecnología marcará el camino a seguir en los desarrollos triple A más ambiciosos, aunque su implementación será lenta y gradual por lo compleja que resulta y lo exigente que es a nivel de rendimiento. Con la llegada de futuras generaciones de tarjetas gráficas, equipadas con núcleos de aceleración de trazado de rayos más potentes, y las mejoras que irá experimentando el uso de la IA aplicada a juegos, es probable que la complejidad del trazado de trayectorias mejore de manera notable, y que sea posible generar cada vez más rayos y más rebotes.
-
GuíasHace 6 días
Qué placa base elegir: Guía de compras para Intel y AMD
-
GuíasHace 2 días
Guía para diferenciar generaciones y gamas de tarjetas gráficas
-
A FondoHace 6 días
Ofertas Flash del Black Friday 2024 de PcComponentes
-
A FondoHace 4 días
GeForce RTX 5050, especificaciones, rendimiento, equivalencias, fecha de lanzamiento y posible precio