來(lái)源:映維網(wǎng) 作者 劉源
如果你缺乏移動(dòng)開(kāi)發(fā)經(jīng)驗(yàn),將內(nèi)容從PC和主機(jī)移植到所述平臺(tái)或許是一個(gè)棘手的過(guò)程。在將作品帶到Oculus Quest時(shí)同樣如此,而且另一個(gè)挑戰(zhàn)是,VR一體機(jī)是貼到用戶面前,所以一丁點(diǎn)的錯(cuò)誤都會(huì)清晰易見(jiàn)。能夠正確地優(yōu)化項(xiàng)目將意味著下面兩個(gè)結(jié)果中的一個(gè):流暢和愉快的用戶體驗(yàn);過(guò)熱GPU造成的不斷掉幀。
日前,Arm通過(guò)視頻為Oculus Start Program帶來(lái)了一個(gè)約20分鐘的移動(dòng)VR優(yōu)化教程。下面映維網(wǎng)整理了視頻中的五大要點(diǎn):
1. 紋理壓縮十分重要
即便紋理導(dǎo)出為PNG、JPEG、TGA或PSD,但在項(xiàng)目運(yùn)行時(shí)它們不會(huì)保持為所述格式。每個(gè)紋理都會(huì)轉(zhuǎn)換成可由GPU更快讀取的格式,從而減少帶寬,并且在VRAM中占用更少的內(nèi)存。盡管你可以選擇一系列不同的解決方案,但Arm建議移動(dòng)平臺(tái)采用ASTC(自適應(yīng)可擴(kuò)展紋理壓縮/Adaptive Scalable Texture Compression)。ASTC由Arm和AMD開(kāi)發(fā),其最大的特點(diǎn)之一是它為你提供了眾多用于控制壓縮質(zhì)量的選項(xiàng)。在一開(kāi)始,不同級(jí)別的塊大?。˙lock-Size)或許會(huì)令人感到害怕。所以,Arm建議你從5×5或6×6開(kāi)始,然后為占用較少視圖空間的資源放大塊大小。但一定要嘗試不同的設(shè)置,從而找尋最適合項(xiàng)目的選項(xiàng)。
你可以在項(xiàng)目中嘗試的另一個(gè)選項(xiàng)是ETC(Ericsson Texture Compression)。但這通常會(huì)給紋理留下更高的內(nèi)存占用空間、更低的視覺(jué)質(zhì)量,并會(huì)降低運(yùn)行時(shí)的性能。更多關(guān)于ASTC,如何使用ASTC,以及不同ASTC編碼器選項(xiàng)的信息請(qǐng)?jiān)L問(wèn)這一頁(yè)面(Arm在8月20日發(fā)布了ASTC v2.0編碼器的升級(jí)版)。
2. 用LODs(Level OF Details)降低頂點(diǎn)數(shù)和避免微三角形
我們都知道幾何對(duì)性能有著巨大的影響。網(wǎng)格的頂點(diǎn)越少,計(jì)算的速度就越快。保持正在渲染的頂點(diǎn)數(shù)有時(shí)會(huì)與項(xiàng)目的美術(shù)視覺(jué)產(chǎn)生沖突。這時(shí)我們可以利用LODs。
對(duì)于遠(yuǎn)離用戶的網(wǎng)格,LODs將顯示較低多邊形的版本。相關(guān)模型屬于預(yù)制型,其變化的距離可控。在更復(fù)雜的場(chǎng)景中,用戶可以看到遠(yuǎn)處,而這將有助于減少頂點(diǎn)數(shù),并解決另一個(gè)問(wèn)題:微三角形(Mirco Triangles)。這種三角形在完全渲染時(shí)占據(jù)1-10個(gè)像素。盡管它們對(duì)最終圖像的貢獻(xiàn)不大,但GPU依然需要對(duì)其進(jìn)行完整的處理。
3. 用Mipmaps來(lái)提高項(xiàng)目的性能和視覺(jué)
Mipmapping就像LODs,但主要針對(duì)紋理方面。Mipmap是以較低分辨率保存的紋理副本。在GPU對(duì)紋理進(jìn)行采樣時(shí),它會(huì)根據(jù)片元所占的紋理空間大小選擇合適的Mip級(jí)別。乍一看,Mipmap似乎有點(diǎn)奇怪。紋理的副本確實(shí)會(huì)增加它們的內(nèi)存占用。但作為交換,你可以提高GPU的性能,因?yàn)樗槐匾匀直媛输秩具h(yuǎn)離camera的對(duì)象。同時(shí),它可以防止紋理鋸齒。當(dāng)結(jié)合使用時(shí),Mipmap和LODs可以加快場(chǎng)景渲染。
4. 細(xì)長(zhǎng)三角形
正我前面所提,組成網(wǎng)格的頂點(diǎn)越少,GPU計(jì)算的速度就越快。但是,即便是低多邊形網(wǎng)格都可能會(huì)存在一定的問(wèn)題,并對(duì)GPU施加更大的壓力。最常見(jiàn)的是細(xì)長(zhǎng)三角形。對(duì)于這種三角形,由于第三個(gè)頂點(diǎn)距離遙遠(yuǎn),所以它在完全渲染時(shí)將占據(jù)數(shù)十個(gè)像素。問(wèn)題出現(xiàn)的原因是,GPU需要以方形塊的形式處理多個(gè)像素。這是一個(gè)挑戰(zhàn),因?yàn)榧幢氵@個(gè)三角形只占視圖控件的一小部分,GPU都必須對(duì)多個(gè)塊執(zhí)行計(jì)算。最好的選擇是刪除所有的細(xì)長(zhǎng)三角形,并確保三角形盡可能接近等邊。
5. 利用Alpha to Coverage
在保持出色性能并同時(shí)減少Alpha值對(duì)象的鋸齒對(duì)虛擬現(xiàn)實(shí)而言是一個(gè)挑戰(zhàn)。Alpha測(cè)試是一種廣泛實(shí)現(xiàn)的Alpha合成形式,并且是不少游戲引擎的默認(rèn)設(shè)置。但它可以在對(duì)象邊緣產(chǎn)生服務(wù)器鋸齒效果。Alpha混合是一種替代方法,但如果沒(méi)有多邊形排序,它將無(wú)法按順序渲染對(duì)象,而且排序是一個(gè)非常計(jì)算成本昂貴的操作。
Alpha-to-Coverage(ATOC)可以通過(guò)將片元著色器的Alpha組件輸出轉(zhuǎn)換為覆蓋遮罩,并將其與多采樣遮罩相結(jié)合來(lái)幫助減少鋸齒。然后,它將使用AND運(yùn)算符并僅渲染通過(guò)所述操作的像素。
上圖左側(cè)是一個(gè)基本的Alpha測(cè)試,右側(cè)則是ATOC。即便是靜態(tài)圖像,鋸齒都非常顯著,而當(dāng)圖像處于運(yùn)動(dòng)狀態(tài)時(shí),變化要明顯得多。盡管實(shí)現(xiàn)這一點(diǎn)聽(tīng)起來(lái)相當(dāng)困難,但Arm提供一個(gè)針對(duì)各個(gè)引擎的簡(jiǎn)單指南。
6. 熱身
由于虛擬現(xiàn)實(shí)項(xiàng)目的多學(xué)科性質(zhì),五個(gè)技巧難以完全地覆蓋方方面面。要開(kāi)發(fā)出一個(gè)優(yōu)秀的項(xiàng)目,你需要付出大量的努力。上面只是優(yōu)化技巧的冰山一角。若要探索更多關(guān)于優(yōu)化幾何體、紋理和材質(zhì)的詳細(xì)信息,請(qǐng)關(guān)注Arms Best Practices for Artisters,并同時(shí)查看Unity項(xiàng)目示例和UE4項(xiàng)目示例中的VR圖形技術(shù)。另外,呼吁大家積極向社區(qū)分享你的技巧和建議,從而幫助大家一同進(jìn)步。
原文鏈接:https://yivian.com/news/78877.html