張 霽
同濟大學軟件學院,上海 201804
間接光照技術和環境遮擋簡介
張 霽
同濟大學軟件學院,上海 201804
環境遮擋技術的出現,使實時部分模擬全局光照效果成為可能。而不斷發展的游戲行業中需要支持大規模動態場景以及柔性物體,同是要對圖像質量和效率作出改進,這又為環境遮擋技術提出了更高的要求。最近,為了追求更真實的效果,越來越多的研究開始關注環境遮擋與間接光照的結合。為了更好的判斷這一技術的未來走向和研究重點,對相關研究結果進行整理綜述非常必要。
環境遮擋;全局光照;間接光照;
環境遮擋技術就是一種能模擬部分全局光照效果的技術,雖然一般僅限于模擬場景中由于間接光照接收量不同而呈現的明暗變化,但是由于其開銷遠遠小于傳統全局光照技術,因此現在已被廣泛應用于各種環境中。
近些年來屏幕空間技術的流行推進了環境遮擋技術的發展,在效率已經能保證交互性的情況下,研究人員又將這一技術做了擴展,提出了一些新的特性,本文將在后面逐一討論這些新特性。
環境遮擋模型
假設在一個陰天,環境中沒有一個明確方向的光源,我們可以看到所有物體都呈現出一個較為灰暗的外觀。在這種情況下,光照主要是由物體間相互反射的間接光來完成的。將整個場景分為無數小塊,選取場景中任意一小塊為研究對象(亦可看做一個點),以小塊中心為基準點,其表面法線為朝向可以確定一個半球,這個半球中任意向量所指向的點會向研究小塊發射漫反射光,都會影響其光照情況。
這部分介紹應用環境遮擋理論來進行渲染的不同方法。首先必須以合適的方式來表示場景中的幾何體,其次通過查詢來確定每個點的遮擋信息,最后用遮擋信息來調整光照結果。
由于環境遮擋的局部性,一般來說計算遮擋量只需要用戶感興趣的區域(一般是攝像機可見區域)內的幾何體信息即可。參考文獻[4]中認為,環境遮擋其實就是遮擋體在被遮擋體上投下陰影的總和,為了更方便的計算投影面和受影面的面積,作者對多邊形網格做了轉換:將網格中的每個點用一個圓盤代替,圓盤的位置和點的位置相同,朝向點的法線方向,圓盤的面積等于點所在所有三角形面積總和的1/3。這樣:以頂點為單位的網格就轉化成了以圓盤為單位的面集。
在Siggraph課程上,來自Crytek的MITTRING展示了CryEngine內使用的一項新技術,同樣利用了屏幕空間技術,他們將其稱為屏幕空間環境遮擋,簡稱SSAO,其與傳統計算環境遮擋相比,SSAO的最大差別就在于它將屏幕空間的像素深度值看做是每一個像素的高度,這樣,整個深度貼圖就可以看做是一個高度圖,然后使用將這個高度圖作為計算環境遮擋時的幾何體代理。
SSAO可以很簡單的集成到現有的渲染引擎中:首先,引擎中執行一遍的正常渲染,不同的是,這次渲染的結果并不直接寫到屏幕上,而是直接將顏色和每個像素對應的深度值輸出到不同的貼圖中儲存起來。深度貼圖就用作為計算環境遮擋時的幾何體信息。在計算出每個像素的遮擋值之后,引擎再執行一遍后處理,用對應像素的環境遮擋值調整之前計算出的像素顏色。
很多后續研究都在尋找克服SSAO中出現的這些問題的方法。可以通過多層深度圖的方式來解決。即將選取不同的視截體遠平面將場景多次渲染,得到多張深度圖。然后在計算遮擋值的時候對每張深度圖都做計算,采取其中遮擋值最小的為正確結果。這種改進方法提供了視覺上有說服力的結果,但是卻由于多遍渲染場景,效率下降較大。
在確定了合適的幾何體表示方法之后,如何正確高效地查詢測試點的環境遮擋情況是決定遮擋效果和計算效率的關鍵。查詢環境遮擋最直接的方法就是光線相交測試——在測試點所確定的采樣半球內選取若干方向,從測試點發向每個方向發射光線進行相交測試,再將測試結果乘以方向因子累加起來,就可以得到遮擋結果。
目前在環境遮擋和間接光照方面,國內外學者已經取得了不少研究成果,其中很多已經作為成熟的技術用于商業領域,比如游戲。但該領域在以下方面仍值得進一步探索:
目前的游戲和應用中,大部分環境遮擋都是以SSAO方式實現的。目前的研究思路主要是從這兩個方面著手:
1)如何在不嚴重影響屏幕空間技術的效率優勢下尋找可以彌補高度圖假設缺陷的幾何體代理;
2)由于高頻AO和低頻AO的特性差異,想辦法將二者分開考慮,各自采取最合適的方法來進行優化。
傳統的環境遮擋技術僅僅考慮了遮擋對環境光照的影響,第5章中介紹的技術已經證明了,在實現環境遮擋技術的基礎上,可以很容易的加入對間接光照的考慮。間接光照不僅可以減輕過度陰影的效果,更可以用多樣的顏色(如染色現象)進一步提高真實性。
[1]Méndez,M.S.Jordi Catá(2003).Real-time obscurances with color bleeding. Proceedings of the 19th spring conference on Computer graphics. Budmerice,Slovakia,ACM.
[2]Aila,J.K.T.(2006)."Ambient Occlusion for Animated Characters." Eurographics Symposium on Rendering
[3]Alex Mendez-Feliu,M.S.(2009)."From obscurances to ambient occlusion∶A survey." Vis. Comput.25(2)∶ 181-196.
[4]Bunnell,M.(2005)."Dynamic Ambient Occlusion and Indirect Lighting." GPU Gems 3∶ Chapter 14.
[5]Dominic Filion,R.M.(2008)."Starcraft 2 Effects& Techniques." Advances in Real-Time Rendering in 3D Graphics and Games Course SIGGRAPH 2008.
[6]Francisco González,M.S. Miquel Feixa (2007)."Viewpoint-based Ambient Occlusion." IEEE Computer Graphics & Applications
[7]José Díaza,P.-P.V. Isabel Navazoa,and Florent Duguetb,(2010)."Real-time ambient occlusion and halos with Summed Area Tables." Computers & Graphics.
TN38
A
1674-6708(2010)30-0093-02