我使用three.js创建了一个演示[http://jsfiddle.net/georgeneil/cfrsj/16/],它执行混合,即THREE.AdditiveBlending。但这给了我一种白光效果,因此感觉信息丢失了。
我需要一个可以投射最大强度的混合结果。我怎么能用three.js做到这一点?
在OpenGL中,我可以使用glBlendEquationEXT(GL_MAX_EXT)来完成此操作。
我更新了演示[http://jsfiddle.net/georgeneil/cfrsj/21],使概念更加清晰。现在有8个颗粒,4个是红色,剩下4个是黑色。如果MIP正常工作,即使BLACK重叠RED
,我们也只能看到RED粒子我正在寻找的内容可以从这个演示[http://jsfiddle.net/georgeneil/cfrsj/28/]中解释。我需要看到黑色像素,其中不与红色像素重叠。我需要获得附加图像中显示的效果。
答案 0 :(得分:1)
如果我理解你的问题,那么这应该是一个正确的解决方案。
编辑:
这就是我模拟这个功能的方法。我使用NormalBlending。
首先我确保颜色与
饱和 float r= vColor.r > 0.0? 1.0 : 0.0;
float g= vColor.g > 0.0? 1.0 : 0.0;
float b= vColor.b > 0.0? 1.0 : 0.0;
然后我用
检查alpha是否是nessecary gl_FragColor.a = gl_FragColor.a *
texture2D( texture, gl_PointCoord ).r *
(test.r > 0.0 ? 1.0 :
(test.g > 0.0?1.0:
(test.b > 0.0?1.0:0.0)));
答案 1 :(得分:0)
这是webgl中的一个错误。解决方法是使用
初始化glgl = canvas.getContext("experimental-webgl", { alpha: false } );
答案 2 :(得分:0)