私はこのように見える小さなシェーダーを持っていて、きちんとした効果があります。
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
ていましたが、サイコロはありませんでした。
計算された色を以前にあった色に追加するにはどうすればよいですか? 一番上にあるものは気にしません。これはすべて、単純に追加できる輝かしいものです。