NVIDIA ha apostado en las RTX 50 por el renderizado neuronal, que es una forma de mantener vivo al renderizado tradicional aplicándose intensivamente redes neuronales a todas las etapas de generación de gráficos. Inteligencia artificial, vamos. Si en 2018 la compañía estaba segura de que para 2023 el primer juego íntegramente creado con trazado de rayos llegaría el mercado, con la llegada de los transformadores a la IA en aquel año lo cambió todo, incluidos los planes de NVIDIA, pasando a la idea de aplicar IA generativa a todo. Es más práctico, más sencillo y con mayores posibilidades. Así que ese renderizado neuronal se va a integrar en DirectX gracias al trabajo inicial realizado por NVIDIA, que es el rompehielos de todas las tecnologías en el sector de las GPU.
Por su carácter abierto, Microsoft también está trabajando junto a otras compañías relevantes como Intel, AMD y Qualcomm para definir las nuevas API relacionadas con el renderizado neuronal. Así que seguramente no pasará de este año que anuncien sus versiones del nuevo kit RTX de renderizado neuronal que prepara NVIDIA para que se añada a los juegos. De hecho Microsoft dice que esta API estará disponible «pronto», pero eso puede ser entre mañana y nunca.
La idea central del renderizado neuronal es habilitar el uso de los núcleos tensoriales, matriciales, o como los llame el fabricante de la GPU, en las distintas etapas de la tubería gráfica y no solo al final para procesar cosas como el trazado de rayos o el escalado de imagen. Los sombreadores (shaders) de una GPU se llaman así porque al final de la generación de un fotograma lo que realmente determinan es el nivel de iluminación de los píxeles que componen una imagen. Era mejor llamarlos sombreadores que mecheros/encendedores (lighters). Cosas graciosas de la mierda del inglés.
La IA se aplica ahora mismo al final de la tubería para mejorar el nivel de iluminación de lo ya generado por los sombreadores y los núcleos de trazado de rayos, teniendo en cuenta efectos como humo, fuego, luces fuertes, etc. La idea de introducir los «vectores cooperativos» es que se pueda aplicar IA antes en el proceso de renderizado, desde optimizar la compresión de memoria en el paso de información entre GPU y VRAM hasta aplicarla en la aplicación de las texturas a los modelos 3D que se van generando. O sea, aplicarlo poco a poco, con menos impacto en la latencia en el proceso de renderizado tradicional, y cuando se consiga el resultado óptimo de cara al proceso de renderizado. Tal cual como se aplica ahora, al final de la tubería, puede producir grandes retardos, algunas veces sin una gran mejora de calidad de imagen, y es lo que realmente hace caer la tasa de fotogramas.
En esto juegan un factor importantes los «sombreadores neuronales», que son como los tradicionales pero son redes neuronales que se pueden ejecutar en los sombreadores físicos de la GPU. Los sombreadores físicos son capaces de enviar información a los núcleos tensoriales/matriciales/loquesea en mitad de la generación de gráficos. Por «sombreador neuronal» no me refiero a los núcleos o sombreadores de la GPU. También se le llama «sombreador» a los pequeños programas que se ejecutan en los sombreadores y que determinan, por ejemplo, efectos de humo o similares, que afectan notablemente a la forma de definir el nivel de iluminación de un píxel. En este caso «sombreador neuronal» es código, una red neuronal adaptada para ser ejecutada en los sombreadores físicos.
En este renderizado neuronal hay un proceso de entrenamiento que pueden realizar localmente los desarrolladores para mejorar el renderizado, en el cual se compara la salida tradicional con la que se genera mediante el sombreado neuronal. La información se realimenta para mejorar el proceso de mejora de imagen. Para ello NVIDIA ha añadido el lenguaje de sombreado Slang ('jerga') para dividir la tarea para poderse abordar sin una supercomputadora y amoldarlo al código qué sí pueden ejecutar los sombreadores físicos de las GPU.
Así que NVIDIA ha desarrollado, siendo compatible con las propias API que tendrá DirectX, las bibliotecas básicas que he comentado antes: compresión neuronal de texturas, para comprimir eficientemente texturas en su movimiento por la VRAM a la GPU, y según NVIDIA será hasta siete veces más rápido; materiales neuronales, para la aplicación en tiempo real de código de sombreadores exigentes como porcelana o seda de una forma hasta cinco veces más rápida; y caché de brillo neuronal, que tiene que ver con la determinar eficiente de un «rebote infinito» de los rayos del trazado de rayos para determinar el nivel de brillo de los píxeles.
Lo anterior hay que programarlo porque, bueno, los sombreadores neuronales son código que hay que ejecutar en los sombreadores físicos, y eso hay que meterlo a mano en los juegos. Lo que cambia en las GPU de las RTX 50 para este nuevo kit RTX y que probablemente no se permita en las RTX 40, como he dicho, es que rompe la tubería tradicional de ejecución. No tengo claro que en el esquema físico actual de las RTX 40 y anteriores se pueda pasar o recibir información de los núcleos tensoriales tras, por ejemplo, crear los vectores o tras aplicar las texturas.
NVIDIA también aplica todo esto a un nuevo kit que es de caras neuronales de RTX, que permitirá un mayor nivel de realismo a la generación de personajes en los juegos. Por último, también añade la biblioteca llamada megageometría de RTX para poder aplicar trazado de rayos a cien veces más triángulos —el componente mínimo del renderizado actual de cualquier objeto generado de una escena— que si no se usara. El motor Unreal 5 lo va a usar en su característica Nanite.
Vía: Microsoft, NVIDIA, NVIDIA (2).