像素填充率-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的性能情况

相关文章:

  • 2021-08-10
  • 2021-04-20
  • 2022-02-12
  • 2021-11-14
  • 2021-04-07
  • 2021-11-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-10
  • 2021-04-12
  • 2022-12-23
  • 2021-08-14
  • 2022-02-04
  • 2021-07-29
相关资源
相似解决方案