参考链接:
https://docs.unity3d.com/Manual/DrawCallBatching.html
原理:
cpu每帧把可以进行动态批处理的网格进行合并,再把合并后的数据传给gpu,使用同一个材质对其渲染
条件限制:
1.
要求mesh不能超过900个顶点属性,同时不能超过300个顶点
如果shader用到了Vertex Position, Normal and single UV,那么不能超过300个顶点
如果shader用到了Vertex Position, Normal, UV0, UV1 and Tangent,那么不能超过180个顶点
如下,Cube可以被批处理,Sphere不可以被批处理(单个Sphere顶点数>500)
2.
transform的scale属性不能有负值
如下,图一均为(1,1,1),图二将其中一个改为(1,-0.1,1)
3.
使用不同的材质会破坏批处理
4.
多个pass的shader会破坏批处理
如下,Cube使用的是默认材质Default-Material,对应shader为内置的Standard,是一个有多个pass的shader。图一使用平行光,图二使用点光源
分类:
Unity优化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?