Work in progress

The content of this page was not yet updated for Godot 4.2 and may be outdated. If you know how to improve this page or you can confirm that it's up to date, feel free to open a pull request.

高動態範圍光照

前言

Normally, an artist does all the 3D modeling, then all the texturing, looks at their awesome looking model in the 3D modeling software and says "looks fantastic, ready for integration!" then goes into the game, lighting is setup and the game runs.

那麼, 所有這些" HDR"業務在什麼時候發揮作用?要理解答案, 我們需要查看顯示器的行為.

您的顯示器輸出線性光比率從某個最大強度到某個最小強度. 現代遊戲引擎在各自的場景中對線性光值進行複雜的數學計算. 這將會有什麼問題呢?

根據顯示器型別的不同, 顯示的強度範圍有限. 然而, 遊戲引擎渲染的強度值範圍沒有限制. 雖然 "最大強度" 對sRGB顯示器來說有一定的意義, 但在遊戲引擎中卻沒有任何影響;每影格渲染時可能產生無限寬的強度值範圍.

這意味著場景光強,也稱為*場景對應*(scene-referred)的光照比率,需要進行轉換和對應以適應所選顯示器的特定輸出範圍。這就類似通過虛擬相機拍攝我們的遊戲引擎場景,在這裡,我們的虛擬相機將對場景資料應用特定的相機渲染變換,其輸出將以特定的顯示型別顯示。

備註

Godot目前尚不支援高動態範圍 輸出. 它只能在HDR中執行照明, 並將結果對應為低動態範圍的圖像.

對於高級使用者來說, 仍然可以得到一個非色調對應的視圖圖像與完整的HDR資料, 然後可以保存到一個OpenEXR檔.

電腦顯示器

幾乎所有顯示器都需要對發送給它們的程式碼值進行非線性編碼. 顯示器又利用其獨特的傳輸功能, 將程式碼值 "解碼" 為輸出的線性光比, 並在每個紅色, 綠色和藍色發射點的獨特顏色的光中投射出這些比值.

對於大多數電腦顯示器來說,顯示器的規格是根據 IEC 61966-2-1,即 1996 年的 sRGB 規格,進行概述的。該規範概述了 sRGB 顯示器的性能,包括 LED 像素中的燈光顏色以及輸入(OETF)和輸出(EOTF)的傳輸功能。

並非所有顯示器都使用與電腦顯示器相同的OETF和EOTF. 例如, 電視廣播顯示器使用BT.1886 EOTF. 然而,Godot目前只支援sRGB顯示器.

sRGB標準是圍繞著常見的桌面計算CRT顯示器的電流與光輸出之間的非線性關係而制定的.

../../_images/hdr_gamma.png

場景參考模型的數學要求我們將場景乘以不同的值, 以調整不同光照範圍的強度和曝光. 顯示器簡單的傳遞函式不能恰當地渲染遊戲從引擎場景中輸出的更大動態範圍. 這需要一種更複雜的編碼方法.

場景線性和資源管道

在場景線性sRGB中工作並不像按一下開關那樣簡單. 首先, 匯入的圖像素材必須在匯入時轉換為線性光比例. 即使將其線性化, 這些素材也可能並不完全適合用作紋理, 具體取決於它們的生成方式.

Godot 沒有使用限制

用於在圖像匯入時顯示線性比率的sRGB傳遞函式

這是最簡單的使用sRGB資源的方法, 但不是最理想的. 這樣做的一個問題是品質的損失. 每通道使用8位元來表示線性光比率, 不足以正確量化這些值. 這些紋理以後也可能會被壓縮, 可能會加劇這個問題.

硬體sRGB傳輸函式顯示線性轉換

GPU 會在使用浮點讀取紋素後進行轉換。這在 PC 和遊戲主機上很好用,但大多數移動裝置不支援,或者它們不支援壓縮的紋理格式(例如 iOS)。

場景線性到顯示參考的非線性

完成所有渲染後, 場景線性渲染需要轉換為適當的輸出, 例如sRGB顯示. 為此, 請在目前的: Environment 中啟用 sRGB 轉換(更多內容見下文).

請記住, sRGB ->顯示線性(Display Linear)顯示線性 -> sRGB 的轉換必須始終 全部(both) 啟用. 未能啟用其中一個將導致僅適用於前衛實驗性獨立遊戲的可怕視覺效果.

HDR的參數

HDR可以在 Environment 資源中找到. 這些在大多數情況下都可以在 WorldEnvironment 節點中找到或在相機中設定. 更多資訊請參閱 環境和後期處理.