當前位置:
首頁 > 科技 > Oculus Quest最佳開發實踐:如何避免圖形管道瓶頸

Oculus Quest最佳開發實踐:如何避免圖形管道瓶頸

查看引用和消息源請點擊:映維網

最佳開發實踐和Quest商店方針

映維網 2019年05月04日)克里斯·普魯厄特(Chris Pruett)是Oculus內容生態系統的負責人。他曾在今年三月舉行的GDC大會發表了名為「Down the Rabbit Hole with Oculus Quest」的主題演講,從開發商的角度簡單概述了Oculus Quest。

延伸閱讀:Oculus Quest軟硬體設計細節:CPU、GPU、固定注視點、不對稱扭曲

現在,普魯厄特正通過兩篇博文回顧介紹當時的演講。昨天的博文與硬體/軟體方面有關,而今天普魯厄特則分享了與最佳開發實踐和Quest商店方針的訊息。下面是映維網的具體整理:

1. 最佳開發實踐

確定Quest的圖形架構與PC視頻卡的區別非常重要。Quest的大多數性能優化都是關於合理地格式化美術asset,而非編寫更快的代碼。所以,明確如何避免圖形管道中的瓶頸十分關鍵。

在CPU方面,繪製調用是計算開銷的常見來源。繪製調用這個命令主要用於繪製帶有狀態包的網格:網格,著色器,通常包含一定的紋理,以及任何需要繪製的其他數據。CPU的圖形驅動程序必須為GPU的每次調用做好準備,而這種準備需要時間。最基本的優化之一是,減少繪製場景所需的繪製調用總數。

繪製調用值得我們深入探討。繪製調用的關鍵一點是,它們在成本方面可能存在非常大差異。一些繪製調用的成本很低,另一些則很高。實際的計算開銷來源並非繪製調用本身,而是繪製調用之間的狀態更改。如果你反覆使用相同的紋理和相同的著色器來繪製相同的對象,你會發現第一次調用的成本會很高,但所有後續調用的成本則很低,這是因為驅動程序緩存並重用了繪製網格所需的狀態(著色器和紋理)。只有第一個調用會調用大量數據,後續調用只是重用已經準備好的數據。所以,優化的重點不是減少場景中繪製調用的總數,而是考慮每幀所需的狀態更改總數。

假如場景中有10個對象,每個對象都有不同的紋理,則每個對象都需要包含單獨數據集的單獨繪製調用。不同的網格,不同的紋理,不同的著色器參數,甚至可能是不同的著色器。但如果將所有這些對象組合成單個紋理(「紋理圖集」),並將對象的UV映射調整為指向單個紋理,則繪製調用的開銷會降低,因為紋理只需要綁定一次就可繪製所有10個對象。如果你可以進一步使用相同的著色器和著色器參數,則可以顯著降低場景的成本。例如對於Unity開發者來說,你可以使用相同的材質,為所有對象使用相同的著色器和相同的紋理。如果你可以它們標記為「批處理靜態」,則甚至可以對所有對象使用相同的網格。下圖概述了不同類型的繪製調用狀態更改的相對成本(柱形越高,表示執行繪製調用所花費的時間越高):

我們從開發者的舉措中看到了一些常見的,能夠有效減少繪製調用和狀態改動開銷的方法,例如使用烘培照明,以及對環境網路使用智能靜態批量處理等等。下面是《Dead and Buried》中的一個示例場景。開發者是從美術asset方面著手優化,並在Quest實現了優秀的運行效果:

至於GPU,Adreno 540的Binning架構的主要優勢包括,4X MSAA的成本是每幀1.25 ms和1.54 ms之間,具體取決於片段著色器的複雜程度。為了最大限度地提高GPU的性能,你需要明白系統在處理全屏效果之前需要解析整個場景,所以這樣做的成本非常昂貴。其他類型的相關渲染亦是如此,如實時鏡像和反射。最後,在片段著色器中丟棄片段(如通過discard()或clip())會致使GPU重新渲染整個圖塊,所以你應該在所有著色器中避免使用。

由於Quest遊戲渲染的解析度非常高,所以即便是沒有複雜片段著色器的場景,片段都有可能成為約束限制。最常見的「罪魁禍首」是彼此重疊的大型透明對象,並且最終在同一幀中多次觸及相同的像素。例如,如果四邊形具有顯著重疊,同時導致大量像素被多次混合,這時在整個眼睛緩衝區中繪製大型透明四邊形的粒子效果的成本可能要比預期昂貴。固定注視點渲染同樣可以幫助降低幀的整體片段成本。

需要注意的是,增強眼睛紋理解析度的成本同樣非常昂貴,但這可以產生非常優秀的結果。如果你發現GPU不是瓶頸所在,請嘗試增加眼睛紋理解析度。

Quest遊戲可以很大,但包含它們的數據需要以一種特別的方式進行組織。我們推薦的可APK文件為小於1GB,理想是小於100mb,同時可包括一個或多個擴展文件。擴展文件最大可以為4GB,並且可以是任何格式。對於Unity,你可以將所有場景放到Chunk-Compressed Asset Bundle。這可以幫助你輕鬆生成擴展文件,但同時會提高載入時間。Quest app可以是32位或64位,但我們推薦64位,這是為了減少內存碎片化,提升性能,減少載入時間,並且支持載入更大的擴展文件。

儘管Oculus Quest尚未發貨,但我們已經看到VR一體機領域出現了全新的遊戲設計模式。例如,Quest可以提升基於頭部的導航,因為玩家可以自由地360度轉動,無需擔心線纜纏繞。儘管我們仍然推薦諸如瞬轉等解決方案(考慮到玩家有可能是坐在旋轉椅上,並且難以輕鬆轉動),但在一個環境中打轉時,單純依靠基於頭部的導航感覺效果非常出色。

另一個有趣的示例是重新居中。對於Rift,你可以簡單地將面向追蹤器的方向作為「正向」。但Quest沒有明顯的「正向」。當玩家需要重新對齊虛擬世界和現實世界時,你在旋轉兩者時沒有標準的正向作為參考。SUPERHOT Team採取了一種有趣的解決方案,而我們在OC5大會已經用Quest進行過演示。在演示內容中,在每個關卡的最後你都要摧毀一個旋轉的錐體,只有這樣你才可以繼續前進。如果離錐體太遠,玩家必須走到它附近的有效攻擊距離,然後再將其摧毀。SUPERHOT Team確保這個錐體總是在真實世界遊玩區域的正中心生成,從而迫使玩家回到遊玩區域的中心,然後再載入下一個關卡。通過這樣的方式,遊戲開發團隊可以確保玩家不會在一個尷尬的位置開始新的一關,比方說剛好對著一堵牆。

2. 商店和生態系統

你必須認真閱讀我們今年年初為Oculus Quest宣布的Concept Approval Process(概念審核流程)。簡單來說,我們要求開發者在開發流程的初期就向我們提交一個概念文檔。我們的目標是支持看起來適合Quest用戶的內容,並且確保你無需為最終可能不適合平台的概念投入大量的成本和時間。通過審核的作品可以獲取我們提供的開發者支持和資源。這個流程只針對Oculus Quest,不包括Oculus Go或Oculus Rift。

對於這個流程,我希望強調的一點是,我們正在物色精良有趣的高質量作品,包括只是針對利基用戶的體驗。利基的,奇怪的,實驗性的,只要是精良有趣,通通都可以。但是,我們希望它們可以與平台的所有其他作品一樣,能夠滿足用戶對質量方面的期望。我們不需要技術演示內容或「周末實驗」。

Oculus Quest將於5月21日開始發貨,售價399美元。我們提供了大約50款首發內容,而更多的作品將陸續與大家見面。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 映維VR 的精彩文章:

谷歌為《大偵探皮卡丘》上映推出AR Playmoji包,讓你與皮卡丘親密互動
頸戴式迷你主機,Facebook獲分體式AR頭顯系統專利

TAG:映維VR |