Problemas de trazado de rayos en juegos de próxima generación: análisis de trazado de rayos en la remasterización de Spider-Man de Marvel





A medida que se acerca el lanzamiento de la próxima generación de consolas, Insomniac Games ha comenzado a publicar más material que revela detalles sobre Marvel's Spider-Man y Marvel's Spider-Man: Miles Morales. Ambos proyectos utilizan tecnología de trazado de rayos. En opinión de Alex Battaglia de Digital Foundry, se ve muy digna, si no excelente. Nada mal para empezar.



Sin embargo, al leer los comentarios en Internet, se encontró con una cantidad considerable de críticas en relación con la implementación de la tecnología, así como con la velocidad de fotogramas y la resolución. Entonces, en un nuevo video de Digital Foundry, decidió presentar algún tipo de tutorial sobre trazado de rayos en consolas de próxima generación y explicar por qué se ve así en Marvel's Spider-Man.



Entonces, lo primero es lo primero. Analicemos exactamente para qué sirve el trazado de rayos en Marvel's Spider-Man para PS5.



A 30 FPS a una resolución de 4K, el trazado de rayos se ve genial. Al mismo tiempo, como es habitual en los juegos de Insomniac, se puede utilizar o no la resolución dinámica. Aquí es donde se aplica el trazado de rayos a los reflejos del juego como los que se ven en las puertas de los automóviles.







O en esta captura de pantalla, donde el héroe y la ciudad a lo lejos se reflejan en la ventana del edificio.







El trazado de rayos también se utiliza para el sombreado de fondo (oclusión ambiental, AO), según el comunicado de prensa. Es más difícil de identificar en capturas de pantalla o videos. Normalmente, AO simula sombras de iluminación indirecta en áreas donde la luz reflejada alrededor de la escena es más difícil de alcanzar.







En lo que respecta a los comentarios en las redes sociales y los foros, hay una decepción en la calidad de los reflejos con trazado de rayos, que a primera vista solo tienen una cuarta parte de la resolución base. Pero claramente tienen filtros, por lo que es difícil decirlo con certeza.







Los reflejos se muestran en 1080p, mientras que el resto de la imagen se muestra en 4K. Los comentaristas se quejan, por ejemplo, de que las hojas en el reflejo son más raras o incluso ausentes que las que se pueden ver en el árbol "real". O que algunos objetos del juego, como automóviles o peatones, pueden no aparecer en los reflejos. O la falta de sombras. O descuidar pequeños detalles, como en un traje de Spider-Man.







De hecho, todo esto no es sorprendente y se refiere a medidas obligatorias que, al parecer, se dan por sentado. Esto se debe al hecho de que el trazado de rayos se realiza en varios pasos, cada uno de los cuales afecta el rendimiento general, que tiene un presupuesto muy limitado.



Supongamos que somos los mismos desarrolladores que necesitamos crear las reflexiones más realistas dentro de un presupuesto determinado.







Dividamos el proceso de trazado de rayos en cuatro pasos. Digamos que necesitamos alcanzar los 8ms para crear reflejos para un juego de 30 FPS con una resolución de 4K.



Pasemos al primer paso. Para el modelado de rayos, la GPU debe comprender la escena y los objetos geométricos dentro y fuera de la pantalla. En el primer paso, creamos una versión fácil de leer de la escena del juego. Cuantos más objetos contenga y más dinámicos sean, más tiempo llevará este paso.



En el segundo paso, disparamos rayos a la estructura creada en el primero.







Para ver si el rayo está impactando en alguna parte, rodee todos los objetos con hitboxes invisibles. Así, un rayo que incide en la escena se mueve a través de ella hasta que registra un impacto en la geometría. Cuantos más rayos disparamos, más lejos van, o cuantos más hitboxes golpeamos, más tiempo tomará este paso. Esta parte de la canalización del trazado de rayos se puede acelerar por hardware en consolas y PC.



El siguiente paso es el sombreado o la selección del color de los píxeles.







Cuantos más golpes estén sombreados o más difícil sea el sombreado, más tiempo tomará este paso.







El tercer paso nos da los colores y matices que queremos, pero pueden tener malas transiciones o ser ruidosos. Este problema se resuelve en la cuarta etapa. Como regla general, cuanto más exactamente se borre el resultado del tercer paso en el cuarto, más tardará el proceso.







Todo el oleoducto debe instalarse en un total de ocho milisegundos, y al principio estamos lejos de ese objetivo. Tendremos que ajustar los pasos para reducir el tiempo y también para asegurarnos de que nuestros reflejos se vean bien y coincidan con el diseño del juego. Esto puede provocar una disminución de la calidad de los reflejos en algunas áreas y un aumento en otras.







Una de las primeras optimizaciones que usaremos es reducir la resolución del trazado de rayos. Esto limitará la cantidad de rayos que salen y reducirá el tiempo requerido para el segundo y tercer paso.







Como puede ver en la captura de pantalla a continuación, el reflejo parece casi una cuarta parte de la resolución original. Esta optimización se realiza no solo para las GPU de consola, sino para todas las GPU en general, ya que el trazado de rayos consume muchísimos recursos.







Echemos un vistazo a una captura de pantalla de la demostración de The Ghost Runner con trazado de rayos 4K habilitado en una tarjeta gráfica RTX2060 Super. Aquí vemos algunas diferencias en comparación con Spider-Man. Unreal Engine 4, en el que se crea el juego, utiliza un método de trazado de rayos que es un poco más caro en el tiempo, pero físicamente más preciso que en Spider-Man.







El RTX 2060 Super funciona de manera similar al RTX 2070, tiene el mismo ancho de banda de bus de memoria que el PS5 y la misma cantidad de 8GB. Es probable que el RTX 2060 Super sea un excelente punto de partida para compararlo con la GPU de PlayStation 5.







Cuando la escena se renderiza en 4K junto con los reflejos, y la cantidad de reflejos en la pantalla es tan pequeña como en el caso del charco estático de arriba, la GPU apenas cabe 30 FPS. Si hubiera más dinámica en la escena, la velocidad de fotogramas definitivamente sería menor. Reducir la resolución axial del trazado de rayos en un 50% y, por lo tanto, la resolución total a 1080p aumenta el rendimiento en aproximadamente un 27%, dejando recursos libres en la GPU para aumentar la velocidad de cuadros hasta 30 FPS.







Se pueden ver resultados más impresionantes en otras escenas. Como, por ejemplo, aquí. La superficie de vidrio reflectante ocupa casi toda la pantalla. En este caso, los reflejos con resolución nativa de 4K dan como resultado una velocidad de fotogramas de 21 FPS. Al mismo tiempo, reducir la resolución de los reflejos a 1080p aumenta la velocidad de fotogramas en un 58% a 33 FPS con los 30 FPS requeridos.



Por lo tanto, en una GPU con el mismo rendimiento que la PS5, debe usar reflejos de trazado de rayos de menor resolución para poder mantener una frecuencia de cuadros constante de 30 FPS a una resolución general de 4K. Entonces queda claro por qué Spider-Man solo usará reflejos a 1080p para reducir el costo del trazado de rayos.







Volvamos a nuestro ejemplo de cálculo. Hemos reducido la resolución de los reflejos para que el segundo y tercer paso ahora consuman menos tiempo. Pero todavía no encajamos en el presupuesto dado durante la duración del marco.



Intentemos acortar el tiempo del primer paso disminuyendo el dinamismo o el número de objetos en relación con los que se realizará el trazado de rayos. Por lo tanto, en las capturas de pantalla mostradas anteriormente, es posible que algunos objetos dinámicos hayan faltado en los reflejos. O aquí, en el video del juego de Miles Morales, en escenas de multitudes, a veces puedes notar que algunos de los NPC no se reflejan en las superficies.







Sabemos por experiencia de otros desarrolladores que dibujar muchos personajes en la pantalla puede consumir muchos recursos. Por ejemplo, algunas escenas en Metro Exodus con muchos personajes en el RTX 2080 Ti tardan 4 ms en renderizarse. En nuestro caso, será la mitad del presupuesto asignado.



Por lo tanto, la reducción del número de objetos dinámicos en la primera etapa del trazado de rayos acelera el proceso y luego encajamos en los 8 ms asignados.







Sin embargo, es posible que el resultado no sea tan impresionante como nos gustaría.



Por ejemplo, echa un vistazo a estas capturas de pantalla de Battlefield V.











Como vemos arriba, los edificios en reflejos aparecen y desaparecen. Este no es el efecto más deseable, por lo que aumentaremos la distancia que los rayos pueden viajar en el segundo paso, así como la distancia a la que se incluyen los objetos en la estructura en el primero.







Volviendo a nuestro fotograma de Spider-Man, podemos ver que los reflejos muestran objetos que están muy lejos. Probablemente sería muy desagradable si los objetos en el horizonte estuvieran ausentes en reflejos o parpadearan constantemente, apareciendo y desapareciendo.







Por tanto, teniendo en cuenta los edificios situados lejos de la fuente de reflexión en los reflejos, y aumentando la distancia que recorren los rayos, tendremos que sacrificar algo más para dar sus frutos.







Volvamos a nuestro cálculo. Al decidir tener en cuenta los objetos distantes en los reflejos, nuevamente nos encontramos fuera de los límites de nuestro presupuesto. Por lo tanto, revisaremos una vez más la cartera para detectar posibles simplificaciones. Quizás el segundo paso nos lleve de regreso a los 8ms deseados.



Veamos nuevamente la captura de pantalla de nuestra ciudad. En el reflejo de la ventana, puede ver menos hojas o incluso faltantes en comparación con cómo aparecen en el modelo de árbol original. Las hojas se clasifican aquí como transparentes y, para los objetos transparentes, el segundo paso de la tubería lleva más tiempo. Lo sabemos por nuestra experiencia con Battlefield V, donde las partículas y los reflejos hacen que ciertas escenas sean extremadamente caras.



imagen



Para Spider-Man, podemos reducir el número de hojas de los árboles en los reflejos antes del segundo paso. También lo haremos de modo que los efectos de partículas no se procesen mediante el trazado de rayos, como aquí, donde no se muestra la niebla en el reflejo.







Ahora casi encajamos en el presupuesto del cuadro, pero aún lo superamos ligeramente.







La última optimización se puede hacer en el tercer paso, donde usamos sombreado.



Volvamos a nuestra captura de pantalla. ¿Has notado la falta de pequeños detalles en el reflejo del traje de Spider-Man? ¿Cuáles son visibles en su traje real? Si simplificamos el material en reflexión, tomará menos tiempo dibujarlo.







No hay nada de malo en eso, ya que muchos juegos que usan el trazado de rayos, como Wolfenstein: Youngblood, usan la misma técnica.







Como resultado, encajamos en los 8 ms asignados. Entonces, mejoramos la calidad de los reflejos en algunos aspectos, por ejemplo, agregando reflejos de objetos distantes, pero al mismo tiempo recurrimos a ciertas simplificaciones, como la disminución de resolución de los reflejos.







Con suerte, con este ejemplo, pudimos transmitir una idea de los dilemas que enfrentan los desarrolladores de juegos cuando tienen que lidiar con un presupuesto de rendimiento limitado y tecnologías costosas como el trazado de rayos.



All Articles