ハイダイナミックレンジ (HDR) は、標準ダイナミックレンジ (SDR) 画像よりも大きなダイナミックレンジの光度を持つ画像を生成する技術で、色と明るさを現実的に表現できます。
標準のレンダリングでは、ピクセルの赤、緑、青の値は 0 と 1 の間の 8 ビット値を使用して格納されます。0 は強度がないことを表し、1 はディスプレイデバイスの最大強度を表します。この制限された範囲の値は、現実の生活で光を知覚する方法を正確に反映しているわけではないため、非常に明るい要素や非常に暗い要素が存在する場合、非現実的な画像になります。
HDR レンダリングでは、ピクセル値は浮動小数点数を使用して格納されます。これにより、はるかに広い範囲の値が可能になり、人間の目が色と明るさを認識する方法をより正確に表します。
Unity では、内部レンダリング計算に HDR 画像を使用できます。この機能は HDR レンダリングと呼ばれます。HDR レンダリングを有効にすると、Unity はシーンを HDR 画像バッファにレンダリングし、その HDR 画像を使用してポストプロセスエフェクトなどのレンダリング操作を実行します。これは、計算がより現実的な値を使用して実行されることを意味し、より現実的な結果が得られます。
特定の互換性のあるプラットフォームでは、Unity はその HDR 画像のディスプレイデバイスへの送信をサポートします。この機能は HDR 出力と呼ばれます。
HDR にはさまざまな利点と不利な点があります。使用前に検討し、適切な選択か確認する必要があります。
HDR には以下の利点があります。
HDR には以下の不利な点があります。
URP での HDR レンダリングと HDR 出力の詳細については、URP での HDR 出力を参照してください。
HDRP での HDR レンダリングと HDR 出力については、HDRP での HDR 出力を参照してください。
スクリプタブルレンダーパイプライン、URP および HDRP での HDR レンダリングと HDR 出力のサポートについては、レンダーパイプラインの機能の比較を参照してください。
トーンマッピングは、ある範囲から別の範囲に色値をマッピングする処理です。HDR を使用する場合は、トーンマッピングを使用して HDR 画像バッファの色を変換し、値がディスプレイデバイスが処理できる範囲内に収まるようにする必要があります。トーンマッピングを使用しない場合、特に非常に明るい領域で、画像のディテールと色情報の多くが失われる可能性があります。
SDR 出力で HDR レンダリングを使用する場合は、トーンマッピングを使用して HDR 画像バッファを表示用の SDR 画像に変換する必要があります。Unity はこれを可能にするトーンマッピングのポストプロセスエフェクトを提供します。Post-Processing Stack V2 パッケージ、URP 統合ポストプロセスソリューション、HDRP 統合ポストプロセスソリューションのすべてにトーンマッピングエフェクトが含まれています。
HDR 出力で HDR レンダリングを使用する場合、以下のいずれかの方法があります。
独自のトーンマッピングソリューションを作成し、表示のために、HDR 画像バッファを互換性のある HDR フォーマットに直接変換します。
Unity のトーンマッピングポストプロセスエフェクトを使用して、HDR バッファを SDR 画像に変換し (上記のように)、その後、Unity の自動出力トーンマッピングを使用して、その SDR 画像を適切な出力形式に変換します。Unity の自動出力トーンマッピングの詳細については、HDROutputSettings.automaticHDRTonemapping のドキュメントを参照してください。
HDROutputSettings API は 2020.1 NewIn20201 で追加