為 VR 優(yōu)化UE 4渲染器

首發(fā)于游戲蠻牛驛館


為了《Farlands》游戲, Oculus 團(tuán)隊為UE 4開發(fā)了一個快速,單通道正向的渲染器。它也可以被用在《Dreamdeck》游戲和在 Oculus 商店中的《Showdown》游戲。我們分享了這個渲染器的源代碼作為了一個簡單的 demo 來幫助開發(fā)者在它們自己的應(yīng)用程序中達(dá)到更高的質(zhì)量和更快的幀率。從今天開始,你可以作為一個虛幻的開發(fā)者從 https://github.com/Oculus-VR/UnrealEngine/tree/4.11-ofr 下載。

渲染沉浸式虛擬現(xiàn)實世界需要固定在90Hz是非常復(fù)雜的,并且在技術(shù)上也面臨著挑戰(zhàn)。

在許多方面,創(chuàng)造虛擬現(xiàn)實的內(nèi)容不同于傳統(tǒng)的只要顯示器的內(nèi)容—它帶給我們令人驚嘆的各種新的互動和體驗,但是這迫使開發(fā)商重新思考舊的假設(shè),并想出新的技巧。

最近的虛擬現(xiàn)實游戲浪潮展示了開發(fā)者的機(jī)會和創(chuàng)造力。

當(dāng)我們工作時,我們重新評估了一些傳統(tǒng)的用于虛擬現(xiàn)實渲染的假想,并且開發(fā)的技術(shù)來幫助我們在90Hz提供高保真的內(nèi)容。現(xiàn)在,我們分享了一些成果:關(guān)于 UE 4.11渲染器的實驗。我們開發(fā)了 **Oculus 虛幻渲染器 **伴隨虛擬現(xiàn)實在頭腦中渲染出具體的約束。

它讓我們更容易地創(chuàng)造出高保真、高性能的體驗,我們渴望與所有UE4開發(fā)者分享它。

背景

當(dāng)我們的團(tuán)隊開始開發(fā)《Farlands》,我們花了一些時間來反思我們在這個 demo 里學(xué)到的經(jīng)驗,我們在 Oculus Connect開發(fā)者大會,游戲開發(fā)者大會(GDC),國際消費類電子產(chǎn)品展覽會(CES)和一些其他的活動。我們使用 UE 4來創(chuàng)建此次內(nèi)容,這為我們提供了一個令人難以置信的編輯環(huán)境和豐富的先進(jìn)的渲染功能。
不幸地是,Rift 渲染的現(xiàn)實意味著我們只能使用這些功能的一個子集。我們想研究哪些我們最常用的功能,看看我們是否能夠設(shè)計一個精簡的渲染器,能夠提供更高性能和強(qiáng)大的視覺效果,同時讓團(tuán)隊繼續(xù)使用UE 4 的世界編輯器和引擎。然而 Oculus 虛幻渲染器關(guān)注的重點是 Oculus 應(yīng)用程序的使用情況,這將改造原有項目(包括《Showdown 》和Oculus 的《Dreamdeck》這兩款游戲),不需要花費太多的工作內(nèi)容。在這些情況下,它提供了清晰的視覺效果,并釋放出足夠的GPU空間給一些附加功能或者提高15-30% 的分辨率。

高分辨率比較:Oculus 虛幻渲染器保持在90fps,默認(rèn)的虛幻渲染器在60fps 以下
高分辨率比較:Oculus 虛幻渲染器保持在90fps,默認(rèn)的虛幻渲染器在60fps 以下

VR 延遲問題

虛幻引擎以其先進(jìn)的渲染功能集和保真度而聞名。所以,我們?yōu)閂R改變它的理由是什么? 它所創(chuàng)建的VR內(nèi)容可能會降低我們的體驗,而且渲染到顯示器和 Rift 的不同。

當(dāng)檢查我們?yōu)?Rift 創(chuàng)建的這個 demo 的時候,我們發(fā)現(xiàn)大多數(shù)著色器都很簡單,主要依靠在詳細(xì)紋理上的一些查找以及少量的算法。當(dāng)和延遲渲染器結(jié)合的時候,這就意味著我們的 GBuffer通道(一種在 Video Post 中基于圖像過濾和圖層事件中可使用的物體蒙版的一種著色技術(shù))會有許多的紋理綁定--我們從大量的紋理中讀取,再寫入 GBuffers,在這之間并沒有做什么。

我們也很少使用動態(tài)光照和陰影并且我們更傾向于預(yù)先計算的光照。在實際中,切換到一個渲染器幫助我們在單一通道里提供一個更有限的功能集,取得了更好的 GPU 利用率,優(yōu)化,去除了帶寬開銷,并使它可以更容易為我們達(dá)到90Hz。

我們也想比較硬件加速的多采樣抗鋸齒(MSAA)與虛幻的抗鋸齒(TAA)。TAA僅在監(jiān)視器渲染下發(fā)揮很好的左右,它也非常適合延遲渲染,但是它在VR中引起了顯著的變化。特別的是,它可以引起抖動,在頭部的運動過程中會發(fā)生走樣。要明確的是,這使得一些我們自己的著色器和頂點動畫變得更糟。但是這主要是由于VR眼鏡的作用。

與顯示器相比,每一個 Rift 像素覆蓋了觀察者更大一部分的視野一個典型的顯示器每個立體角有超過VR眼鏡10倍以上的像素。提給Oculus SDK的圖像,通過一個額外的重采樣層彌補(bǔ)VR眼鏡光學(xué)的影響。額外的過濾會稍微平滑過度圖像。

當(dāng)進(jìn)行渲染時,我們的愿望是所有這些因素有助于保存盡可能多的圖像細(xì)節(jié)。我們發(fā)現(xiàn)多重采樣可以產(chǎn)生出我們希望的更清晰,更詳細(xì)的圖像。


延遲渲染與正向渲染比較,放大后的比較。
延遲渲染與正向渲染比較,放大后的比較。

更好的適應(yīng)正向渲染

目前最先進(jìn)的渲染技術(shù)經(jīng)常利用屏幕空間的顯示效果,比如屏幕空間環(huán)境遮蔽(SSAO) 和屏幕空間反射(SSR)。 它們的現(xiàn)實效果和高品質(zhì)的視覺沖擊都是眾所周知的,但是在VR中它們所做出的權(quán)衡是不理想的。 單純在屏幕空間中操作可能會引入不正確的立體差異(在每只眼睛中產(chǎn)生的圖像差異),這些情況使人覺得不舒服。由于渲染這些效果的成本,在我們的成功案例中放棄對這些功能的支持會使得我們的體驗更舒服。

我們實現(xiàn)正向渲染的決定考慮了所有的因素。嚴(yán)格來說,正向渲染允許我們?yōu)閳D形保真使用多重采樣抗鋸齒,為我們的重紋理著色器添加算法(并移除寫入的 GBuffer),移除會干擾異步時間扭曲(ATW) 技術(shù)昂貴的全屏幕通道,并且一般來說,在更強(qiáng)大的延遲渲染之上給我們適度的加速。 切換到了正向渲染器已經(jīng)允許輕松地添加單視角背景渲染,這對于遠(yuǎn)處巨大復(fù)雜的幾何體的標(biāo)題顯示也可以提升很大性能。然而,這些優(yōu)勢帶來的權(quán)衡并不適合每個人。我們的目標(biāo)是為了與VR開發(fā)者分享我們的知識,讓他們繼續(xù)開發(fā)出運行在90Hz的世界一流的內(nèi)容。我們的實現(xiàn)基于 Ola Olsson在2012年發(fā)表的論文《聚合延遲渲染和正向渲染》。

熟悉傳統(tǒng)正向渲染的讀者也許會關(guān)心當(dāng)使用這個渲染器時 CPU 和 GPU開銷。幸運地是,現(xiàn)代正向照明的方法不需要額外的繪制調(diào)用:所有的幾何體和光照都被渲染到一個單通道(可選z-計算光子圖)。 這是通過使用一個計算著色器來預(yù)計算哪個光源影響3D集群(每只眼的視錐細(xì)分以及體元柵格)。

使用這些數(shù)據(jù),每一個像素可以簡單地決定一片具有高屏幕空間的燈光,并且利用現(xiàn)代高效 GPU的分支能力執(zhí)行光照循環(huán)。

這提供了精確的裁剪和有效地處理更少數(shù)量的動態(tài)燈,沒有額外的繪制調(diào)用和渲染通道的開銷。


可視化的3D 光網(wǎng)格,說明了光照的相干性和剔除操作
可視化的3D 光網(wǎng)格,說明了光照的相干性和剔除操作

除了渲染,我們已經(jīng)修改了 UE4,允許進(jìn)一步的CPU 和 GPU的優(yōu)化。這個渲染器作為一個未維護(hù)的例子并且非官方支持的 SDK,但是我們很興奮為項目使用虛幻這一世界級引擎和編輯器作為渲染它們的虛擬現(xiàn)實世界的附加選項。現(xiàn)在你可以作為虛幻開發(fā)者去 github 倉庫下載它,地址https://github.com/Oculus-VR/UnrealEngine/tree/4.11-ofr。為了能夠看到它的效果,你可以試試Farlands,Dreamdeck, 和Showdown這三款游戲。

原文鏈接:

https://developer.oculus.com/blog/introducing-the-oculus-unreal-renderer/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容