共用方式為


HDR 光源 (Direct3D 9)

真實世界中的光源包含非常高的亮度值動態範圍(HDR)。 真實世界的亮度動態範圍大約有10個數量級,涵蓋從黑暗到亮度的光譜。 另一方面,電腦螢幕的顯示範圍非常有限(或亮度值的範圍):大約兩個數量級的動態範圍。 產生 HDR 轉譯影像的挑戰是將真實世界 HDR 值對應到電腦螢幕的有限範圍。

色調映射是 DirectX 用來將 HDR 資訊映射至更有限範圍的技術。 套用至 CGI 轉譯的音調對應可以大幅改善呈現的光源詳細數據量,讓最暗區域的詳細數據得以看見,並在如此明亮的區域提供對比,它們看起來會燃燒。 所生成的場景會顯示出更多可見的光照細節。

HDRLighting 範例 是示範 HDR 光源的 SDK 範例。

色調映射

色調映射通常會模擬監視器的動態範圍無法呈現的光學現象。 其中的例子包括光暈或影像泛光(主要與鏡頭的屬性有關),在低光環境下發生在人眼中的藍光偏移,及其他由於眼睛生物化學特性而產生的調適。 如果顯示器的動態範圍足夠大,則音調映射可能就不那麼必要了,除非是為了提供藝術效果或類似相機鏡頭或電荷耦合裝置(CCD)的特性。

音調對應會將場景中的亮度值範圍分成一組區域。 每個區域都包含一系列亮度值。

HDR 使用下列詞彙:

  • 區域 - 亮度值的範圍
  • 中間灰色 - 場景的中亮度區域
  • 動態範圍 - 最高場景亮度與最低場景亮度的比例
  • 要點 - 場景光線的主觀測量:可以從明亮、中等亮度到昏暗而有所不同。

若要計算 RGB 值的亮度,請使用下列公式:

L = 0.27R + 0.67G + 0.06B;

對數平均亮度是場景的關鍵的實用近似值。 一般方程式看起來像這樣:

Lw = exp[ 1 / N ( sum [ log ( delta + Lw( x, y ) ) ] ) ]

哪裡:

  • lw - 對數平均亮度
  • N - 影像中的像素數
  • delta - 用以避免黑色像素問題的小因素
  • Lw(x, y) - 像素的世界空間亮度 (x, y )

若要將此對應至中間灰色值,以下是亮度縮放運算符:

L( x, y ) = a * Lw(x, y ) / Lw

哪裡:

  • L( x, y ) - 像素縮放亮度 (x, y )
  • a - 套用縮放後的圖像鍵值

最後,這裡有一個簡單的色調映射運算子,用來壓縮高亮度。

Ld(x, y ) = L( x, y ) / ( 1 + L( x, y )

哪裡:

  • Ld(x, y) - 像素的壓縮和縮放亮度 (x, y )
  • a - 套用縮放後的圖像鍵值

此運算符會將高亮度調整為 1/L,並將低亮度調整為 1。 如需詳細資訊,請參閱下列檔。

Reinhard、Erik、Mike Stark、Peter Shirley 和 James Ferwerda。 「數位圖像的攝影音調複製」。 ACM 圖形匯刊(TOG),第29屆計算機圖形和互動式技術年會(SIGGRAPH),第267-276頁。 紐約,紐約:ACM出版社,2002年。

進階主題