unity 靜態合批


想做這樣一個優化

因為cmd drawcall太多 materials太多導致 實際上只是貼圖不一樣

想用texture2DArray把他們合起來

texArray這步功能倒是很快就好了

但是從framedebugger看一直沒有合起來 報的error是objects belong to different static batches

unity有一個枚舉會把不能合批的原因列出來 這是其中之一

我就跟進去看。。。。看的我就很lost

代碼里的意思是 smallMeshIndex不一樣不能合並 這個東西其實就是meshID

但我從編輯器里能看到他倆已經是一個Mesh了 頂點數都是合過的 

后來意識到 是我做的另一件事情導致他們不能合批的 一測確實如此

 

unity 靜態合批 功能是好的 前提是mesh必須靜態的 不能運行時對mesh有更改

我為了做texArray的測試 在運行時 拿了mesh 改了uv  加了對texArray的索引 導致不能合批 去掉就變成一個drawcall了

 

而修正uv 這步 正確的工作流也應該是 編輯時 而不是運行時 所以目測這條路可行 開心

 

想了一下 我准備寫個編輯器 解決objects have different materials(shader一樣 只有貼圖不一樣 其它ubo不一樣的 用一塊buffer用instance也能解決 這個后期迭代了)

順便其實能把mesh一起合了 不然unity運行時做靜態合批 有這部分新建geometry的memory開銷 好棒

https://i.cnblogs.com/EditPosts.aspx?postid=10557793&update=1

做出來了能出來lightmap沒啥問題 建議location 局部使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM