The new Magnum milestone brings WebGL 2.0 and WebAssembly, VR
support, lots of niceties for Windows users, iOS port, new experimental UI
library, improved testing capabilities, support for over 80 new asset
formats, new examples and much more.
A new Magnum example implements an analytic method for area light
shading presented in the paper “Real-Time Polygonal-Light Shading with
Linearly Transformed Cosines”, by Eric Heitz, Jonathan Dupuy, Stephen Hill
and David Neubelt.
The new website does a better job at clearly presenting engine
features and enables the team to share progress easier than before. Besides
that, its development resulted in many valuable byproducts for both C++
developers and web content publishers.
Along with dropped support for NaCl, Magnum now has first-class
WebAssembly support. I also took this opportunity to overhaul the outdated
Showcase page with WebAssembly builds and
there is a bunch more Emscripten-related goodies all over the place!
The Magnum C++11/C++14 and OpenGL graphics engine gained OpenGEX
format support, a bunch of new importer plugins, cross-platform extension
loader, transform feedback support and new features from OpenGL ES 3.1 and
OpenGL 4.5, among other things.
The Magnum C++11 and OpenGL/OpenGL ES/WebGL graphics engine gained
experimental Android support, windowless applications on OS X and Windows,
uses SDL2 as the default toolkit, adds new texture and mesh features,
improves build system and got huge documentation review.
After reading the “How to draw a red square in Qt Quick” blog post
showcasing the simplicity of Qt API I thought it would be interesting to
try something similar in Magnum for comparison.
Since the previous October snapshot Magnum gained Visual Studio port,
font conversion utility, improved text rendering along with example
application, support for OpenGL debug output, documentation updates, better
test coverage and many more usability improvements and fixes.
Large C++ projects often suffer with very long times for both full
and incremental compilation, severely hurting productivity. The following
series will overview some techniques employed in Magnum to make iteration
times smaller, this article focuses on code-based optimizations.