From 341aa569e4eed79ee34be34e27e35b941a0a7983 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Sat, 6 Feb 2021 11:39:28 +0000 Subject: [PATCH] WebGLTextures: Clean up. --- src/renderers/webgl/WebGLTextures.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/renderers/webgl/WebGLTextures.js b/src/renderers/webgl/WebGLTextures.js index ef98cd8bfe54ed..6cd0376aee6f99 100644 --- a/src/renderers/webgl/WebGLTextures.js +++ b/src/renderers/webgl/WebGLTextures.js @@ -244,8 +244,10 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, function deallocateRenderTarget( renderTarget ) { + const texture = renderTarget.texture; + const renderTargetProperties = properties.get( renderTarget ); - const textureProperties = properties.get( renderTarget.texture ); + const textureProperties = properties.get( texture ); if ( ! renderTarget ) return; @@ -280,7 +282,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, } - properties.remove( renderTarget.texture ); + properties.remove( texture ); properties.remove( renderTarget ); } @@ -832,9 +834,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, // Setup storage for target texture and bind it to correct framebuffer function setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) { - const glFormat = utils.convert( renderTarget.texture.format ); - const glType = utils.convert( renderTarget.texture.type ); - const glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType ); + const texture = renderTarget.texture; + + const glFormat = utils.convert( texture.format ); + const glType = utils.convert( texture.type ); + const glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType ); if ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) { @@ -847,7 +851,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, } _gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); - _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 ); + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 ); _gl.bindFramebuffer( _gl.FRAMEBUFFER, null ); } @@ -910,9 +914,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, } else { - const glFormat = utils.convert( renderTarget.texture.format ); - const glType = utils.convert( renderTarget.texture.type ); - const glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType ); + const texture = renderTarget.texture; + + const glFormat = utils.convert( texture.format ); + const glType = utils.convert( texture.type ); + const glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType ); if ( isMultisample ) { @@ -1171,6 +1177,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, function updateRenderTargetMipmap( renderTarget ) { const texture = renderTarget.texture; + const supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2; if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {