1. 光照烘焙技术概述
在Unity引擎中,光照烘焙(Light Baking)是指将场景中的静态光照效果预先计算并"烘焙"到光照贴图(Lightmap)中的过程。这项技术的核心价值在于:通过将耗时的光照计算从实时渲染环节转移到编辑阶段,显著提升运行时性能表现。
我最早接触光照烘焙是在2016年开发一个VR教育项目时。当时场景中使用了大量复杂光源,在Gear VR上帧率直接掉到30以下。改用烘焙光照后,不仅帧率稳定在75fps,还实现了更细腻的间接光照效果。这个经历让我深刻认识到:合理使用光照烘焙,是平衡画质与性能的关键技术。
光照烘焙主要适用于以下场景:
- 移动端或性能受限平台的项目
- 需要复杂全局光照效果的室内场景
- 包含大量静态物体的开放世界
- VR/AR等对帧率稳定性要求高的应用
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心原理与技术解析
2.1 光照贴图生成机制
Unity的光照烘焙本质上是通过光线追踪算法模拟光线的传播行为。与实时光照不同,烘焙过程会计算光线在场景中的多次反弹,并将最终的光照信息编码到UV展开的纹理贴图中。这个过程中有几个关键技术点:
-
UV展开优化:Unity会自动为静态物体生成第二套UV(Lightmap UV),确保表面展开后没有重叠且保持相对比例。我在项目中经常遇到拉伸问题,后来发现可以通过调整"Pack Margin"参数(建议0.5-1.0)来改善。
-
光子映射计算:Unity使用改进的光子映射(Photon Mapping)算法,先发射光子进行碰撞检测,然后在渲染时结合辐照度缓存(Irradiance Caching)。参数"Bounces"控制光线反弹次数,室内场景建议3-5次。
-
光照贴图编码:最终生成的EXR格式贴图包含:
- RGB通道:直接光照颜色
- Alpha通道:阴影强度
- 额外的方向性信息(用于法线贴图混合)
2.2 全局光照系统架构
Unity的全局光照(GI)系统由三个核心组件构成:
-
Enlighten引擎(2018.3前默认):
- 实时GI支持
- 预计算时间较短
- 内存占用较低
- 但光照精度有限
-
Progressive Lightmapper(2018.3后新
