首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在WebGL中进行最大强度投影[ MIP ]

如何在WebGL中进行最大强度投影[ MIP ]
EN

Stack Overflow用户
提问于 2012-08-07 13:51:05
回答 3查看 1.3K关注 0票数 2

我已经使用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/ ]中得到解释。我需要看到黑色像素,在任何时候它不会与红色像素重叠。我需要得到的效果,如所附图片所示。

EN

回答 3

Stack Overflow用户

发布于 2012-08-08 20:13:18

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

http://jsfiddle.net/cfrsj/26/

编辑:

这就是我模拟函数的方式。我使用NormalBlending。

首先,我要确保颜色是饱和的

代码语言:javascript
运行
复制
    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是否是次要的

代码语言:javascript
运行
复制
    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
EN

Stack Overflow用户

发布于 2012-08-07 15:29:56

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

代码语言:javascript
运行
复制
gl = canvas.getContext("experimental-webgl", { alpha: false } );
票数 0
EN

Stack Overflow用户

发布于 2013-04-14 21:07:48

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11839993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档