虛幻引擎 UE 三種光照區(qū)別
靜態(tài)光
固定光
動態(tài)光
? ?由于靜態(tài)燈僅使用光照貼圖,因此在游戲玩法之前將其陰影烘焙。這意味著它們不能影響移動(動態(tài))對象,在游戲過程中不會以任何方式改變,正如我們在示例中看到的那樣。但是,當(dāng)照明也是靜態(tài)的對象時,它們能夠產(chǎn)生區(qū)域(接觸)陰影。這是通過調(diào)整Source Radius屬性來完成的。但是,應(yīng)該注意的是,接收柔和陰影的表面可能必須正確設(shè)置其光照貼圖分辨率才能使陰影看起來很好。
? 靜態(tài)燈的主要用途是用于移動平臺上的低功耗設(shè)備。
固定燈是用于保持在一個位置的燈,但能夠以其他方式改變,例如亮度和顏色。這是他們與靜態(tài)燈不同的主要方式,靜態(tài)燈在游戲過程中不會以任何方式改變。但是,應(yīng)該注意,運行時亮度的變化只會影響直接照明。間接(反彈)照明,因為它是由Lightmass預(yù)先計算的,不會改變。
在三種光線移動中,固定光源往往具有最高質(zhì)量,中等可變性和中等性能成本。
? 固定燈的所有間接照明和陰影都存儲在Lightmap中。直接陰影存儲在Shadowmap中。這些燈使用了距離場陰影,這意味著即使在點亮的物體上具有相當(dāng)?shù)偷墓庹召N圖分辨率,它們的陰影也可以保持清晰。
? 可移動燈光投射出完全動態(tài)的光線和陰影,可以改變位置,旋轉(zhuǎn),顏色,亮度,衰減,半徑以及幾乎所有其他屬性。他們投射的光線都沒有被烘焙到光照貼圖中,目前它們不能有任何間接照明。
固定燈和靜態(tài)光一樣將其間接照明存儲在光照貼圖中。間接照明不能在運行時通過改變亮度和顏色來改變,就像直接照明一樣。這意味著即使燈具有未選中的Visible,其間接照明也將在燈光構(gòu)建期間放入燈光圖中。燈光上的IndirectLightingIntensity可用于在照明構(gòu)建時縮放或禁用給定燈光的間接照明。
然而,有一個名為IndirectLightingIntensity的后期處理音量設(shè)置,它允許您縮放燈光圖對所有燈光的貢獻,可以在運行時從藍圖中更改。
動態(tài)陰影
固定光
光源的實時陰影具有主要的性能成本。具有陰影的完全動態(tài)光通常比無陰影的動態(tài)光花費二十倍(20倍)渲染。出于這個原因,固定燈能夠在靜態(tài)物體上產(chǎn)生靜態(tài)陰影,但有一些限制。
動態(tài)對象(如靜態(tài)網(wǎng)格組件和具有可移動設(shè)置的SkeletalMeshComponents)必須從距離場陰影映射集成到靜態(tài)陰影中。這是通過每個物體的陰影來完成的。每個可移動的物體從靜止的光中產(chǎn)生兩個動態(tài)陰影:一個處理投射到物體上的靜態(tài)世界的陰影,一個處理投射到世界上的物體的陰影。在這種設(shè)置下,固定光源的唯一陰影成本來自它所影響的動態(tài)對象。這意味著,根據(jù)有多少動態(tài)對象,成本可以從很小到很大。有了足夠多的動態(tài)對象,使用可移動的光會更有效。
方向固定光(Directional Stationary Lights)的特殊之處在于,它們通過級聯(lián)陰影映射支持整個場景的陰影,同時也支持靜態(tài)陰影。這是非常有用的水平與許多動畫樹葉;你想要在玩家周圍有移動的陰影,但又不想為覆蓋大范圍的視野而付出很多級聯(lián)的代價。動態(tài)陰影在距離上逐漸消失為靜態(tài)陰影,因此過渡常常難以區(qū)分。要設(shè)置此設(shè)置,只需更改動態(tài)陰影距離靜止光的方向光靜止為您希望褪色發(fā)生的范圍。
即使在方向燈上使用級聯(lián)陰影映射,可移動組件仍然會創(chuàng)建PerObject陰影。這種行為在動態(tài)陰影距離較小的情況下是有用的,但是在較大的距離下會產(chǎn)生不必要的開銷。若要禁用PerObject陰影并保存性能,請禁用對燈光上的可移動對象使用Inset陰影。
動態(tài)光
動態(tài)燈光設(shè)置投陰影使用整個場景的動態(tài)陰影,這有一個顯著的性能成本。性能成本主要來自于光影響的網(wǎng)格數(shù),以及這些網(wǎng)格的三角形計數(shù)。這意味著投射大半徑可移動光的陰影成本將是小半徑可移動光成本的許多倍。
動態(tài)光lightmap緩存
當(dāng)一個點或聚光燈不移動時,我們可以從陰影映射中存儲該光并在下一幀中重用它。這使得陰影投射可移動的點和聚光燈在環(huán)境通常不移動的游戲中更便宜。陰影貼圖緩存應(yīng)該是任何UE4項目中自動啟用的功能。要檢查并查看使用陰影貼圖緩存獲得的性能,可以通過執(zhí)行以下操作啟用和禁用陰影貼圖緩存:
選擇要在項目級別中投射動態(tài)陰影的所有燈光。
按Backtick(`)鍵打開控制臺并鍵入Stat Shadowrendering以查看動態(tài)陰影的當(dāng)前成本。
再次按Backtick(`)鍵打開控制臺并鍵入r.Shadow.CacheWholeSceneShadows 0以禁用動態(tài)陰影緩存
請務(wù)必記下CallCount和InclusiveAug部分中的數(shù)字
現(xiàn)在再次按Backtick鍵打開控制臺并鍵入r.Shadow.CacheWholeSceneShadows 1以重新啟用陰影緩存。如果您比較CallCount和InclusiveAug數(shù)字,您可以看到此功能對動態(tài)陰影性能的影響。
雖然陰影映射緩存可以降低在UE4項目中使用動態(tài)陰影的成本,但是如果與不支持的特性一起使用,則存在一些限制,可能會導(dǎo)致呈現(xiàn)構(gòu)件。
默認情況下,緩存只能在對象滿足以下要求時才會發(fā)生:
Primitives被設(shè)置為靜態(tài)或固定。
在水平面上使用的材料不使用世界位置偏移量。
光需要是一個點或聚光燈,移動設(shè)置為可移動,并啟用陰影投射。
燈光必須保持在一個位置。
使用動畫鑲嵌或像素深度偏移的材質(zhì)在緩存陰影深度時可能會導(dǎo)致偽影。