91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

unity中gamma空間和線性空間有什么區別

發布時間:2021-07-24 13:44:20 來源:億速云 閱讀:609 作者:chen 欄目:大數據

這篇文章主要講解了“unity中gamma空間和線性空間有什么區別”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“unity中gamma空間和線性空間有什么區別”吧!

一、概述   

很久沒有寫文章了,今天寫一篇對gamma空間和線性空間的個人理解總結,在查閱和學習了各個資料后,算是一個個人筆記吧。  

二、Gamma顏色空間和線性顏色空間

其實對于顏色空間的理解,我個人是這樣理解的:所有的一切顏色空間,最終的目的,都是為了最終投入到人眼中,能夠基本重現自然界的顏色。   

記住這一個目的,對下面的一些理解就會更加的有依據了。    

2.1 人眼的感知能力

既然目標是我們人自身,那么我們就需要對人自身的眼睛的感知能力有一個基本的認識:人眼對于光強度的感知是非線性的。   

什么是線性,什么是非線性,從數學的角度說,就是自變量的變化和因變量的變化是否成固定比例(默認為1),如果成比例,即:y = kx, 那么這個變化就是線性的。

如果不成固定比例,那么這個變化就是非線性的,非線性是自然界最常見的變化關系。   

人類對于很多環境因素的變化的感知能力,都是非線性的,例如對于音階,就是基于等比關系,而不是線性關系;對于分貝,對于疼痛等級,等等。  

回到對光強的感知,人眼對于光強度的變化的感知,是非線性的,這是通過實驗得出的結論。如果在一個全黑的房間中,放入一根蠟燭,此時感知的光強變化比較明顯;

如果房間中已經放入100根蠟燭,再次放入一根蠟燭,此時人眼對這新加入的一根蠟燭帶來的光強度變化是沒有最初從0到1的感知強的(默認每根蠟燭的光強度增量一樣)。   

可見,人眼對于高亮部分的感知能力,是沒有暗部的感知能力強的。   

2.2 存儲空間的有限

上面說了人眼的感知能力特點,那么自然界的光又是如何?自然界的光強度,是和其對應的功率成正比的,對應的范圍是極其大:日光下100000lux,  星光0.0003 lux...  

如果要將這么大范圍的光強度變化都表示存儲起來,其對內存的占用以及傳輸帶寬的占用是無法承受的。

業界目前主流的,對于顏色亮度的表示,用的是8位,也就是8bit,從0-255來進行表示。逐漸也有32位的真彩,當然不在這次的討論中。   

2.3 Gamma空間

基于1和2的論證,那么如何將自然采光的結果存儲到實際的圖片中,就有一個基本的思路:將自然光以接近人眼感知能力曲線的函數進行壓縮到8位圖像中,這時候得到的圖形就是經過壓縮后的顏色結果。   

所謂Gamma壓縮,其實質就是這個壓縮的函數,是以Vout = VinGamma 來進行壓縮的。   

現在業界提到的Gamma = 2.2, 是業界經過反復測量,得到的一個數值,這樣可以在256個灰度階的范圍內更多的保留暗部的細節:

unity中gamma空間和線性空間有什么區別unity中gamma空間和線性空間有什么區別

 上面的兩個圖兩個圖,就可以基本的解釋Gamma = 2.2 的來源,人眼的感知能力和n = 1/2.2的冪函數比較靠近,當然不同環境下有不同的數值,大概范圍在1.8-2.5之間。   

2.4 線性空間

理解非線性空間-Gamma空間后,自然可以理解線性空間,就是上面圖二中的 n = 1這條曲線,為什么要提線性空間?因為我們的相機對于光強的感知,是基于線性空間的。  

舉一個簡單例子,兩個光子投射到相機上,其得到的光強就是2倍光子光強,當然我們已經知道人眼并不是2倍光強。   

而業界的圖片都是Gamma空間中存儲,那么相機到最終圖片,就會經歷一個編碼過程,這就是所謂的Gamma編碼,也就是: Vout = Vin(1/2.2) 這個過程。   

三、Gamma補償

現在,我們通過相機拍攝的圖片,最終是以gamma空間的格式存儲(業界標準稱為sRGB), 那么我們在顯示器上查看圖片,是否也是以sRGB的結果顯示的?答案是否定的。

前面業界已經將原生自然界的光照進行了壓縮,那么業界定然要通過一定的辦法將壓縮的圖片重新轉換回來,得到更接近自然界的圖像,這個過程,就是Gamma補償,也被叫做Gamma校正。   

既然我們知道是以什么函數進行壓縮,那么解壓的過程,自然就是一個求逆的過程,可以得到:Vout = Vin2.2     

這一步是業界的顯示器自動默認執行的,所以我們在最終向顯示器上提交的顏色,需要滿足對應的關系。

用一張圖表示整個采樣到顯示的過程: 

unity中gamma空間和線性空間有什么區別

一句話總結: 采樣生成,使用了Gamma編碼,這是業界標準,顯示過程,使用了Gamma補償,這也是業界標準,選取gamma = 2.2, 這是業界根據人眼進行測試得到的比較靠近人眼感知能力曲線的數值。

四、Unity中使用線性空間和Gamma空間

 在圖形學界,技術是不斷進步和探索的,應用一直都是延遲更新的(為了向下兼容的需要)。  

當然gamma空間的存在,以前都是忽視這部分的差異,直接基于gamma空間的存圖進行光學計算的。   

但是引擎中的光學計算(shader中),是基于線性空間的公式進行的,這樣就會帶來較大的差異,我們推算的公式基于線性空間得到的,但是輸入的數據是基于gamma空間存儲的格式,圖像采集得到的結果

作為光學計算公式的輸入,得到的輸出自然是錯誤的。以前游戲行業對于這個一直處于忍受階段,也可以通過美術進行調整,得到較為差異不大的計算結果。   

最近幾年逐漸推廣的PBR技術,對于光照的計算更為苛刻,這推動了線性空間在游戲行業的逐步推廣。   

4.1 Gamma空間的處理過程

在gamma空間中,在shader進行光學計算的過程中,直接將圖像采樣得到結果帶入公式中進行計算,得到的color存入colorbuff中,然后提交到顯示器,進過一次gamma補償,就得到最終的顏色。  

4.2 線性空間的處理過程

線性空間中,對所有的圖片,默認認為圖片都是線性存儲的方式。所以如果原圖是Gamma空間的sRGB的存儲方式,需要勾選sRGB的標志,這樣在進行shader計算的時候,會首先進行一次gamma補償,

將顏色從gamma空間轉換到線性空間,然后進行正確的光照計算,得到結果最后再轉換回到gamma空間(gamma壓縮), 最后提交到顯示器,進行一次gamma補償,得到最終的顏色。  

用一張圖表示這兩種處理的流程(直接用參考文章的圖): 

unity中gamma空間和線性空間有什么區別

一句話總結:unity中的gamma空間和線性空間,其實質就是對存儲sRGB格式圖片,進行不同的光照計算,不同的光照計算進行不同的流程,得到精度不同的結果,最后都需要統一為gamma空間

的格式,提交到顯示器上進行gamma補償,得到最終的顯示圖片。

感謝各位的閱讀,以上就是“unity中gamma空間和線性空間有什么區別”的內容了,經過本文的學習后,相信大家對unity中gamma空間和線性空間有什么區別這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

赤峰市| 二连浩特市| 宿州市| 麻江县| 页游| 汉阴县| 昭通市| 天等县| 安远县| 合肥市| 阿鲁科尔沁旗| 横峰县| 河间市| 昌吉市| 龙州县| 承德县| 开平市| 浦江县| 敦煌市| 阜城县| 清流县| 喜德县| 英吉沙县| 来宾市| 延安市| 松溪县| 谷城县| 大新县| 兴宁市| 仪征市| 松阳县| 黔东| 浮山县| 温宿县| 黎平县| 察哈| 澄江县| 淮北市| 金川县| 竹山县| 巴马|