THREE.InstancedBufferGeometry 和阴影
THREE.InstancedBufferGeometry and shadows
我正在玩实例而且很棒。
现在我试图让每个实例都投射阴影但没有运气。我制作了兰伯特 material 的克隆,添加了位置、比例等的实例处理并且正在工作,但这只投射了一个阴影:来自位置 (0,0,0) 的原始几何体的阴影(甚至如果没有实例在该位置)。
有人可以指出我在哪里寻找让它工作还是这是实例的限制或material?
谢谢
我用 post 中的信息解决了这个问题:http://blog.edankwan.com/post/three-js-advanced-tips-shadow
编辑:
我复制了 THREE.ShaderLib.depthRGBA.vertexShader 并添加了我在 material 中实际绘制实例的所有属性(平移、缩放、旋转)和代码(使用 THREE.ShaderChunk ). THREE.ShaderLib.depthRGBA.fragmentShader保持不变。
然后我用上一步创建的新 VS 和 FS 创建了一个新的 THREE.ShaderMaterial:
mesh.customDepthMaterial = new THREE.ShaderMaterial({
vertexShader: <my DepthRGBA vertex shader here>,
fragmentShader: THREE.ShaderLib.depthRGBA.fragmentShader,
....
});
我正在玩实例而且很棒。
现在我试图让每个实例都投射阴影但没有运气。我制作了兰伯特 material 的克隆,添加了位置、比例等的实例处理并且正在工作,但这只投射了一个阴影:来自位置 (0,0,0) 的原始几何体的阴影(甚至如果没有实例在该位置)。
有人可以指出我在哪里寻找让它工作还是这是实例的限制或material?
谢谢
我用 post 中的信息解决了这个问题:http://blog.edankwan.com/post/three-js-advanced-tips-shadow
编辑:
我复制了 THREE.ShaderLib.depthRGBA.vertexShader 并添加了我在 material 中实际绘制实例的所有属性(平移、缩放、旋转)和代码(使用 THREE.ShaderChunk ). THREE.ShaderLib.depthRGBA.fragmentShader保持不变。
然后我用上一步创建的新 VS 和 FS 创建了一个新的 THREE.ShaderMaterial:
mesh.customDepthMaterial = new THREE.ShaderMaterial({
vertexShader: <my DepthRGBA vertex shader here>,
fragmentShader: THREE.ShaderLib.depthRGBA.fragmentShader,
....
});