图形渲染-像素填充率、内存带宽

像素填充率-Fill rate

  • GPU每秒可以渲染到屏幕的像素数量。(估计公式:填充率 = 总像素数 x Shader复杂度 x Overdraw)
    如果我们的游戏受到填充率的限制,那么说明我们的游戏每一帧输出到屏幕的像素数量超过了GPU的承载限度。

  • 要检查是否是 填充率 导致的GPU瓶颈方式很简单,
    运行游戏,在Profiler窗口观察GPU的效率
    减小Game窗口的尺寸达到降低窗口分辨率的效果
    再运行游戏,观察GPU的效率,如果游戏的表现提升了,那么很可能就是填充率导致的问题。
    Unity 最新的[官方文档](Unity - Manual: Optimizations)也介绍了这个公式,并告诉大家一个评估是否填充率受限的方法:
    game run faster if you decrease the display resolution? If yes, you are limited by fillrate.

  • 确定了是填充率导致的,我们可以通过以下几个方面来进行优化:
    片元着色器(Fragment Shader)是shader代码块中告诉GPU该如何逐像素渲染的部分,这部分代码是由GPU来执行的,并且每一个像素都会被计算。复杂的片元着色器代码常常是引起填充率问题的根源。

显存带宽-Memory bandwidth

  • 显存带宽指的是GPU可以读取和写入的速率。
    如果遇到显存带宽的问题,常常是由于我们使用了非常大的纹理以至于GPU无法快速的处理它。

  • 如果检查是否是显存带宽的问题,我们可以参考以下步骤:
    运行游戏并关注GPU的性能情况
    减少纹理的精度,并且可以在Quality Settings中进行相关设置。
    再次运行游戏并且关注GPU的性能情况

posted @ 2020-06-10 17:16  天山鸟  阅读(1147)  评论(0编辑  收藏  举报