From f9a1b7fc1a943d69697167c29e9b538aa44d6b83 Mon Sep 17 00:00:00 2001 From: Olli Etuaho Date: Tue, 12 Jan 2021 12:38:08 +0200 Subject: [PATCH] Fix EXT_color_buffer_half_float check for WebGL 2 EXT_color_buffer_half_float may be supported on WebGL 2 on platforms that support 16-bit float render targets but not 32-bit float render targets. --- src/renderers/WebGLRenderer.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index b0671752a209b8..2f9ba9fcf4d6b8 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1894,9 +1894,11 @@ function WebGLRenderer( parameters ) { } + const halfFloatSupportedByExt = textureType === HalfFloatType && ( extensions.get( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.get( 'EXT_color_buffer_float' ) ) ); + if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513) ! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox - ! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) { + ! halfFloatSupportedByExt ) { console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); return;