我有一个看起来像这样的小着色器,并且效果很好。
uniform float beatScale;
varying vec3 vPos;
void main() {
vec3 normPos = (normalize(vPos) + vec3(1, 1, 1)) / vec3(2, 2, 2);
float alpha;
if (normPos.y < beatScale - 0.1) {
alpha = 0.0;
} else if (normPos.y < beatScale) {
alpha = 1.0 - (beatScale - normPos.y) / 0.1;
} else {
alpha = 1.0;
}
gl_FragColor = vec4(normPos, alpha);
}
但是我前面的对象的透明部分挡住了后面的对象,剔除了应该渲染的像素。
我很抱歉的尝试是:
gl_FragColor = gl_FragColor + vec4(normPos, alpha);
但这似乎并没有改变它。我希望gl_FragColor
有以前的像素颜色,但没有骰子。
如何将计算的颜色添加到以前的颜色?我不在乎上面是什么,这些都是我可以简单地加在一起的发光的东西。