Static Batching、GPU Instancing、SRP Batcher 的原理、区别与实战选择
前言
在现代 Unity 项目中,Draw Call 优化已经不是简单的“减少 Batches”这么简单。
尤其是在:
-
URP
-
HDRP
-
高端 PC
-
主机平台
中,真正影响性能的往往已经从:
Draw Call 数量
转向:
CPU Shader 状态切换
GPU 光照压力
带宽与后处理
因此:
-
Static Batching
-
GPU Instancing
-
SRP Batcher
三者虽然都与“渲染优化”有关,但它们的目标、原理、适用场景完全不同。
本文会从:
-
原理
-
使用条件
-
优缺点
-
适用场景
-
HDRP/URP 现代工作流
-
真正项目中的选择建议
完整讲清楚。
一、什么是 Draw Call?
在 GPU 渲染中:
CPU 每次告诉 GPU:
“请绘制一个模型”
这就是一次:
Draw Call
例如:
Draw Cube
Draw Sphere
Draw Capsule
每次 Draw:
CPU 都需要:
-
切换材质
-
上传参数
-
设置 Shader
-
更新 Constant Buffer
因此:
大量 Draw Call 会导致:
-
CPU Rendering Time 增加
-
SetPass Calls 增加
-
Render Thread 压力增大
二、Static Batching(静态批处理)
1. 核心原理
Static Batching:
CPU 在加载阶段把多个静态模型合并成一个大 Mesh
例如:
原始:
Tree1
Tree2
Tree3
合并后:
CombinedMesh
之后:
GPU 只需要一次 Draw。
2. 使用条件
必须满足:
(1)物体为 Static
Inspector:
Static → Batching Static
(2)材质相同
必须:
-
<


7337

被折叠的 条评论
为什么被折叠?



