次のように、テクスチャを球に描画しようとします。
script(type='x-shader/x-vertex')#Vertex
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
script(type='x-shader/x-fragment')#Fragment
uniform sampler2D baseTexture;
varying vec2 vUv;
void main() {
vec4 baseColor = texture2D( baseTexture, vUv );
gl_FragColor = baseColor;
}
this.materials = new THREE.ShaderMaterial( {
uniforms: this.uniforms,
vertexShader: document.getElementById( 'Vertex' ).textContent,
fragmentShader: document.getElementById( 'Fragment' ).textContent,
transparent: true,
blending: THREE.AdditiveBlending
});
これは問題なく機能しますが、アルファ値を変更してもテクスチャは透明ではありません。私のテクスチャからの透明なピクセルはただの黒です。
しかし、baseColor.a = 0.0 と書くと、テクスチャは見えなくなりますが、シーンの背後にあるものも見えなくなります。どういうわけかテクスチャと背景を混ぜ合わせていないと思いますか?
three.jsでGLSLを使用してこれを達成するにはどうすればよいですか?
ありがとう