在Unity存在動態合批的情況下,對mesh合併是為了什麼?

時間 2021-06-06 22:02:57

1樓:MaxwellGeng

Unity有兩種合批,動態和靜態,靜態本質就是對標記為static的Mesh自動合併,沒有任何區別。而動態合批則是將數份Mesh的資料複製貼上到一起,也就是實時的,每一幀都合併。

所以一句話總結動態合批:用複製資料的效能消耗換取提交Drawcall的效能消耗。而現代計算機擁有更加優秀的硬體和API,所以動態合批在新裝置上已經呈現負優化的趨勢了。

官方也注意到了這一點所以開發了新的SRP Batcher系統,SRP Batcher的思想在於放棄對模型的合併,轉而利用現代API「提交渲染請求不昂貴,提交渲染所需資料和改變渲染狀態更昂貴」這樣的特性,提供了SRP Batcher:

最後總結一下:靜態合批就是Mesh合併,動態合批是每一幀都進行一遍的Mesh合併。

2樓:一滴血的記憶

1,可以更靈活的控制,Unity的動態合批可能不是你想要的合批結果

2,Unity的動態合批要求比較嚴格,頂點屬性不能超過900,比如包含了法線,紋理屬性,位置資訊的則只能畫300個頂點,還有陰影,多pass,縮放不一致等等

3樓:行路難上坡

這個要追究到unity的底層呼叫,像opengl這些圖形api是以網格(即乙個mesh)為單位進行渲染的。

你可以把完整地畫出乙個mesh看成是乙個drawcall,當然不僅僅是繪製網格本身,還包括網格的材質,貼圖,著色器等這些相關的東西,實際上在繪製網格的時候draw命令只會呼叫一次,但呼叫之前還會進行資料緩衝的繫結,渲染狀態的設定,有挺多東西要跟gpu說清楚的。

這個說清楚,就是cpu與gpu通過命令進行互動的過程,cpu負責指導gpu畫什麼,怎麼畫,gpu自己只管畫。

所以,一方面cpu要準備好要跟gpu交待的東西,一方面要自己動手將資料通過匯流排搬到cpu(匯流排的傳輸速度是遠小於cpu的處理速度的)。匯流排傳輸一般都有這樣的特點,一次性傳送大量的資料(當然這裡也不能多過頭了),比分多次傳送等量的資料,要快得多,可以參照磁碟檔案系統,拷貝乙個大檔案,比將它切碎成多個小檔案進行拷貝更快。

所以結論是要盡量降低drawcall,即呼叫mesh繪製的次數。因為一次性處理乙個大mesh比多次繪製小mesh要快得多,因而可以讓cpu騰出更多的時間。

動態合併網格,可以減少drawcall次數。

那為什麼不將場景中的所有網格都合併到一起,一次性渲染出來呢?答案是,因為材質不同,材質不同,渲染設定就不同,渲染設定不同,繪製方法就不一樣,所以不能合併到一次進行繪製。

那相同材質的網格能一次性全部合併到一起繪製嗎?從圖形層原理來說,是可以的,靜態批處理就是這麼做的, 但是處理的網格大小也是有上限的,只是通常這個上限比較大。這裡也指出了,靜態和動態,從應用上來說,合併網格本身是要消耗cpu算力的,對於不動的物體,我們一次性計算好就行了,對效能的影響小,而對於動態物體(即允許你移動它的物體,跟它實際上有沒有動無關),每一幀都要重新計算合併之後的網格,如果網格很大,就會給cpu帶來可觀的負擔。

所以Unity對動態網格的合併就要做個嚴格的限制。

另外,除了大小的限制,所有會破壞一次性繪製的因素都會破壞網格的動態合併,比如著色器用了多個pass,對陰影的處理,網格的非一致縮放等。

合併網格是優化的一種思路,但它也有自己的弊端的。除了合併時對算力的消耗,對記憶體的影響也要做到心中有數。很多時候時候不僅是多了一倍的記憶體消耗,而是可能更多,因為合併的網格裡可能存在重複N次引用的網格,這些重複的網格原本只要1份,合併之後變成了N+1分。

具體的權衡要看具體的效能情況。

4樓:喵爪

合批分為動態合批和靜態合批

專案優化中最重要的是靜態合批,因為它只需要在遊戲開始時合一次,除了不能動,其他操作和沒合一樣,能culling能自己做pvs。對於靜態的物體,你只需要合貼圖,保證它能被unity合批。如果你把靜態的自己合了純粹是負優化。

而動態合批是每一幀都要合,gpu是消耗小了,可cpu吃不消了,而且限制一大堆。這裡合批主要是處理合到一起之後不影響運動的物件。推薦用gpuinstance

5樓:惡魔表哥

unity的mesh動態合批是有乙個資料量的限制的,大概在1k的樣子,這1k包含頂點,法線,切線,定點色,uv以及index,超過這個大小是不會動態合的。所以對於一些超過這個限制,又使用相同的材質的mesh,可以採用合併mesh的方法。不過合併mesh要考慮記憶體以及剪下效率,小心drawcall降了其他的指標飆公升。

老公覺得在揹負房貸的情況下不想生孩子,這合理嗎?

小莉麗子 有一方不想生就別生,除非兩個人磨合談攏。因為說到底孩子不是乙個人的,等兩個人都準備好了再要是最好的。只不過年齡越大,在生理上對女人很不公平。 快樂的小丫子 他可能覺得生個孩子壓力更大,會讓你們這個家庭更辛苦,而且不能給孩子最好的 當然合不合理還得看你們自己怎麼考慮的,如果還了房貸你們經濟還...

在度量空間完備的情況下,是否存在發散的柯西列?

奶油煎蛋紅燒肉 完備空間的定義就要求所有柯西列收斂呀。 李狗嗨 這個題目本身就有問題。完備空間和柯西列定義如下 在數學分析中,完備空間又稱完備度量空間或稱柯西空間 Cauchy space 如果乙個度量空間 中的所有柯西序列都收斂在該空間 中的一點,則稱該空間 為完備空間。1 在數學中,柯西序列 柯...

在事實確定的情況下,司法案件是否應該存在唯一的正解?

如風在 這個問題很有趣,涉及到司法案件中的裁量問題。我接觸的民事案件較多,對刑事案件了解比較少。所以先從民事案件中說起。不同的民事案件,在對證據的要求上是不同的,所以,在對證據的認定後,所形成的法律事實上,是天然的存在差異性的,這與法官在證據認定的過程中所形成的自由心證密切相關,所以,題目中假設的法...