问题在于对数深度缓冲区的使用。传递给 ShaderMaterial 的着色器不能立即使用。
解决方案一
禁用对数深度缓冲区
logarithmicDepthBuffer: false
解决方案二
将几段 glsl 代码附加到三个提供的着色器中,如下所示:
import { ShaderChunk } from ‘three’;
const VertexShader = ShaderChunk.common + ‘\n’ + ShaderChunk.logdepthbuf_pars_vertex + `
…
void main() {
…
` + ShaderChunk.logdepthbuf_vertex + `
}
`;
const FragmentShader = ShaderChunk.logdepthbuf_pars_fragment + `
…
void main() {
…
` + ShaderChunk.logdepthbuf_fragment + `
}
`;