Aclarando lo del HDR y Xbox One Polaris

Curiosamente en la presentación que realizo Microsoft durante la GDC apareció esto en referencia a su apuesta por el renderizado utilizando un alto rango dinámico (HDR):

Captura de pantalla 2016-03-19 a las 8.44.48

La adopción será más rápida para el HDR que para los 4K, por lo visto Microsoft apuesta antes por el HDR que por los 4K de cara al futuro aunque ambas cosas son combinables por uno es sobre la información por pixel y el otro sobre el número de pixeles. ¿Pero que es el HDR? En realidad hace referencia a las HDR TV

20_Century_Fox_SDR_vs_HDR-790x260

El HDR es la habilidad de mostrar un rango más amplio y rico de colores, blancos mucho más brillantes y negros mucho más profundo. El HDR conserva el detalle en las áreas más brillantes y oscuras de un fotograma que se pierden en la imagen actual que se transmite por el televisor. La HDR esta pensada para dar colores mucho más vivos y cercanos a como los vemos en la vida real.

El HDR se basa en dos conceptos, uno es el brillo que que se mide en nits, hay que tener en cuenta que el ojo humano es mucho más sensible a los cambios de iluminación de un color que a diferentes colores. Los laboratorios Dolby sacaron una definición que ahora utilizan todos lo fabricantes, un nit es el equivalente a a la iluminación de una vela por m^2. Y el salgo que se va a ver en ese aspecto en los años siguientes va a ser bastante importante:

IMG_2890

Lo que llama poderosamente la atención es el hecho de haya una pantalla “Windows” que de repente sube de los 400 nits a los 10.000 nits. Pero lo que llama la atención es el ST.2084, una búsqueda rápida nos revela el siguiente documento:

Captura de pantalla 2016-03-19 a las 9.07.20

La curva logarítmica de la que hablan también se puede ver en la presentación que hizo Microsoft:

IMG_2888

Volviendo al documento de Dolby:

Captura de pantalla 2016-03-19 a las 9.11.27

Así pues estaríamos hablando en el caso de los videojuegos de RGB12 para el búfer frontal y RGBA12 para el búfer trasero, esto significan cambios importantes en el hardware y a un nivel diferente que el simple aumento de resolución y si me permitís voy a responder a un comentario en concreto.

Comentario Original:

Pero no hacen falta texturas de 16bits para tener HDR(?)
Los juegos ya trabajan en HDR y luego aplican tonemapping para comprimir el rango dinámico desde el primer Far Cry, y con PBR precisamente no hay información de luz en las texturas, así que 8 bits son suficientes.
Las tarjetas de AMD ya sacan color de 10 bits para quien usa espectros de color amplios, y si no recuerdo mal esa presentación decía que algunas tarjetas gráficas ya a la venta serían actualizadas para dar soporte a HDR.
Lo que no sé es si el HDMI 1.4 soporta HDR10 a 1080P, pero yo creo que no haría falta un nuevo modelo de XBOX ONE para esto.

Yo de lo que me fie fue de la diapositiva de Microsoft que decía que RGBA16 es suficiente y haciendo esta entrada descubro que el RGBA12 es suficiente. El HDMI 2.0 puede transmitir suficiente ancho de banda para 4K y 12 bits por componente. Supongo que con el HDMI 1.4 por ancho de banda los 1080P 12 bit son viables. Pero lo que esta claro es que para el soporte del nuevo estándar de HDR hacen falta unos 12 bits de color.

¿Entonces cual es el problema? Bueno, el problema no es el color que saquen sino el color que procesan, en especial en el tema del filtrado de texturas. El filtrado de texturas no es más que el cálculo del color de cada pixel interpolando la informacion de color de los pixeles adyacentes. ¿El problema? Esto requiere un enorme ancho de banda y desde hace una década las GPUs utilizan una cache de primer nivel al lado de las unidades de texturas para realizar esos cálculos de forma eficiente. Dependiendo del nivel de detalle en el filtrado se necesita más información o menos y de ahí a necesitar más ancho de banda o menos.

pic06

La formula del ancho de banda es:

Tasa de texturizado*Información por pixel*Número de Muestras= Ancho de banda para calcular el filtrado de ese pixel.

El número de muestras por cada tipo de filtrado son:

  • Bilinear: 4
  • Trilinear: 8
  • Anisotrópico: 16*n, donde es la precisión del filtro.

En las GPUs y al contrario de lo que ocurre con los ROPS donde todos comparten un espacio de memoria en común,en las TMUs cada una de ellas tiene una cache L1 asociada, en la arquitectura GCN hay 4 por CU y cada una de ella asociada a una unidad de texturas con 4 unidades (16 en total) unidades de carga/almacenamiento de datos por lo que puede leer cuatro datos (lo cual es normal porque las TMUs no procesan los pixeles individualmente sino en fragmentos de 2×2), pero lo que nos interesa es el ancho de banda de la cache L1.

gs4106-the-amd-gcn-architecture-a-crash-course-by-layla-mah-49-638

La TMU trabaja con 4 pixeles ínterpolados por ciclo de reloj, por lo tanto con filtro bilineal… ¿Pero a que resolución de color?

gs4106-the-amd-gcn-architecture-a-crash-course-by-layla-mah-69-638

La tasa de relleno se va a 1/4 en RGBA32 y RGBA32F, se va a la mitad en RGBA16F… Esto significa que el ancho de banda es para RGBA8, peor lo mejor es comprobar el ancho de banda para asegurarnos, tenemos unos 64B/ciclo por CU pero tenemos 4 TMUs, por lo que son 16B/ciclo y por tanto es obvió que el ancho de banda es para 32 bits de color (4 bytes) y por tanto RGBA8.

¿Entonces cual es el problema? Pues que si queremos tener la misma potencia en RGBA12 que en RGBA8 al menos hará falta aumentar el ancho de banda de la Cache L1 en un 50% o para asegurarse en 2X y esto significa tocar la interconexión entre las unidades de texturizado y la cache L1. Tened en cuenta que significa tocar esto:

Compute Unit

Que a nivel de hardware significa re-hacer cada una de las CUs/Graphic Cores marcadas en la GPU de Xbox One que se encuentra en el SoC:

Teardown-Xbox-One-processor-die-2

Por lo que lógicamente necesitamos una GPU con una arquitectura nueva que permite renderizar bajo el mismo rendimiento en RGBA12, esto significa un hardware completamente nuevo y de ahí lo de Xbox One Polaris, ya hemos visto como Microsoft apuesta por la HDR y por tanto debemos asumir que lo van a aplicar a las siguientes versiones de Xbox, no olvidemos las palabras de Phil Spencer:

Captura de pantalla 2016-03-19 a las 9.49.29

Es aquí donde la Xbox One Polaris entra en juego.

sgMROPS

Puede que esto sea solo una coincidencia en nomenclatura y la siguiente Xbox no tenga nada que ver, pero tal y como comente en la anterior entrada sobre este tema AMD esta también con el tema de la HDR, en especial están enviando el mensaje de que HDR en 1080P es mejor que 4K en SDR.

hdr-amd-radeon

Sumadle esto el hecho de que hay mucha gente que tiene televisores 1080P con soporte para HDR al tener soporte para 12 bits por componente y la diapositiva de Microsoft que el HDR tendrá una adopción más temprana que los 4K y veréis que el mensaje de Microsoft a Sony es el siguiente:

J-r-williams-batman-slap-robin

Es decir, Microsoft podría estar apostando por los 1080P+HDR en vez de los 4K que sería la apuesta de Sony. Pero en ningún momento Sony ha dicho que vaya a apostar por actualizaciones de hardware y por tanto por el modelo smartphone, el origen de de lo de la PS4K es Kotaku y no viene de una fuente primaria de Sony, aunque todo es posible, por el momento paciencia porque tanto una cosa como la otra no se han confirmado y lo que tenemos son indicios que apuntan a una tendencia.

Anuncios