共计 1814 个字符,预计需要花费 5 分钟才能阅读完成。
背景与痛点
传统 CPU 光照烘焙(如 Unity 内置的 Progressive Lightmapper)在处理复杂场景时面临两个主要问题:

- 速度瓶颈:百万面片场景的烘焙耗时通常在小时级别
- 内存压力:CPU 烘焙时 Unity Editor 内存占用常突破 16GB,导致频繁崩溃
技术对比
| 烘焙方案 | 百万面片耗时 | 显存占用 | 支持特性 |
|---|---|---|---|
| Bakery(GPU) | 8~15 分钟 | 6~8GB | 实时光照预览、AI 降噪 |
| CPU(Progressive) | 2~4 小时 | 12~16GB | 仅支持静态光照 |
| Enlighten | 30~50 分钟 | – | 动态全局光照 |
测试环境:RTX 4080/i9-13900K/32GB DDR5,场景包含 1024 个动态光照探头
Unity 项目配置
- 通过 Package Manager 安装 Bakery:
- 菜单栏 Window > Package Manager
- 点击 ”+” 选择 ”Add package from git URL”
-
输入
com.bakery.gpu-lightmapper -
基础场景设置:
// 确保场景物体标记为 Static
var renderers = FindObjectsOfType<Renderer>();
foreach (var r in renderers)
{r.gameObject.isStatic = true;}
关键参数解析
- Ray Samples:每像素光线数(建议值 256~1024)
- 值越高噪点越少,但显存占用线性增长
- Denoising:AI 降噪模式
Fast:适合中端显卡(RTX 3060 级别)Quality:需要 RTX 3080 及以上显卡- Direct Light:直接光质量
- 开发阶段可设为
Low,最终发布用Ultra
批量烘焙脚本示例
using UnityEditor;
using Bakery;
public class BatchBaker : MonoBehaviour
{
/// <summary>
/// 批量烘焙所有场景
/// </summary>
/// <param name="denoiseMode">0=Fast, 1=Quality</param>
[MenuItem("Tools/Bake All Scenes")]
static void BakeAll(int denoiseMode = 0)
{
try {
var scenes = EditorBuildSettings.scenes;
foreach (var scene in scenes)
{EditorSceneManager.OpenScene(scene.path);
// 配置烘焙参数
var bakery = FindObjectOfType<BakeryLightmapGroup>();
bakery.denoiseMode = (BakeryLightmapGroup.DenoiseMode)denoiseMode;
bakery.samples = 512;
// 执行烘焙
Bakery.Bake();
Debug.Log($"{scene.path} baked successfully");
}
} catch (System.Exception e) {Debug.LogError($"Bake failed: {e.Message}");
EditorUtility.ClearProgressBar();}
}
}
性能优化
显存占用与场景面片数的关系(实测数据):
| 面片数(万) | 显存占用 | 烘焙时间 |
|---|---|---|
| 50 | 3.2GB | 2 分 15 秒 |
| 100 | 4.1GB | 4 分 30 秒 |
| 200 | 6.8GB | 8 分 12 秒 |
| 500 | 溢出 | – |
建议策略:将大场景拆分为多个 200 万面片以下的子场景
常见问题排查
- 显存不足崩溃:
- 症状:Unity 直接闪退,Windows 事件日志显示
DXGI_ERROR_DEVICE_REMOVED -
解决方案:降低 Ray Samples 或使用
Fast降噪模式 -
Shader 兼容性问题:
- 症状:烘焙后材质显示粉色
-
检查:确保所有 Shader 支持
BAKERY_INCLUDED宏 -
光照泄漏:
- 症状:墙面出现异常光斑
- 修复:调整物体
Lightmap Static属性,增加Light Probe密度
高级技巧
- 分布式烘焙:通过 DOTS JobSystem 分割场景网格,多显卡并行计算
- 参数调优 :修改
Denoising的AOV Scale参数可平衡质量与速度 - 推荐测试组合:
(0.7, 1.3)与(1.0, 1.0)对比
后续学习建议
- 研究 Bakery 的
Adaptive Sampling模式 - 尝试将烘焙结果导入 URP/HDRP 管线
- 监控烘焙时的 GPU 利用率(使用 NVIDIA Nsight 工具)
正文完
