通常のレンダリングでは、ピクセルの赤、緑、青は 0 から 1 の範囲の小数点数により表現され、0 は強度 0 であり、1 はディスプレイデバイスの最大の強度を意味します。これを使用するのは簡単ですが、現実世界の場面でのライティングの働きを正確に反映しません。人間の目は、近隣のライティング条件に合わせようとするため、もし暗く照らされた部屋で白く見えるものでも、昼間の明るい光で灰色に見えるものほどに実際は明るくない場面があります。さらに目はレンジの低いほうが高い方よりも明るさの差に敏感です。
ピクセル値の範囲が現実世界のライトレベルをより正確に反映するようにレンダリングを適合させると、より説得力のあるビジュアルエフェクトを得られるようになります。値をディスプレイデバイスで利用可能な範囲にマッピングしなおす必要はありますが、中間的な演算( Unity のイメージエフェクトのような)では、よりリアルな結果が得られるようになります。グラフィックスの内部表現で 0 ~ 1 範囲外の値を使えるようにすることは High Dynamic Range (HDR) レンダリングの根本的な要素です。
HDR はカメラコンポーネントの設定を使用して各カメラで別々に有効化します。
HDR を有効にすると、シーンは 0 ~ 1 範囲を超えるピクセル値を格納可能な HDR イメージバッファにレンダリングされます。このバッファは次に ブルーム などのイメージエフェクトを使用してポストプロセッシングされます。 トーンマッピング イメージエフェクトにより、 HDR 画像は標準的な low dynamic range (LDR) 画像に変換され、ディスプレイへ送られます。LDR への変換は、イメージエフェクトパイプラインのどこかの時点で適用する必要がありますが、LDR のみに適用できるイメージエフェクトを後から使う場合は、最終ステップである必要はありません。利便性のため、いくつかのイメージエフェクトは HDR エフェクトを適用した後に自動的に LDR に変換されます(以下のスクリプトを参照してください)。
トーンマッピングは HDR の値を LDR の範囲に戻すマッピング処理です。様々な技法があり、あるプロジェクトでベストだった方法が、他でもベストであるとは限りません。 Unity にはトーンマッピングのイメージエフェクトが複数用意されています。それらを使用するには Assets > Import Package > Effects を選び、シーンのカメラを選択して Component > Image Effects >ToneMapping を選択します。トーンマッピングの種類についての詳細な説明は image effects documentation にあります。
HDR を使う事によって、ポストプロセッシングがより調整しやすくなります。 LDR のブルームには、ピクセル強度が 1.0 より小さい部分を含むシーンの広い範囲にブラーがかかってしまう、という残念な副作用があります。 HDR を使用することで、強度が 1 より大きいエリアだけをブルームすることができます。これによって、シーンの非常に明るい要素だけが隣接するピクセルに染み出し、より適切な結果になります。 Unity の ‘Bloom and Lens Flares’ イメージエフェクトは HDR もサポートするようになりました。カメラにアタッチするには Assets > Import Package > Effects を選択し、シーンのカメラを選んで Component > Image Effects > Bloom を選択します。‘ブルーム’ エフェクトの詳細な説明は image effects documentation にあります。
Forward Rendering モードで HDR はイメージエフェクトが存在する場合のみサポートされます。これはパフォーマンスへの配慮によります。もしイメージエフェクトが存在しないのであればトーンマッピングは存在せず、そして強度の切捨てが発生します。この状況でシーンはバックバッファに直接レンダリングされ、HDR はそこではサポートされていません。
HDR モードでは、ライトのプリパスバッファは浮動小数点バッファとして割り当てられます。これによりライティングバッファにおけるバンディングを抑えます。Deferred Rendering の場合、HDR はイメージエフェクトが存在しなくてもサポートされます。
ImageEffectTransformsToLDR 属性をイメージエフェクトのスクリプトに追加すると、ターゲットバッファを HDR ではなく LDR にすることを明示できます。つまり、スクリプトでは HDR イメージエフェクトを適用した後で自動的に LDR に変換することができるという事です。詳細は Writing Image Effects を参照してください。