克里斯·普魯厄特(Chris Pruett)是Oculus內(nèi)容生態(tài)系統(tǒng)的負責人。他曾在今年三月舉行的GDC大會發(fā)表了名為“Down the Rabbit Hole with Oculus Quest”的主題演講,從開發(fā)商的角度簡單概述了Oculus Quest。
延伸閱讀:Oculus Quest軟硬件設(shè)計細節(jié):CPU、GPU、固定注視點、不對稱扭曲
現(xiàn)在,普魯厄特正通過兩篇博文回顧介紹當時的演講。昨天的博文與硬件/軟件方面有關(guān),而今天普魯厄特則分享了與最佳開發(fā)實踐和Quest商店方針的訊息。下面是映維網(wǎng)的具體整理:
1. 最佳開發(fā)實踐
確定Quest的圖形架構(gòu)與PC視頻卡的區(qū)別非常重要。Quest的大多數(shù)性能優(yōu)化都是關(guān)于合理地格式化美術(shù)asset,而非編寫更快的代碼。所以,明確如何避免圖形管道中的瓶頸十分關(guān)鍵。
在CPU方面,繪制調(diào)用是計算開銷的常見來源。繪制調(diào)用這個命令主要用于繪制帶有狀態(tài)包的網(wǎng)格:網(wǎng)格,著色器,通常包含一定的紋理,以及任何需要繪制的其他數(shù)據(jù)。CPU的圖形驅(qū)動程序必須為GPU的每次調(diào)用做好準備,而這種準備需要時間。最基本的優(yōu)化之一是,減少繪制場景所需的繪制調(diào)用總數(shù)。
繪制調(diào)用值得我們深入探討。繪制調(diào)用的關(guān)鍵一點是,它們在成本方面可能存在非常大差異。一些繪制調(diào)用的成本很低,另一些則很高。實際的計算開銷來源并非繪制調(diào)用本身,而是繪制調(diào)用之間的狀態(tài)更改。如果你反復使用相同的紋理和相同的著色器來繪制相同的對象,你會發(fā)現(xiàn)第一次調(diào)用的成本會很高,但所有后續(xù)調(diào)用的成本則很低,這是因為驅(qū)動程序緩存并重用了繪制網(wǎng)格所需的狀態(tài)(著色器和紋理)。只有第一個調(diào)用會調(diào)用大量數(shù)據(jù),后續(xù)調(diào)用只是重用已經(jīng)準備好的數(shù)據(jù)。所以,優(yōu)化的重點不是減少場景中繪制調(diào)用的總數(shù),而是考慮每幀所需的狀態(tài)更改總數(shù)。
假如場景中有10個對象,每個對象都有不同的紋理,則每個對象都需要包含單獨數(shù)據(jù)集的單獨繪制調(diào)用。不同的網(wǎng)格,不同的紋理,不同的著色器參數(shù),甚至可能是不同的著色器。但如果將所有這些對象組合成單個紋理(“紋理圖集”),并將對象的UV映射調(diào)整為指向單個紋理,則繪制調(diào)用的開銷會降低,因為紋理只需要綁定一次就可繪制所有10個對象。如果你可以進一步使用相同的著色器和著色器參數(shù),則可以顯著降低場景的成本。例如對于Unity開發(fā)者來說,你可以使用相同的材質(zhì),為所有對象使用相同的著色器和相同的紋理。如果你可以它們標記為“批處理靜態(tài)”,則甚至可以對所有對象使用相同的網(wǎng)格。下圖概述了不同類型的繪制調(diào)用狀態(tài)更改的相對成本(柱形越高,表示執(zhí)行繪制調(diào)用所花費的時間越高):
我們從開發(fā)者的舉措中看到了一些常見的,能夠有效減少繪制調(diào)用和狀態(tài)改動開銷的方法,例如使用烘培照明,以及對環(huán)境網(wǎng)絡(luò)使用智能靜態(tài)批量處理等等。下面是《Dead and Buried》中的一個示例場景。開發(fā)者是從美術(shù)asset方面著手優(yōu)化,并在Quest實現(xiàn)了優(yōu)秀的運行效果:
至于GPU,Adreno 540的Binning架構(gòu)的主要優(yōu)勢包括,4X MSAA的成本是每幀1.25 ms和1.54 ms之間,具體取決于片段著色器的復雜程度。為了最大限度地提高GPU的性能,你需要明白系統(tǒng)在處理全屏效果之前需要解析整個場景,所以這樣做的成本非常昂貴。其他類型的相關(guān)渲染亦是如此,如實時鏡像和反射。最后,在片段著色器中丟棄片段(如通過discard()或clip())會致使GPU重新渲染整個圖塊,所以你應(yīng)該在所有著色器中避免使用。
由于Quest游戲渲染的分辨率非常高,所以即便是沒有復雜片段著色器的場景,片段都有可能成為約束限制。最常見的“罪魁禍首”是彼此重疊的大型透明對象,并且最終在同一幀中多次觸及相同的像素。例如,如果四邊形具有顯著重疊,同時導致大量像素被多次混合,這時在整個眼睛緩沖區(qū)中繪制大型透明四邊形的粒子效果的成本可能要比預(yù)期昂貴。固定注視點渲染同樣可以幫助降低幀的整體片段成本。
需要注意的是,增強眼睛紋理分辨率的成本同樣非常昂貴,但這可以產(chǎn)生非常優(yōu)秀的結(jié)果。如果你發(fā)現(xiàn)GPU不是瓶頸所在,請嘗試增加眼睛紋理分辨率。
Quest游戲可以很大,但包含它們的數(shù)據(jù)需要以一種特別的方式進行組織。我們推薦的可APK文件為小于1GB,理想是小于100mb,同時可包括一個或多個擴展文件。擴展文件最大可以為4GB,并且可以是任何格式。對于Unity,你可以將所有場景放到Chunk-Compressed Asset Bundle。這可以幫助你輕松生成擴展文件,但同時會提高加載時間。Quest app可以是32位或64位,但我們推薦64位,這是為了減少內(nèi)存碎片化,提升性能,減少加載時間,并且支持加載更大的擴展文件。
盡管Oculus Quest尚未發(fā)貨,但我們已經(jīng)看到VR一體機領(lǐng)域出現(xiàn)了全新的游戲設(shè)計模式。例如,Quest可以提升基于頭部的導航,因為玩家可以自由地360度轉(zhuǎn)動,無需擔心線纜纏繞。盡管我們?nèi)匀煌扑]諸如瞬轉(zhuǎn)等解決方案(考慮到玩家有可能是坐在旋轉(zhuǎn)椅上,并且難以輕松轉(zhuǎn)動),但在一個環(huán)境中打轉(zhuǎn)時,單純依靠基于頭部的導航感覺效果非常出色。
另一個有趣的示例是重新居中。對于Rift,你可以簡單地將面向追蹤器的方向作為“正向”。但Quest沒有明顯的“正向”。當玩家需要重新對齊虛擬世界和現(xiàn)實世界時,你在旋轉(zhuǎn)兩者時沒有標準的正向作為參考。SUPERHOT Team采取了一種有趣的解決方案,而我們在OC5大會已經(jīng)用Quest進行過演示。在演示內(nèi)容中,在每個關(guān)卡的最后你都要摧毀一個旋轉(zhuǎn)的錐體,只有這樣你才可以繼續(xù)前進。如果離錐體太遠,玩家必須走到它附近的有效攻擊距離,然后再將其摧毀。SUPERHOT Team確保這個錐體總是在真實世界游玩區(qū)域的正中心生成,從而迫使玩家回到游玩區(qū)域的中心,然后再加載下一個關(guān)卡。通過這樣的方式,游戲開發(fā)團隊可以確保玩家不會在一個尷尬的位置開始新的一關(guān),比方說剛好對著一堵墻。
2. 商店和生態(tài)系統(tǒng)
你必須認真閱讀我們今年年初為Oculus Quest宣布的Concept Approval Process(概念審核流程)。簡單來說,我們要求開發(fā)者在開發(fā)流程的初期就向我們提交一個概念文檔。我們的目標是支持看起來適合Quest用戶的內(nèi)容,并且確保你無需為最終可能不適合平臺的概念投入大量的成本和時間。通過審核的作品可以獲取我們提供的開發(fā)者支持和資源。這個流程只針對Oculus Quest,不包括Oculus Go或Oculus Rift。
延伸閱讀:Quest應(yīng)用提交常見問題
對于這個流程,我希望強調(diào)的一點是,我們正在物色精良有趣的高質(zhì)量作品,包括只是針對利基用戶的體驗。利基的,奇怪的,實驗性的,只要是精良有趣,通通都可以。但是,我們希望它們可以與平臺的所有其他作品一樣,能夠滿足用戶對質(zhì)量方面的期望。我們不需要技術(shù)演示內(nèi)容或“周末實驗”。
Oculus Quest將于5月21日開始發(fā)貨,售價399美元。我們提供了大約50款首發(fā)內(nèi)容,而更多的作品將陸續(xù)與大家見面。
原文鏈接:https://yivian.com/news/60694.html
來源:映維網(wǎng)