【Unity笔记】Unity 模型渲染优化:从 Batching 到 GI 设置的完整指南
本篇为笔记存档,仅供备忘。
Unity 模型渲染优化:从 Batching 到 GI 设置的完整指南
在 Unity 开发中,如果复制了大量模型,往往会遇到 Batching 数过高、阴影开销大、全局光照计算复杂 等问题,导致帧率下降,尤其是在移动端和 VR 场景中。本文梳理 Unity 中几个关键渲染相关选项的原理与优化方法,备忘一下。
优化前统计信息:
优化后统计信息:
文章目录
- Unity 模型渲染优化:从 Batching 到 GI 设置的完整指南
- 一、Batching 问题与优化策略
- 1.1 Static/Dynamic Batching
- 1.2 GPU Instancing
- 1.3 SRP Batcher
- 1.4 Mesh 合并与骨骼优化
- 二、Cast Shadows(投射阴影)设置
- 2.1 四种模式
- 2.2 优化建议
- 三、Contribute Global Illumination(参与全局光照)
- 3.1 启用时
- 3.2 禁用时
- 3.3 优化建议
- 四、整体优化流程建议
- 五、总结
一、Batching 问题与优化策略
1.1 Static/Dynamic Batching
- 静态 Batching:适合完全不移动的物体(建筑、环境),通过合并网格减少 Draw Call。人物模型会移动,因此不适用。
- 动态 Batching:适合顶点数小于 300 的动态物体,且材质一致。大部分 SkinnedMeshRenderer 的人物模型顶点数过高,无法生效。
结论:人物模型的 Batching 不能依赖 Unity 内置机制,而应选择 GPU Instancing 或 SRP Batcher。
1.2 GPU Instancing
- 在材质中勾选 Enable GPU Instancing,让相同 Mesh+材质的多个实例共享一次 Draw Call。
- 使用
MaterialPropertyBlock
修改颜色/参数,不必复制材质。 - 适合静态网格,但 SkinnedMeshRenderer 不支持直接 Instancing。
1.3 SRP Batcher
- URP/HDRP 提供的 CPU 优化方案,减少 Draw Call 提交开销。
- 注意:不会降低 Batches 数量,而是降低 CPU 渲染指令的消耗。
- Shader 必须兼容
CBUFFER_START(UnityPerMaterial)
,否则无效。 - 可在 Render Pipeline Asset → Advanced → SRP Batcher 中开启。
1.4 Mesh 合并与骨骼优化
- 将人物的身体和装备尽可能合并为一个 SkinnedMeshRenderer。
- 使用 GPU Skinning 或第三方插件(如 MeshAnimator)优化大规模骨骼计算。
- 对远处角色使用 LOD 或 Billboard 替代高模。
二、Cast Shadows(投射阴影)设置
MeshRenderer → Lighting → Cast Shadows
决定物体的阴影渲染方式。
2.1 四种模式
- On:物体可见且投射阴影(默认,性能开销大)。
- Off:不投射阴影,性能最佳。
- Shadows Only:物体不可见但仍会产生阴影,适合隐形遮挡物。
- Two Sided:双面阴影,适合树叶/布料,但性能更差。
2.2 优化建议
- 近处主角:开启阴影(On)。
- 远处 NPC:关闭(Off)或只保留烘焙阴影。
- 植被/草/粒子:关闭(Off)。
- 大型静态建筑:采用 Lightmap 阴影。
三、Contribute Global Illumination(参与全局光照)
MeshRenderer → Lighting → Contribute Global Illumination
控制物体是否将自身光照信息反馈到 全局光照(GI) 系统。
3.1 启用时
- 物体的材质颜色、亮度会进入 GI 计算。
- 白墙能反射光线、发光材质能照亮环境。
- 烘焙时写入 Lightmap 或 Light Probe。
3.2 禁用时
- 物体不会贡献光照,但仍能接收光照。
- 常用于小道具、动态角色、装饰物,减少烘焙复杂度。
3.3 优化建议
- 墙壁、地板、天花板:启用。
- 小物件、动态角色:禁用。
- 自发光体(Emission):启用以参与 GI。
四、整体优化流程建议
-
批次数优化
- 使用 GPU Instancing 和 材质合并。
- 开启 SRP Batcher 优化 CPU。
- 合并 Mesh / SkinnedMeshRenderer,减少子网格。
-
阴影优化
- 控制 Cast Shadows,根据物体重要性合理关闭或改为烘焙。
- 使用 LOD 与远处低模,降低阴影开销。
-
全局光照优化
- 仅让大面积静态物体贡献 GI。
- 动态角色只接收光照,不贡献。
五、总结
- SRP Batcher:优化 CPU 提交效率,不减少批次数。
- GPU Instancing:减少相同网格+材质的 Draw Call 数量。
- Cast Shadows:合理配置阴影,避免性能浪费。
- Contribute Global Illumination:让必要的物体贡献光照,优化烘焙和实时性能。
合理搭配这些选项,可以在大规模人物复制场景中保持更好的性能与画质平衡。