當前位置:首頁 >教程首頁 > Unreal Engine >Unreal中關於顏色的技術分享

Unreal中關於顏色的技術分享

發布時間:2020-07-17 10:09:22

Hello . 大家好,今天我們來聊點與顏色有關的事,我是木偶心沒。用過unreal的小夥伴應該都會注意到,我們在unreal裏麵進行貼圖設置的時候,對於basecolor都需要勾選上sRGB。為什麼需要勾選?每張貼圖都需要勾選麼?如果不做勾選會怎麼樣?這就需要用我們的gamma校正和線性空間來破案了。接下來就一起來看這篇Unreal中關於顏色的技術分享。

1.webp.jpg

Gamma校正

首先什麼是gamma校正。官方解釋,RGB值與功率並非簡單的線性關係,而是冪函數關係,這個函數的指數稱作Gamma值,一般為2.2(power2.2),而這個換算過程,稱為Gamma校正。官方來源,開發gamma編碼是用來抵消陰極射線管(CRT)顯示器的輸入和輸出特性,電子槍的電流,也是光的亮度,與輸入的正極電壓的變化是非線性的。通過gamma壓縮來改變輸入信號抵消了這個非線性,因此輸出圖像就能有預期的亮度。

畫圖來理解就是如下,

如果我們有一張線性的照片,如果我們顯示器也是線性的,那經過顯示器輸出的圖像就應該和真實的圖像是一樣的;

2.png

但是實際上我們的顯示器根本不按套路來,它的gamma值是2.2,所以如果我們的圖片是線性的,那麼從gamma為2.2的顯示器中輸出出來就是下麵這個樣子

3.png

可以看到結果有明顯的色彩失真,所以如果我們把照片的gamma值設置成1/2.2的話,經過兩次調整,結果就是正確的啦

4.png

在進行gamma校正的方式就是采樣進行輸入的時候,Gamma=1/2.2,調亮Gamma;

在顯示輸出的時候Gamma=2.2,調暗Gamma。

5.png

線性空間

一般在圖片的渲染中存在兩個顏色空間,第一個是Gamma(非線性)的顏色空間;然後是Linear(線性)顏色空間。Gamma使用的是進行了校正的顏色表;而linear使用的是一個線性的完整顏色表,而且渲染中用到的光線也是線性空間的,所以我們在進行計算的時候要在線性空間中進行,輸入和輸出需要進行gamma校正。

最好的辦法就是在圖片輸入的時候采用sRGB格式,目的是為了告訴linear color space,需要對輸入的顏色進行power2.2校正切換到線性空間,然後再進行shader計算,計算完畢以後再通過power1/2.2切換回gamma空間。所以解決了我們剛開始提的在unreal中的basecolor需要勾選sRGB選項。而非sRGB紋理則會直接在shader中進行計算,比如normal和mask。

所以以上就解釋了我們在導入貼圖的時候需要注意到的問題,隻有勾選了引擎才會進行正確的像素計算;一般basecolor才需要勾選;對於basecolor來說,不勾選GPU就不會進行gamma校正,而直接使用存儲的值進行渲染,但同時也不會得到真實的效果。

來源:Thepoly公眾號

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答

微信掃碼入群領福利

掃碼領福利最新AI資訊

點擊谘詢
添加老師微信,馬上領取免費課程資源

1. 打開微信掃一掃,掃描左側二維碼

2. 添加老師微信,馬上領取免費課程資源

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定