# 渲染模块

渲染模块是整个框架最重要的部分,正是这一部分体现了小游戏框架对传统小游戏方案的性能优势,这也是小游戏框架足以支撑中大型MMO在小游戏环境运行的根基。

由于渲染体系的复杂性,所以整个渲染系统被划分为了几个部分:

# 资源

资源可以认为是渲染的数据来源,它们记录着渲染需要的顶点信息、渲染状态、缓冲等等,我们将这些资源抽象成了以下体系来进行组织:

  1. 网格:用于管理顶点、索引数据以及描述符。
  2. 缓冲区块:用于管理缓冲数据,比如各种矩阵。
  3. 贴图:用于存储图像数据。
  4. 渲染画布:用于提供一个画布,使得相机可以绘制在其上,并作为贴图使用。
  5. 着色器:着色器直接决定了顶点数据和像素如何被实际渲染处理,由效果管理。
  6. 效果和材质:效果描述了一系列着色器和渲染状态的集合,材质以效果作为模板,用于决定物体最终该如何被绘制。

# 渲染器

渲染器Renderer用于将上面的资源组装起来,为渲染做好准备,方案已经内置了一些常见渲染器:

  1. MeshRenderer:基础网格渲染器,用于渲染静态模型。
  2. SkinnedMeshRenderer:蒙皮网格渲染器,用于渲染带骨骼的蒙皮模型。
  3. LineRenderer:线段渲染器,用于渲染线段。
  4. TrailRenderer:拖尾渲染器,用于渲染拖尾效果。

另外粒子系统也可以认为是一个渲染器为核心构建的。

# 场景和摄像机

将很多个渲染器挂在到节点上组装到一起,便构成了基础的场景,而摄像机则提供不同的投影方式,作为玩家观察这个场景的入口:

  1. 场景
  2. 摄像机

# 光照、阴影和雾效

为了让渲染更加真实,场景中还需要加入光照,光照可以产生阴影,除了实时阴影外也有光照贴图可以预计算,此外雾效也可以让真实度更上一层楼。

  1. 光源
  2. 光照模型
  3. 阴影
  4. 光照贴图
  5. 天空盒与环境光
  6. 雾效

# 渲染系统

有了上面各个子模块的支持,还需要一个全局的管理体系将这一切串起来,达到最终的渲染效果,这就是“渲染系统”。渲染系统有一些全局的配置,并使用渲染图Render Graph来管理整个渲染过程,也直接提供了开放定制的能力,供开发者定制属于自己的渲染管线,目前系统内部集成了一个Forward Add渲染管线。

  1. 渲染系统
  2. 渲染图
  3. 内建节点
  4. 内建管线
  5. 深入管线

# 后处理

基于渲染图小游戏框架还提供了后处理系统,并提供了一个资源进行简易的使用。

  1. 后处理系统
  2. 后处理节点
  3. 后处理资源

# 优化

在基础功能之上,小游戏框架还提供了一些方案来让开发者定制性地对渲染进行优化,以此达到CPU和GPU性能之间的平衡。

  1. GPU实例化
  2. 合批