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
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