優化相關知識03 減少頂點數目處理

2021-10-16 22:25:26 字數 1330 閱讀 9688

抄書筆記 :unityshader 入門精要 馮樂樂

儘管drawcall是乙個非常重要的效能指標,但是頂點數目同樣可能成為gpu的瓶頸。

接下來會寫出3個常用的頂點優化策略。

1、優化幾何體

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

通常來說,unity渲染視窗顯示的頂點數目以及三角麵片的頂點數,通常要大很多。造成unity比建模軟體的頂點數差異的原因如下:

三位軟體更多的站在人類角度去理解頂點的,即組成幾何體的每個頂點都是乙個單獨的頂點。在untiy中,是在gpu的角度去計算頂點數目的,在gpu看來,有時候需要把乙個頂點拆分成兩個或者更多的頂點。這種將頂點一分為多的原因主要有兩個:

1)乙個是為了分離紋理座標,

2)為了產生平滑的邊界。

他們的本質,其實都是因為對於gpu來說,頂點每個屬性和頂點之間必須是一對一的關係。

而分離紋理座標,是因為建模時乙個頂點的紋理座標有多個,例如立方體的四個頂點。同乙個頂點的紋理座標可能不一樣,對於gpu來說是不能理解的。因此必須把這個頂點拆分成多個具有不同紋理的座標的頂點。平滑邊界也是類似的,不同的是乙個頂點可能對應多個發現資訊或者切線資訊。這通常是要決定乙個邊是一條硬邊還是一條平滑邊。

對gpu來說,他本質上只關心有多少個頂點。因此,盡可能減少頂點數目才是真正需要關心的事情。

2、lod技術

另乙個減少頂點數目的方法是lod(level of detail)技術。這種技術的原理是:物體距離攝像機很遠時,模型上的很多細節是無法被察覺的,因此lod允許當物件逐漸原理攝像機的時候,減少模型上的麵片數量,從而提高效能。

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

3、遮擋剔除技術

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

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

Unity 富文字頂點數優化

ugui的text元件勾選rich text核取方塊後支援富文字,當文字中的富文字標籤非常多時,會發現三角面和頂點數會非常多,而實際顯示的文字會很少,頂點數有時會多到報錯。原因 乙個字元會生成6個頂點,6個頂點構成2個三角面,text會把富文字標籤也進行計算,所以我們需要把text元件下,將重複的三...

優化相關知識01

抄書筆記 unityshader入門精要 馮樂樂 移動平台的特點 為了盡可能一處那些隱藏的表面,減少overdraw 乙個畫素被多次繪製 powervr晶元使用了基於瓦片的延遲渲染架構,把所有的渲染影象裝進乙個tile中 瓦片中 再由硬體找到可見的片元,而只有這些可見的片元才會執行片元著色器 另一些...

mysql優化相關知識點

所有字段建議設定為非null,從效率和索引上來說,null佔空間並且不走索引,所以請將所有字段設定為非null 有些欄位在程式中設定當值為某個具體數的時候表示為空,但這個數字在程式中又是根據不定值得來的,有可能真正有意義的數字是這個為空的數字,建議將為空的表示做成不在程式範圍的數字 有些表有建立時間...