這是我在《Unity游戲優(yōu)化 (第2版)》看的交洗,記錄一下~
批處理是啥判耕?
一般出現(xiàn)在3D圖形和游戲中
大概意思就是:
將大量任意數(shù)據(jù)快組合在一起并將它們作為單個(gè)大數(shù)據(jù)塊進(jìn)行處理的過(guò)程
對(duì)CPU或GPU友好款熬,可以使用多個(gè)內(nèi)核同時(shí)處理多個(gè)任務(wù)
批處理和分別處理有啥區(qū)別呢羊瘩?
在內(nèi)存中的不同位置來(lái)回切換內(nèi)核是需要時(shí)間的岛心,因此切換內(nèi)核所花的時(shí)間越少越好
批處理的對(duì)象通常指:
網(wǎng)格题画、頂點(diǎn)、邊配名、UV坐標(biāo)或者其他用于描述3D對(duì)象的不同數(shù)據(jù)類型的大集合
也可以簡(jiǎn)單代表批處理音頻啤咽、Sprite晋辆、紋理以及其他大數(shù)據(jù)集的行為
Unity中的批處理渠脉,通常指的是:
批處理網(wǎng)格數(shù)據(jù)的主要機(jī)制,有兩種:
1.動(dòng)態(tài)批處理
2.靜態(tài)批處理
本質(zhì)上都是把幾何體合并瓶佳,用于將多個(gè)對(duì)象的網(wǎng)格數(shù)據(jù)合并到一起芋膘,并在單一指令中渲染他們,而不是單獨(dú)準(zhǔn)備和回執(zhí)每個(gè)幾何體
沒(méi)有規(guī)定網(wǎng)格對(duì)象必須的3D空間中連續(xù)的幾何體霸饲,Rendering Pipeline(渲染管線)可以接受一些列沒(méi)有共同邊的頂點(diǎn)为朋,因此可以將本來(lái)需要多個(gè)渲染指令的多個(gè)獨(dú)立網(wǎng)格合并為單個(gè)網(wǎng)格
什么時(shí)候用動(dòng)態(tài)批處理或者靜態(tài)批處理,會(huì)帶來(lái)性能提升呢厚脉?
沒(méi)有絕對(duì)的情況
如果沒(méi)有正確使用批處理习寸,反而會(huì)惡化性能