Web Analytics
Conecta con nosotros

A Fondo

NVIDIA RTX y AMD Radeon: ¿Por que gana NVIDIA en trazado de rayos? La clave está en la arquitectura

Publicado el
trazado de rayos

El trazado de rayos se ha convertido en el presente de los videojuegos, gracias a la apuesta que han realizado los grandes del sector, NVIDIA y AMD, y al creciente apoyo que esta tecnología está recibiendo por parte de los desarrolladores. En este sentido, es importante destacar que el soporte de dicha tecnología en las consolas de nueva generación, PS5 y Xbox Series X-Series S, también está siendo clave para favorecer su adopción.

Los que nos leéis a diario ya sabéis qué es el trazado de rayos, cómo funciona y qué supone para el mundo de los videojuegos. En este artículo hicimos un análisis profundo con todas sus claves, vimos por qué es tan importante y descubrimos sus mecánicas, es decir, el modelo de rayos, impacto-fallo y colisiones, tres aspectos que son fundamentales a la hora de explicar el enorme impacto que tiene esta tecnología a nivel de rendimiento.

Durante los últimos meses también hemos visto diferentes pruebas de rendimiento, utilizando tarjetas gráficas RTX de NVIDIA y Radeon RX 6000 de NVIDIA en juegos preparados para aprovechar, de una forma u otra, el trazado de rayos, y la conclusión a la que hemos llegado ha sido muy clara: NVIDIA lleva la delantera, y de una manera bastante clara.

Sin embargo, sé que muchos de nuestros lectores no terminan de entender por qué hay una diferencia tan grande de rendimiento, en trazado de rayos, entre las tarjetas gráficas RTX 30 de NVIDIA y las RX 6000 de AMD, y por eso he decidido compartir con vosotros un artículo, donde vamos a responder a esa pregunta. Como siempre, si tras leer este artículo tenéis dudas, podéis dejarlas en los comentarios.

trazado de rayos

Metro Exodus Enhanced Edition con trazado de rayos al máximo.

Trazado de rayos: Consideraciones previas

La carga de trabajo que supone el trazado de rayos es la misma, con independencia del tipo de arquitectura que utilicemos. Calcular las intersecciones y las colisiones de los rayos es la base de dicha tecnología, y representa una «piedra muy pesada» que, en aquellas tarjetas gráficas que carecen de hardware especializado, tiene que calcularse a través de los shaders.

El estrés añadido que supone el trazado de rayos aplicado a una GPU sin hardware especializado es tan grande que esta no puede, salvo casos muy concretos, ofrecer un rendimiento mínimamente aceptable. No es complicado de entender, los mismos elementos del núcleo gráfico tienen que ocuparse de las tareas clásicas de rasterización, y a esto se añaden las intersecciones y las colisiones, lo que representa un consumo enorme de recursos, y eleva los milisegundos necesarios para generar cada fotograma.

Así, por ejemplo, para generar un fotograma por segundo sin hardware especializado, recurriendo únicamente a los shaders, podríamos registrar un tiempo de 51 milisegundos, mientras que combinando shaders y núcleos RT ese tiempo se reduciría a 20 milisegundos. Si añadimos los núcleos tensor, presentes en las soluciones gráficas de NVIDIA, el tiempo bajaría a 12 milisegundos.

Bien, ¿qué quieren decir esas cifras? Pues es muy simple, para mantener 30 fotogramas por segundo la GPU debe renderizar cada fotograma en 33,33 milisegundos, y si queremos mantener 60 fotogramas por segundo ese tiempo se reduce a tan solo 16,66 milisegundos. Con un tiempo de renderizado de 51 milisegundos, el rendimiento sería terrible, mientras que con un tiempo de 20 milisegundos podríamos jugar con fluidez, y con un tiempo de 12 milisegundos la experiencia sería totalmente óptima.

El hardware dedicado a acelerar trazado de rayos saca adelante tareas propias de dicha tecnología para reducir, en definitiva, el tiempo necesario para generar cada fotograma, pero tanto NVIDIA como AMD han seguido enfoques diferentes, y esto ha hecho que su rendimiento real sea muy distinto.

trazado de rayos AMD

AMD y trazado de rayos: Una aproximación limitada

Empezamos con AMD. Cuando NVIDIA confirmó su apuesta por el trazado de rayos allá por 2018, la compañía de Sunnyvale decidió esperar a que dicha tecnología empezase a estandarizarse. Esto hizo que las Radeon RX 5000 llegasen al mercado sin hardware dedicado para acelerar trazado de rayos, lo que las colocó, desde una perspectiva tecnológica, en una posición de clara inferioridad frente a las RTX 20.

Las Radeon RX 6000 se convirtieron, por tanto, en la primera generación de tarjetas gráficas de AMD en contar con hardware dedicado para acelerar trazado de rayos. Cuando Microsoft habló de la tecnología que había detrás del SoC de Xbox Series X pudimos confirmar cómo había implementado AMD el hardware dedicado a trazado de rayos en su arquitectura RDNA 2, y desde entonces mis expectativas se redujeron de forma notable, y mis previsiones no fueron nada buenas. Al final acerté en casi todo lo que comenté en este sentido.

En la arquitectura RDNA 2, la base de las Radeon RX 6000, tenemos una unidad de aceleración de trazado de rayos por cada unidad de computación. Una unidad de computación tiene 64 shaders y 4 unidades de texturizado, pero dicha unidad de aceleración de trazado de rayos comparte recursos con los motores de texturizado, lo que significa que no pueden trabajar de forma simultanea.

A todo lo anterior, debemos añadir, además, otras dos limitaciones importantes que presentan esas unidades de aceleración de trazado de rayos. La primera, y la más importante, es que esas unidades de aceleración de trazado de rayos trabajan con las intersecciones rayo-triángulo y con las delimitadoras de cuadro, que son las más intensivas y las que más recursos consumen, pero las intersecciones transversales BVH, que son un paso previo a aquellas, corren a cargo de los shaders.

trazado de rayos

Trazado de rayos en Cyberpunk 2077

Es posible reducir el impacto de las intersecciones transversales BVH mediante optimizaciones concretas en juegos para reducir el tiempo de renderizado, pero no siempre resulta viable, y cuando no se hace, o no se ejecuta de forma adecuada, la pérdida de rendimiento es notable, ya que se consumen recursos muy valiosos que podrían haberse dedicado a tareas de sombreado. Su segunda limitación es que carecen de la capacidad de trabajar de forma asíncrona.

¿Y por qué ha utilizado AMD este diseño en sus Radeon RX 6000? Creo que porque era la más efectiva en términos de coste y de espacio en el chip. No debemos olvidar que RDNA 2 es una arquitectura que fue diseñada para convertirse en el pilar central de las consolas de nueva generación, y que estas utilizan APUs, una solución donde el espacio en el chip no solo es muy limitado, sino que además se reparte entre la CPU y la GPU.

Dedicar mucho espacio a integrar hardware especializado en trazado de rayos no era una opción viable, sobre todo cuando has doblado el máximo de shaders, y has decidido recurrir a la caché infinita para mejorar el ancho de banda sin tener que recurrir a buses de más de 256 bits, ni a memorias de más de 16 GHz. La caché infinita ocupa mucho espacio en el chip, aunque al mismo tiempo su presencia está justificada, no solo por lo que hemos dicho, sino también porque, bien utilizada, puede ayudar a mejorar el rendimiento en trazado de rayos, ya que ciertas cargas tienen una dependencia mínima de la capacidad, y una dependencia enorme del ancho de banda.

trazado de rayos

Arquitectura Turing

NVIDIA: Ampere consagró, e impulsó, las bases de Turing

La aproximación de NVIDIA es totalmente distinta a la de AMD. El gigante verde integró los núcleos RT como un tipo de hardware dedicado a descargar por completo a los shaders de las tareas del trazado de rayos. Esto quiere decir que cada núcleo RT calcula las intersecciones transversales BVH, las intersecciones rayo-triángulo, las intersecciones delimitadoras de cuadro y el sistema de colisiones. En el caso de los núcleos RT presentes en Ampere (RTX 30), estos calculan también la interpolación de cada triángulo en el tiempo.

Cada unidad SM tiene 64 shaders, 4 unidades de texturizado y un núcleo RT en Turing, y 128 shaders, 4 unidades de texturizado y un núcleo RT en Ampere. Estos núcleos no comparten recursos con los motores de texturizado, pueden trabajar de forma totalmente independiente y asíncrona, de manera que, cuando la unidad SM lanza un rayo, los núcleos RT se ocupan de sacar adelante todo el proceso de acierto fallo, así como las colisiones. Este trabajo se puede realizar de forma asíncrona, como hemos dicho, lo que permite al programador de tareas ordenar la realización de todo el trabajo relacionado con el trazado de rayos, las cargas de computación y gráficos y, si procede, el trabajo de los núcleos tensor, de forma simultánea.

trazado de rayos

Arquitectura Ampere

En la arquitectura Ampere, renderizar un fotograma con trazado de rayos por software mediante los shaders requiere de 37 milisegundos. Con el apoyo de los núcleos RT, el tiempo se reduce a 11 milisegundos, y si aplicamos además los núcleos tensor el tiempo baja a 6,7 milisegundos. Son cifras verdaderamente impresionantes que confirman que NVIDIA ha logrado «domar» el trazado de rayos con Ampere, aunque creo que lo más interesantes está por venir, y que con las RTX 40 veremos un salto mucho más grande.

trazado de rayos

Cyberpunk 2077 con trazado de rayos

Os recuerdo, antes de terminar, que NVIDIA también utiliza los núcleos tensor para sacar adelante una parte importante de la carga de trabajo que representa el trazado de rayos, la reducción de ruido, uno de los pasos finales, y de los más importantes, que se realizan para completar el renderizado de cada fotograma. Sin este, las imágenes llegarían cargadas de ruido, y tendrían un aspecto sucio y deslucido. No debemos olvidar, además, que los núcleos tensor permiten activar la tecnología DLSS de NVIDIA, una técnica de reconstrucción inteligente que reduce el número de píxeles sin pérdida de calidad de imagen, y que aligera, de esta manera, la carga que supone el trazado de rayos.

AMD está trabajando en su propia alternativa, conocida provisionalmente como FidelityFX Super Resolution, aunque todavía no sabemos de qué será realmente capaz, y tampoco tenemos una fecha de lanzamiento confirmada, así que toca esperar. Con todo, y viendo lo que consiguió NVIDIA con la primera generación de DLSS, es probable que esa tecnología de AMD necesite de una revisión para terminar de madurar.

Editor de la publicación on-line líder en audiencia dentro de la información tecnológica para profesionales. Al día de todas las tecnologías que pueden marcar tendencia en la industria.

4 comentarios
  • kinetix

    unas aclaraciones

    -si, las unidades de TMF/RT al ser comprtida no podrian usarse a la vez para RT y mapeo/filtrado de las texturas, sin embargo, en la descripcion de la patente dice que las unidades RT estan en paralelo a las de TMF. lo mas que comprten es la unidad de acceso a cache de textura. asi esto es tal de esa maner, me parece que el asunto ha sido cosa hasta ahora cosa de optimziacion, como explotar ese desacople de computo teniendo en cuenta las operaciones de memoria, aprender los desarrolladores a usarlo de esa manera, y no dejarlo al codigo minimo comun

    -el RT y el mapeo/filtrado de texturas trabajan de manera asincronica a los shaders, excepto (y no siempre) en casos que un shader necesite muestras de una textura para un calculo como al usarlas como LUTs. los shaders controlan la operacion, pero son las unidades TMF/RT las que hacen desde la carga a los resultados. el hard de NVIDIA los shaders mandan ha hacer la operacion y esperan resultados en lo que siguen con otras cosas, pero toda la gestion es cosa de las undiades RT. como los shader tiene parte del trabajo, es una pequeña perdida que no se hace en raster. mcho queda tambien a como optimziar el codigo para aprovechar cualquier tipo y momento de concurrencia que se pueda

    -el mapeo y filtrado de texturas es rapido, muy rapido, el hardware TMF es muy especializado, es fijo para eso y casi el que se mantiene asi desde las primeras GPUs, poco ha cambiado (ahora AMD), asi que esa operacion puede hacerse casi enseguida y liberar las unidades para el RT, si realmente no pueden trabajar en paralelo

    -como los shaders controlan la operacion (cada paso del recorrido del BVH), y datos son controlados en sus registros, pueden hacerse cosas como recorridos del arbol BVH de maneras diferentes, o arboles diferentes, o usar el sistema para cosas que las unidades pueden ayudar, es decir puede incluso tenerse estructuras de datos y BVH especificas optimziados para cada juego y a la arquitectura. NVIDIA usa una estructura BVH especifica, no modificable, la que entienden las unidades RT. AMD supongo tratara de hacer las unidares RT algo mas inteligentes o independientes, para que los shaders tengan que hacrer menos trabajo

    -actualmente la unidades RT hacen por ciclo 4 intersecciones rayo-cubo (con el octree del BVH) y una rayo-traingulo (con la geometria). mi opinion es que AMD debe acelerar mas las intersecciones rayo-triangulo, si hicieran 2 el rendimiento casi se duplicaria, pues recorrer el octrr es mas rapido pues son poco pasos, pero la geometria final en una particion si son varios triangulos, unos cuantos segun se particione.

    -como lo ha hecho AMD permite que se usen siempre todas las unidades, todos los transistores, tenga un juego RT o no (posiblemente sea igual luego para el SS). esto es simiar al por que se paso de las arquitecturas fijas de pixel shader/vertex shaders a las arquitecturas unificadas. habia juegos que usaban mas pixes que vertes y otros al revez, o la cantidd de pixel shaders no alcanzaba. asi que se paso a unidades programables que pudieran ejecutar ambos y la carga se balancea segun sea necesario. por un lado se perdio algo (unidades especificas) pero se gano por otro (mas unidades para los necesario y ademas mas generales y programables para hacerlo a como viniera en gana, o permitieran)

    -una cosa que no se ve en la patente de AMD, es que se empleeen los datos del BVH comprimidos, cosa que el coste en memoria cache y accesos sea menor. NVIDIA los hace asi, los datos comprimidos de una manera especificay la decompresion se hace en la unidades RT por hard especilizado, esto es de o que le permite mas rendimito, pero tambien lo limita pues es inflexible en operacion y estructura de los datos. al parecer AMD no emplea datos comprimidos, pues ademas serian mas operaciones o unidades mas complejas y menos flexibles. si logran hacer algo al respecto, seria otro incremento de rendimiento y mas con la ayuda de la cache infinita

  • DAVID SALSERO

    +1 Opino igual que Tú. AMD ha hecho un Gran trabajo intentando meter GPU + CPU + RT algo complicado pero ya he leido que la siguiente Generación será capaz de superar a Nvidia por lo que todos estamos como locos de ver RDNA3
    Importante la proxima generacion de Portatiles de AMD Serán icreibles superando a intel
    ZEN3+ = DDR5 + PCI 4.0 + RDNA2 + USB 4.0 + fabricacion a 6nm a un precio asequible sin necesidad de tarjetas Graficas a no ser que seas un jugador que te guste jugar a 4k en un portatil.

  • Gregorio Ros

    Entiendo el optimismo, hacía mucha falta un AMD fuerte que plantase cara a Nvidia, no por considerar mejor o peor a una u otra compañía, tengo la convicción de que dejas solo a AMD y tienes la versión en rojo de Nvidia, sino en pro de la competencia que tanto nos beneficia a los usuarios. Ahora bien, ¿Creéis que Nvidia va a esperar sentada a que AMD le alcance?. Teniendo en cuenta el salto cualitativo de AMD creo que en este momento Nvidia está acelerando con todo para mantener o aumentar la diferencia actual.

    Por mi parte deseo que Nvidia mejore tanto en su próxima gama como en esta y que AMD sea capaz no solo de igualar la serie 30 de Nvidia, sino por lo menos empatar en la 40. Pero mas aún que Intel se meta por fin en el ajo por la puerta grande y les ponga mas nerviosos aún.

  • javi

    el RT es un engañabobos, es mas util estando desactivado

Lo más leído