2

我创建了一个演示 [ http://jsfiddle.net/georgeneil/cfrsj/16/ ] 使用执行混合的three.js,即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/ ] 中解释。我需要查看不与红色像素重叠的黑色像素。我需要得到如附图所示的效果。在此处输入图像描述

4

3 回答 3

1

如果我理解您的问题,那么这应该是一个正确的解决方案。

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)));
于 2012-08-08T12:13:18.317 回答
0

您可能对以下两个链接感兴趣:

于 2013-04-14T13:07:48.200 回答
0

这是webgl中的一个错误。一种解决方法是使用初始化 gl

gl = canvas.getContext("experimental-webgl", { alpha: false } );
于 2012-08-07T07:29:56.117 回答