Unity 光照系統中的陰影


陰影類型(Shadow)

Unity3D 的燈光可以設置不同的陰影類型,分別是:無陰影、硬陰影、軟陰影。

要注意的是,不論是硬陰影還是軟陰影,本質上都是用陰影貼圖模擬的陰影效果,而不是真實光照而自然形成的暗色區域。

  

燈光上陰影設置部分會隨着Mode參數的不同而變化,Realtime Lighting Mode 對應的選項很多,而 Baked Mode 僅對應 Baked Shadow Angle 一項。

  • 無陰影

燈光不產生陰影,新建場景后默認生成的平行光就是無陰影的。

  • 硬陰影

陰影邊緣清晰

  • 軟陰影

陰影邊緣柔和,有過渡效果

 陰影質量設置

  雖然我們在燈光的陰影設置中可以調節 Resolution 以提高陰影質量,但真正的陰影質量調節應該在 Quality 面板中來進行,燈光中的陰影 Resolution 參數默認設置是 Use Quality Settings,就是從Quality 面板的設定中來選擇。
  

從菜單 Edit > Project Settings > Quality 打開 Quality 面板,這里可以針對不同質量等級設置不同的參數。

  

這里僅對 Shadows(陰影)部分的屬性進行解讀:

  • Shadows:在當前質量下是不渲染陰影,還是只渲染硬陰影,還是軟硬陰影都渲染

  • Shadow Resolution:在當前質量下陰影貼圖分辨率,這就對應了燈光面板中的 Resolution 參數

  • Shadow Projection:陰影貼圖的投影方式,Close Fit 方式會優化近處的陰影質量,缺點是運動狀態下可能會出現一些波動,Stable Fit 方式不會有波動,但質量比較差

  * 有時候陰影貼圖會出錯,比如無緣無故多出一條亮縫之類的問題,通常可以選擇切換到 Close Fit 方式來解決;

  * 如果不想切換到 Close Fit 方式,可以適當降低燈光陰影參數中的 Normal Bias 參數,或者將對應場景物體設置成雙面顯示。

  • hadow Near Plane Offset:很近處不渲染陰影

  • Shadow Cascades:陰影貼圖疊加方式,可以是單層、2層或者4層

  • Cascade Splits:不同層所對應場景區域的比例分配划分

  

  Shadow Cascadse 是一種陰影貼圖算法,比如選擇 4 層疊加,那么實際上會計算 4 次陰影貼圖,每次對應距離攝影機一定距離范圍內的場景物體,而這個距離范圍的划分就通過 Cascadse Splits 中所顯示的紫、綠、黃、紅四種顏色區域所占的比例來區分:

  紫色表示最近處的區域,而紅色表示最遠處的區域。

  紫色的條形區域越窄表示其對應的那一層陰影貼圖所對應的場景區域越小,這樣一來該區域的陰影貼圖精度就會越高。

這里的 Shadow Resolution 就對應了燈光面板中的 Resolution 參數。

  

渲染路徑(Rendering Path)

Unity3D 提供兩種渲染路徑(Rendering Path),可以理解成是兩種不同的渲染器:

  • Forward 渲染路徑

  在 Forward 渲染路徑下,每個物體會被每個光源渲染成一個“通道”,因此物體受到越多燈光的影響,其渲染次數就會越多。

  Forward 渲染路徑的優勢在於,在燈光比較少的情況下,Forward 方式的渲染速度會非常快,處理透明貼圖也非常快。

  但 Forward 渲染路徑的渲染速度會隨着燈光的增多而迅速變慢,在一些有很多燈光照明的特定場景中(比如高科技室內環境)並不適合使用 Forward 渲染路徑。

  • Deferred 渲染路徑

  使用 Deffered 渲染路徑,渲染時間不會隨着燈光的增多而提高,而是會隨着受整體光照影響區域的擴大而提高

  (也就是說,場景中越多像素被照亮,渲染速度就越慢,但全屏被照亮的情況下,燈光設置復雜度並不會進一步影響渲染速度)。

  Deffered 渲染路徑在整體上需要更多的計算量,對於一些移動設備,Deffered 渲染路徑還不能支持。

  * Unity 默認的渲染路徑是 Deffered 渲染,如果場景非常簡單,或者希望使用 MSAA,可以自行修改成 Forward 渲染路徑。

 
 
 
 
 

***| 以上內容僅為學習參考、學習筆記使用 |***

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM