# 渲染模块
渲染模块是整个框架最重要的部分,正是这一部分体现了小游戏框架对传统小游戏方案的性能优势,这也是小游戏框架足以支撑中大型MMO在小游戏环境运行的根基。
由于渲染体系的复杂性,所以整个渲染系统被划分为了几个部分:
# 资源
资源可以认为是渲染的数据来源,它们记录着渲染需要的顶点信息、渲染状态、缓冲等等,我们将这些资源抽象成了以下体系来进行组织:
- 网格:用于管理顶点、索引数据以及描述符。
- 缓冲区块:用于管理缓冲数据,比如各种矩阵。
- 贴图:用于存储图像数据。
- 渲染画布:用于提供一个画布,使得相机可以绘制在其上,并作为贴图使用。
- 着色器:着色器直接决定了顶点数据和像素如何被实际渲染处理,由效果管理。
- 效果和材质:效果描述了一系列着色器和渲染状态的集合,材质以效果作为模板,用于决定物体最终该如何被绘制。
# 渲染器
渲染器Renderer
用于将上面的资源组装起来,为渲染做好准备,方案已经内置了一些常见渲染器:
- MeshRenderer:基础网格渲染器,用于渲染静态模型。
- SkinnedMeshRenderer:蒙皮网格渲染器,用于渲染带骨骼的蒙皮模型。
- LineRenderer:线段渲染器,用于渲染线段。
- TrailRenderer:拖尾渲染器,用于渲染拖尾效果。
另外粒子系统也可以认为是一个渲染器为核心构建的。
# 场景和摄像机
将很多个渲染器挂在到节点上组装到一起,便构成了基础的场景,而摄像机则提供不同的投影方式,作为玩家观察这个场景的入口:
# 光照、阴影和雾效
为了让渲染更加真实,场景中还需要加入光照,光照可以产生阴影,除了实时阴影外也有光照贴图可以预计算,此外雾效也可以让真实度更上一层楼。
# 渲染系统
有了上面各个子模块的支持,还需要一个全局的管理体系将这一切串起来,达到最终的渲染效果,这就是“渲染系统”。渲染系统有一些全局的配置,并使用渲染图Render Graph来管理整个渲染过程,也直接提供了开放定制的能力,供开发者定制属于自己的渲染管线,目前系统内部集成了一个Forward Add渲染管线。
# 后处理
基于渲染图小游戏框架还提供了后处理系统,并提供了一个资源进行简易的使用。
# 优化
在基础功能之上,小游戏框架还提供了一些方案来让开发者定制性地对渲染进行优化,以此达到CPU和GPU性能之间的平衡。