Unity3D 效能優化 – Baked Lighting in Lightmaps

簡介

在介紹 Baked Lighting 之前,大家可能在沒接觸到此優化效能方法時,大家都是使用 Realtime Lighting(實時光照)。場景不大物件不多時用這種打光+陰影是沒有效能的問題,但當你製作的場景很大,就要使用到本篇提到的烘焙光照。其優點是把物件與光影的效果透過烘焙把陰影細節都烘焙製作成場景陰影貼圖,有點類似Substance PainterBake AO 的概念,讓你打光時不用開陰影就可以有開陰影功能的效果。

開始烘焙

Step0:
我們先準備好要實驗的場景,並把燈都放在最佳位置,這邊要注意燈的參數設定,如下圖,在 General 起初將他加入到場景時他會預設 Mixed,這邊要改成 Baked,且把 ShadowEnable 打勾。

Step1:
請將場景物件的 Static 狀態打勾,假如你要細部選擇,你可以選擇 Contribute GI打勾就好,但保險一點還是將 Everything 打勾,讓 Baked 可以順利進行。

Step2:
接著請檢閱你物件的 Mesh Renderer 參數,如下圖,請把 Contribute Global Illumination 打勾,可以看到下方有個警示,說的是你要把你的物件 fbx 檔案設定參數視窗的 Generate Lightmap UVs 打勾,讓系統可以依照你模型 UV 結合打光效果一同 Baked

Step3:
再來就講到比較關鍵的 Lighting 設定,如下圖,請到Window→Rendering→Lighting Settings 開啟設定視窗。

Step4:
開啟視窗後,由於我們主要是要 Baked Lightmap,所以只要看 Lightingmapping Settings就好,接著詳細介紹一下參數功能。

Lightmapper : 使用此選項指定在計算場景中的光照貼圖時要使用的內部照明計算。 這邊設定成 Progressive CPU

  • Prioritize View:此選項是關聯在Editor視窗中可看見的 Texture 他也會一併 BakeLightmap 中,並包含視線外的物件材質也包含。此選項請打勾。
  • Multiple Importance Sampling: 啟用此功能會在生成光照貼圖時加快速度,但在某些細節處會導致 Bake 的效果較模糊。此選項請打勾。
  • Direct Samples: 這可控制從每個 Texture像素拍攝的樣本數量。直接光照的樣本數,增加此值可改善貼圖質量 。這邊就用預設。
  • Indirect Sample: 間接光照的樣本數,增加此值可減少貼圖雜訊 。我把它改成 2048
  • Environment Sample: 這可以控制用於環境照明計算的樣本數量。數值高的話可改善質量,但也會增加烘烤時間。這邊我設定 512
  • Light Probe Sample Multiplier: 這可以控制用於光探針的樣品數量。它是上述值的乘數。使用較高的值可以提高光探針的質量,同時增加烘烤時間。
  • Bounce: 光線的反彈次數,增加此值可讓畫面更加真實 。我這邊用預設的數值。
  • Filtering: 過濾器,後製光罩貼圖以減少貼圖雜訊 ,這邊設定 Auto

Lightmap Resolution: 光照貼圖解析度,以紋素 Texel 為單位。增加此值可以提升貼圖品質,但是會增加非常多烘焙時間 。

Lightmap Padding:
貼圖中各形狀之間的間隔,以紋素 Texel 為單位,通常不需調整,預設值為 2 。

Lightmap Size:
光罩貼圖大小,以像素 Pixel 為單位。

Compress Lightmaps:
壓縮光照貼圖,啟用可減少貼圖檔案大小 。

Ambient Occlusion:
啟用環境遮蔽 ,這邊也是把他打勾。

Directional Mode:
定向光模式,官網有介紹,我個人認為選擇Directional比較好

Indirect Intensity:
間接光照的強度,增加此值可以增加室內光線反射亮度,預設值 1,為平衡狀態。

Albedo Boost:
控制平面中反射光的數量,增加此值可增強反射亮度,預設值 1,為真實物理性質。

Lightmap Parameters:
光照貼圖參數 ,該選項是跟著 HDRP 走,有分低到高的參數設定,簡化操作。

而參數都設定好之後,請按下上圖右下角的 Generate Lighting 按鈕,需要等待數分鐘,場景較大或是上面的設定的 Lightmap 相關參數過大時,就要等到數小時也有可能。

小結

大家可以自行地去調整參數,重複地做 Baked Lightmap,由於每個人的物件有所不同,覺得好看的感覺也不同,都可以多做調整,但相同的是,能節省資源的這個方向。可以看到Bake前的FPS與Batches,如下圖,分別是 214FPS122Batches

尚未Baked Lightmap

而下圖是 Baked Lightmap 後,且把場景上所有的 Light 陰影都關掉,地面上還是有透過 Bake 過的陰影,如此一來,才能得到減少四倍的 Batches 與增加一百多的FPS

已完成Baked Lightmap

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *