Unity优化

Unity渲染流程

一次渲染批次Batch: 设置渲染状态 (材质, 顶点信息等),调用DrawCall

场景中有不同的Mesh对象 使用不同的材质 它们分别进行渲染设置并调用DrawCall

  1. 正常状态下 用最基础的光照或者无光照的Shader 渲染一个Mesh 一次DrawCall
  2. 如果多了实时光源 那就是两个DrawCall
  3. 实时阴影的开启 会影响DrawCall(阴影投射 接受阴影)增加2-4个DrawCall
  4. 如果场景中增加相机 增加了渲染次数 DrawCall也会提升

合并批处理

合批的优化在于 在多个不同的Mesh使用相当材质时 引擎将模型顶点合并 形成一个大的新网格 一次传递给GPU

之后在对每个子模型分别调用DrawCall进行绘制

因此合批将多个相同材质的Mesh 作为一个Batch进行渲染 不会降低DrawCall 而是减少渲染批次

多Pass的Mesh会被渲染多次 每一个Pass进行一次批次的渲染(多Pass渲染的Mesh不会参与到合批)

在相机的照射范围内有m个Mesh 每个Mesh执行n个Pass 那么产生的batches时m*n

正常情况下GPU运行一个Pass之前回产生一个SetPassCall

注意事项

只有场景中不存在相机 DrawCall才能真正将为0

上一篇
下一篇