Q2VKPT: Quake II completamente reescrito con iluminación realista


Q2VKPT es el primer juego jugable con trazado de rayos completo, que simula efectivamente una iluminación totalmente dinámica en tiempo real utilizando las mismas tecnologías modernas utilizadas en la industria del cine (consulte la guía práctica de Disney para el trazado de rutas ).

El reciente lanzamiento de modelos de GPU con características de trazado de rayos ha abierto posibilidades completamente nuevas para el futuro de los gráficos de juegos, sin embargo, el uso adecuado del trazado de rayos no es una tarea trivial. Mientras que algunos desarrolladores de juegos comenzaron a explorar las posibilidades de representar sombras y reflejos, Q2VKPT fue el primer proyecto en implementar una solución general efectiva para todos los tipos de transferencia de luz: iluminación directa, difusa y reflejada (consulte la sección "Medios"). En la industria del cine, dicha unificación ha llevado a una mejora significativa en la flexibilidad y la productividad . Existe la posibilidad de que tal desarrollo de tecnología en los juegos prometa una mejora similar en la precisión visual y el realismo gráfico en los próximos años. Este proyecto debería servir como confirmación del concepto para el campo de la investigación de gráficos por computadora y la industria del juego; Además, permite a los fanáticos de los juegos echar un vistazo al futuro potencial de los gráficos de juegos. Además de utilizar el trazado de rayos acelerado por hardware, Q2VKPT proporciona principalmente su eficiencia gracias a la técnica de filtrado de imágenes adaptativo , que rastrea de manera inteligente los cambios en la iluminación de la escena para reutilizar la mayor cantidad de información posible de los cálculos anteriores.

Sobre el proyecto


El proyecto fue lanzado como código abierto en GitHub . Integra nuestro trazador de rayos Vulkan en el cliente Q2PRO . El proyecto surgió debido a la necesidad de la investigación de gráficos por computadora del contenido de prueba de ejecución rápida. Está motivado por los primeros resultados intrigantes de un renderizador de trazado de ruta escrito en 2016 .

La historia


VKPT y Q2VKPT fueron creados como un proyecto de hobby por Christoph Schied para probar los resultados de la investigación de gráficos por computadora en este juego. Por el momento, el proyecto incluye 12 mil líneas de código y reemplaza completamente el código gráfico original de Quake II. Inicialmente, su prototipo fue escrito en OpenGL con la participación de Johannes Hanika ( trazado de rayos experimental, sombreadores, correcciones GL / Vulkan), Addis Diettebrand (jerarquía de iluminación, visualización de depuración), Tobias Zirr (muestreo de iluminación, sitio web, textos informativos) y Florian Rybold (jerarquía inicial de cobertura). Stefan Bergmann, Emanuel Schrade, Alice Jung y Christoph Peters proporcionaron asistencia adicional (un poco de ruido ).

Materiales descargables



Video




Tomas fallidas en el desarrollo: video con fallas 1 , video con fallas 2 .

Capturas de pantalla


Le recomendamos que vea el video o juegue usted mismo, porque la iluminación totalmente dinámica se siente mucho mejor en movimiento.

Iluminación global totalmente dinámica creada con trazado de rayos. Sombras creadas por trazado de rayos, reflejos brillantes y una etapa de reflejo de iluminación indirecta agregada










La salida del trazado de ruta (izquierda) y el filtro de reducción de ruido aplicado (derecha)

Comparación de captura de pantalla


Tecnología


Q2VKPT se implementa en la API de Vulkan para poder usar las nuevas características de rastreo de rayos de hardware que aparecieron el año pasado. Gracias a ellos, el juego puede acercarse a 60 FPS (2560x1440, RTX2080Ti) con trazado de rayos completo y sombreado dinámico con modelos realistas de iluminación global calculados en tiempo real. El uso del trazado de ruta para una iluminación totalmente dinámica le permite aumentar en gran medida el detalle del sombreado de las escenas del juego, creando naturalmente una interacción compleja de sombras nítidas y suaves, materiales brillantes y reflejos prospectivamente correctos. Además, la luz puede propagarse naturalmente en todas partes, conectando escenas como lo hacen en el mundo real. Las soluciones tradicionales con iluminación precalculada o aproximaciones de trama gruesa en tiempo real nunca pueden lograr tales detalles con una resolución comparable, porque toda la información sobre la iluminación excederá cualquier límite de memoria.

Detalles técnicos


Q2VKPT utiliza muchas técnicas para adaptar métodos computacionalmente costosos a juegos que anteriormente solo se usaban en la industria del cine. Su núcleo es un filtro de tiempo adaptativo, que reutiliza de forma inteligente los resultados de los cálculos de cuadros anteriores (este es el proyecto de investigación anterior de Christoph ). Este filtro se utiliza además del anti-aliasing temporal ya extendido y extiende el proceso de seguimiento de cambios temporales desde un espacio de imagen simple a un espacio de alta dimensión de rutas de propagación de luz. El seguimiento de los cambios en las rutas es necesario porque el seguimiento de la ruta es un algoritmo aleatorio, que es tanto sus fortalezas como sus debilidades: puede manejar todas las formas de propagación de la luz de forma generalizada, pero los resultados pueden tardar mucho tiempo en ser confiables, demasiado tiempo para uno marco en tiempo real del juego. Una solución simple en el espacio de la imagen (p. Ej., Suavizado temporal) no puede manejar este nivel de incertidumbre.

Con el paso del tiempo, exploramos varias técnicas para encontrar fuentes de luz que afectan a todas las superficies del juego. Elegir las fuentes de luz correctas es crucial para la calidad de la imagen, porque si toma la decisión equivocada, obtendremos una salida muy poco confiable del trazado de ruta, lo que hará que el filtro de tiempo elimine todos los detalles hermosos que el trazado de ruta debería haber creado. En el prototipo original, se utilizó la jerarquía completa de las fuentes de luz utilizadas en la industria del cine: dividiendo las fuentes de luz de acuerdo con la jerarquía, podemos calcular simultáneamente la influencia de varias fuentes, lo que nos permite excluir rápidamente del cálculo las fuentes distantes y débiles, así como las fuentes que están en la dirección incorrecta. Sin embargo, resultó que tales cálculos son difíciles de hacer precisos, y el costo computacional de atravesar la jerarquía es difícil de controlar. Dado que el Quake II original utilizó muchos espacios potencialmente visibles (Conjunto Potencialmente Visible) para cortar partes invisibles de la escena, decidimos obtener extrayendo de estos conjuntos de listas de fuentes potencialmente visibles para cada parte de la escena. En la versión actual, hemos implementado un cálculo parcialmente preciso de la influencia de cada fuente en la lista, eligiendo aleatoriamente el subconjunto apropiado de estas listas en cada cuadro. Por lo tanto, el renderizador encuentra rápidamente todas las fuentes de luz y podemos realizar todos los cálculos del efecto de la iluminación durante períodos de tiempo controlados y constantes.

Preguntas y respuestas


¿Por qué mi juego se "cuelga"?


Hacemos este proyecto en nuestro tiempo libre, por lo que no tenemos la fuerza suficiente para un control de calidad cuidadoso. ¡Envíe un informe de error al rastreador de problemas de nuestro repositorio de GitHub!

¿Por qué no hay partículas? ¡Necesito moscas y chispas de Railgun!


Desafortunadamente, no tuvimos tiempo suficiente para agregar fuentes de iluminación al cañón de riel. En cuanto a otras partículas, la decisión que tomamos de realizar el trazado de rayos solo complicó ligeramente el proceso de renderización de partículas. Si encontramos el tiempo, ¡lo arreglaremos en el futuro!

¡Hoy en día, los juegos se ven tan realistas! ¿Por qué usar el trazado de ruta?


Los juegos modernos han ampliado enormemente las capacidades de los tradicionales, basados ​​en gráficos rasterizados. Sin embargo, estas mejoras tienen un precio: los motores de renderizado de los juegos modernos se han convertido en conjuntos extremadamente intrincados de técnicas altamente específicas. Para lograr una imagen aceptable sin artefactos, la iluminación, las sombras y los reflejos deben calcularse individualmente en muchas resoluciones y escalas. Las rutas de rastreo y otras técnicas de representación de Monte Carlo le permiten encontrar una salida a este sistema siempre complicado. De hecho, ya han resuelto este problema en la industria del cine . Nuestro prototipo es la primera respuesta a la pregunta de cómo lograr esto en la industria de los videojuegos.

¡Quake II es un juego antiguo! Si estas tecnologías tuvieran algún futuro, ¡hoy funcionaría con una frecuencia de 6000 FPS!


Sí, Quake II es un juego bastante antiguo con una complejidad de geometría bastante baja, pero el principal factor limitante para el trazado de ruta no es el trazado de rayos o la complejidad de la geometría. De hecho, el prototipo actual puede rastrear muchos más rayos sin una reducción notable en la velocidad de fotogramas. El costo computacional de las técnicas utilizadas en el prototipo Q2VKPT depende principalmente de la cantidad de cómputo de la dispersión de luz (indirecta) y del número de fuentes de luz. Quake II inicialmente tenía muchas fuentes de luz, y a este respecto todavía es un juego bastante moderno. Además, el número de eventos de dispersión de luz no depende de la complejidad de la escena. Por lo tanto, podemos suponer que las técnicas utilizadas por nosotros son adecuadas para juegos más modernos.

¿Por qué Quake II?


Debido a que las fuentes de Quake II están publicadas en el dominio público, y el juego en sí tiene una larga historia de modificaciones. Este es un excelente entorno limitado para probar la investigación científica en el mundo real. En particular, el juego tiene una jugabilidad activa y competitiva, que establece altas demandas en el rendimiento y la fiabilidad de las técnicas renderizadas. Y finalmente, Quake II, en cierto sentido, sigue siendo un juego bastante moderno, porque se lanzó originalmente con un diseño de iluminación complejo y artístico.

¿Cómo puedo usar Q2VKPT como punto de referencia?


Abra la consola presionando la tecla "~". En la versión demo de Quake 2, puede usar el comando “timedemo 1; demo q2demo1 ", en la versión completa - el comando" timedemo 1; demo demo1 ". El generador de perfiles incorporado se inicia con el comando vkpt_profiler 1. Proporciona detalles sobre los tiempos de GPU para los pasos de renderizado individuales.

¿En qué se diferencia el trazado de ruta del trazado de rayos?


El trazado de ruta es un algoritmo elegante que puede simular las muchas formas complejas en que la luz se propaga y se dispersa en escenas virtuales. Su simulación de iluminación basada en la física proporciona una representación de alta calidad. El trazado de ruta utiliza el trazado de rayos para determinar la visibilidad entre los eventos de dispersión. Sin embargo, el trazado de rayos es solo una operación primitiva que se puede utilizar para muchos propósitos. Por lo tanto, el trazado de rayos por sí solo no es capaz de crear imágenes realistas. Para hacer esto, puede usar algoritmos de propagación de luz como el trazado de ruta. Sin embargo, a pesar del hecho de que es elegante y muy potente, el trazado ingenuo de rutas es muy costoso y requiere mucho tiempo para crear imágenes estables. Nuestro proyecto utiliza un filtro adaptativo inteligente que reutiliza la máxima cantidad posible de información en unos pocos cuadros y píxeles para crear imágenes confiables y estables.

Trazado de ruta y trazado de rayos: ¿el futuro de los gráficos de juegos?


La reciente introducción de la GPU con características de trazado de rayos ha abierto posibilidades completamente nuevas para el futuro de los gráficos de juegos, pero se requiere un enfoque no trivial para usar adecuadamente el trazado de rayos. El objetivo de nuestro proyecto es descubrir lo que falta para crear un camino directo hacia el futuro de los gráficos de trazado de rayos. Aunque algunos problemas ya se han resuelto en la investigación científica, muchos problemas reales permanecen invisibles hasta que comienzas a implementar el renderizador completo del juego. En el futuro, planeamos estudiar algunos de estos problemas, por ejemplo, un mejor muestreo de iluminación, un filtrado mejorado y una estructura de renderizador de software más consistente. Para que estos cambios se generalicen, se necesitan buenas soluciones para nuevas tareas de renderizado inusuales basadas en el trazado de rayos y las rutas.

¿Trazar el camino finalmente resolverá todos los problemas gráficos?


El trazado de rutas y métodos similares resuelven con elegancia muchas tareas complejas de los gráficos del juego. Sin embargo, su naturaleza probabilística agrega una gran cantidad de nuevas tareas, cuya solución es necesaria para crear imágenes claras (sin ruido) de alta calidad. El método de filtrado en el prototipo Q2VKPT es el primer paso hacia métodos unificados confiables que le permiten implementar un enfoque de búsqueda aproximada totalmente unificado en la representación mediante el trazado de ruta. ¡En los próximos meses y años, esperamos y esperamos ver otros estudios en esta dirección!

¿Q2VKPT usa mapas de iluminación del juego original?


El motor original Quake 2 utiliza mapas de luz precalculados que contienen sombras suaves e iluminación indirecta difusa. Q2VKPT reemplaza completamente la iluminación estática con una simulación totalmente dinámica que unifica las fuentes de iluminación estática y dinámica.

¿Cuántos rayos emite Q2VKPT por píxel?


El número de rayos emitidos depende de la primera superficie visible. En superficies opacas, Q2VKPT utiliza un haz para cada píxel para encontrar una superficie visible directa e indirecta. Además, para ambas superficies, Q2VKPT emite un haz para fuentes de luz seleccionadas al azar. Por lo tanto, Q2VKPT emite al menos 4 rayos por cada píxel.

¿Q2VKPT usa rasterización?


Tradicionalmente, un rasterizador se usa para encontrar superficies visibles desde la cámara en los juegos. En Q2VKPT, el renderizado se realiza completamente mediante el trazado de rayos, por lo que no se utiliza el rasterizador (con la excepción de los elementos de interfaz de usuario bidimensionales).

Source: https://habr.com/ru/post/es436754/


All Articles