Godot 4.0获得基于SDF的实时全局照明

2020-06-28 22:55:08

随着Godot 4.0工作的稳步推进,在主分支中添加了一种新的、新颖的创建全场景全局照明的方法。

SDFGI代表符号距离场全局照明。这意味着该技术大量使用有符号距离场(栅格的有符号距离函数的基于欧几里得距离的表示)来创建此照明。

虽然实现并不是最终的,而且在质量和性能方面可能会有很多改进,但现在看来它已经足够好了,可以普遍使用了。

我要非常感谢马蒂亚斯·戈德伯格在这方面的巨大帮助,感谢我们的赞助人们的持续支持,感谢蒂姆·斯威尼和史诗游戏公司对帮助我们通过史诗巨人资助我们的研究的信心。这项新技术完全是开放开发的,并在麻省理工学院的许可下实现,因此任何人都可以在自己的引擎和游戏中使用它。

SDGFI类似于动态实时光照贴图(但它不需要展开,也不使用纹理)。它是启用的,它通过为静态对象生成全局照明自动工作。它不需要光线跟踪,并且可以在大多数当前(以及一些年头)的专用GPU上运行,甚至在几年前的中端预算CPU上运行(SDFGI是在GeForce1060上开发和测试的,总是以60fps的速度运行)。

灯光更改是实时的,这意味着照明条件的任何更改都将导致立即更新。仅支持从环境中接收灯光的动态对象,但它们对照明没有贡献。最终计划对此提供一定程度的支持,但不是立即。

SDFGI还支持镜面反射,既尖锐又粗糙,所以完整的PBR场景应该只需要工作。在下图中,您可以在棋盘粗糙度纹理中看到它们:

还支持发射照明,因此具有发射通道的材质将完全与SDFGI配合使用,从而为场景提供照明。

SDFGI基本上是无泄漏的,不像当今最常用的VCT技术(如SVOGI/GIProbe/等)。只要对于给定的梯级,墙壁比体素还厚,光线就不会穿透。

确保您的网格标记为静态烘焙,然后在环境设置中启用SDFGI。就是这样。

单元格大小:显示最近级联的基本单元格大小。每个更远的级联都会复制SICE,从而允许支持全局照明的非常大的视图距离。

遮挡:在探头之间生成遮挡信息,以避免墙中的光线泄漏。遮挡通常效果良好,但必须确保墙在渲染到的层叠上比体素厚,以避免灯光泄漏。启用时成本很小。

Y比例:用水平细节换取水平范围。这对于带有内部的场景非常有用。

SDFGI层叠:将世界显示为SDF,可帮助您了解体素大小,因此可以调整几何体以更好地使用这些体素大小。

SDFGI探测器:显示探测器的位置(目前仅接近级联),帮助您了解几何图形读取光源的位置。如果某个区域的探头密度较小,则可能会得到错误的遮挡。

Godo4.0一直在改进,我们完全致力于创造一个令人惊叹的游戏引擎,你可以像使用自己的内部技术一样自由地使用它。如果您还没有,请成为我们的赞助人,帮助我们更快地改进戈多!