Blog Personal.

Conceptos Básicos, Futuro

Unreal Engine 5 (I): Lumen

En uno de los artículos de Digital Foundry sobre el Unreal Engine 5 me encuentro con esto:

Es decir, el Unreal Engine 5 si que utiliza un algoritmo basado en el trazado de rayos pero uno en el que la información espacial de la escena no esta ordenada según donde se encuentra la geometría sino que utiliza otra forma d saber donde se encuentra cada objeto.

¿Que significa esto? Bueno, para empezar hay dos formas en el mundo del trazado de rayos de ordenar una escena, para ello tomare como referencia el siguiente paper de 1988 que habla del tema y si, se que ya son 32 años pero esto se sigue utilizando.

La idea es crear un mapa tridimensional, es decir, un cubo en el que colocar la geometría de la escena y eso lo tenemos que poder organizar en forma de árbol.

En el BVH lo que hacemos es primero incluir en un nodo un objeto/modelo entero y luego vamos subdividiendo, podemos ir subdividiendo hasta que la geometría es un solo triangulo aunque dependiendo de las capacidades del sistema la cantidad de niveles de subdivisión será mayor o menor.

La subdivisión espacial no sub-divide el espacio según los objetos que lo ocupan sino de manera regular siempre.Puede subdividirlo de manera binaria (de 2 en 2) y por tanto tirar de un arbol normal. De 4 en 4 y por tanto tirar de un Quadtree e incluso de 8 en 8 y por tanto tirar de un Octree. Laa sudividisiones se pueden hacer infinitamente pero es recomendable solo hasta el objeto más pequeño de la escena.

La idea es que si en la trayectoria un rayo impacta sobre el nodo padre del arbol correspondiente a un objeto (BVH) o un espacio (sub-división espacial) entonces impacta a los hijos. Si no hay nada en esa zona del espacio entonces no hace falta realizar la comprobación. Los siguiente dibujos ayudan a visualizarlo:

En realidad en el arbol tanto del BVH como de la Sub-División Espacial estamos representando la forma en la que viajan los rayos sobre el espacio. ¿

Explicado esto podemos explicar el motivo por el cual Epic dice que no necesita el hardware de aceleración, el motivo de ello es que tanto AMD como Nvidia hacen uso del BVH y no de la sub-división espacial… ¿Pero hace uso el UE5 de la subdivisión espacial o divide la escena según la geometría?

Si UE5 utiiliza la sub-división por geometría… ¿A que viene no utilizar el hardware de intersección? Bueno, el motivo de ello es que tanto Nvidia (A partir de Maxwell) como AMD (A partir de Vega) le hicieron cambios en la unidad de rasterizado. Anteriormente todos los objetos que se enviaban a pantalla eran ordenados al final del pipeline provocando que dos objetos con las mismas coordenadas X e Y pero diferente Z acabasen siendo rasterizados incluso si uno de ellos no es visible, a eso se le llama overdraw. La técnica era que si llegaba un nuevo fragmento con un valor Z mayor que el ya renderizado entonces se descarta pero si aparece uno con un valor Z menor entonces reemplaza al primero.

A partir de Maxwell, Nvidia hizo un cambio (AMD a partir de Vega), lo que haría sería ordenar la geometría de la escena según su posición en pantalla antes de rasterizarlos para posteriormente hacerlo, utilizando estos datos esto permitiría eliminar por completo todos los fragmentos no visibles sin tener que texturizarlos posteriormente.

La información de los fragmentos es es almacenada en la RAM pero se almacena un puntero a cada fragmento en la Cache L2. ¿Y que tiene que ver esto con las unidades de intersección? Pues que estas utilizan el mapa de la geometría generado durante la étapa de rasterizado en exclusiva. Este es el motivo por el cual la demo de Epic no utiliza las unidades de intersección ya que aunque estas creen un BVH de la escena al hacerlo voxelizando la escena las unidades de intersección no pueden acceder a esos datos y funcionar dado que son unidades de función fija.

Obviamente esto no significa que los juego bajo UE5 no vayan a utilizar las unidades de intersección, el uso de Lumen es opcional y tiene el coste adicional de tener que voxelizar la escena y es aquí donde me gustaría comentar algo que mucha gente no tiene en cuenta…

¡Una demo a tiempo real tiene trampa!

El motivo de ello es que no es una demo interactiva donde podamos girar la cámara, esto evita tener que recalcular la voxelización y la estructura de datos espacial. La demo corre en una PlayStation 5 si, pero dejadme deciros que si pudiesemos controlar la cámara entonces hasta una 2080 Ti quedaría en ridículo. No creo que los desarrolladores tiren de Lumen ni se calienten la cabeza cuando existe ya una forma estándar y común por parte de Nvidia y AMD para hacer las intersecciones que además le quita males de cabeza a los desarrolladores.

Esto es todo, tenéis el Discord y los comentarios de esta entrada para comentarla.

0 0 vote
Article Rating
20 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Nitupensis

Entonces cuando dice que la demo tecnica es totalmente jugable mienten? hacia el minuto 16, cuando Geoff Keighley les pregunta. https://www.youtube.com/watch?v=I9vhEm0rjJk mas tarde también indican que aunque sea una demo, no es un juego en desarrollo y que la demo habían realizado para mostrarla en el GDC En twitter creo que fue, o en otra de las entrevistas tengo que revisarlo, comentaron que si no hubiera sido por el covid, la demo hubera sido disfrutable para que los visitantes gdc la probaran en su stand, pero que no podian lanzarla para su testeo publico, como hicieron con las de star… Read more »

nolgan

si eso entendi yo, q la demo era y es jugable 100% y q la ivan dejar probar a todo el mundo en el GDC pero como se cancelo..pues..

Ger

Entonces todo movimiento de cámara está predeterminado en la demo? Incluso cuando al principio activan el modo drone para mover la cámara por la escena y esta sigue activa? No logro entenderlo, una vez calculada la luz y rebotes sobre la geometría de escena debería dar igual desde donde mires (cámara), los cambios que se produzcan de los objetos sería cuando habría que recalcular incidencias lumínicas, no? O me he perdido algo o me he perdido del todo 🤔🙃

Pericoeldelospalotes

La demo es completamente jugable y está en los devkits de ps5.

También han contestado en Twitter diciendo que no es un pasillo de carga de nivel sino que es para ver muchos detalles cerca.

Con ssd y streaming de polígonos no veo por qué necesitarían un pasillo de carga, y menos cuando al volar no se ve popping ni LOD.

jose diaz

Emosido engañado

Snake128

Parece que Epic demuestra quan importante es el SSD para gráficos.

No me puedo imaginar juegos first de la mano de naughty. Dog o guerrrilla

Set

Urian para entender Lumen, debes buscar las tecnicas SSGI(SSRTGI) y Voxel Cone Tracing. Aqui te dejo una de SSRTGI: https://80.lv/articles/ssrtgi-toughest-challenge-in-real-time-3d/ La razon porque no se usa BVH y hardware dedicado, es porque no es una tecnica basada en Ray Tracing puro o geometria, si no combina tecnicas de screen Space y voxel. La SSGI es una tecnica parecida al Ray Tracing, se disparan rayos por pixel desde la camara(patch tracing) pero en ves de utilizar la geometria, se utiliza los datos de profundidad y color de buffer del espacio en pantalla, con ello se puede calcular la oclusión ambiental y… Read more »

Jose Luis Lerma Moreno

parece ser que la demo ya ha sido ejecutada en portátiles
y que es perfectamente disfrutabel en una 2080 de portail (mas o menos una 2060 de sobremesa)@40fps
y que no requiere un SSD super-rápido, que si que mejora la carga pero ya está.
https://twitter.com/blueisviolet/status/1261612791410155520?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1261612791410155520%7Ctwgr%5E&ref_url=http%3A%2F%2Fmeristation.as.com%2Fzonaforo%2Findex.php%3Fapp%3Dcoremodule%3Dsystemcontroller%3Dembedurl%3Dhttps%3A%2F%2Ftwitter.com%2Fblueisviolet%2Fstatus%2F1261612791410155520%3Fs%3D20
en resumen, no hard mágico, el SSD no marca diferencias gráficas y ya hay hard de pc que la corre mejor.

Jose Luis Lerma Moreno

perdón, como no conozco a esta gente, entonces no me creo ná…
he visto una noticia, y digo, mira algo interesante.
ese el es misterX? que felicidad no conocer ni twitter ni ná de eso.

Ger

Uffff, que pesado es blueis violet, y desinformador. Por otro lado, vi ese video, la demo pega tirones importantes y se les cuelga 2 o 3 veces. La transmisión es en vivo, solo dos «cámaras», la que enfoca a los tertulianos y la que pincha la demo que corre en el portátil, mientras muestran demo hay pantalla en pequeño de tertulianos. Dicen en la sinopsis del video que los cuelgues son por saturación de red pero mientras se cuelga la demo la imagen de los tertulianos no así que bueno, difícil de entender.

Nitupensis

es que no se quien se ha inventado que están corriendo la demo en el portatil, lo que hacen es ver el streaming de la presentación via un portátil que conectan a un pantalla la cual observan mientras comentan la presentación que todos vimos (salen hasta los subtitulos de video original mas los chinos en la imagen cunado hablan en ingles), de hecho cuando parece que se cuelga, es porque les falla la recepción del streaming, no que el portatil estuviera ejecutando la demo. xD https://www.bilibili.com/video/BV1kK411W7fK durante el video en un par de momentos habla de que el motor soportara… Read more »

Jose Luis Lerma Moreno

al final en ese enlace: Hello guys from foreign country. I want to do a little translation. 52:57 Our goal is that the graphic quality like this demo, we want to make it run 60FPS at Hello guys from foreign country. I want to do a little translation. 52:57 Our goal is that the graphic quality like this demo, we want to make it run 60FPS at next-gen consoles. But now we do not reach the goal. Now it is 30FPS. Our target is 60FPS, that is also why we can not release it now. And I can ensure that… Read more »

Nitupensis

las dos primeras marcas de tiempo no podría decirte, o están mal linkeadas, o el salto en mi reproductor no me coincide con que digan eso, aunque por ejemplo los de los 30fps y que estan trabajando por en un futuro alcanzar los 60fps con una calidad grafica similar en ps5 ya lo comento Daniel Wright. https://twitter.com/EpicShaders/status/1260756155980230658 https://twitter.com/EpicShaders/status/1261029289937580034 La ultima marca de tiempo si linkea bien y coincide con lo que dice. De hecho le repreguntan durante el video varias veces por temas de ps5 y el chico intenta evitar en lo posible responder, o da largas ya que esta… Read more »

Nicco

Kim Libreri comento que la demo corría «muy bien» en una rtx2070 super a igualdad de ajustes con los que se usaron en ps5.

Nitupensis

en el video epic china ya digo que lo que si que indican es que han estado probando el motor con diferentes gráficas de nvidia de su serie rtx citando varias de ellas y que el motor soportara aceleración por hardware para trazado de rayos, aunque no hacen referencia a que sea en esta demo, solo entiendo que se refieren al motor en si y salvo que se me escape no se esta refieriendo a un portátil (mañana le diré a la parienta si le quiere dar un vistazo que es la nativa), también dan a entender que algunos desarrolladores… Read more »

Nitupensis

bueno pues la parienta no puede revisar el video de Epic china por que lo han borrado de su fuente original, alguno tiene el enlace a alguna resubida?

Ger

Algo me olía, y eso explicaría los tirones y los cuelgues al ser streaming. Además la visualización es tal cual la de ps5

Dani

Muchas gracias Urian. Tenía dudas sobre si Lumen podría de algún modo usar las unidades de intersección para acelerar su rendimiento. Veo que no.

Si quisiéramos iluminación global sólo para la iluminación directa ¿se podría usar Lumen? Entiendo que sería sólo la voxelización.

Más sencillo, que me hago un lío, ¿cómo crees que Lumen podría combinarse con raytracing? ¿Ofrecería ventajas al desarrollador o al rendimiento?