本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~
SRPBatch
支持不同网格+不同材质球,但是需要相同 Shader
1个Batch,多个Drawcall
可以节省 CPU 向GPU 准备的时间
FrameDebug图:
如何开启 SRP Batcher?
SRP的限制是什么?
相对于其他的合批(静态合批、动态合批、GPUInstance),要求很低
- MeshRender(静态网格)不能是蒙皮网格
- Shader 支持 SRP
- 定义 CBuffer 常量缓冲器
- UnityPerMaterial(自定义材质属性) UnityPerDraw(内置相关的)
SRP 原理
流程:CPU 从系统内存里获取数据,提交到 GPU 内存,进行渲染
默认渲染管线下:
提交到GPU内存时,每个都是一个 CBuffer 常量缓冲区,然后一个一个去渲染
URP管线下:
CPU 会分开 从系统获取数据有两个 CBuffer,一个是大的
提交到GPU内存是,会分开 一个是设置引擎内部的属性 一个是设置材质属性(有变化时候才更新)
GPU内 有一个大的 Buffer,有几个Drawcall 就有几个 buffer,还有每个材质的 CBuffer,最后统一的去上传到GPU