Lumen vs Ray Tracing: ¿Es mejor el Ray Tracing?

Unreal Engine 4 de Epic es uno de los motores de juegos más populares. Ha sido ampliamente utilizado por gigantes AAA como EA, Ubisoft y Microsoft, así como por toneladas de estudios independientes. Con Unreal Engine 5 y su Lumen y Nanite tecnologías, Epic busca extender su dominio en la industria de los videojuegos. En esta publicación, comparamos Lumen, la solución de iluminación global utilizada por Unreal Engine 5 con el trazado de rayos convencional, y vemos cómo se comporta.

¿Qué es la iluminación global?

Iluminación global es el proceso de iluminar o iluminar una escena calculando la luz emitida por fuentes luminosas dentro y fuera de la pantalla (mediante aproximaciones o trazando su trayectoria). Con el trazado de rayos y de trayectoria, el rayos de luz se proyectan a partir de estas fuentes, alcanzando varios objetos de la escena e iluminándolos.

Los rayos se comportan de manera diferente según la naturaleza de los objetos encontrados. Por ejemplo, los objetos brillantes (brillantes) reflejar el rayo, mientras que los opacos simplemente bloquear y redirigirlo a otro lugar. Esta redirección de los rayos de luz por objetos en diferentes direcciones se conoce como indirecta o iluminación difusamientras que los rayos redirigidos se denominan rayos difusos.

Iluminación global con trazado de rayos (RTGI)

Estos rayos indirectos o difusos actúan como recién elegido rayos, chocando aún más contra otros objetos e iluminándolos en el proceso, el objeto que los redirige ahora se comporta como una fuente de luz. Cuando el rayo finalmente alcanza el cámara (la pantalla), la información recopilada por ella se utiliza para calcular la iluminación de la escena.

En la mayoría de los casos, el color del rayo está determinado por la color del píxel reflejándolo. Para ahorrar rendimiento, los rayos de luz (datos como color, intensidad, etc.) que inciden directamente en la pantalla se calculan con algoritmos complejos, mientras que el resto de rayos difusos se liberan con ecuaciones más simples.

Entonces, ahora quizás te preguntes cómo se proyectan los rayos a través de la escena y cómo se determina el recuento de rayos. Eso es manejado por sondas que son fuentes de luz colocadas a través de la escena en tiempo de ejecución. Actúan como fuentes puntuales de luz, proyectando rayos e iluminando su entorno. Cada sonda puede emitir uno o más rayos, radialmente.

Los rayos emitidos por estas sondas son trazado y sombreado y los datos como la irradiancia y la distancia a la geometría se utilizan para calcular la iluminación final de la escena. En los títulos iniciales con trazado de rayos, la mayoría de los desarrolladores utilizaban una (o dos) sondas de luz para calcular la iluminación difusa. En el caso de Metro Exodus, se trataba de las texturas del sol y el cielo.

La edición mejorada aumentó el recuento de sondas a 256 fuentes de luz. Por lo tanto, en total, tenías 256 fuentes de luz, además de los rayos del sol y del cielo, todos utilizados para calcular la iluminación de cada píxel. Una pantalla de 1080p tiene 2 millones de píxeles, 4 millones para 1440p y 8 millones para 4K!

Para garantizar que el hardware actual pudiera ejecutar el juego satisfactoriamente, los desarrolladores utilizaron celdas de la cuadricula o clusters para dividir las escenas. Luego, de manera similar a los efectos Screen Space, se invocaron las sondas de luz en el rango (en la cuadrícula) para calcular la iluminación. La principal diferencia es que el espacio de la pantalla está dividido en secciones (dependiendo de su posición en el búfer Z), mientras que aquí el mundo del juego está dividido. particionadoevitando problemas de cobertura similares.

Otra optimización implica acumulando rayos de fotogramas anteriores y usarlos para rebotes de luz difusa adicionales, muy parecido a una mejora temporal. Esto se utiliza para generar la rejilla de iluminación que luego se puede reutilizar en fotogramas consecutivos, permitiendo rebotes casi infinitos de rayos de luz. Básicamente, estás lanzando rayos difusos temporalmente en múltiples fotogramas para reducir el impacto en el rendimiento y hacer que el método sea más factible para su uso en tiempo real.

Unreal Engine 5: Lumen frente a trazado de rayos

Bien, antes de comenzar, dejemos una cosa muy clara. Lumen es una forma de trazado de rayos, aunque más optimizada y flexible para permitir una adopción más amplia en diferentes arquitecturas gráficas sin la necesidad de poseer una GPU de 1.000 dólares.

Lúmenes es el nuevo sistema de reflejos e iluminación global totalmente dinámico de Unreal Engine 5 que está diseñado para consolas de próxima generación. Lumen es el sistema de iluminación y reflejos global predeterminado en Unreal Engine 5. Representa interreflexión difusa con rebotes infinitos y reflejos especulares indirectos en entornos grandes y detallados en escalas que van desde milímetros hasta kilómetros.

De los desarrolladores

De forma predeterminada, Lumen utiliza trazado de rayos por software (no utiliza núcleos RT/aceleradores de rayos). Aprovecha múltiples formas de trazado de rayos, incluido el trazado de pantalla (SSRT), campos de distancia firmados (SDF) y campos de distancia de malla (MDF) en paralelo para calcular la iluminación global de la escena según los objetos, su distancia a la pantalla, y algunos otros factores.

Campos de distancia firmados y campos de distancia de malla

Campos de distancia firmados o los SDF son simplemente vectores de distancia en una dirección particular. Tomemos el siguiente ejemplo para ilustrar esto:

SDF

La cámara emite un rayo que pasa a través de la pantalla y luego se acerca a la superficie circular. Con el trazado de rayos, la parte más importante es descubrir qué rayos inciden en los objetos de la escena y cuáles no. SDF se utiliza más específicamente para descubrir (para un rayo que comienza en una dirección particular) la punto más cercano en la superficie del objeto donde hay una intersección.

Rayo marchando

El circulo verde representa a las SDF. Calcular el SDF implica descubrir qué tan lejos podemos llegar (como mínimo) en su dirección desde un punto del rayo. Se recorre esa distancia y se reevalúa la SDF. Todo este proceso se llama marcha de rayos. En este caso, es un error, por lo que el proceso finaliza después de un número predeterminado de pasos. En caso de impacto, se habría utilizado el SDF para calcular la iluminación.

Lumen utiliza campos de distancia global, campos de distancia de malla y seguimientos de pantalla para calcular la iluminación en el proceso de seguimiento híbrido/software.

Campos de distancia global, campos de distancia de malla y seguimiento de pantalla

Campos de distancia global Son los más rápidos, pero menos precisos. Esto les beneficia, ya que se utilizan para el exoesqueleto abstracto de la escena, como las paredes, el piso y bloques de textura grandes (pero simples) como los cojines. Los campos de distancia de malla son más detallado pero sólo mantiene escasos detalles cerca de la superficie de los objetos. Estos SDF se utilizan con mapas MIP dependiendo de la distancia de los objetos a la cámara.

Seguimiento de pantalla (trazado de rayos en el espacio de la pantalla) es el primer paso en el proceso de lúmenes. Se lleva a cabo contra geometría/objetos en el búfer de profundidad (visible en la pantalla). Esto a menudo se aprovecha para bordes y grietas, esencialmente, geometría donde se proyectan las sombras del espacio de la pantalla (SSAO). Después del rastreo de pantalla, se utilizan SDF. Los primeros campos de distancia de malla se utilizan para los objetos cercanos, seguidos de los campos de distancia global para el resto de la escena.

Campos de distancia de malla (llamado rastreo detallado) se rastrean para los objetos que se encuentran a una distancia de hasta 2 metros de la cámara, mientras que el resto se rastrea utilizando campos de distancia global (llamado rastreo global). Cada uno de los métodos tiene su Representación de vóxeles 2D de cada escena, como puedes ver arriba. Los GDF son menos precisa ya que los trazas contra las siluetas de los objetos, pero son más rápidos que los MDF. La naturaleza y la distancia de los objetos a la cámara los complementan. Los MDF, por otro lado, trazan relativamente baja poli versiones de varios objetos en la escena para calcular la iluminación.

Para acelerar aún más el proceso, Lumen utiliza Caché de superficie. El caché de superficie captura las propiedades geométricas de los objetos desde todos los ángulos y los almacena fuera de línea en forma de una especie de atlas (caché). Las capturas ocurren a medida que el jugador se mueve, en mayor resolución a medida que te acercas y en menor resolución a medida que te alejas de un objeto.

Sin embargo, esto sólo funcionará para mallas con interiores simples. El almacenamiento en caché ocurre para una cantidad limitada de polígonos de objetos (unos cientos de MB de VRAM) y requiere el LOD de varios objetos/secciones para una utilización efectiva.

Desventajas del lumen

Uno de los principales inconvenientes del canal RT del software Lumen es que no funciona con mallas desolladas (principalmente esqueletos), ya que son dinámicos y cambian de forma con cada fotograma (deformaciones/movimiento, etc.). Las estructuras BVH para estos objetos deben crearse para cada cuadro, lo que no es posible con el software ray-tracer de Lumen. Lumen crea los objetos BVH para mallas estáticas solo una vez en tiempo de ejecución, lo que acelera enormemente el proceso pero lo vuelve inútil para mallas dinámicas.

Lumen también viene con trazado de rayos por hardware, pero la mayoría de los desarrolladores se apegarán a lo primero, ya que es un 50% más lento que la implementación del software, incluso con hardware dedicado como los núcleos RT. Además, no puedes tener mallas superpuestas con trazado de rayos por hardware o mallas enmascaradas, ya que ralentizan enormemente el proceso de recorrido de los rayos. El software Ray Tracing fusiona todas las mallas superpuestas en un único campo de distancia como se explicó anteriormente.

En general, Lumen luce fenomenal, pero su principal inconveniente es que es limitado a irreal 5. Esto significa que nunca verá la misma adopción que otras técnicas de código abierto (FXAA, SMAA o incluso TAA). Además, como se desprende de los lanzamientos recientes, los juegos que aprovechan Unreal Engine 5 y sus tecnologías correr muy mal incluso en hardware de alta gama.


Source link

About Miriam Sagarzazu Olaizaola

Blogger desde hace más de 5 años, dedicada a la información tecnológica y adicta a Linux. He convertido mi afición por escribir en mi profesión.

Check Also

AMD solucionó el problema de limitación de STAPM, por lo que volvimos a probar el Ryzen 7 8700G y el Ryzen 5 8600G

Cuando revisamos inicialmente las últimas APU Ryzen 8000G de AMD el mes pasado, Ryzen 7 …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *