幫你把關 Shader 變體問題!UWA 本地資源檢測又更新!

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

UWA本地資源檢測最近動作頻頻,應廣大使用者要求,我們在最新的1.2.0版本中增加了Shader Analyzer功能模組,同時還新增了若干條資源相關規則,下文我們就來詳細說明。

幫你把關 Shader 變體問題!UWA 本地資源檢測又更新!


一、新增Shader Analyzer 功能模組

Shader Analyzer模組的主要功能有兩點:

1.專案Shader指令碼掃描分析(支援任意版本的Unity)
掃描專案中的Shader指令碼,分別統計shader_feature和multi_compiler類的區域性和全域性關鍵字個數,根據專案中Material上開啟的關鍵字情況計算可能生成的變體數。
該功能對應的規則有2條:

  • 專案中可能生成變體數過多的Shader
  • 專案中全域性關鍵字過多的Shader

2.模擬Build變體分析(支援Unity 2018.2及以上的版本)
自動按照使用者的配置進行模擬build,統計build出來的Shader名稱、變體數和關鍵字個數。該功能對應的規則為:

  • Build後:生成變體數過多的Shader

需要說明的是,自動Build功能會預設按照使用者當前的配置自動進行,並且Shader Analyzer的Build操作是單純用於統計Shader變體資訊的“模擬Build”,為了加快統計效率,省去了Shader指令碼編譯的過程,Build結果不可實際使用。

若研發團隊想自定義Build設定,也可在本地資源檢測外掛包中的指令碼UwaProjScanLauncher.cs中修改以下函式。Shader Analyzer會按照該函式設定的方案進行模擬Build。

幫你把關 Shader 變體問題!UWA 本地資源檢測又更新!

此外,本地資源檢測的舊規則“紋理取樣數過多的Shader”被納入Shader Analyzer模組。


二、新增三條檢測規則

名稱及描述如下:
1、使用了Standard Shader的材質球
Standard Shader可能生成非常多的變體,雖然Shader指令碼本身佔用的記憶體小,但其載入耗時會非常高,ShaderLab記憶體佔用也比較高,不建議大家直接在專案中使用。

2、開啟各向異性過濾的紋理
對紋理進行各向異性過濾對於地面等物體的顯示會有增益,但同時會帶來較高的效能開銷,建議排查。

3、開啟Prewarm的粒子系統
粒子系統的Prewarm操作會在使用時的第一幀中造成相對集中的CPU耗時,很可能會造成執行時區域性卡頓,建議考慮是否確實需要開啟該選項,如果可以不用則將其關閉。

建議大家及時更新到最新版本(1.2.0),體驗新功能喔!對於這些檢測的知識點補充,我們將在日後的微信文章中詳述,歡迎大家關注。已釋出的檢測規則知識點,我們也將持續更新。

《動畫優化:關於AnimationClip的三兩事》
《材質優化:如何正確處理紋理和材質的關係》
《紋理優化:讓你的紋理也“瘦”下來》
《紋理優化:不僅僅是一張圖片那麼簡單》

萬行程式碼屹立不倒,全靠基礎掌握得好!

效能黑榜相關閱讀

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

相關文章