不把sRGB改成raw能有什麼後果?實例分享

blender sRGB 改raw
凡是用到data,都要改raw

大家學shading的時候⋯⋯

尤其是把data texture用到shader上的步驟,總會聽到別人說:

「要把color space從預設的sRGB改成raw(或者non-color data)

其實真的有必要每次都這樣做嗎?

雖然知道有它的道理⋯⋯
可是當自己嘗試的時候,好像也沒感覺出有很大的差別?
就只是看起來會有一點點的差異罷了,真的只是一點點,好像不改raw也不會有什麼「致命傷」
於是就漸漸沒有很強求自己要改raw了
特別是個人project,可能看到就會改一改,沒看到或者覺得麻煩就不會改(X
今天這篇不是什麼高深的技術探討,純粹是提供一些例子,讓大家心裡有個參照
(會長的劇本:同學看完文章後的心裡os:原來不改raw會有這麼嚴重的後果~以後還是乖乖改吧)

sRGB與raw實驗(一)

首先就是第一組例子:
實驗目標是roughness,所以我只放了color和roughness這兩張,然後把roughness分別設置成raw和sRGB
sRGB wood roughness sRGB
raw wood roughness raw

怎麼樣?

看了例子之後,雖然知道兩者存有差別,但腦海裡是不是依然有點疑慮?因為始終沒有達到「不能用」的地步,於是就會有了個想法:

我直接用sRGB版本的roughness也是可以的啊

甚至有機會sRGB更加貼近我想要的效果呢~

哈哈,如果你真的這樣做的話⋯⋯
其實一時三刻也沒有什麼大問題。。。XD
在上面這個case
sRGB與raw的分別,就只是在於texture表面的specular「有多rough」
因為在上面的實驗當中,會長我也只是改變了roughness的color space(raw以及sRGB)而已
但如果今天我們不只有roughness,而是有其他更多的data map需要同時使用,例如normal、metallic、height等等
(其實這樣較接近通常情況,反而只會用到roughness的場合比較少)

sRGB與raw實驗(二)

以下是第二組實驗

依然是沿用上面的材質,只不過這次,除了roughness以外,我還增加了normal map

所以現在是color依然維持不變,然後改變roughness和normal的color space,效果如下:

sRGB wood color space sRGB
raw wood color space raw
怎麼樣,是不是有點嚇到了XD,竟然差別會這麼大!?
(當初結果一出來,我也有嚇到,回去重做了幾次確保自己沒有做錯XD)
我先聲明,我並沒有偷偷移動燈的位置,或者改變燈的強度
場景內所有設定都是一樣,唯一的不同就只是把raw改成sRGB而已

sRGB與raw實驗(三)

以下是實驗三:

這次使用的texture map有:color、roughness、metallic以及displacement

和上面一樣,在color維持不變的情況下,測試另外三張data map在raw與sRGB之間的轉換

sRGB stone sRGB
raw stone raw
這次真的是「高下立見」
由於比起raw,sRGB是「不準確地反映出」displacement map原本的數據
這直接導致大量細節的丟失
本來會有凹凸的表面,因為沒有把color space改raw,於是也沒了該有的凹凸表面

關於sRGB與raw的總結

其實
Raw與sRGB這兩個color space之間,就是差了一個gamma correction
會長我之前也寫了一篇關於gamma correction的簡介文章,想了解更多的話可以看看

Raw是對data texture的還原

是令3D軟件真實呈現roughness、normal等data的重要步驟
如果忽略這步,強行透過各種調整或許還勉強可以用,但這絕不是正確和準確的方法
(順帶一提,ao也是需要改raw的,即使ao會以multiply的形式搭配sRGB的color去使用,但因為ao本身也屬於data texture的一種,所以都應該用raw)