天天看點

Shadowmask

原文連結:Shadowmask

Shadowmask是Shadowmask光照模式下的一種模式,設定後場景中所有混合光都會使用該模式。使用以下方法将混合光設定為Shadowmask:

- 在光照視窗中,選擇場景标簽,在混合光中,将光照模式設定為Shadowmask

- 在品質設定(Edit>Project Settings>Quality)中,将Shadowmask mode設定為Shadowmask

檢視文檔Mixed lighting了解混合光的更多内容,檢視文檔Light modes了解其他可用的光照模式。

Shadowmask是一個和對應lightmap有一樣的UV布局和分辨率的紋理。因為現在GPU限制紋理最多有4個通道,Shadowmask的每個紋理點上最多存儲4個光照的遮擋資訊。

Unity預處理最多4個重疊的光照從靜态GameObject向靜态GameObject投射的陰影,并且存儲到一個獨立的Shadowmask中。如果超過4個光照重疊了,所有多出來的光照會退化成Baked Lighting。烘培系統決定哪些光照退化成Baked Lighting,并且在烘培過程中保持一緻,除非有一個重疊的光照發生了變化。Light Probes同樣最多接受4個光照的遮擋資訊。

接受陰影的物體(shadowmask的紋理點)獨立計算光照重疊。也就是說隻要光照邊界不在空間中發生重疊,一個物體能夠隻使用Shadowmask/Probe的一個通道,受到10個不同混合光照的影響。如果光照發生重疊,那麼會使用其他的通道。重疊超過4個光照,就會退化成完全烘培的模式。

在Shadowmask模式中:

- 靜态GameObject使用shadowmask從其他靜态GameObject擷取陰影,不受Shadow Distance影響。使用shadow map從動态GameObject擷取陰影,受Shadow Distance影響。

- 動态GameObject使用shadow map在Shadow Distance範圍中從其他靜态物體擷取陰影。使用光探測器從靜态物體擷取陰影。陰影的保真度取決于光探測器的密度和網格婉然使用的光探測器模式。

Unity會自動合成靜态和動态GameObject的重疊陰影,因為shadow masks(儲存靜态GameObject的光照和陰影資訊)和shadow maps(儲存動态GameObject的光照和陰影資訊)隻編碼了遮擋資訊。

一個Shadowmask模式适用的例子是制作一個使用鏡面材質,烘培柔軟陰影的完全靜止場景,一個離相機不太近的動态角色向場景中投射陰影。另一個例子是烘培陰影延伸到地平線的開放世界場景,但是不能有類似白天黑夜地動态光照。

Advantages and disadvantages of Shadowmask mode

Shadowmask模式的性能需求很适合中低端PC或者移動裝置。下面是Shadowmask模式的主要優點和确定。

優點

  • 提供和Realtime Lighting一樣的視覺效果
  • 能夠實時在從動态GameObject向靜态GameObject投射陰影。
  • 着色器的一個紋理操作能處理所有靜态GameObjects的光照和陰影
  • 自動合成靜态和動态GameObject的重疊陰影
  • 由于不在shadow maps中渲染靜态GameObject,中低性能即可滿足需求
  • 提供間接光

缺點

  • 從靜态GameObject到動态GameObject的陰影隻能使用光探測器提供低分辨率陰影
  • 最多隻允許4個重疊光照
  • lightmap紋理集增加了記憶體需求
  • shadow mask紋理增加了記憶體需求
  • 2017-09-18釋出limited editorial review
  • 光照模式在5.6中增加
  • 在Unity 2017.1中增加了計算光照重疊的建議