Unity中优化绘制调用整理

DrawCall 指的是 CPU 向 GPU 发送渲染指令的过程,在 Unity 中,每次渲染一个网格时,CPU 都需要向 GPU 发送一系列的渲染指令,这个过程被称为一次绘制调用(Draw Call)。

1.GPU实例化

使用:

2.绘制调用批处理

绘制调用批处理是一种绘制调用优化方法,它组合网格,以便 Unity 可以在更少的绘制调用中渲染它们。Unity 提供两种内置的绘制调用批处理方法:
1.静态批处理:对于静态游戏对象,Unity 会将它们组合在一起并一起渲染。
使用:Unity中的静态合批使用整理-CSDN博客

2.动态批处理:对于足够小的网格,这会在 CPU 上变换它们的顶点,将相似的顶点分组在一起,并在一个绘制调用中渲染它们。
使用:Unity中的动态合批使用整理-CSDN博客

手动组合网格相比,Unity 的内置绘制调用批处理具有多个优势;最值得注意的是,Unity 仍然可以单独剔除网格。但是,它也有一些缺点;静态批处理会产生内存和存储开销,而动态批处理会产生一些 CPU 开销


性能权衡:虽然合批可以减少渲染调用次数,提高性能,但并不是所有情况下都适合合批。例如,频繁移动或改变状态的对象进行动态批处理可能会带来额外的开销,反而降低性能。
光照影响:静态批处理会影响光照计算,因为合批后的对象会被视为一个整体。在使用静态批处理时,需要注意光照烘焙的设置,以确保光照效果符合预期。
Shader 支持:使用的 Shader 必须支持合批。一些复杂的 Shader 可能不支持动态批处理或静态批处理,需要对其进行优化或选择合适的 Shader。

3.使用代码组合网格

手动将多个网格合并为单个网格,Unity 在单个绘制调用中渲染组合网格,而不是每个网格一个绘制调用。在网格靠得很近且彼此不相对移动的情况下,此技术可以很好地替代绘制调用批处理。
注:Unity 无法单独剔除组合的网格。

Unity性能优化---动态网格组合(一)_unity 场景查看网格-CSDN博客

Unity性能优化---动态网格组合(二)_urp 网格材质球-CSDN博客

4.SRP Batcher 

使用:

5.合并材质与纹理

6.优化UI渲染

7.遮挡剔除(Occlusion Culling)​

8.光照与阴影优化

9.LOD(Level of Detail)​

10.Shader优化

未完待续。。。

 参考链接:

Optimizing draw calls - Unity 手册

你可能感兴趣的:(游戏优化,unity,游戏引擎)