4

我有一个用 SpriteKit 编写的游戏,它使用具有模糊效果的 SKEffectNode 来模糊一组精灵,其中一个精灵具有相当大的纹理,并且它们一起覆盖了相当大的屏幕区域。iMac 和 Mac Book Pro 可以很好地解决这个问题,但在更简陋的 Mac Book 上,添加效果节点后帧速率会显着下降。由于效果对游戏的功能并不重要,我可以简单地不要为图形功能不太强大的机器添加 SKEffectNode。

那么问题来了:我可以通过什么 API 来确定“GPU 的能力”或“应用纹理效果时的性能”或 [在此处建议更好的指标] 以及通过什么 API 进行的良好编程检查是什么?感谢您的建议!

4

1 回答 1

6

您必须使用实际的模糊过程和一些示例内容创建性能测试,以准确了解每一代硬件的时间成本。

以编程方式,模糊是非常奇怪的事情。Box Blur 可以为您提供大部分漂亮、柔和的高斯模糊外观,但处理成本要低得多。即使在强大的硬件上,缩放或运动模糊(看起来不错)也非常昂贵。

在进行模糊处理时,还有一些非常有效的“秘籍”。因为不需要细节,您可以大量优化操作,特别是在模糊强烈的情况下。

人们相信,苹果会做这样的事情,例如,它的模糊性:

  1. 大幅缩小目标图像
  2. 对这个小图像进行高斯模糊
  3. 稍微扩大规模
  4. 使用便宜的 Box Blur 软化它
  5. 完全缩小到所需大小

通过一个可怕的例子,从良好的缩放中受益(过滤设置为良好的缩放)

这是模糊的全尺寸图像:

在此处输入图像描述

这是同一图像的一个版本,缩放到其原始大小的 16 分之一,模糊,然后将模糊图像放大。正如你所看到的,由于良好的缩放和缺乏细节,模糊图像几乎没有任何差异,但模糊需要更少的处理能量和时间:

在此处输入图像描述

于 2017-01-14T18:08:47.693 回答