TA工具箱首页 / TA 术语百科

光照贴图烘焙:原理、流程与优化

2026-08-24

什么是光照贴图烘焙

光照贴图(Lightmap)是一张存储静态场景光照信息的纹理。烘焙(Baking)是指离线计算场景中的全局光照(包括直接光、间接光、阴影、颜色反弹等),并将结果保存到光照贴图中。运行时,模型通过 UV 映射采样光照贴图,获得预计算的光照效果,无需实时计算复杂光照,从而大幅提升性能。光照贴图广泛用于移动端和低端设备的游戏开发。

光照贴图的原理

烘焙过程通常使用光线追踪或辐射度算法,模拟光子在场景中的传播,计算每个表面点的入射光照。结果可以存储为:

  • **光照贴图**:2D 纹理,记录漫反射光照颜色。
  • **光照探针**:用于动态物体的间接光照。
  • **反射探针**:记录环境反射信息。

烘焙结果与静态物体绑定,因此要求场景中的静态物体在运行时不能移动。

烘焙流程

在 Unity 和 Unreal 中,光照贴图烘焙通常包括以下步骤:

  1. **标记静态物体**:将不移动的物体标记为 Static(Unity)或 Mobility 设为 Static(Unreal)。
  2. **设置 UV**:确保模型有合适的第二套 UV(用于光照贴图),UV 需唯一且不重叠。
  3. **配置光源**:将光源设置混合模式为 Baked 或 Mixed。
  4. **调整烘焙参数**:如分辨率、间接光照强度、环境光等。
  5. **开始烘焙**:引擎离线计算光照,生成光照贴图。
  6. **应用**:运行时自动采样光照贴图。
  7. 光照贴图的优缺点

    **优点**:

    • 运行时性能高,无需实时全局光照计算。
    • 光照效果逼真,支持软阴影、颜色反弹等。
    • 适合移动端和低端硬件。

    **缺点**:

    • 只能用于静态场景,动态物体无法使用。
    • 烘焙耗时,修改场景需重新烘焙。
    • 光照贴图占用内存和存储空间。
    • 无法响应实时变化的光照。

    优化与注意事项

    • **降低光照贴图分辨率**:远处或次要物体可以使用低分辨率。
    • **使用光照探针**:为动态物体提供近似间接光照。
    • **压缩光照贴图**:使用 ASTC、ETC2 等压缩格式减少内存。
    • **合并 UV 岛**:优化 UV 布局,减少纹理空间浪费。
    • **避免接缝**:确保相邻 UV 岛之间有足够填充,防止渗色。

    常见问题

    光照贴图和实时全局光照有什么区别?

    光照贴图是离线预计算,运行时采样;实时全局光照在运行时计算,支持动态变化但性能开销大。

    动态物体如何获得光照贴图的好处?

    可以使用光照探针,动态物体采样附近探针,获得间接光照的近似。

    为什么需要第二套 UV?

    第一套 UV 可能重叠或拉伸,第二套 UV 专用于光照贴图,需要唯一且不重叠。

    烘焙光照需要多久?

    取决于场景复杂度、参数和硬件,可能从几分钟到几小时。

    移动端必须使用光照贴图吗?

    不必须,但强烈推荐,因为移动端性能有限,光照贴图可以显著提升帧率。

常见问题

光照贴图和实时全局光照有什么区别?

光照贴图是离线预计算,运行时采样;实时全局光照在运行时计算,支持动态变化但性能开销大。

动态物体如何获得光照贴图的好处?

可以使用光照探针,动态物体采样附近探针,获得间接光照的近似。

为什么需要第二套UV?

第一套UV可能重叠或拉伸,第二套UV专用于光照贴图,需要唯一且不重叠。

烘焙光照需要多久?

取决于场景复杂度、参数和硬件,可能从几分钟到几小时。

移动端必须使用光照贴图吗?

不必须,但强烈推荐,因为移动端性能有限,光照贴图可以显著提升帧率。