Version: 2021.1
言語: 日本語
リニアテクスチャの使用
HDR カラーピッカー

ハイダイナミックレンジ (HDR)

ハイダイナミックレンジ (HDR) は、標準ダイナミックレンジ (SDR) 画像よりも大きなダイナミックレンジの光度を持つ画像を生成する技術で、色と明るさを現実的に表現できます。

HDR の仕組み

標準のレンダリングでは、ピクセルの赤、緑、青の値は 0 と 1 の間の 8 ビット値を使用して格納されます。0 は強度がないことを表し、1 はディスプレイデバイスの最大強度を表します。この制限された範囲の値は、現実の生活で光を知覚する方法を正確に反映しているわけではないため、非常に明るい要素や非常に暗い要素が存在する場合、非現実的な画像になります。

HDR レンダリングでは、ピクセル値は浮動小数点数を使用して格納されます。これにより、はるかに広い範囲の値が可能になり、人間の目が色と明るさを認識する方法をより正確に表します。

Unity の HDR

Unity では、内部レンダリング計算に HDR 画像を使用できます。この機能は HDR レンダリングと呼ばれます。HDR レンダリングを有効にすると、Unity はシーンを HDR 画像バッファにレンダリングし、その HDR 画像を使用してポストプロセスエフェクトなどのレンダリング操作を実行します。これは、計算がより現実的な値を使用して実行されることを意味し、より現実的な結果が得られます。

特定の互換性のあるプラットフォームでは、Unity はその HDR 画像のディスプレイデバイスへの送信をサポートします。この機能は HDR 出力と呼ばれます。

HDR を使用する利点

  • 高強度エリアで色が失われません
  • ブルームおよびグローによりよく適応します
  • 低い周波数のエリアでバンディングが削減されます

HDR を使用する不利な点

  • VRAM 使用量が増加します
  • トーンマッピングを使用する場合により多く計算コストがかかります
  • ハードウェアのアンチエイリアシングは HDR レンダリングと互換性がありません

レンダーパイプラインの互換性

レンダーパイプライン HDR レンダリング HDR 出力
ビルトインレンダーパイプライン 互換性あり

Inspector で、または Camera.allowHDR API を使って、カメラごとの HDR レンダリングを有効にします。

Graphics 設定 ウィンドウで、HDR レンダリングを有効にし、各 Tier のHDR バッファの形式を設定します。
互換性あり

HDROutputSettings API を使用して、HDR 出力オプションを設定します。

詳細は、プラットフォーム個別のドキュメントを参照してください。
ユニバーサルレンダーパイプライン (URP) 互換性あり

Inspector で、または Camera.allowHDR API を使用して、カメラごとに HDR レンダリングを有効にします。

ユニバーサルレンダーパイプラインアセットを使って、すべてのカメラに対する HDR レンダリングを有効にします。
調査中

開発チームはこの機能の実装方法を調査しています。まだリリース予定日はありません。
HD レンダーパイプライン (HDRP) 互換性あり

HDR レンダリングは、すべてのカメラでデフォルトで有効になっています。無効にすることはできません。
調査中

開発チームはこの機能の実装方法を調査しています。まだリリース予定日はありません。

トーンマッピング

トーンマッピングは、ある範囲から別の範囲に色値をマッピングする処理です。HDR を使用する場合は、トーンマッピングを使用して HDR 画像バッファの色を変換し、値がディスプレイデバイスが処理できる範囲内に収まるようにする必要があります。トーンマッピングを使用しない場合、特に非常に明るい領域で、画像のディテールと色情報の多くが失われる可能性があります。

極めて明るいシーンを HDR でレンダリングして SDR に出力。トーンマッピングなしではほとんどのピクセルは範囲外になります。
極めて明るいシーンを HDR でレンダリングして SDR に出力。トーンマッピングなしではほとんどのピクセルは範囲外になります。
上と同じシーン。 しかし今度は、トーンマッピングは、ほとんどの強度がより妥当な範囲にあります。適応性のあるトーンマッピングでは、上の 2 つの画像をブレンドすることもでき、したがって、画像を取り込む媒体 (例えば、目、カメラなど) の適応性のある性質をシミュレートできます。
上と同じシーン。 しかし今度は、トーンマッピングは、ほとんどの強度がより妥当な範囲にあります。適応性のあるトーンマッピングでは、上の 2 つの画像をブレンドすることもでき、したがって、画像を取り込む媒体 (例えば、目、カメラなど) の適応性のある性質をシミュレートできます。

SDR 出力で HDR レンダリングを使用する場合は、トーンマッピングを使用してHDR 画像バッファを表示用の SDR 画像に変換する必要があります。Unity はこれを可能にするトーンマッピングのポストプロセスエフェクトを提供します。Post-Processing Stack V2 パッケージURP 統合されたポストプロセスソリューションHDRP 統合されたポストプロセスソリューション のすべてにトーンマッピングエフェクトが含まれています。

HDR 出力で HDR レンダリングを使用する場合、以下のいずれかの方法があります。

  • 独自のトーンマッピングソリューションを作成し、表示のために、HDR 画像バッファを互換性のある HDR フォーマットに直接変換します。
  • Unity のトーンマッピングポストプロセスエフェクトを使用して、HDR バッファを SDR 画像に変換し (上記のように)、その後、Unity の自動出力トーンマッピングを使用して、その SDR 画像を適切な出力形式に変換します。Unity の自動出力トーンマッピングの詳細については、HDROutputSettings.automaticHDRTonemapping のドキュメントを参照してください。

ビルトインレンダーパイプラインでの HDR レンダリングの使用

フォワードレンダリングパスでは、カメラは、カメラにポストプロセスエフェクトがある場合にのみ HDR をサポートします。これはパフォーマンス上の理由によるものです。カメラでポストプロセスエフェクトが行われない場合、シーンは HDR がサポートされていないバックバッファに直接レンダリングされます。

ディファードシェーディングレンダリングパスでは、カメラに対して HDR が有効になっている場合、ライティングバッファも浮動小数点バッファとして割り当てられます。これにより、ライティングバッファのバンディングが減少します。

  • HDROutputSettings API が 2020.1 で追加されました。NewIn20201
リニアテクスチャの使用
HDR カラーピッカー