157 Commits

Author SHA1 Message Date
49410adca7 Move projectM-opengl.h into Renderer lib 2025-12-10 21:55:36 +01:00
4f3d062053 Move PresetFileParser into MilkdropPreset subdir
Makes more sense contextually.
2025-12-10 21:55:36 +01:00
c23f1b9613 Add a new logging class 2025-12-07 17:24:48 +01:00
af479c01d6 Fix installed pkgconfig files using wrong linker argument
for some unknown reason I used "-l:<lib>" in the .pc files while it should just be "-l<lib>". This would prevent libprojectM (and the playlist lib) from being linked in projects using pkgconfig.
2025-12-02 18:04:26 +01:00
760a4c9c95 Add Milkdrop user sprites 2025-02-27 15:55:14 +01:00
fbdb18b355 Move FileParser to main directory.
Makes it easier to reuse for loading sprites.
2025-02-27 15:55:13 +01:00
f2a0277ddd Fix texture loading if casing mismatches filename
Always use lower-case unqualified names to find and cache the actual textures.
2024-10-07 12:08:44 +02:00
0beb7a2d09 Relocated dll's to PROJECTM_BIN_DIR on Windows 2024-02-02 10:21:25 -06:00
a1d300f48c Include cleanup, plus a few small code improvements.
Also removed empty FrameAudioData implementation file.
2024-02-02 15:08:05 +01:00
27f3308ac3 Remove utterly useless multithreading switch
Since we're using OpenGL, everything has to be done in the same thread anyways. Besides that, the actual "multithreading" implementation was basically starting an empty thread that did absolutely nothing, then wait synchronously for it to complete and join it on the next frame.
2024-02-02 15:08:04 +01:00
184766b2c8 pkgconfig fixes 2024-02-02 15:08:04 +01:00
df48f1bb07 Remove RandomNumberGenerators.hpp and replace the only invocation with std::normal_distribution 2024-02-02 15:08:04 +01:00
170f054860 Remove no longer used LLVM support code. 2024-02-02 15:08:04 +01:00
1513675c31 Remove no longer used omptl and OpenMP support.
Fixup: remove omtpl
2024-02-02 15:08:04 +01:00
3fc7c9dd2f Replace low-level FS API with std:: or boost::filesystem.
Also gets rid of the dirent.h hack used on Windows platforms, as the filesystem API hides all the OS-specific stuff, and we can use a recursive iterator instead of doing that ourselves, making the code even cleaner.
2024-01-30 15:25:29 +01:00
9b03314d19 Fix generator expressions showing up in pkgconfig files
Instead of using these expressions, adding "lib" in fron of static libs is now done via CMAKE_STATIC_LIBRARY_PREFIX when building static libs on Windows.
2023-11-26 13:52:10 +01:00
045b05fa95 Replaced FFT implementation.
Removed the previous FFT algorithm, now using a modernized version of the original Milkdrop FFT transform which also has both an equalizer and frequency envelope, making it slightly more sophisticated.

Modernization mainly included replacing raw pointer arrays with std::vector and using STL types/functions for the calculation, specifically std::complex as the FFT heavily uses these numbers. This makes the code more compact and readable.

Manually tested both original and modernized versions of the class to test if the algorithm still returns the exact same results, which is the case.
2023-11-24 21:00:35 +01:00
483b32d546 Set library base name once in top-level CMakeLists.txt.
Will avoid making errors in future versions. Include dirs still are hard-coded, as they partially exist as paths in the source tree.
2023-10-06 12:51:22 +02:00
ce56c3ed09 Fix filenames of static libraries.
These were missing the "-4" suffix, and the static playlist library also used underscores instead of dashes.
2023-10-06 12:41:43 +02:00
b88f96b780 Fix CMake scripts, so they can be used via add_subdirectory(). 2023-09-19 18:38:43 +02:00
1c93302b7d Removed a few unused files. 2023-09-11 10:19:49 +02:00
e9438ee0f6 Deleted lots of unused files and code. 2023-09-11 10:19:48 +02:00
feb7a3330a A few Windows build fixes 2023-09-11 10:19:48 +02:00
4b3226ac3a Added projectM-Eval as submodule, flipped rendering stuff around a bit more. 2023-09-11 10:19:48 +02:00
e603793402 Finished per-pixel mesh, started rework of warp/comp shaders and textures.
Moved per-pixel mesh texture coordinate calculations into the vertex shader. This is probably more performant than the SSE2 code in the old PresetFrameIO class, as the GPU is better at running this stuff in parallel.

All the texture management also needs some refactoring, so now that I've already broken everything, I can just do it as well.
2023-09-11 10:19:47 +02:00
e73b0f3092 Working on getting stuff being rendered again, focus on default waveform.
Fixed many typos, errors and crashes on the way.
2023-09-11 10:19:47 +02:00
a55fa071b4 Fix a few linker issues with the eval lib. 2023-09-11 10:19:46 +02:00
e7094aa190 Remove "Pipeline" classes and temp fix all compilation issues. 2023-09-11 10:19:46 +02:00
b9ef6a3974 Remove old expression parser and add the new projectm-eval lib.
Requires a general rewrite of the Milkdrop preset code. Previous implementation was tightly integrated into the code parser, so reusing this code wasn't possible. Additional refactoring was done, finished converting custom wave/shape implementations to use the new expression parser code.
2023-09-11 10:19:45 +02:00
91bc04d780 Refactor Windows defines with generator expression 2023-06-11 18:04:13 +02:00
8b67eac528 Scope OpenGL deprecation define to macOS only 2023-06-11 18:04:13 +02:00
69b4c6a8ee Remove obsolete defines from the buildsystem
None of these defines are used anywhere in the code, so they should be
safe to delete.
2023-06-11 18:04:13 +02:00
97880cb932 Fix install components for main projectM library.
Allows users to install only runtime libraries OR development files, e.g. to create separate "libprojectM" and "libprojectM-dev" packages on Linux.
2023-03-23 10:48:12 +01:00
b9f1c16f58 Move third-party libraries to "vendor" dir. 2023-03-03 14:30:24 +01:00
3f66e184ae CMake: Replace "libprojectM(Playlist)Targets" by "projectM4(Playlist)Targets"
$ git grep -l Targets.cmake | xargs sed 's,libprojectM\(Playlist\)\?Targets\.cmake,projectM4\1Targets.cmake,' -i
2023-02-22 16:34:46 +01:00
37eb503748 CMake: Replace "libprojectM(Playlist)Config" by "projectM4(Playlist)Config"
$ git grep -l configure_package_config_file | xargs sed 's,libprojectM\(Playlist\)\?Config,projectM4\1Config,' -i
2023-02-22 16:34:46 +01:00
ee65fa55fd CMake: Replace "cmake/libprojectM" by "cmake/libprojectM4"
$ git grep -l cmake/libprojectM | xargs sed 's,cmake/libprojectM,cmake/projectM4,' -i
2023-02-22 16:34:46 +01:00
0940ec9532 Replace "-4.0" by "-4" 2023-02-22 16:34:46 +01:00
4502f03fd1 CMake: Replace "${PROJECTM_INCLUDE_DIR}/libprojectM" by "${PROJECTM_INCLUDE_DIR}/projectM-4.0" 2023-02-22 16:34:46 +01:00
c9b946be86 CMake: Set OUTPUT NAME to affect .so filenames
Old:
- libprojectM.so
- libprojectM_playlist.so

New:
- libprojectM-4.0.so
- libprojectM-4.0-playlist.so
2023-02-22 16:34:46 +01:00
0ef8e83cd9 CMake: Add "-4.0" and drop "lib" from pkg-config names 2023-02-22 16:34:46 +01:00
a85f9c61ef Add OpenMP libraries and flags to libprojectM pkg-config file. 2023-01-24 19:19:53 +01:00
ebafd69dfb Create proper pkg-config file for libprojectM_playlist.
Generalized the generator code as a macro. Still a huge mess.
2023-01-24 19:13:07 +01:00
2287172cbb Create proper pkg-config file for libprojectM.
Should now support both static and shared libs, plus adding any other required flags.
2023-01-24 18:49:37 +01:00
bcaf98f2f1 Rename USE_THREADS to PROJECTM_USE_THREADS and export it in the package config file.
PROJECTM_USE_THREADS is only exported if ENABLE_CXX_INTERFACE is ON.
2023-01-24 17:56:12 +01:00
bff9e52c69 Reduce header footprint of optional C++ API files and export C++ symbols properly. 2023-01-24 17:47:39 +01:00
edbe7455da macOS: Link CoreFoundation framework to the projectM library. 2023-01-17 18:55:23 +01:00
6e795ec632 Only build either shared or static projectM and playlist libraries.
Target name is now just libprojectM::projectM for the main library instead of libprojectM::static or libprojectM::shared.

Now using CMake's default mechanism to select the resulting library type via the BUILD_SHARED_LIBS variable. Main use case will be working with the shared library, which is the default.

Playlist library now also builds as a shared library, including proper symbol exports.

Additionally, deleted the leftover TestRunner class and a few old and rather useless test cases.

Also added LLVM find_package call and as a link dependency if the build is configured for using (experimental) LLVM code.

Reorganized tests to link either one of the object libraries for unit testing.
2023-01-13 11:16:27 +01:00
48f291b51c Removed config file support and added temp fix for mesh size change.
Mesh size is currently so deeply burrowed in the whole preset structure that changing it on the fly is basically impossible. For now, we'll reload the idle preset and reset the whole preset factory class tree to make sure all classes are properly reinitialized. If apps want to change the mesh size after startup, they need to reload the last played preset after changing the mesh size. This will be fixed in the future after the parser/equation compiler rewrite.
2023-01-07 15:52:50 +01:00
e659d862b5 Remove built-in key handler and rename two API functions.
Renamed preset lock functions to be in line with all other getter/setter functions regarding their naming scheme.
2022-12-30 15:14:25 +01:00