1. 程式人生 > >在Unity3D中的渲染優化-減少需要處理的頂點數目

在Unity3D中的渲染優化-減少需要處理的頂點數目

1.優化幾何體

3D遊戲製作通常都是由模型製作開始的。我們應該儘可能減少模型中三角面片的數目,一些對於模型沒有影響,或者是肉眼很難察覺到區別的頂點都要儘可能去掉。為了儘可能減少模型中的頂點數目,美工人員往往需要優化網格結構。在很多三維建模軟體忠,都有相應的優化選項,可以自動優化網格結構

2.對於模型使用LOD技術

LOD技術的原理是物體離攝像機很遠時,模型上的很多細節是無法被察覺到的。因此,LOD允許當物件逐漸遠離攝像機時,減少模型上的面片數量,從而提高效能。

在Unity中,我們可以使用LOD Group元件來為一個物體構建一個LOD。我們需要為同一個物件準備多個包含不同細節程度的模型,然後把它們賦給LOD Group元件中的不同等級,Unity就會自動判斷當前位置上需要使用哪個等級的模型。

3.遮擋剔除技術

遮擋剔除技術用來消除那些在其它物體後面看不到的物體,這意味著資源不會浪費在計算那些看不到的頂點上,進而提升效能。

我們需要把遮擋剔除(Occlus culling)和攝像機的視椎體剔除(Frustum culling)區分開來。視椎體剔除只會剔除掉那些不在攝像機視野範圍內的物件,但不會判斷視野中是否有物體被其他物體擋住。而遮擋剔除會使用一個虛擬的攝像機來遍歷場景,從而構建一個潛在的物件集合的層級結構。在執行時刻,每個攝像機將會使用這個資料來識別哪些物體是可見的,而哪些被其他物體擋住不可見。使用遮擋剔除技術,不僅可以減少處理頂點的數目,還可以減少overdraw,提高遊戲效能。

4.總結

模型的LOD技術和遮擋剔除技術可以同時減少CPU和GPU的負荷。CPU可以提交更少的draw call,而GPU需要處理的頂點和片元數目也減少了。