Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
高動態範圍光照
前言
通常美術會先完成所有的 3D 建模和貼圖,然後在 3D 建模軟體中檢查自己的作品,覺得「看起來很棒,可以整合到專案裡了!」。接著進入遊戲,設定好燈光並開始執行。
那麼, 所有這些" HDR"業務在什麼時候發揮作用?要理解答案, 我們需要查看顯示器的行為.
您的顯示器輸出線性光比率從某個最大強度到某個最小強度. 現代遊戲引擎在各自的場景中對線性光值進行複雜的數學計算. 這將會有什麼問題呢?
根據顯示器型別的不同, 顯示的強度範圍有限. 然而, 遊戲引擎算繪的強度值範圍沒有限制. 雖然 "最大強度" 對sRGB顯示器來說有一定的意義, 但在遊戲引擎中卻沒有任何影響;每影格算繪時可能產生無限寬的強度值範圍.
這表示場景光強(也就是 場景參考 光照比)需要經過轉換和映射,才能符合所選顯示器的輸出範圍。這個概念可以想像成我們用虛擬相機拍下遊戲引擎裡的場景,由虛擬相機套用特定的相機算繪轉換到場景資料,然後輸出給對應的顯示裝置。
備註
Godot supports high dynamic range output. You can read more about this on the HDR output page.
For advanced users, it possible to get a non-tonemapped image of the viewport with full HDR data, which can then be saved to an OpenEXR file.
電腦顯示器
幾乎所有顯示器都需要對發送給它們的程式碼值進行非線性編碼. 顯示器又利用其獨特的傳輸功能, 將程式碼值 "解碼" 為輸出的線性光比, 並在每個紅色, 綠色和藍色發射點的獨特顏色的光中投射出這些比值.
大多數電腦顯示器的規格皆遵循 IEC 61966-2-1 標準,也就是 1996 年的 sRGB 規格。這個標準規定了 sRGB 顯示器的行為,包括 LED 像素的發光顏色,以及輸入(OETF)和輸出(EOTF)的傳輸特性。
Not all displays use the same OETF and EOTF as a computer display. For example, television broadcast displays use the BT.1886 EOTF. However, Godot only supports sRGB and HDR displays.
sRGB標準是圍繞著常見的桌面計算CRT顯示器的電流與光輸出之間的非線性關係而制定的.
場景參考模型的數學要求我們將場景乘以不同的值, 以調整不同光照範圍的強度和曝光. 顯示器簡單的傳遞函式不能恰當地算繪遊戲從引擎場景中輸出的更大動態範圍. 這需要一種更複雜的編碼方法.
場景線性和資源管道
在場景線性sRGB中工作並不像按一下開關那樣簡單. 首先, 匯入的圖像素材必須在匯入時轉換為線性光比例. 即使將其線性化, 這些素材也可能並不完全適合用作紋理, 具體取決於它們的生成方式.
有兩種方式可以做到:
用於在圖像匯入時顯示線性比率的sRGB傳遞函式
這是最簡單的使用sRGB資源的方法, 但不是最理想的. 這樣做的一個問題是品質的損失. 每通道使用8位元來表示線性光比率, 不足以正確量化這些值. 這些紋理以後也可能會被壓縮, 可能會加劇這個問題.
硬體sRGB傳輸函式顯示線性轉換
GPU 會在以浮點數讀取紋素(texel)後進行轉換。這在 PC 和家用主機上運作良好,但多數行動裝置可能不支援,或是在壓縮紋理格式下(像是 iOS)不支援這個功能。
場景線性到顯示參考的非線性
在所有算繪完成後,場景的線性算繪結果需要轉換成適合輸出的格式,例如 sRGB 顯示器。為達到這個目的,請在目前的 Environment 啟用 sRGB 轉換(細節見下文)。
請注意,sRGB -> 顯示線性(Display Linear) 和 顯示線性 -> sRGB 這兩個轉換必須同時啟用。若只啟用其中一個,畫面會變得非常怪異,可能只適合前衛實驗風格的獨立遊戲。
HDR的參數
HDR 設定可以在 Environment 資源中找到。通常會出現在 WorldEnvironment 節點內,或是在相機節點中設定。欲了解更多資訊,請參閱 環境與後製處理。