¿Cómo consiguen los juegos mejores gráficos con la Inteligencia Artificial?

A la hora de renderizar una escena en 3D el nivel de detalle de los objetos no solo lo conseguimos a partir de una mayor resolución, una definición de color de los pixeles, etc. Sino que el nivel de detalle depende de la geometría de los objetos, es decir, la cantidad de triangulos utilizados durante el modelado de los diferentes objetos. Ya hemos visto como la IA puede ayudar a la resolución, pero os mostramos como puede ayudar a la geometría.

En el pipeline gráficos en 3D, los diferentes triángulos que forman los objetos de la escena sufren una serie de transformaciones hasta convertirse en los píxeles que veis en vuestras pantallas. Dichas transformaciones se dan durante todo el pipeline gráfico. Pero, ¿qué ocurre cuando un triangulo que no debería estar en la escena no es eliminado a tiempo?

Triangle Pipeline

Pues que la GPU acaba todo el pipeline gráfico con este, lo que en entornos donde se mueven millones de polígonos por fotograma es una perdida de recursos enorme. Es por ello que os explicamos como el uso de la IA no solo va a servir para aumentar la resolución en los juegos sino también para dar más detalle y eliminar también todo aquello que no se ve, pero que desgraciadamente se calcula.

Teselación adaptativa

Teselación Adaptiva

La teselación se basa en subdividir los vértices que componen la malla poligonal de un personaje, pero sin modificar su apariencia externa, lo que le da un aspecto más pulido a los diferentes modelados de la escena.

Pero la teselación es algo que es contraproducente ya que si la hacemos de manera exagerada nos podemos encontrar con que los objetos más lejanos tengan geometría superflua que no se puede ver pero que es calculada por la GPU, de ahí a que sea necesario un algoritmo que permita controlar el grado de teselación según la distancia.

A este tipo de algoritmos en los que la teselación se controla según la distancia se llaman algoritmos de teselación adaptativa, no son una novedad y hace tiempo que se utilizan, pero el control de estos consumen muchos recursos de la GPU.

Geometría superflua

Culling

La teselación adaptativa es un caso de geometría superflua, pero hay muchos más,  que en general se pueden calificar en tres poblemas comunes:

  • La geometría es demasiado pequeña como para realizar el proceso de rasterizado y texturizado, ya que el usuario no la verá.
  • Los vértices se encuentran ocultos por otro objeto más grande.
  • La geometría se encuentra fuera de cámara.

Cada triangulo en la escena que no es descartado será también rasterizado y posteriormente texturizado. Por lo que nos encontramos con que una gran cantidad de triángulos que no ve el jugador son calculados por la GPU. Lo que significa consumir recursos inútilmente de la tarjeta gráfica que podrían ir a otros elementos.

Pre-Culling para la eliminación de geometría superflua

Wireframe

Una forma de evitar la geometría superflua es lo que se llama Pre-Culling, el cual consiste en pre-renderizar la escena para poder catalogar que geometría no aporta absolutamente nada.

¿En que consiste? Simplemente se renderiza toda la escena pero sin tener en cuenta los shaders, excepto los de teselación como el Hull Shader y el Domain Shader. Una vez hecho eso lo que se hace es eliminar de la lista de vértices a renderizar toda geometría que no cumpla los parámetros.

Hoy en día el proceso de Pre-Culling es asistido por unidades de función fija que se encargan de ir eliminando de la lista de cosas a renderizar toda la geometría superflua como es el Geometry Processor en las AMD RDNA. Dicho procesador no se encarga de detectar la geometría, sino que esto lo hace un programa shader que trabaja en conjunto con dicha unidad.

Teselación adaptativa y geometría a través de la IA

Teselación por IA

De la misma manera que podemos entrenar una IA para generar o destruir píxeles, para así aumentar o disminuir el detalle en una imagen en 2D, también podemos entrenarla para que sea capaz de ver la geometría superflua de una escena y la elimine de manera directa sin que se tenga que hacer el Preculling.

¿Cómo? Pues utilizando las mismas técnicas que se utilizan para entrenar a una IA para conducción automática, reconocimiento de caracteres y demás elementos de la visión por computador, pero esta vez entrenando a la IA para que sea capaz de visualizar toda la geometría superflua y eliminarla en el proceso.

Otra aplicación es la creación de modelos con mayor o menor detalle con la distancia, ya que en el desarrollo de videojuegos se suelen crear varios modelos de un mismo objeto según la distancia, gracias al uso de la Inteligencia Artificial esta puede generar de manera dinámica versiones con menos detalle a partir de un solo modelado, el más detallado, ahorrando así tiempo a los grafistas.

Control de la geometría de la escena vía IA en el hardware actual

VRAM

En el caso del hardware de AMD donde no tenemos unidades como los Tensor Cores la respuesta es no, en cambio en el hardware de NVIDIA si que es posible hacerlo y no nos extrañaría que NVIDIA a corto o medio plazo lanzará un algoritmo al estilo DLSS pero con la geometría de la escena.

Hay que tener en cuenta que los Tensor Cores en los juegos no se utilizan apenas, la prueba de ello es que si tomamos la herramienta para medir el rendimiento NSight, entonces podremos ver como la GPU los Tensor Cores apenas son utilizados, solo en la fase de post-procesado de la imagen para el aumento de la resolución a través del DLSS.

La idea es que en vez de utilizar una unidad de teselación de función fija o shaders para la teselación, que sean las propias unidades para la IA como los Tensor Cores para que de la misma manera que generan y destruyen píxeles hagan los mismo con la geometría. Lo cual se traducirá no solo en más detalle en los juegos, sino en una subida en la tasa de fotogramas.

Animaciones a través de la IA


Un adelanto de lo que vais a ver lo mostro Epic Games hace un par unos años en la GDC de 2018 es la animación de la geometría a través de la IA, la cual consiste en que la inteligencia artificial aprende los patrones de movimiento de una persona para aplicarlas a un modelado.

Tenéis que tener en cuenta que las animaciones en los juegos, especialmente las faciales son una de las cosas más dificiles de hacer en los estudios de desarrollo y gracias al uso de la inteligencia artificial será posible darle una animación correcta a estos.

Es otra de las aplicaciones de hacer que la IA se encargue de generar la geometría a tiempo real, hay muchos más, como el hecho de generar animaciones intermedias o modelados derivados de otros y generados de manera procedural.