问题描述
在我的任务中,我没有能力在项目中连接 сi.Metallib。我有一个 ci.Metallib 着色器,这种
#define TRACKING_HEIGHT 0.15
#define TRACKING_SEVERITY 0.025
#define TRACKING_SPEED 0.2
#define SHIMMER_SPEED 30.0
#define RGB_MASK_SIZE 2.0
#include <Metal_stdlib>
#include <CoreImage/CoreImage.h>
using namespace Metal;
extern "C" { namespace coreimage {
float mod(float x,float y) {
return float(x - y * floor(x/y));
}
float4 mainImage(sampler_h src,float time,float amount) {
// const float magnitude = sin(time) * 0.1 * amount;
float2 greenCoord = src.coord();
greenCoord.x -= sin(greenCoord.y * 500.0 + time) * INTERLACING_SEVERITY * amount;
float scan = mod(greenCoord.y,3.0);
float yOffset = floor(sin(time * SHIMMER_SPEED));
float pix = (greenCoord.y+yOffset) * src.size().x + greenCoord.x;
pix = floor(pix);
float4 colMask = float4(mod(pix,RGB_MASK_SIZE),mod((pix+1.0),mod((pix+2.0),1.0);
colMask = colMask / (RGB_MASK_SIZE - 1.0) + 0.5;
// Tracking
float t = -time * TRACKING_SPEED;
float fractionalTime = (t - floor(t)) * 1.3 - TRACKING_HEIGHT;
if(fractionalTime + TRACKING_HEIGHT >= greenCoord.y && fractionalTime <= greenCoord.y)
{
greenCoord.x -= fractionalTime * TRACKING_SEVERITY;
}
return src.sample(greenCoord).b*colMask*scan;
}
}}
我正在尝试以这种方式重写它
kernel vec4 vhsGlitchTracking(sampler image,float amount) {
float mod(float x,float y) {
return float(x - y * floor(x/y));
}
vec2 greenCoord = destCoord();
.......????
}
""")
但显然我写的完全是胡说八道。帮我翻译成可接受的内核核心映像。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)