Я пытаюсь написать CIKernel, который суммирует значения всех пикселей в изображении - фактически суммируя абсолютную разницу между двумя CIImage
с, как в сумме абсолютных разностей.
Документация информирует меня, что циклы for недопустимы, если только предикат не может быть протестирован во время компиляции.Степень изображения не может, поэтому я не уверен, как ядро может перебирать образцы и накапливать значение.Или это вообще возможно?Нужно ли делать окончательное суммирование вне ядра?
kernel vec4 coreImageKernel(sampler minuend, sampler subtrahend) {
vec4 retval = {0,0,0,0};
if destCoord().x == 0 && destCoord().y == 0 {
int i,j;
for(i = 0; i < samplerExtent(minuend).w ; i++) {
for(j = 0; j < samplerExtent(minuend).h ; j++) {
vec2 dest = {i,j};
vec4 minSample = sample(minuend , samplerTransform(minuend,dest));
vec4 subSample = sample(subtrahend, samplerTransform(subtrahend,dest));
vec4 sampleDiff = abs(minSample - subSample);
retval += sampleDiff;
}
}
}
return retval;
}