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组成的