是否可以在ThreeJs中动态地向标准MeshMaterial添加新的制服?
这样的事情:
material = new THREE.MeshPhongMaterial();
material.uniforms = {
customTexture: new THREE.Texture(canvas),
textureSize: { value: 1024 },
};
我修改了一些THREE.ShaderChunks,因此它可以在着色器中使用新的制服,但是当材料被编译时,似乎新的制服被three.js忽略了......
答案 0 :(得分:4)
是否可以在ThreeJs中动态地向标准MeshMaterial添加新的制服?
是。请查看以下示例:webgl_materials_modified
在此演示中,MeshNormalMaterial
增强了一个额外的统一time
和一些顶点变换逻辑。它使用Material.onBeforeCompile(),它在编译着色器程序之前执行。这是在three.js
中修改内置材料的推荐方法。