Threejs阴影:如何更新深度材质?

时间:2020-09-19 23:49:26

标签: three.js shader shadow depth

我有以下场景:

enter image description here

如您所见,我为定向光源激活了阴影。 问题是,当我使用顶点着色器(使用material.onBeforeCompile)更改树顶顶点时,阴影不会自动更新

因此,在尝试解决此问题时,我了解到由于光源使用深度材料来计算阴影贴图,因此我还应该更新网格的深度材料...

这就是问题所在。 设置mesh.customDepthMaterial = new THREE.MeshDepthMaterial();后,阴影甚至在我更改顶点着色器之前就消失了。

我不知道这是否有帮助,但是当我将网格物体的材质设置为new THREE.MeshDepthMaterial()时,如果没有onBeforeCompile功能,场景中的所有网格物体都会显示为黑色

编辑:添加代码

这是代码的链接:codepen

搜索功能createObject,其中有一个段:

let mesh = new THREE.Mesh(geom, material);

// mesh.customDepthMaterial = new THREE.MeshDepthMaterial();
// mesh.customDepthMaterial.onBeforeCompile = (shader) =>
// {

// }

在场景中创建的所有网格都通过此功能。 如果取消注释第一条注释行,则来自太阳的阴影会消失,但是指针的阴影会保留。

0 个答案:

没有答案