VR開發(fā)之性能優(yōu)化小技巧
虛擬現(xiàn)實(shí)是目前游戲行業(yè)最令人興奮的領(lǐng)域之一。得益于Unity的開發(fā)平臺(tái),開發(fā)者和愛好者都能輕松將創(chuàng)意轉(zhuǎn)化為可以吸引成千上萬玩家的成熟游戲。YouTube頻道“VR with Andrew”的主持人安德魯·康奈爾(Andrew Connell)早前曾分享了一個(gè)關(guān)于VR開發(fā)優(yōu)化技巧的短視頻。另外,你可以對(duì)照視頻參閱映維網(wǎng)整理的文字介紹:
在實(shí)現(xiàn)所述優(yōu)化時(shí),安德魯建議參考Oculus的性能指南,從而確保在開發(fā)應(yīng)用程序時(shí)處于推薦的度量范圍之內(nèi)。
1. LoD模型
LoD代表細(xì)節(jié)級(jí)別,指的是游戲中3D模型的復(fù)雜性。LoD可以隨著模型遠(yuǎn)離玩家或根據(jù)其他度量(如對(duì)象重要性、視點(diǎn)相對(duì)速度或位置)而降低。
我們可以根據(jù)玩家與對(duì)象的距離在模型之間切換。然后我們對(duì)模型進(jìn)行排序,使對(duì)象的細(xì)節(jié)隨著與對(duì)象的距離增加而減小。在創(chuàng)建LoD時(shí),它們的輪廓和外觀應(yīng)該相似,但在幾何結(jié)構(gòu)方面應(yīng)該有足夠的差異,以提高性能。額外的LoD模型不必手動(dòng)創(chuàng)建,有大量的軟件解決方案用于自動(dòng)化創(chuàng)建過程。
2 幾何鋸齒
抗鋸齒是指去除頻率高于記錄或采樣設(shè)備能夠正確分辨的信號(hào)分量。為了抑制這種情況,我們可以使用多重采樣抗鋸齒(MSAA)。首先選擇渲染管道,然后導(dǎo)航到“質(zhì)量”,再導(dǎo)航到“抗鋸齒”并選擇“4x”。這是成本和性能的最佳選擇。
你可能會(huì)遇到鏡面鋸齒。高鏡面反射級(jí)別或高光容易產(chǎn)生這種情況。對(duì)于這一點(diǎn),沒有直接的解決方法,但存在各種技術(shù)可以盡可能地將其最小化。這包括避免使用銳利邊緣,選擇光滑的圓形形狀,并使用啞光材料。為了有效地使用這些技巧,最好盡早與你的美術(shù)交流。
3 紋理壓縮
對(duì)于紋理壓縮,最好使用ASTC,因?yàn)樗峁┝俗罴奄|(zhì)量的大小比。最好是以每個(gè)asset作為基礎(chǔ)進(jìn)行應(yīng)用,這可以避免不必要的紋理數(shù)據(jù),并提供更好的質(zhì)量。
你同時(shí)可以參考下面這個(gè)圖表:
4 Mipmmapping
另一種技術(shù)叫做Mipmapping。這將基于初始導(dǎo)入的紋理創(chuàng)建一組較小的紋理,從而最小化紋理鋸齒并提高性能,因?yàn)槲覀儾皇褂妙~外的紋理數(shù)據(jù)。
你可以轉(zhuǎn)到asset窗口中的紋理,然后轉(zhuǎn)到高級(jí)設(shè)置以啟用Mipmapping。Mipmapping對(duì)于紋理濾波非常重要。
5 紋理濾波
紋理濾波有三個(gè)選項(xiàng):點(diǎn)、雙線性和三線性。點(diǎn)意味著沒有濾波。雙線性將對(duì)最近的Mipmap進(jìn)行采樣。三線性則對(duì)最近的兩個(gè)Mipmap進(jìn)行采樣,并將它們混合在一起以提供最平滑的過渡。啟用紋理濾波的選項(xiàng)與mipmaps相同的設(shè)置窗口中。
對(duì)于VR,我們建議使用三線性。對(duì)于其他各向異性過濾,我們建議使用一個(gè)相當(dāng)?shù)偷闹担驗(yàn)樗谛阅芊矫嫦喈?dāng)昂貴,而你應(yīng)該將其保留給環(huán)境asset。
6 凹凸貼圖
對(duì)于更粗糙、更復(fù)雜的紋理,你可以使用幾種貼圖方法。凹凸貼圖最常見的形式是法線貼圖,它適用于大多數(shù)用例。但對(duì)于VR來說,由于玩家視角的不斷變化,普通貼圖并沒有那么有用。另外,在虛擬現(xiàn)實(shí)中,我們必須為每只眼睛渲染兩個(gè)不同的圖像(這個(gè)過程稱為立體視覺)。在虛擬現(xiàn)實(shí)中,法線貼圖的假象不像我們使用一個(gè)紋理渲染兩個(gè)不同視點(diǎn)那樣可靠。有一種更合適的貼圖類型,其明為視差遮擋貼圖,而我們可以使用高度貼圖來實(shí)現(xiàn)它。這種類型的貼圖考慮了玩家與曲面的角度。然而,這是一個(gè)相當(dāng)昂貴的性能過程,應(yīng)該謹(jǐn)慎使用,比如玩家近距離交互的對(duì)象。
7. Light maps
陰影對(duì)于為場(chǎng)景添加深度至關(guān)重要。然而,它們同樣是一次計(jì)算密集的過程,特別是對(duì)于移動(dòng)設(shè)備而言。照明是一個(gè)同樣復(fù)雜的主題,所以我們將重點(diǎn)關(guān)注照明靜態(tài)對(duì)象。需要記住的一點(diǎn)是,與多個(gè)較小的紋理相比,處理較少和較大的紋理更為有效。
Arm已在Unity Asset Store發(fā)布了一個(gè)相關(guān)資源https://assetstore.unity.com/packages/vfx/shaders/dynamic-soft-shadows-based-on-local-cubemaps-61640,其可用于使用本地立方體貼圖來創(chuàng)建動(dòng)態(tài)軟陰影。這是一個(gè)非常低成本的解決方案,所以如果你需要一個(gè)簡(jiǎn)單的解決方案,它肯定值得考慮。
8. Banding alpha compositing
當(dāng)我們不能在每個(gè)像素的位數(shù)內(nèi)正確顯示所需的顏色時(shí),banding就會(huì)發(fā)生。這會(huì)導(dǎo)致顏色變化,而不是平滑漸變。克服這個(gè)問題的方法是啟用色調(diào)映射或dithering。dithering會(huì)給圖像添加噪點(diǎn)。
色調(diào)映射嘗試將像素值從高動(dòng)態(tài)范圍(HDR)重新映射到低動(dòng)態(tài)范圍。這非常適合不支持HDR的屏幕。
9. Alpha compositing
alpha compositing是一種將圖像與背景結(jié)合起來以生成單個(gè)圖像的技術(shù)。它主要用于foliage以減少鋸齒。這是一個(gè)特別方便的方法,因?yàn)橐郧暗目逛忼X工具在這種情況下可能無法工作。
10. 顏色
最后,確保使用線性顏色空間,因?yàn)樗浅Ec基物渲染(PBR;基于物理的渲染)配合使用。
值得一提的是,Arm早前分享了關(guān)于一體式VR的優(yōu)化技巧。同時(shí),你可以通過YouTube關(guān)注訂閱“VR with Andrew”。
原文來自映維網(wǎng):https://news.nweon.com/85804