Unity中SRP Batcher使用整理
SRP Batcher 是一种绘制调用优化,可显著提高使用 SRP 的应用程序的性能,SRP Batcher 减少了Unity为使用相同着色器变体的材质准备和调度绘制调用所需的CPU 时间。
工作原理:
传统优化方法通过减少绘制调用次数提升性能,而SRP Batcher的核心理念在于降低绘制调用间的渲染状态切换开销。其核心机制是将bind draw和GPU命令序列打包为SRP批处理单元,通过批量处理渲染状态变更实现性能优化。流程图如下:
注:bind 和 draw 命令的批处理减少了绘制调用之间的 GPU 设置。
核心优化机制:
1.CPU 仅处理 Unity 引擎属性。
2.专用代码路径更新一个大型的存储每个对象所有属性的GPU 常量缓冲区(下图中标记为 Per Object large buffer)。
3.所有材质内容都保留在 GPU 内存中的持久常量缓冲区中。
注:
1.为了实现渲染的最佳性能,每个 SRP 批处理应包含尽可能多的bind draw 和 GPU命令 。
2.使用尽可能少