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

问题描述 投票:4回答:2

出身于Flash背景的我,习惯于用下面的方式来创建一个片段着色器。

filters = [];

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

myShader = new Shader(filters);

因此,我可以自由而轻松地组合多个效果,而不需要每次都单独编写一个大型的shader。

在threejs的情况下,我注意到,对于复杂的视觉效果,就像这里一样,写一个单一的shader。http:/threejs.orgexamples#webgl_materials_bumpmap_skin。

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

three.js webgl shader
2个回答
5
投票

在three.js中无法直接实现。Three通过将着色器代码作为字符串直接传递给WebGL着色器对象进行编译来创建着色器。没有自动构建复杂着色器的机制,你必须自己编写。Three.js很方便地给着色器添加了几个uniformsattributes,但你必须写出用它们做什么。


0
投票

你可以使用 效果合成器 现在要结合着色器

© www.soinside.com 2019 - 2024. All rights reserved.