QRhiSwapChainHdrInfo Struct

スワップチェーンの関連出力のハイダイナミックレンジ関連情報を記述する。詳細...

Header: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
Since: Qt 6.6

パブリック型

enum LimitsType { LuminanceInNits, ColorComponentValue }
enum LuminanceBehavior { SceneReferred, DisplayReferred }

パブリック変数

union QRhiSwapChainHdrInfo::(unnamed union at /data/snapshot-qt6-6.8-rel/qt5/qtbase/src/gui/rhi/qrhi.h:1524:5) limits
QRhiSwapChainHdrInfo::LimitsType limitsType
QRhiSwapChainHdrInfo::LuminanceBehavior luminanceBehavior
float sdrWhiteLevel

詳細説明

ターゲット範囲が[0,1]ではないHDR互換のトーンマッピングを実行するには、スワップチェーンのウィンドウが関連付けられたディスプレイの最大輝度を知る必要があることが多い。これはしばしばユーザーが設定できるようになっていますが(ゲームの輝度、ガンマ、および同様の設定を考えてください)、ディスプレイ自体から報告される値に基づいてデフォルトを設定することは非常に有用であり、したがって適切な出発点を提供します。

しかし、いくつかの問題があります。情報がプラットフォームごとに異なる形で公開されるのに対して、クロスプラットフォームのグラフィックスAPIでは、そのような情報を管理することはAPIの範囲外であるため、関連するソリューションがまったくないことがよくあります(もしあれば、むしろ他のプラットフォーム固有の手段で取得できるかもしれません)。

macOS/iOS上のMetalでは、プラットフォームAPIで公開される輝度値はありません。その代わりに、非HDR設定では1.0となる色成分の最大値が提供されます。limitsType フィールドは、どのような情報が利用可能かを示す。その後、limits ユニオンから正しいデータにアクセスし、適切と思われるようにそれを使用するかどうかは、QRhi のクライアント次第です。

VulkanのようなAPIでは、そのような情報を取得する方法がないため、値は常に組み込みのデフォルトとなります。

したがって、QRhiSwapChain::hdrInfo ()から返される構造体には、ハードコードされたデフォルト値か、DXGI(IDXGIOutput6)やCocoa(NSScreen)などのAPIから受け取った実際の値が含まれます。プラットフォームクエリが利用できない場合(またはQRhi の範囲外のプラットフォーム機能を使用する必要がある場合)、ハードコードされたデフォルトは、最大輝度 1000 ニットおよび SDR 白レベル 200 です。

この構造体は、プラットフォームとそのコンポジターの推定輝度動作も公開し、HDRカラーバッファで1.0のカラーコンポーネント値がどのように扱われるかを示します。場合によっては、HDRコンテンツと合成された非HDRコンテンツの色補正を実行する必要がある。これを可能にするために、一部のプラットフォーム(Windows)ではSDRホワイトレベルがシステムから照会され、ここで公開されます。

注: これは互換性保証に制限のある RHI API である。詳細はQRhi を参照。

QRhiSwapChain::hdrInfo()も参照のこと

メンバ型ドキュメント

enum QRhiSwapChainHdrInfo::LimitsType

定数説明
QRhiSwapChainHdrInfo::LuminanceInNits0limits ユニオンにluminanceInNits 構造体がセットされていることを示す。
QRhiSwapChainHdrInfo::ColorComponentValue1limits ユニオンがそのcolorComponentValue 構造体セットを持つことを示す。

enum QRhiSwapChainHdrInfo::LuminanceBehavior

定数説明
QRhiSwapChainHdrInfo::SceneReferred0色値 1.0 が 80 ニットとして解釈されることを示す。これは Windows のコンポジターで HDR を有効にしたウィンドウの動作です。WindowsのHDRの詳細については、このページを参照してください。
QRhiSwapChainHdrInfo::DisplayReferred1カラー値1.0がSDRホワイトの値として解釈されることを示します(例えば200ニットですが、スクリーンの明るさによって異なります)。AppleのEDRシステムに関する詳細は、このページを参照してください。

メンバー変数ドキュメント

union QRhiSwapChainHdrInfo::(unnamed union at /data/snapshot-qt6-6.8-rel/qt5/qtbase/src/gui/rhi/qrhi.h:1524:5) QRhiSwapChainHdrInfo::limits

グラフィックスAPIまたはプラットフォームからクエリされた実際の値を含みます。データの型はlimitsType で示されます。したがって、これはユニオンである。現在2つのオプションがある:

ニット単位の輝度値:

struct {
    float minLuminance;
    float maxLuminance;
} luminanceInNits;

Windowsでは、最小輝度と最大輝度は画面の明るさに依存する。デスクトップには関係ないが、ノートパソコンでは画面の明るさはいつでも変わる可能性がある。輝度を上げると最大輝度が下がる。さらに、Windows設定のシステム/ディスプレイ/HDR表示で設定されたHDRコンテンツの明るさ(そのような設定がある場合)にも結果が左右されることがあります。

しかしながら、アプリケーションの実行中にノートパソコンの画面の明るさやシステム設定に加えられた変更は、必ずしも返される値に反映されないことに注意してください。正確な動作は DXGI に任されており、Qt では制御できません。

注意: Windows のコンポジターは、HDR コンテンツのシーン参照モードで動作します。色成分値 1.0 は 80 ニットの輝度に相当します。非HDRコンテンツ(2D UI要素など)をレンダリングする場合、白レベルの補正が必要になることがよくあります。(例えば、フラグメント・カラー(1、1、1)を出力すると、画面上では薄すぎる白の色合いが表示される可能性が高い)sdrWhiteLevel を参照。

macOS/iOS の場合、 現在の最大色成分値 と 、 潜在的な最大色成分値が与え ら れます:

struct {
    float maxColorComponentValue;
    float maxPotentialColorComponentValue;
} colorComponentValue;

この値は画面の明るさに依存する可能性があり、ラップトップでは、その間に明るさが変更された場合、次のhdrInfo()の呼び出しで結果が変更される可能性があることを意味する。画面の最大輝度は、最大色値1.0を意味する。

注: AppleのEDRはディスプレイ参照である。1.0はSDRの白(例えば200nits)の輝度レベルに相当し、その値は画面の明るさや、場合によってはその他の設定によって変化する。その正確な輝度値やディスプレイの最大輝度は、アプリケーションには公開されていない。

注: 一部のmacOSシステムでは、起動時にすぐに色成分値が正しい大なり1値に設定されるのではなく、最初のフレーム中またはフレーム後に値が変化する傾向があることが確認されています。

QRhiSwapChain::hdrInfo()も参照してください

QRhiSwapChainHdrInfo::LimitsType QRhiSwapChainHdrInfo::limitsType

macOS/iOS上のMetalでは、プラットフォームAPIで公開される輝度値はありません。その代わりに、非HDR設定では1.0となる色成分の最大値が提供されます。この値は、limits で利用可能な情報の種類を示します。

QRhiSwapChain::hdrInfo()も参照

QRhiSwapChainHdrInfo::LuminanceBehavior QRhiSwapChainHdrInfo::luminanceBehavior

色値に関するプラットフォームの推定動作を記述する。

sdrWhiteLevelも参照

float QRhiSwapChainHdrInfo::sdrWhiteLevel

Windowsの場合、これはダイナミックSDRホワイトレベル(nits)です。この値は、画面の明るさ(ラップトップの場合)、およびWindows設定のシステム/ディスプレイ/HDRビューのSDRまたはHDRコンテンツの明るさ設定に依存します。

2D UIエレメントなど、非HDR(SDR)コンテンツのホワイトレベル補正を行うには、luminanceBehaviorSceneReferred の場合、最終カラーに sdrWhiteLevel / 80.0 を乗算します。

その他のプ ラ ッ ト フ ォームでは、 こ の値はつねに定義済みの値 200 にな り ます。これはシステムの実際のSDR白レベルとは一致しないかもしれないが、luminanceBehaviorDisplayReferred の場合、色成分値1.0はデフォルトでSDR白を参照するので、この変数の値は実際には関係ない。

luminanceBehaviorも参照してください

本書に含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。