在unity引擎中的工程如何適配HDR電視?
現在只能在網上找到描述以前的那個HDR特效,如何和現在的HDR硬體適配怎麼也找不到,目前也沒資金買一台HDR顯示設備來實驗,只是想知道實現原理。
Unity現在還不支持, 只有一個feature request: Unity Feedback - HDR monitor support
如果想了解原理, 可以參考NVIDIA的系列文章: HDR
以前的HDR特效和現在說的HDR電視,是完全兩個概念。以前說的是通過tone mapping,把HDR變成LDR顯示出來。現在說的是直接輸出HDR的信號。在Windows上這需要v1703之後才能很好地支持。unity做沒做就不知道了。
LDR顯示器 接受的是 LDR輸入(比如一個RGB24的整數幀緩衝區)
所以渲染的時候 會先把結果渲染到一個 HDR渲染目標(比如一個浮點紋理)
然後通過後處理階段做toon mapping 把HDR圖像映射為LDR圖像
然後交給顯示器呈現
HDR顯示器 本身就接受 HDR輸入
所以就不需要自己做toon mapping了
直接把HDR圖像交給顯示器呈現就是了
toon mapping的任務就交給顯示器自己了
(當然也有一些情況是 顯卡做了toon mapping 把普通顯示器偽裝成HDR顯示器 其實這種做法應該是之後普遍的做法 因為如果顯示器直接接受HDR信號 需要額外的傳輸帶寬 而且顯示器需要額外的硬體負責toon mapping 如果交給顯卡處理為LDR後 提交給顯示器 顯示器只需要普通的LDR顯示器就行了 缺點是顯卡仍需要做一個toon mapping的後處理 而且等於toon mapping過程變成固定功能了 自由度下降 顯示器廠商因為最近也沒有什麼噱頭 所以自說自話提出了所謂的HDR顯示器 把這個概念炒熱之後 顯卡廠商也不得不跟進 實際上HDR顯示器並不會帶來更好的畫質 HDR顯示器和LDR顯示器的區別 僅僅在於toon mapping 到底是應用程序自己做呢 還是顯卡驅動或者顯示器做)
實現上就是在建立呈現幀緩衝區的時候 選擇HDR格式就行了
Unity支不支持我不知道
但理論上 支持起來不困難
Unity 還沒支持呢,用UE4,吧!
至於支持hdr顯示器的工作難度,與HDR的好處。智者見智。我可以給個參考。像龔那樣級別的,把所有顯示器都支持完全正確,估計起碼要一個半月,期間還有有各硬體廠商的鼎力支持
推薦閱讀: