GAMES104 Lecture 02 Layered Architecture of Game Engine

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组成的
posted @ 2024-09-01 14:18  Telluluu  阅读(4)  评论(0编辑  收藏  举报