Extras
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.
Changes and improvements
- magnum-player now makes use of the Trade::
MaterialAttribute:: NormalTextureScale material attribute, if present - Added a
--map
option to magnum-player, similarly to an option of the same name in magnum-sceneconverter it memory-maps the file for faster loading
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
versionExtras.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 and an ability to test GLES and Vulkan functionality on Android. 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) - 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) - 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,
FindMagnumExtras.cmake
can provide additional details if some component is not found - 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) - 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. - Added
MAGNUM_PLAYER_STATIC_PLUGINS
CMake option for linking static plugins to the magnum-player application. See Enabling or disabling features for more information. - Fixed most remaining warnings on MSVC, in particular those related to "conversion from T to void * of greater size" (see mosra/
magnum#544). - Fixed
FindMagnumExtras.cmake
to correctly find the Magnum Extras include directory when it's installed to a different directory than Magnum itself (see mosra/magnum-integration#105) - Created a RPM package with a helper script for building (see mosra/
magnum-extras#13 and mosra/ magnum-extras#16)
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.
Potential compatibility breakages, removed APIs
- The old UI library that was living in the Ui namespace is removed and replaced by a completely new implementation
Documentation
- Updated license link for Source Sans Pro used by the Ui library (see mosra/
magnum-examples#95)
2020.06
Released 2020-06-27, tagged as v2020.06.
Changes and improvements
- magnum-player now accepts
-i
/--importer-options
and-v
/--verbose
command-line arguments similarly to magnum-imageconverter and magnum-sceneconverter - magnum-player can now visualize also point and line meshes, triangle strips and fans can now have their normals generated as well
- magnum-player now supports normal maps and texture transformation in materials
- Tangent space, object and primitive ID visualization in magnum-player
- Integrated
DebugTools::GLFrameProfiler
in magnum-player, enable using the P key and configure with the--profile
command-line option - Ability to disable UI rendering in magnum-player using the Esc key
Build system
- The library again compiles and tests cleanly with CORRADE_
NO_ ASSERT enabled, and this setup is verified on the CI to avoid further regressions
Potential compatibility breakages, removed APIs
- Removed
Ui::AbstractPlane::Flag
enum andUi::AbstractPlane::Flags
enum set deprecated in 2018.02, useUi::PlaneFlag
andUi::PlaneFlags
instead
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 Extras as a CMake subproject, mosra/magnum#357 and mosra/ magnum-plugins#63. - magnum-player now autogenerates normals if the imported model doesn't have any (see also mosra/
magnum#229) - magnum-player has now a rudimentary support for opening image files next to 3D scenes
- magnum-player gained a toggle for switching to shadeless mode, which is useful when viewing photogrammetry models
- magnum-player installs a
*.desktop
file on Linux and BSD systems in order to appear as a choice in "Open with..." dialogs.
Changes and improvements
- Switched magnum-player and magnum-ui-gallery to use the new Platform::
EmscriptenApplication on Emscripten (see mosra/ magnum-extras#10) - Desktop build of magnum-player can now refresh the currently loaded file using F5
Build system
- ES 2.0 and ES 3.0 subset of tests requiring GL context is now run on Travis CI using SwiftShader for better code coverage (see mosra/
magnum#207) - 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)
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.
2018.10
Released 2018-10-23, tagged as v2018.10.
New features
- New magnum-player app for previewing, playing back and inspecting animated scene files (see mosra/
magnum-extras#6) - Rudimentary support for user interface relayouting using
Ui::UserInterface::relayout()
Changes and improvements
Ui::UserInterface
can now take an explicit framebuffer size parameter for more flexibility when rendering on HiDPI screens or in VR.Ui::UserInterface
can now take an external font plugin mananger to work better together with code that does text rendering on its own- It's now possible to change style of a
Ui::Modal
as well
Build system
- There's now a PPA for Ubuntu packages. See Packages for Debian, Ubuntu and derivatives for more information. See also mosra/
magnum-extras#5. - Provide a better error when trying to build the
Ui
library on OpenGL ES 2.0 / WebGL 1.0 — before it failed somewhere deep with no clear relation to requiring ES3 features (see mosra/magnum-extras#4)
Bug fixes
Ui::Button::setStyle()
was mistakenly not returning a reference to self, breaking method chaining
Deprecated APIs
Ui::UserInterface
constructors taking a font without a corresponding glyph cache instance are deprecated, use eitherUi::UserInterface::UserInterface(const Vector2&, const Vector2i&, const StyleConfiguration&, const std::string&)
orUi::UserInterface::UserInterface(const Vector2&, const Vector2i&, Text::AbstractFont&, Text::GlyphCache&, const StyleConfiguration&)
instead.
2018.04
Released 2018-05-01, tagged as v2018.04.
Dependency changes
- Building for Android now requires CMake 3.7 with builtin Android crosscompilation support, the old toolchains were removed. Only the Clang and libc++ toolchain is now supported, support for GCC and libstdc++ was dropped, as it was still missing some important C++11 functionality. See Cross-compiling for Android for more information.
Build system
- Fixed the Debian package after introducing
SOVERSION
to all libraries (see mosra/magnum#237) - By mistake it was not possible to control static build of the
Ui
library independently on the core Magnum libraries - Homebrew macOS packages were updated to install the stable version by default
- Fixed the Debian package to not include a revision. While just a warning on Ubuntu, it's a hard error on Debian. (See mosra/
corrade#44.)
2018.02
Released 2018-02-15, tagged as v2018.02. See the release announcement for a high-level overview.
New features
- MSVC 2015 and MSVC 2017 support in
master
branch - ANGLE ES2/ES3 support, ability to create desktop GLES contexts on Windows
- Windows Phone/Store support via ANGLE
- iOS support
- WebAssembly support when building for Emscripten
- WebGL 2.0 support
- New experimental
Ui
library
Build system
- Continuous testing for Linux, macOS, Windows MSVC, Windows MinGW, Windows RT, iOS, Android and Emscripten on Travis CI and AppVeyor CI, with code coverage on codecov.io
- Added a Homebrew package
- Properly install CMake modules in the Debian package (see mosra/
magnum-extras#2)
Deprecated APIs
Ui::AbstractPlane::Flag
enum andUi::AbstractPlane::Flags
enum set are deprecated, useUi::PlaneFlag
andUi::PlaneFlags
instead
Documentation
- New documentation theme powered by m.css and related massive updates of everything
- The Downloading and building extras documentation now prefers package installation instead of manual build