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

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

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

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

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

線性空間
一般在圖片的渲染中存在兩個顏色空間,第一個是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公眾號
熱門課程
專業講師指導 快速擺脫技能困惑相關文章
多種教程 總有一個適合自己專業問題谘詢
你擔心的問題,火星幫你解答在廣州這座繁華的都市中,數字創意產業正蓬勃發展,廣州視頻剪輯培訓成為許多影視愛好者的理想起點。隨著短視頻平台和影視製作需求的激......
在北京這樣一座充滿創意活力的都市,UI設計培訓正成為無數年輕人追逐職業夢想的跳板。隨著數字經濟的蓬勃發展,UI設計行業在北京展......
在當今創意經濟蓬勃發展的浪潮中,北京平麵設計培訓成為眾多職業追求者的理想起點。這座城市的活力與機遇吸引著無數人投身視覺藝術領域......
在影視和設計行業蓬勃發展的今天,虛幻引擎作為核心技術工具,正引領著視覺創作的革命。越來越多的人渴望掌握這門技能,而專業的培訓成......
在北京這座文化創意中心,平麵設計培訓行業蓬勃發展,為渴望入行的學員提供了豐富機遇。隨著數字媒體和影視產業的崛起,掌握視覺傳達技......
在上海這座充滿活力的城市,影視和設計行業正迎來前所未有的發展機遇,數字技術的進步讓3D建模成為創意產業的核心驅動力。參加專業的......
同學您好!