Puntos clave y soluciones para la tecnología de renderizado de la versión de consola de "Genshin Impact"
La implementación de sombras se puede dividir en sombras dinámicas y sombras horneadas. Para sombras dinámicas, se utiliza un esquema CSM de 8 niveles para cubrir una línea de visión de 800 metros, en el que las primeras cuatro sombras se actualizan en cada cuadro y las últimas cuatro sombras se actualizan secuencialmente (es decir, se actualizan cada cuatro cuadros en secuencia).
Las sombras suaves utilizan PCF con modo de muestra aleatoria de Poisson. El número de muestras correspondientes a cada píxel es 11, lo que provocará un alto consumo computacional. Para reducir el costo de este bloque, se usa una máscara para marcar los atributos de sombra de cada área en la pantalla, y el PCF de sombra suave solo calcula los píxeles en la penumbra.
El mapa de máscara utiliza 1/4 x 1/4 de la resolución de la pantalla. En circunstancias normales, para determinar si un píxel en la imagen de la máscara pertenece a la penumbra (dibujar y generar la imagen de la máscara), es necesario determinar la oclusión de los 16 píxeles cubiertos por el píxel en la resolución de la pantalla y luego realizar la salida integral. (El video no se muestra en , ¿la llamada salida integral se refiere al valor promedio? ) El resultado del juicio de penumbra del píxel actual, pero este método será muy costoso. Para mejorar aún más la eficiencia del cálculo, decidimos utilizar un algoritmo de encuesta de muestreo para seleccionar muestras de 16 subpíxeles de acuerdo con un patrón determinado para juzgar. Este método tendrá ciertos errores (algunos deberían ser sombras suaves confundidas con sombras duras). Para reducir el error, la imagen de la máscara se verá borrosa aquí (expandiendo el radio de la penumbra) hasta cierto punto.
La generación y el desenfoque de todo el mapa de máscara consume aproximadamente 0,3 ms, mientras que el consumo de GPU de todo el cálculo de la sombra es de aproximadamente 1,3 ~ 1,7 ms. La calidad de la sombra del conmutador optimizado es básicamente indistinguible para el usuario desnudo. ojo.
Las sombras solo pueden expresar el efecto macroscópico de oclusión de una sola capa en la iluminación y no pueden simular el efecto sutil de múltiples capas (efecto de fuente de luz múltiple). Por ejemplo, en un terreno en sombra, si solo usas sombras, no podrás simular la sombra de otros objetos en el suelo, haciendo que el objeto parezca estar suspendido. Estos defectos se pueden resolver mediante soluciones de oclusión ambiental, y "Original God" proporciona una variedad de soluciones AO que se pueden seleccionar para diferentes escenas.
HBAO es la abreviatura de oclusión ambiental basada en horizontes (además, cabe señalar aquí que lo que solemos llamar HDAO (oclusión ambiental de alta definición) y HBAO son equivalentes, pero el primero es el nombre que se le da por AMD, y este último (o es el nombre que le da NVidia). Esta es una solución AO muy convencional que puede proporcionar objetos con detalles más finos mediante el posprocesamiento del espacio de la pantalla. El principio básico de implementación es: obtener el ángulo de oclusión máximo muestreando la profundidad en cada dirección y obtener el AO acumulando el seno del ángulo de oclusión máximo en cada dirección. La calidad de este algoritmo es mejor que SSAO y la lógica es más física y realista, pero su consumo de rendimiento será mayor. La industria suele utilizar su versión optimizada HBAO+. Para obtener más detalles, consulte la revisión anterior de los algoritmos de implementación de AO: Descripción general de las soluciones tecnológicas de oclusión ambiental.
AO Volume es una solución AO desarrollada para objetos estáticos. En comparación con HBAO, el volumen de AO puede producir mayores efectos de oclusión. Como se muestra en la figura anterior, el algoritmo HBAO no tiene poder para AO con efectos de sombra similares, por lo que es necesario agregar aquí una lógica de algoritmo de volumen AO adicional.
La lógica de implementación del volumen AO se puede compartir con referencia a una descripción general del algoritmo AO realizada anteriormente.
El plan de uso del cuerpo AO en "Genshin Impact" es hornear los datos AO de objetos estáticos fuera de línea y luego calcular el efecto de oclusión final en función de los datos horneados durante la operación.
Las sombras de los objetos estáticos se pueden lograr mediante el mapa de luz + Volumen AO, y las sombras de los objetos dinámicos parecerán demasiado toscas si solo se basa en HBAO, pero serán demasiado toscas si se agrega otro mapa de sombras. lidiar con esta situación. El enfoque de "Genshin Impact" es utilizar Capsule AO para agregar efectos de sombra más detallados a objetos dinámicos (como personajes).
El principio de implementación específico de la cápsula AO se puede compartir con referencia al resumen anterior del algoritmo AO.
En pocas palabras, este algoritmo simula el personaje usando múltiples cápsulas (las cápsulas cambiarán con la posición de los huesos del personaje, etc.), y luego genera la luz ambiental AO (o sombra), calcula la fuente de luz principal AO (calculando la proporción de la cápsula en un cono con la posición de representación como eje y un cierto ángulo como ángulo del cono.
Para mejorar el rendimiento del cálculo de AO, "Todos los cálculos de AO originales en "Dios" se realizan a 1/2 de resolución. Una vez completado el cálculo, para suavizar aún más el efecto y reducir los defectos, se agregará un procesamiento de desenfoque bilineal (horizontal + vertical). requerido (esto se puede hacer directamente usando un mapa con una resolución de 1/2). Durante el proceso de desenfoque, cada píxel debe fusionarse con el valor de los píxeles circundantes. Se puede ver que si se usa PS tradicional, hay varios. Se requerirán muestras de mapeo para cada píxel, y estos resultados de muestreo pueden reutilizarse en el cálculo de otros píxeles adyacentes. Por lo tanto, para mejorar aún más el rendimiento del cálculo, "Genshin Impact" El método consiste en colocar el procesamiento de desenfoque en el. sombreador de cálculo.
Específicamente, los resultados del muestreo de píxeles adyacentes se almacenan en el recurso compartido de datos local y luego se recuperan cuando se desenfocan, y el cálculo de desenfoque de cuatro píxeles se completa a la vez y genera el resultado. /p>
El canal de renderizado utilizado por "Genshin Impact" es iluminación diferida agrupada (consulte el intercambio anterior: renderizado directo agrupado). La escena se divide en 16 sectores, y el tamaño de cada sector es de 64x64 píxeles. puede admitir hasta 1024 fuentes de luz locales.
La imagen de arriba es el efecto de tiempo de múltiples fuentes de luz locales. Puede ver que las fuentes de luz locales también tienen sombras en tiempo real, pero no todas las fuentes de luz locales las tendrán. agregue sombras (esto debería ser controlable por estudiantes de arte). La cantidad de fuentes de luz locales que admiten sombras en tiempo real no excede 65,438+000
El efecto de sombra general es una combinación de sombras estáticas horneadas y dinámicas. sombras (suponiendo que se utilicen sombras. mapa, pero el costo de cálculo será muy alto y es difícil inferir qué optimización se ha realizado a partir del material dado)
Para sombras estáticas de fuentes de luz locales, el El mapa de sombras correspondiente debe hornearse porque hay muchas fuentes de luz, lo que ocupará mucho espacio en el disco duro. Debido a que el mapa de sombras es un mapa de profundidad, no se puede comprimir mediante compresión de bloques. Para resolver este problema, el equipo de "Genshin Impact" diseñó otro conjunto de ideas de compresión. p>
Las ideas específicas (consulte el artículo de Siggraph 2019 Un sistema de renderizado de múltiples sombreados escalable en tiempo real) se dan de la siguiente manera:
El rendimiento de esta solución es que la relación de compresión de precisión de las escenas interiores está entre 0,2 ~ 0,3 (es decir, al comprimir de 10k a 2 ~ 3k, puede haber ligeras fallas en el efecto), la alta La relación de compresión del modo de precisión es de 0,4 ~ 0,7 (los defectos son básicamente difíciles de distinguir a simple vista).
El método de cálculo de niebla volumétrica en sí puede lograr el efecto del rayo divino, pero el efecto del rayo divino se logra en. de esta manera puede no ser obvio (debido a que el número de vóxeles es pequeño, la resolución de textura generada por este método es relativamente baja y debido a que la concentración de niebla puede no ser suficiente para producir rayos divinos, el efecto del rayo divino no será obvio) . Aquí, el equipo de Genshin Impact tiene como objetivo hacer que el efecto del rayo divino se vea mejor. La implementación del God Ray con un canal de viaje de rayo adicional agrega algunos parámetros adicionales que se usarán para ajustar aún más el efecto del God Ray después de que la luz viaje, lo que resulta en un efecto artístico más hermoso (aunque no físico).
Las escenas de la sonda de reflexión y de la sonda ambiental que se muestran en el vídeo cambian constantemente durante 24 horas, mientras que los mapas de reflexión tradicionales se capturan sin conexión, por lo que normalmente es imposible cambiar con el tiempo. Entonces, ¿cómo se logra este desempeño?
Para la sonda de reflexión, el enfoque aquí es crear un conjunto de mini mapas GBuffer (que incluyen normal/profundidad/albedo y otra información) en lugar de crear directamente un mapa ambiental y luego generarlo en tiempo real. Basado en los datos de iluminación en ese momento. Un mapa de cubo de reflexión. Al igual que con las sondas de reflexión tradicionales, los estudiantes de arte pueden colocar una gran cantidad de estas sondas en una escena.
La generación en tiempo real del mapa ambiental se completa principalmente mediante los siguientes pasos:
Todo el proceso lo completa el sombreador de cálculo.
En Compute Shader, varios subprocesos pueden procesar 6 superficies al mismo tiempo y, dado que la actualización de un solo mapa de cubo de reflexión es en realidad muy costosa, para reducir la presión sobre un solo cuadro, la actualización del mapa de cubo de reflexión se distribuye en varios fotogramas, solo se actualiza una sonda en cada fotograma y todas las sondas se actualizan mediante la rotación del tiempo.
Después de actualizar la sonda de reflexión, se obtienen los datos del campo de luz de la sonda actual y los datos de iluminación de la sonda ambiental se extraen de este campo de luz. Debido a las características de baja frecuencia de la sonda ambiental, el coeficiente SH se puede utilizar para guardar todo el campo luminoso, reduciendo aún más el consumo de memoria.
La extracción del campo de luz también se implementa a través de Compute Shader y el cálculo de seis superficies se completa al mismo tiempo.
Después de completar los pasos anteriores, puede obtener información de iluminación que cambia dinámicamente con el tiempo, pero todavía hay algunos problemas:
Para abordar estos problemas, "Genshin Impact" proporciona lo siguiente soluciones:
Además, para evitar cortes bruscos en el área de transición interior-exterior, también suavizamos el área de transición aquí. Aquí están los mapas de máscara generados a partir de la malla interna:
Reflexión y Reflexión. Cuando se utilizan sondas ambientales, también se tendrán en cuenta los datos de AO, lo que puede reducir eficazmente los problemas de fuga de luz.
La sobrecarga de SSR en PS4 Pro es de aproximadamente 1,5 ms. Para mejorar la calidad de la visualización, se agrega un filtro temporal para mezclar datos históricos. Además, para obtener rápidamente resultados de reflexión bajo diversas rugosidades, se genera un mapa de búfer tipo Hi-Z para SSR.
Este texto original es bastante detallado, por lo que no entraré en detalles.