Plugins
Changes since 2020.06
Dependency changes
- Minimal supported CMake version is now 3.5, changed from 3.4, since CMake 3.27+ warns if a compatibility with CMake below 3.5 is requested. Older versions are not supported anymore and all workarounds for them were removed. This is a conservative change, as there are no known supported distributions which would have anything older than 3.5.
New features
- MSVC 2022 support. See also mosra/
corrade#124 and mosra/ magnum#552. - New SpirvToolsShaderConverter plugin for SPIR-V shader (dis)assembly and validation
- New GlslangShaderConverter plugin for GLSL shader validation and GLSL->SPIR-V compilation
- New AstcImporter plugin for reading
*.astc
files produced by ARM ASTC encoder and other GPU texture compression tools. - New GltfSceneConverter plugin for exporting full scenes to glTF files
- New KtxImporter and KtxImageConverter plugins for reading and writing 1D/2D/3D KTX2 files in arbitrary pixel formats (see mosra/
magnum-plugins#103; Basis-encoded KTX2 files are passed through to BasisImporter (see mosra/ magnum-plugins#110, mosra/ magnum-plugins#113) - New OpenExrImporter and OpenExrImageConverter plugins for reading and writing OpenEXR files including cube maps and custom channel support
- Mew SpngImporter for importing PNG images using libspng, which, in combination with zlib-ng, may be significantly faster than stock libpng
- New StbDxtImageConverter for compressing images into block-compressed BC1/BC3.
- New StbResizeImageConverter for image downsampling and upsampling. See also mosra/
magnum-plugins#143. - New WebPImporter and WebPImageConverter plugins for importing and writing WebP files (see mosra/
magnum-plugins#121, mosra/ magnum-plugins#126 and mosra/ magnum-plugins#140) - New GltfImporter plugin for importing glTF files, which is a smaller, faster-compiling, faster-importing and more memory-friendly drop-in replacement for now-deprecated
TinyGltfImporter
. Originally built on top of cgltf as aCgltfImporter
(see mosra/magnum-plugins#107), eventually the cgltf dependency got dropped in favor of Utility:: Json. The only significant behavioral difference is that GltfImporter by default fails the import if the file requires an extension the importer is not aware of, but that can be overriden from the plugin-specific configuration. See also mosra/ magnum-plugins#139. Additionally, these new features are added compared to TinyGltfImporter
:- MSFT_
texture_ dds - EXT_
texture_ webp - KHR_
texture_ basisu - Experimental KHR_
texture_ ktx - Importing arbitrary material extensions and
extras
as custom material attributes (see mosra/magnum-plugins#117) - Importing scene node
extras
as custom scene fields These new features are present in the deprecatedTinyGltfImporter
as well: - Material import reworked for the new Trade::
MaterialData API, supporting all core properties as well as everything from the KHR_ materials_ pbrSpecularGlossiness, KHR_ materials_ unlit and KHR_ materials_ clearcoat extensions. All the previous limitations on texture transformation or coordinate set variability are now gone. - Skin import through Trade::
AbstractImporter:: skin3D(), Trade:: SceneField:: Skin and related APIs - Importing light range and spotlight cone angle properties
- Range checks on scene, node, camera, mesh, material, child and light references in the scene hierarchy for more robust handling of broken files
- Importing mesh morph target attributes (see mosra/
magnum-plugins#141)
- MSFT_
- New UfbxImporter plugin for robust import of FBX and OBJ files including all advanced material properties (see mosra/
magnum-plugins#133 and mosra/ magnum-plugins#136) - New BcDecImageConverter and EtcDecImageConverter plugins for decoding BCn and ETC/EAC compressed formats
- AssimpImporter now imports ambient lights, light attenuation and spotlight cone angle properties. See also mosra/
magnum-plugins#120. - AssimpImporter now imports camera, light and scene names, orthographic camera properties and custom material properties (see mosra/
magnum-plugins#116) - AssimpImporter can now import material texture transformation attributes
- AssimpImporter can now import animations and skins (see mosra/
magnum-plugins#97, mosra/ magnum-plugins#99 and mosra/ magnum-plugins#100) - BasisImporter and BasisImageConverter plugins were updated to Basis 1.50 with UASTC, KTX2 and HDR support, in addition it's now also possible to supply custom mip levels, sRGB formats get properly recognized both on import and during conversion, and array and cubemap images are supported as well (see mosra/
magnum-plugins#86, mosra/ magnum-plugins#112, mosra/ magnum-plugins#118, mosra/ magnum-plugins#119, mosra/ magnum-plugins#145, mosra/ magnum-plugins#146)
Changes and improvements
- The workaround for an Assimp 4.1 white ambient bug in AssimpImporter can now be disabled using the
forceWhiteAmbientToBlack
plugin-specific option. - Exposed missing AssimpImporter postprocess options
CalcTangentSpace
,SplitByBoneCount
andDebone
- AssimpImporter now provides the
3mfImporter
alias for convenient loading of*.3mf
files - Adapted AssimpImporter to changes in version 5.2.5 and cleaned up STL usage (see mosra/
magnum-plugins#130) - BasisImporter has a new
assumeYUp
option that assumes the file is encoded Y-up even if the orientation metadata is missing or says otherwise, silencing a warning about wrong orientation of imported data - DdsImporter now supports also 1D textures, cube maps, 1D, 2D and cube map arrays; all DXGI depth, stencil and compressed formats, legacy non-DXGI RGBX, BGRX, 16-bit normalized, half-float, float, BC4 and BC5 formats, BGR(A) formats also for files with the DXT10 header; uncompressed sRGB formats are now properly imported as PixelFormat::
RGBA8Srgb instead of PixelFormat:: RGBA8Unorm. Additionally the plugin also imports non-standard ASTC formats produced by NVidia Texture Tools Exporter. See also mosra/ magnum-plugins#67. - FreeTypeFont now treats its internal global library handle as thread-local on all platforms except Windows, making it possible to be used in multi-threaded environments
- Adapted MeshOptimizerSceneConverter to breaking changes in upcoming meshoptimizer 0.18, implementing a new
simplifyLockBorder
option - StanfordImporter now supports also indices specified as
vertex_index
, which is what Assimp uses for export (see mosra/magnum-plugins#94) - StanfordImporter and StlImporter now delegate parsing of ASCII files to AssimpImporter if available instead of failing the import.
- StanfordSceneConverter now requires the input mesh to always have a position attribute. This was not enforced before, leading to files that couldn't be opened with StanfordImporter nor with most other libraries.
- StbImageImporter now imports 16-bit PNG and PSD files as 16-bit instead of converting to 8 bit
- StbImageImporter now makes it possible to override imported image channel count using
forceChannelCount
- StbImageConverter can now detect output format from the file extension when calling convertToData() without having to load the plugin with a concrete format alias
- DrFlacAudioImporter no longer advertises support for 32-bit-per-channel FLAC files, as there's no known way to produce them and thus the case is impossible to test for.
- BasisImageConverter no longer produces excessive log on output by default, only if Trade::
ImporterFlag:: Verbose is set (see mosra/ magnum-plugins#112) - As no image converter plugins except KtxImageConverter support 1D images, they warn when an image with ImageFlag2D::
Array is passed and treat is as a regular 2D image. In case of BasisImageConverter this is an error, as treating the image as 2D would incur a significant data loss. - PngImporter and StbImageImporter now expose a
forceBitDepth
option which allows to convert the images to a different bit depth using libpng and stb_image own functionality - Added a
simplifyFailEmpty
option to MeshOptimizerSceneConverter that makes the simplification fail if it would result in an empty mesh instead of just returning it
Build system
- The oldest supported Clang version is now 6.0 (available on Ubuntu 18.04), or equivalently Apple Clang 10.0 (Xcode 10). Oldest supported GCC version is still 4.8.
- 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) - It's now possible to use
<PackageName>_ROOT
to point to install locations of dependencies such as Corrade on CMake 3.12+, in addition to putting them all together insideCMAKE_PREFIX_PATH
. See also mosra/magnum#614. - 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
todpkg-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. - Changed handling of
CMAKE_*_OUTPUT_DIRECTORY
to make plugins pick it up also if only e.g.CMAKE_RUNTIME_OUTPUT_DIRECTORY
is set, but notARCHIVE
orLIBRARY_OUTPUT_DIRECTORY
. Similarly it now also handles config-specificCMAKE_*_OUTPUT_DIRECTORY_<CONFIG>
variables. See also mosra/magnum#486 and mosra/ magnum-plugins#123. - Fixed wrong
.gitattributes
option for LF line endings in MSYS PKGBUILDs (see mosra/magnum-plugins#125) - Fixed a build breakage with libc++ 15+ (see mosra/
magnum-plugins#131) - Fixed building of some tests if Magnum isn't installed in a global include path (see mosra/
magnum-plugins#132) - It's now possible to build dynamic libraries on Android and Emscripten with the usual options. Static libraries are still a default but it isn't enforced anymore. See mosra/
magnum#617. - Fixed most remaining warnings on MSVC, in particular those related to "conversion from T to void * of greater size" (see mosra/
magnum#544). - Fixed
FindMagnumPlugins.cmake
to correctly find the Magnum Plugins include directory when it's installed to a different directory than Magnum itself (see mosra/magnum-integration#105) - Magnum Plugins now automatically install and use Find modules for their dependencies in a way that doesn't clash with modules of the same name potentially installed by other software, meaning the user doesn't need to copy and carry them along anymore (see mosra/
magnum#436) - Fixed remaining warnings related to
-fvisibility-inlines-hidden
on Mac (see mosra/magnum#551) - Created a RPM package with a helper script for building (see mosra/
magnum-plugins#111 and mosra/ magnum-plugins#147)
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) - AssimpImporter, OpenGexImporter and GltfImporter now correctly propagate Trade::
ImporterFlags to delegated image importer plugins, instead of the setting (such as verbose output) affecting only the top-level plugin - Fixed a few cases where DdsImporter could assert or crash when encountering a premature end of file
- DdsImporter now implicitly performs Y- and Z-flip on uncompressed images consistently with other importers
- JpegImageConverter was mistakenly using the
MAGNUM_BUILD_STATIC
CMake option instead ofMAGNUM_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
- Fixed an out-of-bounds read happening with empty animations when
- 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 theswizzle
option is set. See also mosra/magnum-plugins#112. - Fixed loading of embedded FBX textures in AssimpImporter (see mosra/
magnum-plugins#127, mosra/ magnum-plugins#128) - PngImporter and PngImageConverter no longer asserts if the patch version of libpng changed, such as when a system package was upgraded from 1.6.37 to 1.6.38. If the major or minor version changes, it's still an assert.
Deprecated APIs
- All CMake build options are now prefixed with
MAGNUM_
. For backwards compatibility, unless MAGNUM_BUILD_ DEPRECATED is disabled and unless a prefixed option is already set during the initial run, the unprefixed options are still recognized with a warning. See also mosra/ corrade#139. - The
TinyGltfImporter
plugin is now deprecated in favor of an actually lightweight GltfImporter. TheCgltfImporter
plugin, which is where the GltfImporter originally comes from, is now just a deprecated alias to it as well. - Variables
ASSIMP_LIBRARY_{DEBUG,RELEASE}
andASSIMP_INCLUDE_DIR
that could be used to force Assimp location inFindAssimp.cmake
are deprecated in favor ofAssimp_LIBRARY_{DEBUG,RELEASE}
andAssimp_INCLUDE_DIR
- As BasisImporter, DdsImporter and KtxImporter now annotate cube map and array images using ImageFlag3D::
CubeMap and ImageFlag*D:: Array, retrieving their type via Trade:: TextureData:: type() is deprecated and available only for backwards compatibility unless MAGNUM_ BUILD_ DEPRECATED is disabled. - Direct plugin instantiation through the constructors isn't a supported use case anymore, as such a code path is not easy to test in common setups and requires significant code duplication in order to preserve plugin-specific configuration options. Instantiate though the plugin manager instead.
Potential compatibility breakages, removed APIs
- BasisImporter and BasisImageConverter plugins don't compile against the previous 1.11 version of Basis anymore, you have to update the dependency to the
v1_15_update2
tag (see mosra/magnum-plugins#112) - BasisImporter and BasisImageConverter plugins now rely on externally supplied zstd installation instead of using the amalgamated file in Basis sources, which is outdated, lacks security fixes and many optimizations. If no zstd is found, the Basis library is compiled without zstd support. See mosra/
magnum-plugins#115. - The
separate_rg_to_color_alpha
option from BasisImageConverter is gone, useswizzle=rrrg
instead. For RG inputs this is done implicitly and you don't need to set this option. See also mosra/magnum-plugins#112. - The
Bc7RGB
target format for BasisImporter is removed, useBc7RGBA
instead (see mosra/magnum-plugins#112) - Because DdsImporter was fixed to perform Y- and Z-flip on uncompressed images to ensure consistency with other importers, code that relied on the previous broken behavior will break. Either Y-flip the files or set the
assumeYUpZBackward
option to fix this. - GltfImporter no longer returns
0
from defaultScene() if no"scene"
property is present and the file contains at least one scene, and returns-1
instead. This is in order to support use cases depending on the (lack of the) default scene specifier.
Documentation
- Various fixes and updates (see mosra/
magnum-plugins#98, mosra/ magnum-plugins#114, mosra/ magnum-plugins#135)
2020.06
Released 2020-06-27, tagged as v2020.06.
New features
- Multi-primitive mesh support in AssimpImporter, consistent with
TinyGltfImporter
behavior (see mosra/magnum-plugins#68 and mosra/ magnum-plugins#81) - Tangent and bitangent import in AssimpImporter, normal texture support
- Vertex color, normal, texture coordinate and per-vertex object ID import in StanfordImporter; colors, normals and object IDs are supported per-face as well
- Custom vertex and face attribute import in StanfordImporter
- Support for the
KHR_lights_punctual
extension inTinyGltfImporter
, replacing the obsolete unuspportedKHR_lights_cmn
(see mosra/magnum-plugins#77) - Support for the
KHR_texture_transform
andKHR_mesh_quantization
extensions inTinyGltfImporter
- Tangent, object ID and custom vertex attribute support in
TinyGltfImporter
, normal texture import - DdsImporter and BasisImporter, now support loading image mip levels; AssimpImporter, OpenGexImporter and
TinyGltfImporter
were updated to proxy mip level loading to image importer plugins (see mosra/magnum#369) - New IcoImporter plugin for importing ICO files with embedded PNGs (see mosra/
magnum-plugins#79) - New PrimitiveImporter plugin for accessing contents of the Primitives library via importer APIs
- New StanfordSceneConverter for writing binary PLY files
- New StlImporter plugin for importing binary STL files
- New MeshOptimizerSceneConverter plugin, integrating meshoptimizer
- Animated GIF support in StbImageImporter
- Texture coordinate set import in AssimpImporter and
TinyGltfImporter
(see mosra/magnum-plugins#83)
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
*.ico
s 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 attributesTinyGltfImporter
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
andMAGNUMPLUGINS_VERSION_STRING
preprocessor defines in a newMagnum/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
FindAssimp.cmake
is updated to look for IrrXML on all systems, not just Windows, since Vcpkg has the static build the same on all platformsFindBasisUniversal.cmake
is updated to work with the Vcpkg package of Basis Universal (and consequently builds of the fork at https://github.com/jherico/basis_universal as well). See mosra/ magnum-plugins#72. - Disabling file I/O APIs in the DrFlacAudioImporter as they weren't used and unnecessarily pulled in
windows.h
; fixed static builds of JpegImageConverter and JpegImporter on with libjpeg coming from MSYS2 MinGW packages (see mosra/magnum-plugins#74) - Fixed build of DrWavAudioImporter on static libraries with dynamic plugins (see mosra/
magnum-plugins#78) - The library again compiles and tests cleanly with CORRADE_
NO_ ASSERT enabled, and this setup is verified on the CI to avoid further regressions - Properly installing plugin binaries in Gentoo packages (see mosra/
magnum-plugins#85)
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 theMagnum/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 to80.0f
to match defaults ofShaders::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 fromv2.0.0
tov2.4.1
in order to implement support forKHR_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
- MSVC 2019 compatibility, following other Magnum projects
- When using Magnum as a CMake subproject, it now puts all binaries into a common directory to simplify
PATH
handling and dynamic plugin loading. For more information see Using Magnum Plugins as a CMake subproject, mosra/magnum#357 and mosra/ magnum-plugins#63. - New DrMp3AudioImporter plugin for importing MP3 files (see mosra/
magnum-plugins#60) - New BasisImporter and BasisImageConverter plugin for importing and converting Basis files, support for Basis-encoded textures in
TinyGltfImporter
(see mosra/magnum-plugins#62, mosra/ magnum-plugins#65 and mosra/ magnum-plugins#69)
Changes and improvements
- Calling image2D() in AssimpImporter, OpenGexImporter and
TinyGltfImporter
now behaves consistently in regards to file loading callbacks — failing with an error if and only if image is not embedded, the file is not opened from a filesystem and file loading callbacks are not set. Previously it could errorneously assert even when loading embedded images, try to look for images on the filesystem when loading in-memory data or fail to open images when a file inside current working directory was opened. - The AssimpImporter plugin now detects ambient color set to
0xffffff_srgbf
and forces it back to0x000000_srgbf
. This is a bug in Assimp 4.1, causing all other color information to get discarded. See also assimp/assimp#2059, assimp/ assimp#2563 and mosra/ magnum-plugins#64. - The AssimpImporter plugin now trims trailing space from image paths in order to deal better with OBJ meshes from hell (see mosra/
magnum-plugins#58) - The AssimpImporter plugin now imports each image just once in case a single image is shared by more than one texture
- JpegImporter now prints error info to Corrade::
Utility:: Error, allowing it to be redirected or suppressed consistently to other plugin implementations (see mosra/ magnum-plugins#53) - PngImporter and PngImageConverter now print error and warning info to Corrade::
Utility:: Error and Corrade:: Utility:: Warning, allowing it to be redirected to suppressed consistently to other plugin implementations - DevIlImageImporter now converts BGR data to RGB instead of expanding them to RGBA
- DevIlImageImporter, JpegImporter, PngImporter and StbImageImporter now properly report an error message when opening an empty file
- Switched
TinyGltfImporter
to useCorrade::Utility::Directory::read()
instead of tiny_gltf's internal APIs for loading external files, making it work correctly for UTF-8 paths on Windows - Better diagnostics in
TinyGltfImporter
when an external buffer file is not found or when a file loaded from memory attempts to reference an external buffer without file callbacks being set - DrFlacAudioImporter, DrWavAudioImporter and StbVorbisAudioImporter plugins no longer treat files with zero samples as errors, but give back an empty buffer instead
- Updated
dr_wav
for DrWavAudioImporter to version 0.8.5 which supports a wider range of file types (see mosra/magnum-plugins#61) - Actually reporting errors from FreeTypeFont instead of just failing without a message
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 theAssimpImporter
, andJpegImageConverter
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 theAssimp
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
- New Faad2AudioImporter plugin for importing AAC files using FAAD2
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 ofunsigned int
used previously (it's still a four-byte type, though)
Build system
- The
package/msys
directory now containsPKGBUILD
s for MSYS2. See MSYS2 packages for more information. See also mosra/magnum-plugins#50. - The bundled
FindAssimp.cmake
module now works under MinGW as well.
Potential compatibility breakages, removed APIs
- Removed
MAGNUMPLUGINS_*_LIBRARIES
andMAGNUMPLUGINS_*_INCLUDE_DIRS
CMake variables, which were deprecated in favor ofMagnumPlugins::*
imported targets in February 2016.
2018.10
Released 2018-10-23, tagged as v2018.10.
New features
- Support for object transformation animation import in
TinyGltfImporter
(see mosra/magnum-plugins#46) - New Trade::
JpegImageConverter plugin for writing JPEG files (see mosra/ magnum-plugins#26) - Minimal support for the KHR_
materials_ pbrSpecularGlossiness extension TinyGltfImporter
- The top-level
tinygltf::Model
structure is now exposed throughTrade::TinyGltfImporter::importerState()
for easier access to extra data, exposing also Trade::SceneData:: importerState() and Trade:: TextureData:: importerState() TinyGltfImporter
now implements mapping between names and IDs for all currently imported dataTinyGltfImporter
now imports alpha mode, alpha mask and double sided material propertiesTinyGltfImporter
now imports all camera properties together with type and aspect ratio / projection size- AssimpImporter, OpenGexImporter and
TinyGltfImporter
now supportTrade::AbstractImporter::Feature::FileCallback
for specifying custom callbacks to load extra files (see mosra/magnum-plugins#47) - StbImageConverter was updated with a new version of
stb_image_write
, supporting also JPEG export now (see mosra/magnum-plugins#26) - StbTrueTypeFont was updated with a new version of
stb_truetype
, supporting also OpenType fonts now - FreeTypeFont, HarfBuzzFont and StbTrueTypeFont plugins can now be loaded also using the
OpenTypeFont
alias, in addition to `TrueTypeFont
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 ofTrade::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
- There's now a PPA for Ubuntu packages. See Packages for Debian, Ubuntu and derivatives for more information. See also mosra/
magnum-plugins#44. - TinyGLTF headers are now installed alongside the plugin for easier access to importer state.
TinyGltfImporter
no longer depends on StbImageImporter to import images embedded in buffers or data URIs. Instead it proxies the loading to AnyImageImporter, the same way as was already done for external files.
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 properlyTinyGltfImporter
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 fixundefined 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 usingTinyGltfImporter
or OpenGexImporter. There's also the official COLLADA2GLTF converter.
Changelogs for previous versions are available in Archived plugin changelogs.