Unity HDRP V7.2.0正式支持VR,實現(xiàn)前所未有的質(zhì)量和逼真視覺效果
來源:映維網(wǎng)? 作者? 黃顏
Unity 7.2.0的High Definition Render Pipeline(HDRP)現(xiàn)已正式支持虛擬現(xiàn)實。本文將介紹如何在 VR 項目中利用HDRP。
HDRP對VR的支持包括:
所有HDRP功能均與VR兼容。
新的Unity XR插件框架完全支持HDRP。
單通道(實例化)是VR的默認(rèn)與推薦渲染解決方案。
1. 亮點介紹
通過將HDRP用于VR項目,你可以利用所有渲染管道的功能來創(chuàng)建僅受想象力約束的體驗。憑借最新的渲染技術(shù),HDRP可以在虛擬現(xiàn)實環(huán)境中實現(xiàn)前所未有的質(zhì)量,并提供令人驚嘆的逼真視覺效果。
下面是可用于VR項目的功能速覽:
遞延渲染和正向渲染
所有光源類型,Shadows, Decals和Volumetrics
屏幕空間效果:環(huán)境光遮擋;屏幕空間反射;次表面散射;變形和折射
后處理:顏色分級,抗鋸齒,景深等
Visual Effect Graph中的所有VFX
2. 支持平臺
HDRP的VR支持面向下列平臺和設(shè)備:
1.Oculus Rift和Rift?S(Oculus?XR Plugin,Windows 10,DirectX 11)
2.WWMR(Windows XR Plugin,Windows 10,DirectX 11)
3.PSVR
4.OpenVR:Valve目前正在為2019.3及以后版本開發(fā)相關(guān)的OpenVR Unity XR Plugin,并將很快推出。
3. 立體視圖渲染技術(shù)
本地VR實現(xiàn)將處理所有內(nèi)容兩次,每只眼睛一次。Unity將這種解決方案稱為多通道渲染。HDRP支持多通道渲染,但不建議你使用所述方法,因為你的應(yīng)用程序需要兩倍的CPU性能進(jìn)行渲染,從而令繪制調(diào)用次數(shù)增加一倍。最重要的是,陰影會被渲染兩次,并可能消耗很大一部分GPU預(yù)算。
在特定情況下,使用多通道是合適的舉措:
1.如果你的系統(tǒng)具有少量的GPU內(nèi)存,多通道渲染目標(biāo)所使用的內(nèi)存將少于單通道。
2.如果出于某種原因,你需要為每只眼睛渲染截然不同的視點。
更快的解決方案是使用單通道(實例化)渲染。在這個模式下,同時為兩只眼睛渲染每個繪制調(diào)用。具體可以將紋理數(shù)組用于渲染目標(biāo)和實例繪制調(diào)用。另外,每幀僅處理一次剔除和陰影。
DRP設(shè)計成所有功能都兼容VR,并針對單通道渲染進(jìn)行了優(yōu)化。
關(guān)鍵的設(shè)計決策是對所有渲染目標(biāo)使用紋理數(shù)組(即便不是創(chuàng)建VR內(nèi)容)。這個決定,加上著色器宏,可允許你創(chuàng)建與VR自動兼容的著色器。當(dāng)然,少數(shù)特殊情況例外,如光源列表生成,體三維照明,以及相對于camera的渲染。
請注意,HDRP不支持雙寬紋理的單通道渲染,因為所有全屏通道和效果都需要額外的復(fù)雜性和負(fù)載。
4. 如何開始
開始前請參閱Unity文檔中的“VR Overview”頁面。Unity同時提供了HDRP Wizard來驗證你的設(shè)置,并可以幫助你修復(fù)不正確的設(shè)置。
若需通過新的XR插件框架來手動為VR配置項目,請參閱這個文檔。要設(shè)置單通道渲染,你必須將 Project Settings設(shè)置為Single-Pass Stereo Rendering渲染模式,并將HDRP asset設(shè)置設(shè)置為Single Pass。如果未對單通道啟用這兩個選項之一,則HDRP將默認(rèn)為多通道。
在Project Settings和HDRP asset設(shè)置中使用Oculus插件來啟用Single Pass渲染。
5. 抗鋸齒
減少鋸齒對VR非常重要,它可以帶來出色的用戶體驗并避免破壞虛擬環(huán)境的沉浸感。HDRP提供了多種解決方案來幫助處理抗鋸齒。
所述選項包括:
正向渲染支持多重采樣抗鋸齒。你可以通過選擇樣本數(shù)量(2x,4x,8x)來平衡質(zhì)量與性能。這項技術(shù)可以取得相當(dāng)出色的效果,但計算成本十分昂貴。
對于大多數(shù)應(yīng)用,Temporal Anti-Aliasing或許是最佳的解決方案。它在減少鋸齒方面非常有效,但會模糊一定的細(xì)節(jié)。你可以使用隨附的銳化濾鏡控件來抵消這種模糊。
計算成本較低的解決方案包括Fast Approximate Anti-Aliasing(FXAA)或Subpixel Morphological Anti-Aliasing(SMAA)。
你可以將MSAA與TAA,F(xiàn)XAA或SMAA結(jié)合使用。它們可以提高視覺質(zhì)量,但計算成本是累積疊加。
Geometric Specular Anti-Aliasing為每種材質(zhì)提供了額外的著色抗鋸齒,你可以直接對材質(zhì)進(jìn)行調(diào)整。我們建議將其用于光滑密實的表面。
6. 性能
由于雙眼顯示的刷新率和分辨率高,所以VR渲染的要求非常嚴(yán)格。確保在HDRP asset設(shè)置中禁用所有不需要的功能。諸如Volumetric之類的功能不適用于VR應(yīng)用,因為盡管支持,但它們的性能無法達(dá)到要求的90fps。經(jīng)常監(jiān)視和分析性能將幫助你確定項目中的瓶頸。
請注意,默認(rèn)情況下的Volumetric效果在VR中的精度將是一半,這是為了確保GPU性能更能接受。除了Volumetric Lighting外,強烈建議在執(zhí)行VR項目時禁用HDRP Area Light支持。與其他功能不同,你必須通過著色器配置文件禁用Area Light。
HDRP中提供了兩種渲染方法,而它們同樣會影響性能。這兩者是正向渲染和延遲渲染。為VR選擇正確的模式取決于你的項目要求。正向渲染允許你啟用MSAA并減少內(nèi)存使用,而對于具有大量照明的項目,延遲渲染更位有效,但同時需要占用更多內(nèi)存。
影響GPU性能的另一個因素是渲染緩沖區(qū)的分辨率。所述分辨率最初是由XR顯示插件設(shè)置,但具體取決于你所使用的頭顯。你后面可以在應(yīng)用中調(diào)整分辨率,或者使用動態(tài)分辨率功能并根據(jù)當(dāng)前場景的情景來提高分辨率。例如,可以根據(jù)當(dāng)前GPU幀時間來調(diào)整分辨率。
7.著色器宏
為了在HDRP中支持VR,Unity添加了一組著色器宏來幫助處理渲染目標(biāo)的視圖實例化和紋理陣列使用。例如,你可以使用以下代碼在著色器中聲明紋理:TEXTURE2D_X(MyTexture)
對于在支持紋理數(shù)組的平臺,所述宏將擴(kuò)展為TEXTURE2D_ARRAY。如果平臺不支持紋理數(shù)組,或者如果ShaderConfig.cs中的設(shè)置禁用,則所述宏將擴(kuò)展為常規(guī)TEXTURE2D。類似的功能可用于紋理采樣。
在著色器端,適當(dāng)?shù)囊晥D常量(視圖矩陣,投影矩陣等)存儲在數(shù)組中,并根據(jù)從圖元instanceID導(dǎo)出的眼睛索引進(jìn)行索引。在計算著色器的情況下,z調(diào)度維度用于標(biāo)識每只眼睛。宏UNITY_XR_ASSIGN_VIEW_INDEX通常用于分配適當(dāng)?shù)难劬λ饕?/p>
8. 未來
HDRP VR的未來版本將專注于:
通過可變速率著色等新硬件選項來提高性能
使用Vulkan和DX12改善平臺支持
改善設(shè)備支持
擴(kuò)展單通道以支持兩個以上的視圖
9. 反饋
你現(xiàn)在即可馬上感受HDRP VR的優(yōu)勢。如有任何反饋建議,請通過HDRP論壇發(fā)表你的意見。
原文鏈接:https://yivian.com/news/72809.html