Unity Lighting Settings 全解析:一文读懂烘焙光照的每个参数(VR项目Lighting优化)

引言

Unity的Lighting Settings(灯光设置)是渲染管线中控制光照行为的核心配置面板,位于Window > Rendering > Lighting。通过Lighting Settings,你可以调整全局照明(GI)、光照模式和烘焙参数,实现高效的静态/动态光照模拟。烘焙光照(Baked Lighting)是其重点:预计算间接光照和阴影,存储在Lightmap中,适用于静态场景,避免运行时计算开销。相比实时光照,烘焙可将光照性能提升5-10倍,但需平衡质量与构建时间。

在VR项目中,Lighting Settings优化至关重要:VR要求高帧率(90+ FPS)和双目一致性,过度实时GI会导致掉帧,而烘焙GI可提供稳定光照。烘焙参数如Indirect Resolution直接影响VR沉浸感(避免黑边或光泄漏)和性能(高分辨率Lightmap增加内存)。本解析基于Unity 6.2(2025年10月当前版本),涵盖class-LightingSettings中的所有参数,聚焦Baked GI。Lighting Settings是Project Settings的一部分,可为不同场景创建资产(Lighting Settings Asset)。

适用场景:室内外光照模拟、VR环境渲染、性能瓶颈排查。优化后,典型VR场景(Quest 3)Draw Call可降至<200,GI开销<10ms/帧。

Lighting Settings 窗口概述

  • 位置:Window > Rendering > Lighting > Scene 标签(全局设置在Project Settings > Graphics > Lighting Settings Asset)
  • 主要部分
  • Baked GI:烘焙全局照明参数
  • Realtime GI:实时GI参数
  • Mixed Lighting:混合光照模式
  • Lightmapping Settings:Lightmap分辨率、压缩等(Unity 6中增强,支持AI辅助烘焙,但文档无重大变更)
  • 构建流程:配置后点击Generate Lighting(右下角),使用Progressive Lightmapper(CPU/GPU)烘焙。

Baked GI(Baked Global Illumination)详解

Baked GI预计算间接光照(光反弹),存储在Lightmap中。启用后,静态物体(标记为Lightmap Static)使用烘焙光,动态物体通过Light Probes采样。VR中,Baked GI提供一致双目光照,避免实时计算的延迟。

参数描述默认值影响与VR优化
Baked Global Illumination启用/禁用Baked GI系统。启用时,间接光从Baked Lights预计算到Lightmap/Light Probes;禁用时,所有Baked/Mixed Lights视为Realtime Lights。未指定(开关)启用后,VR场景光照稳定(无闪烁),但需Light Probes辅助动态物体。VR优化:启用Baked GI减少GPU负载,目标<30ms烘焙更新。Unity 6中,AI辅助加速烘焙10-20%。
Lightmapper选择Lightmapper:Progressive CPU/GPU(渐进式)或Enlighten(旧版)。Progressive支持增量烘焙。Progressive CPUProgressive GPU适合VR大场景(烘焙时间减半),但需兼容GPU。Enlighten已弃用。
Indirect Resolution实时Lightmap的texel/单位(更高=更好质量,但更慢渲染)。仅Realtime GI启用时可用。未指定(数值)VR中设2-4 texel/unit,确保高分辨率避免光泄漏,但控制内存(>4增加VR纹理开销)。
Bounces间接光反弹次数(1-5)。更高值更真实,但计算时间指数增长。2VR中设2-3(平衡真实/性能),过多反弹导致烘焙超时或VR帧掉。
FilteringLightmap去噪过滤:None/AOV/Advanced。Advanced使用AI去噪。NoneVR中用Advanced减少噪声(光斑),提升沉浸感,但增加烘焙时间20%。Unity 6增强AI过滤。

代码动态控制(运行时调整Baked GI参数):

using UnityEngine;
using UnityEngine.Rendering;

public class BakedGIOptimizer : MonoBehaviour
{
    public LightmappingSettings lightingSettings;  // 拖拽 Lighting Settings Asset

    void Start()
    {
        // 动态启用 Baked GI
        lightingSettings.bakedGI = true;
        lightingSettings.lightmapper = LightmappingSettings.Lightmapper.ProgressiveCPU;
        lightingSettings.indirectResolution = 2f;  // 调整分辨率

        // 触发烘焙(编辑器/运行时)
        #if UNITY_EDITOR
        Lightmapping.Bake();
        #endif
    }

    // VR 性能模式:降低反弹
    public void LowPerformanceMode()
    {
        lightingSettings.indirectBounces = 1;
        Lightmapping.BakeAsync();  // 异步烘焙
    }
}

Realtime GI(Realtime Global Illumination)详解

Realtime GI实时计算间接光,支持动态变化,但VR中需谨慎(每帧开销高)。

参数描述默认值影响与VR优化
Realtime Global Illumination启用Enlighten Realtime GI系统。未指定(开关)启用后,VR动态光照更真实,但增加GPU负载(帧掉5-10%)。VR优化:结合Baked GI,仅动态物体用Realtime。
Realtime Environment Lighting启用实时环境光计算(需Realtime/Baked GI均启用)。未指定(开关)VR中启用动态天空变化(日夜循环),但需Light Probes采样;优化:降低Indirect Resolution。
Indirect ResolutionRealtime Lightmap texel/单位。未指定(数值)VR中设1-2,避免高分辨率导致延迟;Unity 6优化Enlighten计算。

代码示例

public class RealtimeGIOptimizer : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.G))
        {
            DynamicGI.UpdateEnvironment();  // 强制实时 GI 更新
        }
    }
}

Mixed Lighting(混合光照)详解

Mixed Lighting 结合 Baked 和 Realtime GI,适用于半动态场景。

参数描述默认值影响与VR优化
Lighting ModeMixed Lights的模式:Baked Indirect/Shadowmask/Subtractive。未指定(下拉)VR中用Baked Indirect(高效烘焙间接+实时直接),避免Shadowmask的Stencil开销。
Baked IndirectMixed Lights实时直接光+烘焙间接光,使用实时阴影。VR优化:静态场景首选,减少实时计算。
Shadowmask实时直接+烘焙间接+混合阴影(实时+烘焙)。VR中中等场景用,平衡阴影质量/性能。
Subtractive烘焙直接/间接+动态直接(仅方向光)。VR低端用,简化计算但光照简化。

代码示例

public class MixedLightingSwitcher : MonoBehaviour
{
    public LightingSettings lightingSettings;

    void Start()
    {
        lightingSettings.mixedLightingMode = MixedLightingMode.BakedIndirect;
    }
}

完整烘焙光照流程

  1. 准备场景:标记 Static(Lightmap Static/Contribute GI)。
  2. 配置参数:Lighting窗口调整 Baked/Realtime GI。
  3. 烘焙:Generate Lighting(Progressive GPU 加速)。
  4. 验证:Profiler > Rendering > GI 开销<20ms。
  5. 动态调整:代码修改 LightingSettings(运行时有限制)。

常见问题解决

问题原因解决方案
烘焙黑屏Lightmap Resolution 太低增加到 40+ texels/unit
VR 闪烁Realtime GI 更新慢用 Baked + Light Probes
内存高Lightmap 太大压缩 Lightmap (High Quality)
构建慢Progressive 卡住用 CPU 烘焙或分批场景

总结与最佳实践

Lighting Settings 是烘焙光照的控制中心,Baked GI 提供高效预计算,Realtime/Mixed 增强动态性。VR 项目优先 Baked + Probes 平衡性能/质量。定期烘焙并使用代码动态微调。如果需要代码示例扩展,请提供具体场景!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注