经过3周的艰苦工作,新的Godo4.0光照映射器已经准备就绪!
不过,这是针对不同用例的不同技术。满足以下要求时,光照贴图比任何其他技术都具有显著优势:
Godot3.2中的光照映射器是一个非常简单的基于体素的光照映射器,它使用与GIProbe相同的代码。它非常有限,存在严重的性能和质量问题,因此很少使用。事实上,我们的计划是把这个新的光照映射器也移植到Godo3.2。
不幸的是没有。虽然光照映射器背后的理论相对简单,但实现实际上非常复杂,因为需要解决几个角落问题才能产生像样的质量。虽然有一些简单的库,但没有任何东西接近完整的Lightmapper实现,它是用源代码和友好的许可证发布的。
让我们希望这个实现对其他制造自己的技术或引擎的人也有用处,这样他们就可以作为参考或只是复制它。
新的光照映射器是基于GPU的,主要是在计算着色器上编写的(这意味着它通过Vulkan使用GPU完成了大部分繁重的工作)。大多数场景在几秒钟内烘焙完成,而不是几分钟或几小时。如果您的设备不支持它,将会出现使用基于CPU的设备的选项,速度会更慢,但兼容性更强。
尽管光照贴图程序是相当老的技术,但在Godot4.0分支中实现的新技术使用最先进的算法来确保最大可能的质量:
使用实际渲染代码将几何体烘焙到光照贴图坐标,以便任何现有明暗器或材质都可以工作。
使用高效的保守渲染近似来确保薄多边形不会丢失,同时避免过度增长几何体(这会降低烘焙性能)。
有效地将光照贴图中的所有纹理对象打包到纹理阵列中,以避免在渲染期间更改状态或材质。
在最终烘焙上执行基于AI的消噪器,以确保光照贴图尽可能平滑。
光照贴图器通常需要进行大量调整才能获得最佳质量。相反,这个版本投入了大量工作,因此您只需使用一组用于配置它的参数就可以获得最高的质量。
项目设置中有更高级的配置选项,但是向检查器公开的配置选项应该足以满足大多数用例。
在大多数游戏引擎中,光照贴图是为整个场景烘焙的,并且一次只能使用一个光照贴图。在戈多,不同的场景可以有自己的贴图,你可以随意混合和搭配它们。
也可以将光照贴图切换为室内光照贴图,这样可以将它们与室外光照贴图混合使用(例如,一块很大的田地和该场地上的一座城堡,进入城堡内部会使其优先于外部,因为它被标记为内部)。对于相同类型的光照贴图,Godot将在动态对象的光照贴图之间执行混合。
Godot3.x中的旧光照映射器使用灯光八叉树来赋予动态对象接收间接灯光的能力。这项技术质量很好,但存在性能和内存问题。非常大的地图缺乏细节或需要大量内存。
Godot 4.0中的版本将使用更多可以手动放置到场景中的标准灯光探测器,但它也支持自动灯光探测器放置(可通过不同的分辨率配置),以便快速工作。将额外的光探测器添加到自动生成器可以很好地工作,因此您仍然可以提高某些贴图区域的捕获质量。
因此,动态对象只是工作,看起来很棒,并且只使用非常少的CPU时间来计算它们的照明。
与Godot 3.x类似,您需要设置对象以在导入时生成光照贴图,但此过程现在工作得更好,它将在重新导入时未更改的对象中缓存光照贴图UV2坐标。
凭借这些新功能,Godot4.0将成为高端图形开发的绝佳选择。敬请关注渲染技术的下一次酷炫更新!和往常一样,请记住,我们是怀着对您和每一个喜欢制作游戏的人的爱去做这一切的。我们希望为您创造最好、最易访问的技术,并使其免费和开源,这样您的游戏就完全是您的了。如果您还没有,请考虑成为我们的赞助人,帮助我们早日实现这一目标!