🏎️ Unity中優化效能的方法
以下方法能”有限度”的優化GPU效能
減少材質球內使用的功能/貼圖數
減少edge detection的種類
以下方法可以大幅度的優化CPU與GPU
減少skinned mesh的頂點數/頂點資訊
對skinned mesh設定LOD
開啟GPU Skinning(在非GPU-Bound的情況下)
合併同一角色中不同的material,減少skinned mesh renderer與material的總數
Skinned Mesh LOD範例
以下為一個CPU skinning(Unity預設)的專案,在場景上放15個人物(每個人物模型面數為19000),
Runtime FPS大約為85
使用三層LOD後,FPS大約為120,可以看到對CPU來說有顯著的提升


關於將不同LOD的mesh綁定至同一個人物骨架的方法,可以參考
Reuse skeletons for Unity LODGroup
In this holiday themed blog post we'll showcase how to reuse skeletons for different LOD levels in Unity. As an extra spice we will also throw in Bone Reduction for our last LOD level.
GPU Skinning
Unity有提供GPU Skinning的功能,透過將skinning的計算從CPU轉移到GPU的compute shader內做計算,如果目標硬體/平台是有獨立的GPU(顯示卡),專案本身又沒有GPU bound的話,這一選項也可以大幅度的提升速度。
使用三層LOD + 開啟GPU Skinning -效能進步到大約200FPS

💡 本頁測試的硬體為 -
CPU : Ryzen 7 5800H
GPU : RTX 3060 Laptop