Unity URP渲染管线烘焙场景教程

一、灯光模式与烘焙的关系

在URP中,光源的Mode属性决定了其参与烘焙的方式,分为三种模式:

1. Realtime(实时模式)
  • 特性:完全动态计算,不生成光照贴图。适用于高频移动光源或需要实时互动的场景(如车灯、爆炸特效)。
  • 烘焙影响:不参与烘焙流程,仅影响动态物体。需注意性能消耗,建议配合阴影距离(Shadow Distance)优化。
  • 适用场景:PC/主机端高性能需求项目,或需动态调整光源参数的场合。
2. Baked(烘焙模式)
  • 特性:完全离线烘焙到光照贴图(Lightmap)中,运行时无实时计算。适合静态环境光(如室内顶灯)。
  • 烘焙内容:直接光、间接光、阴影均被烘焙。模型需标记为Static且生成Lightmap UVs。
  • 局限:光源位置/角度变化无法实时反映,仅适用于固定光源。
3. Mixed(混合模式)
  • 子模式选择:通过Lighting > Scene > Mixed Lighting配置:
    • Baked Indirect:烘焙间接光照,直接光和阴影实时计算。适合动态物体需要正确投影的场景。
    • Subtractive:烘焙直接光和阴影,动态物体通过Light Probe接收光照。适用于移动端性能优化。
    • Shadowmask:烘焙间接光+阴影贴图,实时计算直接光。在阴影距离内混合实时与烘焙阴影,平衡效果与性能。
  • 动态兼容性:静态物体使用烘焙数据,动态物体依赖Light Probe和Reflection Probe。

二、场景模型静态设置

1. 静态标记
  • 在Inspector中勾选Static,启用Contribute Global IlluminationReflection Probe Static
  • 注意事项
    • 动态物体切勿标记Static,否则烘焙数据失效。
    • 复合模型需拆分独立子网格,避免UV重叠导致光照错误。
2. 光照贴图UV生成
  • 模型导入设置中勾选Generate Lightmap UVs,调整Pack Margin避免贴图边缘渗色(建议2-5像素)。
  • UV检查:使用Scene视图的Baked Lightmap模式查看UV分布,确保无拉伸或重叠。
3. 优化参数
  • Lightmap Resolution:根据模型尺寸调整(单位:texels/unit)。大型建筑建议5-10,细节物件可提升至20-30。
  • Scale in Lightmap:降低不重要物体的缩放值(如地面设为0.5),节省贴图空间。

三、可复用烘焙配置文件的创建

1. 光照参数预设
  • Lighting > Lightmap Parameters中创建.asset文件,保存以下配置:

    - Resolution: 40 texels/unit
    - Padding: 4 pixels
    - Compressed: Enabled (移动端必选)
    - Indirect Intensity: 1.5 (增强间接光反弹)
    - Baked AO: Enabled (环境遮蔽增强)
    
  • 应用方式

    • 全局应用:在Lighting窗口选择预设。
    • 局部覆盖:为MeshRenderer单独指定参数。
2. 灯光配置预设
  • 创建空Prefab,附加灯光组件并设置参数(如Mixed模式+Shadowmask)。
  • 使用Prefab Variant派生不同场景的特化版本,保持核心参数一致性。
3. 烘焙数据保存与复用
  • 脚本方案:通过PrefabLightmapData脚本将光照贴图与UV信息嵌入Prefab:

    // 示例代码:保存烘焙数据到预设
    [SerializeField] private Texture2D[] lightmaps;
    [SerializeField] private RendererInfo[] rendererInfo;
    
    void Awake() {
        LightmapData[] combined = new LightmapData[lightmaps.Length];
        for(int i=0; i<lightmaps.Length; i++){
            combined[i] = new LightmapData {lightmapColor = lightmaps[i]};
        }
        LightmapSettings.lightmaps = combined;
        ApplyRendererInfo(rendererInfo, 0);
    }
    
  • 操作流程

    1. 烘焙完成后将模型拖入Project窗口生成Prefab。
    2. 附加脚本并点击Assets/Bake Prefab Lightmaps保存数据。
    3. 跨场景使用时,确保新场景的Lightmap Settings与烘焙时一致。

四、常见问题解决方案

问题现象原因解决方法
烘焙后模型无光照- 未标记Static
- UV未生成
检查Static标记,重新生成Lightmap UVs
光照贴图模糊Resolution过低
UV拉伸
提升Resolution,调整模型UV分布
GPU烘焙中断显存不足/驱动不支持改用CPU烘焙或升级显卡
阴影边缘锯齿软阴影采样不足在URP Asset中提升Shadow Cascade数

通过以上配置,可系统化实现URP下的高效烘焙工作流,兼顾视觉效果与运行性能。建议在项目初期建立参数模板,结合版本控制管理光照预设,提升团队协作效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity青子

难题的解决使成本节约,求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值