setTextureParameters method

void setTextureParameters(
  1. dynamic textureType,
  2. Texture texture, [
  3. dynamic supportsMips
])

Implementation

void setTextureParameters(textureType, Texture texture, [supportsMips]) {
		if ( texture.type == FloatType && !extensions.has( 'OES_texture_float_linear' ) &&
			( texture.magFilter == LinearFilter || texture.magFilter == LinearMipmapNearestFilter || texture.magFilter == NearestMipmapLinearFilter || texture.magFilter == LinearMipmapLinearFilter ||
			texture.minFilter == LinearFilter || texture.minFilter == LinearMipmapNearestFilter || texture.minFilter == NearestMipmapLinearFilter || texture.minFilter == LinearMipmapLinearFilter ) ) {
			console.warning( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );
		}

		_gl.texParameteri( textureType, WebGL.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ]! );
		_gl.texParameteri( textureType, WebGL.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ]! );

		if ( textureType == WebGL.TEXTURE_3D || textureType == WebGL.TEXTURE_2D_ARRAY ) {
			_gl.texParameteri( textureType, WebGL.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ]! );
		}

		_gl.texParameteri( textureType, WebGL.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ]! );
		_gl.texParameteri( textureType, WebGL.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ]! );

		if (texture is DepthTexture && texture.compareFunction != null) {
			_gl.texParameteri( textureType, WebGL.TEXTURE_COMPARE_MODE, WebGL.COMPARE_REF_TO_TEXTURE );
			_gl.texParameteri( textureType, WebGL.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ]! );
		}

		if ( extensions.has( 'EXT_texture_filter_anisotropic' )) {
			if ( texture.magFilter == NearestFilter ) return;
			if ( texture.minFilter != NearestMipmapLinearFilter && texture.minFilter != LinearMipmapLinearFilter ) return;
			if ( texture.type == FloatType && !extensions.has( 'OES_texture_float_linear' )) return; // verify extension

			if ( texture.anisotropy > 1 || properties.get( texture )['__currentAnisotropy'] != null) {
				final extension = extensions.get( 'EXT_texture_filter_anisotropic' );
      if (kIsWeb && !kIsWasm) {
        gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT,math.min(texture.anisotropy, capabilities.getMaxAnisotropy()).toDouble());
      }
      else {
        gl.texParameterf(textureType, WebGL.TEXTURE_MAX_ANISOTROPY_EXT,math.min(texture.anisotropy, capabilities.getMaxAnisotropy()).toDouble());
      }
      properties.get( texture )['__currentAnisotropy'] = texture.anisotropy;
    }
  }
}