OpenGL學習腳印:色差補正坡形(Gamma Correction)

來源:互聯網
上載者:User
OpenGL學習腳印:色差補正坡形(Gamma Correction) :http://blog.csdn.net/wangdingqiaoit/article/details/52974486
總結:
1. CRT Gamma ,  Cout = Cin ^ 2.2, 因為顏色rgb都是[0,1] 所以,0.5^2.2 = 0.218 所以,CRT顯示器的Gamma是變小的。
2. 色差補正坡形(Gamma Correction), 就是 CRT Gamma 的逆過程, Cout = Cin ^ (1 / 2.2) .
3. 紋理 儲存的顏色RGB 大多數都是預先處理過的,儲存的顏色資訊已經是色差補正坡形了的, 也就是 Cout = Cin ^ (1 / 2.2) .
4. OpenGl構造紋理對象時,指明紋理的內部格式為sRGB ,SRGB就是我們所說的已經校正後的非線性顏色,當按上述方式指明時OpenGL將會自動將其轉換到線性空間, 也就是說,如果指定紋理格式是sRGB的話,那麼就表示這張紋理儲存的顏色資訊是 已經是色差補正坡形了,Cout = Cin ^ (1 / 2.2),那麼,OpenGL 在使用這張紋理的時候,會進行 Cout = Cin ^ 2.2, 得到線性RGB顏色資訊。


Unity3D 的 gamma,linear
參考: [Unity3d]總結Gamma Space與Linear Space : http://blog.csdn.net/ngrandmarch/article/details/46407017

1. 當選擇Gamma色彩空間的時候,Texture的sRGB是否勾選,Unity預設都是使用Texture的原圖的顏色,也就是 儲存的顏色資訊已經是色差補正坡形了,Unity不會自動處理在Shader的運算結果。
2. 當選擇Linear色彩空間的時候, 
Texture的sRGB勾選了的情況,那麼 在Shader採樣的時候,紋理的顏色會被處理,就會從 Gamma -> Linear, 所以採樣後得到的顏色就是Linear,就用Linear顏色來運算, 在Shader運算完結果之後,GPU自動把運算結果進行處理,Linear -> Gamma。

Texture的sRGB 沒有勾選了的情況,那麼 在Shader採樣的時候, 得到的是Gamma顏色,在Shader運算的時候,用的是Gamma顏色,最後,GPU自動把運算結果進行處理,Gamma -> Gamma, 這裡就得到的結果就是,輸出的顏色都增強了。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.