混合光照
混合__光源是?Mode__ 屬性設(shè)置為?Mixed?的光源組件。
__混合__光源可在運(yùn)行時(shí)更改其變換和視覺(jué)屬性(例如顏色或強(qiáng)度),但僅限于嚴(yán)格的限制范圍內(nèi)。它們同時(shí)照亮靜態(tài)和動(dòng)態(tài)游戲?qū)ο?,總是提供直接光照,也可選擇提供間接光照。接受__混合__光源光照的動(dòng)態(tài)游戲?qū)ο罂偸窃谄渌麆?dòng)態(tài)游戲?qū)ο笊贤渡鋵?shí)時(shí)陰影。
場(chǎng)景中的所有__混合__光源都使用相同的__混合____光照模式。要設(shè)置__光照模式 (Lighting Mode),請(qǐng)打開(kāi) Lighting 窗口(菜單:__Window__ >?Lighting__),單擊?Scene__ 選項(xiàng)卡,然后導(dǎo)航至?Mixed Lighting?部分。

可用模式有:
Baked Indirect
Shadowmask
Subtractive
使用混合光源
混合光照對(duì)于不屬于游戲但可照亮靜態(tài)環(huán)境的光源(例如天空中不動(dòng)的太陽(yáng))非常有用?;旌瞎庠吹闹苯庸庹杖孕柙谶\(yùn)行時(shí)計(jì)算,因此靜態(tài)網(wǎng)格上的材質(zhì)將保持其視覺(jué)保真度,包括完整的基于物理著色 (PBS)?支持。

Shadowmask?模式的?Distance Shadowmask?是資源最密集的選項(xiàng),但可提供最出色效果:此選項(xiàng)可在__陰影距離 (Shadow Distance)__ (Edit?>?Project Settings?>?Quality?>?Shadows) 內(nèi)產(chǎn)生高質(zhì)量陰影,并在超出此距離后提供烘焙的高質(zhì)量陰影。例如,只要太陽(yáng)不穿過(guò)天空,就可以創(chuàng)建具有延伸到地平線的逼真陰影的大型景觀。
Subtractive?模式提供最低質(zhì)量的結(jié)果:僅為一個(gè)光源實(shí)時(shí)渲染陰影,并將陰影與烘焙的直接和間接光照進(jìn)行合成。只有目標(biāo)平臺(tái)無(wú)法使用任何其他模式時(shí)(例如,應(yīng)用程序需要在低端移動(dòng)設(shè)備上運(yùn)行,但內(nèi)存限制會(huì)阻止使用?Shadowmask?和?Distance Shadowmask?模式)才應(yīng)使用此模式作為后備解決方案。
請(qǐng)參閱?Unity 光照模式參考卡 (Unity Lighting Modes Reference Card)?了解各種模式的集中比較。
所有平臺(tái)都支持所有混合光照模式。但是,有一些渲染限制:
Subtractive?模式會(huì)回退到前向渲染(無(wú)延遲或光照 prepass 支持)。
Shadowmask?模式在僅支持四個(gè)渲染目標(biāo)的平臺(tái)上(例如許多移動(dòng)端 GPU)會(huì)回退到前向渲染(無(wú)延遲或光照 prepass 支持)。
請(qǐng)參閱渲染通道相關(guān)文檔以了解有關(guān)前向渲染和延遲渲染的更多信息。
高級(jí)用途
__混合__光源可在運(yùn)行時(shí)更改其變換和視覺(jué)屬性(例如顏色或強(qiáng)度),但僅限于嚴(yán)格的限制范圍內(nèi)。實(shí)際上,由于某些光照是烘焙的(因此是預(yù)先計(jì)算的),在運(yùn)行時(shí)更改任何參數(shù)都會(huì)導(dǎo)致在組合實(shí)時(shí)光照和預(yù)計(jì)算光照時(shí)出現(xiàn)不一致的結(jié)果。
在使用?Baked Indirect?和?Shadowmask?的情況下,直接光照的影響就像__實(shí)時(shí)__光源一樣,因此您可以更改光源的顏色、強(qiáng)度甚至變換等參數(shù)。但是,烘焙值是預(yù)先計(jì)算的,在運(yùn)行時(shí)無(wú)法更改。
例如:如果將紅色__混合__光源烘焙到光照貼圖中,但在運(yùn)行時(shí)將其顏色從紅色變?yōu)榫G色,則所有直接光照都會(huì)切換為綠色。但是,所有間接光照都被烘焙到光照貼圖中,因此它仍然是紅色的。此情況同樣適用于在運(yùn)行時(shí)移動(dòng)混合光源:直接光照將跟隨光源,但間接光照將保持在光源烘焙位置。
如果僅對(duì)直接光照引入細(xì)微的變化(例如,僅稍微修改光源的色調(diào)或強(qiáng)度),則可以獲得間接光照的優(yōu)點(diǎn)并使光源看起來(lái)有一定程度的動(dòng)態(tài)效果,但無(wú)需__實(shí)時(shí)__光源所需的額外處理時(shí)間。間接光照仍然不正確,但錯(cuò)誤可能很細(xì)微,不會(huì)令人不適。這種方案對(duì)于沒(méi)有預(yù)計(jì)算陰影信息的光源特別有效。為實(shí)現(xiàn)此方案,需要為光源禁用陰影,也可使用具有實(shí)時(shí)陰影的 Baked Indirect 模式。由于陰影遮罩是直接光照計(jì)算的一部分,因此移動(dòng)此類光源會(huì)導(dǎo)致視覺(jué)上不一致,使陰影不能正確排列。
以下視頻舉例說(shuō)明了當(dāng)混合光源移動(dòng)到離開(kāi)烘焙位置太遠(yuǎn)時(shí)會(huì)發(fā)生的情況。請(qǐng)注意,盡管對(duì)象移動(dòng)很遠(yuǎn),墻壁上的紅色間接光仍保持原位:https://youtu.be/o6pVBqrj8-s
以下視頻舉例說(shuō)明了如何略微修改混合光源而不會(huì)導(dǎo)致間接光照出現(xiàn)明顯不一致問(wèn)題:https://youtu.be/XN6ya31gm1I
技術(shù)細(xì)節(jié)
在使用混合光源的情況下,光路的最后一段(即從光源到表面的路徑)也成為預(yù)計(jì)算的一部分。但是,Unity 仍然分別處理直接光照和間接光照。它將間接光照烘焙到光照貼圖和光照探針中,然后在運(yùn)行時(shí)對(duì)光照貼圖和光照探針進(jìn)行采樣。間接光照通常為低頻率,這意味著它看起來(lái)很平滑,但不包含高度細(xì)節(jié)化的陰影或光線過(guò)渡。因此,當(dāng)陰影會(huì)產(chǎn)生高度可見(jiàn)的影響時(shí),通過(guò)直接光照處理這些陰影。
預(yù)計(jì)算和存儲(chǔ)陰影的方式的差異反映在混合光源的各種子模式中:
Baked Indirect
Shadowmask
Subtractive
陰影信息可預(yù)計(jì)算并存儲(chǔ)在陰影遮罩中。陰影遮罩是一種紋理,它與相應(yīng)的光照貼圖共享相同的 UV 布局和分辨率。它存儲(chǔ)每個(gè)紋理像素的最多四個(gè)光源的遮擋信息(因?yàn)榧y理在當(dāng)前 GPU 上限制為最多四個(gè)通道)。值的范圍是 0 到 1,中間的值標(biāo)記柔和陰影區(qū)域。
如果啟用了陰影遮罩,光照探針還會(huì)存儲(chǔ)最多四個(gè)光源的遮擋信息。如果超過(guò)四個(gè)光源相交,則多余的光源會(huì)回退到烘焙光源??墒褂藐幱罢谡种丿B可視化模式來(lái)檢查此行為。此信息是預(yù)先計(jì)算的,因此 Unity 在陰影遮罩中存儲(chǔ)的唯一陰影是從靜態(tài)游戲?qū)ο笸渡涞狡渌o態(tài)游戲?qū)ο笊系年幱啊_@些陰影可能具有更平滑的邊緣,提供比實(shí)時(shí)陰影貼圖更好的質(zhì)量,具體取決于光照貼圖分辨率。由于每個(gè)混合光源在運(yùn)行時(shí)保留其陰影遮罩通道貼圖,因此動(dòng)態(tài)游戲?qū)ο笸ㄟ^(guò)陰影貼圖投射的陰影可與來(lái)自靜態(tài)游戲?qū)ο蟮念A(yù)計(jì)算陰影正確合成,從而避免諸如雙陰影之類的不一致問(wèn)題。
靜態(tài)游戲?qū)ο蟮年幱芭c動(dòng)態(tài)游戲?qū)ο蟮年幱爸g唯一可察覺(jué)的差異是預(yù)計(jì)算的陰影遮罩與運(yùn)行時(shí)陰影貼圖的分辨率和過(guò)濾差異,此外,預(yù)計(jì)算的陰影支持各種形式的面光源,因此柔和陰影可能具有更逼真的半影。


Baked Indirect?和?Shadowmask?的共同之處在于,直接光照總是實(shí)時(shí)計(jì)算得出并添加到光照貼圖中存儲(chǔ)的間接光照,因此需要光照方向的所有材質(zhì)效果都能繼續(xù)工作。如果為該光源啟用了陰影,則動(dòng)態(tài)游戲?qū)ο罂偸窃赺_陰影距離 (Shadow Distance)__ (Edit?>?Project Settings?>?Quality?>?Shadows) 內(nèi)通過(guò)陰影貼圖在其他動(dòng)態(tài)游戲?qū)ο笊贤渡潢幱啊?/p>