Browse Source

Merge pull request #21069 from higharc/get-float-extensions-fix

Fix getting float render target extensions
Mr.doob 4 years ago
parent
commit
1dd95a4790
1 changed files with 9 additions and 2 deletions
  1. 9 2
      src/renderers/WebGLRenderer.js

+ 9 - 2
src/renderers/WebGLRenderer.js

@@ -276,7 +276,11 @@ function WebGLRenderer( parameters ) {
 
 
 		capabilities = new WebGLCapabilities( _gl, extensions, parameters );
 		capabilities = new WebGLCapabilities( _gl, extensions, parameters );
 
 
-		if ( capabilities.isWebGL2 === false ) {
+		if ( capabilities.isWebGL2 ) {
+
+			extensions.get( 'EXT_color_buffer_float' );
+
+		} else {
 
 
 			extensions.get( 'WEBGL_depth_texture' );
 			extensions.get( 'WEBGL_depth_texture' );
 			extensions.get( 'OES_texture_float' );
 			extensions.get( 'OES_texture_float' );
@@ -290,6 +294,7 @@ function WebGLRenderer( parameters ) {
 		}
 		}
 
 
 		extensions.get( 'OES_texture_float_linear' );
 		extensions.get( 'OES_texture_float_linear' );
+		extensions.get( 'EXT_color_buffer_half_float' );
 
 
 		utils = new WebGLUtils( _gl, extensions, capabilities );
 		utils = new WebGLUtils( _gl, extensions, capabilities );
 
 
@@ -1889,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)
 				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 === 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.' );
 					console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );
 					return;
 					return;