--- title: '效能優化整理' disqus: hackmd --- DC 效能優化整理 == [TOC] ## 地圖物件 - 地格資源效能優化: - 目前的物件 Mesh 頂點少且每個類型共用一張 Material,優化走 Dynamic Batching 較合適 - 規則是不同 Mesh (頂點需300以下) 相同 Material (超過的可拆分) - Render Queue 是判定渲染順序依據,每個類型的 Material 自行定義後,就會分層渲染  - [官方說明](<https://docs.unity3d.com/2022.3/Documentation/Manual/dynamic-batching.html>) - 建築陰影效能優化 - 陰影Texture打包 Unity 原生 Spriteatlas V2 - 統一透過 AtlasLoader 加載 - Spriteatlas 設定 not included in build [官方說明](<https://docs.unity3d.com/ScriptReference/U2D.SpriteAtlasManager-atlasRequested.html >) SD小兵 --- - 使用套件: - Mesh Baker [套件連結](<https://assetstore.unity.com/packages/tools/modeling/mesh-baker-5017/>) - FBX Export [套件連結](<https://docs.unity3d.com/Packages/com.unity.formats.fbx@2.0/manual/index.html>) - AnimMap Baker [套件連結](<https://github.com/chenjd/Render-Crowd-Of-Animated-Characters>) - 作業流程 1. Mesh Baker 合併 Texture 與 Skinned Mesh (移除物件的陰影、設定 Skinned Mesh Type,可使用專案內MeshBaker場景,內建基本設定) a. b. c.建立新的Prefab&Mesh並指定輸出 2. 合併後的 Mesh 使用 FBX Export 存成 FBX  3. 使用 AnimMap Baker 把動作打包成 Animation Texture FBX->Rig->Animation Type 設定為Legacy   4. 調整 Animation Texture 使用的 Material,開啟 GPU Instancing 讓相同 Mesh 與 Material Batch 在一起,並設定 Render Queue 固定值達到分層渲染  - 需修改內容 1. Shader - 原SD小人用的Shader Amplify/Amplify_Toon 整合 AnimMap Baker的Shader AnimMapWithShadowShader 2. 面數 - 賽季後期預期會有大量SD小兵在法典附近行軍 需測試效能 3. Render Queue 整理 - 建立列表清單進行管理 4. 程式控制SD小人動畫邏輯更新 (移除Animator+Animation體系,改為切換Pool GameObject) - 衍生優化 - AnimMap Baker Shader邏輯加上隨機時間軸起點,讓三小支的動畫(Idle,Move,Attack?)隨機亂序 - [實作範例](<https://tedsieblog.wordpress.com/2020/03/24/animation-instancing-a-case-study-of-ten-thousand-units-rendering/>) - 畫面表現上的影響 - SD小人動畫無法CrossFade - DrawCall與多邊形的優化 - 40個原SD小人 - 40個新版小人 UI 系統 --- - 使用動態圖集:https://zhuanlan.zhihu.com/p/367679754 - 程式實作上還要再研究
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up