You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge pull request #26 from projectM-visualizer/glsl
Re-enable shaders on modern platforms by transpiling HLSL to GLSL on the fly.
Better GLES support.
Running successfully on embedded systems with GLES and shaders. Compiles and almost runs with emscripten now (#92).
Mega props 👏 => @deltaoscarmike <= 👏
There are autoconf and automake files for projectM. It is suggested to read configure.ac and the assorted Makefile.am files.
4
+
5
+
6
+
## libprojectM
7
+
8
+
libprojectM is the core library. It is made up of three sub-libraries:
9
+
10
+
#### Renderer
11
+
Made up of everything in src/libprojectM/Renderer. It should project libRenderer
12
+
13
+
#### MilkdropPresetFactory / NativePresetFactory
14
+
From their respective folders. Native presets are visualizations that are implemented in C++ instead of .milk preset files. They are completely optional. Milkdrop presets are technically optional but the whole thing is basically useless without them.
15
+
16
+
If you don't want native presets, and you probably don't, don't bother with them. Ideally there should be a configure option to disable them, probably on by default (at this time this is needed for autoconf: https://github.com/projectM-visualizer/projectm/issues/99).
17
+
18
+
19
+
20
+
### Dependencies
21
+
22
+
* libglm for matrix math is required, just the headers though. We are considering "vendoring" them.
23
+
* A modified version of hlslparser is included in Renderer and used to transpile HLSL shaders to GLSL
24
+
* OpenGL 3+ or OpenGLES is required
25
+
* libftgl was used for drawing text. It is optional and may or may not be dropped
26
+
* libglew was used. not sure if it's still used.
27
+
* libsdl >= 2.0.5 is required for the SDL and emscripten apps. src/projectM-sdl is the current reference application implementation. maybe try getting that to build and run as your testbench.
28
+
29
+
30
+
#### Assets
31
+
libprojectM can either have a configuration hard-coded or load from a configuration file. It's up to each application to decide how to load the config file. The config file can have paths defined specifying where to load fonts and presets from.
32
+
33
+
You will want to install the config file and presets somewhere, and then define that path for the application you're trying to build.
Copy file name to clipboardExpand all lines: README.md
+8-7Lines changed: 8 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,12 +8,13 @@ projectM is an open-source project that reimplements the esteemed [Winamp Milkdr
8
8
Its purpose in life is to read in audio input and produce mesmerizing visuals, detecting tempo, and rendering advanced equations into a limitless array of user-contributed visualizations.
9
9
10
10
### Available For
11
-
*[Mac OS X, Linux (binary)](https://github.com/projectM-visualizer/projectm/releases/tag/v0.9.2-beta)
12
-
*[Mac OS X iTunes (plugin)](https://github.com/projectM-visualizer/projectm/releases/tag/v0.9.1-beta)
11
+
*[macOS, Linux (binary)](https://github.com/projectM-visualizer/projectm/releases/tag/v0.9.2-beta)
You can read more about how it works and the current state of development [here](https://lwn.net/Articles/750152/).
@@ -74,19 +75,19 @@ Silverjuke (FOSS Jukebox)
74
75
# Using the library
75
76
At its core projectM is a library, [libprojectM](src/libprojectM). This library is responsible for parsing presets, analyzing audio PCM data with beat detection and FFT, applying the preset to the audio feature data and rendering the resulting output with openGL. It can render to an openGL context or a texture.
76
77
77
-
For an example of a very simple example use of the library see the [libSDL2 sample code](src/projectM-sdl/projectM_SDL_main.cpp).
78
+
For an example of a simple example use of the library see the [libSDL2 sample code](src/projectM-sdl/projectM_SDL_main.cpp).
78
79
79
80
There are many other applications that make use of libprojectM that can be found in the [src](src/) directory.
80
81
81
82
***
82
83
83
84
# Todo
84
-
* Top priority has for a long time been to [port the calls from OpenGL immediate-mode (old-school) to be compatible with OpenGL ES](https://github.com/projectM-visualizer/projectm/issues/11), using [vertex buffer objects](http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Chapter-2.1:-Buffers-and-Textures.html). There's a [todo list of function calls to replace](https://github.com/projectM-visualizer/projectm/blob/gles/glES-porting.txt).
85
-
*[macOS Sierra broke the iTunes plugin somehow](https://github.com/projectM-visualizer/projectm/issues/7) (this is semi-fixed)
86
-
* Currently shader support is done via nVidia's Cg shader toolkit. This is ancient and no longer supported and very lame. [Use standard OpenGL facilities for compiling and executing the shader-based presets.](https://github.com/projectM-visualizer/projectm/pull/26)
85
+
* Make it build on windows again. There is support, it just needs updating.
87
86
* Support for the missing Milkdrop waveforms to get full compatibility with Milkdrop presets.
88
87
* Steal cool stuff from the recently-released Milkdrop source.
89
-
* Update the [various applications using libprojectM](src).
88
+
* Finish emscripten support for building to wasm/webGL for the web.
89
+
* Update the [various implementations using libprojectM](src).
0 commit comments