Commit Graph

359 Commits

Author SHA1 Message Date
Nevyn Bengtsson 06dd81f6d7 Use d8 instead of dx
dx was deprecated years ago, and d8 replaces it. dx is
removed in build-tools 31, so it's best not to depend on it.

In addition, d8 now supports Java 11 (class version 55), which
is required to use the javac bundled with Android Studio.
2021-12-07 08:17:56 -08:00
kokokoshka 7e52ffe956 MinGW support 2021-06-18 15:45:26 -06:00
brainrom 3d1775e468 Lua links properly
mlib required to build Lua, dl lib used to load compiled plugins from shared libraries.
2021-06-10 10:37:30 -06:00
mcc 2a30a7f38d Get SteamAudio and OculusAudio working on mac. Also add the Phonon target as a dependency when LOVR_USE_STEAM_AUDIO (all platforms), which has no effect but could be useful later if SteamAudio acquires any build steps while still being a runtime-linked library. 2021-04-27 00:02:44 -06:00
mcc fc87bffbe0 Fix Android CMake build. 2021-04-20 07:45:39 -06:00
Jakob Bornecrantz b02c30a0e4 Make bin directory AppImage ready 2021-04-13 11:03:57 -06:00
bjorn f565a7b69b rm linking to OpenSLES; 2021-04-03 18:42:34 -06:00
bjorn bbc868b2ea CMake: Only strip android libraries in release mode; 2021-04-03 01:18:58 -06:00
bjorn 4b1cca50bc CMake: msdfgen is always shared; 2021-04-03 01:18:40 -06:00
bjorn 618fb2ed2f CMake: macOS builds into bin dir and moves libraries there;
A previous change modified the rpath to always be @executable_path.

This patch moves all libraries next to the executable, so that they can
load properly with the new rpath.  For better organization, everything
is nested into a bin directory.  This is congruent with how linux works.

Bundled builds remain the same -- they are using @executable_path like
before, and libraries get moved next to the executable inside the .app.
2021-04-02 22:17:58 -06:00
bjorn 245fed5e39 CMake: macOS always builds with @executable_path rpath; 2021-04-02 01:07:37 -06:00
bjorn 7e003032b5 Add favicon to wasm build;
Totally useless, but totally awesome.
2021-03-31 14:28:05 -06:00
mcc 896ebf0181 Phonon/SteamAudio support in CMake build 2021-03-30 18:38:14 -06:00
mcc 3619626710 CMake build fix for Oculus Audio on Quest 2021-03-23 14:37:30 -06:00
bjorn 121e0fde4c Add vanilla Lua submodule;
This needs testing on other platforms.
2021-03-23 14:31:04 -06:00
bjorn 49f02c65d8 rm lua submodule; 2021-03-23 14:31:04 -06:00
mcc e3c2b5b865 Fix Android build
- Fix typos after refactor
- Fix CMake when using ANDROID_PACKAGE
2021-03-22 14:09:16 -06:00
bjorn f9f4907a50 phonon fixes; 2021-03-07 22:42:54 -07:00
bjorn 30a0556f1d Fix oculus spatializer; 2021-03-07 21:19:24 -07:00
bjorn f65f4c4075 Switch OpenVR back to non-imported library;
Building it from source results in a 7-8x smaller binary.
2021-03-04 18:40:58 -07:00
bjorn 746735259c Windows: Always use WinMain for UTF8 command line arguments;
This fixes problems with paths containing special characters on windows.
2021-03-02 11:49:08 -07:00
bjorn 1c3a01de2a Add windows icon; 2021-03-01 17:45:12 -07:00
bjorn f3a12f2af9 Turn openvr into an imported library;
It uses a deprecated version of CMake, creates weird directories,
is slow to compile, and causes tup to rely on CMake more.  Instead,
just use its binary artifacts directly.
2021-02-28 15:49:06 -07:00
bjorn 8a29c9c1f5 CMake: whitespace; 2021-02-25 16:31:14 -07:00
bjorn 4f5adbc64c lovr.system; 2021-02-25 09:00:12 -07:00
bjorn 8bbb092497 Start phonon spatializer; 2021-02-24 17:43:42 -07:00
bjorn bff86e6add CMake: Add modelData_stl.c file; 2021-02-24 13:22:46 -07:00
bjorn 72284c2c5b Merge branch 'master' into dev 2021-02-12 08:16:36 -07:00
bjorn b21fd987ca CMake: change msdfgen binary dir; tup: fix msdfgen path; 2021-02-11 16:19:35 -07:00
mcc 126ff0d8ba Fix build when LOVR_ENABLE_AUDIO is off
(Build miniaudio if LOVR_ENABLE_DATA is on)
2021-02-11 15:58:37 -07:00
bjorn 28e88d7598 Reorganize spatializer files/CMake; Oculus Audio tup support; 2021-02-10 12:41:15 -07:00
bjorn 6eb6ab221f CMake: Fix msdfgen target name; 2021-02-10 16:52:15 -07:00
bjorn e630cabdac CMake: Fix weird linux opengl warning; 2021-02-10 04:03:18 -07:00
bjorn 51485f613c Add the ability to override Android package id; 2021-02-09 21:19:29 -07:00
bjorn 84f65c26e4 Move utf8 back into util; 2021-02-08 20:55:51 -07:00
bjorn 8164e0b6e8 TextureData is now named Image!;
The existing Image construct was renamed StorageImage.
2021-02-08 20:17:47 -07:00
bjorn dca79f83f0 SoundData is now named Sound!; 2021-02-08 19:52:56 -07:00
bjorn 6d92d54079 Try having arr_t in util; 2021-02-08 18:25:05 -07:00
bjorn 3ded60948f rm core/ref; rm lovrAlloc; util does refcounting; 2021-02-08 17:26:44 -07:00
bjorn 1db661f257 Add stdatomic shim to include path; 2021-02-08 16:50:43 -07:00
bjorn ccc53a10aa Cleanup; 2021-02-08 16:08:29 -07:00
bjorn 8bf0acd2eb Add minimp3; 2021-02-08 16:08:29 -07:00
bjorn 03f167c4c1 rm reference to openal; 2021-02-08 16:08:29 -07:00
bjorn 177a94738d 48khz sample rate; fixes; 2021-02-08 16:08:29 -07:00
mcc 9ba4037e74 LOVR_USE_OCULUS_AUDIO
This is a large patch which adds a new Oculus Audio spatializer. Oculus Audio is slightly different from the dummy spatializer in a few ways:

    - It *must* receive fixed-size input buffers, every time, always.
    - It can only handle a fixed number of spatialized sound sources at a time.
    - It has a concept of "tails"; the spatialization of a sound can continue after the sound itself ends (eg echo).

Changes to audio.c were needed to support Oculus Audio's quirks:

    - audio.c now supports a "fixedBuffer" mode which invokes the generator/spatializer in fixed size chunks
    - Each source now has an intptr_t "memo" field that the spatializer may use to store whatever (Oculus spatializer uses this to handle the sound source limit).
    - The spatializer interface got a couple new methods: A "tail" method which returns a sound buffer after all sources are processed; and "create" and "destroy" methods that are called when a sound source is created or destroyed (Oculus spatializer uses this to populate/clear the "memo" field).

Along the way some other miscellaneous changes got made:

    - lovr.audio.getSpatializerName() returns the current spatializer
    - Spatializer init now takes in "config in" and "config out" structs (Spatializer changes fields in config out to request things, currently fixed buffer mode).
    - lovr.conf now takes t.audio.spatializer (string name of desired spatializer) and t.audio.spatializerMaxSourcesHint (Spatializers with max sources limits like Oculus will use this as the limit).
    - audio.c went back to tracking position/orientation as vectors rather than a matrix
    - A file oculus_spatializer_math_shim.h was added containing a minimal copypaste of OVR_CAPI.h from Oculus SDK to support a ovrPoseStatef the spatializer API needs. This may have license consequences but we are probably OK via a combination of fair use and the fact that a user cannot use this header file without accepting Oculus's license through other means.

Some work remains to be done, in particular there is an entire reverb feature I did not touch and LOVR_USE_OCULUS_AUDIO cannot be activated from tup. Oculus Spatializer works better when it has velocity and time information but this patch does not supply it.
2021-02-08 16:08:29 -07:00
Nevyn Bengtsson f7d027a3ce Audio permissions seem to work without AppCompat 2021-02-08 16:08:29 -07:00
Nevyn Bengtsson bb429829f6 Android: Link OpenSLES so miniaudio works 2021-02-08 16:08:29 -07:00
Nevyn Bengtsson e54629dfb0 Android: Link appcompat so we can ask for audio capture permissions 2021-02-08 16:08:29 -07:00
Nevyn Bengtsson 8403c9bd70 just a super dummy spatializer 2021-02-08 16:08:29 -07:00
bjorn c738ae9993 Update CMake/deps; 2021-02-08 16:08:29 -07:00