Compatibilidad con pantallas HDR multiplataforma en Unity 2023

DAMIAN NACHMAN / UNITY TECHNOLOGIESSenior Technical Product Manager
Aug 15, 2023|10 minutos
Compatibilidad con pantallas HDR multiplataforma en Unity 2023
Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

Saludos del equipo de Unity Graphics. Nos complace anunciar que a partir de Unity 2023.2.0a18 (y 2023.2 beta), el Editor de Unity y los Reproductores Autónomos ahora proporcionan soporte multiplataforma para salida HDR y compatibilidad total con el Universal y High Definition Render Pipeline.

Cada vez hay más pantallas de alto rango dinámico (HDR). Son capaces de reproducir imágenes con picos de brillo más altos y una gama cromática más amplia para lograr un mejor contraste (luces/sombras) y saturación del color. El resultado son variaciones más realistas de la luminancia en las escenas, un mayor detalle de las superficies y una mejor percepción de la profundidad.

Vista de gama HDR: El triángulo más grande representa el espacio de color Rec.2020

Antes de compartir más información sobre cómo activar la visualización HDR para tu proyecto, junto con la compatibilidad de plataformas y directrices útiles, repasemos rápidamente los conceptos de renderizado y visualización HDR.

Representación y visualización HDR

Cuando el renderizado HDR está activado, la cámara renderiza la escena en un framebuffer de coma flotante, lo que permite que el canal de renderizado almacene una mayor gama de valores de color y preserve mejor los detalles. Los cálculos de sombreado, como la iluminación y el posprocesamiento, se realizan utilizando valores más precisos (en comparación con el renderizado SDR), lo que da lugar a resultados más convincentes y realistas.

Aunque el renderizado HDR ha sido el flujo de trabajo por defecto durante años, la falta de una pantalla compatible con HDR limita la profundidad de color de la imagen presentable a un máximo de 8 bits por canal. Esto limita el número máximo de colores que puede representar un píxel (16.777.216 valores de color diferentes) y la gama máxima de brillo. El mapeo de tonos HDR a SDR se utiliza para reasignar los valores HDR del búfer de color a un rango dinámico bajo y, opcionalmente, aplicar la corrección gamma, antes de escribir finalmente los resultados en la imagen de la cadena de intercambio para su presentación.

Unity 2022.1 introdujo soporte de visualización HDR para el High Definition Render Pipeline (HDRP), cuando se dirige a plataformas de escritorio y consola. Esto funciona estableciendo el espacio de color nativo del dispositivo al crear la cadena de intercambio y utilizando la asignación de tonos HDR personalizada para reasignar el contenido del búfer de color al rango HDR nativo de la pantalla. A continuación, se aplica la codificación HDR como paso final antes de escribir en la imagen de la cadena de intercambio HDR.

Con la salida HDR activada, el formato de imagen de la cadena de intercambio se ajusta para permitir una mayor profundidad de color (10 ó 16 bits por canal). Esto permite que cada píxel represente una gama mucho más amplia de posibles valores de color (aproximadamente 68.000 millones de valores diferentes) y presenta un rango de brillo muy superior.

Con el lanzamiento de Unity 2023.2, el Editor de Unity y los Reproductores Independientes ahora proporcionan un mapeo de tonos HDR completo y soporte de visualización en todos los conductos de renderizado y plataformas capaces.

Activación de la visualización HDR en el proyecto

Puedes encontrar los nuevos ajustes de visualización HDR en los ajustes del reproductor de tu proyecto en Editar > Ajustes del proyecto > Reproductor > Otros ajustes:

  • Permitir salida de pantalla HDR
  • Utilizar salida de pantalla HDR

Estos ajustes habilitarán la salida HDR para Unity Standalone Players y el Editor cuando corran en plataformas soportadas.

Captura del editor en movimiento de cómo activar la configuración del reproductor HDR

Con la salida HDR activada, puede configurar opcionalmente la Profundidad de bits de la cadena de intercambio para establecer una profundidad de color preferida más baja (10 bits por canal) o más alta (16 bits por canal) para la imagen presentada. Nota: No todos los dispositivos admiten formatos de búfer de 16 bits, y pueden recurrir a los de 10 bits.

Cuando se utiliza el Universal Render Pipeline (URP), asegúrese de que los activos del render pipeline en uso están configurados para permitir el renderizado HDR. Seleccione los activos RP incluidos en el proyecto (normalmente se encuentran en la carpeta Activos > Configuración ), luego navegue hasta el inspector del proyecto y active Calidad > HDR.

Activación de la visualización HDR en la configuración del reproductor del editor de Unity

Por último, asegúrate de que el mapeado de tonos HDR está activado añadiendo un componente de mapeado de tonos al volumen de postprocesado que afecta a tus cámaras. Cuando la salida HDR está activada, los siguientes ajustes de mapeado de tonos deben ser controlados por las capacidades HDR de la pantalla:

  • Brillo mínimo admitido
  • Brillo máximo admitido
  • Valor blanco del papel: Este valor representa el brillo de una superficie blanca como el papel representada en la pantalla, que determina el brillo general de la pantalla.

Puedes acceder al rango HDR de la pantalla y al valor de blanco del papel mediante una API de C#.

Ajustes de mapeo de tonos HDR accesibles mediante anulaciones de volumen

Para una experiencia óptima del espectador, recomendamos proporcionar control en tiempo de ejecución sobre estos parámetros a través de una interfaz de calibración HDR designada. Pronto compartiremos un nuevo proyecto de ejemplo de calibración HDR, que puedes utilizar como implementación de referencia para empezar.

Para obtener información más detallada sobre la asignación de tonos HDR y la salida, consulte la documentación actualizada para la salida HDR en URP y la salida HDR en HDRP.

Soporte de plataformas

Para utilizar la salida HDR en tiempo de ejecución, el dispositivo debe estar conectado a una pantalla compatible con HDR, y la GPU debe tener el soporte necesario para habilitar una cadena de intercambio y presentación HDR.

La salida HDR se desactiva automáticamente en tiempo de ejecución cuando se ejecuta en dispositivos incompatibles. Puedes consultar si la visualización HDR es compatible con la pantalla principal y si la salida HDR está activada utilizando HDROutputSettings.available.

Además del soporte existente para escritorio y consola disponible en Unity 2022, se introduce soporte móvil en Unity 2023.2 para las siguientes plataformas:

  • Reproductores iOS (iOS 16+, iPadOS 16+)
  • Reproductores Android que utilicen Vulkan y GLES (Android 9+, dependiendo de las capacidades del dispositivo)

Algunos dispositivos móviles habituales que ofrecen compatibilidad con pantallas HDR son iPhone X y posteriores, Samsung Galaxy S10 y posteriores, Galaxy Note 10 y posteriores, Galaxy Tab S6 y posteriores....

Esta versión también introduce soporte XR para plataformas capaces. Consulta la documentación de la plataforma XR para determinar la compatibilidad con pantallas HDR.

Directrices y limitaciones

El procesado HDR se aplica en dos pasos: Mapeo y codificación de tonos HDR. Ambos pasos suelen aplicarse durante el último pase de renderizado de postprocesado.

La única excepción es cuando se inyectan pases adicionales en URP, que se ejecutarán después del postprocesamiento. En estos casos, la codificación HDR se aplica por separado en una pasada "final blit", que siempre se ejecuta al final del proceso de renderizado.

Custom Overlay Passesinjected in the RenderPassEvent.AfterRenderingPostProcessing event will require special handling for HDR output. Si la salida HDR está activa y el postprocesado está activado, las pasadas anteriores habrán aplicado la asignación de tonos y la conversión del espacio de color. Como resultado, tendrás que crear tus efectos personalizados para que funcionen con el rango dinámico y el espacio de color esperados.

Cuando se utiliza la salida HDR, se recomienda activar la renderización HDR para todas las cámaras visualizables.Todavía se puede desactivar la renderización HDR en una base por cámara, pero tendrá que asegurarse de que no hay pases de renderización ejecutados después del postprocesamiento o efectos que insertan pases después del postprocesamiento. Cuando se utiliza el renderizado SDR con salida HDR, las siguientes funciones no son compatibles:

  • Aumento de escala
  • FXAA
  • Modos de depuración HDR
  • Pases personalizados tras el postprocesamiento

En el Renderizador 2D, asegúrese de que el postprocesado está desactivado si va a utilizar el renderizado SDR con salida HDR.

Para obtener información más detallada sobre las limitaciones y directrices anteriores, consulte la documentación oficial:

Acércate

Pruebe la nueva compatibilidad con pantallas HDR en su proyecto y díganos qué le parece.

Sus comentarios han sido decisivos y nos ayudan a priorizar las soluciones más significativas. Consulta nuestra hoja de ruta pública para votar las funciones que mejor se adaptan a tus necesidades y visita nuestros foros gráficos para obtener más información. Si hay cambios adicionales que te gustaría ver, no dudes en enviar una solicitud de funciones o ponerte en contacto directamente con el equipo.

Si te ha gustado esta inmersión en profundidad, estate atento a los futuros desgloses técnicos de los desarrolladores de Unity como parte de la serie en curso Tecnología desde las trincheras.