gpt4 book ai didi

iOS 12 CIKernel 过滤器崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:53 24 4
gpt4 key购买 nike

我正在使用 Following CIColorKernel Code 来生成 customFilter。

 kernel vec4 customFilter(__sample image, __sample noise, float time, float inputNoise) { 
vec2 uv = destCoord() / 1280.0;
float d = length(uv - vec2(0.5,0.5));

float blur = inputNoise;
float myTime = time * 1.0;

vec2 myuv = vec2(uv.x + sin( (uv.y + sin(myTime)) * abs(sin(myTime) + sin(2.0 * myTime) + sin(0.3 * myTime) + sin(1.4 * myTime) + cos(0.7 * myTime) + cos(1.3 * myTime)) * 4.0 ) * 0.02,uv.y) ;

vec2 finalUV = myuv * 1280.0;
vec3 col; col.r = sample(image, samplerTransform(image, finalUV)).r; col.g = sample(image, samplerTransform(image, finalUV)).g; col.b = sample(image, samplerTransform(image, finalUV)).b;

float scanline = sin(uv.y * 1280.0 *400.0)*0.08; col -= scanline;

// vignette
col *= 1.0 - d * 0.5;

return vec4(col, 1.0);
}

这段代码适用于 iOS 10/iOS 11 设备,但是。它会在 iOS 12 设备上产生奇怪的崩溃

[CIKernelPool] 16:40: ERROR: parameter has unexpected type 'vec4' (should be a sampler type) col.r = sample(image, samplerTransform(image, finalUV)).r;

[CIKernelPool] 17:40: ERROR: parameter has unexpected type 'vec4' (should be a sampler type) col.g = sample(image, samplerTransform(image, finalUV)).g;

[CIKernelPool] 18:40: ERROR: parameter has unexpected type 'vec4' (should be a sampler type) col.b = sample(image, samplerTransform(image, finalUV)).b;

这似乎发生在所有使用 __sample 的 CIColorKernel 中。然而,使用 sampler 代替 __sample 并将 CIColorKernel 转换为 CIKernel 可以解决崩溃问题,但不会产生预期的结果。

最佳答案

如错误所述,您向

提供了错误的对象

sample(image, samplerTransform(image, finalUV)).r

这里的图片是__sample类型的。但它实际上需要 sampler 类型。

CIColorKernel 确实期望在其参数中输入 __sample。因此,你需要的是使用CIKernel 而不是 CIColorKernel。然后你可以在你的内核中提供采样器。

 kernel vec4 customFilter(sampler image, sampler noise, float time, float inputNoise) {

关于iOS 12 CIKernel 过滤器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52623246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com