简介
1 .draw call就是对底层图形程序接口的调用,以便在屏幕上画出东西。调用这些接口的是CPU
2 .fragment
1 .有可能成为像素的东西。潜在的像素,最终不一定会被画出来。这个涉及到GPU
3 .batching:批处理,将批处理之前需要很多次调用的物体合并,之后只需要调用一次底层图形的接口就可以
CPU方面的优化
1 .drawCall影响的是CPU的效率,除了CPU之外,还有一些因素会影响到CPU的效率
1 .物理系统
2 .GC
3 .代码质量
2 .draw call优化思路
1 .每个物体尽量减少渲染次数:使用Draw call batching:将一些物体合并,从而使用一个描绘来渲染他们
2 .多个物体一起渲染:把纹理打包成图集来尽量减少材质的使用
3 .尽量减少使用反光,阴影之类的,那会使物体多次渲染
4 .被批处理的网格模型需要使用相同的材质,不然是无法生效的
5 .静态批处理:物体不会移动,旋转,缩放。比如山和石头。只要物体不会移动,并且具有相同的材质,静态批处理就允许引擎对任意大小的几何物体进行批处理来降低描绘调用
6 .动态批处理:unity的动态批处理是引擎自动进行的,无需像静态批处理那样的处理。
GPU的优化
1 .GPU的瓶颈主要存在一下的方面
1 .填充率,可以简单的理解为图形处理单元每秒渲染的像素数量
2 .像素的复杂度,动态阴影,光照,复杂的shader等
3 .几何体的复杂度
4 .还有GPU的显存带宽
减少绘制数目
1 .保持材质尽可能的少,使得Unity更加便于批处理
2 .使用纹理图集,来代替一系列小的贴图。这样可以更快的加载,具有更少的状态转换,批处理更加友好。但是这些不知道babylon支不支持
3 .使用光照纹理,而非实时灯光
4 .使用LOD
5 .使用遮挡剔除
5 .压缩图片,减小显存带宽的压力、使用ETC1格式压缩,使用mipmap