網格最佳化中,你遇到過哪些吃效能的設定?

侑虎科技發表於2020-10-16

節前,我們已經將【效能黑榜】上的Top10規則均做了詳細的解讀(可戳文末相關連結回顧)。無論是大家在開發時的疏忽,還是相關知識點的缺失,這些問題的積累最終都會反映到專案的效能表現上。為此,我們將這些規則曝光出來,並且以一個個知識點的形式逐一解讀。

今天,我們來繼續剖析【UWA本地資源檢測】中和網格設定相關的規則:“包含Color屬性的網格”,“未開啟OptimizeMesh選項的網格”,“包含Tangent屬性的網格”和“包含uv3或uv4屬性的網格”。我們將力圖以淺顯易懂的表達,讓職場萌新或優化萌新深入理解。


1、包含Color屬性的網格

網格最佳化中,你遇到過哪些吃效能的設定?

在一些建模軟體中匯出的模型可能會帶有頂點的顏色屬性,在Unity中即表現為Mesh的Colors屬性。有些Shader可以使用這個屬性進行運算與著色,如Sprites Shader。然而大多數Shader都選擇忽略Colors屬性(Unity標準著色器就不使用這個屬性)。在這種情況下,如果Mesh帶有Colors屬性,那麼對其本身而言沒有實際意義,卻會對記憶體、物理體積和載入效能造成影響。

所以本條規則會針對Mesh的Colors屬性進行檢測,以供開發團隊根據實際使用需求去除不必要的Colors屬性。

在此大家可以參考一下UWA問答中一位熱心朋友提供的批量去除網格color屬性的工具:https://answer.uwa4d.com/question/5a8f77970b827e2c0bfdcfaf


2、未開啟OptimizeMesh選項的網格

網格最佳化中,你遇到過哪些吃效能的設定?

在模型方向上的網格應用是極為普遍的,在專案的效能開銷上也佔有很大的比重。所以對模型網格的優化也一直是首先考慮的重點。但很多情況下,對模型網格進行調優意味著需要對原有的設計與資源等進行大刀闊斧的改動,從而使得很多開發團隊往往因為難以找到切入點而一籌莫展。

所以Unity為我們提供了一個優化選項:OptimizeMesh。

網格最佳化中,你遇到過哪些吃效能的設定?

Optimize Mesh是模型的Import Settings當中的選項。在開啟狀態下,網格的頂點或三角形會按照引擎本身既定的一套規則重新排序,從而使其對於GPU來說在運算時能有較好的效能。理論上如果模型對頂點和麵片順序沒有要求的話,Optimize Mesh的開啟就不會導致顯示問題。

所以UWA設定了這條檢測規則,以方便開發團隊找到這些未開啟OptimizeMesh選項的網格並進行相關的設定優化。


3、包含Tangent屬性的網格

網格最佳化中,你遇到過哪些吃效能的設定?

本條規則,其實和上述的“包含Color屬性的網格”那條規則的著眼點是一樣的。Tangent是網格中頂點的屬性中的一項。很多情況下我們的Shader不需要使用這項屬性,會造成記憶體上的浪費。

舉個例子,如果專案中使用了Normalmap,那麼就需要在Shader裡面計算區域性的切空間,這種情況下就會用到網格的Tangent屬性。

除此之外,如果不用Normalmap,一般來講網格的Tangent屬性都是不會被使用到的。所以本條規則會遍歷出包含Tangent屬性的網格,開發團隊在確認不會有相關的使用需求後,就可以在FBX的匯入設定中取消Tangent屬性的匯入。


4、包含uv3或uv4屬性的網格

網格最佳化中,你遇到過哪些吃效能的設定?

uv座標又稱為紋理對映座標(texture-mapping coordinates),對應於每個頂點,用於確立模型表面的各個頂點的顏色取樣與紋理上具體位置的對應關係。通俗來講就是將一張圖貼在模型表面,使得我們可以從“紋理”這塊調色盤上找到正確的顏色,來繪製模型。

Unity一共支援4套uv,在c#API中分別叫uv、uv2、uv3和uv4。通常來說(使用c# API中的命名),uv用於主紋理,uv2用於光照貼圖(Lightmap)的取樣,uv3用於實時動態光照,uv4可進行自定義。

uv2可以在建模軟體中新增,也可以在Unity中通過Generate Lightmap UVs的選項來生成。如果在建模軟體中只做了一套uv,將模型匯入Unity的時候,在匯入設定中勾選Generate Lightmap UVs,Unity會自動為我們生成用於光照貼圖的uv2。uv3和uv4的使用較為少見,通常是用來配合特殊的Shader實現特殊的效果。

去除不必要的uv3、uv4屬性可以有效降低模型所佔空間資源,所以UWA用本條規則找出包含uv3或uv4的網格,由開發團隊根據網格的實際使用需求和表現效果的平衡考量,去對網格的uv屬性做減法。

需要說明的是,每一項檢測規則的閾值都可以由開發團隊依據自身專案的實際需求去設定合適的閾值範圍,這也是本地資源檢測的一大特點。同時,也歡迎大家來使用UWA推出的本地資源檢測服務,可幫助大家儘早對專案建立科學的美術規範

網格最佳化中,你遇到過哪些吃效能的設定?

效能黑榜相關閱讀

《那些年給效能埋過的坑,你跳了嗎?》
《那些年給效能埋過的坑,你跳了嗎?(第二彈)》
《掌握了這些規則,你已經戰勝了80%的對手!》

相關文章