Jump to content
Sign in to follow this  
[VIVA] Miguel22247

Bajo el Capo: Explicando el SSAO [Traduccion al español]

Recommended Posts

under_the_hood_TECH.jpg

 

Hoy nos gustaría explicar una nueva función gráfica que presentamos a nuestros juegos con la actualización 1.38. El artículo es muy técnico ( hemos pedido a nuestros programadores que ayuden), y la explicación es bastante compleja. Sin embargo, sentimos que en realidad puede ser interesante para al menos algunas de las personas de nuestra audiencia estar expuestas a este material - para ver que lo que está sucediendo detrás de un motor de juego implica una gran cantidad de investigación y trabajo duro de nuestro equipo de programación. Además de los detalles técnicos, pensamos que proporcionar el contexto y explicar las compensaciones de rendimiento puede ser útil e importante para la mayoría de los jugadores.

 

20200703_142733.jpg

Jaroslav a.k.a.Cim 

(uno de nuestros programadores valientes y expertos que trabaja en mejoras gráficas)

 

El resumen TLDR (Demasiado Largo, no lo he leido) del texto a continuación es que Screen Space Ambient Occlusion es una nueva y fresca técnica de rendimiento pesado para enriquecer la representación de nuestro mundo de juego. Usted no tiene que usarlo si usted siente que reduce el rendimiento demasiado para su gusto, o puede que le guste y puede permitirse el lujo de perder unos pocos fotogramas por segundo para mejorar la percepción de sombra y profundidad. El efecto puede ser sutil, sobre todo funciona en el nivel de subconsciencia, pero una vez que te acostumbras a él, puede ser difícil volver atrás. Es otro hito en nuestro plan de mejoras de iluminación/sombra que ahora estamos ejecutando, a seguir por el nuevo procesamiento de luz HDR y la introducción de superficies más normales en las próximas actualizaciones.

 

20.jpg

 

La técnica tiene sus limitaciones y peculiaridades. Ha sido utilizado por varios juegos AAA en los últimos años, e incluso si no es perfecto, ayuda al sistema de percepción humana a entender mejor la escena, y esperamos que agregarlo a la mezcla de tecnología de nuestros simuladores de camiones es beneficioso. Sin duda queremos introducir formas adicionales de sombrear el cálculo que lo mejorará o incluso lo reemplazará.

 

02_on.jpg

02_off.jpg

 

Estamos bajo presión constante para mejorar el aspecto de nuestro juego por un subconjunto vocal de nuestra base de fans. Al mismo tiempo, siempre hay un deseo de hacer que los juegos funcionen más rápido. Además de estas peticiones a veces competidoras procedentes de la base de jugadores, nuestro propio departamento de arte está siempre ansioso por conseguir nuevos gráficos para hacer nuestro juego más rico y mejor. Cada vez que introducimos una nueva característica gráfica en el juego, intentamos hacerlo de una manera que no dañe el rendimiento para los jugadores con computadoras más antiguas, no queremos que el juego sea incompatible para nuestros clientes existentes. Es por eso que hay una opción para desactivar SSAO por completo, y varios ajustes para su calidad / rendimiento.

 

El trabajo de nuestros programadores en las nuevas técnicas SSAO/HBAO también requirió cambios en nuestro proyecto de arte y creación de arte. Todos los modelos 3D de nuestros juegos tuvieron que ser revisados por el departamento de arte, y cualquier caso, donde cualquier sombra falsa y oscurecimiento ya fueron aplicados a un modelo por un artista, fueron cambiados. Para algunos modelos de juegos más complejos, esto fue una simplificación que en realidad redujo el número de triángulos en ellos lo suficiente como para mejorar el rendimiento de representación. Hasta cierto punto, hemos intercambiado una parte del esfuerzo manual futuro tentativo que sería necesario para construir modelos 3D individuales de buen aspecto para un pase de renderizado algorítmico que unifique el aspecto de sombra de toda la escena, ayudando a "rootear" objetos como edificios, farolas y vegetación en el terreno.

 

Qué significa SSAO y cómo funciona

 

Antes de empezar - tenga en cuenta que SSAO es un acrónimo general de "oclusión ambiental de espacio de pantalla". El nombre abarca todas las diversas técnicas de oclusión ambiental (AO) y sus variantes que funcionan en el espacio de pantalla (significa que obtienen toda la información en tiempo de ejecución de los datos que se representan en la pantalla del equipo y en los búferes de memoria relacionados). Hay SSAO (tecnología Crytech 2007 que básicamente dio un nombre general a todas las técnicas), MSSAO, HBAO, HDAO, GTAO, y muchas otras técnicas cada una utilizando enfoques diferentes, cada uno con sus beneficios y desventajas. Hemos basado nuestro enfoque en una técnica basada en horizontes llamada GTAO que fue introducida en un artículo de 2016 por Activision.

 

La parte del nombre de oclusión ambiental (AO) significa que evaluamos la cantidad de luz entrante (predominantemente luz del cielo, pero a veces la oclusión calculada se aplica también a otras luces) se ocluye en un lugar determinado en el mundo del juego. Imagínese que usted está de pie en el suelo plano - se vería todo el cielo por encima, por lo que hay 0% de oclusión, el suelo se ilumina completamente por el cielo. Ahora imagine que usted está en el fondo de un pozo - se vería sólo un pequeño parche de cielo, eso significa que el cielo se ocluyó casi 100% y contribuye sólo un poco a la iluminación ambiental en ese pozo, y naturalmente es bastante oscuro en la parte inferior del pozo. Un nivel específico de oclusión ambiental en un lugar determinado afecta a los cálculos de iluminación y crea áreas sombreadas en pliegues, agujeros y otros lugares "complejos". Puede llegar a cualquier lugar entre 0% y 100% basado en su entorno.


Calcular la oclusión con alto detalle y precisión requiere muchos recursos; básicamente, tendría que disparar rayos desde cualquier posición evaluada en todas las direcciones y probar si golpean el cielo o no, y luego promediar el resultado. Cuantos más rayos dispares, mejor información obtendrás, pero a un mayor costo de cálculo. Este proceso podría ser posiblemente procesado fuera de línea, como cuando el mapa del juego es guardado por su diseñador. Algunos juegos y motores utilizan este enfoque. Pero de esa manera solo puedes hornear información de oclusión ambiental sobre objetos estáticos no móviles porque no hay vehículos, no hay objetos animados presentes en ese momento.

 

Así que en lugar de hornear información estática (que también tomaría mucho tiempo y espacio de almacenamiento dada la escala de nuestro mapa del mundo), queremos calcularla sobre la marcha, en tiempo de ejecución. De esa manera podemos calcularlo también para la interacción con vehículos, abrir puentes, objetos animados, etc. Sin embargo, hay una trampa. Para este enfoque de cálculo, solo tenemos datos que son visibles en la pantalla (recuerde "espacio de pantalla"), por lo que una vez que alguna parte del mundo del juego sale del marco visible, no se puede utilizar para la evaluación de la oclusión. Esta limitación crea varios artefactos como la desaparición de la oclusión en una pared causada originalmente por un objeto que acaba de llegar detrás del borde de la pantalla y, por lo tanto, se volvió invisible no sólo para usted, sino también para el algoritmo, por lo que dejó de contribuir al cálculo de la oclusión.

 

21_off.jpg

21_on.jpg

 

 

Ok, ahora sabemos qué evaluar (oclusión ambiental) y sabemos qué datos tenemos (lo que vemos en pantalla). ¿Qué hacemos? Bueno, para cada píxel en la pantalla (es decir, 2 millones de píxeles en resolución HD, por cuatro (!) en 400% de escalado!) nuestro código de sombreador necesita consultar el valor del búfer z de sus píxeles circundantes tratando de obtener una noción de la forma geométrica del área que lo rodea. Podemos hacer sólo un número limitado de estos "toques" ya que hay un costo de rendimiento muy creciente con el aumento del número de grifos, esta es una operación que realmente está gravando el acelerador 3D. El límite en el número de grifos, a su vez, afecta a la precisión de la oclusión ambiental (y en ciertas situaciones puede crear imprecisiones y bandas). Imagínese que desea evaluar su entorno en una línea recta de 2 metros, y está dispuesto a gastar 8 toques para aproximarlo. Usted consulta la línea cada 25 centímetros, y cualquier detalle más pequeño que eso puede pasar a ser totalmente desapercibido a menos que tenga suerte y golpearlo en punto (o desafortunado, porque puede perderlo el siguiente frame por lo que los alrededores de repente parecerían cambiar entre fotogramas y causar flickering (parpadeo)). Cuanto más se sondea el algoritmo, menos preciso es. Por lo tanto, es necesario limitar el tamaño de un área que analiza alrededor de cada píxel del juego, lo que a su vez limita la distancia a la que el AO 've' - es por eso que no es adecuado para calcular la oclusión en grandes espacios como bajo arcos de puente.

 

Hemos mencionado que la técnica de nuestra elección está basada en el horizonte. Esto significa que no estamos sondeando el medio ambiente disparando rayos en el mundo 3D, en su lugar, analizamos un hemisferio por encima / alrededor de cada píxel para ver hasta dónde se abre hasta que se bloquea, cuánta luz se deja entrar por la geometría circundante usando el búfer z como nuestro proxy. El hemisferio es en realidad aproximado por varias corridas a lo largo de una línea girada alrededor del píxel dado. Si podemos seguir a lo largo de este hemisferio en su totalidad, no hay oclusión. Si el algoritmo toca un valor en el búfer z que bloquearía la luz entrante, define el nivel de oclusión. El algoritmo está optimizado para el rendimiento, pero su limitación es que una vez que llega a cualquier cosa, incluso posiblemente un objeto pequeño, deja de sondear más. Esto puede causar un problema de "sobre oclusión" y puede verse como un artefacto visual cuando algún objeto relativamente delgado, como un poste de señal de tráfico, provoca una oclusión fuerte en una pared cercana. Puede intentar detectar estos objetos pequeños y omitirlos, que a su vez pueden producir "bajo oclusión" en repisas delgadas. Hemos optado por el primero.
También hay otra propiedad interesante y útil de las técnicas basadas en horizontes.

Dependiendo de la cantidad de un hemisferio por encima de un píxel determinado está ocluido, puede calcular la dirección que es menos ocluida. La cantidad de oclusión se puede considerar como un cono de helado con ángulo de ápice variable orientado en esa dirección. Esta dirección se llama "doblado normal" y lo usamos para varios cálculos de luz como para ocluir una reflexión sobre superficies brillantes. La idea es que si nos fijamos en la superficie y la dirección reflejada en el espejo sale de este cono, lo consideramos (al menos parcialmente) ocluido, sintonizando la intensidad de la reflexión. La mejor manera de ver ese efecto es mirar piezas cromadas más grandes y redondas, como los tanques diésel, con SSAO encendido y apagado.
 

 

Así que ya ves, la idea no es tan difícil, para un programador de gráficos experto de todos modos ;), pero hay un montón de cálculo involucrado, poniendo bastante tensión en el acelerador 3D. Así que hemos creado varios perfiles de rendimiento, cada uno utilizando una mezcla de técnicas de optimización:

El uso de menos toques por dirección - es más rápido, pero permite a AO perder objetos más grandes que con un muestreo más fino.

Volver a proyectar los resultados de AO desde el fotograma anterior: nos permite ocultar los artefactos del submuestreo, pero puede crear fantasmas cuando se produce un error en la reproyección (cuando lo que se ve entre fotogramas cambia mucho).

Renderización en media resolución - reduce el número de cálculos a 1/4, pero crea AO menos fino - el resultado puede ser un sombreado ligeramente borroso

Esperamos que toda esta información haya resultado interesante y útil para usted. Te enviaremos un 🙌 virtual si lees este artículo hasta este punto. ¡Te mereces una galleta y una gran taza de chocolate caliente! Si todavía desea obtener más detalles sobre este tema, no dude en comprobar, por ejemplo, este enlace.
Gracias por su tiempo y apoyo y nos vemos de nuevo en algunos de los próximos artículos de la sección "Under the Hood" que traemos para nuestra #BestCommunityEver de vez en
cuando.

 

Link del post original

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...