Unity乾貨知識:加速Lightmap烘焙速度的一些小技巧

陝西優就業發表於2019-01-26

Unity中的Lightmap烘焙速度一直是經常被人吐槽的一個問題,一個極其簡單的小場景使用預設引數時烘焙都要幾分鐘,而大場景往往要烘幾個小時甚至十幾小時。

不過Unity的烘焙系統有提供許多可調引數,透過合理調整這些引數能夠顯著加快烘焙速度。

1.調節Indirect Resolution

這個引數影響的是光照圖中間接光的質量,並不會影響最後出圖的陰影效果。而這個引數對於效果的影響不大,一般情況下無需調到太高值,在保證間接光質量OK的情況下儘量調小這個值即可。

2.調節Lightmap Resolution

降低這個值可以直接減少烘焙時間以及lightmap佔用記憶體,能直接影響最後Lightmap的畫素密度而質量降低的代價以陰影質量的降低最為顯著。一般建議設為Indirect Resolution的10倍大小。而且這個值越小,最後烘焙的光照圖也越小,能夠起到節省記憶體的效果。

另外,對於某些面積較大,或離得較遠,不需要很高精度陰影的模型,也可以對它的光照圖解析度進行單獨修改,修改位置在Mesh Renderer元件中。

3.調節烘焙模型的數量

減少需要參與烘焙的物體數量,很多細碎的物體並不需要很精確的間接光照效果,而且也可能根本沒有足夠的光照貼圖精度來對應這些細碎物體。

我們可以讓重要的物體參與烘焙,而一些不重要的小物體就交給光照探頭來解決。極端需求下可以全場景使用光照探頭著色。這樣就能節省很大一部分記憶體。

4.調節Reflection Resolution

降低Reflection Probe以及Environment Reflections的解析度。減少烘焙時間的同時極大降低記憶體佔用。一般建議不要超過256,可以先設定為64,然後再根據效果適當往上調整。

5.減少Realtime UV Charts的數量

這裡說的UV Charts不是最終lightmap的UV Charts,而是烘焙過程中生成的間接光Lightmap的UV Charts。這一點可以透過Mesh Renderer元件上的Optimize Realtime UV選項進行最佳化。

對於那些明顯UV Charts太散的Mesh Renderer,我們可以透過勾選Mesh Renderer元件上的Optimize Realtime UVS後調整Max Distance和Max Angle進行修正。

6.控制Cluster的密度

在工程資料夾裡新建一個Lightmap Parameters,裡面會有一些新的引數Cluster,它的分塊數量影響著烘焙的速度。我們甚至可以直接調整它的解析度。

我們可以透過Scene view中的Clustering模式來視覺化Cluster的分佈情況,一般來說,這個值可以取0.3-0.6之間。

透過以上所述手段我們儘可能把烘焙的時間流程縮短後,可能會發現某些地方的烘焙質量不夠。從原則上來說,速度與質量是兩個對立的東西。速度越快質量越差是個不可違背的自然規律。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902581/viewspace-2564917/,如需轉載,請註明出處,否則將追究法律責任。

相關文章