反射探针

简介

如下所示 空间材质 ,对象可以显示反射光或漫反射光. 反射探头用作其影响区域内物体的反射光和环境光源.

这种类型的探测器捕获周围环境(作为一种360度图像),并以不断增加的* blur *水平存储它的版本. 这用于模拟材质的粗糙度以及环境照明.

虽然这些探针是一种有效的存储反射的方式,但它们有一些不足之处:

  • 它们的渲染效率高,但计算成本也高.这就造成默认的行为,即它们只在场景加载时捕获.

  • 它们最适合矩形房间或地方,否则显示的反射不忠实(特别是当粗糙度为0时).

设置

创建一个ReflectionProbe节点并将其包在您想要反射的区域周围:

../../_images/refprobe_setup.png

这应该导致立即的局部反射. 如果您使用的是Sky纹理,则默认情况下会将反射与其混合.

默认情况下,在内部,反射可能看起来不太一致,在这种情况下,一定要勾选 "Box Correct[盒子更正] " 属性.

../../_images/refprobe_box_property.png

此设置将反射从无限天空盒更改为反映探测器大小的框:

../../_images/refprobe_boxcorrect.png

调整盒体墙面可能有助于改善一点反射,但是在盒子形状的房间中看起来总是最好的.

探头从Gizmo的中心捕获周围环境. 如果由于某种原因,房间的形状或内容遮挡了中心,可以通过移动中心的把手将其移到空的地方:

../../_images/refprobe_center_gizmo.png

默认情况下,渲染探针时仅禁用阴影贴图(仅在探针内的渲染图像中,而不是实际场景中). 这是节省性能和内存的简单方法. 如果您想在探头中使用阴影,可以使用* Enable Shadow *设置打开/关闭它们:

../../_images/refprobe_shadows.png

最后,请记住,您可能不希望Reflection Probe渲染某些对象. 一个典型的场景是房间内的敌人会四处移动. 要防止对象在反射中渲染,请使用 Cull Mask 设置:

../../_images/refprobe_cullmask.png

内部与外部

如果您在室内环境中使用反射探针,建议启用 Interior [内部]属性.这可以阻止探针渲染天空,还可以自定义环境光设置.

../../_images/refprobe_ambient.png

当探头设置为** Interior **时,可以为每个探头指定自定义恒定环境光. 只需选择颜色和能量.

可选,您可以通过调整 Ambient Contribution[环境贡献] 属性(0.0表示纯环境色,而1.0表示纯漫射捕获),将此环境光与探针漫射捕获混合.

混纺

可以使用多个反射探针,Godot会使用智能算法将它们混合在一起:

../../_images/refprobe_blending.png

正如所见,这种混合从来都不是完美的(毕竟,这些是盒子反射,而不是真实的反射),而这些伪像只有在使用完美的镜像反射时才可见. 通常情况下,场景具有法线映射和不同程度的粗糙度,因此可以隐藏它.

另外,反射探针与屏幕空间反射混合在一起也能很好地解决这种问题.将它们结合在一起,可以使局部反射显得更加还原,而探针只在找不到屏幕空间信息时作为备用:

../../_images/refprobe_ssr.png

最后,在制作内部和外部结合的水平时,建议混合使用内部和外部探头. 在门附近,探头可以标记为 外部 (因此它将获得天空反射),而在内部,它可以是内部.

反思地图集

在当前的渲染器实现中,所有探测器都具有相同的大小并且适合反射图集. 可以在项目设置 ->质量 ->反射中自定义探针的大小和数量

Atlas Subdiv的默认设置:8,将允许一个场景中最多有16个反射探针.如果您需要更多的反射探针,则需要增加该值.

../../_images/refprobe_atlas.png