Blog Personal.

GeForce

¿Que es la nueva unidad en los RT Core de las Geforce Ampere?

Nvidia ha dado información adicional acerca del nuevo RT Core para Ampere y de repente ha aparecido un nuevo bloque.

El Motion Blur no es algo nuevo sino que es algo que lleva años siendo aplicado en algún que otro juego como un efecto de post-procesado pero requiere una potencia computacional enorme con la rasterización en comparación con la potencia computacional necesaria en el trazado de rayos para aplicar el mismo efecto por lo que es un efecto que se beneficia del trazado de rayos por encima de la rasterizacióncomo es la generación de sombras y reflejos.

Pero lo que nos interesa es esa nueva «unidad» que han integrado. ¿Cual es su función? Supongo que ahora mismo muchos debéis estar un poco.

La diferencia básica es que la unidad de intersección de Ampere, cuando llega al final del recorrido del BVH y nos encontramos con una primitiva/triangulo no realiza la intersección del triangulo primero y devuelve el resultado de la intersección sino que además realiza la interpolación de la posición del triangulo respecto al tiempo, pero claro, decir esto y dejarlo así es decir lo mismo que en la diapositiva.

Con el trazado de rayos lo que hacemos es simular la luz y en la vida real no estamos viendo los objetos en el presente sino el pasado según la distancia a la que están y esa distancia se mide en parte según el tiempo en que la luz que emiten llega hasta nosotros. Es decir, nosotros vemos los objetos por la luz que emiten y si aplicamos esto al trazado de rayos y añadimos la constante tiempo podemos predecir la velocidad de cada objeto teniendo en cuenta la posición entre dos fotogramas y conociendo el tiempo y la posición podemos conocer la velocidad y por tanto saber a velocidad a la que los rayos llegan hacía la cámara con el objeto en movimiento.

Esto no debe confundirse con la interpolación de fotogramas de una película donde tenemos dos fotogramas y generamos un intermedio, aunque el concepto es el mismo.

¿En que se diferencian? Lo que buscamos es conocer es la velocidad de las primitivas geométricas (triangulos) entre fotogramas. Conociendo la velocidad a la que se mueve cada objeto entre el fotograma inicial y el final podemos re-construir la posición de cada objeto en los fotogramas intermedios. ¿Pero que tiene que ver esto con el desenfoque de movimiento o motion blur? Veamos lo que dice la Wikipedia.

El desenfoque de movimiento (término a veces reemplazado por la voz en inglés motion blur) es el rastro dejado por los objetos en movimiento en una fotografía o en una secuencia de imágenes como una película o una animación. Aparece cuando el objeto siendo grabado cambia su posición durante la captura de un fotograma debido a su velocidad o al movimiento de la cámara.

Por tanto el Motion Blur no es más que el hecho de colocar la información de posición de varios fotogramas en uno solo para crear una estela de movimiento. Necesitamos la interpolación de los triangulos porque el trazado de rayos requiere para los calculos de intersección saber la posición de estos en cada momento.

Su relación con el DLSS 2.0

Una de las novedades de la arquitectura Ampere es la implementación del Inline Ray Tracing que permite invocar a los RT Cores en cualquier momento del pipeline gráfico y esto significa que pueden ser llamados también en una función que utilice los Tensor Cores/Arrays Sistólicos.

Una de las diferencias del DLSS 2.0 respecto al DLSS 1.0 es el uso de vectores de movimiento. Dichos vectores de movimiento no es más que la velocidad de cada objeto en la escena que antes os he explicado.

El entrenamiento de la IA para el DLSS 2.0 no esta realizada en Turing sino en un super-ordenador basado en Ampere realmente. La parte donde afirmaron eso de de «Red de Inteligencia Artificial el doble de rápida» es una pista pero lo que pasamos por alto fue lo del uso de vectores de movimiento durante el entrenamiento de la IA.

Con tal de acelerar la generación de los vectores de movimiento Nvidia lo que ha hecho es añadir una sub-unidad nueva en la unidad de intersección para el trazado de rayos con tal de acelerar ese proceso dado que se trata de un elemento repetitivo y recursivo es ampliamente recomendable hacerlo con una unidad de función fija que ha decidido implementar dentro de la unidad de intersección.

Pero esto ocurre durante el entrenamiento de la IA y no es algo que se haga durante la inferencia. ¿Que significa esto? Una posibilidad es que Nvidia nos de a partir de las GeForce Ampere la capacidad de poder entrenar la IA con nuestros juegos en vez de tener que depender de sus super-ordenadores. ¿Es a eso a lo que se refieren los rumores con el «DLSS 3.0»? En realidad tendria sentido que a través de una red de computación distribuida del tipo malla pudiésemos sumar nuestros PCs para colaborar en la generación de algoritmos de IA para diferentes juegos o mejorar el algoritmo general de la IA pero eso ya entre dentro de la especulación. En todo caso creo que con esta explicación es más que suficiente por ahora.

Esto es todo, tenéis los comentarios de esta misma entrada para comentar y no olvideis que tenemos Discord.

4.5 2 votes
Article Rating
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Over

Está conectado al raytracing en el esquema. A mí me parece que es para bajar a la mitad de frecuencia la actualización del árbol bvh al predecir la posición de los polígonos mediante interpolación.

Del mismo modo su sistema anti latencia predice la posición de los objetos.