複製鏈接
請複製以下鏈接發送給好友

環境光遮蔽

鎖定
環境光遮蔽(Ambient Occlusion)“AO”為Ambient Occlusion的縮寫,中文譯為環境光遮蔽。在DirectX 10.1 API推出後,Amblent Occlusion升級為SSAO(Screen-Space Ambient Occlusion:屏幕空間環境光遮蔽);而在微軟推出DirectX 11 API後,SSAO升級至HDAO(高解析度環境光遮蔽:High Definition Ambient Occlusion)。
我們有必要對AO(環境光遮蔽)的釋義進行一個簡單瞭解:AO是來描繪物體和物體相交或靠近的時候遮擋周圍漫反射光線的效果,可以解決或改善漏光、飄和陰影不實等問題,解決或改善場景中縫隙、褶皺與牆角、角線以及細小物體等的表現不清晰問題,綜合改善細節尤其是暗部陰影,增強空間的層次感、真實感,同時加強和改善畫面明暗對比,增強畫面的藝術性。可以説:
AO特效在直觀上給我們玩家的感受主要體現在畫面的明暗度上,未開啓AO特效的畫面光照稍亮一些;而開啓AO特效之後,局部的細節畫面尤其是暗部陰影會更加明顯一些。
中文名
環境光遮蔽
外文名
Ambient Occlusion
簡    稱
AO
提出年份
2002年
分    類
計算機圖形學

環境光遮蔽歷史發展

無AO(左)和有AO(右)對比圖 無AO(左)和有AO(右)對比圖
AO是來描繪物體和物體相交或靠近的時候遮擋周圍漫反射光線的效果,可以解決或改善漏光、飄和陰影不實等問題,解決或改善場景中縫隙、褶皺與牆角、角線以及細小物體等的表現不清晰問題,綜合改善細節尤其是暗部陰影,增強空間的層次感、真實感,同時加強和改善畫面明暗對比,增強畫面的藝術性。
AO這項技術最早是在Siggraph 2002年會上由ILM工業光魔)的技術主管Hayden Landis所展示,當時就被叫做Ambient Occlusion。象RenderMan系列渲染器中的PRMan、BMat以及Maya、Blender等軟件引入AO技術較早,Softimage|XSI與Cinema 4D是在Siggraph 2005上發佈的版本中增加AO的。
在Max的渲染器中,除Mr較早外,最近的fR Stage-1 R2.0和VR 1.5RC3才見AO現身。對此,打個玩笑的比方:如果對Max中四大渲染器的AO來劃“階級成分”的話,mr算是“地主”了,它的AO Shader資歷最深、家產最多,除本能外還可以放入相機、燈光Shader來計算和控制,高級用户更可自行編程,另外新增的“建築與設計材質”也內置了“AO特效”;fR可算“富農”,因為AO Shader同樣擁有用作燈光、遮罩、融合以及反射的“資本”,但終因無QMC之故AO雖快卻質差,所以是“暴發户”一類的;VR差不多算“中農”吧,雖然就一個“Dirt”倒也能自給自足,不花哨從而保持了“本色”;而Br就是貧農了,因為它目前尚不擁有AO(但它基於QMC的GI似乎可以抗衡其他渲染器GI+AO效果,而且據説最新的2.0版本在整體速度上已經超過了VR 1.5RC3)。

環境光遮蔽最終目的

隨着計算機圖形技術的發展,玩家對遊戲畫面圖形的逼真度要求越來越高,而近些年推動遊戲圖形畫面逼真的最關鍵環節就是光照/光影效果,如果能非常近似的模擬與現實生活一樣的光照效果,那麼遊戲的畫面將非比尋常,但是光照/光影效果的計算非常複雜而且消耗巨大的資源,成為阻礙相關技術推進的最大障礙。
實現光照/光影的最逼真效果就是達成全局光照。在早期的遊戲中僅能實現直接光照的效果,也就是説光線從光源發出、照射到物體上後、反射到玩家眼中,光照的計算就完成了。但是隨着技術的發展,要得到更加具有真實感的圖形畫面,不僅要計算直接光照,還需要計算間接光照,也就是説,光線從光源發出、照射到物體上後,除了計算物體本身反射到玩家眼中的光線,還要計算物體多次反射、折射、吸收光線,以及物體之間因為反射、折射而導致的光線、陰影變化,經過綜合計算將光線和陰影的最終效果展示(反射)到玩家眼中,從而實現全局光照的效果。
全局光照在靜態圖形的處理上比較完美,因為靜態圖形可以等待渲染的時間,但是對於遊戲來説,持續的動態畫面必須保證每秒幾十fps的渲染速度,因此全局光照的處理就需要非常謹慎,其算法在推進畫面真實度的同時,必須保證相應的效率,否則就會打破畫面效果和幀速度之間的平衡。
説到這裏,我們先介紹一下實現全局光照效果非常好的一種方式,那就是“光線追蹤”技術(Ray Tracing),光線追蹤算法分為兩種:正向追蹤算法和反向追蹤算法。其中,正向追蹤算法是大自然的光線追蹤方式,即由光源發出的光經環境景物間的多次反射、透射後投射到景物表面,最終進入人眼。反向追蹤算法正好相反,它是從觀察者的角度出發,只追蹤那些觀察者所能看見的表面投射光。
Intel、AMDNVIDIA都在光線追蹤技術方面有所發展,Intel根據相應技術對《Quake4》遊戲進行了重製,但是相應的GPGPU處理器Larrabee的銷聲匿跡讓這個技術也暫時消失在人們的視野中;ATI在HD4000系列時代曾經展示過基於光線追蹤技術的Cinema 2.0,但目前仍然沒有技術的更新資料;NVIDIA在光線追蹤方面相對領先,其發佈了基於CUDA架構的光線追蹤引擎OptiX。
光線追蹤在未來將會是實現全局光照的最佳方案,但是光線追蹤的計算方法非常複雜、負載極大,並且與目前顯卡架構以光柵化為主的處理方式難以融合(Intel和NVIDIA目前都趨向於在LarrabeeQuadro等上實現),短期內仍然無法應用於遊戲顯卡上。
目前遊戲開發者實現全局光照更多的使用AO技術。AO技術以獨特的計算方式吸收“環境光”(同時吸收未被阻擋的“光線”和被阻擋光線所產生的“陰影”),從而模擬全局光照。
現在將話題轉回來並做一個簡短的總結:
1.全局光照是未來實現遊戲圖形畫面真實化的一個重要元素(其可以達成光影效果的逼真化,對應的相反關鍵詞為直接光照)。
2.光線追蹤是實現全局光照完美效果的最佳技術/方式之一,也是未來的一個發展方向,其技術實現方式最接近現實的物理模型,但是因為效率較低,所以目前的遊戲和顯卡架構無法承擔。
3.目前遊戲已經開始實現全局光照的效果,但是並未採用光線追蹤的方式,而是採用其它多種實現方式來達成全局光照的效果,其中包括“AO”環境光遮蔽。
4.“AO”環境光遮蔽是實現全局光照中部分物體局部光照和陰影真實化的一種技術方式,其函數實現方式並未嚴格遵循現實的物理模型,但是效率較高,因此被當前遊戲廣泛應用。
5.再次強調,AO環境光遮蔽(包括其變種SSAO、HBAO等)僅是實現全局光照的技術方式之一,當前的遊戲應用了多種技術方式共同達成全局光照總體效果的完善和完美。

環境光遮蔽技術原理

經過前面的介紹,我們已經瞭解了環境光遮蔽存在的目的,下面我們簡單介紹一下AO環境光遮蔽的實現機理。AO環境光遮蔽通過相對廉價的計算效能來實現全局光照中陰影的高級效果,簡單説AO環境光遮蔽就是在每個取樣點上計算它被其它幾何體覆蓋的程度,是計算在一個統一的光強度下場景的軟陰影效果圖形技術。  AO環境光遮蔽在多種靜態3D處理軟件(如3D Max或Maya)中都有涉及,其是一種比全局光照效率更高的光照處理方式(效果接近),它通過改善陰影來現實更好的視覺效果,提高場景的深度和層次感,大大豐富了圖像細節。
環境光遮蔽 環境光遮蔽
下圖:一般光照渲染模式下圖:環境光遮蔽渲染模式
環境光遮蔽 環境光遮蔽
環境光遮蔽是實現全局場景類似軟陰影從而達成更佳全局光照效果的技術
3D軟件中應用的靜態AO環境光遮蔽因為需要預渲染、而且速度仍然較慢,所以不能直接照搬到動態畫面(遊戲)的處理方式中。在近些年的遊戲中,很多遊戲公司都致力於表現更逼真的光照效果,提出了很多相關的技術,比如《半條命2》中的Radiosity Normal Maps技術、《潛行者》中的GI全局光照等等。
這些技術都未能很好的實現光照的效果或效率的保證,此時Crytek正在開發《孤島危機》,其應用了一項名為Real-Time Ambient Map(實時環境光照貼圖)的技術,這項技術非常接近SSAO技術,而隨着研發的深入,這項技術最終被升級為新的算法,並在CryEngine2引擎的技術白皮書中最終將這項升級後的技術命名為SSAO。  從這個角度講,其實在電腦遊戲的應用中,率先提出的環境光遮蔽在算法上已經直接達成了SSAO(屏幕空間環境光遮蔽),而AO環境光遮蔽這種模式並未直接在遊戲中應用,至於NVIDIA在控制面板中的提出的“AO環境光遮蔽”的概念,我們對其算法不得而知,但是可以明確的是,其算法必然與靜態的環境光遮蔽的算法不同,可能就是SSAO(屏幕空間環境光遮蔽)或者類似的算法。
看一段小文字:
《鯊魚故事》(Shark Tale)是2005年第77屆奧斯卡金像獎“最佳動畫長片”提名的三部影片之一。為了更好地達到“繪畫感”這個需要,總美工設計師皮埃爾特別用到了軟區域陰影和反射光,即利用環境光來模擬柔和陰影,這是當時非常流行的一種新的燈光技術,稱為“Ambient Occlusion”(夢工廠稱之為“exposure”<曝光>),它能夠為表面上的每一點精確計算來自天空的自然光量,這樣處理的結果就像是一張陰天狀態下曝光極好的灰度照片。然後將Ambient Occlusion Pass(AO層)與環境燈光合成,這樣,CG元素與實拍的素材就非常自然地結合在一起了。
3D軟件(渲染器)中AO的原理是統一的,Max中mr、fR、VR的AO也是幾乎一致的(只是可控性和功能、用途有所不同)。順便提一下,如果有些使用VR的朋友確實認為mr或fR的AO既快又功能多的話,那麼不妨結合了使用,就是説“VR原始渲染+mr或fR的AO”進行合成,這其實也是我最近想到的一個思路。但就目前而言,我還是很喜歡VR的AO,因為它操作簡單靈活、效果真實細膩

環境光遮蔽作用解析

繪畫運用
環境光遮蔽 環境光遮蔽
AO (環境光遮蔽, Ambient Occlusion) ,基於對光影的瞭解,人工繪製AO圖層,畫出雷同3D般的效果,最早由Sam Nielson提出,現在不少大大也用這種方法來畫畫,來學習下這種技法的基本步驟吧。 [1] 
參考資料
  • 1.    AO  .花瓣[引用日期2015-04-04]