我尝试在这样的球体上绘制纹理:
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
});
这确实可以正常工作,但纹理不透明,即使我更改了 alpha 值。我的纹理中的透明像素只是黑色。
但是如果我写 baseColor.a = 0.0,我就看不到纹理了,也看不到场景中它背后的东西。我想我错过了以某种方式将纹理与背景混合?
如何在 three.js 中使用 GLSL 实现这一点?
谢谢