反射探針

標準 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,其餘的將不會被渲染。