Tomad esto con pinzas por favor, sed escépticos porque es algo que por el momento no se puede corraborar.

Imagination PowerVR Wizard, su influencia sobre DirectX Raytracing y el futuro hardware de Nvidia y AMD.

Hace unos años Imagination mostro una versión modificada de su PowerVR Series 6 a la que se le añadio la capacidad de hacer lo que se dice Hybrid Raytracing por hardware. Esto lo hacía añadiendo una serie de elementos adicionales al hardware respecto al PowerVR estándar (marcados en azul en diagrama) que permitian la aplicación de lo que se llama Raytracing Híbrido, basado en renderizar una escena con iluminación directa utilizando la rasterización para luego calcular la iluminación de la escena aplicando al Raytracing como si fuese un efecto de post-procesado.

PowerVR-Ray-Tracing-rendering-pipeline-2f08_Ray-tracing-in-games_Hybrid-rendering-in-a-game-engine

¿Ventajas de este planteamiento? La calidad de imagen por el hecho de utilizar una iluminación más compleja y aproximada a la realidad mejora enormemente.

 

El problema de Imagination es que su hardware nunca se popularizo y encima su mayor cliente, Apple, los dejo en la estacada al hacer una versión propia y lo suficientemente modificada de su arquitectura para no tenerles que pagar regalías. Pero Apple nunca se intereso y nunca copio la parte Raytracing que había creado Imagination, quienes no solamente desarrollaron el hardware sino que lanzaron una versión ampliada del OpenGL ES 3.1 con las extensiones necesarias, así como el pipeline para el Hybrid Rendering.

Ahora bien, las malas lenguas comentan que el DirectX Raytracing es una adaptación a DX12 hecha en colaboración entre Imagination y Microsoft con una diferencia crucial. Imagination y Microsoft estarian licenciando las piezas necesarias para convertir una GPU convencional en algo más parecido a lo que es la PowerVR GR6500, es decir, a las futuras Radeon y a las futuras GeForce se le va a añadir hardware de función fija para realizar renderizado híbrido de manera más eficiente.

¿La solución actual? Lo que ha propuesto por el momento Microsoft es que se utilicen los Compute Shaders para emular el funcionamiento de las piezas de función fija que serán añadidas en el hardware en futuras GPUs con tal de tener el hardware preparado para ello. Microsoft con tal de estandarizar la solución lo que ha hecho es tomar la misma tecnología de Imagination y ambas la han licenciado tanto a AMD como a Nvidia para que sea colocada en sus GPUs o más bien adaptada a sus arquitecturas con tal de facilitar la estandarización.

El problema es que Nvidia ha generado mucha confusión con el hecho de que se utilizaran en la GDC su GPU Volta V100:

«DXR, la API de raytracing de Microsoft», dice Tomasi, «Esta basicamente contruida encima de DirectX y espero que las GPUs capaeces de ejecutar computación al nivel DX12 sean capaces de correr DXR».

Luego más tarde añade.

La GPU Volta tiene en su interior algo que puede puede aprovechar la demandante colección de carácteristicas del RTX pero Nvidia no dice ual es «Hay definitivamente funcionalidad en Volta que acelera el Raytracing» nos ha comentado Tomasi «Pero no puedo comentar lo que es».

Atención a esta cita, que luego volvere a ella.

¿Que es lo que ocurre? RTX y DXR no son lo mismo, RTX son en concreto son una serie de extensiones para DXR pensadas para aprovechar las capacidades únicas de Volta que en este caso son los Tensor Cores y se utilizan para quitar el ruido de la imagen que se genera al renderizar una escena en Raytracing puro al utilizar pocas muestras por pixel.

spp-compare-1

Eliminar el ruido de la escenas Raytracing es una tarea que requiere una cantidad enorme de muestras por pixel y con ello de potencia. De ahí a que se planteen soluciones para eliminar el ruido como es el uso de algoritmos IA/AI ejecutandose en los Tensor Cores para eliminar el ruido de las escenas.

aiaoptix_001.png

Pero esto es para Raytracing puro y en tiempo real donde se busca la velocidad por encima de la belleza los Tensor Cores no tienen ninguna utilidad por el momento y son completamente prescindibles. Vamos, que Microsoft los ha rechazado de lleno como pieza de hardware estandar en DirectX Raytraing. De ahí a que aunque se utilice Volta para el desarrollo en DXR realmente se esta utilizando porque su alta potencia permite «emular» via Compute Shaders con la suficiente soltura y velocidad lo que se hará en un futuro a corto-medio plazo con unidades de función fija especializadas incluidas en el hardware.

¿Y que función tendría ese hardware especializado? Pues principalmente acelerar el cálculo de la intersección de rayos, recordad que el Raytracing es Raycasting recursivo donde el algoritmo principal es:

Por cada pixel
{
 Por cada objeto dentro del pixel 
 {
 Sí el rayo a través del pixel intersecciona con el objeto y si dicha
 intersección es más cercana que la profundidad almacenada
 {
 Ejecuta el shader sobre el pixel y actualiza el color.
 }
 }
}

Es en el cálculo de la intersección donde las unidades de función fija tomarían su importancia al ser un proceso que siempre es repetitivo y se aplicaría de manera recursiva. Por el momento se hace via Compute Shaders pero el concepto sería mover dicha parte del proceso a hardware especializado. Hardware de función fija especializado cuya implementación es al menos una orden de magnitud menor en cuanto a costes y no consume la potencia de los shaders dejandolos libres para otras funcionalidades que si que no se podrían hacer con una GPU de función fija.

Sobre el hardware dedicado para Raytracing de la PowerVR GR6500 (el cual será adoptado por Nvidia y AMD) podemos leer:

El PowerVR GR6500 incluye hardware especifico para Raytacing que provee aceleracion por hardware de todo el flujo del trazado de rayos, incluyendo la construcción y atravesamiento de modelos.

1_PowerVR GR6500 GPU - PowerVR Wizard GPUs

  • un ray tracing data master que alimenta con los datos de interseccion de los rayos al planificador principal, en preparación para que se ejecuten los shaders, los cuales evaluan los datos constribuidos por el rayo.
  • Una Ray Tracing Unit (RTU)  especializada y de función fija que calcula las consultas sobre la intersección de los rayos, además de reunir información sobre la coherencia de los rayos con tal reducir consumo y ancho de banda.
  • Un scene hierarchy generator para acelerar las actualizaciones sobre objetos dinámicos.
  • Un frame accumulator cache que provee acceso disperso con escritura al búfer de imagen.

Lo más importante, es que estos bloques no afectan el rendimiento en shading del pipeline tradicional debido a que no utilizan los FLOPS de los Shaders para realizar las tareas relacionadas con el Ray Tracing.

Unidades de función fija adaptadas tanto a la arquitectura de AMD como la de Nvidia las veremos en las GPUs que deberían lanzarse al mercado a partir del año que viene. Que será cuando Microsoft se saque el conejo de la chistera definitivamente.

DXR en «Scarlet»

Microsoft se esta guardando estratetigicamente esta carta de cara a lo ellos internamente llaman «Scarlet» la cual esta planteada por lo visto como una versión «Pro»de la Xbox One X. Scarlet no sería una reacción alérgica a la supuesta filtración de datos de PS5/Epsilon sino que llevaría un mayor tiempo en los laboratorios de Microsoft habiendo sido planteada como una versión mejorada del hardware de la Xbox One X siendo una de estas mejoras la implementación de hardware dedicado para el DXR.

RonSurprised

Pe… pero Urian… Te lo estas inventando…

impossible

Vamos, ver, las Xbox siempre y repito, siempre implementan versiones de DirectX más avanzadas que las de PC. Ya lo vimos con Xbox 360…

2814933-xbox360lol3

… Y lo vimos con Xbox One en su día.

Xbox-One-API-DirectX-11.X.png

Es por motivos tácticos que Phil Spencer en su entrevista concedida a Giant Bomb solo hablo de una serie de obviedades en las que coinciden por el momento con lo que tiene Sony para PS5/Epsilon pero su carta maestra se la guardán y evitan por completo mencionarla en todo lo que tenga que ver «Scarlet» pero dicha funcionalidad no va a ser implementada en forma de renovación completa del hardware respecto a Xbox One X, porque dicha consola ya realizo el cambio de hardware necesario (Ver la entrada que hice hace unas semanas) sino que basicamente que el aprovechamiento de las funcionalidades adicionales de «Scarlet» en los juegos de Xbox One X se hará a través de un parche pero no habrá un segundo SKU de los juegos porque el código base será el de Xbox One X.

 

¿Y como busca mejorar visualmente Microsoft los juegos de Xbox One X? Basicamente pretenden que se hagán los siguientes cambios sobre los juegos ya existentes, utilizar el trazado de rayos para:

  • …. Iluminación indirecta eliminando con ello los mapas de luces convencionales.
  • … Sombras directas e indirectas eliminando los mapas de sombras convencionales.
  • … Ambient Occlusion
  • … Reflejos.

Pero donde vamos a ver un cambio realmente significativo va a ser en la representación de los materiales.

shiny-pixels-and-beyond-realtime-raytracing-at-seed-16-638.jpg

Y sobretodo en la representación de las capacidades de transparencia y translucidez de los materiales.

Materiales2

Todo esto utilizando un pipeline híbrido para renderizar la escena con algunos cambios menores en el motor de juego con tal de aprovechar las capacidades de la nueva tecnología. Si Microsoft la implementa entonces le dará una ventaja enorme a nivel visual respecto a PS5/Epsilon. Aunque hay que tener en cuenta que el aplicar el pipeline híbrido puede llevar que en ciertos juegos se rompa por completo la coherencia artística y muchas veces hasta la estética conseguida por la presentación del juego. Esto lo digo para que no os espereis que todos los juegos apliquen una reforma visual extrema en ese sentido sobre los juegos ya existentes por simples motivos artísticos.

Ahora bien… Muchos os preguntaréis… ¿Como es posible que Sony no lo vaya a implementar si ambos van a tener el mismo proveedor? Esto es por el procesador de comandos propietario de Microsoft en la GPU que le ha permitido implementar sin problemas DirectX con extensiones a futuro en cada nueva Xbox. Sony en cambio se ha tenido que contentar con las migas por un motivo muy simple que no es otro que Sony no es una empresa dedicada a realizar APIs gráficas como Microsoft. Sin ir más lejos, GNM que es su API gráfica deriva de Mantle que es la API al estilo DX12 que AMD creo para su arquitectura GCN y que ha servido como base para Vulkan. ¿El problema de Vulkan? Que respecto a I+D el consorció Khronos va varios años atrasada respecto a Microsoft y lo más seguro es que empiecen a aplicar los cambios en la API en el momento en que el hardware llegue al mercado de masas en PC y no antes.

¿Es posible que AMD y Nvidia saquen extensiones para el hardware DXR en Vulkan y de ello se aproveche Sony para PS5? Sería posible si no fuese porque Microsoft esta guardando bajo llave la implementación de las unidades de aceleración necesaria al menos hasta el año que viene o hasta cuando sea necesario bloqueando el acceso de la tecnología a Sony. ¿Pero acaso Sony no lo sabe? El tema esta en que el RPV de Sony les impide enfrentarse a Microsoft en ese aspecto, es decir, tenemos a Microsoft utilizando sus puntos fuertes de cara a lo que será «Scarlet».

Pero en este E3 Microsoft nos ha dado una pista enorme, presentando una concepto demo de como será la siguiente generación a nivel visual.

El nivel visual presentado en Halo Infinite es tal que se están preguntando en Digital Foundry si lo que ha mostrado Microsoft de manera vedada es un adelanto conceptual de lo que podríamos ver en la siguiente generación.

Se ha armado mucho follón de manera idiotica con el gameplay de The Last of Us 2, pero nadie ha hablado del de Halo Infinite, el cual perdonad que os diga pero si alguien me viene y me dice que eso se ejecuta en una Xbox One estandar o una Xbox One S mi reacción va a ser…

Jameson

No, en serio, voy a conceder la duda de que vamos a ver una versión para Xbox One X pero sin utilizar la aceleración Raytracing en ese aspecto, Microsoft va a lanzar la Xbox One XS el año que viene como una versión a 7nm y abaratada de la Xbox One Xutilizando además memoria GDDR6 para disminuir en consumo y costes para reemplazar la Xbox One normal, mientras para el año que viene o para 2020 van a lanzar «Scarlet» que es la versión mejorada con los aceleradores para el raytracing que será lo que marque la diferencia visual situando a la consola en la parte más alta del mercado como se situa ahora mismo la Xbox One X pero sin ser el hardware base para los juegos, siendo ese la Xbox One X a no ser que Microsoft cambie de idea a última hora, cosa que personalmente me parece muy poco probable viendo el ecosistema de desarrollo, herramientas y juegos que actualmente están construyendo para la Xbox One X y no tendría sentido tirarlo por la borda a corto plazo.

Tened en cuenta que sin el hardware dedicado para el Hybrid Raytracing la potencia necesaria aumenta a niveles que serían perjudiciales para la velocidad de ejecución de los juegos. Si Microsoft se guarda su «Secret Sauce» tendrán una ventaja enorme respecto a una Sony que en estos momentos se esta dedicando a sacar músculo visual en sus presentaciones. Pero esa solo es parte de la estrategía de Microsoft para optar por la cima.