我已经使用three.js创建了一个演示[ http://jsfiddle.net/georgeneil/cfrsj/16/ ]来执行混合,即THREE.AdditiveBlending。但这给了我一种白光效果,因此有一种信息丢失的感觉。
我需要的是一个可以投射出最大强度的混合结果。如何使用three.js完成此操作?
在OpenGL中,我可以使用glBlendEquationEXT(GL_MAX_EXT)做到这一点。
我已经更新了demo [ http://jsfiddle.net/georgeneil/cfrsj/21 ],以使概念更清晰。现在有8个粒子,4个是红色的,剩下的4个是黑色的。如果MIP工作正常,即使当黑色与红色重叠时,我们也只能看到红色粒子

我正在寻找的东西可以从这个演示[ http://jsfiddle.net/georgeneil/cfrsj/28/ ]中得到解释。我需要看到黑色像素,在任何时候它不会与红色像素重叠。我需要得到的效果,如所附图片所示。

发布于 2012-08-08 20:13:18
如果我理解你的问题,那么这应该是一个正确的解决方案。
http://jsfiddle.net/cfrsj/26/
编辑:
这就是我模拟函数的方式。我使用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是否是次要的
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)));https://stackoverflow.com/questions/11839993
复制相似问题