¿Los impresionantes gráficos que se ven en los juegos? ¡Es todo mentira! Una mentira muy convincente en la mayoría de los casos, pero, aun así, una mentira. Los desarrolladores de juegos siempre están buscando medios para engañarnos, en el buen sentido. Para que las imágenes que vemos en la pantalla parezcan reales. Sin embargo, todo es falso
Los gráficos en 3D que vemos en los juegos son generados usando una técnica conocida como "rasterización" o "ray tracing", mediante la cual se realiza una proyección de 2D en la pantalla de un ambiente en 3D. Y existe un buen motivo para ello: ¡es un proceso rápido!
A nosotros nos gusta que nuestros juegos funcionen a 60 cuadros (o más) por segundo, por lo que el rendimiento es una cuestión fundamental. No obstante, el proceso de rasterización genera imágenes sumamente simples. Los primeros juegos en 3D eran bastante rudimentarios, tanto en la definición de los objetos (representados con pocos polígonos) como en la riqueza de las imágenes (por ejemplo, con métodos de iluminación que alternaban entre pocos tonos de los mismos colores para indicar sombreado).
Pero también queremos gráficos cada vez más ricos y realistas, entonces, ¿cómo podemos lograr todo lo que queremos? Aquí es cuando entra en juego la mentira.
Con el transcurso de los años, surgieron técnicas cada vez más avanzadas para maquillar nuestros polígonos, como, por ejemplo, texturas de alta resolución, las cuales ya tienen grabados niveles de detalle increíbles. Además, el advenimiento de los "shaders" programables dio lugar a un enorme salto en cuanto a la calidad de las imágenes, ya que aportaron mucho más control y libertad a los desarrolladores para crear efectos cada vez más avanzados.
Los desarrolladores ajustan estos efectos para crear imágenes bonitas y convincentes, pero, de vez en cuando, acabamos encontrando una falla u otra. Continúa siendo algo falso.
Por otro lado, hace bastante tiempo que las películas vienen mostrando imágenes generadas con computación gráfica que nos resultan sumamente realistas. Si volvemos a ver películas como Terminator 2 o la primera de Jurassic Park, notamos que sus efectos especiales son muy buenos, incluso para los estándares actuales.
¿Cómo es posible?
Como no son interactivas, ni necesitan ser procesadas en tiempo real, las películas pueden utilizar una técnica totalmente diferente para generar sus imágenes, conocida como "Ray Tracing" o trazado de rayos.
En lugar de "simplemente" proyectar en qué lugar los polígonos deben aparecer en la pantalla y, luego, aplicar efectos para que queden más lindos, se hace una simulación físicamente correcta del camino recorrido por cada fotón desde su fuente luminosa, rebotando por el ambiente virtual hasta llegar a la "cámara". Así, lo que permitirá determinar el color final para cada píxel es la forma en que cada "rebote" del rayo altere las características de la luz.
Como ya puede imaginar, el resultado es fantástico, ¡aunque es un proceso que demanda un enorme poder de cálculo! Literalmente, se necesitan cientos o miles de computadoras trabajando en simultáneo y, aun así, cada frame demora HORAS en procesarse.
Hacía mucho que soñábamos con el día en que fuera posible usar Ray Tracing en los juegos. Esta técnica está catalogada como el "Santo Grial" de los gráficos en tiempo real. En lugar de tener que desarrollar efectos cada vez más complejos, los cuales pueden no funcionar correctamente en todos los casos (recordemos que los juegos son interactivos) para intentar generar imágenes lindas y realistas, las leyes de la física garantizan que, con Ray Tracing, las imágenes se generan de la misma forma que en el mundo real.
Y parece que este sueño, finalmente, se está haciendo realidad. Lo mejor es que esto no es posible solamente gracias a la potencia de los procesadores actuales. El sueño del Ray Tracing en tiempo real se está haciendo realidad gracias a la creatividad y el esfuerzo de ingenieros de diversas áreas de la industria que apuntan a encontrar formas más inteligentes de usar la técnica y el desarrollo de herramientas para que los desarrolladores de juegos puedan tener acceso a esta tecnología y utilizarla de maneras innovadoras.
Recientemente, NVIDIA y Microsoft anunciaron DirectX Raytracing o, simplemente, DXR. Es una extensión de DirectX 12 que permite, de manera muy simple, trazar rayos dentro del ambiente virtual de los juegos. Todo GPU compatible con DX12 puede usar el recurso, pero la parte más interesante de este anuncio es su integración con la tecnología RTX de NVIDIA.
RTX es el resultado de más de 10 años de desarrollo de tecnologías, algoritmos, compiladores, optimización, etc. para acelerar el procesamiento de Ray Tracing. Quienes trabajen con herramientas profesionales de renderización, como las que se usan en la producción de películas, ya deben haber escuchado hablar de RTX o, por lo menos, de su integración con Optix.
Básicamente, RTX es un "superacelerador de rayos"; recibe los comandos de DXR (y, en breve, también de Vulkan) y realiza su trazado de la manera más rápida y eficiente posible, extrayendo todo el poder de las GPU NVIDIA y aprovechando sus CUDA Cores. Y, ahora, con la arquitectura Volta, también de los Tensor Cores.
Pero esta no es la parte más interesante. Recuerdan que, unos párrafos más arriba, comentamos que el uso de Ray Tracing en tiempo real no se debía al desempeño de las GPU sino a su uso de forma más inteligente. Inteligencia es la palabra clave aquí, pero, específicamente, la inteligencia artificial.
Incluso con el fantástico desempeño de las GPU de la arquitectura Volta, todavía no es posible generar imágenes usando Ray Tracing a 60 cuadros por segundo, por ejemplo.
Es por eso que nuestros ingenieros decidieron abordar el problema desde otro ángulo. En lugar de procesar miles de millones de rayos, podemos usar un número mucho menor, como tan solo un rayo por píxel, y usar la inteligencia artificial para "adivinar" cómo sería la imagen final.
Una imagen generada usando pocos rayos presenta mucho ruido, como una foto sacada en un ambiente con poca luz. Sin embargo, si aplicamos el "AI denoiser" (un filtro de eliminación de ruido basado en inteligencia artificial), la imagen sale nítida y limpia como si hubiese sido procesada trazando miles de rayos por píxel.
No obstante, aun con esa ayuda, todavía no es muy viable generar toda la escena en Ray Tracing. Para crear la imagen de Star Wars que verán debajo, realizada en conjunto por ILM (Industries Light and Magic, responsable por los efectos especiales de las películas), Epic (creadora de Unreal Engine) y NVIDIA, se necesitaron cuatro Teslas V100 interconectadas por NVLINK para generar sus "cinemáticos" 24 fps.
Pero la dupla de DRX y RTX es muy flexible y permite una combinación de técnicas para que los desarrolladores puedan continuar aprovechando al máximo la rasterización e implementar Ray Tracing solamente en algunos efectos, creando gráficos "realmente realistas" (si me permiten el pleonasmo), donde antes se necesitaban trucos estrafalarios para obtener imágenes de alta calidad. Una forma de "mojarse los pies" antes de zambullirse de cabeza en la tecnología.
Específicamente, Ray Tracing se puede usar de manera puntual con excelentes resultados en tres áreas: sombras, "oclusión ambiental" y reflejos.
Las sombras son uno de los "efectos" más pesados de un juego. En el aspecto visual, porque dan una sensación de atmósfera más realista y, además, se trata de uno de los recursos más "caros" en términos de rendimiento.
Las técnicas tradicionales definen los llamados "shadow maps" mapeando la superficie del ambiente del juego para indicar dónde se debe oscurecer más o menos para simular la proyección de las sombras. Es una técnica que funciona bien la mayor parte del tiempo, pero puede sufrir con baja definición y fallas (algunos objetos pueden simplemente no proyectar sombras).
De manera alternativa, al usar Ray Tracing solamente para proyectar las sombras, obtenemos un resultado físicamente correcto sin depender del tiempo de procesamiento que sería necesario para calcular toda la escena.
Lo mismo vale para Ambient Occlusion (u "oclusión ambiental"), las sombras observadas en la intersección de las formas de los objetos. Las técnicas más usadas son del tipo Screen Space, que usan solamente información presente en la pantalla como base de cálculo. Esto tiene una limitación grave: no considera todas las fuentes luminosas del ambiente, sino solo las que se encuentran dentro del ángulo de visión de la cámara.
Por último, esta limitación de trabajar solamente con lo que se encuentra en el radio de visión de la cámara para crear el ambiente es una falla mortal para los reflejos. Actualmente, las superficies reflexivas no pueden mostrar aquello que se encuentra fuera del ángulo de visión de la cámara, lo que disminuye bastante su utilidad.
Al usar, Ray Tracing es posible mostrar reflejos de cosas que están fuera de la pantalla o, incluso, el "reverso" de objetos y personajes que se encuentran en el cuadro, pero vueltos en dirección a la cámara.
Esta demostración de Remedy (creadora de Alan Wake y Quantum Break) explora este aspecto, abusando de superficies reflexivas y mostrando cosas que están fuera del campo de visión de la cámara.
Hasta ahora vimos solo conceptos y demostraciones. ¿Cuándo tendremos juegos que usen estas tecnologías? La respuesta es la siguiente: ¡antes de lo que se imagina! 4A Games, la desarrolladora de la serie Metro 2033, ya confirmó que Metro Exodus utilizará algunos efectos basados en Ray Tracing, y hasta mostró un video de los recursos funcionando dentro del juego:
Muy pronto, otros juegos con lanzamiento próximo también anunciarán soporte a estas tecnologías (¿Durante E3, tal vez?).
Para concluir, el antiguo sueño lejano de poder utilizar Ray Tracing en juegos finalmente se está haciendo realidad. Y todo gracias, no solo al aumento en el poder de cálculo de las GPU (aunque ayuda bastante), sino también a la creatividad de los ingenieros y desarrolladores que buscan formas más inteligentes de usar la técnica.
Nosotros (los jugadores) nos vemos beneficiados con juegos más impresionantes y realistas, y los desarrolladores también, ya que estas técnicas son relativamente simples de implementar y aportan resultados correctos desde el punto de vista físico, mientras que los efectos tradicionales se están volviendo cada vez más complejos y aún no aportan resultados perfectos. Estamos ante un profundo cambio en los juegos y, además de los recursos que comentamos aquí, estamos ansiosos por ver otros usos creativos que los desarrolladores deberán crear de aquí en adelante.
Para facilitar la vida de los desarrolladores, NVIDIA brindará acceso a sus bibliotecas GAMEWORKS para crear sombras, oclusión ambiental y reflejos mediante Ray Tracing. Para más información sobre estas herramientas, visite https://developer.nvidia.com/gameworks-ray-tracing; asimismo, puede ver una demostración de las herramientas en este video:
https://www.youtube.com/watch?v=tjf-1BxpR9c&feature=youtu.be
Acerca de Alexandre Ziebert:
Gerente de Marketing Técnico de NVIDIA para América Latina. Con más de diez años de experiencia en el sector de tecnología, Alexandre Ziebert es especialista en marketing para productos de tecnología, arquitecturas de CPU y GPU, overclocking y underclocking de procesadores. Fue editor de reviews en el ForumPCs de 2007 hasta 2010 y trabajó como Technical Marketing en ASUS entre los años 2011 y 2013. Desde julio de 2013 en NVIDIA, Ziebert es el gerente responsable del marketing técnico de la empresa y trabaja junto con los reviewers que evalúan los productos de la marca.