function MergeRegEx(F, B, M: TColor32): TColor32;
procedure MergeMemEx(F: TColor32; var B: TColor32; M: TColor32);
Merges the foreground color with the background color using alpha of the foreground color scaled by the master alpha value M. Alpha-Channels are also merged.
SA = 1 - (1 - (M * FA)) (1 - BA)
SRGB = ((M * FA) * FRGB + BA * (1 - FA) * BRGB) / SA
M is defined as TColor32 to avoid unnecessary type conversions, it must store only values in [0..255] range, the function does not perform range checking and the result in case M > 255 is not specified.
MergeRegEx takes parameters and produces the result operating on CPU registers.
MergeMemEx operates with the background color referenced by a memory address.
Note, that after using MergeEx functions, you have to call EMMS. Otherwise CPU will be unable to handle floating point instructions.