UPL9-18——优化移动端渲染性能
UPL9-18——优化移动端渲染性能
避免 alpha 测试
对于一些低端移动设备,透明度测试是一项特别消耗资源的任务
在大多数的情况下,我们应该尽量避免使用透明测试,而是使用透明混合来代替
最小化 DrawCall
移动设备上高 DrawCall 通常比填充率更容易造成性能瓶颈
因此利用批处理或者自己合并网格来降低 DrawCall 是移动平台上提高性能表现的有效手段
我们应该尽量在移动平台上保证最小的 DrawCall
最小化材质数量
材质数量和 DrawCall 数量息息相关,使用更少的材质,可以有效减少 DrawCall,还可以避免打断批处理
并且它有有助于解决内存带宽问题,因此我们应该在移动平台上保证最小化材质数量
最小化纹理大小
和桌面 GPU 相比,大多数的移动设备的纹理缓存都非常小,对于一些老移动设备(iphone6s 以前),最大纹理大小仅支持 1024 * 1024 大小
目前市面上的大部分移动设备已经支持 2048 * 2048,但是还是建议在项目初期,确定针对的最低配置目标机型
了解该设备支持的最大纹理尺寸,从而来决定我们以什么尺寸来定规则,否则可能最终发布后在低端设备上会出现渲染问题
确保纹理是正方形且为2的幂
我们应该尽可能的保证我们的纹理尺寸是正方形且是 2 的幂,比如:
- 32 * 32
- 64 * 64
- 128 * 128
- 256 * 256
- 512 * 512
- 1024 * 1024
- 2048 * 2048
- 4096 * 4096
这样规则的纹理尺寸更有利于 GPU 对齐进行处理
在着色器中尽可能使用最低精度格式
移动设备的 GPU 对着色器中的精度格式很敏感,我们应该尽量使用最小的精度格式,比如 half,还应该避免精度格式的相互转换
其他
我们之前讲解的所有和渲染相关的优化建议,都是适用于移动设备的,比如:
- 减少 OverDraw
- 合理使用光照和阴影 (光照烘焙、光照探针、反射探针等)
- 减少后处理效果
- LOD、遮挡剔除
- 优化纹理采样
等等
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!
