Effet d’ajustement du niveau blanc
Cet effet permet de mettre à l’échelle linéaire le niveau blanc d’une image. Cela est particulièrement utile lorsque vous effectuez une conversion entre l’espace de luminance de référence d’affichage et l’espace de luminance de 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 d’affichage 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 lentes. |
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL | FLOAT | Niveau blanc de l’image de sortie, en lentes. |
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 tonalité appropriés. Pour plus d’informations, consultez les remarques de cette rubrique. Les effets s’adressent à n’importe quelle infrastructure qui souhaite fournir une expérience d’affichage d’image HDR optimale qui gère tous les formats d’image Windows HDR 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é se trouver dans un espace de luminance de référence d’affichage, ce qui signifie que le niveau de blanc du contenu doit être mis à l’échelle jusqu’au niveau blanc de l’affichage avant d’être 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é se trouver dans un espace de luminance de référence de scène, ce qui signifie qu’il ne doit pas ê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 s’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 luminance de référence d’affichage. Mais si le bureau Windows est en mode HDR, la composition du bureau se produit dans l’espace de luminance référencée par la scène. Cela dit, le Gestionnaire de fenêtres de bureau (DWM) effectue lui-même des ajustements de luminosité (souvent appelés SDRBoost) pour les surfaces de composition 8 bits, ce qui simplifie votre application dans ce cas. Malgré cela, l’augmentation automatique signifie que le rôle de votre application dans la conversion d’un espace de luminance à 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 un réglage de niveau blanc, ainsi que ce que doit être cet ajustement. En général, l’ajustement dépend de trois facteurs.
- Entrez l’espace de couleur du contenu. Indique si votre contenu d’entrée contient ou non des valeurs de luminance à plage dynamique élevée (HDR). Le contenu WCG se comporte comme SDR pour le comportement de luminance.
- Format de composition. Format de pixels 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.
- Mode de couleur avancé du bureau. Indique si le DWM s’exécute 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 InputWhiteLevel
propriétés et OutputWhiteLevel
.
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 la table, la valeur 80 est le niveau blanc de référence, en nits, pour le contenu sRGB 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
correspond au nombre de lentes 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 du niveau blanc n’est pas utilisé dans ce scénario ; vous pouvez supprimer l’effet de votre graphe ou définir des valeurs pour une opération sans opération.
Notez que, dans les cas où un réglage de niveau blanc n’est pas nécessaire par l’application, le DWM ou l’affichage peut gérer la conversion de l’espace de luminance référencé par l’affichage en espace de luminance de référence de 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.
Spécifications
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 |