34.动态批处理的限制条件

  1. 34.动态批处理的限制条件
    1. 34.1 题目
    2. 34.2 深入解析
      1. 常见限制条件(面试至少答三条)
      2. 面试收尾可补一句
    3. 34.3 答题示例
    4. 34.4 关键词联想

34.动态批处理的限制条件


34.1 题目

Unity 动态批处理有哪些限制条件?请至少说出三点。


34.2 深入解析

动态批处理在做什么:在 CPU 上把多个同材质、同 Pass 的小网格顶点拼成一批再画,从而减少 DrawCall。代价是 CPU 要先合顶点,所以限制多;顶点数等阈值随 Unity 版本会变以当前文档为准

常见限制条件(面试至少答三条)

  1. 顶点数与顶点属性总量
    单 Mesh 顶点数有上限(常见讨论:Unity 2021 前后300 / 225 等说法,以文档为准)。此外,顶点属性(位置、法线、切线、UV、顶点色等)折算后的通道总和也有上限(教材里常出现 900 这一量级作为讨论参考),超过则不参与动态批处理。

  2. 材质必须一致
    通常要求同一材质实例或引擎认定为可批的相同配置;材质或关键字一变,批次就拆开。

  3. 变换不能带「镜像」式负缩放
    例如缩放 (-1, 1, 1) 会破坏动态批处理条件(法线、绕序等与批处理假设冲突)。

  4. SkinnedMeshRenderer(蒙皮网格)
    传统动态批处理不参与蒙皮网格这类对象(有独立渲染路径)。

  5. 多 Pass、光照贴图索引不一致、每顶点动画等
    多 Pass Shader、顶点位置偏移、不同 Lightmap 索引等,都会导致批次打断或无法合并。

面试收尾可补一句

动态批在 CPU 上合顶点,本身也有成本;很多项目更依赖 SRP Batcher、GPU Instancing、静态批处理 等路径,动态批只是手段之一。


34.3 答题示例

动态批限制多,面试至少答三条就行,常考的有这些:

一,顶点数和顶点属性总量要在引擎允许范围内——版本不同数字会变,常见会提到 225、300、属性 900 这类量级,以当前文档为准,超了就不批。

二,一般要同一材质实例,材质或 Shader 关键字不一致就拆开画。

三,变换别带负轴镜像,比如 (-1,1,1),会破坏条件。

四可补充:SkinnedMesh 通常不参与;多 Pass、光照贴图索引不一致也会打断。

收尾可补一句:动态批是 CPU 上合顶点,本身有成本,项目里常还要配 SRP Batcher、GPU Instancing。


34.4 关键词联想

  • 顶点数与属性上限
  • 同材质 / 镜像缩放
  • SkinnedMesh / 多 Pass
  • SRP Batcher 与 Instancing


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏