【问题标题】:GPUImage Kuwahara filter on iPhone 4SiPhone 4S 上的 GPUImage Kuwahara 滤镜
【发布时间】:2015-01-14 19:04:17
【问题描述】:

我正在使用 Brad Larson 的 GPUImage 框架。但是,当我尝试使用过滤器半径 5.0f 应用 kuwahara 过滤器时,我在 iPhone 4S 上得到了伪像。 (在更高性能的设备上运行良好)

源图片大小为2048x2048px.

通过阅读原始开发人员的 cmets,我了解到有一种看门狗计时器,当某些东西在 GPU 上运行时间过长时会触发。

所以我的问题是,我可以应用半径为5.0fKuwahara 滤镜而不会出现伪影的 iPhone 4S 的最大可能分辨率是多少?

【问题讨论】:

    标签: ios objective-c ios7 gpuimage


    【解决方案1】:

    Kuwahara 滤镜制作方形伪像,非常复杂。

    1. 您可以使用广义 Kuwahara 过滤器(例如,使用 8 段)。
    2. 您可以为选定的半径手动生成不带循环的着色器。为了减少纹理的读数,您可以制作技巧:
      • 为恒定半径生成着色器。
      • 像素偏移必须取决于当前半径和恒定半径的比率。

    您会得到一些人工制品,但它们具有艺术性(如画布)。而且桑原会更快。

    【讨论】:

      【解决方案2】:

      确实没有硬性限制。您看到的平铺伪影是由于 OpenGL ES 看门狗计时器在花费太长时间后中止了场景渲染。如果您有一帧渲染时间超过大约 2 秒,您的帧渲染将以这种方式被终止。

      所需的确切时间取决于硬件功能、系统负载、着色器复杂性和 iOS 版本。在 GPUImage 中,您几乎只能通过 Kuwahara 过滤器看到这一点,因为我为此使用了可笑的未经优化的着色器。它来自使用桌面 GPU 执行此操作的出版物,并且是关于此类移动 GPU 的最坏情况操作。有人为此提供了一个固定半径版本,速度明显更快,但如果您想在除最新设备之外的任何设备上使用大图像,则需要创建自己的优化版本。

      【讨论】:

      • 我认为可以根据 iOS 设备中每个 gpu 的性能提出一个最大限制。不知道这也可能取决于系统负载和 iOS 版本。即使有表演,桑原也是一个如此美妙的过滤器。非常感谢您的快速回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多