Lecture 02 Layered Architecture of Game Engine

news/2024/10/3 4:42:06

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/55332.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Lecture 03 How to build a Game World

Lecture 03 How to build a Game World Everything is a Game Object (GO)面向对象的方式 有些GO之间并没有清晰的继承关系Unreal中的UObject、Unity中的Object并不是这里讲的GameObject概念,而是更类似如C#中的Object,用于确定任何对象的生命周期需要的句柄 Unreal中的Game…

Lecture 13 Real-time Ray Tracing 2

Lecture 13 Real-Time Ray Tracing 2 Implementing a spatial filter 这里想做的是低通滤波移除高频信号会不会丢失高频中的信息? 噪声不一定只在高频中集中在频域 这些filtering可以应用在PCSS、SSR上的降噪用$$\widetilde C$$表示有noise的图像 \[K$$表示滤波核kernel,比如…

Lecture 10 11 Real-time Physically-based Materials (surface model)

Lecture 10 Real-time Physically-based Materials (surface models and cont.) PBR and PBR MaterialsPhysically-Based Rendering (PBR) 基于物理的渲染渲染内的任何事都应该是PBR的材质、光照、相机、光线传播等等不限于材质,但常常指材质PBR materials in RTR实时渲染中材…

Lecture 12 Real-time Ray Tracing

Lecture 12 Real-Time Ray Tracing Basic ideasample per pixel PPS 1 SPP path tracing = $$\downarrow$$camera出发打到求出第一个交点(像素上看到的点),这一步是primary ray(工业上实际用rasterization)工业上这一步有一个技巧 将这一步改为光栅化 因为每个像素都要从c…

gcc/g++编译ZR

编译工具链我们写程序的时候用的都是集成开发环境 (IDE: Integrated Development Environment),集成开发环境可以极大地方便我们程序员编写程序,但是配置起来也相对麻烦。在 Linux 环境下,我们用的是编译工具链,又叫软件开发工具包(SDK:Software Development Kit)。Linux 环…

一种优雅的方式整合限流、幂等、防盗刷

大家在工作中肯定遇到过接口被人狂刷的经历,就算没有经历过,在接口开发的过程中,我们也需要对那些容易被刷的接口或者和会消耗公司金钱相关的接口增加防盗刷功能。例如,发送短信接口以及发送邮件等接口,我看了国内很多产品的短信登录接口,基本上都是做了防盗刷,如果不做…

Lecture 06 Real-time Environment Mapping (Precomputed Radiance Transfer)

Lecture 06 Real-time Environment Mapping (Precomputed Radiance Transfer) Shadow from environment lighting通常情况下要实时渲染非常困难 在不同观察方向上As a many-light problem: Cost of Shadow Map is linearly to #light As a sampling problem: Visibility项V会变…

Lecture 07 Real-time Global Illumination (in 3D)

Lecture 07 Real-time Global Illumination (in 3D) 实时渲染中全局光照一般只bounce两次(直接光照bounce一次,间接光照bounce两次)primary light source 真正的光源secondary light source 次级光源: 一切被直接光照照到的物体都会继续将自己作为光源想要用间接光照照亮\(…