網格最佳化:潰堤之穴,一個也不能放過
在之前的《網格優化中,你遇到過哪些吃效能的設定》一文中,我們簡單講解了在專案開發過程中容易被忽略的網格相關的屬性設定。無論是大家在開發時的疏忽,還是相關知識點的缺失,這些問題的積累最終都會反映到專案的效能表現上。為此,我們將這些規則列出,並且以一個個知識點的形式逐一解讀。
今天,我們來繼續剖析【UWA本地資源檢測】中和網格設定相關的規則:“Normal屬性的網格”,“開啟Read/Write選項的網格”和“蒙皮網格骨骼數過大”。我們將力圖以淺顯易懂的表達,讓職場萌新或優化萌新深入理解。
1、包含Normal屬性的網格
本條規則針對的是網格的Normal屬性。在實際運用中,如果網格涉及到了光照、陰影等的應用與計算,那麼就需要在網格中匯入Normal屬性,以達到更好的例如高光、漫反射等表現效果。
和前文講述的網格Tangent屬性類似,Normal屬性匯入後會對空間和載入效能造成影響。所以在不需要的情況下,我們最好去除網格資源冗餘的Normal屬性。
2、開啟Read/Write選項的網格
如同Tips裡面指出的,Read/Write 選項啟用後,將會允許CPU對網格的頂點、三角形等屬性進行讀寫,這就需要在記憶體中產生網格資料的副本,便於對網格進行實時的編輯和修改,用來達成例如某些網格的動態效果的展示。下圖所展示的Demo就在Runtime使用指令碼對Mesh屬性進行了動態地修改:
開啟Read/Write後,一個網格資料就會有接近2倍的記憶體消耗。不需要進行動態編輯和修改的網格一旦開啟了Read/Write選項,就會產生不必要的記憶體開銷。
本條規則會篩選出所有開啟了Read/Write選項的網格,以供開發團隊進行相應的選項關閉和優化。需要提醒的是,對於需要呼叫函式StaticBatchingUtility.Combine進行合批的Mesh,以及部分Unity版本中粒子系統裡使用到的Mesh,它們的Read/Write選項依然需要保持開啟。
UWA曾對網格資源進行過相關的深度解析和對比測試,大家可以參考一下相關的文章:《Unity載入模組深度解析(網格篇)》
3、蒙皮網格骨骼數過大
對於帶有SkinnedMeshRenderer的模型,UWA本地資源檢測會掃描其繫結的骨骼。
如果模型的骨骼數量較大,那麼在執行時會有較高的效能開銷,從而對整體的專案效能造成影響。對於該規則目前UWA給的推薦閾值為50,我們建議研發團隊對模型的骨骼數進行限制,將該類美術資源的效能開銷控制在一個合理的範圍內。
需要說明的是,每一項檢測規則的閾值都可以由開發團隊依據自身專案的實際需求去設定合適的閾值範圍,這也是本地資源檢測的一大特點。同時,也歡迎大家來使用UWA推出的本地資源檢測服務,可幫助大家儘早對專案建立科學的美術規範。
萬行程式碼屹立不倒,全靠基礎掌握得好!
效能黑榜相關閱讀
《那些年給效能埋過的坑,你跳了嗎?》
《那些年給效能埋過的坑,你跳了嗎?(第二彈)》
《掌握了這些規則,你已經戰勝了80%的對手!》
相關文章
- 千里之堤潰於蟻穴,質量問題警鐘長鳴
- 千里之堤毀於“蟻穴”,堵住這些經營管理上的“蟲眼”,“企業主”勢在必行
- Android 高質量開發之崩潰最佳化Android
- 無所不能的人工智慧也會被一張圖片騙過?人工智慧
- 網格最佳化中,你遇到過哪些吃效能的設定?
- 一個空間可以放幾個網站嗎網站
- 為什麼你不能錯過《塞爾達傳說:荒野之息》的開放世界
- 我的if else程式碼純淨無暇,一個字也不能簡化
- 不能錯過春天,也不能錯過你 | 綠盟科技CISP培訓3月特惠暖心活動
- 我也來曬一曬部落格
- 華之央 - 一個文藝的程式設計師的個人部落格網站程式設計師網站
- 一個有趣的過程movq%rcx,%gs:0x80000000不能通過編譯編譯
- 一個不相容的 JS 方法,讓你的網站發生崩潰JS網站
- 擁有各種商品主圖模板,這個設計素材網站不能錯過!網站
- 也談如何寫一個Webserver(-)WebServer
- 一天伺服器到底能放多少個網站呢?伺服器網站
- 使用 github 和 Deno Deploy 搭建一個部落格網站Github網站
- 如何設定一個嚴格30分鐘過期的SessionSession
- 融雲辦政事: “小網格”也能實現“大治理”
- 記一次VMware的崩潰除錯分析過程除錯
- 你可能也罵過這兩個面試題!面試題
- Spring Security配置個過濾器也這麼卷Spring過濾器
- 第一個部落格
- 分享一個部落格
- [需求建議]這個網站的使用者中心風格能不能提供下載呢?網站
- 6個程式設計實戰網站,想學程式設計的你不能錯過!程式設計網站
- 最近幾個SQL最佳化案例(水一波部落格,當段子看😼😼)SQL
- 如何透過最佳化網站提高網頁開啟速度網站網頁
- 通過Webkit遠端除錯協議監聽網頁崩潰WebKit除錯協議網頁
- 我也來扔一個Promise吧……Promise
- 也談如何寫一個Webserver(三)WebServer
- 從零搭建一個基於Istio的服務網格
- ThinkerBlog個人部落格網站網站
- 記一次線上崩潰問題的排查過程
- 服務網格service mesh 之 Linkerd
- 一份不能錯過的 Docker 實踐指南Docker
- 分享一個開發中捕獲崩潰的庫
- MySQL 崩潰恢復過程分析MySql