Enciende la TV. Activa tu servicio de transmisión favorito. Toma un refresco. Una demostración de la tecnología visual más importante de nuestro tiempo está tan cerca como el sofá de tu sala de estar.
El path tracing ha revolucionado con los medios visuales, impulsado por una explosión en la potencia de computación durante la última década y media.
Incorpora grandes efectos a los éxitos cinematográficos, proyecta luces y sombras sutiles en los melodramas más cautivantes e impulsa el arte de la animación a nuevos niveles.
Aún hay más.
El path tracing ahora está disponible en tiempo real, lo que permite entornos 3D interactivos y fotorrealistas repletos de luces y sombras, reflejos y refracciones dinámicas.
Entonces, ¿qué es el path tracing? La gran idea detrás de esto es increíblemente simple, ya que conecta a los innovadores de las artes y las ciencias durante medio milenio.
¿Cuál Es la Diferencia entre Rasterización y el Ray Tracing?
Primero, definamos algunos términos y cómo se usan hoy en día para crear gráficos interactivos, gráficos que pueden reaccionar en tiempo real a la entrada de un usuario, como en los videojuegos.
La primera, la rasterización, es una técnica que produce una imagen como se ve desde un solo punto de vista. Ha estado en el centro de las GPU desde el principio. Las GPU de NVIDIA modernas pueden generar más de 100,000 millones de píxeles rasterizados por segundo. Esto hace que la rasterización sea ideal para los gráficos en tiempo real, como en los juegos.
El ray tracing es una técnica más poderosa que la rasterización. En lugar de estar limitado a descubrir qué es visible desde un solo punto, puede determinar lo que es visible desde muchos puntos diferentes, en muchas direcciones diferentes. A partir de la arquitectura NVIDIA Turing, las GPU de NVIDIA han proporcionado hardware RTX especializado para acelerar esta computación exigente. Hoy en día, una sola GPU puede rastrear miles de millones de rayos por segundo.
Poder rastrear todos esos rayos hace posible simular cómo se dispersa la luz en el mundo real con mucha más precisión de lo que es posible con la rasterización. Sin embargo, todavía debemos responder a las preguntas: ¿cómo simularemos la luz y cómo incorporaremos esa simulación a la GPU?
¿Qué Es el Ray Tracing? Sigue el Hilo
Para responder mejor esa pregunta, ayuda a comprender cómo llegamos aquí.
A David Luebke, vicepresidente de investigación gráfica de NVIDIA, le gusta comenzar la historia en el siglo XVI con Albrecht Dürer, una de las figuras más importantes del Renacimiento de Europa del Norte, quien utilizó hilos y pesos para replicar una imagen 3D en una superficie 2D.
Dürer hizo que el trabajo de su vida sea unir las matemáticas clásicas y contemporáneas con las artes, para lograr avances en expresividad y realismo.
En 1525, con el Tratado de Medición, Dürer fue el primero en describir la idea del ray tracing. Ver cómo Dürer describió la idea es la forma más fácil de entender el concepto.
Solo piensa en cómo la luz ilumina el mundo que vemos a nuestro alrededor.
Ahora imagina rastrear esos rayos de luz hacia atrás desde el ojo con un pedazo de hilo, como el que usó Dürer, en los objetos con los que la luz interactúa. Eso es el ray tracing.
Ray Tracing para Gráficos por Computación
En 1969, más de 400 años después de la muerte de Dürer, Arthur Appel de IBM mostró cómo la idea del ray tracing se podía llevar a los gráficos por computación, a fin de aplicarla a la visibilidad y las sombras de computación.
Una década más tarde, Turner Whitted fue la primera persona en mostrar cómo esta idea podía capturar la reflexión, las sombras y la refracción, para explicar cómo el concepto aparentemente simple podría hacer posible gráficos por computación mucho más sofisticados. El progreso fue rápido en los siguientes años.
En 1984, Robert Cook, Thomas Porter y Loren Carpenter de Lucasfilm detallaron la forma en que el ray tracing se podía incorporar a diferentes técnicas de filmación comunes, como el desenfoque de movimiento, la profundidad de campo, las penumbras, la translucencia y las reflexiones borrosas, que, hasta ese momento, eran imposibles de lograr en los gráficos por computación.
Dos años más tarde, el profesor Jim Kajiya de CalTech presentó una nueva investigación de siete páginas «La Ecuación de Renderización», que conectaba los gráficos por computación con la física mediante el ray tracing y presentaba el algoritmo de path tracing, que permite representar con precisión la forma en que la luz se dispersa en una escena.
¿Qué Es el Path Tracing?
Al desarrollar el path tracing, Kajiya recurrió a una inspiración poco probable: el estudio de la transferencia de calor radiativa o cómo se extiende el calor en todo el entorno. Las ideas de ese campo lo llevaron a presentar la ecuación de renderización, que describe cómo la luz atraviesa el aire y se dispersa desde las superficies.
La ecuación de renderización es concisa, pero no es fácil de resolver. Las escenas de gráficos por computación son complejas, ya que miles de millones de triángulos son algo común en la actualidad. No hay forma de resolver la ecuación de renderización directamente, lo que llevó a la segunda innovación crucial de Kajiya.
Kajiya demostró que se podían usar técnicas estadísticas para resolver la ecuación de renderización: incluso si no se resuelve directamente, es posible resolverlo a lo largo del camino de los rayos individuales. Si se resuelve a lo largo del camino de suficientes rayos para aproximarse a la iluminación de la escena con precisión, es posible lograr imágenes fotorrealistas.
¿Y cómo se resuelve la ecuación de renderización a lo largo de la trayectoria de un rayo? Con Ray tracing.
Las técnicas estadísticas que aplica Kajiya se conocen como integración en Monte Carlo y datan de los primeros días de las computadoras en los años 40. Desarrollar algoritmos mejorados de Monte Carlo para el path tracing sigue siendo un problema de investigación abierto hasta el día de hoy; los investigadores de NVIDIA están a la vanguardia de esta área y periódicamente publican nuevas técnicas que mejoran la eficiencia del path tracing.
Al reunir estas dos ideas (una ecuación basada en la física para describir la forma en que la luz se mueve en una escena) y el uso de la simulación de Monte Carlo para ayudar a elegir un número manejable de trayectorias de vuelta a una fuente de luz, Kajiya describió las técnicas fundamentales que se convertirían en el estándar para generar imágenes fotorrealistas generadas por computadora.
Su enfoque transformó un campo dominado por una variedad de técnicas de renderización dispares en uno que, debido a que reflejaba la física de la forma en que la luz se movía a través del mundo real, podía poner a trabajar algoritmos simples y poderosos que podrían aplicarse para reproducir una gran cantidad de efectos visuales con niveles impresionantes de realismo.
El Path Tracing Llega a las Películas
En los años posteriores a su introducción en 1987, el path tracing se vio como una técnica elegante, el enfoque más preciso conocido, pero muy poco práctico. Las imágenes en el documento original de Kajiya tenían solo 256 por 256 píxeles; sin embargo, tardaron más de 7 horas en renderizarse en una costosa minicomputadora que era mucho más poderosa que las computadoras disponibles para la mayoría de las demás personas.
Pero, con el aumento en la potencia de computación impulsado por la Ley de Moore, que describió el aumento exponencial de la potencia de computación impulsado por los avances que permitieron a los fabricantes de chips duplicar la cantidad de transistores en microprocesadores cada 18 meses, la técnica se hizo cada vez más práctica.
Comenzando con películas como A Bug’s Life de 1998, el ray tracing se utilizó para mejorar las imágenes generadas por computadora en cada vez más películas. Y en 2006, la primera película con path tracing, Monster House, sorprendió al público. Se renderizó utilizando el software Arnold que fue desarrollado en conjunto en Solid Angle SL (que luego fue adquirido por Autodesk) y Sony Pictures Imageworks.
La película fue un éxito: recaudó más de 140 millones de dólares en todo el mundo. Además, permitió conocer lo que una nueva generación de animación por computación podía hacer. A medida que había más potencia de computación disponible, más películas se basaban en esta técnica, a fin de producir imágenes que a menudo son indistinguibles de las que captura una cámara.
El problema: aún se necesitan horas para renderizar una sola imagen y colecciones de servidores, conocidas como «granjas de renderización», que se ejecutan continuamente para renderizar imágenes durante meses, con el fin de hacer una película completa. Llevar eso a los gráficos en tiempo real daría un salto extraordinario.
¿Cómo Se Ve Esto en los Juegos?
Durante muchos años, la idea del path tracing en los juegos fue imposible de imaginar. Si bien muchos desarrolladores de juegos habrían convenido en que querrían usar el path tracing si tuvieran el rendimiento necesario para los gráficos en tiempo real, el rendimiento estaba tan lejos de lograrse en tiempo real que el path tracing parecía inalcanzable.
Sin embargo, a medida que las GPU continúan creciendo y aumentando, y con la disponibilidad generalizada del hardware RTX, el path tracing en tiempo real está a la vista. Así como las películas comenzaron a incorporar algunas técnicas de ray tracing antes de cambiar al path tracing, los juegos comenzaron a usar el ray tracing de una manera limitada.
En este momento, un número creciente de juegos aplican parcialmente el ray tracing. Combinan las técnicas de renderización tradicionales basadas en la rasterización con algunos efectos de ray tracing.
Entonces, ¿qué significa el path tracing en este contexto? Podría significar una combinación de técnicas. Los desarrolladores de juegos podían rasterizar el rayo principal y, luego, rastrear la iluminación de la escena.
La rasterización equivale a emitir un conjunto de rayos desde un solo punto que se detiene en el primer objeto en donde hace contacto. El ray tracing lo lleva más allá, emitiendo rayos desde muchos puntos en cualquier dirección. El path tracing simula la verdadera física de la luz, que utiliza el ray tracing como un componente de un sistema de simulación de luz más grande.
Esto significa que todas las luces de una escena se toman en muestras estocásticamente, utilizando Monte Carlo u otras técnicas, tanto para la iluminación directa, para objetos o personajes de luz, como para la iluminación global, en salas de luz o entornos con iluminación indirecta.
Para hacerlo, en lugar de rastrear un rayo hacia atrás a través de un rebote, los rayos se rastrearían en varios rebotes, presumiblemente de vuelta a su fuente de luz, tal como lo indica Kajiya.
Algunos juegos ya están haciendo esto y los resultados son impresionantes.
Microsoft ha lanzado un complemento que pone aprovecha el path tracing en Minecraft.
Quake II, el shooter clásico, a menudo un entorno de pruebas para técnicas de gráficos avanzadas, también se puede rastrear completamente, gracias a un nuevo complemento.
NVIDIA tiene mucho más para ofrecer. Además, los desarrolladores de juegos deberán saber que los clientes tienen la potencia de computación que necesitan para experimentar los juegos con path tracing.
Los juegos son el proyecto de computación visual más desafiante de todos: requieren una alta calidad visual y la velocidad para interactuar con los jugadores que realizan acciones rápidamente.
Las técnicas pioneras que se describen aquí llegarán a todos los aspectos de nuestras vidas digitales.
¿Cuál Es el Próximo Paso?
A medida que la potencia de las GPU sigue creciendo, el próximo paso es aprovechar el path tracing.
Por ejemplo, con las herramientas como Arnold de Autodesk, V-Ray de Chaos Group o Renderman de Pixar, y una GPU potente, los diseñadores de productos y los arquitectos usan el ray tracing para generar bocetos fotorrealistas de sus productos en segundos, lo que les permite mejorar la colaboración y omitir la costosa generación de prototipos.
A medida que aumenta la potencia de computación de las GPU, los videojuegos marcan la próxima frontera para el ray tracing y el path tracing.
En 2018, NVIDIA presentó NVIDIA RTX, una tecnología de ray tracing que ofrece la renderización en tiempo real y de calidad cinematográfica para los desarrolladores de juegos.
NVIDIA RTX, que incluye un motor de ray tracing que se ejecuta en las GPU de arquitectura NVIDIA Ampere y Turing, es compatible con el ray tracing a través de una variedad de interfaces.
Además, NVIDIA se asoció con Microsoft para que RTX sea completamente compatible mediante la nueva API DirectX Raytracing (DXR) de Microsoft.
Desde entonces, NVIDIA ha seguido desarrollando la tecnología NVIDIA RTX, ya que cada vez más desarrolladores crean juegos compatibles con el ray tracing en tiempo real.
Minecraft incluso incluye la compatibilidad con el path tracing en tiempo real, lo que convierte el cautivante mundo de bloques en paisajes inmersivos repletos de luz y sombra.
Gracias al hardware cada vez más potente, y la proliferación de herramientas de software y tecnologías relacionadas, aún hay más.
Como resultado, las experiencias digitales (juegos, mundos virtuales e incluso herramientas de colaboración en línea) tendrán las cualidades cinematográficas de un éxito de taquilla de Hollywood.
Así que no te acostumbres. Lo que ves desde el sofá de la sala de estar es solo una demostración de lo que está por venir en el mundo que nos rodea.
- Mira nuestra charla «Avances de la Investigación Hacia el Path Tracing en Tiempo Real» en GTC.
- Para conocer en detalle el ray tracing, lee los libros Ray Tracing Gems y Ray Tracing Gems II.
- Consulta «Renderización Basada Físicamente: De la Teoría a la Implementación» de Matt Pharr, Wenzel Jakob y Greg Humphreys. Ofrece teorías matemáticas y técnicas prácticas para poner en práctica la renderización fotorrealista moderna en el trabajo.
- Accede a los Recursos de NVIDIA para el Desarrollo de Juegos.