<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

進行移動端Unity開發,針對引擎PowerVR性能建議

Dbwd_Imgtec ? 來源:互聯網 ? 作者:佚名 ? 2018-05-03 08:58 ? 次閱讀

如果你正在進行移動端Unity開發,那么這篇博客你絕對不能錯過!最近,我們為廣大用戶提供了面向虛幻4游戲引擎的PowerVR性能建議,如果你更多時候使用的是Unity游戲引擎,那么我們現在就將與你分享PowerVR性能建議文檔中關于提升Unity性能的一些方法。

大部分優化操作都適用于移動平臺,但是也有一些是專門面向PowerVR平臺的。也就是說,無論你的目標應用平臺是什么,幾乎所有的情況下都能夠帶來性能的提升,采用這些建議通常是很好的做法。

編譯設置

紋理壓縮

首先一定要確保使用了紋理壓縮,這不僅能壓縮存儲空間,同時也會節省運行時的帶寬,這是提升性能且節約電池壽命最好的方法之一。紋理壓縮的優點是它們會一直處于壓縮狀態直到它們要被用于某個片段處理操作的時候。

Unity支持各種各樣的紋理壓縮方法,默認方法是ETC,當然你也可以選擇其他方法,如下圖所示:

壓縮格式選項介紹如下:

  • ETC作為一種紋理壓縮格式支持所有的設備,但是在壓縮質量和大小方面被ETC2所取代,盡管ETC很簡單并且有廣泛的支持,但是它不支持阿爾法(Alpha)通道而且壓縮率也不是很理想。

  • PVRTC這種紋理壓縮格式僅支持PowerVR硬件平臺,支持Alpha通道,具有最好的壓縮比率和壓縮質量,通過高度靈活的配置一定能夠滿足質量/大小的要求。

  • ASTC是一個開源的壓縮格式,支持大部分平臺,它支持Alpha通道,具有與PVRTC相似的壓縮率和可配置性。

  • DXT作為一種壓縮格式廣泛的被桌面應用所支持,在移動領域由于授權問題,目前只有Nvidia Tegra平臺支持

  • ATC則只有高通Adreno平臺支持

盡管紋理格式設置是全局的,但是每一幀的紋理壓縮質量都可以調節,如下圖所示:

質量設置

最普遍的優化方法之一就是降低每個像素點的光數量,允許的光數量將直接影響GPU的負載,因為場景內的每個對象都需要在不同的光情況下進行渲染。這意味著每個網格都需要通過一個光照,在像素光數量選項設置中光數量的最大值將影響網格的效果。如果影響網格的光數量超過了上限,那么只有最重要的光將會被用于渲染每個網格,如果光線是均勻分布的且不重疊,那么在任何給定的時間內你都可以增加有效的光數量。

如何改變每個像素允許的光數量如下圖所示:

確保陰影地圖分辨率是“剛剛好”,使用最低的設置仍然看起來效果會很好,如果陰影地圖分辨率太高,這不僅會浪費內存和帶寬而且也會影響緩存的效率。

如下圖所示陰影分辨率也可以根據每個光來設置,各自的光陰影分辨率總是優先于全局的質量設置,除非選擇使用“Use Quality Setting”選項。

如果相機角度允許并且級聯設置不會覆蓋很多區域的話,適當調整陰影級聯的數量也是一個很好的主意。這種情況下,你可以降低級聯的數量,從4降到2或者沒有級聯。

當然也可以通過改變陰影級聯設置從“close”到“stable”來增加有效的陰影地圖分辨率,雖然能夠增加有效的陰影地圖分辨率但是代價是會出現不定的閃爍。

  • Close fit意味著陰影渲染算法將會盡可能高效的使用設置好的陰影地圖分辨率,結果是更高質量的陰影效果,然而這也會導致一些閃爍問題,尤其是當相機或者光移動的時候,我們使用“軟陰影”選項可以把這些閃爍隱藏掉。

  • Stable fit表示陰影渲染將盡可能的使陰影邊緣穩定,這意味著當相機或者光移動時陰影不會再有閃爍的現象,當然這也會使得陰影質量降低。

“Close fit”和“Stable fit”兩者之間的平衡需要仔細的考慮,“close fit”需要較低分辨率的陰影看起來質量更高一些,但是需要更多的過濾(軟陰影)來隱藏閃爍,另一方面“stable fit”則需要更高分辨率陰影看起來質量也高一些,但是它不需要太多的過濾,因為它沒有閃爍問題。

網格設置

LOD(細節等級)是管理幾何圖形復雜度非常好的一個工具,當相機遠離某個給定的對象時你可以使用它們來對幾何圖形的詳細程度,這種方式不會使屏幕上的幾何圖形超過一定的數量,而且質量也是足夠的。

注意LOD是移動端優化幾何內容非常好的一種方式,設置更高的LOD這樣較低分辨率的網格就可以被使用了。

下面的截圖展示了如何在質量設置中設置LOD偏差:

注意減少幾何圖形負載會幫助減少計算量,使得器件不至于嚴重發熱同時具有更長的電池壽命。

圖形設置

如果你需要HDR渲染,使用FP16來取代RG11B10會更好,因為它會提供更好的精度和質量。

延遲渲染 vs 前向渲染

對于光設置Unity提供延遲渲染和前向渲染兩個選項,對于使用很多重疊光源的場景,延遲渲染通常會提供更好的性能,然而在移動端前向渲染則會提供更好的性能,因為一些加速延遲渲染的高級功能比如PLS(像素本地存儲)在移動端是不被Unity支持的,對于少量光的場景,前向渲染具有更好的性能因為它的開銷更少,下面的截圖展示了如何在延遲渲染和前向渲染之間進行選擇:

播放器設置

最新的安卓設備(包括PowerVR)都能夠支持Vulkan API,Vulkan真的很好,它能夠讓你減少CPU的負載,并且更好的控制同步操作。它更適合多核CPU,因為它支持向GPU提交多線程命令。

當選擇要使用的API時,Unity會嘗試使用最先進的。然而如果硬件平臺不支持你選擇的API,Unity則會嘗試其他API,從而獲得最廣泛的支持。

如果你選擇使用OpenGL,那么使用多線程渲染可能是個好主意,這個選擇會確保渲染和其他操作在各自獨立的線程下運行,這意味著不同操作會被更好的分配到不同的內核來執行,雖然這不會像Vulkan的多線程命令提交特性那樣好,但是這仍然會大大提升CPU的性能。

著色器

在著色器中對于透明表面可以使用alpha blending取代alpha test/clip()方法,注意alpha test與之前使用的深度測試方法一樣會損壞整體架構。在PowerVR平臺上,底層原語會在片段處理流水線階段之前執行深度寫入操作,這使得PowerVR設備不會覆蓋底層原語的操作,從而節省了大量的計算時間和帶寬。

然而PowerVR的alpha tested/discard原語只有在片段著色器執行完成之后才能夠進行數據寫入緩存操作,這種延遲深度寫入會影響性能,因為直到alpha tested原語完成更新深度緩沖區操作后,后續的原語操作才能夠執行。

在所有的移動架構平臺上,不使用部分色彩遮蓋是有好處的,最好設置為RGBA或者0,如果你使用部分色彩遮蓋,那么之前的數據幀不得不重新讀取,這是由全屏原語操作來執行的,會將它作為紋理來處理,而且這個紋理需要被部分清除,通過提交另一個全屏原語命令來完成。

盡管所有的移動架構平臺都非常擅長于半精度計算,但是PowerVR卻非常的適合,因此一定要盡可能的利用這個特性,相比高精度(FP32),在著色器中使用半精度(FP16)會帶來顯著的性能提升,這主要歸功于專用的FP16積之和(SOP)計算流水線,在每個周期內能夠并行處理兩個SOP操作,理論上使浮點操作的吞吐量增加了一倍,FP16 SOP流水線在大部分PowerVR Rougue圖形內核上都有采用,當然這取決于具體的型號。

清除標志

對于每一幀確保屏幕被清除是非常有必要的,這樣GPU就不需要再從之前的幀緩存中加載圖像內容,使用“solid color”或者“天空盒”清除模式來確保GPU不再從內存中加載之前用過的紋理數據。

在PowerVR平臺上,深度準備操作是一件非常反效率的事情,因為GPU不得不進行兩次深度測試操作來將深度緩存保存到內存中,從而完成清除冗余操作。你可以通過將相機的清除標志設置為“depth only”或者“don’t clear”來確保Unity不會這樣做,我們強烈建議你不要使用這兩種模式。

Mipmaps(紋理映射)

與網格(LOD組)的距離等級(LOD)解決方案類似,紋理的LOD解決方案稱為mipmapping(紋理映射),隨著相機距離的增加mipmapping可以自動降低顯示紋理的分辨率,這會顯著提升緩存效率,提高性能,降低帶寬等,按照下面的截圖來設置mipmaps:

使用mipmaps需要記住的一點是它們只能用于場景內的3D元素,對于2D元素比如UI是1比1映射到屏幕上,因此是不需要的,但是如果它們被縮放那么你可能仍然需要使用mipmaps。

為了確保不同mipmap等級之間的無縫轉換,一定要確保在mipmapped對象上使用三線性過濾,如下圖所示:

網格優化

首先確定你啟用了網格優化選項,這個設置會重新排列頂點和索引從而更好的利用GPU緩存空間,如下面截圖所示:

移動端的內容優化

移動設備本身就有一些特殊的約束限制,它們要確保電池的電量至少能夠使用一天,并且在用戶的手上不會出現嚴重發熱等問題,這意味著將電腦上的游戲移植到移動端時,我們必須要進行內容優化。

首先最重要的幾何復雜度需要優化,現在電腦屏幕上幾何圖形的數量通常在2百萬到3百萬都是可見的,在移動設備上,這個數量一般是20萬到30萬個多邊形,多邊形的數量優化完之后,開發者還需要配置文件并且驗證頂點著色器是否過于的復雜。

其次是紋理分辨率和帶寬的使用,舉個例子,后期處理效果需要進行調整來適應移動端設備,在電腦上GPU內存帶寬是200B/s到300GB/s,在移動設備上可用的內存帶寬是CPU和GPU共享的,大約在20GB/s到30GB/s,盡管這意味著紋理分辨率需要降低一半,但是你也需要考慮到移動屏幕要小的多(電腦屏幕大約20+英寸,移動設備屏幕大約5英寸),所以較小的紋理通常還是足夠的,調整之后還需要進行概要分析從而驗證結果。

總結

正如上文我們所看到的,Unity提供了一系列選項來優化移動端的內容和游戲,這些都可以在PowerVR上得到很好的應用,盡管不會帶來即時的性能提升,但是至少會有效的降低GPU負載,從而節省了電池的電量。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • gpu
    gpu
    +關注

    關注

    27

    文章

    4422

    瀏覽量

    126711
  • powervr
    +關注

    關注

    0

    文章

    98

    瀏覽量

    30946
  • Unity
    +關注

    關注

    0

    文章

    126

    瀏覽量

    21532

原文標題:面向Unity游戲引擎:PowerVR性能建議

文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    開放原子開源大賽—基于OpenHarmony的團結引擎應用開發賽正式啟動!

    “基于OpenHarmony的團結引擎應用開發賽”是開放原子全球開源大賽下開設的新興及應用賽的賽題之一,本次賽題旨在鼓勵更多開發者基于OpenHarmony 4.x版本,使用Unity
    發表于 03-13 10:45

    基于Android平臺怎么為多種移動客戶提供即時通信服務?

    Android 是Google 推出的一個基于Linux 操作系統, 包含底層框架, 中間件和開發環境的一套平臺系統。它支持流行的組件式程序設計, 具有針對移動設備的Dalvik 虛擬機。瀏覽器
    發表于 03-18 07:17

    如何使用PVRTexTool提升移動圖形的效果

    本文作者Ben Anuworakarn 是PowerVR 開發技術團隊的技術作者,具有計算科學工程知識背景。文中,他針對移動游戲畫面的優化
    發表于 01-28 07:02

    Unity3D淺談&Unity5游戲及交互設計

    Unity3D是由丹麥Unity公司開發的游戲開發工具,作為一款跨平臺的游戲開發工具,從一開始就被設計成易于使用的產品。支持包括IOS,AN
    發表于 07-02 06:25

    Unity關鍵項目范圍設置指南

    本指南解釋了Unity提供的關鍵選項,以便您能夠平衡應用程序的圖像質量和性能。 Unity有幾個選項會影響游戲的圖像質量。其中一些選項的計算成本很高,可能會對游戲的性能產生負面影響。其
    發表于 08-02 13:25

    ARM Unity開發者優化指南

    Unity是一個軟件平臺,使您能夠創建和分發2D游戲、3D游戲和其他應用程序。 本書旨在幫助您創建應用程序和內容,最大限度地利用Unity移動平臺,尤其是與馬里的移動平臺? GPU。它
    發表于 08-08 06:37

    Unity中國、Cocos為OpenHarmony游戲生態插上騰飛的翅膀

    研發基礎,并基于對國內科技市場的深度觀察,在Unity引擎的能力之上,針對小游戲和智能汽車領域提供了更深度的技術賦能與效率提速,以期賦予本土用戶更強勁的創作動能。團結引擎致力于滿足中國
    發表于 10-23 16:15

    專家建議:如何靈活進行軟硬件協同開發

    本文是專家建議:如何靈活進行軟硬件協同開發,給出了針對目標不斷變化的情況如何靈活進行應用開發的三
    發表于 11-22 10:45 ?853次閱讀

    Imagination 與 Unity 合作推出光照貼圖工具

    性能。通過這一新的工具,美術設計師能夠在方便、易于使用的工作流程中快速設計并實現先進光線效果的可視化。 PowerVR 光線追蹤技術有助于在 Unity 游戲引擎中創作出
    發表于 02-10 10:19 ?222次閱讀

    實例分析使用Unity3D開發VR游戲

    等頭戴式顯示設備都是可供選擇的對象。但Cardboard的價格低廉,市場占有率更高,用它來作為移動進行開發更為劃算一些。當然,選擇其一并不代表我們舍棄了其它開發平臺的優點,同時
    發表于 10-10 10:38 ?1次下載

    Unity 2018.2是沉浸式內容開發最流行的引擎

    新增加的Unity 2018.2包括優化了輕量級渲染管道(LWRP)和一個增強的高定義渲染管道(HDRP)。LWRP尤其引人注目,因為它有助于為低端硬件提供高性能,這對于在移動平臺上追求性能
    發表于 07-12 17:44 ?2478次閱讀

    怎樣安裝Unity

    Unity是最廣泛使用的游戲引擎之一,它是用于開發適用于所有平臺的游戲,也適用于AR&amp; VR開發。市場上還有其他游戲引擎,例如Unr
    的頭像 發表于 08-01 14:12 ?2751次閱讀

    PowerVR GPU架構的性能優化建議

    最近在看移動GPU優化的時候對TiledBased GPU有一些疑惑,特別是常說的Alpha-Blend比Alpha-Test在移動GPU上快的奇特性質,于是找了powerVR相關的文檔來閱讀,也做個記錄。
    的頭像 發表于 03-15 17:24 ?3208次閱讀
    <b class='flag-5'>PowerVR</b> GPU架構的<b class='flag-5'>性能</b>優化<b class='flag-5'>建議</b>

    Unity 3D引擎制作的憤怒的小鳥游戲

    Unity 3D引擎制作的憤怒的小鳥游戲
    發表于 05-12 09:37 ?2次下載

    Unity游戲引擎有什么用?《糖豆人》PC版勁銷超12億, 難怪這么多人想學!

    手游市場過半游戲都采用Unity引擎開發密不可分,更與開發人員對游戲引擎Unity更多的期許有關
    發表于 06-10 11:50 ?983次閱讀
    <b class='flag-5'>Unity</b>游戲<b class='flag-5'>引擎</b>有什么用?《糖豆人》PC版勁銷超12億, 難怪這么多人想學!
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>