ETH官方钱包

創(chuàng)作內(nèi)容

2 GP

Graphics - PC的HDR實作

作者:巧克力喬斯達(dá)│2023-09-23 03:44:46│巴幣:4│人氣:118
這幾天補足了這個一直沒有去補的知識
因為我自己身為玩家時,甚至都沒有用過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比較以及其他一些阿哩阿雜的介紹就不贅述了
整體實作流程大約如下 (以D3D12HDR範(fàn)例來講):
  • 建立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格式跟色彩空間:
  1. R16G16B16A16_SFLOAT, VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
  2. 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)利

相關(guān)創(chuàng)作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

2喜歡★ltes50414 可決定是否刪除您的留言,請勿發(fā)表違反站規(guī)文字。

前一篇:C++ - 謹(jǐn)慎實作vi... 後一篇:學(xué)習(xí)日: DirectM...


face基於日前微軟官方表示 Internet Explorer 不再支援新的網(wǎng)路標(biāo)準(zhǔn),可能無法使用新的應(yīng)用程式來呈現(xiàn)網(wǎng)站內(nèi)容,在瀏覽器支援度及網(wǎng)站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現(xiàn)和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業(yè)系統(tǒng)版本才可使用)

face我們了解您不想看到廣告的心情? 若您願意支持巴哈姆特永續(xù)經(jīng)營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學(xué)】