История изменений
Исправление SZT, (текущая версия) :
for (; filterSize > 0; filterSize--) {
filterVal = filters[filterPtr++];
rgba = src[srcPtr++];
r += filterVal * R(rgba);
g += filterVal * G(rgba);
b += filterVal * B(rgba);
a += filterVal * A(rgba);
};
Думаю что этот момент можно попробовать ускорить и без SSE, например разместить сразу два канала (R и B) в одной 64-битной переменной (двоичным сдвигом, например чтобы было 0x000000RR000000GG), и потом умножать на этот самый filterVal, после чего доставать результат умножения битовой маской и сдвигом
Исходная версия SZT, :
for (; filterSize > 0; filterSize--) {
filterVal = filters[filterPtr++];
rgba = src[srcPtr++];
r += filterVal * R(rgba);
g += filterVal * G(rgba);
b += filterVal * B(rgba);
a += filterVal * A(rgba);
};
Думаю что этот момент можно попробовать ускорить и без SSE, например разместить сразу два канала (R и B) в одной 64-битной переменной (двоичным сдвигом, например чтобы было 0x000000RR000000GG), и потом умножать на этот самый filterVal, после чего доставать результат умножения битовой маской