我需要在Three.js中为两个网格执行加法混合。但我也不想混合背景。刚才我在场景中混合了一切。
你能帮我正确地混合对象吗?
我有以下片段着色器(黑色像素应该是透明的):
uniform vec3 color;
uniform float time;
varying vec2 vUv;
void main() {
vec3 pixelColor = color*(sin((vUv.y + time)*40.));
float alpha = pixelColor[0]+pixelColor[1]+pixelColor[2];
if (alpha<0.) {
alpha=0.;
} else {
alpha=1.;
}
gl_FragColor = vec4(pixelColor, alpha);
}
创建材料(制服仅包含颜色):
var material1 = new THREE.ShaderMaterial({
uniforms: uniforms1,
vertexShader: vShader,
fragmentShader: fShader,
transparent: true,
blending: THREE.AdditiveBlending,
});
和网格:
mesh1 = new THREE.Mesh(geometry, material1);
mesh2 = new THREE.Mesh(geometry, material2);
设置背景(没有背景,一切看起来都不错):
renderer.setClearColor(new THREE.Color('skyblue'));
我是否犯了错误,或者在RTFM的情况下,您可以帮助链接吗?谷歌没有帮助我。