Open GL Tag

Cómo sacar una señal 10 bits directamente de la tarjeta gráfica del ordenador

Esta entrada del blog pretende describir qué elementos necesitamos para visualizar 10 bits reales por canal (30 bits totales) con 1024 niveles en cada color usando solo la tarjeta gráfica del ordenador. Este texto nace con vocación de ayuda y cualquier aportación sobre este asunto será bienvenida con el objetivo de ir mejorando y actualizando esta entrada.

El artículo está centrado en programas profesionales del sector del vídeo/foto (Scratch, Da Vinci, Photoshop etc) y no en otros programas más genéricos (VLC, MPC HC, Quicktime etc)

Las cámaras de vídeo profesionales capturan hasta 16 bits por canal, por lo que postroduccir en el entorno anterior, significa perder información. Quizás el defecto más famoso es bandingel cual genera escalones notorios donde hay transiciones de colores progresivas. Además de un menor número de colores, ver 8 bits de los 10-12-16 que tiene el material original, afecta también a la saturación, rango dinámico (brillo/contraste) e incluso una evaluación menos precisa del nivel de ruido de la imagen.

Claro ejemplo de banding

Claro ejemplo de banding

1- Sistema operativo

En entorno Windows, oficialmente no hay nada escrito y/o actualizado a 2016. En documenos oficiales desfasados y foros de internet con buen prestigio en la actualidad, explican que solo Windows XP y 7 son capaces de proporcionar una señal de salida 10 bit RGB. Windows 8, 8.1 y 10 son un mar de especulaciones. Siempre hablando de las versiones 64 bits de estos sistemas operativos.

Imposibilidad de conseguirlo en Windows 8, 8.1 y 10

https://forums.adobe.com/thread/1295887?start=44&tstart=

https://forums.adobe.com/thread/506853?start=181&tstart=0

A favor de que sí se puede sacar 10 bits desde Windows 8.1 es este artículo del fabricante de monitores de alta calidad EIZO.

http://www.eizoglobal.com/support/compatibility/gpu/photoshopc_nvidia_amd/index.html

En entorno Mac, la situación es más sencilla: solo si tienes instalado el sistema operativo «El Capitán» (OS X 10.11) o superior, podrás visualizar a 10 bit RGB. Todo las versiones anteriores no pueden.

http://macperformanceguide.com/blog/2015/20151105_2300-OSX_ElCapitan-10bit-dualNEC.html

Captura de pantalla de los 30bits RGB de la gráfica FirePro D700 en el sistema operativo El Capitán

Captura de pantalla de los 30bits RGB de la gráfica FirePro D700 en el sistema operativo El Capitán

2- Software

La mayoría de softwares dedicados al vídeo/fotografía en todas sus variables (edición, postpo etc) son capaces de generar una salida de 30 bits. La cuestión es qué tecnología emplean para ello: DirectX, Open CL, Open GL etc… en su interfaz de usuario. Mayoritariamente se usa el Open GL y eso, a su vez, genera otra necesidad que veremos en el punto siguiente.

Captura de pantalla en Photoshop activando 30 bits RGB (el pantallazo solo captura el escritorio en 8bits y por eso aparece banding)

Captura de pantalla en Photoshop activando 30 bits RGB (el pantallazo solo captura el escritorio en 8bits y por eso aparece banding)

3- Tarjeta gráfica

Sacar 10 bits por canal usando el motor gráfico Open GL solo está al alcance de dos clases de tarjetas gráficas: en el fabricante NVDIA, la serie Quadro; y en el fabricante AMD, la serie FirePro.

http://nvidia.custhelp.com/app/answers/detail/a_id/3011/~/10-bit-per-color-support-on-nvidia-geforce-gpus

El resto de series, por ejemplo, las GTX Geforce aunque sean de muy alta gama están en un terreno de indefinición absoluta. La combinación de los diferentes drivers de las GPU con distintas versiones del software sumados a sacar la señal por HDMI a TV ‘domésticas’ etc crea una irregular lista de dudas, especulaciones y hechos, prácticamente exclusiva de cada usuario y su equipamiento.

Sistema de gráficos de 10 bits en un ordenador

Sistema de gráficos de 10 bits en un ordenador

4- Interfaz de comunicación

Los fabricantes mayoritariamente habilitan los 30 bit en la conexión Display Port v1.2 (o superior). En menor medida el HDMI v1.3 (o superior). Necesitamos el mismo puerto de conexión en el monitor que en la tarjeta gráfica y el consiguiente cable compatible. Merece la pena reseñar que las especificaciones oficiales de ambos estándares soportan 10 bits por canal y más pero, en la práctica, la mayoría de fabricantes solo lo habilitan en el Display Port.

Y por supuesto, hay que evitar toda clase de transformadores de señal activos/pasivos, del tipo Thunderbolt a Display Port, HDMI v2 a Display Port etc… donde la mayoría de estos dispositivos acaban cortando la señal a 8 bits por canal.

Conexión a 10 bit por HDMI v2 + gráfica QUADRO M4000

Conexión a 10 bit por HDMI v2 + gráfica QUADRO M4000

5- Monitor

Obviamente el panel del monitor tiene que ser 10 bit nativo y tener las conexiones adecuadas vistas en el punto anterior. Y son la minoría. La mayoria, por este orden, son paneles 6 bit + HFR, 8 bits nativo y 8 bits + HFR (que básicamente consiste en añadir ‘dither’ a la señal entrante para conseguir mejores transiciones entre esos 8 bits)

Caso práctico

He podido confirmar que con un equipo Windows 8.1 Professional, Nvidia Quadro M4000, cable Displayport de calidad, monitor HP z27x, drivers actualizados y usando la suite Adobe CC 2015.2 sí funciona la cadena de los 10 bits.