Changelog » Plugins

Changes since 2020.06

New features

Changes and improvements

Build system

  • The versionPlugins.h header now gets populated from Git correctly also when inside a CMake subproject
  • Travis banned everyone from using their CI and so all Linux, macOS, Emscripten, Android and iOS builds were migrated from Travis to Circle CI, together with adding also an explicit ARM64 build. See also mosra/magnum#350 and mosra/magnum#523.
  • UseEmscripten is no longer implicitly included on Emscripten as it's not needed for anything (see mosra/magnum#490)
  • On CMake 3.16 and newer, FindMagnumPlugins.cmake can provide additional details if some component is not found.
  • FindAssimp.cmake now attempts to use installed Assimp CMake config files, if they are not broken, to correctly find and link to all dependencies in case of a static build. This is mainly to support static builds in Vcpkg, vanilla Assimp 5.0.1 config files are irreparably broken on all platforms except dynamic Windows builds.
  • The Homebrew package now uses std_cmake_args instead of hardcoded build type and install prefix, which resolves certain build issues (see mosra/homebrew-magnum#6)
  • Suppressed a GCC 10 warning about a (harmless) uninitialized variable in TinyGltfImporter (see mosra/magnum-plugins#104)
  • Updated Debian build instructions to pass --no-sign to dpkg-buildpackage, avoiding a confusing error message that might lead people to think the packaging failed (see mosra/magnum-plugins#105)
  • Fixed Debian packages to use correctly named OpenEXR dependency on Ubuntu 20.04 and Debian Buster (see mosra/magnum-plugins#105, mosra/magnum-plugins#108)
  • Fixed StbImageImporter to build again with CORRADE_BUILD_MULTITHREADED disabled.

Bug fixes

  • Fixed DrMp3AudioImporter to calculate proper buffer length for multi-channel files – it was always taking just a single channel into account
  • AssimpImporter used to add a strange "skeleton visualizer" meshes to files such as COLLADA even though the file had no skeletons in the first place. Turns out this was due to insane defaults and it was enough to just disable such misfeature. See also mosra/magnum-plugins#99.
  • AssimpImporter now correctly imports files with backslashes in image paths also on non-Windows platforms (see mosra/magnum-plugins#101 and mosra/magnum-plugins#102)
  • JpegImageConverter was mistakenly using the BUILD_STATIC CMake option instead of BUILD_PLUGINS_STATIC
  • Fixed BasisImporter to work with direct instantiation without a plugin manager (see mosra/magnum-plugins#96)
  • Assorted Trade,TinyGltfImporter robustness improvements (see mosra/magnum-plugins#106, mosra/magnum-plugins#109):
    • Fixed an out-of-bounds read happening with empty animations when optimizeQuaternionShortestPath is enabled
    • Graceful handling of invalid texture sampler values, instead of asserting
    • Better checks for out-of-bounds image, sampler and accessor references
    • Robust handling of invalid scene hierarchies such as cycles or multiple parent nodes
    • Better warning messages in certain pathological cases
  • Passing a RG input to BasisImageConverter while also having swizzle=rrrg (or, previously, separate_rg_to_color_alpha=true) set led to the image having the red channel repeated four times, losing the green channel. This is now fixed to not perform an implicit RRRG swizzle if the swizzle option is set. See also mosra/magnum-plugins#112.

Deprecated APIs

  • The TinyGltfImporter plugin is now deprecated in favor of an actually lightweight GltfImporter. The CgltfImporter plugin, which is where the GltfImporter originally comes from, is now just a deprecated alias to it as well.
  • Variables ASSIMP_LIBRARY_{DEBUG,RELEASE} and ASSIMP_INCLUDE_DIR that could be used to force Assimp location in FindAssimp.cmake are deprecated in favor of Assimp_LIBRARY_{DEBUG,RELEASE} and Assimp_INCLUDE_DIR

Potential compatibility breakages, removed APIs

Documentation

2020.06

Released 2020-06-27, tagged as v2020.06.

New features

Changes and improvements

  • AssimpImporter now imports color alpha channel in Trade::PhongMaterialData as well as importing both color and texture for file formats that support it
  • DevIlImageImporter now also considers file extension when detecting file format, being able to open files that don't really have any easy-to-detect magic header; additionally the file type can be also forced though a plugin-specific configuration option.
  • DevIlImageImporter can now load multi-image files such as *.icos or animated GIFs
  • Minor speedup in the StbTrueTypeFont plugin by avoiding use of 64-bit floating-point operations (see mosra/magnum-plugins#73)
  • TinyGltfImporter now supports interleaved animation and mesh attributes
  • TinyGltfImporter and OpenGexImporter now import both color and texture information instead of only one of them
  • AssimpImporter inadvertently ignored base orientation for files that are defined with Z up instead of Y, this behavior is now also configurable (see mosra/magnum-plugins#82)
  • AssimpImporter, DdsImporter and StanfordImporter now recognize the Trade::ImporterFlag::Verbose flag, printing verbose messages on the output if enabled
  • StbImageImporter is now thread-safe if CORRADE_BUILD_MULTITHREADED is enabled.
  • Library version is now exposed through MAGNUMPLUGINS_VERSION_YEAR, MAGNUMPLUGINS_VERSION_MONTH, MAGNUMPLUGINS_VERSION_COMMIT, MAGNUMPLUGINS_VERSION_HASH and MAGNUMPLUGINS_VERSION_STRING preprocessor defines in a new Magnum/versionPlugins.h header. This header is not included by any other header to avoid trigerring a full rebuild when Git commit changes. If Git is not found, only the first two defines are present.
  • Trade::PngImporter now recognizes and imports gray+alpha files as well (see mosra/magnum-plugins#71)

Build system

Bug fixes

  • AssimpImporter could crash on a division-by-zero when custom file callbacks encounter an empty file
  • Importing one image multiple times with DevIlImageImporter would cause it being differently flipped every time
  • Fixed a crash in PngImporter when encountering palette files with less than 8 bits per pixel

Potential compatibility breakages, removed APIs

  • Removed OpenDdl headers in MagnumPlugins/OpenGexImporter/OpenDdl that were deprecated in 2018.04, include them from the Magnum/OpenDdl directory instead.
  • TinyGltfImporter translation of PBR materials into a Phong shading model left Trade::PhongMaterialData::shininess() set at 1.0f, which wasn't a good default. Now it's set to 80.0f to match defaults of Shaders::Phong
  • Support for the KHR_materials_cmnBlinnPhong glTF extension has been removed from `TinyGltfImporter, as it seems to be effectively abandoned. The branch didn't see any update since 2017 and there are no exporters supporting it.
  • The bundled tiny_gltf code was updated from v2.0.0 to v2.4.1 in order to implement support for KHR_lights_punctual. A lot happened between these two versions including a change in how it parses numeric data. It may cause the imported transformations to be slightly different than in 2019.10, resulting in very minor differences in rendered images, particularly on aliased edges. See also facebookresearch/habitat-sim#496.
  • DdsImporter now exposes mip levels not as separate images, but through the new level parameter and Trade::AbstractImporter::image2DLevelCount() / Trade::AbstractImporter::image3DLevelCount() APIs.

2019.10

Released 2019-10-24, tagged as v2019.10.

Dependency changes

  • Minimal supported CMake version is now 3.4. Older versions are not supported anymore and all workarounds for them were removed. Download a prebuilt release of a newer version if you need to use Corrade on older systems (such as Ubuntu 14.04 or Debian 8). This is a conservative change that shouldn't affect any additional distribution compared to the CMake 3.1 requirement in 2019.01.

New features

Changes and improvements

Build system

  • MSYS2 packages are now in official repositories, installable directly via pacman
  • The JpegImageConverter plugin was mistakenly using the JPEG_INCLUDE_DIRS CMake variable which was not present on versions before 3.12. The JpegImporter plugin is not affected by this. See also mosra/magnum-plugins#51.
  • Upgraded TinyGltfImporter to use json.hpp 3.3.0, fixing a compile error on some Clang versions (see mosra/magnum-plugins#54)
  • Fixed FindMagnumPlugins.cmake to behave correctly when both a debug and a release version of libjpeg is found
  • Fixed FindMagnumPlugins.cmake to correctly handle the AssimpImporter, and JpegImageConverter components
  • FindMagnumPlugins.cmake now correctly finds debug versions of statically built plugins when using Vcpkg
  • Fixed FindMagnumPlugins.cmake to correctly link to zlib also when both a debug and a release version of libpng is found
  • FindAssimp.cmake now can optionally link to the IrrXML library (needed for static builds on Vcpkg)
  • Emscripten builds now have the -fPIC option disabled by default as it causes linker errors related to __memory_base on 1.38.36 (see also emscripten-core/emscripten#8761)

Bug fixes

  • AssimpImporter was returning a random value for material shininess with STL models, now it correctly returns 0.0f when the shininess value is not present.
  • For files that had multiple textures, AssimpImporter was incorrectly importing only the first image, multiple times. Fixed independently also by mosra/magnum-plugins#66 which got submitted three minutes after the change was pushed to master.
  • StbImageImporter was not correctly handling image import failures, randomly hitting unreachable code assertions
  • Fixed DevIlImageImporter BGR(A)-to-RGB(A) conversion to not return random memory
  • PngImporter now handles too short files gracefully instead of aborting on an assertion
  • PngImporter now handles paletted images and images with tRNS alpha mask correctly
  • Fixed memory leaks in PngImporter error handling
  • Fixed FindMagnumPlugins.cmake to correctly look for the Assimp package
  • Fixed handling of corrupted / incomplete data in StbTrueTypeFont (see mosra/magnum-plugins#29)

Potential compatibility breakages, removed APIs

  • Removed the ColladaImporter plugin, deprecated since 2018.10, because it was based on an outdated toolkit and, due to the complexity of the COLLADA format and poor conformance of various exporters, it was not feasible to maintain a builtin importer anymore.

2019.01

Released 2019-02-04, tagged as v2019.01.

Dependency changes

  • Minimal supported GCC version is now 4.8.1, GCC 4.7 is not supported anymore. Minimal Clang version is now 3.3, since that's the first version with a complete C++11 support. See also mosra/magnum#274.
  • Minimal supported CMake version is now 3.1. Older versions are not supported anymore and all workarounds for them were removed. Download a prebuilt release of a newer version if you need to use Corrade on older systems (such as Ubuntu 14.04 or Debian 8). See also mosra/magnum#274.

New features

Changes and improvements

  • Fixed compatibility of the OpenDdl library with Emscripten 1.38.10 and newer, which defines std::size_t as unsigned long instead of unsigned int used previously (it's still a four-byte type, though)

Build system

Potential compatibility breakages, removed APIs

  • Removed MAGNUMPLUGINS_*_LIBRARIES and MAGNUMPLUGINS_*_INCLUDE_DIRS CMake variables, which were deprecated in favor of MagnumPlugins::* imported targets in February 2016.

2018.10

Released 2018-10-23, tagged as v2018.10.

New features

Changes and improvements

  • Texture coordinate, color vertex attribute and base object color import in TinyGltfImporter (see mosra/magnum-plugins#41, mosra/magnum-plugins#43)
  • Mesh name and complete multi-primitive mesh loading in TinyGltfImporter (see mosra/magnum-plugins#48)
  • OpenGexImporter and TinyGltfImporter now properly import alpha for Trade::PhongMaterialData
  • TinyGltfImporter now exposes the translation/rotation/scaling properties of Trade::ObjectData3D separately if they are separate in the source file
  • HarfBuzzFont is now providing TrueTypeFont, similarly to other plugins supporting TTF fonts
  • StbImageImporter now properly supports Apple proprietary CgBI PNGs. Stock libPNG doesn't support that but there are forks that can do it, updated documentation of PngImporter to mention that.
  • StbImageConverter no longer requires input data to be tightly packed, allowing to export image subrectangles
  • StbImageConverter now prints warnings when channels are lost on output due to limitations of the output format (such as alpha channel for JPEGs)
  • Trade::TinyGltfImporter::defaultScene() now returns the first scene if no default scene is present in the file
  • New Trade::TinyGltfImporter::TinyGltfImporter(PluginManager::Manager<Trade::AbstractImporter>&) constructor for easier usage of statically-built plugins
  • Cleaned up some unnecessary memory copies and reallocations in the TinyGltfImporter implementation
  • Upstreamed local patches to tiny_gltf (see mosra/magnum-plugins#45)

Build system

Bug fixes

  • Fixed a TinyGltfImporter crash on materials without a PBR extension (see mosra/magnum-plugins#41)
  • Fixed improper order of applying translation/rotation/scaling node transformations in TinyGltfImporter
  • TinyGltfImporter now loads external images from *.glb files and images embedded as URI data properly
  • TinyGltfImporter now properly imports non-indexed meshes and meshes without the normal attribute
  • Fixed quite a few critical issues with TinyGltfImporter mesh data import (see mosra/magnum-plugins#42)
  • Updated stb_image to fix undefined symbol: __cpu_model error when compiling StbImageImporter on GCC 5
  • AssimpImporter now properly prints out an message on file opening error instead of failing silently
  • AssimpImporter incorrectly imported object transformation matrices transposed
  • AssimpImporter incorrectly imported the scene twice, once as a scene and once as a object that all other objects were parented to. However, in presence of postprocessing flags such as PreTransformVertices Assimp collapses all nodes into one and then the node is imported as a single object.
  • FreeTypeFont was not handling subsequent calls to Text::FreeTypeFont::initialize() properly (see mosra/magnum-plugins#49)

Deprecated APIs

  • ColladaImporter is deprecated because it's based on an outdated toolkit. Moreover, due to the complexity of the COLLADA format and poor conformance of various exporters it's not feasible to maintain a builtin importer anymore and thus this plugin is scheduled for removal in a future release. Please consider either using AssimpImporter for COLLADA import or switching to simpler and better supported formats such as glTF or OpenGEX using TinyGltfImporter or OpenGexImporter. There's also the official COLLADA2GLTF converter.

Changelogs for previous versions are available in Archived plugin changelogs.