AlphaPlayer icon indicating copy to clipboard operation
AlphaPlayer copied to clipboard

fix blend color

Open JonaNorman opened this issue 2 years ago • 1 comments

The color of your left video is (A, A, A,1.0), and the color of your right video is (R * A, G A, B * A,1.0). The mix colors in shader are (R A, G *A, B *A,A). So shader color is actually pre-multiplied.

And then use it in the VideoRenderer GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA,GLES20.GL_ONE_MINUS_SRC_ALPHA) Merged (0,0,0,0) In fact, the final color is (R A A, G AA, B * A *A, A * A). This is wrong, blend two pre-multiplied colors that must be used GLES20.glBlendFunc(GLES20. GL_ONE, GLES20.GL_ONE_MINUS_SRC_ALPHA).

if left video is (A, A, A,1.0), and right video is (R , G , B ,1.0),in shader must Multiplied A

JonaNorman avatar Mar 09 '22 04:03 JonaNorman

刚开源那会就发现这个问题了,以为没多久就会修复,glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) alpha多乘了一次,会导致边缘部分色彩偏暗。

erpapa avatar Mar 15 '22 14:03 erpapa