簡(jiǎn)介
1 .draw call就是對(duì)底層圖形程序接口的調(diào)用,以便在屏幕上畫出東西。調(diào)用這些接口的是CPU
2 .fragment
1 .有可能成為像素的東西。潛在的像素,最終不一定會(huì)被畫出來(lái)。這個(gè)涉及到GPU
3 .batching:批處理,將批處理之前需要很多次調(diào)用的物體合并,之后只需要調(diào)用一次底層圖形的接口就可以
CPU方面的優(yōu)化
1 .drawCall影響的是CPU的效率,除了CPU之外,還有一些因素會(huì)影響到CPU的效率
1 .物理系統(tǒng)
2 .GC
3 .代碼質(zhì)量
2 .draw call優(yōu)化思路
1 .每個(gè)物體盡量減少渲染次數(shù):使用Draw call batching:將一些物體合并,從而使用一個(gè)描繪來(lái)渲染他們
2 .多個(gè)物體一起渲染:把紋理打包成圖集來(lái)盡量減少材質(zhì)的使用
3 .盡量減少使用反光,陰影之類的,那會(huì)使物體多次渲染
4 .被批處理的網(wǎng)格模型需要使用相同的材質(zhì),不然是無(wú)法生效的
5 .靜態(tài)批處理:物體不會(huì)移動(dòng),旋轉(zhuǎn),縮放。比如山和石頭。只要物體不會(huì)移動(dòng),并且具有相同的材質(zhì),靜態(tài)批處理就允許引擎對(duì)任意大小的幾何物體進(jìn)行批處理來(lái)降低描繪調(diào)用
6 .動(dòng)態(tài)批處理:unity的動(dòng)態(tài)批處理是引擎自動(dòng)進(jìn)行的,無(wú)需像靜態(tài)批處理那樣的處理。
GPU的優(yōu)化
1 .GPU的瓶頸主要存在一下的方面
1 .填充率,可以簡(jiǎn)單的理解為圖形處理單元每秒渲染的像素?cái)?shù)量
2 .像素的復(fù)雜度,動(dòng)態(tài)陰影,光照,復(fù)雜的shader等
3 .幾何體的復(fù)雜度
4 .還有GPU的顯存帶寬
減少繪制數(shù)目
1 .保持材質(zhì)盡可能的少,使得Unity更加便于批處理
2 .使用紋理圖集,來(lái)代替一系列小的貼圖。這樣可以更快的加載,具有更少的狀態(tài)轉(zhuǎn)換,批處理更加友好。但是這些不知道babylon支不支持
3 .使用光照紋理,而非實(shí)時(shí)燈光
4 .使用LOD
5 .使用遮擋剔除
5 .壓縮圖片,減小顯存帶寬的壓力、使用ETC1格式壓縮,使用mipmap

image.png