我有一个看起来像这样的小阴影,效果很好。
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
具有前一个像素颜色,但没有骰子。
如何将计算出的颜色添加到之前的颜色?我不在乎什么是最重要的,这是我可以简单地加在一起的所有发光的东西。
答案 0 :(得分:1)
如果你正在进行加性混合,那么你应该关闭深度写入。