Lecture 02 Layered Architecture of Game Engine
渲染只是遊戲引擎中不大的一部分
-
Tool Layer 工具層
這部分不是實時的,所有可以允許多種實現方法(C++/C#開發等等)
-
DCC Digital Content Creation
將不同檔案匯入成Assets·
-
-
Function Layer 功能層
- 每個tick依次做完所有內容
- 多執行緒完成不同系統
- 早期是單核執行
- 後來將不同型別任務分配到不同核
- 當前主流的是將Thread Fork/Join到不同核
- 未來趨勢:將任務打碎成原子稱作Job,比如Unity DOTS的Job System
- 任務之間存在依賴關係
-
Resource Layer 資源層
-
由外部格式轉換成引擎內部的高效格式,這個過程叫import,轉換後的檔案稱為asset
-
composed asset:定義asset之間關係的指令碼
每個asset會有一個唯一識別號guid
-
不同資源有不同生命週期
-
記憶體有限,所以需要儘可能釋放載入的資源
-
關鍵特性:垃圾回收、延遲載入
-
-
Core Layer 核心層
-
要求運算效率
要滿足實時渲染,時間要求苛刻
- SIMD
-
記憶體管理
-
遊戲引擎的主要效能瓶頸
-
記憶體池
-
減少快取未命中
-
記憶體對齊
-
-
Polymorphic Memory Resource (PMR)
- 將資料放在一起
- 按順序訪問資料
- 按塊申請和刪除
-
-
-
Platform Layer 平臺層
-
RHI Render Hardware Interface
重新定義一層Graphics API,將各個SDK封裝起來
-
-
第三方庫
-
總結
- 引擎是分層結構
- 下層需要穩定,絕對的安全、穩定
- 上層需要可客製化,開放、靈活
- 虛擬世界是由ticks組成的