這系列是我之前在EpicGames官方學習路徑「Journey to becoming an Environment Artist in UE4」留下來的筆記,
目錄在此,歡迎參考
最佳化的目的
- 讓遊戲能在目標平台達到目標幀數。
- 維持合理的容量(遊戲的容量主要是受美術影響)
- 保持穩定性
各種方向的最佳化
Polycount(多邊體數量)
一個模型中使用的多邊體的數量,我們也常會聽到Tri count,指的是三角形數量Tri count跟Polyconut是同等的概念,只是計算方式不同。當模型匯入UE,便會自動把Polygon切成Triangle,才可以進行後續的渲染。
針對Polycount最佳化該注意的方向:
- 多邊形和頂點的總數
- 物件與畫面的比例、與攝影機的距離
- 物件在遊戲中重複使用的次數
- 模型會從幾種方向觀察
- 物件的輪廓是否夠完整
Drawcalls(繪製呼叫)
最重要的項目。繪製畫面時需要消耗運算資源的各種工作統稱Drawcall,每個Drawcall包含貼圖、材質等資訊,並會被送到GPU及GPU以進行運算。Drawcall的數量會大幅影響FPS。
簡單來說,畫面上每個物件都會增加Drawcall次數,盡可能控制Drawcall才能維持效能。用不那麼正確的方法來打比方,每個Mesh需要一個Drawcall,即使是一樣的Mesh出現兩次;每個Material都會消耗一個Drawcall。
該注意的方向:
- 場景中用到多少模型
- 畫面中出現了多少種材質
- 可不可以把模型合併成一個(例如一排書的模型可以做成一整個)
LODs
把離攝影機比較遠的模型,(自動)替換成低模
可以用外部3D軟體手動製作低模,也可以在UE中自動生成。方法是在模型的Detail中選擇LOD Group,挑選需要的Preset,然後再逐步調整各種選項。
另外,也可以針對不同的LOD調整Material,例如移除LOD2某些看不到的Material以減少Drawcall