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.

如下所示 doc_spatial_material , 物件可以顯示反射光或漫反射光. 反射探頭用作其影響區域內物體的反射光和環境光源.

由於反射探查還可以儲存環境光,因此當烘焙光照貼圖 <doc_using_lightmap_gi> 不可行時(例如在程式產生的關卡中),它們可以用作 VoxelGI 和 SDFGI 的低端替代品。

反射探查還可以與螢幕空間反射同時使用,為螢幕外物件提供反射。在這種情況下,Godot 會將螢幕空間反射和反射探頭的反射混合在一起。

也參考

不確定 ReflectionProbe 是否適合您的需求?請參閱 doc_introduction_to_global_Illumination_comparison` 以了解 Godot 4 中可用的 GI 技術的比較。

視覺比較

反射探頭禁用。環境天空用作後備。

反射探頭禁用。環境天空用作後備。

必須開啟「Repeat」

必須開啟「Repeat」

必須開啟「Repeat」

Reflection probe enabled with LightmapGI used at the same time. The lightmap appears in the reflection.

透過將反射探頭與螢幕空間反射相結合,您可以兩全其美:一般房間結構的高品質反射(在螢幕外時仍然存在),同時還可以對小細節進行即時反射。

僅使用 ReflectionProbe 在房間中進行反射。

僅使用 ReflectionProbe 在房間中進行反射。請注意,小細節沒有任何反射。

僅使用螢幕空間反射在房間中進行反射。

僅使用螢幕空間反射在房間中進行反射。請注意,房間牆壁側面的反射由於不在螢幕上而部分遺失。

房間中的反射同時使用 ReflectionProbe 和螢幕空間反射。

房間中的反射同時使用 ReflectionProbe 和螢幕空間反射。螢幕空間反射與反射探查混合,在反射探查無法顯示任何反射的情況下充當後備。

測試開發版本

  • NodePath 或 StringName

  • 在屬性面板中配置 ReflectionProbe 的範圍以適合您的場景。為了獲得相當準確的反射,每個房間通常應該有一個 ReflectionProbe 節點(有時對於大房間來說更多)。

小訣竅

請記住,ReflectionProbe 範圍不必是正方形,您甚至可以旋轉 ReflectionProbe 節點以適應未與 X/Z 網格對齊的房間。利用這一點可以更好地覆蓋房間,而無需放置太多 ReflectionProbe 節點。

節點屬性

  • 更新模式: 控制反射探查何時更新。每次移動 ReflectionProbe 時 Once 僅渲染場景一次。與 Always 更新模式相比,這使得渲染速度更快,後者強制探查每影格重新渲染周圍的所有內容。將此屬性保留為**一次**(預設),除非您需要反射探查來更新每個畫面。

  • 強度: 反射和環境照明的亮度。通常不需要更改其預設值“1.0”,但如果您發現反射看起來太強,可以將其減小為“1.0”。

  • 最大距離: 控制 ReflectionProbe 內部相機使用的最大距離。該距離始終至少等於**範圍**,但可以增加該距離以使位於範圍之外的物件在反射中可見。 此屬性不會影響 ReflectionProbe 本身可見的最大距離。

  • 範圍: 將受到 ReflectionProbe 照明和反射影響的區域。

  • 原點偏移: 用於反射探查渲染的內部攝影機的原點。這必須始終限制在**範圍**內。如果需要,請調整此項以防止反射被剛好位於 ReflectionProbe 中心的固體物體阻擋。

  • 盒子投影: 控制渲染反射探查時是否應使用視差校正。這將根據相機的位置(相對於反射探頭)調整反射的外觀。這會產生很小的性能成本,但在盒形房間中,品質的提高通常是值得的。請注意,這種效果在形狀不太規則的房間(例如橢圓形房間)中效果不佳。

  • 內部: 如果啟用,環境照明將不會來自環境天空,背景天空不會渲染到反射探查上。

  • 啟用陰影: 控制是否應在反射探查內渲染即時光陰影。啟用此功能可以提高反射質量,但會犧牲性能。對於具有 Always 模式的反射探查,應停用此功能,因為每個畫面渲染帶有陰影的反射的成本非常高。完全烘焙光 <doc_using_lightmap_gi>` 陰影不受此設定的影響,無論如何都會在反射探查中渲染。

  • 剔除蒙版: 控制哪些物件在反射中可見。這可以透過從反射中排除小物體來提高性能。這也可用於防止物件在無法使用 原點偏移 的情況下出現自反射偽影。

  • 網格 LOD 閾值: 用於在反射內渲染網格的自動細節等級閾值。這僅會影響自動產生 LOD 的網格體。較高的值可以透過使用不太詳細的幾何體來提高性能,特別是對於遠離反射原點的物件。在遊戲過程中,使用不太詳細的物件的視覺差異通常不是很明顯,尤其是在粗糙的反射中。

Ambient 類別具有多個屬性來調整 ReflectionProbe 渲染的環境光照:

  • 模式: 如果設定為 停用,探頭不會新增環境光。如果設定為 Environment,環境光顏色會自動從環境天空(如果 Interior 停用)和反射的平均顏色中取樣。如果設定為 Constant Color,則使用 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.