是否可以在 ThreeJs 中动态地向标准 MeshMaterial 添加新的制服?
像这样的东西:
material = new THREE.MeshPhongMaterial();
material.uniforms = {
customTexture: new THREE.Texture(canvas),
textureSize: { value: 1024 },
};
Run Code Online (Sandbox Code Playgroud)
我修改了一些 THREE.ShaderChunks,以便它能够在着色器中使用新的制服,但似乎在材质编译时新的制服被 Three.js 忽略......
是否可以在 ThreeJs 中动态地向标准 MeshMaterial 添加新的制服?
是的。请查看以下示例:webgl_materials_modified
在此演示中,MeshNormalMaterial
通过额外的统一time
和一些顶点转换逻辑进行了增强。它使用Material.onBeforeCompile(),该方法在编译着色器程序之前立即执行。这是修改 中内置材质的推荐方法three.js
。