Effetto di regolazione del livello bianco
Questo effetto consente di ridimensionare in modo lineare il livello bianco di un'immagine. Ciò è particolarmente utile quando si esegue la conversione tra lo spazio di luminanza a cui si fa riferimento a visualizzazione e lo spazio di luminanza a cui si fa riferimento alla scena o viceversa.
Le proprietà di questo effetto sono identificate dall'enumerazione D2D1_WHITELEVELADJUSTMENT_PROP e CLSID è CLSID_D2D1WhiteLevelAdjustment.
Proprietà dell'effetto
Enumerazione nome visualizzato e indice | Tipo e valore predefinito | Descrizione |
---|---|---|
InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL | FLOAT | Livello bianco dell'immagine di input, in nit. |
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL | FLOAT | Livello bianco dell'immagine di output, in nits. |
Commenti
Questo effetto è progettato per essere combinato con l'effetto della mappa del tono HDR per consentire di eseguire il rendering di immagini HDR in Direct2D con la corretta gestione dei colori e il mapping del tono. Per altri dettagli, vedere la sezione Osservazioni di tale argomento. Gli effetti sono destinati a qualsiasi framework che vuole offrire un'esperienza di visualizzazione delle immagini HDR di classe migliore che gestisce tutti i formati di immagine HDR di Windows e si adatta alle funzionalità dello schermo (che si tratti di HDR o WCG/SDR).
In Windows, si presuppone che tutto il contenuto SDR/WCG sia in uno spazio di luminanza a cui viene fatto riferimento allo schermo, vale a dire che il livello bianco del contenuto deve essere ridimensionato fino al livello di bianco dello schermo prima che venga infine presentato. Tuttavia, non è sempre responsabilità dell'applicazione eseguire questa operazione. Al contrario, si presuppone che il contenuto HDR si trova in uno spazio di luminanza a cui fa riferimento la scena, ovvero che non deve essere ridimensionato in definitiva in modo che corrisponda al livello bianco dello schermo. Ciò premesso, l'applicazione potrebbe dover eseguire il ridimensionamento in alcune circostanze quando si esegue il rendering del contenuto HDR per assicurarsi che si tratta del risultato netto.
Quando il desktop di Windows è in modalità SDR o WCG, il desktop è composto in uno spazio di luminanza a cui fa riferimento lo schermo. Ma se il desktop di Windows è in modalità HDR, la composizione del desktop avviene nello spazio di luminanza a cui fa riferimento la scena. Detto questo, Desktop Window Manager (DWM) stesso esegue regolazioni di luminanza (spesso denominate SDRBoost) per le superfici di composizione a 8 bit e che semplifica l'applicazione per questo caso. Anche in questo caso, il boost automatico significa che il ruolo dell'applicazione nella conversione da uno spazio di dominanza a un altro dipende dal formato di composizione usato dall'applicazione per presentare il contenuto.
La tabella seguente descrive i casi in cui l'applicazione deve e non deve eseguire una regolazione del livello bianco, nonché le modifiche da apportare. In generale, l'adeguamento dipende da tre fattori.
- Spazio colori del contenuto di input. Indica se il contenuto di input contiene o meno valori di luminanza HDR (High Dynamic Range). Il contenuto WCG si comporta come SDR per il comportamento della luminanza.
- Formato di composizione. Formato pixel della superficie di destinazione presentata al DWM, ad esempio una catena di scambio o una superficie di composizione. Quando si esegue il rendering con Direct2D, si tratta di UINT8 o FP16.
- Modalità colore avanzata del desktop. Indica se DWM è in esecuzione in modalità SDR, WCG o HDR per lo schermo corrente. Ottenere queste informazioni tramite DXGI_OUTPUT_DESC1::ColorSpace o AdvancedColorInfo.CurrentAdvancedColorKind.
In base a questi tre fattori, è necessario impostare i valori appropriati per le InputWhiteLevel
proprietà e OutputWhiteLevel
.
Contenuto di input | Formato composizione | Modalità colore avanzata | InputWhiteLevel | OutputWhiteLevel |
---|---|---|---|---|
SDR/WCG | UINT8 | Qualsiasi | N/D | N/D |
SDR/WCG | FP16 | SDR/WCG | N/D | N/D |
SDR/WCG | FP16 | HDR | SDRWhite | 80 |
HDR | Qualsiasi | SDR/WCG | 80 | DXGI_OUTPUT_DESC1::MaxLuminance |
HDR | UINT8 | HDR | 80 | SDRWhite |
HDR | FP16 | HDR | N/D | N/D |
Nella tabella il valore 80 è il livello bianco di riferimento, in nits, per il contenuto sRGB o scRGB. A tale scopo, è possibile usare la costante D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL, definita in d2d1effects_2.h
. Il valore SDRWhite
è il numero di nit che la visualizzazione deve usare per visualizzare il contenuto sRGB bianco. È possibile recuperare questo valore accedendo alla proprietà AdvancedColorInfo.SdrWhiteLevelInNits . Il valore N/A indica che la regolazione del livello bianco non viene utilizzata in questo scenario; è possibile rimuovere l'effetto dal grafico o impostare i valori per un no-op.
Si noti che, nei casi in cui non è necessaria una regolazione del livello bianco dall'applicazione, il DWM o lo schermo può gestire la conversione dallo spazio di luminanza a cui viene fatto riferimento alla scena.
- In modalità SDR/WCG, la conversione avviene dopo la composizione DWM e si applica a tutto il contenuto presentato a tale visualizzazione. La visualizzazione esegue in modo implicito questa conversione.
- In modalità HDR, la conversione viene eseguita automaticamente dal DWM prima della composizione, purché la superficie di composizione dell'applicazione sia SDR.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10, versione 1809 (10,0; Build 17763) [app desktop | App UWP] |
Intestazione | d2d1effects_2.h |
Libreria | d2d1.lib, dxguid.lib |