I have a problem with colors and alpha in webgl.
A part of my JavaScript-Program:
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
And my fragment-shader:
precision highp float;
void main(void)
{
float c = 0.5;
float a = 0.7;
if(gl_FragCoord.x < 310.0) // left color
gl_FragColor = vec4(c, c, c, 1.0);
else if(gl_FragCoord.x > 330.0) // right color
gl_FragColor = vec4(c, c , c , a);
else gl_FragColor = vec4(c / a, c / a, c / a, 1.0); // middle color
}
I am rendering a cube.
But unfortunatelly the cube is rendered in 3 different colors. The result:
image see http://fs5.directupload.net/images/160301/hcrpgyc9.png
The first gl_FragColor-command has an alpha = 1.0. The color is rendered as expected.
The second gl_FragColor-command has an alpha-value of 0.7.
The last parameter of the third gl_FragColor-command is again 1.0. r, g and b are divided by the alpha-value of 0.7. But I would like, that this command produces the same color as the second gl_FragColor-command. It seems, that my calculations are wrong. What can I do, to get the same color?
Tested with chrome and firefox, both on windows.