通常のレンダリングでは、ピクセルの赤、緑、青は 0 から 1 の範囲の小数点数により表現され、0 は強度 0 であり、1 はディスプレイデバイスの最大の強度を意味します。これを使用するのは簡単ですが、現実世界の場面でのライティングの働きを正確に反映しません。人間の目は、近隣のライティング条件に合わせようとするため、もし暗く照らされた部屋で白く見えるものでも、昼間の明るい光で灰色に見えるものほどに実際は明るくない場面があります。さらに目はレンジの低いほうが高い方よりも明るさの差に敏感です。
ピクセル値の範囲が現実世界のライトレベルをより正確に反映するようにレンダリングを適合させると、より説得力のあるビジュアルエフェクトを得られるようになります。値をディスプレイデバイスで利用可能な範囲にマッピングしなおす必要はありますが、中間的な演算( Unity のイメージエフェクトのような)では、よりリアルな結果が得られるようになります。グラフィックスの内部表現で 0 ~ 1 範囲外の値を使えるようにすることは High Dynamic Range (HDR) レンダリングの根本的な要素です。
HDR はカメラコンポーネントの設定を使用して各カメラで別々に有効化します。
HDR が有効な場合、シーンは 0~1 の範囲外のピクセル値に対応できる HDR イメージバッファーにレンダリングされます。 このバッファーは、ポストプロセシングスタックのブルームエフェクトなどのようなポストプロセシングエフェクトに使用されます。その後、HDR 画像は標準の低ダイナミックレンジ (LDR) 画像に変換され、ディスプレイに送信されます。 これは、通常、カラーグレーディング パイプラインの一部であるトーンマッピングを通して行われます。LDR への変換は、ポストプロセスパイプラインのある時点で適用される必要があります。後で LDR のみのポストプロセスエフェクトを適用する場合は、最終段階である必要はありません。便宜上、いくつかのポストプロセシングエフェクトは HDR エフェクトを適用した後に自動的に LDR に変換されます (下記のスクリプティングを参照)。
トーンマッピングは、HDR 値を LDR 範囲にマッピングする処理です。 さまざまなテクニックがあり、あるプロジェクトに適したものが別のプロジェクトに最適というわけではないかもしれません。様々なトーンマッピング技術が ポストプロセシングスタック に含まれています。それらを使用するには、Asset Store から Post Processing Stack をダウンロードします。トーンマッピングの種類の詳細は、カラーグレーディング を参照してください。
フォワードレンダリングモードでは、HDR はポストプロセシングエフェクトが有効である場合にのみサポートされます。これはパフォーマンス上の理由によるものです。ポストプロセシングエフェクトが行われない場合、トーンマッピングは存在せず強度の切り捨てが発生します。このような状況では、シーンは HDR がサポートされていないバックバッファーに直接レンダリングされます。
HDR モードでは、ライティングバッファーも浮動小数点バッファーとして割り当てられます。 これにより、、ライティングバッファー内の縞模様が減少します。ポストプロセシングエフェクトが行われない場合でも、HDR はデファードレンダリングでサポートされます。
ポストプロセシングエフェクトスクリプトに ImageEffectTransformsToLDR 属性を追加して、ターゲットバッファーが HDR ではなく LDR であることを示すことができます。基本的には、HDR ポストプロセシングエフェクトを適用すると、スクリプトは自動的に LDR に変換されることを意味します。詳細については、ポストプロセシングエフェクトの作成 を参照してください。