No hay duda que Unreal Engine 5 es el motor gráfico para el desarrollo de juegos de próxima generación por antonomasia. La clave se encuentra en varias de sus nuevas tecnologías incluidas y la forma en la que utilizan el hardware de nueva generación tanto de PC como de consolas de videojuegos. En este artículo os hablaremos de Lumen, su solución para iluminación global.
Lo importante en un juego es que este funcione a una tasa de fotogramas lo suficientemente alta como para que el usuario tenga la sensación de estar ante una escena real en movimiento. Si ya hablamos de la realidad virtual, entonces la necesidad de crear una sensación de presencia exige velocidades más altas. Es por ello que siempre para renderizar una escena en 3D a tiempo real se ha empleado la rasterización como algoritmo. Esta es rápida y funcional, pero tiene un punto débil que es la representación de la luz.
Los límites de la rasterización
Para entender Lumen se ha de entender como Epic ya con Unreal Engine 4 tuvo como desafió de conseguir lo que llamamos iluminación indirecta dinámica o también conocida como iluminación global. El problema de la rasterización se pueden representar perfectamente escenas donde tenemos una fuente directa, sin embargo, no podemos tener una indirecta. Esto hace que se tengan que realizar una serie de trucos visuales en los juegos con tal de conseguir los efectos de la iluminación indirecta.
- Mapas de luces que consisten en renderizar en un servidor de alta potencia la iluminación de la escena desde un punto de la cámara. Dicha información se convierte en una textura que luego se aplicará en la escena. ¿El resultado? La luz no cambia con la posición de los objetos, es falsa.
- Mapas de sombras que consisten en hacer que la GPU renderice la escena como si la fuente de luz fuese la cámara para almacenar solo el mapa de profundidad y usarlo luego como una textura para simular sombras.
- Oclusión ambiental para marcar que puntos se han de ensombrecer o iluminar más.
- Uso de mapas de entorno, incluso cubos de entorno para simular reflejos.
Todo ello viene por el hecho que la rasterización no puede representar el transporte de la luz de manera eficiente, su funcionamiento es como un pintor que utiliza técnicas de color para crear la sensación de iluminación, pero esto supone una limitación de cara a conseguir una mayor fidelidad gráfica.
La representación de los materiales
Históricamente, hemos conseguido representar un material en la rasterización a través de una combinación de texturas y programas shader para manipularlas, los cuales son conocidos como pixel shaders en DirectX y fragment shaders en Vulkan. No obstante, el hecho de que la rasterización no represente bien el comportamiento de la luz sobre los objetos da como resultado una mala representación de los materiales.
En el mundo real cuando la luz incide sobre una bola de metal muy pulido esta no se comporta igual que si pasa por una bola de madera. No podemos olvidar que la refracción es el cambio de dirección y lentitud que experimenta un rayo de luz al pasar de un medio a otro con distinto índice refractivo. Es imposible representar la luz en su comportamiento físico real en una simulación, por lo que hacemos es representarla lo más fuel posible a nuestra percepción.
La idea con la iluminación global y de tecnologías como Lumen es la de tener una representación de los materiales fidedigna a nuestra percepción en el mundo real simulando como cada material emite la luz de manera indirecta.
¿Qué es Lumen?
Lumen no es más que lo que llamamos un algoritmo de Ray Tracing por software, pero tal nombre da a la confusión debido a que la primera conclusión que se saca de ello es que se trata de un programa en la CPU realizando el trazado de rayos cuando no es así. En realidad cualquier GPU puede ejecutar el algoritmo a través del software que ejecutan sus núcleos, los cuales son llamados programas shader. El problema al igual que en la rasterización viene de un punto en concreto, el cálculo de la intersección entre los rayos y la escena.
La solución a nivel de hardware ha sido añadir una pequeña pieza de hardware en cada uno de los núcleos de la GPU para efectuar dicha tarea, el problema es que permiten utilizar el Ray Tracing como ayuda a la rasterización, para ejecutar una serie de efectos de iluminación global muy simples. Además, el trazado de rayos al contrario de la rasterización requiere el uso de estructuras de datos en árbol complejas, lo que reduce enormemente la velocidad en la que se pueden ejecutar el cálculo de las intersecciones.
Así pues la solución de Epic pasa por un sistema que no use tal estructura de datos y ahí es donde se encuentra la clave. Dado que en realidad el algoritmo se ha diseñado para consolas de nueva generación, que si bien disponen de unidades especializadas en ejecutar los cálculos de intersección, tienen una serie de dificultades por limitaciones de la arquitectura RDNA 2.
¿Es mejor Lumen que el Ray Tracing?
La respuesta es directamente no, y esto no lo decimos nosotros, sino la propia Epic y es que el nivel de precisión en la iluminación global que se puede conseguir con Lumen es limitado, ya que hemos de tener en cuenta que se trata de una solución diseñada para la creación de videojuegos, donde la velocidad de renderizado es clave. Por lo que a nivel de detalle no es tan bueno, pero hay partes en Lumen igualará al Ray Tracing y, por tanto, será preferente a este al ser más ligero de ejecutar y necesitar menos recursos de nuestro sistema.
PS5, Xbox Series y RDNA 2: limitaciones
La apuesta de AMD por el Ray Tracing ha llegado con la arquitectura RDNA 2, la cual han conseguido colocar en muchos lugares y donde uno de los caballos de batalla ha sido precisamente la implementación de esta tecnología dentro de sus GPU dos años después de que lo hiciese NVIDIA. No obstante, lo han hecho con ciertas limitaciones en su implementación: el recorrido del árbol BVH que guarda la información de la escena no lo realiza la unidad de intersección.
Esto resulta un recorte enorme en el rendimiento, lo que hace que las RX 6000 tengan peor rendimiento a la hora de aplicar ese tipo de algoritmos. Por suerte en PC cada año sale hardware nuevo, pero, ¿y qué ocurre con las consolas? Esto son un lustro entero con el mismo hardware y las mismas limitaciones en el hardware. De ahí la existencia de Lumen, es una solución para llevar iluminación global a las consolas PlayStation 5, Xbox Series S y Series X sin que su limitada potencia resulte un ahogo para ello.
¿Y qué ocurre en el PC? Lumen va a ser utilizado en multitud de juegos en consola, debido a que Unreal Engine 5 será ampliamente utilizado y esos juegos serán llevados al ordenador con apenas cambios. No obstante el hecho de que sea una tecnología pensada para las limitaciones en Ray Tracing de RDNA 2, esto no significa que sea exclusiva de AMD.