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公眾號
熱門課程
專業講師指導 快速擺脫技能困惑相關文章
多種教程 總有一個適合自己專業問題谘詢
你擔心的問題,火星幫你解答2024年2月16日,Open AI發布了新文本轉視頻模型Sora,相對於Runway-Gen2的18秒視頻和Pika的3秒視......
火星時代教育專門針對Axure產品原型設計的培訓課程,零基礎起步,創造出專業級的產品設計師。
了解美工廣告設計的基礎知識,以及如何選擇一個優秀的培訓學校,火星時代教育是您最佳的選擇。
火星時代教育,精心設計的瑪雅3D動畫培訓課程,致力於培養你們的創新思維和獨立製作優秀3D動畫的能力,幫助你們踏足動畫產業
本文詳細介紹了零基礎學習UE4需要的時間。告訴你如何計劃時間、提升效率,並且順利地掌握UE4。
本文深入探討就業培訓UE4設計的重要性,並介紹火星時代教育如何幫助您掌握行業競爭力。
1. 打開微信掃一掃,掃描左側二維碼
2. 添加老師微信,馬上領取免費課程資源
同學您好!