使用z缓冲区正确渲染透明度

时间:2014-05-24 16:41:02

标签: three.js webgl

透镜和z缓冲区有问题。一个平面的透明度隐藏了另一个平面。

蝴蝶是简单的几何形状,基本上是两个平面(4个三角形)。我渲染50只蝴蝶,因为在顶点着色器中传递具有纹理的位置。纹理是透明的png。 alphaTest不能对透明设置为true的材质起作用(尝试0.5和其他值)。也尝试所有类型混合没有良好的结果。并且depthWrite = false没有帮助,因为那时alpha不是,但问题是深度排序会弄得一团糟。

如果我在没有着色器的情况下每次调用渲染一只蝴蝶,则alpha测试工作正常。 你可以在这里看到错误

the error

我正在使用three.js版本67.如果有人可以帮助我,我将不胜感激:)

1 个答案:

答案 0 :(得分:0)

在这种情况下,看起来你可以简单地 Discarding Fragments位于机翼的隐形部分。