From 741ed63414d369e3bf5cae95affbc5f061600aea Mon Sep 17 00:00:00 2001 From: Garrett Johnson Date: Tue, 1 Oct 2019 09:26:23 -0700 Subject: [PATCH 1/2] Use loose comparison for detecting perspective matrix in fragment shader --- .../shaders/ShaderChunk/logdepthbuf_fragment.glsl.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js b/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js index 5fcdf967f3c204..bd8a17cdb136b6 100644 --- a/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +++ b/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js @@ -1,7 +1,9 @@ export default /* glsl */` #if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) - gl_FragDepthEXT = vIsPerspective == 1.0 ? log2( vFragDepth ) * logDepthBufFC * 0.5 : gl_FragCoord.z; + // Doing a strict comparison with == 1.0 can cause noise artifacts + // on some platforms. See issue #17623. + gl_FragDepthEXT = vIsPerspective > 0.5 ? log2( vFragDepth ) * logDepthBufFC * 0.5 : gl_FragCoord.z; #endif `; From d74740fcc64e6008b1872e3f32635693cbd5d782 Mon Sep 17 00:00:00 2001 From: Garrett Johnson Date: Thu, 3 Oct 2019 09:30:59 -0700 Subject: [PATCH 2/2] Update logdepthbuf_fragment.glsl.js --- src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js b/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js index bd8a17cdb136b6..1ab95c428e95d7 100644 --- a/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +++ b/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js @@ -3,7 +3,7 @@ export default /* glsl */` // Doing a strict comparison with == 1.0 can cause noise artifacts // on some platforms. See issue #17623. - gl_FragDepthEXT = vIsPerspective > 0.5 ? log2( vFragDepth ) * logDepthBufFC * 0.5 : gl_FragCoord.z; + gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; #endif `;