iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 27
0
自我挑戰組

初見Unity Shader系列 第 27

Gamma校正

在Day21時,嘗試講解內建Skybox Shader是怎麼寫的,後來踩到了一些坑,裡面就碰到幾個我不知道的知識點:

  • Gamma
  • HDR
  • GPU Instancing

今天要來理解甚麼是Gamma

目標

  • (在電腦圖學中)甚麼是Gamma?

Gamma

在網路或書籍中,會找到Gamma是代指一個值,Gamma Correction是利用這個值進行的操作,所以要理解的是「為什麼要執行Gamma Correction」?

Gamma Correction

就我們所知的物理世界,只要光線加強一倍,亮度也會加強一倍,這個就是線性,從以前陰極射像管(大屁股螢幕)的時代,顯示圖像的電壓增加一倍,亮度並不會增加一倍,也就是說並不是線性的。後來找到亮度增加的量等於等於電壓的增加量的2.2次方,這就是Gamma值。

from wiki

把這個2.2的Gamma平衡到物理世界的亮度,就是Gamma校正(Gamma Correction),那麼要怎麼校正了?

其實下圖就可以很直觀的理解,給出一個次方為1/2.2的Gamma空間,與螢幕的2.2次方的Gamma空間相互處理就可以得出線性的空間了

from 到底什么是伽马校正 Gamma Correction?——节选自《高兴说显示进阶篇之三》

sRGB

簡單說一下甚麼是sRGB,全名是standard Red Green Blue,而sRGB當初創建就是為了解決上述顯示器的所說的問題,它的顏色空間會對應到Gamma 1/2.2的空間中

Unity

把上面的知識延伸到Unity上。

大機率會碰到一個問題,「素材進入引擎後,可能顯示不對」,又或著是說,怪怪的,就有可能是Gamma的問題,可能是素材import進引擎後,沒有做Gamma校正,又或是,根本不用做。

假設素材是sRGB的,那我們要先把它轉回線性空間,就是取消「Gamma校正」,統一素材的顏色空間,並統一的交由Unity的渲染引擎做事。

Reference


上一篇
畫面模糊效果
下一篇
粗略的HDR理解
系列文
初見Unity Shader30

尚未有邦友留言

立即登入留言