Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
反射探针¶
备注
Reflection probes are only supported in the Clustered Forward and Forward Mobile rendering backends, not the Compatibility backend.
如 标准 3D 材质与 ORM 3D 材质 中所述,物体可以显示反射光和/或漫射光。 反射探针用作影响区域内物体的反射 和 环境光源。 它们可用于提供比 VoxelGI 和 SDFGI 更准确的反射,同时占用的系统资源相当便宜。
由于反射探针还可以存储环境光,因此当 烘焙光照贴图 不可用时(例如在程序生成的关卡中),它们可以用作 VoxelGI 和 SDFGI 的低端替代品。
反射探针还可以与屏幕空间反射同时使用,为屏幕外的对象提供反射。 在这种情况下,Godot 会将屏幕空间反射和反射探针的反射混合在一起。
参见
不确定 ReflectionProbe 是否符合你的需求?那么请到 我应该使用哪种全局光照技术? 来查阅 Godot 中可用的 GI 技术的比较。
视觉比较¶

反射探针禁用。环境天空作为反馈使用。¶

反射探针启用。¶

Reflection probe enabled with LightmapGI used at the same time. The lightmap appears in the reflection.¶
通过将反射探针与屏幕空间反射相结合,你可以两全其美:既能够一般房间结构提供高质量反射(在屏幕外时仍然存在),还可以为小的细节提供实时反射。

仅使用 ReflectionProbe 在房间中进行的反射。注意,小的细节没有任何反射。¶

仅使用屏幕空间反射在房间中进行的反射。注意,由于房间的墙面侧面已经在屏幕之外,其上的反射出现了部分缺失。¶

同时使用了 RefectionProbe 和屏幕空间反射在房间中进行的反射。屏幕空间反射和反射探针相混合,在反射探针无法显示任何反射的情况下充当后备。¶
设置 ReflectionProbe¶
添加一个 ReflectionProbe 节点.
在检查器中配置 ReflectionProbe 的范围以适应你的场景。 为了获得准确的反射,每个房间通常应该有一个 ReflectionProbe 节点(有时,对于大房间来说会有更多)。
小技巧
请记住,ReflectionProbe 范围不必是正方形,你甚至可以旋转 ReflectionProbe 节点以适应未与 X/Z 网格对齐的房间。 利用这一点可以更好地覆盖房间,而无需放置太多 ReflectionProbe 节点。
ReflectionProbe 属性¶
Update Mode(更新模式): 控制反射探针何时更新。 每次移动 ReflectionProbe 时 Once 仅渲染场景一次。 与 Always 更新模式相比,这使得渲染速度更快,后者强制探针每帧重新渲染周围的所有内容。 将此属性保留为 Once (默认),除非你需要反射探针来更新每一帧。
Intensity(强度): 反射和环境照明的亮度。 通常不需要更改其默认值
1.0
,但如果你发现反射看起来太强,可以将其减小1.0
。Max Distance(最大距离): 控制 ReflectionProbe 内部摄像头使用的最大距离。 该距离始终至少等于 Extents (范围) ,但可以增加该距离以使位于范围之外的对象在反射中可见。 此属性不会影响 ReflectionProbe 本身可见的最大距离。
Extents(范围): 将受到 ReflectionProbe 照明和反射影响的区域。
Origin Offset(原点偏移): 用于反射探针渲染的内部摄像机的原点。 这必须始终限制在 Extents 内。 如果需要,请调整此项以防止反射被正好位于 ReflectionProbe 中心的固体物体阻挡。
Box Projection(箱体投影): 控制渲染反射探针时是否应使用视差校正。 这将根据相机的位置(相对于反射探针)调整反射的外观。 这会产生很小的性能成本,但在箱型房间中,质量的提高通常是物有所值的。 请注意,这种效果在形状不太规则的房间(例如椭圆形的房间)中效果不佳。
Interior(内部): 如果启用,环境照明将不会来自环境天空,并且背景天空不会渲染到反射探针上。
Enable Shadow(启用阴影): 控制是否应在反射探针内渲染实时光阴影。 启用此功能可以提高反射质量,但会牺牲性能。 对于具有 Always 模式的反射探针,应禁用此功能,因为每帧渲染带有阴影的反射的成本非常高。 完全 烘焙光 阴影不受此设置的影响,并且无论如何都会在反射探针中渲染。
Cull Mask(剔除遮罩): 控制哪些对象在反射中可见。 该属性可以通过从反射中排除小物体来提高性能。该属性也可用于防止对象在无法使用 Origin Offset 的情况下出现自反射伪影(self-reflection artifacts)。
Mesh LOD Threshold(网格 LOD 阈值): 用于调整在反射内渲染网格的自动细节层次的阈值。 这仅影响自动生成 LOD 的网格体。 较高的值可以通过使用不太详细的几何体来提高性能,特别是对于远离反射原点的对象。 在游戏过程中,使用不太详细的对象的视觉差异通常不是很明显,尤其是在粗糙的反射中。
环境类别具有多个属性,用于调整 ReflectionProbe 渲染的环境光:
Mode(模式): 设置为 Disabled ,探针将不添加环境光。如果设置为 Environment (环境),环境光颜色将自动从环境天空(当 Interior 被禁用)和反射的平均颜色中采样。如果设置为 Constant Color (固定颜色),则使用 Color 属性中指定的颜色。 Constant Color 模式可作为区域照明的近似值。
Color(颜色): 当环境光模式设置为 Constant Mode(固定模式) 时使用的颜色。
Color Energy(颜色能量):用于环境光自定义 Color 的乘数。 这仅在环境光模式为 Custom Color(自定义颜色) 时有效。
ReflectionProbe 混合¶
为了使反射源之间的过渡更加平滑,Godot 支持自动探针混合:
最多可以在给定位置,将 4 个 ReflectionProbe 混合在一起。 当 ReflectionProbe 不接触任何其他 ReflectionProbe 节点时,它也会平滑地淡出回到环境照明中。
如果使用该功能的话,SDFGI 和 VoxelGI 将与 ReflectionProbes 顺利融合。 这允许策略性地放置 ReflectionProbes,以便在需要时获得更准确(或完全实时)的反射,同时在 VoxelGI 或 SDFGI 的影响区域中仍然具有可用的粗略反射。
要使多个 ReflectionProbe 相互混合,你需要使每个 ReflectionProbe 的部分区域相互重叠。区域范围应仅与其他反射探针(的范围)尽可能少地重叠,以提高渲染性能(通常是 3D 空间中的几个单位)。
限制¶
When using the Forward+ renderer, Godot uses a clustering approach for reflection probe rendering. As many reflection probes as desired can be added (as long as performance allows). However, there's still a default limit of 512 clustered elements that can be present in the current camera view. A clustered element is an omni light, a spot light, a decal or a reflection probe. This limit can be increased by adjusting the Rendering > Limits > Cluster Builder > Max Clustered Elements advanced project setting.
When using the Forward Mobile backend, only 8 reflection probes can be applied on each individual Mesh resource. If there are more reflection probes affecting a single mesh, not all of them will be rendered on the mesh.