1. 项目概述为什么我们需要Bakery这样的烘焙神器在Unity里做光照烘焙但凡做过几个稍微复杂点场景的开发者估计都经历过那种“等烘焙等到天荒地老”的煎熬。默认的Progressive Lightmapper渐进式光照贴图器虽然上手简单但一旦场景面数上去、灯光复杂起来那个烘焙时间曲线就变得非常不友好动辄几十分钟甚至几个小时。更别提烘焙出来的结果阴影漏光、噪点、细节丢失这些老毛病经常需要反复调整参数、重新烘焙整个开发流程的迭代效率被严重拖慢。这就是为什么像Bakery这样的第三方烘焙工具能在开发者社区里口碑爆棚被称作“神器”。它不是一个简单的插件而是一套完整的、基于GPU加速的光照烘焙解决方案。我第一次接触Bakery是在一个需要大量室内全局光照的VR项目里当时用内置烘焙器一个中等复杂度的场景预计算光照就花了近两个小时而且暗部噪点明显。换上Bakery在同样的硬件下烘焙时间缩短到了15分钟以内并且光影的精度和干净程度提升了好几个档次那种“解放生产力”的感觉非常直接。简单来说Bakery的核心价值就是快和好。它通过一系列底层算法的优化比如将光照计算任务高度并行化扔给GPU去处理以及对烘焙工作流的深度重构实现了数量级的速度提升。同时它提供了更丰富的烘焙模式如直接光照、间接光照、阴影分开烘焙、更精细的采样和控制选项让开发者能产出电影级质量的光照贴图。对于任何涉及复杂静态光照的Unity项目——无论是写实风格的AAA游戏、建筑可视化、还是高质量的独立游戏——学习和掌握Bakery几乎是从业者提升效率、保证质量的必修课。2. 核心工作流与前期准备2.1 场景与资源的标准化处理在把Bakery请进你的项目之前必须先把“厨房”也就是你的Unity场景收拾干净。混乱的场景设置是烘焙失败和效果不佳的头号元凶。这一步看似基础但至关重要。首先场景层级与静态标识。你需要清晰地规划哪些物体是静态的永远不会移动如墙壁、地板、大型家具哪些是动态的。对于所有需要参与光照烘焙的静态物体务必勾选其Inspector面板顶部的Static复选框。这里有个细节点击Static右侧的小箭头你可以展开更细分的静态选项。对于光照烘焙我们主要关心Contribute GI贡献全局光照和Lightmap Static光照贴图静态。通常直接勾选最顶层的Static就会自动勾选这两项但建议你检查一下确保关键物体没有被遗漏。其次模型资源的检查。导入的FBX或其他模型文件需要检查其导入设置。在Model分页下确保Generate Lightmap UVs生成光照贴图UV是勾选的。这是为模型自动创建第二套UV专门用于存储光照贴图信息避免与主纹理UV冲突。虽然Bakery也支持使用主UV但为了最佳兼容性和避免拉伸强烈建议使用自动生成的光照贴图UV。你可以点击Generate Lightmap UVs旁边的Settings按钮调整Pack Margin打包间隔这个值决定了UV岛上之间的间隔防止烘焙时贴图采样溢出导致的光照“渗色”。对于大多数模型默认值或稍大一点的值如5-10是安全的。注意如果你的模型本身已经包含了手工优化的第二套UV通常美术会在DCC软件如Maya、Blender中做好那么可以取消勾选Generate Lightmap UVs并在Rig分页下将Animation Type设置为None或Legacy然后在Model分页下将Normals法线计算模式改为Import以使用模型自带的法线信息这样能获得最好的烘焙效果。最后材质的准备。Bakery支持Unity的标准着色器Standard Shader和通用渲染管线URP/高清渲染管线HDRP的Lit Shader。确保你的静态物体材质使用的是这些受支持的着色器。避免使用过于复杂或自定义的Shader除非你确认它们与Bakery兼容通常需要Shader支持光照贴图采样。一个简单的检查方法是材质是否有一个Global Illumination全局光照属性并且被设置为Baked或Global这是材质接收烘焙光照信息的基础。2.2 Bakery的安装与基础配置从Asset Store购买并导入Bakery后你会在Window菜单下找到Bakery选项。首次打开主窗口可能会感觉界面元素有点多别慌我们一步步来。核心窗口Bakery Lightmap Editor是你的主战场。界面主要分为几个区域顶部的模式选择Direct, Indirect, Shadowmask等、中部的场景物体列表和参数面板、底部的烘焙控制按钮Render, Cancel等。关键配置步骤设置渲染分辨率这是影响烘焙质量和速度的最核心参数之一在Bakery Lightmap Editor的Settings标签页下。Resolution分辨率定义了每世界单位默认为米分配多少纹素texel。例如Resolution 30意味着每米有30x30个纹素。值越高光照贴图越精细但贴图尺寸和烘焙时间也会剧增。我的经验是对于大型环境如户外地形可以从5-10开始对于中型室内场景15-25是常用范围对于需要极高细节的小物件可以给到40-60甚至更高。Bakery允许按物体单独设置分辨率这是它的一大优势。你可以在场景中选择一个物体在Bakery窗口的Object标签页下覆盖全局的Resolution设置从而把计算资源集中在视觉焦点上。选择烘焙模式Bakery提供了多种模式适应不同需求。Full Lighting完整光照烘焙直接光、间接光和阴影。最常用适合完全静态的场景。Indirect间接光只烘焙间接光照全局光照。适合与实时光源如动态方向光混合使用实现“实时光照烘焙GI”的混合光照模式这也是现代游戏的主流做法。Shadowmask阴影遮罩烘焙阴影信息到一张单独的Shadowmask贴图。结合实时光源可以在动态物体上投射出带有烘焙质量的柔和阴影性能与质量兼顾的优选方案。Directional方向性除了颜色和强度还会烘焙主要光照方向信息到第二张光照贴图中。这能让法线贴图在烘焙光照下依然有立体感效果更好但会占用更多显存。对于新手我建议从一个简单场景开始先用Full Lighting模式感受完整的烘焙效果。采样与过滤设置在Settings的Sampling部分Samples采样数控制光线追踪的质量。更高的采样数意味着更少的噪点但时间更长。对于测试烘焙64或128就够用对于最终输出512或1024是常见值。Filter过滤选项如Gaussian高斯滤波可以在烘焙后对光照贴图进行模糊处理有助于消除噪点让光照过渡更平滑但会损失一些锐利细节。根据你的艺术风格来调整。3. 灯光设置与烘焙参数深度解析3.1 灯光类型的适配与参数优化Bakery对Unity自带的各种灯光类型Directional Light, Point Light, Spot Light, Area Light都有很好的支持但需要一些特定的设置才能发挥最大效能。方向光Directional Light这是模拟太阳光的主力。在Bakery中你需要确保方向光的Mode模式设置为Mixed混合或Baked烘焙。如果使用Mixed模式你还需要在Bakery Lightmap Editor的Scene标签页下找到Sun太阳选项并将这个方向光拖拽赋值进去。这样Bakery才会把它识别为主要的环境光源并用于计算天空光照和方向性光照贴图。方向光的Intensity强度和Color颜色会直接影响烘焙结果Shadow Type阴影类型建议使用Soft Shadows软阴影以获得更自然的烘焙阴影。区域光Area Light这是实现写实室内照明的关键比如灯带、窗户的天光入口。区域光在Bakery中烘焙效果非常好能产生非常柔和的阴影和自然的光照衰减。关键参数是Width和Height定义光源物理尺寸以及Intensity。尺寸越大产生的阴影越柔和。一个常见的技巧是用扁平的矩形区域光来模拟从窗户照入的日光通过调整其大小和角度可以精确控制进入室内的光斑形状和柔和度。点光源和聚光灯设置相对直接。确保模式为Baked或Mixed。对于聚光灯注意Spot Angle聚光角度和Range范围的合理设置避免无效的光照计算。Bakery的一个优势是它对这些小范围光源的烘焙效率很高即使场景中有几十个这样的光源烘焙时间也不会像内置烘焙器那样呈指数级增长。实操心得在布置灯光时我习惯先使用较低的Resolution如10和Samples如64进行快速迭代调整灯光的位置、强度、颜色直到整体光影氛围满意。这个过程可能只需要几分钟。确定好灯光设计后再逐步提高分辨率和采样数进行高质量最终烘焙。这种“低保真迭代 - 高保真输出”的工作流能极大提升效率。3.2 高级参数天空盒、光照探头与遮挡天空盒与环境光即使你没有在场景中放置方向光天空盒本身也是一个重要的光源。在Window - Rendering - Lighting打开Unity的Lighting面板旧版是Window - Lighting - Settings在Environment环境部分Skybox Material天空盒材质和Environment Lighting环境光照的Source源设置为Skybox其Intensity Multiplier强度倍增会显著影响烘焙的间接光照亮度和颜色。Bakery会读取这些设置并参与计算。一个明亮的蓝天白云天空盒会给整个场景带来充足的蓝色调环境光。光照探头Light Probes这是照亮动态物体的关键。静态物体用光照贴图动态物体如玩家角色、NPC、可移动道具则依靠光照探头组来获取烘焙的间接光照信息。你需要在场景中布置Light Probe Group。布置原则是在动态物体可能活动的空间均匀分布在光照变化剧烈的区域如明暗交界处、墙角需要更密集。布置好后在Bakery的Bakery Lightmap Editor中确保Bake Light Probes烘焙光照探头选项是勾选的。Bakery会基于当前的静态光照计算每个探头位置的光照信息其速度和效果通常优于Unity内置的探头烘焙。遮挡OcclusionBakery也集成了环境光遮挡Ambient Occlusion, AO的烘焙。AO能增强角落、缝隙处的阴影增加场景的立体感和重量感。在Bakery Lightmap Editor的Settings标签页下有专门的Occlusion部分。你可以选择将AO直接烘焙进光照贴图Baked into lightmap或者输出单独的AO贴图。Distance距离参数控制AO的影响范围Intensity强度控制AO的明暗程度。适度使用AO能让场景看起来更扎实但强度过高会让场景显得“脏”。4. 执行烘焙与输出管理4.1 启动烘焙与过程监控当你觉得场景准备妥当、参数设置合理后就可以点击Bakery Lightmap Editor窗口底部的巨大Render按钮了。点击前建议先点击Save Scene保存场景。烘焙开始后Bakery会弹出一个进度窗口显示当前任务如Voxelizing scene, Computing direct light, Computing indirect light等和预估剩余时间。这里有一个非常重要的技巧观察GPU利用率。打开你的任务管理器Windows或活动监视器Mac查看GPU的负载。如果Bakery在全力运行你的GPU利用率应该接近100%。这才是Bakery价值所在——它真正吃满了GPU的算力。如果GPU利用率很低而CPU很高那可能是设置有问题或者场景中有某些元素无法被GPU加速。烘焙过程中你可以随时点击Cancel按钮中断。Bakery支持断点续焙但并非完全无缝。如果中断在比较早期的阶段如体素化下次可能会重新开始如果中断在后期可能会从某个检查点继续。但为了保险起见最好还是一次性完成。4.2 输出结果分析与后期处理烘焙完成后Bakery会在你项目目录下创建一个名为BakeryLightmaps的文件夹位置可以在设置中调整里面存放着生成的所有光照贴图、方向图、阴影遮罩图等。回到Unity编辑器你会发现静态物体已经被自动赋予了烘焙后的光照效果。此时你需要进行一轮效果检查检查光照贴图分配在Window - Rendering - LightingLighting面板的Lightmaps标签页下可以看到所有已烘焙的光照贴图列表。选择场景中的静态物体在它的Mesh Renderer组件里可以看到它关联的Lightmap Index光照贴图索引和Lightmap Scale Offset缩放偏移信息。这表示该物体使用了哪张光照贴图以及使用了贴图的哪一部分。常见视觉问题排查漏光Light Leaks光线穿过墙壁或地板缝隙。这通常是因为模型的几何体没有完全闭合或者光照贴图UV的Pack Margin太小导致采样溢出。解决方案是检查并修复模型缝隙或增大Pack Margin。噪点Noise暗部或平滑表面有颗粒感。直接提高Samples采样数是最有效的方法。也可以尝试启用Denoiser降噪器如果Bakery版本支持或增大Filter过滤强度。阴影过黑或过亮调整对应灯光的Intensity强度或Indirect Multiplier间接光倍增器。也可以尝试在Bakery的Settings中调整Exposure曝光或Bounce反弹次数影响间接光亮度。光照贴图分辨率不足物体表面光照细节模糊有像素感。提高该物体或全局的Resolution分辨率设置。后期混合与调整烘焙光照不是终点。你仍然可以在场景中使用后处理Post-Processing效果如调色Color Grading、泛光Bloom、环境光遮蔽SSAO来进一步美化最终画面。这些实时效果会和烘焙光照完美叠加。5. 性能优化与高级技巧实战5.1 分层烘焙与分辨率优化策略面对超大型场景一次性烘焙所有内容可能不现实。Bakery支持分层烘焙Baking in Layers的思路。这不是一个具体的按钮而是一种工作方法你可以通过Unity的Layer图层或手动选择只烘焙场景的一部分。例如先烘焙建筑主体和主要灯光保存光照贴图。然后隐藏已烘焙的物体再显示并烘焙室内装饰和细节灯光。最后在Unity中组合起来。这需要你精心规划场景的分层和光照贴图的UV空间。更实用的日常优化是按物体设置分辨率。在Bakery的Object标签页下选中场景中不同重要程度的物体为其设置不同的Resolution分辨率覆盖值。高分辨率30-50应用于玩家视线焦点如主角面前的桌子、关键道具、装饰画。中分辨率15-25应用于主要的环境构成元素如墙壁、地板、大型家具。低分辨率5-10应用于远景物体、天花板通常不被注意、或巨大但平坦的表面。通过这种差异化分配可以在总纹素数量影响贴图内存和烘焙时间不变的情况下将细节集中在最需要的地方实现质量和效率的最佳平衡。5.2 GPU内存与烘焙失败排查Bakery重度依赖GPU因此GPU显存VRAM是其瓶颈之一。烘焙超大规模或超高分辨率的场景时可能会遇到“GPU内存不足”的错误。解决方案降低单张光照贴图尺寸在Bakery Lightmap Editor的Settings-Atlas图集中调整Max Atlas Size最大图集尺寸。默认可能是4096或8192可以尝试降低到2048。Bakery会自动将多个物体的光照信息打包到一张大贴图图集中减小单张尺寸可以降低显存峰值占用。启用“烘焙到顶点”Bake to Vertex对于远景的、表面平滑的物体如远处的山体、简单的平面可以尝试将光照信息烘焙到顶点颜色而不是贴图。在物体的Bakery设置中选择Bake to Vertex模式。这完全不占用光照贴图空间但精度很低只适用于特定情况。分块烘焙如果上述方法不行就只能回到分层烘焙的思路将场景分成几个逻辑部分分别烘焙。其他常见失败原因Shader不兼容某些自定义Shader不支持光照贴图。尝试将物体的材质临时替换为Standard Shader测试。UV问题模型没有光照贴图UV或者UV严重重叠、超出[0,1]范围。检查模型的导入设置和UV状态。驱动程序问题确保你的显卡驱动是最新的。过旧的驱动可能导致Bakery的GPU计算内核无法正常运行。6. 不同渲染管线下的工作流适配Unity目前主要有三种渲染管线内置渲染管线Built-in、通用渲染管线URP和高清渲染管线HDRP。Bakery对它们都提供了支持但工作流略有不同。内置渲染管线Built-in这是Bakery支持最成熟、文档最全的管线。上述所有流程和设置都直接适用。光照贴图会自动分配给物体的Lightmap Index和Lightmap Scale Offset。通用渲染管线URPURP下Bakery的使用基本类似。关键区别在于你需要从Package Manager安装URP并创建URP Asset将其赋给项目的Graphics Settings。静态物体的材质应使用URP Lit Shader并确保其Global Illumination属性设置为Baked。烘焙后光照贴图的分配和显示是自动的。URP使用一套不同的底层API来读取光照贴图但Bakery已经做好了适配。在URP中混合光照Mixed Lighting的设置主要在URP Asset的Lighting部分和每个灯光的Mode中调整。高清渲染管线HDRPHDRP对光照和材质的要求最高。使用Bakery烘焙HDRP项目时需要额外注意确保使用HDRP Lit Shader。HDRP的光照单位、颜色空间通常是线性空间和强度范围与内置管线不同。Bakery会进行转换但你可能需要根据HDRP的曝光设置来调整灯光强度。HDRP有更复杂的光照分层和体积系统Bakery主要处理静态几何体的光照贴图与HDRP的实时体积光照等特性可以并存。一个通用的建议是在开始一个使用Bakery的新项目时尽早确定并锁定渲染管线。中途切换管线可能会导致光照贴图失效或需要重新烘焙因为不同管线下光照数据的存储和引用方式可能不同。我个人在多个商业项目中切换使用过这三种管线搭配Bakery。总的来说内置管线最稳定无脑URP在移动端和性能受限平台是主流选择而HDRP配合Bakery则能产出令人惊叹的影视级静态光照效果但对硬件和项目规范要求也最高。无论选择哪条管线Bakery核心的“GPU加速高质量烘焙”价值都不会变它能帮你把该管线下的静态光照潜力发挥到极致。