Three.js在ShaderMaterial上没有阴影

Three.js在ShaderMaterial上没有阴影,three.js,webgl,Three.js,Webgl,我正在用three.js创建地形编辑器,遇到了一些问题。 第一。阴影在MeshLambertMaterial上渲染,但不会在ShaderMaterial上渲染。 第二如何在运行时更改对象的材质(从lambert到shader)? 下面是我的编辑器的演示:http://78.62.160.169/webgl/editor/ 和源代码:http://78.62.160.169/webgl/editor/script.jsLambertMaterial是插件支持的内置材料。因此,shadow插件支持在

我正在用three.js创建地形编辑器,遇到了一些问题。 第一。阴影在MeshLambertMaterial上渲染,但不会在ShaderMaterial上渲染。 第二如何在运行时更改对象的材质(从lambert到shader)? 下面是我的编辑器的演示:
http://78.62.160.169/webgl/editor/

和源代码:
http://78.62.160.169/webgl/editor/script.js

LambertMaterial
是插件支持的内置材料。因此,shadow插件支持在
LambertMaterial
上渲染,而
ShaderMaterial
是您自己的着色器/材质,应该手动启用阴影支持,默认情况下不设置


切换材料:

LambertMaterial
是插件支持的内置材料。因此,shadow插件支持在
LambertMaterial
上渲染,而
ShaderMaterial
是您自己的着色器/材质,应该手动启用阴影支持,默认情况下不设置


切换材质:

以下是具有阴影和雾的ShaderMaterial示例

或者也可以从LambertMaterial或其他材质重写着色器


使其支持您自己的着色器

以下是带有阴影和雾的ShaderMaterial示例

或者也可以从LambertMaterial或其他材质重写着色器


使其支持您自己的着色器

Ok。那么,在ShaderMaterial上启用阴影的方法是什么呢?提取生成的阴影贴图并在着色器中混合。确定。那么,在ShaderMaterial上启用阴影的方法是什么呢?提取生成的阴影贴图并在着色器中混合。