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 方便地向着色器添加了几个统一/属性,但您必须编写如何处理它们。