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

kih*_*ihu 5 shader webgl three.js

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

filters = [];

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

myShader = new Shader(filters);
Run Code Online (Sandbox Code Playgroud)

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

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

是否可以分别编写凹凸贴图着色器和环境贴图着色器,然后在需要时动态组合它们?这样做的最正确方法是什么?

小智 5

直接在three.js中是不可能的。三通过将着色器代码作为字符串直接传递给 WebGL 着色器对象进行编译来创建着色器。没有自动构建复杂着色器的机制,您必须自己编写。Three.js 方便地向着色器添加了几个统一/属性,但您必须编写如何处理它们。