▲眼神呆滯的米卡莎
Image based lighting(IBL)已經盤踞我最想實作技術排行榜前幾名相當久了,不過一直到最近把Ambient BRDF搞定之後,因為一點契機很想瞭解IBL到底能替畫面做些甚麼改善,這才把研究IBL拉到最高順位來。
▲Ambient light只影響diffuse的的情形
以往的遊戲很少會考慮ambient light對物體的反光有多少貢獻,由於現實中幾乎所有物體都會反光,若沒有反光不但真實度降低,而且很難辨識出物體的材質。
▲使用Ambient BRDF計算Ambient light對反光的貢獻
Ambient light本質就是從四面八方來的光線,想知道觀察者究竟能看到多少反光,就得將所有方向的光線的貢獻做積分(不考慮光的強度)。Tri-Ace在2010年提出以3維表格查表的快速積分法,2013年又提出只需2維表格的方法。
上圖中的ambient light還是使用常數,亦即所有方向都用相同強度的白光照射。雖然已經出現菲涅爾效果,但畢竟現實中幾乎找不到光源這麼平均的情況,因此會覺得全身都白的不太合理。
▲IBL + Ambient BRDF
IBL也是一種查表法,是用"方向(向量)"來檢索光的強度。Diffuse項使用irradiance environment map,specular項則是prefiltered mipmapped radiance environment map。這兩種map皆已經把面向不同方向的表面所能接收到的所有光線積分完畢(只計算光的強度),因此能簡化shader中的計算。只增加一丁點計算量,效果就能大幅提升,真是太划算了。
▲因為模型某些地方normal值有問題,連帶影響最後算出的顏色
▲使用IBL更容易看出物體表面的光滑程度
繪圖程式使用OpenGL 4.4
IBL中的兩種map皆使用Cubemapgen產生
Tri-Ace的Ambient BRDF演算法:http://research.tri-ace.com/
米卡莎模型使用ののの式ミカサ・アッカーマン 訓練兵 ver 1.03