Fix T61733: wrong alpha for sequencer screen, multiply, .. blend modes.

It was copying the alpha from the foreground instead of background image,
which is not usually what is needed and inconsistent with the compositor.

Differential Revision: https://developer.blender.org/D4371
This commit is contained in:
John Quillan 2019-02-21 13:26:22 +01:00 committed by Brecht Van Lommel
parent 6e9dca2214
commit fdee84fd56
Notes: blender-bot 2023-02-14 10:37:49 +01:00
Referenced by commit bdcc258305, Fix: VSE colormix blend factor not working
Referenced by issue #61733, The various color blend mode, like Screen, Multipley, Lighten, etc Do not use the correct Alpha channel
1 changed files with 16 additions and 16 deletions

View File

@ -1318,11 +1318,11 @@ BLI_INLINE void apply_blend_function_byte(
rt = out;
while (y--) {
for (x = xo; x > 0; x--) {
achannel = rt2[3];
rt2[3] = (unsigned int) achannel * facf0;
achannel = rt1[3];
rt1[3] = (unsigned int) achannel * facf0;
blend_function(rt, rt1, rt2);
rt2[3] = achannel;
rt[3] = rt2[3];
rt1[3] = achannel;
rt[3] = rt1[3];
rt1 += 4;
rt2 += 4;
rt += 4;
@ -1332,11 +1332,11 @@ BLI_INLINE void apply_blend_function_byte(
}
y--;
for (x = xo; x > 0; x--) {
achannel = rt2[3];
rt2[3] = (unsigned int) achannel * facf1;
achannel = rt1[3];
rt1[3] = (unsigned int) achannel * facf1;
blend_function(rt, rt1, rt2);
rt2[3] = achannel;
rt[3] = rt2[3];
rt1[3] = achannel;
rt[3] = rt1[3];
rt1 += 4;
rt2 += 4;
rt += 4;
@ -1357,11 +1357,11 @@ BLI_INLINE void apply_blend_function_float(
rt = out;
while (y--) {
for (x = xo; x > 0; x--) {
achannel = rt2[3];
rt2[3] = achannel * facf0;
achannel = rt1[3];
rt1[3] = achannel * facf0;
blend_function(rt, rt1, rt2);
rt2[3] = achannel;
rt[3] = rt2[3];
rt1[3] = achannel;
rt[3] = rt1[3];
rt1 += 4;
rt2 += 4;
rt += 4;
@ -1371,11 +1371,11 @@ BLI_INLINE void apply_blend_function_float(
}
y--;
for (x = xo; x > 0; x--) {
achannel = rt2[3];
rt2[3] = achannel * facf1;
achannel = rt1[3];
rt1[3] = achannel * facf1;
blend_function(rt, rt1, rt2);
rt2[3] = achannel;
rt[3] = rt2[3];
rt1[3] = achannel;
rt[3] = rt1[3];
rt1 += 4;
rt2 += 4;
rt += 4;