QRhiSwapChainHdrInfo Struct
スワップチェーンの関連出力のハイダイナミックレンジ関連情報を記述する。詳細...
ヘッダー | #include <rhi/qrhi.h> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
qmake: | QT += gui-private |
以来: | 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では、関連するソリューションがまったくないことがよくあります。
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::LuminanceInNits | 0 | limits ユニオンにluminanceInNits 構造体が設定されていることを示す。 |
QRhiSwapChainHdrInfo::ColorComponentValue | 1 | limits ユニオンにcolorComponentValue 構造体セットがあることを示す。 |
enum QRhiSwapChainHdrInfo::LuminanceBehavior
メンバー変数のドキュメント
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コンテンツの明るさ(そのような設定がある場合)にも結果が左右されることがあります。
しかし、アプリケーションの実行中にノートパソコンの画面の明るさやシステム設定に加えられた変更は、必ずしも返される値に反映されないことに注意してください。つまり、hdrInfo()を再度呼び出すと、プロセスの残りの寿命の間、以前と同じ輝度範囲が返される可能性があります。正確な動作は 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)コンテンツのホワイトレベル補正を行うには、luminanceBehavior がSceneReferred の場合、最終カラーに sdrWhiteLevel / 80.0 を乗算します。
その他のプ ラ ッ ト フ ォームでは、 こ の値はつねに定義済みの値 200 にな り ます。これはシステムの実際のSDR白レベルとは一致しないかもしれないが、luminanceBehavior がDisplayReferred の場合、色成分値1.0はデフォルトでSDR白を参照するので、この変数の値は実際には関係ない。
luminanceBehaviorも参照のこと 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.