Effet d’ajustement au niveau blanc

Cet effet permet au niveau blanc d’une image d’être mis à l’échelle linéairement. Cela est particulièrement utile lorsque vous convertissez entre l’espace de luminosité référencé par l’affichage et l’espace de luminosité référencé par la scène, ou inversement.

Les propriétés de cet effet sont identifiées par l’énumération D2D1_WHITELEVELADJUSTMENT_PROP et le CLSID est CLSID_D2D1WhiteLevelAdjustment.

Propriétés d’effet

Nom complet et énumération d’index Type et valeur par défaut Description
InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL FLOAT Niveau blanc de l’image d’entrée, en nits.
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL FLOAT Niveau blanc de l’image de sortie, dans les nits.

Notes

Cet effet est destiné à être combiné avec l’effet de carte de tonalité HDR pour vous permettre de restituer des images HDR dans Direct2D avec une gestion des couleurs et un mappage de ton appropriés. Pour plus d’informations, consultez les remarques de cette rubrique. Les effets sont destinés à n’importe quel framework qui souhaite fournir une expérience d’affichage d’images HDR de classe optimale qui gère tous les formats d’image HDR Windows et s’adapte aux fonctionnalités de l’affichage (que ce soit HDR ou WCG/SDR).

Sur Windows, tout le contenu SDR/WCG est supposé être dans un espace de luminosité référencé par l’affichage, ce qui signifie que le niveau blanc du contenu doit être mis à l’échelle jusqu’au niveau blanc de l’affichage avant qu’il ne soit finalement présenté. Toutefois, il n’est pas toujours de la responsabilité de votre application de le faire. En revanche, le contenu HDR est supposé être dans un espace de luminosité référencé par la scène, ce qui signifie qu’il ne doit pas finalement être mis à l’échelle pour correspondre au niveau blanc de l’affichage. Cela dit, votre application peut avoir besoin d’effectuer une mise à l’échelle dans certaines circonstances lors du rendu du contenu HDR pour vous assurer qu’il s’agit du résultat net.

Lorsque le bureau Windows est en mode SDR ou WCG, le bureau est composé dans un espace de luminosité référencé par l’affichage. Toutefois, si le bureau Windows est en mode HDR, la composition du bureau se produit dans l’espace de luminosité référencé par la scène. Cela dit, le Gestionnaire de fenêtres de bureau (DWM) lui-même effectue des ajustements de luminosité (souvent appelés SDRBoost) pour les surfaces de composition 8 bits, et qui simplifie votre application pour ce cas. Même si le boost automatique signifie que le rôle de votre application dans la conversion d’un espace de luminosité à un autre dépend du format de composition utilisé par votre application pour présenter son contenu.

Le tableau ci-dessous décrit les cas où votre application doit et ne doit pas effectuer d’ajustement de niveau blanc, ainsi que ce que doit être cet ajustement. En général, l’ajustement dépend de trois facteurs.

  1. Espace de couleur de contenu d’entrée. Indique si votre contenu d’entrée contient des valeurs de luminosité de plage dynamique élevée (HDR) ou non. Le contenu WCG se comporte de la même façon que SDR pour le comportement de la luminosité.
  2. Format de composition. Format de pixel de la surface cible présentée au DWM, par exemple une chaîne d’échange ou une surface de composition. Lors du rendu à l’aide de Direct2D, il s’agit de UINT8 ou FP16.
  3. Mode de couleur avancé du bureau. Indique si le DWM est en cours d’exécution en mode SDR, WCG ou HDR pour l’affichage actuel. Obtenez ces informations via DXGI_OUTPUT_DESC1::ColorSpace ou AdvancedColorInfo.CurrentAdvancedColorKind.

En fonction de ces trois facteurs, vous devez définir les valeurs appropriées pour les propriétés et OutputWhiteLevel les InputWhiteLevel propriétés.

Contenu d’entrée Format de composition Mode de couleur avancé InputWhiteLevel OutputWhiteLevel
SDR/WCG UINT8 Quelconque N/A N/A
SDR/WCG FP16 SDR/WCG N/A N/A
SDR/WCG FP16 HDR SDRWhite 80
HDR Quelconque SDR/WCG 80 DXGI_OUTPUT_DESC1::MaxLuminance
HDR UINT8 HDR 80 SDRWhite
HDR FP16 HDR N/A N/A

Dans le tableau, la valeur 80 est le niveau blanc de référence, dans les nits, pour le contenu sRVB ou scRGB. Pour cela, vous pouvez utiliser la constante D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL, qui est définie dans d2d1effects_2.h. La valeur SDRWhite est le nombre de nits que l’affichage doit utiliser pour afficher le contenu sRGB blanc. Vous pouvez récupérer cette valeur en accédant à la propriété AdvancedColorInfo.SdrWhiteLevelInNits . La valeur N/A signifie que l’ajustement au niveau blanc n’est pas utilisé dans ce scénario ; vous pouvez supprimer l’effet de votre graphique ou définir des valeurs pour une opération sans opération.

Notez que, dans les cas où un ajustement au niveau blanc n’est pas nécessaire par l’application, le DWM ou l’affichage peut gérer la conversion de l’espace de luminosité référencé par l’affichage en espace de luminosité référencée par la scène.

  • En mode SDR/WCG, la conversion se produit après la composition DWM et s’applique à tout le contenu présenté à cet affichage. L’affichage effectue implicitement cette conversion.
  • En mode HDR, la conversion est effectuée automatiquement par le DWM avant la composition, tant que la surface de composition de votre application est SDR.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1809 (10.0; Build 17763) [applications de bureau | Applications UWP]
En-tête d2d1effects_2.h
Bibliothèque d2d1.lib, dxguid.lib