這幾天補足了這個一直沒有去補的知識
因為我自己身為玩家時,甚至都沒有用過HDR螢?zāi)? 價格高就算了,可能還不一定值得
但是現(xiàn)在是身為開發(fā)者了,想去了解一下這塊,所幸公司用的螢?zāi)皇怯兄г瓾DR的,所以主要用它來做測試 (LG某款支援HDR的27吋螢?zāi)唬敿?xì)規(guī)格不知道)
無HDR vs 有HDR
在我的小引擎裡測試
GIF裡並沒有文字說明哪個是HDR哪個不是,但不用講應(yīng)該也很明顯了
看起來比較飽和鮮豔的就是了,本來因為色彩空間不足,過亮的像素如果疊加最終只會偏白
而HDR卻可以較為出色的顯示出這些資訊,整體對比度增強
看白天測試更明顯
HDR實作
SDR與HDR比較以及其他一些阿哩阿雜的介紹就不贅述了
- 建立Swap chain之後,檢查螢?zāi)皇欠裰г瓾DR,除了螢?zāi)恢гc否,有沒有在win10設(shè)定裡打勾"使用HDR"也是必要
- Vulkan可以跳過這步,因為它會在確定建立HDR buffer時自動幫我們開啟HDR
- 給Swap chain設(shè)定正確的色彩空間
- Vulkan也可以跳過這步,因為它的做法是在建立swap chain的同時啟動HDR
- 設(shè)定HDR meta資料
那麼我個人還加了第四步,D3D12的三角形範(fàn)例太簡單了,完全沒有考慮到實際應(yīng)用
- 調(diào)整Tone mapping,將在HDR的計算結(jié)果轉(zhuǎn)換成SDR的經(jīng)典手筋,但在HDR卻不是必要的一手,而且shader裡是有下saturate()指令的,HDR根本不需要這個
那麼我是簡明的先做log10避免過亮,再做一個gamma校正避免過暗,Code
Swap chain格式與色彩空間
當(dāng)我在這個螢?zāi)簧吓躒ulkan實作時,主要抓到了以下兩種HDR格式跟色彩空間:
- R16G16B16A16_SFLOAT, VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
- A2B10G10R10_UNORM_PACK32, VK_COLOR_SPACE_HDR10_ST2084_EXT
乍一看之下,好像RGBA16F這個格式是一選,但恰好錯了! 主要是它的色彩空間幾乎與SRGB相似,只是讓我能夠直接在畫面上顯示linear的色彩內(nèi)容..讓我少一步轉(zhuǎn)SRGB的步驟罷了,效果上差別不大
那麼就自然是選擇
HDR10格式與色彩空間了,這是最廣泛支援的HDR格式之一,還有用於影片的HDR+變種
HDR Meta資料
從前面metadata的連結(jié)可以看到,HDR10的meta資料如下:
typedef struct DXGI_HDR_METADATA_HDR10 {
UINT16 RedPrimary[2];
UINT16 GreenPrimary[2];
UINT16 BluePrimary[2];
UINT16 WhitePoint[2];
UINT MaxMasteringLuminance;
UINT MinMasteringLuminance;
UINT16 MaxContentLightLevel;
UINT16 MaxFrameAverageLightLevel;}
DXGI_HDR_METADATA_HDR10;
必須設(shè)定色彩空間的座標(biāo),以及螢?zāi)蛔畲笞钚〉牧炼取⒆畲髢?nèi)容亮度、最大平均(數(shù)個幀)亮度
而HDR10所採用的色彩規(guī)範(fàn)為
Rec. 2020 (也稱BT2020),基於CIE 1931的一種規(guī)範(fàn)
從圖表上來看,RGB要填入的數(shù)值約為(0.708, 0.292), (0.17, 0.797), (0.131, 0.046)
而白色座標(biāo)則約為(0.3127, 0.3290),這是單行道沒什麼好說的
只是要注意D3D12必須乘上50000做轉(zhuǎn)換,而Vulkan只要維持在[0,1]即可
比較有問題的是剩下四個參數(shù),要怎麼決定這些?我目前跟微軟範(fàn)例一樣寫死1000,0.001,2000,500之類的,注意在設(shè)定luminance(單位nits)時都要乘上10000做轉(zhuǎn)換
而MaxCLL以及MaxFALL直接設(shè)定即可
這些參數(shù)原則上是要開放給使用者(玩家)設(shè)定的,因為每個螢?zāi)坏淖罴阎涤兴煌?/div>
然後玩家應(yīng)該可以根據(jù)一些影片測試,從播放器中得知這些數(shù)據(jù),再設(shè)定即可
結(jié)論
這樣,就又再學(xué)習(xí)另一個知識了~
那我會因此成為HDR派玩家嗎? 不!
截圖上看不出來,但是當(dāng)我用公司螢?zāi)婚_HDR時,畫面直接藍(lán)爆
眼睛 超! 不! 舒! 服! 我不知道是HDR一定會這樣還是這是LG螢?zāi)坏膯栴}
如果要轉(zhuǎn)HDR派,我要多方面測試不同種螢?zāi)徊判?!
引用網(wǎng)址:http://www.jamesdambrosio.com/TrackBack.php?sn=5798640
All rights reserved. 版權(quán)所有,保留一切權(quán)利