问题标签 [ciwarpkernel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
94 浏览

ios - 作为自定义 CIWarpKernel 在边缘上捏图像不会产生预期的结果

我开发了一个自定义CIWarpKernel,它是我的 Numbers 模型设计的转置,如下所示:

我用来设计内核的 Numbers 模型

阳性的单元格y是: SIN($A2×PI()÷2)×(−COS(B$1×PI())×($A2+1)÷$W$3+SIN($A2 ×PI()÷2))其中$A2yB$1x并且$W$3是中心拉伸因子。

代码如下:

我遇到的问题是,尽管转置是 100% 准确的,但我在模型中没有得到相同的结果。查看生成的平铺图像变形:

扭曲平铺的图像

为什么我在中心 y=0 和上下两侧有膨胀?

有关信息,我的平铺图像如下:

平铺图像

0 投票
0 回答
42 浏览

core-image - CIWarpKernel 中的清除颜色

我有一个扭曲内核,我希望能够为某些坐标返回清晰的颜色,类似于片段着色器中的 discardFragment。

如果我只返回图像范围之外的坐标,它在渲染到 MTKView 时会按预期工作(我可以看到清晰的像素)。OTOH 渲染到位图时,应该清晰的像素采用最近边缘的颜色(类似于采样clampedToExtent 时)。

可以选择将 warp 内核重写为通用 CIKernel 并从那里返回清晰的颜色,但我们正在失去 warp 内核简单性和引擎盖下优化的好处。


我也可以想到这个解决方案:

  1. 在较大的黑色图像上叠加输入图像
  2. 应用效果后裁剪回原始范围

这将需要更改内核逻辑以考虑额外的边缘大小


有没有更简单、更清洁的方法来做到这一点?

0 投票
1 回答
157 浏览

ios - 如何将参数传递给 Metal CIWarpKernel?

我有一个简单的金属CIWarpKernel

和:

当我运行它时,我得到以下运行时错误(在上面用 指示的行<== ERROR):

如果我删除第二个MyWarp()参数,运行过滤器arguments: []并使用硬编码的偏移量,则没有错误(并且过滤器通过偏移量转换图像)。

将参数传递给我做错了CIWarpKernel什么?