three.js 使用 ShaderMaterial 材质深度信息丢失问题

问题在于对数深度缓冲区的使用。传递给 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 + `
}
`;

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注