Hace unos años, cuando Imagination compro a Caustic Graphics, la posibilidad de tener Ray Tracing implementado en los juegos de una forma en la que la industria no tuviese que echar por tierra todo el trabajo previo se hizo realidad. ¿La realidad? Con solo iluminación directa y sin los objetos de la escena refractando la luz que llega de ellos entonces la rasterización es lo suficientemente buena, con luz indirecta esta se vuelve matemáticamente imprecisa y la perdida de información se convierte en una pérdida de detalles.

Durante más de veinte años los gráficos por ordenador a tiempo real han estado limitados a ser mejoras de OpenGL, el cual se basa en la rasterización, pero dicho algoritmo no puede solucionar todos los problemas visuales. ¿La solución? Dejar que la rasterización se encargue de solucionar la iluminación directa en la escena (E+KE) y dejemos que el K2E pase en manos del trazado de rayos.

A este concepto se le llama Hybrid Rendering por el hecho que combina ambos algoritmos, si hablamos de una escena solo con iluminación directa entonces el Ray Tracing es muy ineficiente y es un malgasto de recursos, en cambio para la indirecta ocurre al contrario.

En 2018 Microsoft presento la API DirectX Ray Tracing por primera vez bajo los mismos principios de los que había hablado Imagination en años anteriores, pero existía un problema para la adopción a tiempo real, el cual se puede ver en el algoritmo del trazado de rayos más básico.

for(each pixel (sample) on the viewing area)
{
   for(each primitive in the world model)
   {
      if(ray-pixel intersection)
      {
          select the frontmost intersection;
          recursively trace the relection and refraction rays;
          calculate color;
      }
   }
}

El cálculo de la intersección era algo que se hacía a gran escala y de manera continuada, por lo que era necesario la creación de una unidad encargada de ello, el resultado fue el RT Core integrado en las RTX 2000. Algo que pillo por sorpresa a AMD, ya que su RDNA no salió salio meses más tarde, pero sin Ray Tracing.

Los viral marketers de AMD salieron a decir rápidamente que el Ray Tracing era un bluff de marketing de NVIDIA pese a que la única manera de mejorar los gráficos a nivel visual es gracias al trazado de rayos. ¿El motivo? No solo está en la iluminación indirecta, sino también en la representación de los materiales. El caso es que pillo a AMD con las bragas bajadas y su solución no fue otra que crear un parche para RDNA 2.

Es decir, en RDNA 2 han lanzado una unidad con menos capacidades incluso que el RT Core de la primera generación de NVIDIA, RTX 2000, para competir contra la RTX 3000. Este es el elefante en la habitación del que no se habla en ningún momento y que los fanáticos de AMD han estado tapando durante todo este tiempo. El equivalente al RT Core de AMD para RDNA 2 y consolas tiene importantes carencias. Las cuales quedan confirmadas con una patente asignada a la compañía.

Y esto tiene consecuencias muy claras:

Ahora bien, vayamos a las consolas de videojuegos, en especial por un tema que ha sido polémico en los últimos días:

El recorte en fotogramas de GT7 in-game por culpa de la pésima unidad para acelerar el trazado de rayos de AMD tiene que ser cuanto menos para llorar y no es por falta de potencia en la consola, es problema de AMD que en RDNA 2 ha hecho una chapuza para salir del paso y decir que sus tarjetas gráficas ofrecen Ray Tracing. Y señalo a AMD por el hecho que en Xbox Series X y S ocurre lo mismo:

Pero claro, había que mantener la compatibilidad hacia atrás, el Stack de juegos y herramientas de desarrollo y eso implica ir con AMD y sus limitaciones para el Ray Tracing. Y es que recordemos que implementar una tecnología requiere entre 4 y 5 años.

Quizás unas eventuales PS5 Pro o Xbox Series Y tengan una Ray Accelerator Unit de AMD mejorada que pueda realizar el recorrido por el árbol BVH y no tener que depender de un shader, aparte de otras mejoras. Sinceramente las consolas son MUY decepcionantes técnicamente hablando y no son para mí revolucionarías ni suponen un salto generacional.

El problema de la iluminación indirecta hace diez años que se habla y todavía no tiene solución y es una pena, pero en este caso es por la miopía de AMD. Realizar un equivalente al nivel de RT Core de NVIDIA y no una versión limitada del mismo nos hubiese dado un GT7 con Ray Tracing al menos a 1080p, incluso con el resto del SoC sin cambiar.