为什么Three.js画布遮罩不起作用?

时间:2019-03-28 08:35:20

标签: three.js glsl shader mask

我正在尝试复制此处展示的Szenia Zadvornykh的示例https://medium.com/@Zadvorsky/webgl-masking-composition-75b82dd4cdfd

他的演示基于three.js r80,因此我引用了r101并尝试删除了大多数不相关的部分,只是在顶部带有网格和png蒙版的场景。

这是我的代码:http://jsfiddle.net/mmalex/y2kt3Lrf/

已注释// composer.addPass(maskPass),该网格显示出来。但是,似乎uniform sampler2D tDiffuse并没有渲染通过的输出。

我希望在画布下看到网格助手和基础HTML内容,其中遮罩使画布透明。

更新,现在可以工作了,这要感谢@ Mugen87:http://jsfiddle.net/mmalex/y2kt3Lrf/ three.js masking canvas transparency

1 个答案:

答案 0 :(得分:1)

小提琴中的文件不匹配。如果我使用three.js的最新版本以及相应的后期处理类,则您的代码可以正常工作:

http://jsfiddle.net/pk24zby7/

three.js已将renderTarget中的forceClearWebGLrenderer.render()参数从R102中弃用。更改完成后,有必要更改示例目录中的许多文件,以避免出现警告甚至损坏。因此,将最新的后期处理类与较旧的three.js版本一起使用将无法正常工作。

由于release note中列出了更改,因此建议您阅读相应的PR,以获取更多详细信息。