我正在使用圆形纹理渲染粒子:
圆圈具有透明像素。我正在使用,ShaderMaterial
并BufferGeometry
为每个节点提供自定义大小,颜色。但是我坚持正确的z-index渲染。在下图中:
白色颗粒离相机最近,0x00ffff
第二个是青色(),右上角的芙蓉色(0xC3206F
看起来是粉红色)最远。
如您所见,顺序不正确。理想情况下,白色圆圈应完全覆盖青色,并部分覆盖芙蓉。如果设置depthTest: true
为ShaderMaterial
,则纹理的透明区域将变为实心:
这是完整的源代码:http : //jsbin.com/mikimifipi/edit?js,输出
我可能会缺少一些混合功能,或者将着色器弄乱了。你能帮忙吗?
粒子按指定的顺序渲染BufferGeometry
。
depthTest = true
如您所言,如果,则该材料没有变成固体-它后面的粒子(并稍后渲染)根本就不会渲染。
您可以通过设置来改善一些伪像if ( tColor.a < 0.5 ) discard;
。
您可能不应该将片段着色器输出RGB预乘以alpha。在three.js中使用默认的alpha混合时,这不是正确的选择。这也是导致环出现在白色磁盘周围的原因。
three.js r.71
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句