CIFilter - 0-1范围内的样本

时间:2016-09-14 00:46:02

标签: core-image cifilter imagefilter

CIFilter使用与GLSL(https://developer.apple.com/library/content/documentation/GraphicsImaging/Reference/CIKernelLangRef/ci_gslang_ext.html)不同的采样语法。

texture2D(texture, position)使用不同的坐标系,而不是位置在[0, 1]*[0, 1]中的明确CIFilter。它可以对与输出位置对应的像素进行采样,因为CIFilter为您提供了一些功能:

sample(texture, samplerTransform(texture, destCoord()))

丑陋但很好。

我想使用纹理作为过滤函数,即做

之类的事情
vec3 color = ...;
color.r = texture2D(filterTexture, vec2(color.r, 0.333)).r;

所以我真的需要能够以0-1的比例进行采样。知道如何在CIFilter内完成此操作吗?

我尝试过像以下一样奇怪的事情:

vec2 imageSize = samplerTransform(filterTexture, samplerSize(filterTexture));
vec2 imageOffset = samplerTransform(filterTexture, vec2(0.0, 0.0));
color.r = sample(filterTexture, vec2(color.r, 0.333) * imageSize + imageOffset).r;

无济于事。

0 个答案:

没有答案