1. 光照烘焙技术概述
在Unity引擎中,光照烘焙(Light Baking)是指将场景中的静态光照信息预先计算并"烘焙"到光照贴图(Lightmap)中的过程。这项技术通过牺牲部分实时性来换取运行时性能的大幅提升,特别适合移动端和中低配设备。与实时光照相比,烘焙光照不会每帧重新计算,而是将光照结果以纹理形式存储,这使得场景可以呈现复杂的光影效果而不增加运行时的计算负担。
我第一次接触光照烘焙是在开发一个大型室内场景时,实时全局光照导致帧率直接跌到20以下。切换到烘焙方案后,帧率立即回升到60fps,同时还能保留细腻的间接光照效果。这种性能与质量的平衡,正是烘焙技术的核心价值所在。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 光照烘焙核心原理
2.1 光线追踪与辐照度计算
Unity的光照烘焙本质上是在编辑器环境下执行离线光线追踪。引擎会从每个表面点发射大量光线,通过蒙特卡洛方法计算直接光照和多次反弹的间接光照。具体流程包括:
- 场景被分割为若干探针(Probe)和纹素(Texel)
- 从每个采样点向半球空间发射数百条光线
- 光线与场景几何体碰撞后,根据材质属性计算能量吸收和反射
- 经过多次反弹(通常2-5次)后,最终记录辐照度值
这个计算过程非常消耗CPU资源,一个中等复杂度的场景可能需要数小时才能完成高质量烘焙。在我的项目中,通常会先使用低质量预设快速预览效果,确认无误后再进行最终烘焙。
2.2 光照贴图生成机制
计算完成后,Unity会将光照数据编码到光照贴图中。这里有几个关键技术点:
-
UV展开:Unity会自动为静态物体生成第二套UV(Lightmap UV),确保每个表面点都能正确映射到光照贴图。如果自动展开效果不佳,需要手动调整UV间距和布局。
-
编码格式:光照贴图通常使用RGBM或HDR编码,以存储超出0-1范围的高动态光照信息。移动平台建议使用RGBM,PC平台可以使用更高精度的HDR。
-
分辨率控制:通过Texel Density参数控制光照贴图精度。建议重要区域(如主角活动范围)使用15-20 texels/unit,次要区域可以降到5-10 texels/unit。
经验提示:光照贴图会显著增加包体大小,一个2048x2048的RGBM贴图约占用5MB内存。需要合理规划贴图尺
