2782 Commits

Author SHA1 Message Date
5158ecbf7a Load image file and create texture separately with SOIL2
The new combined function no longer returns the image size, so we need to load the image ourselves, store the size and then pass the buffer to SOIL_create_OGL_texture().
2025-11-12 09:17:50 +01:00
413c6d7d06 Set correct primitive type (triangle strip) for user sprites 2025-11-11 15:18:42 +01:00
681ea1749d Remove decay value fix for 16-bit GPUs, as it capped decay to 0.9375. 2025-11-11 10:19:30 +01:00
b48022ce25 Update vcpkg repo baseline commit to include projectm-eval 1.0.5 2025-11-11 09:41:29 +01:00
544afe6f0e Bump projectm-eval submodule version to 1.0.5 2025-11-11 09:41:29 +01:00
db1b7bde31 Use previous frame's image (plus motion vectors) in blur textures
Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-11-11 09:41:10 +01:00
ebb8b3318b Add workflow configurations to test boost-filesystem and more platforms/archs 2025-11-04 16:44:54 +01:00
537add365f Silence CMake warning if projectM-Eval is not found externally.
Also output additional information in both cases (found/not found).
2025-11-04 13:51:37 +01:00
8df329f8c2 Use Boost's own CMake configuration file instead of CMake's module
Otherwise, breaks builds with newer Boost versions. Also set policy CMP0167 to NEW and forcing CMake to use the Config package and not the built-in module. Will now require Boost 1.70, but this should be available everywhere.
2025-11-04 13:42:51 +01:00
37a92f6ae1 Add missing <chrono> include in Playlist.cpp 2025-11-04 12:40:43 +01:00
51142f07fe Add missing includes required for some compilers
Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-11-03 18:32:15 +01:00
6a36b3f5c2 API docs: Clarify usage of projectm_set_window_size()
Calling the function with the same size again and again does not do anything at all - especially not "reset the renderer" as it was previously stated.

Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-11-03 16:22:04 +01:00
48ad45851e Fix values for bass/middle/treble/volume params for shaders
Since earlier projectM versions had values in these args which were way higher than they should've been, they were divided by 100. Since the audio processing refactor, this is no longer required, but these divisions were overlooked and thus shaders got only 1% of the actual magnitude expected.

Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-11-02 15:06:18 +01:00
7050626be0 Add additional alternates for the mult() function with int as arguments
Required to propagate NaNs as SM3/DX9 does.

Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-11-02 15:05:29 +01:00
eccdd26804 Fix playlist shuffle, index upper bound off-by-one
This caused projectM to sometimes stop switching presets if the index chosen was the end of the given interval. Since the preset switch fails in this case, no additional switches will happen unless the user manually switches to a new preset.

Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-10-28 17:37:44 +01:00
2fd65e8a8e Update issue template for general questions
Add a note pointing to the discussion boards instead of opening an issue.

Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-10-28 17:20:45 +01:00
394106bfd4 Add missing "distance" intrinsic to HLSLparser
Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-10-28 16:43:35 +01:00
890b78a985 Resolves #903: Flip V texture coordinates in sprite rendering to match MilkDrop orientation 2025-10-27 19:29:00 +01:00
765382738b Add Doxygen documentation, plus a few small fixes. 2025-10-27 19:29:00 +01:00
f8b5573d79 Wrap setting of blend mode/functions in a class. 2025-10-27 19:29:00 +01:00
076f5d9aa0 Remove RenderItem class 2025-10-27 19:29:00 +01:00
ec00a950b7 Use Mesh class in User Sprites 2025-10-27 19:29:00 +01:00
d4404b1c58 Use Mesh class in PresetTransition class 2025-10-27 19:29:00 +01:00
04e1f2ccfa Use Mesh class in CopyTexture class 2025-10-27 19:29:00 +01:00
11d93e1633 Use Mesh class in classic post-processing effects 2025-10-27 19:28:59 +01:00
bfd11fa3bf Use Mesh class in Waveform effect 2025-10-27 19:28:59 +01:00
ea5dffa275 Use Mesh class in Video Echo effect 2025-10-27 19:28:59 +01:00
d8ba9a31cb Use Mesh class in Warp effect
Now using the generated grid vertices and indices directly, drawing the warp mesh in a single draw call. This will increase the number of drawn vertices, but all GPUs made in the past decade can easily deal with 100K triangles or more.
2025-10-27 19:28:59 +01:00
95001a7e77 Use Mesh class in Motion Vector effect
Also get rid of the additional index attribute array, as gl_VertexID contains the same information and is free.
2025-10-27 19:28:59 +01:00
a20fba8d98 Use Mesh class in Final Composite effect 2025-10-27 19:28:59 +01:00
f9a1d97f0e Use Mesh class in Darken Center effect 2025-10-27 19:28:59 +01:00
a7df3680d9 Use Mesh class in Border effect
Reduced draw calls from 4/8 to 1/2 by specifying 8 vertices accessed via indices to draw each border in a single call.
2025-10-27 19:28:59 +01:00
f5d9546e83 Use Mesh class in Blur effect 2025-10-27 19:28:59 +01:00
6095f32283 Use Mesh class in Custom Shape effect 2025-10-27 19:28:59 +01:00
6287044384 Use Mesh class in Custom Wave effect 2025-10-27 19:28:59 +01:00
7e05f0fe0a Implement a mesh class for rendering geometry 2025-10-27 19:28:58 +01:00
797a24251f Don't clear history each time individual items are added or removed.
This will prevent the playback history from vanishing unexpectedly in case a preset can't be loaded.

Also fixed a few typos in the Doxygen comments and clarified how the history is changed when changing the playlist.
2025-10-27 19:20:07 +01:00
2da6db297e Playlist Library: Improve failed preset handling using a loop
Also removing failed presets immediately, which will prevent the same preset from being tried again. Increased default retry count to 500.
2025-10-27 19:20:02 +01:00
3e67f6e477 Update SOIL2 to v1.31 to fix issue with GL_OES_texture_npot
Resolves issue #910

Fail over to glGetString if SOIL_GL_GetProcAddress fails

Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-10-27 19:06:27 +01:00
1050d61845 Resolves #912 - Seg fault caused by m_sprites modification during iteration 2025-10-27 19:04:36 +01:00
f76e3e2a4d Update README.md 2025-10-27 19:03:00 +01:00
6639a8252a Update CMake build instructions
Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
2025-10-27 11:22:57 +01:00
f92f9a54b8 Update discord invite link 2025-10-26 15:33:11 -07:00
b3e7e8cdba Convert HLSL array subscript operator operand to int 2025-09-11 10:56:36 +02:00
d89c09ef5f Update projectm-eval submodule to v1.0.3 2025-08-04 19:41:55 +02:00
39c3ddc43c Redirect link to the latest MegaPack presets.
The community presets link is very old. Here's why:
- It contains .mil or other extension files, which is not a preset extension.
- Some of the presets are required some textures, which these aren't included and it's missing.

With my latest MegaPack, all of the presets are messy-free (no extension clutter), hardly patch fixed and included textures for use in presets.
2025-07-30 12:49:16 +03:00
0d784d9054 Update links to development releases in README.md 2025-06-10 21:11:58 +02:00
c94063bcb5 Fix Emscripten build check workflow 2025-04-30 08:34:49 +02:00
b742bc0082 Add API header compile tests for C
This will enable any future changes to the header to be tested. These additional build checks are only executed if BUILD_TESTING is enabled (e.g. in our automated build checks) to speed up release builds.
2025-03-24 10:00:24 +01:00
3a79ff4ff2 Fix playlist API header includes
Most playlist headers did not compile in pure C, as types like bool and size_t are used in calls. Added the proper includes as needed to make each header compile if included standalone.
2025-03-24 09:32:33 +01:00