我尝试通过在ShaderLib中扩展着色器(例如ShaderLib.basic)来创建自己的GLSL脚本,但不幸的是遇到了一些透明度问题:
在下图中,直接使用MeshBasicMaterial看起来很正常。
var material = new THREE.MeshBasicMaterial( params ); // color and opacity are set in params
但是当我使用ShaderMaterial时,里面的“一些”家具从窗户外看不见(这是一个奇怪的部分......),
var myShader = THREE.ShaderLib.basic;
var uniforms = THREE.UniformsUtils.clone( myShader.uniforms ); // color and opacity are set in uniforms
var material = new THREE.ShaderMaterial({
uniforms: uniforms,
vertexShader: myShader.vertexShader,
fragmentShader: myShader.fragmentShader,
transparent: true
});
by MeshBasicMaterial and by ShaderMaterial
但仍然可以从里面看到。 (comparison between inside and outside by ShaderMaterial)
(这些材料在MultiMaterial中使用BufferGeometry。)
谢谢。