Anime Shading Plus
Show / Hide Table of Contents

🏎️ 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來說有顯著的提升

Image

Image

關於將不同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

Image

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

  • Edit this page
In this article
Back to top Generated by DocFX