cguser

计算机图形学应用 | 张盼的博客

0%

关于 logarithmicDepthBuffer 对数深度缓冲区的笔记

打开 logarithmicDepthBuffer,那么要将相机的 far 值设置为大于等于 3,参见下方代码

1
2
3
4
5
6
7
8
9
10
//此为 three.module.js 第26063行处
p_uniforms.setValue(_gl, "projectionMatrix", camera.projectionMatrix);

if (capabilities.logarithmicDepthBuffer) {
p_uniforms.setValue(
_gl,
"logDepthBufFC",
2.0 / (Math.log(camera.far + 1.0) / Math.LN2)
);
}

如果 far 小于 3,那么 logDepthBufFC 的值将大于 1,导致最终渲染不出来。如果是自己写的着色器则不受影响,three 内置的材质会受到影响,因为内置的材质对 logDepthBufFC 做了相应的响应。