在gramma空間下,勾選與否無關(guān)。 在liner空間下,勾選shader會自動將讀到的像素作gramma矯正,即x的0.45次方 不勾選,shader讀到的就是原始的顏色值
然后unity如果選了gramma空間,會自動將輸出顏色做一個伽馬矯正,偏暗,相當(dāng)于拍照對圖片的自動處理。
透明通道的值不會受到伽馬編碼的影響,勾選與否都不會影響其線性值。值得注意的是ps里必須用這個取色
最近遇到兩個色域空間所表現(xiàn)出來顏色不一樣的問題。原理就請查其他作者的參考文章??偨Y(jié)如下 1. 當(dāng)美術(shù)制作的圖為8位時(256種顏色),顏色為經(jīng)過Gamma驕正。 32位圖時為真實顏色,表現(xiàn)為灰度值8位時為0.5. 32位時為0.2 也就是說用8位圖制作時為非線性空間。 32位時為線性空間. 2.因為顯示器最終都會進行一次display gamma驕正(將8位顏色值域轉(zhuǎn)換成32位線性值),所以我們需要在GPU進行一次encoding gamma驕正(所有的顏色計算都轉(zhuǎn)換到線性空間下進行計算)。這樣輸出的最終顏色值才最接近真實的顏色。 3. 個人電腦使用的一個標準叫sRGB,它使用的encoding gamma大約是0.45(也就是1/2.2)。這個值就是為了配合display gamma為2.5的設(shè)備工作的。這樣,end-to-end gamma就是0.45 * 2.5 = 1.125了。 (注:sRGB(standard Red GreenBlue)通用色彩標準) 4. 當(dāng)為unity選擇gamma空間時, 代表不經(jīng)過encoding gamma值矯正。 選擇liner時,會將所有計算都放到線性空間下。 5. 當(dāng)選擇liner時,你的texture又是在32位線性空間下制作時,需要將texture的sRGB選項取消掉,不然untiy會再次將你的texture進行一次驕正,得到的顏色將不對. 6. 制作貼圖時使用sRGB色域空間,并在unity中,將sRGB勾上。 6. 當(dāng)你想要通過shader手動矯正時代碼:fragColor.rgb = pow(fragColor.rgb, 1.0/2.2); |
|
來自: 勤奮不止 > 《游戲引擎unity》