|
@@ -17869,6 +17869,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, paramT
|
|
|
|
|
|
}
|
|
|
|
|
|
+ function textureNeedsGenerateMipmaps( texture, isPowerOfTwo ) {
|
|
|
+
|
|
|
+ return texture.generateMipmaps && isPowerOfTwo &&
|
|
|
+ texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
// Fallback filters for non-power-of-2 textures
|
|
|
|
|
|
function filterFallback( f ) {
|
|
@@ -18106,7 +18113,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, paramT
|
|
|
|
|
|
}
|
|
|
|
|
|
- if ( texture.generateMipmaps && isPowerOfTwoImage ) {
|
|
|
+ if ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) {
|
|
|
|
|
|
_gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );
|
|
|
|
|
@@ -18355,7 +18362,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, paramT
|
|
|
|
|
|
}
|
|
|
|
|
|
- if ( texture.generateMipmaps && isPowerOfTwoImage ) _gl.generateMipmap( _gl.TEXTURE_2D );
|
|
|
+ if ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) _gl.generateMipmap( _gl.TEXTURE_2D );
|
|
|
|
|
|
textureProperties.__version = texture.version;
|
|
|
|
|
@@ -18533,7 +18540,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, paramT
|
|
|
|
|
|
}
|
|
|
|
|
|
- if ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );
|
|
|
+ if ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );
|
|
|
state.bindTexture( _gl.TEXTURE_CUBE_MAP, null );
|
|
|
|
|
|
} else {
|
|
@@ -18542,7 +18549,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, paramT
|
|
|
setTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );
|
|
|
setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );
|
|
|
|
|
|
- if ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_2D );
|
|
|
+ if ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) _gl.generateMipmap( _gl.TEXTURE_2D );
|
|
|
state.bindTexture( _gl.TEXTURE_2D, null );
|
|
|
|
|
|
}
|
|
@@ -18560,12 +18567,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, paramT
|
|
|
function updateRenderTargetMipmap( renderTarget ) {
|
|
|
|
|
|
var texture = renderTarget.texture;
|
|
|
+ var isTargetPowerOfTwo = isPowerOfTwo( renderTarget );
|
|
|
|
|
|
- if ( texture.generateMipmaps && isPowerOfTwo( renderTarget ) &&
|
|
|
- texture.minFilter !== NearestFilter &&
|
|
|
- texture.minFilter !== LinearFilter ) {
|
|
|
+ if ( textureNeedsGenerateMipmaps( texture, isTargetPowerOfTwo ) ) {
|
|
|
|
|
|
- var target = (renderTarget && renderTarget.isWebGLRenderTargetCube) ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;
|
|
|
+ var target = renderTarget.isWebGLRenderTargetCube ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;
|
|
|
var webglTexture = properties.get( texture ).__webglTexture;
|
|
|
|
|
|
state.bindTexture( target, webglTexture );
|