* add glm lib in vendor folder
* fix makefile
* add more help and context to emscripten readme
* add correct output parameter to emcc
* add how to restart the process to the readme
* simplify emscripten compilation
* apply patch
* fix blur shaders to work with WebGL
* Supports Multiple pass2 renderings.
My application (Silent Radiance) added projectM visualizers, but I needed support for VR.
So I added Renderer::RenderFrameOnlyPass1 and Renderer::RenderFrameOnlyPass2
This allows an offset in the screen output so the same image can be rendered twice very quickly.
I could have rendered to a buffer externally.
This is fed into the Raylib VR in my application to add the fisheye effect.
* Added an example of the VR
* Added multiple screen renderings for VR
Added a new way of rendering that allows multiple pass2's to be done: one per screen.
This allows for a second screen output, and VR. In fact I am using this for VR where I need a left and right eye on the same screen.
In order to do this, I sometimes have to set the viewport not starting at the upper left of the screen.
Added renderFrameOnlyPass2 - and an optional pipeline can be passed - this would be a pipeline when there is a transition from one visual to another. This can be called once per eye.
Finally, renderFrameEndOnSeparatePasses cleans up, does the fps control, statistics, etc.
This alternate rendering is as possible:
Pipeline pipeline;
Pipeline *comboPipeline;
comboPipeline = renderFrameOnlyPass1(&pipeline);
for each eye:
renderFrameOnlyPass2(comboPipeline,xoffset,yoffset,eye);
Then
renderFrameEndOnSeparatePasses(comboPipeline);
for the accounting and releasing the mutex
* Removed the duplication of code for VR.
* Removed the duplication of code for VR.
* configure script to build libprojectM with NDK
Allows to cross compile libprojectM library using
Android's toolchain for an arm target.
Tested on Ubuntu.
* Android-NDK: Build .so as well as .a
* Adjust CPPFLAGS to make the .so actually usable
* WIP: crashes in trying to link egl
* Add libEGL to linking flags, so that libprojectM.so depends on libEGL.so
* configure-ndk: set install paths
By setting prefix, libdir and datarootdir it's possible to simply do
$ ./autogen.sh
$ ./configure-ndk
$ make -j`nproc` && make install-strip
to build the library, copy it and headers to the right place, and install
all presets as Android assets for inclusion in the apk.
* Let gradle include libc++_shared.so
No need to include this manually, better to let gradle pull in the
version from the NDK toolchain in use.
* Load jniwrapper
Get boring UnsatisfiedLinkError otherwise.
* Extract and use embedded preset assets
Now ProjectM will cycle through all available presets
based on default settings.
* Add precompiled preset assets
* Don't leak existing instance when creating new one
* A few minor Android build changes: use GLESv3 instead, do not try to build SDL under NDK
* Mark GLESv3 as required.
On some rockchip devices I tested on - only v2 is supported.
projectM fails on glGetSampler calls, since those are not implemented.
* Make Activity full screen
* Android:
- hook up basic audio
- start on a random preset
- switch presets on touch
* Android package rename
* Android: do not story a copy of all presets inside android app
After building the android app's dependecies using NDK,
`make install-strip` copies over the prebuilt libraries
as well as all the presets. Since they are stored in this
git repo, no need to store a copy.
I leave a few test presests in the app, in case someone
wants to try building the app without rebuilding the dependencies.
as already in src/projectM-pulseaudio/projectM-pulseaudio.desktop remove
extension
Fix an warning when run desktop-file-install
value "prjm16-transparent.svg" for key "Icon" in group "Desktop Entry" is an icon name with an extension, but there should be no extension as described in the Icon Theme Specification if the value is not an absolute path
so that projectM builds in a reproducible way
in spite of indeterministic filesystem readdir order.
See https://reproducible-builds.org/ for why this is good.
Without this patch, multiple .milk files varied between builds
in interesting ways:
--- "old//usr/share/projectM/presets/Geiss - All-Spark Polar.milk"
+++ "new//usr/share/projectM/presets/Geiss - All-Spark Polar.milk"
@@ -3,7 +3,7 @@
PSVERSION_WARP=2^M
PSVERSION_COMP=2^M
[preset00]^M
-fRating=4.000000^M
+fRating=2.0^M