您現在的位置:首頁 >> 新聞 >> 行業新聞 >> 什么是環境光遮蔽?都有哪些算法?又為何對AR/VR非常重要?

什么是環境光遮蔽?都有哪些算法?又為何對AR/VR非常重要?

瀏覽次數: 日期:2018-12-11

映維網 2018年12月10日)每一年,開發者都在嘗試為每一個游戲組件最高的質量,因為它們直接影響細節,圖像逼真度和沉浸感。

游戲中大多數的技術組件都與光線有關,而各種游戲引擎都在利用不同的方法來傳輸光線。其中一種方法是“環境光遮蔽(Ambient Occlusion;AO)。

第一種允許實時模擬環境光遮蔽的方法由德國Crytek研發,主要用于CryEngine 2。于2007年秋季發行的《孤島?;肥荂ryEngine 2游戲引擎首款采用環境光遮蔽方法SSAO(屏幕空間環境光遮蔽)的游戲。屏幕空間環境光遮蔽方法用作后期效果,并且在屏幕空間中計算。

今天,所有的現代游戲引擎都支持這項技術。許多人低估了環境光遮蔽技術,而從重要性來看,它僅僅落后于全局照明(Global Illumination;GI)效果。全局照明和環境光遮蔽是互補效果,它們的任務是近似光線多次反射和著色的真實光能傳遞效果。

GI模擬光線如何從表面反射至另一個表面,而環境光遮蔽近似于GI的陰影效果。

在本文中,ARVI Lab將向我們分享環境光遮蔽的意義,主要的AO算法,以及它們在虛擬現實的應用。以下是映維網的具體整理:

1. 什么是環境光遮蔽

環境光遮蔽是用于全局背景或對象間接著色的著色和渲染方法。這種方法可以為渲染添加更多的真實感,因為它能夠創建柔和的全局陰影,從而有助于對象的視覺分離。

這是一種全局方法,即對象每個點的亮度值取決于場景中的其他對象。

陰影不會保持黑色,它們會消散,產生半色調,并遮蔽空間中光線較少的位置。

在大多數情況下,這主要是通過構建從表面上一點朝所有方向發出的半球射線,然后檢查它們與其他對象的交叉來計算環境光遮蔽。到達背景或天空的光線會增加表面的亮度,而穿過其他對象的光線不會增加亮度。

結果是,被大量幾何體圍繞的點顯示為較暗,而周圍只有少量幾何體的點則顯示為較亮。

這意味著彼此靠近的任何對象之間的陰影效果將更加明顯。

沒開啟AO

開啟AO

這是環境光遮蔽的一個例子。如你所見,沒有開啟Ambient Occlusion的情景更加缺乏層次感,并且缺乏我們大腦潛意識所能感知的深度部分。

因此,環境光遮蔽主要是僅在我們直接看到的那部分場景中模仿和計算陰影。

2. 主要的環境光遮蔽算法

有一系列的著色算法可以從全局照明中提供不同程度的逼真陰影渲染。它們的成本,操作速度和輸入數據類型不同。

2.1 什么是屏幕空間環境光遮蔽(SSAO)?

SSAO(屏幕空間環境光遮蔽)是用于實時近似環境光遮蔽效果的要求最低的計算機圖形技術。但根據開發者實現的效果,實際質量可能因游戲而異。

這種效果在彎曲處和凹陷處可見,但在平面和凸面上不可見,因為它們不會阻擋彼此的光線。這種效果非常重要,因為沒有它的存在將會令場景缺乏層次感。

2.2 操作原則

屏幕空間環境光遮蔽方法非常簡單。在構建屏幕空間環境光遮蔽效果時,檢查屏幕上的每個點,并創建每個點的半球。這個半球的任務是確定這個點從外部空間采集了多少光線,或者周圍對象有多少陰影落在它上面。

為此,在球體中制作一系列樣品,并檢查該點是否穿透某種表面。如果沒有穿透,則天空可見,然后這一點將得到額外的光線。

為了檢查該點是否有陰影,在Z緩沖區內建立一個半球,并檢查該半球是否被Z緩沖區遮蔽。

對于這種方法,法線貼圖用來確定相對于構建半球的曲面的法線,但陰影由Ray-Matching確定。在紋理內部進行深度緩沖光線采樣,從而判斷該點是否在指示的方向上著色。

當SSAO效果用于正向渲染時,除了在正向渲染期間獲得的深度緩沖之外,還應再次渲染整個場景以獲得法線和深度,以及全屏紋理。

因此,這個過程在延遲著色中更加簡單,因為已經存在一個逐像素存儲每個點的法線的緩沖區。

屏幕空間環境光遮蔽的計算成本非常昂貴,因為對于單個點,平均需要不同方向上的數十個光線追蹤,從而確定光線可以從哪個方向穿透該點。

因此,純粹形式的屏幕空間環境光遮蔽幾乎從未應用過,因為它的成本很昂貴。

在這一點上,引擎采用不同的方法來優化所用樣本數量的減少。

  1. 隔行掃描采樣會導致偽影,因為在某些像素中會發生光線追蹤,但在其他像素中則不會發生。
  2. 使用下采樣,不是針對原始圖像,而是縮小一半的圖像,然后拉伸紋理,但它看起來很模糊。
  3. 暫存累積以重復使用先前幀的計算。

2.3 可以節省資源的其他方法

  1. 將環境光遮蔽烘焙到紋理上:在這種情況下,紋理用作應用于模型的一部分材質。在某些模型中,它將烘焙為Metallic+Roughness紋理的綠/藍通道。如果將屏幕方法的效果加起來,則將紋理的環境光遮蔽添加到其中,然后獲得更詳細的陰影。這種方法彌補了另一種方法的缺點:將AO烘焙到光照貼圖上。這種方法的缺點是,在烘焙的AO紋理中相鄰對象不會有陰影。實際上,在該紋理中只能獲得自陰影貼圖。
  2. 將環境光遮蔽烘焙到光照貼圖上,前提是光照貼圖可用: 這種方法“無需成本”,因為光照貼圖可用,但它會降低烘培速度,并增加額外的時間來計算環境光遮蔽效果。這種方法更準確,因為在烘焙階段,不僅可以分析附近表面,而且可以分析更大的空間,從而了解光線是如何移動。主要缺點是光照貼圖不是非常詳細,而紋理像素的大小是1/10米或1/20米。這意味著烘焙到光照貼圖上的AO將僅包含最大部分,而所有次要細節都不會被烘焙。因此,這種方法僅適用于傳輸非常大的細節。

2.4 SSAO設置

我們應該考慮一定的參數。

  1. 球體或半球半徑。光線采樣將在其中執行,半徑越大,AO效果就越弱。
  2. 光線的密度直接影響效果的高成本。
  3. 陰影強度:用來相乘的乘數。

在一些游戲中,這個參數不是十分明顯,但在其他游戲中,為了突出內角和腔洞,它會變得非常明顯。

2.5 與SSAO相關的問題

盡管SSAO是一種有效的方法,但它同時帶來了一定的問題。

  1. 問題1:著色不足

這是一個著色不足的例子。坦克底部需要著色,因為它接收的光應該很少,但由于深度緩沖區沒有關于背面的信息,屏幕空間效果不會遮蔽這些區域。 VXAO提供更高的質量,并且由于存在關于背面的信息,因此可以獲得更準確的著色。

  1. 問題2:背面陰影或任何遮擋的眼睛幾何形狀

SSAO沒有超出邊緣的信息,并且在camera運動期間,邊緣處出現陰影。當SSAO觸及屏幕的邊緣時,無論是哪個位置,那里都會出現這種后期效果的閃爍。

  1. 問題3:屏幕平面的SSAO

如果在屏幕平面上產生這種效果,則應考慮到近距離和遠距離對象的半徑應該發生變化。

2.6 SSAO:優缺點

優點

  1. 它不依賴于場景復雜性。它僅需要最終圖像的像素。
  2. 適用于動態場景。
  3. 它可以輕松集成到任何現代圖形管道之中。

缺點

  1. 成本昂貴,直接取決于圖像分辨率
  2. 圖像分辨率越高,這一效果的成本就越昂貴,并且越加需要通過減少光線數量和減小半徑來簡化算法。
  3. 很難在不干擾深度不連續區域的情況下正確模糊噪點,比如說對象邊緣。

3. 什么是水平基準環境光遮蔽(Horizon Based Ambient Occlusion;HBAO)?

HBAO是一種用于近似環境光遮蔽效果的算法,是英偉達在2008年提出的一種SSAO衍生版本。這一方法提供了更好的視覺效果,但成本比SSAO更高。

優點

  1. 圖像質量高于SSAO算法
  2. 英偉達顯卡提供了額外的硬件加速

缺點

  1. 與SSAO相比,它會令性能下降。
  2. 降低分辨率渲染HBAO會導致圖像閃爍。

4. 什么是HBAO +?

與HBAO相比,HBAO+加倍了AO效果的細節水平,采用了最新的DirectX 11技術,運行速度更快。

為了計算HBAO+,將采用棋盤渲染。為了處理陰影,使用前一幀的一部分和新幀的一半。因此,GPU成本更少,而且因為是以原始分辨率渲染陰影,這解決了閃爍問題。

優點

  1. 更少的GPU成本,因此能夠以原始分辨率渲染陰影。
  2. 它支持快速實現,提供了更豐富,更細膩的圖像。

缺點

  1. 由于前一幀的暫存累積,你在動態變化場景和突然的camera運動過程中可能會注意到AO效果無法立即適配。

5. 什么是高解析度環境光遮蔽(High Definition Ambient Occlusion;HDAO)?

HDAO由AMD開發。這種算法基于Gather4技術,亦即在一個寄存器中采集四個紋素。

HDAO和HBAO大致相同,它們的操作原理類似。HDAO增加了在計算應該變暗的區域時所使用的樣本數量,并以全分辨率渲染,從而更準確地呈現AO。

優點

  1. AMD顯卡提供額外的硬件加速

缺點

  1. 這個算法專為AMD顯卡設計,而根據Steam硬件和軟件調查數據,AMD顯卡的流行程度遠不如英偉達顯卡

6. 什么是體素加速環境光遮蔽(Voxel Accelerated Ambient Occlusion;VXAO)?

VXAO是一種適用于體素的方法(體素相當于3D中的像素)。DirectX 12支持在搜索結構中對場景進行回溯和體素化。

通過這樣做,我們可以獲得一種考慮到更復雜場景幾何的,稍微更準確的方法。但這種方法比其他方法成本更高。VXAO是VXGI(體素全局照明)技術的一部分,它更準確地考慮了直射和反射光。

VXAO算法包括三個過程:體素化,體素后處理和錐形追蹤。體素化意味著將基于三角形的網格渲染為3D紋理。

它的性能取決于三角形的總數,它們的大小,以及渲染它們所需的繪制調用次數。后處理涉及清除,過濾和下采樣體素的過程,其性能取決于體素化過程中產生的體素總數。體素錐形追蹤在屏幕空間中進行,其性能取決于著色率,屏幕分辨率和1080p分辨率的錐形追蹤通道。

優點

  1. 提供最準確的著色。
  2. 能很好地處理動態場景。

缺點

  1. 只有高端顯卡才能充分利用這種算法。
  2. 根據實現效果,VXAO可能比HBAO+慢3-4倍。
  3. 它需要最新的GTX顯卡。

7. 虛擬現實的AO算法應用

SSAO在虛擬現實中非常重要,但不如它對普通游戲的重要性。這是由于立體視覺的影響。

利用虛擬現實中的立體視覺,我們的大腦可以感知深度緩沖,并根據兩個立體圖像進行重建。

PC游戲有所不同,顯示屏不存在深度信息,所以需要像AO這樣的效果來強調深度。在VR中,即使沒有AO效果,用戶也能理解場景的深度。

最重要的是,由于視差影響,眼睛感知到略微不同的圖像,而由于其屏幕空間特性,SSAO會為它們產生略微不同的結果。當每只眼睛看到不匹配的AO結果時,它們會使AO看起來“虛假”。因此在較大的AO半徑中,它甚至可以產生不好圖像印象,并打破沉浸感。

另一個方面是所有屏幕空間效果都取決于分辨率。分辨率越高,它們對性能的影響就越大,尤其是像AO這樣的“重度”效果。

虛擬現實的一個特征是需要渲染高分辨率的圖像,而主要的約束問題是顯卡的低填充率。因此,包含SSAO效果會令FPS降低近兩倍。

8. Unity環境光遮蔽

ARVI測試了Unity Asset Store中的一系列AO算法,并得出以下結論。測試是在Dragon場景(FPS for GTX 970)上進行,所有效果都是默認參數:

  1. 無影響:146 FPS;
  2. TSSAO:99 FPS;
  3. SSAO Pro:144 FPS;
  4. SESSAO:126 FPS;
  5. Cinematic Image Effect AO:126 FPS;
  6. Amplify Occlusion:144 FPS。

因此,Unity標準的Cinematic Image Effect將FPS從146減少到126;Amplify Occlusion對FPS的影響微不足道(從146減少到144);SESSAO將FPS降低到12;SSAO Pro(它是最快的算法之一)將FPS降低到144;TSSAO則將FPS從146降低到99。

這些效果不適用于VR中的單通道和多通道。

對于VR而言,Amplify Occlusion 2.0是一種優秀的解決方案。如其所屬,“Amplify Occlusion 2.0完全終止了基于HBAO的技術,并轉向了更優秀的Ground Truth Ambient Occlusion(GTAO),從而令質量和精度更接近傳統的光線追蹤。”

這種方法支持VR單通道和多通道,并提供高質量,快速的運作時間和性能提升。

另外,你可以了解一下Unity在PostProcessing Stack v2中的最新AO實現,它提供了許多有趣的功能。

9. 總結

因此,即便是最簡單的AO算法,能用就用,而不是根本不予以使用。

我們對DX12和RTX顯卡的光線追蹤功能感到非常興奮。在未來,AO方法將朝著全動態光線追蹤的方向前進,而非Depth-Buffer Ray Marching。

我們最終的建議如下:

  1. 如果你的PC在不開啟AO的情況下都能流暢運行游戲,你可以選擇質量最低的SSAO或HBAO來節省更多的性能。通常而言,它們對FPS的降低幅度不超過10%。
  2. 如果性能允許,HBAO+或HDAO是一個可行選擇。如果你的PC搭載了一枚高端顯卡,建議你選擇VXAO算法。

所屬類別: 行業新聞

該資訊的關鍵詞為:

  • 山西11选5今日推荐: ADD / 你可以在這里找到我

    山西11选5走势图软件 www.nayhli.com.cn 廣東省 / 廣州市 / 天河區 / 華觀路 / 萬科云C棟

  • TEL / 你可以撥這個聯系我

    020-37362413

  • MAL / 你可以發這個聯系我

    [email protected]

廣州巴豆動漫科技有限公司 ©2017 ALL RIGHTS RESERVED 山西11选5走势图软件 技術支持:中企動力