Partager via


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 luminance référencé par l’affichage et l’espace de luminance référencée 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 FLOTTER Niveau blanc de l’image d’entrée, dans les nits.
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL FLOTTER Niveau blanc de l’image de sortie, en nits.

Remarques

Cet effet est destiné à être combiné avec l’effet de carte de tonalité HDR pour vous permettre d’afficher 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 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 responsable de votre application de le faire. En revanche, le contenu HDR est supposé être dans un espace de luminance référencé sur 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. Mais si le bureau Windows est en mode HDR, la composition du bureau se produit dans l’espace de luminance référencé sur les scènes. Cela dit, le Gestionnaire de fenêtres de bureau (DWM) lui-même effectue des ajustements de luminance (souvent appelés SDRBoost) pour les surfaces de composition 8 bits, et qui simplifie votre application pour ce cas. Dans ce cas, le renforcement automatique signifie que le rôle de votre application dans la conversion d’un espace de luminosité vers un autre dépend du format de composition que votre application utilise pour présenter son contenu.

Le tableau ci-dessous décrit les cas où votre application doit et ne doit pas effectuer d’ajustement au 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. Que votre contenu d’entrée contienne des valeurs de luminosité de plage dynamique élevée (HDR) ou non. Le contenu WCG se comporte comme SDR pour le comportement de luminance.
  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 de FP16.
  3. Mode de couleur avancé du bureau. Que 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 propriétés InputWhiteLevel 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, 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 correspond au 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 un no-op.

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 luminance 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 de 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.

Exigences

Exigence Valeur
Client minimum 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