2017年5月20日 星期六

Test allow HDR in Main Camera

當這裡設定成linear



主camera的allow  HDR沒勾選的話




預設情況下Unity會對主Camera的color Buffer開啟 sRGB  read  and sRGB  write


///////////////////////////////////////////////////////////////////////////////////////////

把主camera的allow  HDR打開的話



因為使用的buffer是linear的,所以不會開啟sRGB  read  和  sRGB  write



但為了畫面正確,最後會再執行一次sRGB  write

///////////////////////////////////////////////////////////////////////////////////////////

但會把HDR打開,是希望畫面上的亮暗更顯眼

(1)所以會打開bloom(讓最亮的地方有漸層暈光)
(2)因為HDRcolor的範圍會超出(0~1),所以也要打開Color Grading作tonemapping(clamp to 0~1)




右邊平面的貼圖是透過第2個Camra畫到New Render Texture上的
沒有發亮是因為New Render Texture的格式是ARGB32(非HDR格式)


 打它修改成ARGB  Half(HDR格式)後就會看到發亮效果了


///////////////////////////////////////////////////////////////////////////////////////////

如果主camera沒有使用HDR格式,會發現最亮的黃色不見了


因為沒有使用HDR的render buffer,最亮的黃色也被clamp  to 0~1
在bloom的FragPrefilter就無法過慮出最亮的顏色了(所以也就沒那麼亮了)


///////////////////////////////////////////////////////////////////////////////////////////






When using Gamma color space, no conversions are done of any kind, and this setting is not used.
聽起來像是當使用這樣的設定時


對所有的RenderBuffer,都不會作sRGB  read 和sRGB  write
所以自己對外部的貼圖作sRGB  read再畫到 RenderBuffer,最後輸出到畫面時再整個作一次sRGB  write
應該就能達到和Linear color space一樣的畫面!
可是實測後監看frameDebugger發現跟本不是那樣

It's still a mystery.  QQ  

///////////////////////////////////////////////////////////////////////////////////////////


結論:大人的世界真的好麻煩(尤其是身為程式設計師的大人)

沒有留言:

張貼留言