Antes de GDC 2019 , revelamos Neon Noir, un proyecto de investigación y desarrollo que muestra reflejos y refracciones trazadas por rayos de malla en tiempo real creadas con una nueva versión avanzada de la solución de iluminación en tiempo real de iluminación total de CRYENGINE. Huelga decir que recibimos muchas preguntas sobre la demostración y el trazado de rayos en CRYENGINE . Por lo tanto, queríamos asegurarnos de darle una buena visión general y nos tomamos un tiempo para leer sus preguntas a fin de responderlas en nuestra entrevista en profundidad en el blog.

Puede pinchar sobre las imágenes para verlas a mayor resolución

Entrevistamos a Vladimir Kajalin, ingeniero de renderizado principal de CRYENGINE, y a Ron Frölich, artista principal de 3D para Hunt: Showdown, dos de los miembros del equipo que creó Neon Noir con la nueva tecnología para reflejos de trazado de rayos que se agregará a la hoja de ruta de desarrollo de CRYENGINE en 2019.

Primero, hablamos con Vladimir Kajalin sobre la implementación de la nueva tecnología de trazado de rayos en CRYENGINE.

Comencemos por el principio. ¿Qué es el trazado de rayos?

Vladimir : el trazado de rayos es una técnica de representación que permite la simulación físicamente correcta de comportamientos de iluminación complejos. Al rastrear rayos, simulamos la propagación de rayos de luz a través de la escena, y también la interacción de la luz con las superficies de la escena.

Durante décadas, este método de iluminar una escena solo se podía lograr con trazadores de rayos fuera de línea que requerían horas o incluso días para representar un solo cuadro. Ahora, con los avances en la tecnología de GPU y la ingeniería de software, el trazado de rayos se usa cada vez más en aplicaciones en tiempo real como los videojuegos, generalmente en combinación con técnicas de renderizado más establecidas. Los puntos clave del rendimiento son el preprocesamiento de la escena, que permite un trazado muy rápido en tiempo de ejecución, y luego el proceso de des-mosaico (conocido como des-ruido) que produce iluminación de alta calidad utilizando solo una cantidad limitada de trabajo de trazado de rayos.

Desde 2015, CRYENGINE ha utilizado una forma de trazado de rayos para nuestra solución GI interna, Total Illumination, utilizada en títulos enviados como Kingdom Come: Deliverance y nuestra propia Hunt: Showdown. Hasta ahora, una de las limitaciones de la solución GI de CRYENGINE era el nivel de detalle en las reflejos en tiempo real. Si bien la mayoría de las superficies estaban bien soportadas, las superficies muy lisas y reflectantes, como los espejos, eran problemáticas, lo que obligaba a los creadores de juegos a confiar en mapas de cubos precocidos y reflejos de espacio de pantalla local.

Neon Noir demuestra la próxima actualización de nuestro sistema GI que consiste en reflejos y refracciones trazadas por rayos de malla en tiempo real. Esta técnica muestra mallas y texturas de escenas de alta calidad perfectamente reflejadas en espejos y superficies reflectantes mediante el trazado de rayos de GPU. Neon Noir es un proyecto de investigación y desarrollo, pero las reflejos de trazado de rayos llegarán al motor a finales de año. Por supuesto, hay muchas aplicaciones para el trazado de rayos, como la oclusión ambiental o las sombras suaves, pero actualmente nos centramos en usar esta función para superficies reflectantes .

¿Qué beneficios darán los reflejos con trazado de rayos a los usuarios de CRYENGINE sobre los métodos tradicionales de renderizado?

Vladimir : para los jugadores, el trazado de rayos significa imágenes más realistas en los juegos. Para los creadores de juegos, el trazado de rayos ayuda a automatizar y simplificar la creación de imágenes realistas sin tener que lidiar con técnicas de representación múltiples y, a menudo, muy aproximadas.

Cuando se trata de reflejos especulares, los motores de juego suelen utilizar mapas de cubos estáticos o dinámicos, reflejos de espacio de pantalla local o reflejos planos dinámicos. Si bien estas técnicas establecidas funcionan bien en muchos casos, hay ejemplos en los que fallan, y los desarrolladores de juegos tienen que hacer un gran esfuerzo para encontrar soluciones o evitar la inclusión de elementos específicos.

Por ejemplo, tomemos autorreflejos . Imagine un robot hecho de metal cromado reflectante. Cada fragmento del robot puede reflejar el resto del cuerpo. O tomemos una escena similar a Neon Noir. Imagine un área de compras normal en una ciudad con muchas ventanas reflectantes, que están orientadas arbitrariamente y pueden reflejarse entre sí, así como todo lo demás en la escena. Para otro ejemplo, piense en el interior de un elevador con espejos opuestos entre sí que se reflejan infinitamente. Vemos este tipo de escenas todos los días en la vida real, pero nunca las vemos recreadas correctamente en los juegos. Con el trazado de rayos, los ejemplos cotidianos complejos y más típicos funcionan de forma inmediata, sin la necesidad de que los desarrolladores combinen múltiples algoritmos aproximados o encuentren una solución alternativa para los errores visuales.

¿Cómo trajiste el trazado de rayos de malla en tiempo real a CRYENGINE?

Vladimir : Antes de agregar el trazado de rayos de malla en el motor, ya teníamos un sistema de iluminación que usaba mucho trazado de rayos, también conocido como trazado de cono de vóxel. Eso significaba que no teníamos que construir un sistema de iluminación completamente nuevo desde cero.

Uno de los componentes importantes de cualquier implementación de trazado de rayos es la estructura de aceleración de intersección de rayos. Nuestro sistema SVOGI (Iluminación total) ya contenía lo que era necesario, por lo que fue un paso relativamente sencillo agregar los datos necesarios para el trazado de rayos. En la implementación actual, para cada vóxel, almacenamos una referencia a triángulos superpuestos, más la información habitual como albedo, opacidad y datos normales.

La fusión de datos de trazado de vóxeles y rayos proporciona una gran flexibilidad. Por ejemplo, para los rayos difusos, el verdadero trazado de malla es necesario solo cerca del comienzo del rayo, pero para el resto del rayo podemos usar un trazado de cono más eficiente sin artefactos visuales. Una optimización similar funciona con rayos especulares. Solo las superficies lisas y limpias como los espejos requieren un verdadero trazado de rayos de malla. La mayoría de las superficies de bajo brillo y menos brillantes se pueden rastrear mucho más rápido simplemente trazando vóxeles, que lograrán la misma o mejor salida visual . Otra parte importante de la mayoría de las implementaciones de trazado de rayos en tiempo real es la eliminación de ruido, que ya existe en CRYENGINE.

Parte del proceso consistía en proporcionar el soporte adecuado para el sombreado de rayos. En base a nuestra solución de sombreado diferido existente, implementamos un pase de renderizado adicional para el sombreado de los rayos, con el apoyo de todas las fuentes de luz posibles que tenemos. Al hacer esto, nos aseguramos de obtener el sombreado adecuado en los reflejos. También agregamos soporte para el trazado de rayos del sistema de partículas, permitiendo los reflejos de los efectos de partículas.

¿Por qué ahora es el momento adecuado para poder llevar esta tecnología al motor?

Vladimir : ahora es un buen momento porque la GPU convencional promedio ha alcanzado la potencia de cálculo requerida para nuestra nueva implementación de trazado de rayos. Además, las personas son cada vez más conscientes de lo que el trazado de rayos puede aportar a los juegos, pero carecen de una solución práctica.

Neon Noir se representa en tiempo real, en el editor, en una GPU AMD Vega 56. ¿La última generación de tarjetas gráficas ofrecerá resultados aún más impresionantes?

Sí. Nuestra implementación actual es independiente de API y hardware. Se ejecuta en 1080p con 30 fps en un AMD Vega 56 . La reducción de la resolución de los reflejos permite un rendimiento mucho mejor sin demasiada pérdida de calidad. Por ejemplo, en modo de media resolución, se ejecuta en 1440p a 40+ fps en la Vega 56. Por el momento no nos beneficiamos de ningún rendimiento adicional que las API modernas como Vulkan o DX12, o hardware dedicado como el que la última generación de tarjetas gráficas podría darnos. Pero, por supuesto, optimizaremos la función para lograr un mejor rendimiento de estas API y tarjetas gráficas.

Uno de los factores clave que nos ayuda a ejecutar de manera eficiente en hardware que no es RTX es la capacidad de cambiar de forma flexible y dinámica de un costoso rastreo de malla a un voxel de bajo costo, sin pérdida de calidad. Además, siempre que sea posible, todavía usamos todas las técnicas establecidas, como sondas de entorno o SSAO. Estos dos factores ayudan a minimizar la cantidad de trazado de rayos de malla verdadero que necesitamos y significa que podemos lograr un buen rendimiento en las GPU convencionales. Otro factor que nos ayuda es que nuestro sistema SVOGI se ha beneficiado de cinco años de desarrollo.

Sin embargo, RTX permitirá que los efectos se ejecuten a una resolución más alta. Por el momento, en GTX 1080, generalmente calculamos reflejos y refracciones con una resolución de media pantalla. RTX probablemente permitirá una resolución de pantalla completa de 4k. También nos ayudará a tener elementos más dinámicos en la escena, mientras que actualmente tenemos algunas limitaciones. En términos generales, RTX no permitirá nuevas funciones en CRYENGINE, pero permitirá un mejor rendimiento y más detalles.

La implementación actual es solo para reflejos de trazado de rayos. ¿Existen planes para sombras trazadas por rayos y oclusión ambiental también?

Vladimir : Siempre estamos buscando formas de mejorar el enigne y sus características, pero en este momento se trata de gestionar las prioridades de desarrollo para lograr los beneficios más significativos para los usuarios en comparación con nuestro enfoque actual, y, Por supuesto, equilibrar el rendimiento. Actualmente, los mapas de sombras típicos en la mayoría de las escenas de juego ya funcionan bien, excepto las luces de área donde el trazado de rayos producirá una mejora visual notable. Nuestra solución actual de oclusión ambiental basada en vóxel ya está proporcionando excelentes resultados con una sobrecarga de menor rendimiento en comparación con el trazado de rayos de malla real. Sin embargo, lo que planeamos con respecto a la oclusión ambiental es una combinación de trazado de vóxel y trazado de rayos de malla, para proporcionar detalles mejorados a un costo de rendimiento mínimo. El soporte para los reflejos trazados por rayos era nuestra prioridad debido a la mejora visual muy obvia que brinda en comparación con los métodos tradicionales como mapas de cubos y SSR.

Ron Frölich da sus impresiones de la nueva característica y discute cómo se creó la escena Neon Noir.

¿Cuáles son sus primeras impresiones de la nueva tecnología de trazado de rayos?

Ron : Incluso mientras estábamos trabajando en la demostración, la implementación del trazado de rayos mejoró mucho. Inicialmente, la calidad de los reflejos no era excelente y probablemente no se hubiera mantenido teniendo en cuenta la escena que creamos. Sin embargo, mientras construíamos la escena, el equipo hizo un trabajo increíble mejorando los reflejos . La iluminación en los reflejos ahora se toma de los mismos mapas de cubos que iluminan todos los píxeles de trazado de rayos en la escena, las luces y las partículas funcionan en los reflejos, y la calidad visual general de los reflejos ha mejorado significativamente. La calidad de los reflejos aún no está a la par con la calidad del renderizador, pero hemos logrado un progreso significativo hacia eso durante las últimas semanas. Mientras trabajábamos en la demostración, nuestros ingenieros de renderizado también lograron agregar características adicionales como múltiples rebotes y refracciones básicas con trazado de rayos, que hicimos todo lo posible para incorporar a la escena.

Se ha mejorado el rendimiento en todo el proceso, lo que nos permite utilizar más triángulos para objetos dinámicos. En esta etapa, nuestros reflejos con trazado de rayos se mantienen lo suficientemente bien como para presentarlas como una característica experimental.

¿Qué opciones le ofrece esta nueva función desde un punto de vista creativo, en comparación con los métodos tradicionales de representación?

Ron : Normalmente usaríamos una combinación de mapas de cubos estáticos y reflejos de espacio de pantalla para una escena como esta. Los mapas de cubos son estáticos y generalmente no cambian durante el tiempo de ejecución, lo que significa que los objetos dinámicos no serán visibles si pasan por una superficie reflectante. Los reflejos del espacio de la pantalla nos permiten reflejar los píxeles que ya se muestran en la pantalla, pero se descomponen una vez que los objetos están fuera de la pantalla. Una combinación de estos dos métodos todavía tiene inconvenientes muy obvios que se alivian con reflejos trazados por rayos.

Con el trazado de rayos, somos libres de usar superficies muy reflectantes sin pensar en los inconvenientes de los métodos anteriores. Podemos colocar grandes superficies en forma de espejo en el nivel sin preocuparnos de si la escena cambiará en la medida que los haga parecer fuera de lugar. También podemos colocar objetos animados frente a los espejos sabiendo que las animaciones se reflejarán con precisión en estos espejos. Los materiales animados y los cambios en la iluminación también se reflejan correctamente.

Esencialmente, podemos preocuparnos menos por los reflejos que no coinciden con el estado actual del mundo, lo que nos permite hacer que el mundo se sienta más vívido y dinámico.

¿Qué quería mostrar con la demostración?

Ron : Sabíamos que el foco de la demostración estaría en el trazado de rayos, pero durante las primeras etapas de desarrollo, decidimos construir una escena que pudiera tener lugar de manera realista en un juego, en lugar de construir un escaparate de trazado de rayos directo. ¡Creemos que el resultado final muestra los reflejos de trazado de rayos bastante bien, sin tener que mostrar la característica en su cara en todo momento!

Mientras buscábamos temas que pudieran encajar en un juego, además de servir como un buen banco de pruebas para el trazado de rayos, nos topamos con un artista llamado Noe Alonzo que toma impresionantes fotos de Seúl en un estilo neón negro. Algunas de sus fotos más apagadas se convirtieron en nuestra principal inspiración para esta escena. Intentamos crear una estética de cine negro con infusión de neón donde los coloridos letreros de neón se yuxtaponen con un opresivo y arenoso centro de la ciudad.

Hay algunos elementos clave que resaltan muy bien la nueva función de trazado de rayos, como el tiro roto del espejo, la barrera policial reflejada en el charco y el club nocturno. También utilizamos el trazado de rayos más sutilmente en el resto de la escena, por ejemplo, con ventanas, charcos en el suelo y superficies húmedas.

¿Cómo combinó otras características de representación en la escena y por qué decidió usar el trazado de rayos solo para superficies altamente reflectantes?

Ron: Aunque tratamos de optimizar la escena lo más posible para el trazado de rayos, un píxel que no requiere trazado de rayos sigue siendo más barato que uno que sí lo hace. Por esa razón, limitamos los reflejos de trazado de rayos a superficies muy brillantes como espejos, ventanas y charcos. Las superficies que caen por debajo de nuestro umbral de “brillo” definido pueden usar mapas de cubos tradicionales para los reflejos y aún lucir convincentes. Las aceras frente a los dos clubes nocturnos son buenos ejemplos de donde los reflejos trazados por rayos en los charcos funcionan bien junto a los reflejos típicos de mapa de cubos en el concreto húmedo.

Hablemos de esto con más detalles y mencionemos las balas / proyectiles en el suelo cuando el dron escanea la escena del crimen. Esta escena fue en realidad el núcleo de muchos debates. Parece que faltan los reflejos sobre dos de ellos. ¿Qué estamos viendo aquí?

Ron : para garantizar que nuestros reflejos con trazado de rayos se realicen lo mejor posible, no utilizamos la geometría de renderizado original para los reflejos, sino una versión menos detallada que sea más fácil de procesar. Esta optimización es similar a los LOD tradicionales (objetos de nivel de detalle) que reemplazan la geometría de renderizado original a medida que se aleja, y el objeto se hace más pequeño en la pantalla.

De hecho, todos los objetos en la demostración de Neon Noir usan versiones low-poly de sí mismos para los reflejos. Como han comentado algunas personas, se nota en las balas, pero es mucho más difícil de detectar en la mayoría de los casos. Dicho esto, podemos corregir fácilmente el reflejo en las viñetas usando LOD más detallados o simplemente no usando LOD en absoluto.

Dado que los casquillos de bala son objetos tan pequeños en el mundo, la cuadrícula de vóxeles SVOGI no los recogió y tuvimos que convertirlos en objetos dinámicos con trazado de rayos, que generalmente están reservados para objetos en movimiento que se actualizan en cada cuadro. Cuando lanzamos el video, el límite para la cantidad de objetos dinámicos era mucho más estricto de lo que es ahora. Es por eso que solo la mitad de las balas tenían reflejos adecuados en el video. Cuando lancemos la escena al público, todos los casquillos deberán reflejarse correctamente.

Algunas personas también señalaron que un reflejo agudo en un charco en el alféizar de una ventana al comienzo del video parece estar defectuoso. ¿Puedes dar más detalles sobre eso?

Ron : en este caso, el LOD utilizado para los reflejos y la geometría de renderizado no coincidían exactamente, por lo que había una diferencia visual entre los dos. Fue un error y ya se corrigió, pero como no podemos actualizar el video en YouTube sin eliminarlo, debe aceptar nuestra palabra por ahora. 😉

¿Qué beneficios cree que esta nueva característica les dará a los usuarios de CRYENGINE cuando se trata del motor?

Ron : al igual que la mayoría de las funciones de renderización modernas, el trazado de rayos es otro paso hacia el realismo visual en los juegos. Cuando se usa agresivamente en casos especiales como espejos, y sutilmente en la mayoría de los otros casos como ventanas y superficies húmedas, el trazado de rayos puede mejorar la calidad general de la imagen. También puede eliminar muchas restricciones para los desarrolladores de la misma manera que lo hizo para nosotros. Una escena dinámica con superficies altamente reflectantes es bastante difícil de lograr con los métodos tradicionales. El trazado de rayos rompe esa barrera con relativa facilidad.

¿Cuáles son tus partes favoritas en la escena?

Ron : De los elementos que creamos específicamente para mostrar el trazado de rayos, el espejo roto es probablemente el más efectivo. El reflejo del dron en las piezas rotas del espejo funciona tal como lo esperarías y ver los paneles del club al otro lado de la calle abrirse en los reflejos se siente realmente impresionante.

Sin embargo, creo que el impacto más significativo del trazado de rayos se captura en todas las formas sutiles que agrega a la escena. Las ventanas reflejan con precisión lo que está al otro lado de la calle, los charcos reflejan adecuadamente los letreros de neón sobre ellos y las luces de las calles rotas parpadean en los reflejos de las superficies húmedas debajo de ellas. Para mí, estas mejoras sutiles en toda la imagen ayudan a la escena de una manera completamente diferente que los elementos de exhibición más obvios.

¡Gracias, muchachos!

Esperamos que hayas disfrutado de esta idea de cómo creamos Neon Noir. La nueva tecnología de iluminación total que utilizó el equipo se agregará a la hoja de ruta de desarrollo de CRYENGINE este año. Le mantendremos informado sobre el desarrollo de esta función en los canales habituales, así que esté atento.

Fuente: CryEngine.com


6 commentarios

Richard · 10 agosto, 2019 a las 10:23 pm

Gracias

    Maikel · 10 agosto, 2019 a las 11:18 pm

    si no lo has visto, buscalo en yuoutbe cuando puedas

Maikel · 10 agosto, 2019 a las 4:28 pm

resumiendo
-por ahora solo procesa reflejos (como en Battelfield V)
-funciona en cualquier tarjeta?
-solucion propia sin uso de DXR o las extensiones RT de Vulkan
-en una AMD Radeon Vega 56 1920×1080, RT de resolucion completa, 30fps. Con RT de media resolucion, 2560×1440 a 40+ fps
-estan trabajando para la parte de iluminacion global llevarla a tiempo real tambien
-cuando metan aprovechamiento de la aceleracion en hardware, sacaran mas rendimiento, (obvio)
-sale en el CryEngine antes de fin de año. (entonces se podra probar en varias tarjetas a ver que tal)
-RT mas preciso en el primer rayo, luego cone/voxel tracing mucho mas rapido para los rebotes (esto me recuerda la patente de AMD para RT)

    Juni · 12 agosto, 2019 a las 8:39 am

    bueno tengo una duda, todo eso se podra ver a futuro en la gtx 1660?? o se necesitará una grafica mas pontente para eso. Por cierto tengo el windows 1903 pero aun no lo he probado, si alguien lo ha puesto que me diga si sale buena la version, saludos….

      DARIAN · 13 agosto, 2019 a las 12:46 pm

      Te respondo con una pregunta.

      Por que Microsoft esta obligando a actualizar a la version 1903 mientras cada vez m’as usuarios incluyendo empresas migran de regreso a Windows 7, un sistema operativo que en el 2020 no recibira m’as soporte o actualizaciones. JEJEJE.

        Maikel · 13 agosto, 2019 a las 12:59 pm

        no veo obligacion ninguna a actualizar a 1903, bien puedes seguir usando la 1506. a menos que te refieras a que si quieres RT, tienes que usar 1809+. a microsoft lo que le interesa es que migren a W10, no a una version especifica, una ves este ahi, el a que version actualices es otra cosa

        por lo demas, nunca he visto informacion de que “más migren de regreso”, lo más que ocurre es que o se quedan en W7, o de los XP y Vista que quedan muchos van a W7. muchas veces por asuntos de compatibilidades de software o requisitos de computo. y la mayor parte de las veces a nivel empresarial, lo que es obvio, por algo M$ ha mantenido para estos el soporte pagado

Deja un comentario

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