From c1ff8fcbd2f1d9550239bfa0acc38da8d679fb61 Mon Sep 17 00:00:00 2001 From: Takahiro Date: Thu, 29 Mar 2018 02:00:42 +0900 Subject: [PATCH] Update internalFormat for WebGL2.0 --- src/renderers/webgl/WebGLTextures.js | 40 ++++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/renderers/webgl/WebGLTextures.js b/src/renderers/webgl/WebGLTextures.js index 58de424716..8c01f81d04 100644 --- a/src/renderers/webgl/WebGLTextures.js +++ b/src/renderers/webgl/WebGLTextures.js @@ -302,7 +302,8 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, var image = cubeImage[ 0 ], isPowerOfTwoImage = isPowerOfTwo( image ), glFormat = utils.convert( texture.format ), - glType = utils.convert( texture.type ); + glType = utils.convert( texture.type ), + glInternalFormat = getInternalFormat( glFormat, glType ); setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage ); @@ -312,11 +313,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, if ( isDataTexture ) { - state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); } else { - state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] ); + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] ); } @@ -332,7 +333,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { - state.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + state.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); } else { @@ -342,7 +343,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, } else { - state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); } @@ -474,9 +475,8 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, var isPowerOfTwoImage = isPowerOfTwo( image ), glFormat = utils.convert( texture.format ), - glType = utils.convert( texture.type ); - - var internalFormat = getInternalFormat( glFormat, glType ); + glType = utils.convert( texture.type ), + glInternalFormat = getInternalFormat( glFormat, glType ); setTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage ); @@ -486,21 +486,21 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, // populate depth texture with dummy data - internalFormat = _gl.DEPTH_COMPONENT; + glInternalFormat = _gl.DEPTH_COMPONENT; if ( texture.type === FloatType ) { if ( ! _isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' ); - internalFormat = _gl.DEPTH_COMPONENT32F; + glInternalFormat = _gl.DEPTH_COMPONENT32F; } else if ( _isWebGL2 ) { // WebGL 2.0 requires signed internalformat for glTexImage2D - internalFormat = _gl.DEPTH_COMPONENT16; + glInternalFormat = _gl.DEPTH_COMPONENT16; } - if ( texture.format === DepthFormat && internalFormat === _gl.DEPTH_COMPONENT ) { + if ( texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) { // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT @@ -520,7 +520,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) if ( texture.format === DepthStencilFormat ) { - internalFormat = _gl.DEPTH_STENCIL; + glInternalFormat = _gl.DEPTH_STENCIL; // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL. @@ -536,7 +536,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, } - state.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null ); + state.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null ); } else if ( texture.isDataTexture ) { @@ -549,7 +549,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { mipmap = mipmaps[ i ]; - state.texImage2D( _gl.TEXTURE_2D, i, internalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); } @@ -558,7 +558,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, } else { - state.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, image.data ); + state.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data ); textureProperties.__maxMipLevel = 0; } @@ -573,7 +573,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { - state.compressedTexImage2D( _gl.TEXTURE_2D, i, internalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + state.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); } else { @@ -583,7 +583,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, } else { - state.texImage2D( _gl.TEXTURE_2D, i, internalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); } @@ -604,7 +604,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { mipmap = mipmaps[ i ]; - state.texImage2D( _gl.TEXTURE_2D, i, internalFormat, glFormat, glType, mipmap ); + state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap ); } @@ -613,7 +613,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, } else { - state.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, glFormat, glType, image ); + state.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image ); textureProperties.__maxMipLevel = 0; } -- GitLab