1. 程式人生 > >UE4官方文件_間接光照快取

UE4官方文件_間接光照快取

間接光照快取

  • SHARE:
照亮環境

indirectcache_banner.png

儘管Lightmass 可以生成靜態物件上的間接光照的光照貼圖,但像角色這樣的動態物件 也需要一種接收間接光照的方法。這個問題可以通過 Indirect Lighting Cache(間接光照快取)解決, 它在構建光照時使用Lightmass生成的樣本來計算動態物件在執行時的間接光照。

diffuse_no_indirect.png

Elemental(元素)關卡中沒有應用 間接光照快取 的漫反射光照

diffuse_indirect.png

應用了 間接光照快取 的漫反射光照

工作原理

從高層次的角度來看:

  • Lightmass把光照樣本放置到關卡的各個位置處,並在光照構建過程中計算它們的間接光照。

  • 當要渲染一個動態物件時, 間接光照快取 會檢查那個物件是否已經有了可用光照, 如果有則使用這些光照。

  • 如果沒有任何光照可用 (該物件是全新的或移動了很多), 間接光照快取 會插值預計算的光照樣本。Lightmass在朝上的表面上放置高密度的光照樣本, 其它地方則放置低密度的光照樣本。樣本僅限於在 LightmassImportanceVolume 中,且他們僅能放置在靜態表面上。

lighting_samples.png

使用 r.Cache.DrawLightingSamples 1 來視覺化地檢視Lightmass生成的光照樣本。

這個工作流程的目標是進行儘可能少的內容設定。然而,有時候,這種放置方式 不能在浮在空中的區域上呈現足夠的細節,比如,一個角色乘坐的升降機或 飛行物。您可以把LightmassCharacterIndirectDetailVolumes

 放在這些區域的周圍來獲得更多的細節。

這裡的這個花托是個InterpActor,並顯示了 5x5x5大小的插值位置。

interpolation_points.png

由於僅當物件進行了很大的移動導致光照樣本無效了時才會發生插值,因此快取會分離。注意,這些位置距離物件的邊界 是很遠的,這是為使得當該物件在世界中到處移動時可以產生連續的、穩定的光照。 大多數物件實際上會獲得 3x3x3 的插值位置。光照資料是2波段SH(就像光照貼圖一樣), 為法線貼圖提供了足夠的方向資訊,使其有效。之前,這個工作是由 DynamicLightEnvironments 處理的。 這個實現的產生主要視覺效果差異是: 在一個物件上不止有一個樣本,插值時 沒有時間延遲。

預覽未構建的光照

間接光照快取也允許預覽沒有構建光照的物件。對於較小的物件,它的效果非常好, 對於像建築物或地面這樣較大的物件就不是很好了。當您移動一個構建了光照的靜態網格物體時,它將會自動地 切換到間接光照快取,直到進行下一次構建光照為止。

這是複製的其中一根柱子,它在預覽時獲得間接光照,而不是黑色的。注意在遊戲中, 未構建光照的柱子仍然是黑色的。

unbuilt.png