Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

反射探針

標準 3D 材質與 ORM 3D 材質 所述,物件可以顯示反射光與/或漫反射光。反射探針會為其影響範圍內的物件提供反射光與環境光來源。相較於 VoxelGISDFGI,反射探針能以較低系統資源消耗,提供更精確的反射效果。

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

反射探針也可以與螢幕空間反射(SSR)同時使用,為螢幕外的物件提供反射效果。在此情況下,Godot 會將螢幕空間反射與反射探針的反射進行混合。

也參考

不確定 ReflectionProbe 是否符合你的需求?請參考 我該選用哪一種全域照明技術?,了解 Godot 4 可用全域照明技術的比較。

視覺比較

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

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

反射探針已啟用。

反射探針已啟用。

反射探針已啟用。

同時啟用反射探針與 LightmapGI,光照貼圖會出現在反射中。

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

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

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

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

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

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

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

設定 ReflectionProbe

  • 新增 ReflectionProbe 節點。

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

小訣竅

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

ReflectionProbe 屬性

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

  • 強度: 控制反射和環境光的亮度。通常無需更改預設值 1.0,但如果覺得反射過強,可以將其調低。

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

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

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

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

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

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

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

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

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

  • 模式: 如果設定為 停用 ,探頭不會新增環境光。如果設定為 Environment ,環境光顏色會自動從環境天空(如果 Interior 停用)和反射的平均顏色中取樣。如果設定為 Constant Color ,則使用 Color 屬性中指定的顏色。 恆定顏色 模式可用作區域照明的近似值。

  • 顏色: 當環境光模式設定為 恆定模式 時所使用的顏色。

  • 顏色能量: 用於環境光自訂**顏色**的乘數。這僅在環境光模式為**自訂顏色**時有效。

ReflectionProbe 混合

為了使反射源之間的過渡更加平滑,Godot 支援自動探查混合:

  • 最多可以在給定位置將 4 個 ReflectionProbe 混合在一起。當 ReflectionProbe 不接觸任何其他 ReflectionProbe 節點時,它也會平滑地淡出回到環境照明。

  • 如果使用的話,SDFGI 和 VoxelGI 將與 ReflectionProbes 順利融合。這允許策略性地放置 ReflectionProbes,以便在需要時獲得更準確(或完全實時)的反射,同時在 VoxelGI 或 SDFGI 的影響區域中仍然具有可用的粗略反射。

要讓多個 ReflectionProbe 相互混合,您需要讓每個 ReflectionProbe 的部分區域相互重疊。範圍應僅與其他反射探查盡可能少地重疊,以提高算繪性能(通常是 3D空間中的幾個單位)。

限制

使用 Forward+ 渲染器時,Godot 採用 叢集 方式來處理反射探針的渲染。你可以根據效能需求自由新增反射探針。不過,當前相機畫面中「叢集元素」的預設上限為 512。叢集元素包括全向光、聚光燈、decal 以及 reflection probe。你可在 專案設定 > 渲染 > 限制 > Cluster Builder 中,調整 Max Clustered Elements 來提升這個限制。

使用 Mobile 渲染器時,每個單獨的 Mesh 資源 最多只能套用 8 個反射探針。如果有超過 8 個反射探針影響同一 Mesh,並非所有探針都會被渲染。

同樣地,使用相容性渲染器時,每個 Mesh 最多只能套用 2 個反射探針。若有超過 2 個反射探針影響同一 Mesh,其餘的將不會被渲染。