15.DrawCall和Batches及SetPassCalls

  1. 15.DrawCall和Batches及SetPassCalls
    1. 15.1 题目
    2. 15.2 深入解析
      1. Draw Call:
      2. Batches:
      3. SetPass Calls:
      4. 细化说明(Profiler 视角)
    3. 15.3 答题示例
    4. 15.4 关键词联想

15.DrawCall和Batches及SetPassCalls


15.1 题目


Unity中DrawCall、Batches、SetPass Calls的意思是什么?


15.2 深入解析

Draw Call:

Draw Call(绘制调用)表示渲染请求的数量。每个 Draw Call 都会引起一次从 CPU 到 GPU 的数据传输。它直接影响渲染性能,因为它决定了 CPU 和 GPU 之间的通信次数。减少 Draw Call 的数量通常是优化渲染性能的关键之一。可以通过使用批处理技术(Batching)来合并多个物体为一个 Draw Call 来实现。

Batches:

Batches 表示合批后的绘制批次数量(与 Profiler 中「批次」统计一致);通过静态/动态批处理、GPU Instancing 等减少批次,即减少绘制提交与状态切换。

SetPass Calls:

SetPass Calls 表示渲染 Pass(Shader 中的渲染通道)的数量。在移动平台中,尽量减少 Shader 中 Pass 的数量可以提升性能。

在优化 Unity 渲染性能时,需要注意 Draw Call、Batches 和 SetPass Calls 的数量,以及采用相应的优化技术来减少渲染开销,从而提高游戏的性能和流畅度。

细化说明(Profiler 视角)

在 Unity 中,渲染性能常由以下三个指标衡量:

  1. Draw Call

    • 含义:一次 CPU 向 GPU 发起的绘制命令。
    • 影响:每个 Draw Call 都要提交顶点/材质/矩阵等状态,调用越多,CPU–GPU 通信开销越大。
  2. Batches(批次)

    • 含义:Profiler/Stats 中的 Batches 表示合批后实际提交的绘制批次数量,常与「绘制提交次数」在同一量级;静态/动态批处理、Instancing 会把原本多路物体合并为更少批次。

    • 技术

      • 静态批处理(Static Batching):对标记为静态的 Mesh 合并到一个大 Mesh;
      • 动态批处理(Dynamic Batching):在运行时将小网格自动合并;
      • GPU Instancing:同一 Mesh+材质,多实例一次绘制提交。
    • 关系:优化目标是降低 Batches/绘制提交次数;具体指标以当前 Unity 版本 Stats/Profiler 说明为准,不要死记错误不等式。

  3. SetPass Calls

    • 含义:切换 Shader Pass 的次数。每次切换 Pass 都会重设 GPU 渲染状态,因此开销也极大。

    • 优化

      • 减少材质种类/Pass 数量;
      • 合并材质图集;
      • 使用单 Pass Shader 或多通道一次完成;

15.3 答题示例

“在 Unity Profiler 中:

  • Draw Calls 代表 CPU 向 GPU 发起的绘制命令次数;
  • Batches 是把多个对象合并到同一次 Draw Call 的批次数(静态批、动态批、Instancing);
  • SetPass Calls 是切换 Shader Pass 的次数。
    优化时,通过静态/动态批处理、GPU Instancing 合并 Draw Calls,并减少材质与 Pass 数量,才能最大化降低 CPU–GPU 交互开销。”

15.4 关键词联想

  • Draw Call:CPU→GPU 渲染提交
  • Batches:静态批/动态批/Instancing
  • SetPass Call:Shader Pass 切换
  • Static Batching
  • Dynamic Batching
  • GPU Instancing
  • 图集合并
  • Shader 优化
  • 批处理合并
  • CPU–GPU 通信


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

×

喜欢就点赞,疼爱就打赏