Unity性能優(yōu)化之動態(tài)合批(Dynamic batching)

動態(tài)合批原理:


image.png

動態(tài)合批條件:①使用相同的材質(zhì)球②正在視野中

注意:Shadow casters的渲染是個例外,盡管Shadow casters使用不同的材質(zhì),但是只要他們的材質(zhì)中給Shadow Caster Pass使用的參數(shù)是相同的,他們也能進(jìn)行動態(tài)合批

動態(tài)合批的適用范圍:①未勾選Static的網(wǎng)格模型②粒子系統(tǒng)、線條或軌跡渲染器

動態(tài)合批能優(yōu)化性能的原因:

①符合條件的對象將被合并到一個DrawCall中渲染

動態(tài)合批的缺點:

①由于模型頂點變換的操作,計算的模型頂點數(shù)量不宜太多,否則CPU串行計算耗費的時間太長會造成場景渲染卡頓,所以動態(tài)合批只能處理一些小的模型

動態(tài)合批失敗的情況:

①物體Mesh大于等于900個面

②改變Renderer.material將會造成一份材質(zhì)的拷貝,導(dǎo)致不滿足"使用相同材質(zhì)球"的合批條件

③如果你的著色器使用頂點位置,法線和UV值三種屬性,那么你只能批處理300頂點以下的物體;如果你的著色器需要使用頂點位置,法線,UV0,UV1和切向量,那你只能批處理180頂點以下的物體,否則都無法參與合批

動態(tài)合批中斷的情況:

①位置不相鄰且中間夾雜著不同材質(zhì)的其他物體

②物體如果都符合條件會優(yōu)先參與靜態(tài)合批,然后是GPU Instancing,最后才是動態(tài)合批

③物體之間如果有鏡像變換則不能進(jìn)行合批

④擁有l(wèi)ightmap的物體和沒有l(wèi)ightmap的物體

⑤使用Multi-pass Shader的物體會禁用動態(tài)合批

⑥Unity的Forward Rendering Path(前向渲染路徑)中如果一個物體接受多個光照會為每一個per_pixel light產(chǎn)生多余的模型提交和繪制,從而附加了多個Pass導(dǎo)致無法合批

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容