
1. 项目概述为什么你的烘焙结果总是不尽人意在Unity项目开发的后期尤其是美术资源基本就位后我们总会遇到一个绕不开的“性能与质量”的十字路口——光照烘焙。你可能已经熟练地点击了“Generate Lighting”然后看着进度条缓慢爬升满心期待。但结果呢要么是烘焙时间长得让人想去泡杯咖啡再睡一觉要么是出来的贴图要么噪点密布像蒙了一层沙要么阴影生硬得像剪纸要么内存占用直接爆表。这时候很多人会选择去论坛提问或者不断尝试调整一些似懂非懂的参数结果往往是碰运气。问题的核心往往就藏在那个看似复杂、参数繁多的“Lightmapping Settings”窗口里。这个窗口不是魔法黑盒而是一套精密的控制台。每一个滑块、每一个下拉菜单都直接对应着光照贴图生成算法中的某个具体环节。理解它们你就能从被结果“牵着鼻子走”转变为主动“驾驭”烘焙流程在质量、时间和资源消耗之间找到属于你项目的最佳平衡点。这篇指南的目的就是为你彻底拆解Unity的Lightmapping Settings以主流版本为准涵盖Built-in渲染管线和URP/HDRP中相关的烘焙模块。我不会只告诉你“这个参数调大那个参数调小”而是会深入每个参数背后的计算原理、它如何影响烘焙的各个环节从光线采样到最终贴图生成以及在不同项目规模移动端小游戏、PC/主机中型项目、大型开放世界下的实战调整策略。无论你是技术美术TA、负责性能优化的程序员还是希望提升场景品质的开发者掌握这些都能让你在光照烘焙这件事上拥有真正的“掌控感”。2. 核心参数全解从原理到实战Unity的光照贴图烘焙本质上是将动态光照计算每帧实时进行的结果“预计算”并存储到一张或多张纹理即光照贴图中的过程。Lightmapping Settings中的参数就是控制这个“预计算”过程的精度、方式和范围的杠杆。我们可以将这些参数分为几个逻辑组来理解。2.1 全局精度与质量控制参数这组参数决定了烘焙的“基础分辨率”和整体质量上限是影响烘焙效果和性能最根本的设置。Lightmap Resolution光照贴图分辨率这个参数的单位是“Texels per unit”即每单位世界空间通常是米分配多少个纹素纹理像素。它是所有质量参数的基石。原理假设你设置值为30那么场景中一个1米x1米的平面在光照贴图上将占据30x30个纹素。值越高贴图能记录的照明细节就越丰富阴影边缘也更平滑。实战调整移动端/低配项目建议从10-20开始尝试。一个10x10米的简单场景如果全部烘焙在一张图上分辨率可能只需512x512。PC/主机标准项目20-50是常见范围。对于需要精致室内光影的关卡可能需要40-50。高精度静态场景对于摄影测量扫描的静态资产或博物馆展示类项目可以提升到60-100甚至更高。计算示例一个5米x5米的静态地板Resolution设为30。它在光照贴图上至少需要5 * 30 150个纹素。考虑到UV展开和填充率实际分配的纹理面积会略大。你需要确保最终生成的光照贴图尺寸如2048x2048能够容纳所有此类物体所需的分辨率总和。注意盲目提高Resolution是烘焙时间暴涨和内存激增的首要原因。它是指数级的影响。将分辨率从20提高到40意味着同一物体所需的纹素数量变为原来的4倍计算量和纹理内存占用也近似成倍增长。Lightmap Padding光照贴图间距这个参数定义了烘焙时不同物体的UV块在最终合并的大光照贴图上的间隔像素。原理为了防止在渲染时因为纹理过滤如双线性过滤导致一个物体的颜色“渗入”相邻物体需要在UV块之间留出空隙。Padding就是这个空隙的大小。实战调整通常保持默认的2-4个像素即可。在光照贴图分辨率设置得很高如100以上且使用高质量纹理过滤时可以适当增加到4-8以避免极细微的渗色但这会略微增加纹理空间的浪费。如果你在游戏运行时看到物体边缘有来自其他物体的奇怪颜色“光晕”很可能就是Padding设置过小。Lightmap Size光照贴图尺寸这是最终生成的光照贴图纹理的最大尺寸如1024, 2048, 4096。原理Unity会根据所有静态物体的表面积和设置的Lightmap Resolution计算出需要的纹理总面积然后尝试将这些UV块打包进你设定的Size范围内。如果空间不够它会自动生成多张光照贴图。实战调整这是一个“目标约束”参数。对于现代PC/主机项目2048或4096是常用尺寸。移动端建议从1024开始复杂场景可考虑2048。关键技巧不要一味追求使用一张超大尺寸如8192的贴图来容纳所有内容。更好的做法是通过合理划分光照探针Light Probes和实时光照来分担静态光照的负担或者将场景在逻辑上分块使每块所需的光照贴图尺寸控制在2048或4096以内。这有助于Unity的纹理流送和内存管理。2.2 核心算法参数 Progressive (GPU) vs Enlighten (Legacy)Unity目前主要提供两种烘焙器Progressive (GPU)和Enlighten (Legacy)。选择不同的烘焙器你会看到不同的核心参数集。Progressive是当前主流和推荐的选择因为它更快、更直观且能更好地利用现代GPU。2.2.1 Progressive (GPU) 烘焙器核心参数Direct Samples / Indirect Samples / Environment Samples / Bounces这些参数控制着光线追踪的采样数量。原理Direct Samples直接光采样计算直接从光源如平行光、点光源照射到表面的光照。提高此值可以减少直接光照区域的噪点。Indirect Samples间接光采样计算光线在场景中弹射一次或多次后即间接光照的贡献。这是消除场景整体噪点、获得平滑全局光照的关键参数对烘焙时间影响最大。Environment Samples环境光采样计算来自天空盒或环境贴图的环境光照。Bounces光线反弹次数控制间接光计算的反弹次数。1次反弹意味着光线从A表面弹到B表面2次反弹意味着A-B-C。更多的反弹次数能让光线传播得更远、更自然尤其是对于室内或封闭空间但也会显著增加计算量。实战调整初始设置对于快速预览可以将Direct/Indirect/Environment Samples设置为较低的64或128Bounces设为1或2。生产质量对于最终烘焙通常需要提升Indirect Samples。一个平衡的设置为Direct 256, Indirect 1024, Environment 256, Bounces 2-3。如果场景有复杂的相互反射如镜面金属球放在彩色墙边可能需要将Bounces提升到3-4并大幅增加Indirect Samples如2048甚至更高来消除色噪。技巧Progressive烘焙器是实时预览的。你可以先以低采样数开始烘焙观察实时预览效果在噪点减少到可接受程度时手动停止。这比盲目设置一个超高采样数然后苦等要高效得多。Filtering过滤在光线追踪采样完成后此参数用于对生成的原始、带有噪点的光照信息进行后处理平滑。原理它并不是增加采样而是对邻近纹素进行加权平均从而快速消除视觉噪点。选项解析None不进行过滤。你会看到最原始的、充满噪点的结果仅用于调试。AutoUnity根据你设置的采样数自动选择一个过滤强度。这是最省心的选择在大多数情况下效果不错。Advanced手动控制两个子参数Filter Radius过滤半径参与平均计算的邻近纹素范围。值越大效果越平滑但也可能导致细节尤其是尖锐阴影变模糊。通常设置在1-10之间3-5是常用范围。Filter Contrast过滤对比度控制过滤后明暗区域的对比度恢复。适当的对比度如0.1-0.3可以在平滑噪点的同时防止阴影变得过于“糊”。实战心得不要过度依赖高强度的Filtering来弥补过低的采样数。这会导致光照贴图失去所有高频细节看起来非常塑料感。正确的流程是先用足够的Indirect Samples如512-1024将基础噪点降到较低水平再使用适度的Filtering如Auto或Advanced Radius4进行微调抛光。2.2.2 Enlighten (Legacy) 烘焙器核心参数简述虽然已不推荐新项目使用但维护老项目时仍可能遇到。其核心思路是分阶段计算。Realtime Resolution / Baked Resolution类似于Progressive的全局分辨率但分为实时全局光照已基本弃用和烘焙分辨率。Irradiance Budget / Irradiance Quality控制光照信息的存储精度和计算质量。预算Budget越高质量Quality越高效果越好但计算时间和内存占用也越大。Modelling Tolerance控制场景几何体在参与光照计算时的简化程度。值越大对模型的简化越激进可以加快烘焙速度但可能导致光照在复杂模型上出错。个人建议除非项目历史原因强制使用新项目一律选择Progressive (GPU) 烘焙器。它的工作流更现代效率更高可控性也更强。2.3 影响烘焙性能与结果的关键参数Compression压缩是否对生成的光照贴图应用纹理压缩。原理压缩可以大幅减少光照贴图在GPU内存中的占用通常能减少75%但会引入压缩失真可能导致色带或细节损失。实战调整对于移动平台必须开启压缩这是性能优化的关键一步。通常选择引擎默认的纹理压缩格式即可。对于PC/主机在内存压力不大的情况下可以关闭压缩以获得绝对精确的光照颜色尤其是在使用高动态范围HDR光照时。如果内存紧张开启压缩并仔细检查是否有明显的视觉瑕疵。测试方法在Scene视图中将光照贴图可视化模式打开对比开启和关闭压缩的版本在暗部区域如阴影角落检查是否有明显的色块。Ambient Occlusion (AO) Settings环境光遮蔽设置。这里的AO特指在烘焙光照贴图时同时计算并烘焙的AO信息。原理它模拟物体缝隙、角落因难以接收到环境光而自然变暗的效果能极大地增强场景的立体感和真实感。参数解析Max DistanceAO效果的影响最大距离。超过此距离的几何体将不被考虑。对于室内小物件设置1-2米即可对于建筑外部可能需要5-10米。Indirect ContributionAO对间接光照的影响强度。提高此值会让AO影响的区域更暗。Direct ContributionAO对直接光照的影响强度。通常保持为1让AO也影响阳光直射的区域如屋檐下增强真实感。实操心得烘焙AO是“性价比”极高的操作它能用很小的性能开销作为光照贴图的一部分换来巨大的视觉提升。务必开启并合理设置。你可以先在场景中放置一个简单的白色测试球体调整AO参数并实时预览观察缝隙处的变暗效果是否自然。Directional Mode方向模式控制光照贴图是否存储入射光的方向信息。原理Non-Directional只存储光照颜色和强度。这是最省内存的模式。Directional额外存储主要入射光的方向。这使得在渲染时能够支持法线贴图Normal Map对烘焙光照产生正确反应让具有法线贴图的表面如砖墙、浮雕在烘焙光照下依然能表现出凹凸细节而不是看起来是平的。实战选择如果你的场景中大量使用了法线贴图的静态物体并且你希望这些凹凸细节在烘焙后依然有正确的明暗变化那么必须选择Directional模式。如果场景基本都是平滑表面或者可以接受法线贴图在烘焙光下效果打折可以选择Non-Directional来节省大约一半的光照贴图内存因为Directional模式需要生成两张贴图一张存颜色一张存方向。验证在Directional模式下烘焙后在Scene视图的照明模式中切换到“Directionality”可以看到一张表示方向的彩色贴图。3. 实战工作流从白模到最终烘焙理解了单个参数我们需要将其串联成一个高效的实战工作流。以下是一个基于Progressive烘焙器的推荐流程。3.1 前期准备与场景设置在点击“Generate Lighting”之前80%的问题可以通过良好的前期准备避免。模型与UV检查静态标记确保所有需要参与烘焙的物体都勾选了“Static”至少是“Contribute GI”。UV重叠使用模型导入设置或第三方工具检查第二套UVLightmap UV是否无重叠、无拉伸。Unity可以自动生成但对于复杂模型手动展开或使用更专业的展UV工具如Rizor UV效果更好。重叠的UV会导致光照信息错乱。比例合理性检查场景单位尺度。一个1单位高的角色模型是1米还是1厘米不合理的尺度会严重影响Lightmap Resolution的计算。确保你的场景符合“1 Unity单位 1米”的物理尺度惯例。光源设置将主要静态光源如模拟窗户的阳光、室内顶灯的“Mode”设置为Baked。调整光源的Range和Intensity到合理的物理范围。一个点光源的Range设为100米显然是不合理的。如果需要混合光照部分动态物体也能与烘焙光交互可以将光源设为Mixed并理解其“Baked Indirect”和“Shadowmask”等子模式的区别。3.2 分层迭代烘焙策略不要试图一次性用最高质量烘焙整个大型场景。采用分层迭代的策略。第一轮极速白模验证5-10分钟目标验证光照布局、阴影角度、明暗关系是否合理。参数预设Lightmap Resolution:10Lightmap Size:1024烘焙器:ProgressiveDirect Samples:64Indirect Samples:128Bounces:1Filtering:AutoCompression:开启Directional Mode:Non-Directional(先关掉)AO:关闭(先关掉)操作烘焙快速查看整体氛围。调整光源的位置、颜色、强度直到满意。第二轮关键区域质量提升30分钟-1小时目标提升玩家主要活动区域、视觉焦点区域的烘焙质量。操作在Lighting窗口的“Object”标签页或直接在场景中选择重要静态物体如主角的房屋内部、核心叙事道具在检视视图中单独覆盖其光照贴图分辨率如提高到40或50。调整全局参数到一个中等质量Lightmap Resolution:20(全局基础值)Indirect Samples:512Bounces:2开启AO并设置合适的Max Distance。如果关键物体用法线贴图将Directional Mode改为Directional。操作再次烘焙。此时非关键区域保持中等质量关键区域获得高质量实现了资源的最优分配。第三轮最终生产级烘焙数小时或过夜目标达到项目所需的最终发布质量。参数预设Lightmap Resolution:25-30(根据项目需求)Lightmap Size:2048 或 4096Indirect Samples:1024 - 2048(观察预览噪点消失即可停止)Bounces:2-3Filtering:Advanced(Radius4, Contrast0.15) 进行精细平滑。确保Compression,AO,Directional Mode按需正确开启。操作在团队不使用时如下班后进行最终烘焙。烘焙前保存所有场景并考虑使用命令行或脚本进行批量烘焙以整合到自动化构建流程中。3.3 烘焙后检查与验证烘焙完成不代表工作结束。视觉检查在Scene视图中切换“Global Illumination”预览为“Baked”并关闭所有实时光源确保场景完全由光照贴图照明。检查是否有漏光Light Leaking——光线穿过本应封闭的墙壁或地面。这通常是模型UV错误或碰撞体不匹配导致的。检查阴影是否异常黑或异常柔和。调整光源的间接强度乘数或烘焙参数。使用光照贴图可视化模式检查贴图分布是否均匀有无过度拉伸或浪费的空间。性能分析在Unity Profiler的“GPU”或“Rendering”模块中查看Draw Call数量。合理的光照贴图可以减少Draw Call但如果因为贴图过多导致合批失败也可能增加Draw Call。在“Memory”模块中查看纹理内存占用确认光照贴图的总大小是否符合目标平台的预算如移动端建议所有光照贴图总和不超过50MB。4. 常见问题、排查技巧与进阶优化即使按照流程操作实践中仍会踩坑。这里记录一些典型问题与解决方法。4.1 烘焙时间过长或卡死问题点击烘焙后进度缓慢或直接卡在某个百分比。排查与解决检查模型和UV这是最常见的原因。一个UV严重重叠或无限细长的三角形会导致光线追踪计算陷入死循环。使用模型检查工具排查或临时将该物体设为“Non-Static”排除。降低采样和反弹将Indirect Samples降到64Bounces降到1先测试是否能完成烘焙。如果能再逐步提高。缩小烘焙区域在Lighting窗口的“Scene”标签页尝试勾选“Auto Generate”并移动摄像机Unity可能只烘焙摄像机可见区域。或者将大场景分块保存为多个子场景分别烘焙。更新显卡驱动Progressive烘焙器严重依赖GPU陈旧的驱动可能导致兼容性问题或性能低下。查看控制台错误烘焙过程中输出的错误或警告信息是重要的线索。4.2 光照贴图上有明显的接缝或瑕疵问题在物体边缘或UV块边界处看到颜色或亮度的不连续。排查与解决增加Lightmap Padding这是解决UV块间颜色渗透的直接方法。检查UV Charts在光照贴图可视化模式下看瑕疵是否发生在两个不同的UV块Chart交界处。如果是可能需要回到模型优化其第二套UV的展开让接缝出现在不显眼的位置如墙角、地面与墙的交界处。调整Filtering轻微的接缝可以通过稍微增加Filter Radius来平滑。4.3 烘焙后场景过亮或过暗问题烘焙结果与实时预览或在其他渲染器中的效果差异巨大。排查与解决检查颜色空间确保“Player Settings”中的“Color Space”设置为Linear。Gamma空间下的烘焙计算不准确容易导致过亮或对比度异常。检查光照强度确认Baked光源的Intensity是否符合物理范围。一个室内点光源的Intensity设为10可能比较合理设为100就会过曝。检查后期处理Post-Processing很多视觉效果如Bloom, Tonemapping是在烘焙之后应用的。在检查烘焙结果时暂时禁用后期处理栈Post Processing Stack查看原始光照贴图的效果。环境光照Ambient检查“Lighting”窗口“Environment”标签页下的“Ambient Intensity”和“Ambient Color”。过高的环境光会让整个场景缺乏明暗对比。4.4 法线贴图在烘焙光下无效问题开启了Directional Mode但带法线贴图的表面看起来还是平的。排查与解决确认Shader支持确保物体使用的Shader是支持光照贴图且支持方向性光照贴图的。例如Standard Shader或URP Lit Shader都支持。确认数据存在在“Lighting”窗口“Lightmaps”标签页查看生成的光照贴图列表。Directional模式应该生成两张一组后缀为_dir的即是方向图。如果只有一张说明方向图生成失败。检查导入设置确认法线贴图纹理的“Texture Type”被正确设置为“Normal map”。4.5 进阶优化光照探针Light Probes与遮挡探针Occlusion Probes对于动态物体玩家、NPC如何融入烘焙好的静态场景光照这是关键。光照探针在场景空间中布置一组探针点烘焙时它们会记录该点的光照信息球谐函数。动态物体渲染时会采样周围几个探针的数据进行插值从而获得与静态场景融合的照明。布置技巧在光照变化剧烈的区域如门口、阴影边界需要更密集的探针在开阔均匀的区域可以稀疏。务必用动态物体在场景中跑动测试观察其受光是否平滑过渡。遮挡探针Occlusion Probes这是URP/HDRP中的高级功能用于更精确地计算动态物体在静态场景中的环境光遮蔽AO效果比传统的Light Probe AO更好但需要额外的烘焙计算。掌握Lightmapping Settings的每一个参数就像一位摄影师熟悉他的相机一样。没有一套放之四海而皆准的“最佳设置”只有最适合你当前场景、目标平台和性能预算的“平衡设置”。我的习惯是为不同类型的项目移动端、PC、展示级创建几个不同的Lighting预设Lighting Preset在项目初期就确定基础参数框架。在每次重大场景修改后都从最低质量的“白模验证”预设开始迭代而不是直接动用“最终烘焙”预设这能节省大量等待时间。记住光照烘焙是艺术与技术的结合耐心地微调和基于理解的决策远比盲目拉高参数更能创造出既高效又令人惊叹的视觉体验。