在Godot场景中隐藏一盏灯,再重新烘焙光照贴图,并不代表这盏灯已经退出烘焙计算。Godot 4.5的LightmapGI文档专门提醒:隐藏灯光不会改变光照贴图的烘焙结果。要判断某盏灯是否参与,需看它的Bake Mode,而不能只看Visible状态。

这里涉及两种不同的信息。Visible描述节点的可见状态;Bake Mode则表达烘焙过程怎样对待这盏灯。文档把Disabled定义为烘焙时忽略该灯。由此可知,把灯隐藏与将其排除在烘焙之外不是等价动作,即使在编辑场景时,它们可能都让人产生“这盏灯不用了”的印象。

默认的Dynamic模式尤其容易让名称造成误会。它并不是完全不烘焙:在未启用Shadowmask的默认配置下,该模式只烘焙间接光,直接光与阴影仍保留实时计算。因而,阅读一个场景的灯光设置时,看到Dynamic不能直接断言光照贴图里没有这盏灯的影响。是否存入了间接照明,与是否保留实时直接照明需要分开理解。

Static模式则把直接光和间接光一起烘焙。文档说明,烘焙后的静态表面不会因游戏运行时移动这盏灯或改变其颜色、能量而随之更新。这里的“静态表面”限定不能省略:动态物体的照明还有自己的处理方式,不能把所有对象都概括为永远不受灯光影响。

假设在一间虚构的游戏房间中,作者想比较有无某盏灯时的墙面照明。仅记录“这次隐藏了灯”不足以解释两次烘焙差异,还应记录它使用的Bake Mode以及比较的是实时照明还是已烘焙内容。这是依据文档建立的核对思路,本文没有运行该场景,也没有截图或画质数据证明某种效果。

LightmapGI本身的一个基础限制是烘焙结果静态化:它不会像实时计算那样持续跟随场景变化。把一份旧烘焙结果与当前灯光状态混在一起观察,可能会误判属性的作用。因此,说明问题时,应把“节点现在怎样设置”和“正在观察哪次烘焙结果”写清楚,而不是用可见性一个开关解释全部光照。

本篇核对的是2026年10月12日读取的Godot官方文档4.5分支。它只讨论游戏引擎的渲染语义,不声称某种模式一定更快、画质一定更好,也不涉及真实灯具或照明工程。Disabled、Dynamic、Static各自回答的问题明确后,隐藏灯光与排除烘焙的差别才不会被混淆。

信息来源

本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。