Support d'affichage HDR multiplateforme dans Unity 2023

DAMIAN NACHMAN / UNITY TECHNOLOGIESSenior Technical Product Manager
Aug 15, 2023|10 Min
Support d'affichage HDR multiplateforme dans Unity 2023
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Salutations de l'équipe graphique Unity. Nous sommes heureux d'annoncer qu'à partir de Unity 2023.2.0a18 (et 2023.2 beta), l'éditeur Unity et les joueurs autonomes offrent désormais un support multiplateforme pour la sortie HDR et une compatibilité totale avec le Universal et le High Definition Render Pipeline.

Les écrans à plage dynamique élevée (HDR) deviennent de plus en plus disponibles. Ils sont capables de reproduire des images avec une luminosité de pointe plus élevée et une gamme de couleurs plus large pour obtenir un meilleur contraste (hauts/lows) et une saturation des couleurs. Cela se traduit par des variations de luminance plus réalistes à travers les scènes, un détail de surface accru et une perception de la profondeur améliorée.

Vue de la gamme HDR : Le triangle plus grand représente l'espace colorimétrique Rec.2020

Avant de partager plus d'informations sur la façon d'activer l'affichage HDR pour votre projet, ainsi que le support de la plateforme et des directives utiles, passons rapidement en revue les concepts de rendu et d'affichage HDR.

Rendu et affichage HDR

Lorsque le rendu HDR est activé, la caméra rend la scène dans un tampon d'image à virgule flottante, permettant au pipeline de rendu de stocker une plus grande gamme de valeurs de couleur et de mieux préserver les détails. Les calculs de shader comme l'éclairage et le post-traitement sont effectués en utilisant des valeurs plus précises (comparées au rendu SDR), ce qui conduit à des résultats plus convaincants et réalistes.

Bien que le rendu HDR ait été le flux de travail par défaut pendant des années, un manque d'affichage compatible HDR limite la profondeur de couleur de l'image présentable à un maximum de 8 bits par canal. Cela limite le nombre maximum de couleurs qu'un pixel peut représenter (16 777 216 valeurs de couleur différentes) et la plage de luminosité maximale. Le mappage tonal HDR vers SDR est utilisé pour remapper les valeurs HDR du tampon de couleur dans une plage dynamique faible et appliquer éventuellement une correction gamma, avant d'écrire finalement les résultats dans l'image de la chaîne d'échange pour la présentation.

Unity 2022.1 a introduit le support d'affichage HDR pour le High Definition Render Pipeline (HDRP), lors du ciblage des plateformes de bureau et de console. Cela fonctionne en définissant l'espace colorimétrique natif de l'appareil lors de la création de la chaîne d'échange, et en utilisant un mappage tonal HDR personnalisé pour remapper le contenu du tampon de couleur dans la plage HDR native de l'affichage. L'encodage HDR est ensuite appliqué comme étape finale avant d'écrire dans l'image de la chaîne d'échange HDR.

Avec la sortie HDR activée, le format d'image de la chaîne d'échange est défini pour permettre une profondeur de couleur plus élevée (soit 10 ou 16 bits par canal). Cela permet à chaque pixel de représenter une gamme beaucoup plus large de valeurs de couleur possibles (environ 68 milliards de valeurs différentes) et présente une plage de luminosité considérablement augmentée.

Avec la sortie de Unity 2023.2, l'éditeur Unity et les joueurs autonomes offrent désormais un support complet du mappage tonal HDR et de l'affichage sur tous les pipelines de rendu et plateformes capables.

Activer l'affichage HDR dans votre projet

Vous pouvez trouver les nouveaux paramètres d'affichage HDR dans les paramètres du lecteur de votre projet sous Edit > Paramètres du projet > Lecteur > Autres paramètres :

  • Autoriser la sortie d'affichage HDR
  • Utiliser la sortie d'affichage HDR

Ces paramètres activeront la sortie HDR pour les lecteurs autonomes Unity et l'éditeur lors de l'exécution sur des plateformes prises en charge.

Avec la sortie HDR activée, vous pouvez configurer en option la profondeur de bits de la chaîne d'échange pour définir une profondeur de couleur préférée inférieure (10 bits par canal) ou supérieure (16 bits par canal) pour l'image présentée. Remarque : Tous les appareils ne prennent pas en charge les formats de tampon de 16 bits et peuvent revenir à 10 bits à la place.

Lors de l'utilisation du pipeline de rendu universel (URP), assurez-vous que les actifs du pipeline de rendu utilisés sont configurés pour activer le rendu HDR. Sélectionnez les actifs RP inclus dans le projet (généralement trouvés sous le dossier Actifs > Paramètres ), puis accédez à l'inspecteur de projet et activez Qualité > HDR.

Enfin, assurez-vous que le tonemapping HDR est activé en ajoutant un composant Tonemapping au volume de post-traitement affectant vos caméras. Lorsque la sortie HDR est activée, les paramètres de tonemapping suivants doivent être pilotés par les capacités HDR de l'affichage :

  • Luminosité minimale prise en charge
  • Luminosité maximale prise en charge
  • Valeur de papier blanc : Cette valeur représente la luminosité d'une surface blanche de papier représentée sur l'affichage, ce qui détermine la luminosité globale de l'affichage

Vous pouvez accéder à la plage HDR de l'affichage et à la valeur de papier blanc en utilisant une API C#.

Pour une expérience optimale du spectateur, nous recommandons de fournir un contrôle d'exécution sur ces paramètres via une interface de calibration HDR désignée. Nous partagerons bientôt un nouveau projet d'échantillon de calibration HDR, que vous pouvez utiliser comme mise en œuvre de référence pour commencer.

Pour des informations plus détaillées sur le tonemapping HDR et la sortie, veuillez vous référer à la documentation mise à jour pour la sortie HDR dans URP et la sortie HDR dans HDRP.

Support de la plateforme

Pour utiliser la sortie HDR à l'exécution, l'appareil doit être connecté à un écran compatible HDR, et le GPU doit avoir le support nécessaire pour activer une chaîne d'échange HDR et la présentation.

La sortie HDR est automatiquement désactivée à l'exécution lorsqu'elle est exécutée sur des appareils incompatibles. Vous pouvez interroger si l'affichage HDR est pris en charge sur l'affichage principal et si la sortie HDR est activée en utilisant HDROutputSettings.available.

En plus du support de bureau et de console existant disponible dans Unity 2022, le support mobile est introduit dans Unity 2023.2 pour les plateformes suivantes :

  • Joueurs iOS (iOS 16+, iPadOS 16+)
  • Joueurs Android utilisant Vulkan et GLES (Android 9+, selon les capacités de l'appareil)

Certains appareils mobiles courants qui offrent un support d'affichage HDR incluent l'iPhone X et les modèles plus récents, le Samsung Galaxy S10 et les modèles plus récents, le Galaxy Note 10 et les modèles plus récents, le Galaxy Tab S6 et les modèles plus récents…

Cette version introduit également le support XR pour les plateformes compatibles. Veuillez vous référer à la documentation de la plateforme XR pour déterminer le support d'affichage HDR.

Directives et limitations

Le traitement HDR est appliqué en deux étapes : Le mappage des tons HDR et l'encodage. Ces deux étapes sont généralement appliquées lors du dernier passage de rendu de post-traitement.

La seule exception est lors de l'injection de passages supplémentaires dans URP, à exécuter après le post-traitement. Dans ces cas, l'encodage HDR est appliqué séparément dans un passage de "blit final", qui est toujours appelé à la fin du pipeline de rendu.

Les passages de superposition personnalisés injectés dans l'événement RenderPassEvent.AfterRenderingPostProcessing nécessiteront un traitement spécial pour la sortie HDR. Si la sortie HDR est active et que le post-traitement est activé, les passages précédents auraient appliqué le mappage des tons et la conversion de l'espace colorimétrique. En conséquence, vous devrez créer vos effets personnalisés pour fonctionner avec la plage dynamique et l'espace colorimétrique attendus.

Lors de l'utilisation de la sortie HDR, nous recommandons d'activer le rendu HDR pour toutes les caméras affichables. Vous pouvez toujours désactiver le rendu HDR pour chaque caméra, mais vous devrez vous assurer qu'aucun passage de rendu n'est exécuté après le post-traitement ou des effets qui insèrent des passages après le post-traitement. Lors de l'utilisation du rendu SDR avec la sortie HDR, les fonctionnalités suivantes ne sont pas prises en charge :

  • Mise à l'échelle
  • FXAA
  • Modes de débogage HDR
  • Passes personnalisées après le post-traitement

Sur le moteur 2D, assurez-vous que le post-traitement est désactivé si vous souhaitez utiliser le rendu SDR avec une sortie HDR.

Pour des informations plus détaillées sur les limitations et directives ci-dessus, veuillez consulter la documentation officielle :

Contactez-nous

Veuillez essayer le nouveau support d'affichage HDR dans votre projet et faites-nous savoir ce que vous en pensez.

Vos retours ont été essentiels et nous aident à prioriser les solutions les plus significatives. Consultez notre feuille de route publique pour voter sur les fonctionnalités qui répondent le mieux à vos besoins, et visitez nos Forums Graphiques pour plus d'informations. S'il y a d'autres changements que vous aimeriez voir, n'hésitez pas à soumettre une demande de fonctionnalité ou à contacter l'équipe directement.

Si vous avez aimé cette plongée approfondie, surveillez les futures analyses techniques des développeurs Unity dans le cadre de la série en cours Tech from the Trenches série.