HDRやSDRにおけるトーンマッピング前後の処理について
この記事の内容はUnrealEngine 5.3.2で検証しました。
SDRとHDRそれぞれにおけるトーンマッピング前後でどのような処理が行われているかを、実際にコードを確認しながらまとめました。
HDRのほうはACESのトーンマッピングがそのまま実装されていて、SDRのほうはACESを若干アレンジしたACES風トーンマッピング(Filmic Tonemapper)が実装されています。
HDRとSDRの絵を近づけようとする場合、基本的にはSDRはFilmic Tonemapperのパラメーターは触らずにデフォルト値で運用したほうが無難に思えます。
ただ、UE5.1からHDRのトーンカーブもパラメーター(コンソールコマンド)により編集ができるようになっているので、HDRとSDRどちらもトーンカーブの調整は可能です。
調整する場合はHDRとSDRのどちらかをどちらかに近づけるために調整するというのが個人的には良いのではないかと思います。
調整できるパラメーターは以下です。
r.HDR.Aces.SceneColorMultiplier 光量スケール
r.HDR.Display.MaxLuminance ショルダー
r.HDR.Display.MidLuminance ミッド(スロープ)
r.HDR.Display.MinLuminanceLog10 トー
またHDRのとき、ExpandGamutの処理はオフで運用したほうが良いそうです。
間違いや気になる内容がある場合は、お知らせいただけるとありがたいです。
SDR
WhiteBalance : Linear sRGB
ColorExpand : AP1(PostProcessVolumeのExpandGamut)
ColorCorrectAll : AP1(PostProcessVolumeのColorGrading)
BlueCorrection : AP1
FilmToneMap : AP1(ACES風トーンスケール、パラメーターを変更するとACES風ではなくなる)
Legacy LDR LUT : sRGB
LinearToSrgb : AP1 → sRGB(ガンマ補正)
HDR
WhiteBalance : Linear sRGB
ColorExpand : AP1(PostProcessVolumeのExpandGamut、HDRでは使わないほうが良いと言われた)
ColorCorrectAll : AP1(PostProcessVolumeのColorGrading)
ACESOutputTransforms1000 : AP1 → AP0
outputTransform : AP0
rrt_sweeteners : Glow ModuleとRed ModifierがAP0 → Global DesaturationがAP1
ssts : AP1(ACESトーンスケール、カーブはエディタから変形できない)
LinearToST2084 : AP0 → ST2084(Inverse EOTF )(下画像はプロットしたもの)