色域

像素的色域決定瞭如何解譯像素的數值。這與指定在記憶體中不同聲道及其位元排列方式的像素格式不同。

線性與 sRGB 色域

我們著重的兩個色域是線性和 sRGB 色域。兩者的像素格式 (例如 BGRA32) 相同,這表示每個藍色、綠色、紅色和 Alpha 管道各有 8 位元。不過,這些位元的解讀方式可能有所不同。

在線性色域中,如果將值增加一倍,則可將強度增加一倍。新增兩個顏色時,就如同將每個管道的值加在一起一樣簡單,做法相當簡單。

另一隻手上的 sRGB 為非線性,也就是說,將任何值加倍會不會加倍該值的強度。

Rationale

既然線性色域如此直覺,為什麼甚至包含非線性色域?

簡單的答案是人眼看不見光線。舉例來說,在低光源環境中,比明亮環境更能夠辨別光線差異。因此,sRGB 等非線性色域能夠像現實生活中一樣,能夠更妥善地呈現圖片。

對你的影響

螢幕截圖通訊協定會以 sRGB 色域輸出圖片。也就是說,如果您使用非飽和像素比較測試,應將 sRGB 螢幕截圖轉換為線性色域。非飽和像素是指一或多個管道為非 0 或非 1。

然而,如果您使用映像檔建立 GPU 資源,則不需要進行這項轉換,且可以將輸出做為 VK_FORMAT_*_SRGB。