Просмотр исходного кода

WebGLRenderer: Correctly generate mipmaps for 3D & Array RenderTargets (#29678)

* Enable generating mipmaps for 3d textures

* Update WebGLTextures.js

* Update WebGLTextures.js
Garrett Johnson 1 год назад
Родитель
Сommit
29c41b6d38
1 измененных файлов с 12 добавлено и 3 удалено
  1. 12 3
      src/renderers/webgl/WebGLTextures.js

+ 12 - 3
src/renderers/webgl/WebGLTextures.js

@@ -117,6 +117,15 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 	}
 
+	function getTargetType( texture ) {
+
+		if ( texture.isWebGLCubeRenderTarget ) return _gl.TEXTURE_CUBE_MAP;
+		if ( texture.isWebGL3DRenderTarget ) return _gl.TEXTURE_3D;
+		if ( texture.isWebGLArrayRenderTarget || texture.isCompressedArrayTexture ) return _gl.TEXTURE_2D_ARRAY;
+		return _gl.TEXTURE_2D;
+
+	}
+
 	function getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {
 
 		if ( internalFormatName !== null ) {
@@ -1927,11 +1936,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
 
 			if ( textureNeedsGenerateMipmaps( texture ) ) {
 
-				const target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;
+				const targetType = getTargetType( renderTarget );
 				const webglTexture = properties.get( texture ).__webglTexture;
 
-				state.bindTexture( target, webglTexture );
-				generateMipmap( target );
+				state.bindTexture( targetType, webglTexture );
+				generateMipmap( targetType );
 				state.unbindTexture();
 
 			}

粤ICP备19079148号