На просторах интернета нашел код ниже для смешивания цветов. При ff видимость нулевая, при 00 стопроцентная видимость. Не могу понять почему так выходит.
Код:
uint32_t MMXBlend(uint32_t source, uint32_t overlap){
asm volatile(
"movd %%edx,%%mm0;"::"d"(source));
asm volatile(
"movd %%edx,%%mm1;"::"d"(overlap));
asm volatile(
"pxor %mm2, %mm2;"
"punpcklbw %mm2,%mm0;"
"punpcklbw %mm2,%mm1;"
"movq %mm1, %mm3;"
"punpckhwd %mm3,%mm3;"
"punpckhdq %mm3,%mm3;"
"mov $0xFF00FF, %edx;"
"movd %edx, %mm2;"
"punpckldq %mm2,%mm2;"
"psubw %mm3,%mm2;"
"pmullw %mm3,%mm0;"
"pmullw %mm2,%mm1;"
"psrlw $8,%mm0;"
"psrlw $8,%mm1;"
"paddw %mm1,%mm0;"
"packuswb %mm0,%mm0;"
);
asm volatile(
"movd %%mm0,%%edx":"=d"(source));
return source;
}