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;
无济于事。