ShaderMaterial上没有三个阴影

时间:2013-09-23 17:25:52

标签: three.js webgl

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

2 个答案:

答案 0 :(得分:1)

LambertMaterial是一个内置素材,受插件支持。因此,shadow插件支持在LambertMaterial上呈现,而ShaderMaterial是您自己的着色器/材质,应该手动启用阴影支持,它不是默认设置。

切换材料:https://github.com/mrdoob/three.js/wiki/Updates

答案 1 :(得分:0)

这是带有阴影和雾的ShaderMaterial的示例

https://gist.github.com/wmcmurray/6696fc95f25bbd2401d72a74e9493261

或者您也可以从LambertMaterial或其他重写着色器,

使其支持您自己的着色器