天天看點

關于unity裡色彩空間與光照小記

gamma校正是因為顯示器顔色通常是非線性的,是以要想看到電腦中正常定義的顔色,必須進行伽馬校正,

gamma空間就是模拟電視螢幕之類上的(也就是現在通用的)色彩空間,這種色彩空間在直接顯示圖檔的時候效果正常,但如果進行顔色混合,混合的效果就不正确,因為它采用的是非線性采樣

sRGB是RGB是一種的一種特定類型,就是一般用的,色彩寬度小

線性混合是正确的混合

gamma混合會導緻光混合地方更亮,而産生不正确的顔色(雖然可能藝術效果更好)

線性光照是指照明具有所有線性輸入場景的過程。通常紋理存在預先應用給它們的伽瑪值,這意味着當紋理在材質采樣時,其是非線性的。如果這些紋理被使用于标準光照方程式,它将導緻不正确的方程式,其期望使用前所有輸入線性化。

當使用伽瑪空間光照,顔色和紋理提供給着色器将應用其伽瑪校正。當它們被用在高亮度的顔色着色器,實際上更亮,那麼他們就應該用于線性照明。這意思是燈光強度增加,表面将以非線性方式增亮。這将導緻在更多地方照明太亮,并給予模型和場景一個褪色的感覺。當使用線性照明,随着光照強度的增加,從表面的反應仍然是線性的。這導緻更加真實的表面着色以及更好的表面顔色反應。

具體還可以參考這裡

http://blog.csdn.net/golden_shadow/article/details/40183561

http://www.ceeger.com/Manual/LinearLighting.html

2.27.2016補充

還是補充在這裡吧

就是關于shader中的光照

關于逐頂點光照(Per-vertex Lighting)效果差不多,速度快 其實差別不大

    每頂點光照是标準的Direct3D/OpenGL光照模式,通過計算每個頂點的光照來完成。Lighting on指令開啟光照。而我們知道,光照被材質塊,顔色材質和平行高光等指令所影響。

關于逐像素光照(Per-pixel Lighting)效果更好,速度稍慢

    每像素光照管線通過多次通道渲染對象來完成。Unity渲染對象一次來擷取陰影色和任何頂點光照。然後再在額外的并行通道中渲染出每像素光照的效果。

下面是對比圖

關于unity裡色彩空間與光照小記
關于unity裡色彩空間與光照小記

左 逐頂點                   右逐像素