我们再来看一下,这是SRP Batcher文档里的一个图。C++的这部分是原来我们在使用SRP管线时藏在引擎内部的,它主要是做右边的Per Object Large buffer。Per Object Large buffer里面包含了Per Object的一些属性 ,比如需要每个Object有不同颜色等,它会组织在这里面。在Entities Graphics里这部分会被替换成高性能的C#代码,这部分代码再通过Batch Renderer Group的API把它送到 Per Object large buffer里,就相当于Batch Renderer Group会帮你组织这个Per Object large buffer,底下绑上材质的属性,绑定到shader上,shader就可以执行了。
左边是不支持SRP Batcher时的工作流程,明显左边更长,右边更短。其实右边还隐藏一个东西,就是红框里的这个Bind with offset Object data from a large CBUFFER,这个large CBUFFER在哪?在这个图里没有显示出来,所以即使使用了SRP Batcher,依然要组织一个大的buffer,而且这个大的buffer是每帧去组织的。