如何在threejs中组合着色器效果

时间:2013-11-07 15:25:54

标签: three.js webgl shader

来自Flash背景,我习惯于以下列方式创建片段着色器:

filters = [];

filters.push(new BasicFilter(SomeTexture));
filters.push(new NormalMapFilter(SomeOtherTexture));

myShader = new Shader(filters);

因此,我可以自由轻松地组合多种效果,而无需每次都编写大型单独的着色器。

对于threejs,我注意到对于复杂的视觉效果,会编写一个着色器,如下所示:http://threejs.org/examples/#webgl_materials_bumpmap_skin

是否可以写例如凹凸贴图着色器和环境贴图着色器,然后在需要时动态组合它们?这样做最合适的方式是什么?

2 个答案:

答案 0 :(得分:4)

直接在three.js中是不可能的。 Three通过将着色器代码作为字符串直接传递给要编译的WebGL着色器对象来创建着色器。没有自动构建复杂着色器的机制,您必须自己编写。 Three.js方便地为着色器添加了几个制服/属性,但你必须写下用它们完成的工作。

答案 1 :(得分:0)

您现在可以使用Effect Composer合并着色器

相关问题