unity中的渲染优化技术

1.CPU

过多的drawCall 使用批处理技术来减少drawCall数目

复杂的脚本或者物理模拟

2.GPU

顶点处理 减少顶点数 优化几何体 使用Lod技术 使用遮挡剔除技术

过多的顶点

过多的逐顶点计算

片元处理

过多的片元

过多的逐片计算

优化方案;

减少需要处理的片元数目

控制绘制顺序

警惕透明问题

减少以实时的关照

4.带宽

使用了尺寸很大且未压缩的纹理

分辨率过高的帧缓存

优化方案:

减少纹理大小

利用分辨率缩放

动态批处理:

多pass回中断批处理

批处理注意事项:

尽可能用静态批处理,但随时要小心内存的消耗,并且经过静态批处理的物体不可以再被移动

如果无法静态,要动态批处理的话,小心上面提到的各种限制,列

静态批处理更占用内存空间

对于游戏里面的金币可以使用动态批处理

对于游戏里的动画,不能使用静态批处理

批处理需要把多个模型变换到世界空间再合并他们,如果shader中存在不一些基于模型空间下的坐标运算,那么往往会得到错误的结果

一个解决方案是使用DisableBatching标签来强制使用shader材质

16.5 减少需要处理的的片元数目减少overdraw

减低GPU瓶颈

overdraw指的是一个像素被绘制了多次

为了避免overdraw,重要的优化策略是控制绘制顺序

深度测试的原因,我们可以保证物体都是从前往后绘制的,就可以最大限度减少overdraw,因为在后面绘制的物体无法通过深度测试,因此不会再进行后面的渲染处理

渲染数目小于2500的对象被认为是不透明物体,绘制顺序是从前往后而其他的是从后往前的,意味着我们尽可能的把物体队列设置为不透明物体,尽量避免使用半透明队列

减少实时光照和阴影

猜你喜欢

转载自blog.csdn.net/pengfeicfan/article/details/127081008