Try   HackMD

Gamma 2.2 and Linear Workflow

What is Gamma

Gamma 是個數學函數

Gamma 運用在很多的地方,並不只是用在圖像上面,
而一張圖片從相機到呈現在螢幕上的過程中,
其實經過非常多次的 Gamma 轉換,
包括感光元件也有自己的 Gamma。

但對我們來說,Gamma 主要作用在三個地方:

Image Gamma

用在影像檔案時,Gamma 是一種影像資訊演算法,
目的是為了在 8bit 有限的資源內,儲存符合人類視覺的色彩資訊,
雖然增加了暗部的檔案資訊,但是也會改變顯現出來的顏色,
有些格式會以 color profile 的方式將 Gamma 設定嵌入檔案內,
有利於之後的 Gamma 修正,
是以 1/Gamma 這樣數值來儲存。

Display Gamma

各種顯示設備都具有自己的 Gamma 線性,
根據物理性的不同而有衰退的現象,
一般我們會把螢幕的 Gamma 定義為 2.2。

System Gamma

這個 Gamma 指的是在經過一大堆複雜 Gamma 計算之後,
最後呈現在人類眼睛前的 Gamma 數值,
正常來說 System Gamma 應該要趨近於 1.0,
但有些系統會偷偷把數值提高,用來增強影像對比。


小結

就視覺上來說,Gamma 數字大於1的時候會變暗,小於1會變亮,
一張圖片從相機拍完放到螢幕上,中間經過很多次的 Gamma 調整與轉換,
但不管中間經過多少變化,被人眼看到之前的 Gamma 應該要趨近於 1。

真實世界其實沒有你以為的那麼亮 - Gamma 1.0

魔法數字 1,0.4545 與 2.2

我們假設真實世界的色彩是一個線性的分佈
也就是所謂的 Gamma 1.0

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

而就像相機一樣,
人眼在看這個世界的時候其實也會有自己的曝光模式等等設定,
而且每個人的還不太一樣,不過根據科學家的研究,
人類會將眼睛看到的影像亮度提高,並且對暗部的細節較為敏感,
提高的幅度大概呈現這樣的曲線,而這個曲線趨近於 Gamma 0.4545

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

左邊是真實世界,右邊是普通人類看到的結果。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

螢幕是另外一個物理世界 - Gamma 2.2

理論上當你把真實世界紀錄下來的時候,
應該只要存成 Gamma 1.0 就可以,
但是你在看的圖片需要透過螢幕轉譯出來,
而以前 CRT 的物理性亮度大概是 Gamma 2.2 衰退曲線,
再加上當時定義以 Gamma 2.2 校正過的 sRGB 作為國際通用色彩空間(color space)
即使現在 LCD 的技術已經可以正確呈現 Linear,
還是為了避免顯示裝置差異以及許多原因維持 Gamma 2.2 的設定。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

而當你拍照後儲存的照片( jpg,tiff 等 ),
都會以 Gamma 0.45 ,也就是 1/2.2 的方式儲存 (Raw 格式則會是 1),
這是為了最佳化紀錄資訊,稱為 Gamma Encoding,

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

而這碰巧就跟螢幕的衰退 Gamma 2.2 互相抵銷
讓螢幕上呈現的為 Gamma 1.0 的 Linear。
籠統的來說,電腦圖學就是一場 Gamma 2.2 的戰爭也不為過,

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

另外,同樣一張照片,放到 Mac 上的時候則可能會偏暗,
這是因為 Mac 的顯示系統預設 Gamma 為 1.8,
而一些人會認為 Mac 的螢幕顏色比較好看,細節比較多,
或許是因為最前面提到的,人眼對於暗部細節較為敏感,
Mac 上偏暗的圖片對人眼來說層次會較多比較有立體感,

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Apple 在 2009 年的 OSX 10.6 之後已經將 Gamma 預設值改為 2.2 :trollface:

覺得有點亂?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

這部份正是讓人最混亂的地方,
為什麼我們檔案是儲存的是 Gamma 2.2 而不是 Gamma 0.45?
而且 Gamma 2.2 應該要變暗,但在我們看起來卻是變亮?
Gamma Correct 到底在校正什麼?

其實,紀錄檔案時所使用的格式是反函數 1/Gamma,
以 Gamma 2.2 來說,1/2.2 就等於 0.4545,
所以儲存影像檔案時, Gamma 數值越大,圖檔在螢幕顯示上會越亮。

而我們很容易把 Image Gamma 和 Display Gamma 的 Gamma Correct 混在一起,
但其實他們修正不一樣的事情。

Display 的 Gamma Correct 是修正視覺上或顯示上的顏色衰退,
但這只影響到視覺上的顏色,而不是影響真正的紀錄數值。

例如我們的人眼具有 Gamma 2.2 的色彩校正,但影響的只有人類,
你沒有辦法影響大自然的 Gamma
當然也沒有辦法影響其他生物(例如客戶)看到的 Gamma 值。

而 Image 的 Gamma Correct 修正的是,
我們儲存檔案時為了要優化資料而使用了 Gamma 0.45 導致色彩變亮,
在螢幕上看起來沒有問題,
是因為螢幕自身的 Gamma 2.2 衰退剛好抵銷這個亮度增幅,
但在實際檔案資料上這個顏色數值紀錄是錯誤的,
而影像處理其實就是數學,
例如常見的 add、multipy、screen 等都是在做 channel 數學運算,
如果資料沒有校正就回 Gamma 1.0 就直接做運算,
得到的結果肯定就會是錯誤的,
所以進入影像軟體的時候應該先要把數據還原,
以一般照片的狀況就會是 (1/2.2)x(2.2) = 1 ,
加一個 Gamma 2.2 把這個數值調整回來。

這就是為什麼會說,如果你軟體內沒有走線性流程,你所作的計算都會是錯誤的,
因為你一開始給的素材本身數值就不正確,當然輸出也會是錯誤的。

所有維持視覺與影像資料為 Gamma 1.0 的步驟都是 Liner Workflow 的一環,
Liner Workflow 必須從拍片初期一直維持到最後出片為止,
牽連的範圍非常廣。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

EXR 是獨特的

一開始提到,對一般 8bit 的檔案格式來說,
Gamma 是一種為了在有限資源儲存資訊所作的處理,
但是像 OpenEXR 這種 32 bits 的格式來說,
就不需要做這種取巧的處理,他只需要照真實世界的 Linear 方式儲存即可,
因此他儲存的時候會是 Gamma 1.0

但 Gamma 1.0 看起來應該比較暗不是嗎?

這是因為 ILM 在規劃 EXR 的時候,
把 Gamma Correct 修正的動作放在 EXRFormat plug-in 裡,
也就是所有支援 EXR 格式的軟體在打開 Gamma 1.0 的 EXR 時,
預設會補上一次 Gamma 0.45 亮度增幅,
這樣再透過 Display/image viwer 的 Gamma 2.2 衰退校正就會是 1.0

這樣做的優勢在於這個步驟影響的是色彩,是顯示的時候才做處理
所以不會影響原本 EXR 紀錄的數值。
你可以任意的調整顯示的強度,
而不是像其他格式那樣真的去調整檔案內紀錄的數值,
當然也就不會影響你在影像軟體內做的數學處理。

總結

大自然是線性的
物理算圖引擎是線性的
影像處理時的計算是線性的
EXR、RAW 儲存是線性的

螢幕顯示是非線性的 Gamma 2.2
人眼是非線性的 Gamma 0.45
照片儲存(jpg、png 等)是非線性的 Gamma 0.45

Why use Linear Workflow

為了物理正確

雖然 Gamma 存在很久,但以前在 CG 的應用上並不多,
但隨著越來越多標榜是"unbiased"以真實物理光照計算的算圖引擎出現,
以及大量實拍合成 CG 的運用,Gamma 的問題就開始越來越明顯,

如果還是照著以前的的作法,
合成師只能憑著"感覺"將那些儲存了錯誤資訊的圖檔,
經過影像軟體錯誤的計算出來的結果,
調整成趨近真實環境的顏色。

所以合成師超強 Der~

讓濾鏡計算出正確的結果

有些濾鏡效果,
尤其是 motion blur、blur、lens blur、Depth of field 這類牽扯到半透明疊色的濾鏡,
Linear Workflow 下的結果會跟 nonLinear 差很多,
一般來說 Linear 的結果會比較亮,比較接近真實環境會有的反應。

Imgur

Imgur

例如常見的景深模糊,往往在光源的地方會有大範圍的光點,
但是我們用 AE 預設值來做的話,
通常必須搭配例如 glow 之類的濾鏡才會產生足夠的亮度。

但其實你只要用高斯模糊就可以了~

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

修正疊色結果

主要差異是在半透明邊緣,在一般 sRGB 的流程下,半透明邊緣常會有惱人的黑邊,
使用 linear blending 的話,就沒有這個問題

維持顏色資訊完整性

為了避免後製過程中對素材檔案造成破壞,
讓檔案維持 Gamma 1.0 的狀態進到下個階段,
除了使用 EXR 這類的檔案格式外,
也需要搭配 LUT (Look Up Table)

LUT 簡單說就是導演在拍片現場的監視器上面會套用一個類似 color correct 的色表,
大多專業攝影機廠商都會提供多種的 LUT 可下載。

How to setup Linear Workflow

Max 輸出設定

3dsmax 在經歷幾個版本的調整之後,
現在 2014 版預設的狀況已經算是符合 Linear workflow,
雖然有點錯誤,但也不需要再去特別變動(其實他也故意藏起來不讓你改)
只需要確認開啟 Gamma Correction,並且 Gamma 設定為 2.2,
算圖引擎 Vray 3.0、MR、Scanline 都會直接使用這個設定。

在 3dsmax 2014 中,預設輸出的檔案會是 Gamma 1.0,
搭配 EXR 完全沒有問題,但是其他格式則會發生圖像看起來變暗的現象。
因此 Autodesk 在 3dsmax 2016 將存檔預設值做了修正,
如果輸出是 EXR 就會儲存為 Gamma 1.0,
其他格式則會自動調整為 Gamma 2.2。
應該算是目前最佳設定。

3dsmax 在貼圖(image file input) Gamma 修正上已經有很好的處理,
只要是含有 Gamma 標籤的 EXR 或 png 都會自動修正,
使用者已經不需要再做設定。

Q: max 在開啟檔案時若出現 Gamma 設定提示,
該選擇那一個呢?為什麼?

A:

Maya 輸出設定

Maya 預設的 Linear workflow 跟沒做一樣Orz

Maya 的 Linear 沒有像 3dsmax 有良好的整合,
而是交由各 render engine 處理,所以相對的麻煩許多,
但還好 maya 的 soft render 不支援 EXR 所以可以直接放棄,
還有 2016 開始變成要另外安裝的 MR 也不要放太多精神在上面了,

目前只要了解 Vray 和 Arnold 的設定方式就好。

先了解目前 Maya 的幾個問題

1.Maya 的 Viewport 顯示對於第三方算圖引擎的相容性不佳

例如 Vray shader 無法在 Viewport 2.0 以外的模式顯示貼圖,
但整體來說也只有 Viewport 2.0 可以進行顯示上的 Gamma 校正,
所以也只能用它了

但 Viewport 2.0 也無法正確校正 Gamma 值,
大多狀況下會導致貼圖顯示的亮度偏暗,
尤其是 EXR 格式的顏色明顯錯誤。

Maya 的貼圖雖然可以進行 color profile 的設定,
但是這只會在 render 產生效果,Viewport 無法預覽

2.Maya 儲存檔案時不會寫入 Gamma 標籤

Maya 在輸出 png 時雖然可以設定 Gamma ,
但是不寫入標籤,所以到其他軟體的時候無法自動正確校正。

Arnold 的設定

Arnold 的 Linear Workflow 設定是 Maya 裡面相對簡單,
他預設會對貼圖做 Gamma 2.2 的校正,雖然這樣並不完全正確,
但是至少能確保在一般狀態下貼圖的顏色能和螢幕上看的的顏色符合,
並且對 Display Driver Gamma 做 Gamma 2.2 處理(附註2),
確保使用者在 framebuffer 看到的結果會跟實際輸出的一樣(僅限 1.0 exr 和 2.2 png)

並且在輸出時預設 EXR 為 Gamma 1.0(你想改也沒得改)

其他格式例如 jpg、png 等預設為 Gamma 2.2

Viewport 2.0 無 Gamma 校正

Viewport 2.0 開啟 Gamma 2.2 校正

Arnold 的原圖、Framebuffer、與實際輸出結果顏色比對

Vray 的設定

Display Gamma 的修正

Vray 預設的狀態下完全不對貼圖做顏色校正,
Gamma 1.0 的貼圖在顯示上會變得極暗。

viewport 無 Gamma 2.2 校正,

但是計算後的結果看起來是有經過 Gamma 2.2 修正過的

這是因為 Vray 有對輸出結果做一次 Gamma 2.2 校正(不是校正貼圖的 Gamma)

所以我們第一步要先開啟 Viewport 的 Gamma 2.2 校正,
這樣至少你在輸出 png 這類 Gamma 2.2 的格式時顏色會符合
(但是這樣物理上的數據仍然是錯的)

實際輸出的 png ,Gamma 2.2

所以即便你不走線性流程,請至少開啟 Viewport 的 Gamma 校正。

接著要走線性,我們先看實際 Gamma 1.0 EXR 的輸出結果是這樣,
所以很顯然我們在 framebuffer 上看到的並不正確,因為沒有做 Gamma 的校正

有三個方法可以讓你預覽到正確的結果

1.使用 Vray Framebuffer

這樣就可以正確的看到實際輸出 Gamma 1.0 EXR 的結果

2.讓 Vray 在輸出到 Maya Framebuffer 前再做一次 Gamma 0.45增幅
(Arnold 也是這樣做的)

3.將 Maya 的 Framebuffer 改為 Gamma 2.2

但必須注意的是,不管用那一種方法,
Maya 的 Viewport 都沒有辦法正確顯示 Gamma 修正後的結果,
而且到目前為止,Vray 計算的數值都還不是物理正確的(雖然顯示上是正確)

Image Gamma 的修正

Maya 必須手動對貼圖進行 input Gamma Correct,

首先,避免算圖的 Gamma 校正影響顏色

接著在貼圖加上 Vray 自訂的修正屬性,並輸入相對應的 Gamma 值,
這樣 Vray 就會根據這個 Gamma 值對貼圖做修正,
例如當你原圖片輸入為 Gamma 1.0 時,就輸入1

修正完成後,你所有的貼圖就可以有正確的 Gamma 資訊,
並且物理上計算正確,輸出和結果也會一致。

Maya 修正後的計算結果

AE 讀取後的結果

AfterEffect 的設定

特別要釐清的一點是,
如果你 3D 的線性流程設定都正確,
所有的 Gamma 校正正確,並且輸出為 Gamma 1.0 的 EXR,
在合成軟體裡看到的顏色即使沒有特別設定,
都會是一樣的。

Q:為什麼?
A:

注意圖片中的 AE 尚未設定至 Linear workflow

如果你前面有正確的走完線性流程,EXR 輸出 1.0,其他格式輸出 2.2,
這樣在 AE 裡只要將 project Settings 改成這樣就好,其他都不需要變動。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

關於檔案格式

  • 要真正實行 Linear Workflow,最好是使用 EXR (附註1 )
  • 為了節省容量和效率,一般狀況使用 Half Float 16 bits EXR 即可
  • 用 3dsmax 的 Scanline render 輸出 32bits EXR 是沒有意義的
  • 輸出 exr 時的 Gamma 設定並不會破壞檔案,它只是一個資訊標籤

tif or EXR ?

素材為 16 bits EXR


素材為 32 bits EXR

素材為 16 bits TIF

使用 Half Float 16 bits EXR 作為素材時大約可節省一半的計算時間

8 bits,16 bits or 32 bits

8 bits,linear workflow


16 bits,linear workflow

32 bits,linear workflow

附註:

附註1

雖然 tif 格式可支援 32 bits float,檔案也比 EXR 小,
但實際上他紀錄的資訊沒有比 EXR 完整,
而且軟體間的支援度沒有 EXR 好,容易出現色偏。

附註2

Anrold 預設的 framebuffer/Viewer 校正其實是在圖片丟到 buffer 之前先做一次 Gamma 處理,
而不是真的對 Viewer 做處理,有點取巧而且不能即時做修正

參考文獻:

  1. http://vfxjimmy.blogspot.tw/2007/07/gamma.html
  2. http://vfxjimmy.blogspot.tw/2012/11/linear-workflow.html
  3. SRGB色彩空间
  4. The Sad Story of PNG Gamma “Correction”
  5. UNDERSTANDING GAMMA CORRECTION
  6. OpenEXR Documentation
  7. 什麼是 LUT (Look Up Table)
  8. Linear Gamma vs Higher Gamma RGB Color Spaces: Gaussian Blur and Normal Blend Mode
  9. color in linear workflow
  10. Vray Linear workflow

後續討論:

FB 討論網址

黃俊瑋
分享一下幾個我所知道該注意的地方:
一、
Gamma2.2不等於sRGB曲線,兩者雖很接近,但在暗部有些差異,所以單純用Gamma曲線想要修正8-bit影像其實是不準確的。如果在意暗部正確性請用Photoshop的ConvertProfile功能。
二、
Maya在2015Extension.1的版本之後有非常實用且簡單的色彩管理,在Preference/Setting/ColorManagement裡勾選"EnableColorManagement"即可。
他會做ViewPort+ColorPicker+RenderView+FileNode的校正,一切自動(也可手動),詳情請閱公開說明書。至於算圖引擎是否支援Maya的色彩管理則有待考證,但他們理應支援。
三、
MentalRay在2016並不須另外付費,只是預設並無一同安裝,需要另外下載。
(雖然大家還是不會用它就是了)

Ja Yo C
在影像位元數上做一些小補充


來源 http://www.gavtrain.com/?p=3561

另外分享關於 Houdini 在Linear workflow 的介紹
http://www.sidefx.com/docs/houdini14.0/render/linear

Viktor Qiu
關於MR我可以靠腰一下 Maya2014就有color management,
只是放在render settings ,當然render viewport也要對應
但MR預設的physical Sun and sky有個exposure節點gamma預設2.2 要手動打1
還有真的還是有人用MR啦_

Kenzie Chen
小弟分享一些想法與實作,希望可以跟同好一起討論

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Gamma 2.2 只是在數學上近似於sRGB LUT,所以儘可能不要直接以2.2來輸入,
可至NUKE的LUT Tab裡,雙選Gamma2.2跟sRGB可看出曲線的些微差異;
而這種colorspace造成的誤差,如果是full CG影響比較小,
但在VFX實景製作流程上,對CG或是合成會造成很多困擾

假定是在Windows, sRGB的環境下,MAX裡面用Vray的話(MAYA應該也一樣)

  1. MAX -> Preference -> gamma = 1.0
  2. VRay -> Color mapping( Type= Linear, Gamma = 1.0 )
  3. 使用Vray Frame Buffer, 開啟下方的sRGB Display(比2.2更精準些).
  4. MAX貼圖這部分比較惱人,
    因為預設的bitmap只能手動輸入數值(2.2)而無法指定color profile
    所以通常把貼圖"先"轉成線性空間的貼圖(gamma = 1.0),這樣就不用煩惱2.2的問題

如果是Arnold,參考的設定如下

  1. Display Driver Gamma/ Light/ Shader/ Textures = 1.0
  2. Image/ Display Color Profile( 如圖)
    3.使用線性空間貼圖

其實我很建議把貼圖轉成線性,雖然花了一些時間,但會讓後續流程變得非常單純
比如公司就用使用EXR,EXR具有mip-map的特性,
好比MR的*.map或是Arnold的*.tx專用格式一樣,對於記憶體的管理有很好的效率.

Noflame Lin
可是卡哥我不懂的是… 那個 Image Color Rrofile 他都 linear 了,
後面還加個 sRGB 是…?以我的理解他就直接打個 raw 就可以了,
是不是我理解上有什麼錯誤?

Ling Sai
貌似 Vray 如果 color mapping 用線性會導致噪點增加的問題
http://www.aversis.be/tutorials/vray/vray-20-gamma-linear-workflow_01.htm

黃俊瑋
"Linear sRGB" 後面那個sRGB應該是指圖檔的目標色域
想像一下一個我們所習慣的"純紅色"其實不是世界上最紅的紅,
世界上還有更紅的紅,> 只是我們的sRGB螢幕無法顯示出來,
所以[1.0, 0, 0]或[255, 0, 0]在sRGB的螢幕上應該要被顯示為它所能顯示最紅的顏色;
而在廣色域螢幕(也許是Adobe RGB色域)則應該被顯示為不是那麼紅的紅
(但這個紅應該要跟你在sRGB螢幕所看到的"最紅"知覺上相等,有錯請更正)

而Vray那個雜點增加的問題是因為它會對雜點比較不明顯的地方使用比較少的Sample
(這是一種優化) 但他如何知道所謂"不明顯"是多不明顯呢?
這就是User要告訴他的事。
當我們算出一張圖,那張圖應該要被放在sRGB螢幕上,那我們就要告訴Vray這件事,
好讓他在該優化的地方優化。
如果我們指定這張圖應該要在Linear的環境下使用,
但卻把它放在sRGB螢幕上看,當然會覺得雜訊變的明顯。
(但我沒用過Vray所以我不知道要在哪裡這定這個數值)

Ling Sai
我這邊做了一個測試,只修改 Vray Color mapping 的 Gamma,
彩色那張 sample info 是 Vray 的採樣密度,
可以很明顯看出即使最後 render 的結果看起來差異不大,
但實際採樣數量的確減少很多。

Noflame Lin
請教 黃俊瑋大大 所以如果是這樣,
那可以斷定 maya 在計算顏色時是以 sRGB 當成預設的色彩空間嚕?

Viktor Qiu 如果不選color management maya預設會直接轉成srgb

Kenzie Chen
HELLO, 報告火爺
不知火爺指的RAW是在nuke或是MAX等軟體指定圖檔的colorspace ( LUT or Gamma)為Raw或1.0嗎?
不好意思因為擔心誤解,所以以下做了一些說明
我簡單做了一張圖表
一般影像都會含"原始的線性色域" + "color profile(LUT)",
如圖01,當被輸入到2D/ 3D軟體時,通常需要指定colorspace( gamma or LUT ),

通常這個指定的LUT,原則是上是反向的( inverse LUT ),如圖02
說穿了這兩條曲線相抵消,就是要讓影像還原到線性的色域,也就是讓來源的影像素材linearize.
如果在nuke或是max裡面將素材影像設定成RAW或是gamma 1.0,其實就是讓影像如圖01被讀取

但在maya rende view裡面的Image Color Profile,
並不是等同於RAW或是gamma 1.0,
其意思就是這張顯示在render view上的影像(應該暫存在記憶體),
需要指定成何種color profile;當設定成linear sRGB,就會如同圖03

因為Display Color已經指定sRGB( 被inearize了 ),
所以這張暫存影像也不需再額外指定sRGB之類的LUT( 前提是貼圖等素材也被正確指定gamma)

P.S..至於linear sRGB這個名詞,我推測應當是指在sRGB Gamuts (顏色模型)下,
使用linear Gamma曲線基本來說,sRGB Gamuts跟sRGB LUT(gamma)是不一樣的東西,
一個描述顏色的色域廣度,一個描述顏色的對應轉換,大家目前討論的是後者
如果有任何謬誤,也請各位同好一起討論指教,謝謝!

Hammer Chen
Vray算圖分幾個pass, 前面pass產生的數值,跟據像素上下左右彼此間的強度差異,
搭配noise threshold或color threshold判斷下ㄧ個pass要產生多少採樣(自適應)。
如果像素強度差異小,自然就不需這麼多採樣。

Kenzie Chen
感謝Sai大的實驗,雖然不知道我這的理解是否有誤,但蠻值得討論的

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

小弟個人的認知,理論上應該不會有太大差異..
color mapping是發生在一堆samples要計算轉換成像素顏色之間的過程
好比這些sample"事後"被"逐一"指定lut一樣,最後在綜合平均計算成pixel顏色
而這些sample的資訊取決於shader的描述,燈光,材質顏色等等綜合因素,
這些是"事先"被決定的,理論上與color mapping無關

我也是跟Hammer大一樣的推測,因為VRAY的image sampler,
是掌控很多的計算,如同ARNOLD一般

另外,分享一個資訊給各位同好,也許有人已經知道了
我以前以為VRAY等算圖引擎的importance sampling,是基於"亮部較多取樣,暗部較少"
但後來在實作一些shader時,RD的同事對這部分有解釋
其實,不完全是這樣,而是基於shader上的描述(如BRDF)來對取樣作增減的分配。

比如說,這張連結或許是大家很常見的一張圖

這是典型BRDF的分布,撇開那些惱人的鬼符號,這張圖單純來看,
那個長得很像大包皮部分,就是specular高光的分布,如果物件的glosiness越低,
那就會越大而importance sampling就是把較多的取樣,集中在這個包皮區域裡

所以畫面中暗的部分,不見得是因為光線不足,也有可能是因為反射到的物體是暗的,
這個暗的區域,剛好也被顯示在包皮區域裡
所以,不見得是基於"亮部較多取樣,暗部較少"
而是高光區域裡給予更多的取樣。

Ling Sai
再做了另外一個color mapping 的測試
左邊是使用 Gamma 1.0 ,color mapping with gamma,
右邊是使用 Gamma 2.2 ,color mapping without gamma,
輸出顯示的結果都相同,
但在這個狀況下使用 Gamma 1.0 的反而採樣變多,
所以 color mapping 的確會影響採樣,
但並非是文章說的畫面暗採樣就會少,
(理論上 Gamma 1.0 比較暗),
而是根據像素邊界的變化
(例如圓球反射區域的採樣變得均勻),

總之 Vray 在採樣前 color mapping 一定做了什麼手腳

補充文章

tags: Article,工作文件