Skip to content

libprojectM Release 4.1

Compare
Choose a tag to compare
@kblaschke kblaschke released this 02 Mar 14:37
· 11 commits to master since this release
b658ccc

After about a year of work, we're finally ready to release libprojectM 4.1, which is in fact the actual "major" release in regards of general improvements over the 3.1 release series. Most of libprojectM's codebase has been refactored or rewritten from scratch to bring it to more modern standards, make it easier to maintain and - most importantly - vastly improve Milkdrop compatibility and overall performance.

Target Audience: Users

While the 4.0 version was mainly focused on updating the build system and introducing a stable API which developers can use to integrate it into their applications, it didn't change much in regards to preset rendering quality and Milkdrop compatibility.

This release focuses on bringing libprojectM mostly on par with Milkdrop, implementing some missing features and improving the preset rendering process to match Milkdrop's code as closely as possible.

The libprojectM C API and ABI did not change since 4.0, making it a drop-in replacement with no changes required in application code. When using the shared library, replacing the library file(s) will be sufficient to use the new version, no rebuild/relink is required in this case.

The projectM team also wants to thank all contributors for their efforts, making this release possible!

Changes since 4.0

  • A from-scratch rewrite of the parser running the math expressions in presets, implementing all previously missing features like megabuf, loops, regXX vars, compound operators like += and greatly improving the execution speed.
  • Reworked the whole preset rendering process, carefully implementing each step and effect to match Milkdrop's rendering process and math.
  • Reintroduced smooth preset transitions, using custom blending shaders.
  • Reimplemented the audio processing code to match Milkdrop's spectrum analyzer and waveform preprocessing.
  • Added support for the new waveform modes added in BeatDrop and Milkdrop2077.
  • Properly implemented texture loading, including better memory management and random texture selection.
  • Improved support for OpenGL ES platforms, e.g. Android, Raspberry Pi and WebGL/Emscripten.
  • Fixed issues with displaying broken presets and skipping them properly using the playlist library.
  • Improved HLSL to GLSL shader translation, added missing functions and workarounds for undocumented math function behavior.
  • Numerous other bug fixes, improvements and cleanups.

Full Changelog: v4.0.0...v4.1.0

Known issues

  • Some presets render too dark on higher resolutions. This problem is also happening in Milkdrop. See issue #682
  • Presets with broken (syntactically invalid) expression code won't load. Loading such presets will not be supported, the presets should be fixed instead.
  • Some preset shaders still cannot be translated correctly or render differently/black. There are various reasons for this issue, e.g. incompatibilities between HLSL and GLSL, or the shader translator not supporting some HLSL functions (e.g. refract()).