bjorn
0bb556554d
Probably work around stb_image bug that breaks zips;
...
30e01f upgraded stb_image to include its 95560b commit from its #960
pull request. This made stb_image fail more aggressively on EOF
conditions when refilling huffman buffers in deflate streams. I think
it might be failing _too_ aggressively, though. We are able to pad our
input compressed buffers since the zip file format is guaranteed to have
extra data at the end (for, e.g., the end of central directory record).
This appears to be sufficient to fix compressed zip archives for the
time being. It's possible that more virtual padding needs to be added,
and it may be good to try to fix this in stb_image itself.
2021-03-18 00:05:34 -06:00
bjorn
2d43620d3c
rm LOVR_ALIGN;
...
It isn't very portable, the effects aren't significant.
2021-03-15 18:56:02 -06:00
bjorn
f9f4907a50
phonon fixes;
2021-03-07 22:42:54 -07:00
bjorn
0435694225
simple spatializer interpolation;
...
prevents snaps, crackles, and pops
2021-03-07 21:19:25 -07:00
bjorn
30a0556f1d
Fix oculus spatializer;
2021-03-07 21:19:24 -07:00
bjorn
a3b791a7e7
Fix Canvas flushing;
2021-03-07 21:19:24 -07:00
mcc
9f0826e3b7
Add missing header in headset_oculus, this fixes a warning.
2021-03-05 15:07:18 -08:00
mcc
4bed6f6834
Fix crash on startup on Oculus driver
2021-03-05 15:07:18 -08:00
bjorn
0c3351331e
Sink attempt;
2021-03-03 20:01:56 -07:00
bjorn
f806c07bfa
Simplify spatializer interface temporarily;
2021-03-03 15:49:28 -07:00
bjorn
bc41eecf09
oculus spatializer: free memory; use MAX_SOURCES
2021-03-03 15:46:01 -07:00
bjorn
8188e51060
lovr.audio.get/setAbsorption;
...
I HOPE THIS LETS US DO UNDERWATER EFFECT
2021-03-03 15:40:27 -07:00
bjorn
2c0875087f
Source:getSound;
2021-03-03 15:32:41 -07:00
bjorn
dd98b11b3f
Effect;
...
Basically replace each individual accessor with a general one.
2021-03-03 15:25:03 -07:00
bjorn
dd0891d087
Fix simple spatializer;
2021-03-02 11:49:00 -07:00
bjorn
e1e21def82
More consistent spatializer symbol names;
2021-03-01 17:53:49 -07:00
bjorn
cf4bb36d03
AudioMaterial;
2021-02-28 15:27:33 -07:00
mcc
d233d5ccd3
Fix MSVC build
...
- stdatomic.h had not defined ATOMIC_INT_LOCK_FREE, but it is now required
- It's _MSC_VER, not _MSVC_VER
2021-02-28 14:12:16 -08:00
bjorn
92492dcef1
rm spatial blend for now;
2021-02-26 13:24:01 -07:00
bjorn
cb1b78f2cc
Rename Source:get/setTime to Source:seek and Source:tell;
2021-02-26 13:21:40 -07:00
bjorn
f3482fc15a
lovr.audio.get/setPosition; lovr.audio.get/setOrientation;
2021-02-26 13:05:23 -07:00
bjorn
f82e8112fe
Simplify filesystem arguments;
2021-02-25 10:45:45 -07:00
bjorn
a09b7de545
lovr.system.getCoreCount;
2021-02-25 09:30:05 -07:00
bjorn
4f5adbc64c
lovr.system;
2021-02-25 09:00:12 -07:00
bjorn
a94a1c22bf
simple spatializer uses physically correct attenuation;
...
This matches phonon.
2021-02-24 17:51:44 -07:00
bjorn
39a4d2c1d5
rm lovr.graphics.triangle;
2021-02-24 17:45:31 -07:00
bjorn
3055cd718c
rm shared sources;
2021-02-24 17:43:42 -07:00
bjorn
f47a688d53
phonon: configuration options;
2021-02-24 17:43:42 -07:00
bjorn
bec4fc3169
phonon: implement convolution reverb;
2021-02-24 17:43:42 -07:00
bjorn
ec96a126d7
phonon: accessors; multiple sources; start reverb;
2021-02-24 17:43:42 -07:00
bjorn
5f2cdf0c22
phonon: Directivity adjustments;
2021-02-24 17:43:42 -07:00
bjorn
f60d6c8900
phonon: I hate typing dipole;
2021-02-24 17:43:42 -07:00
bjorn
7f032b7a3e
phonon: Change absorption to a boolean;
2021-02-24 17:43:42 -07:00
bjorn
90ca17c454
phonon: Change falloff to a boolean;
2021-02-24 17:43:42 -07:00
bjorn
87bbec7018
phonon: setGeometry test;
2021-02-24 17:43:42 -07:00
bjorn
16cfb7bad5
phonon: binaural renderer, binaural effect, HRTF;
2021-02-24 17:43:42 -07:00
bjorn
ac96556a13
phonon: Source:get/setDirectivity;
2021-02-24 17:43:42 -07:00
bjorn
66e574baac
phonon: Source:get/setAbsorption;
2021-02-24 17:43:42 -07:00
bjorn
c531243d7d
phonon: Source:get/setFalloff;
...
The falloff is the minimum distance at which inverse distance
attenuation takes place.
A non-positive value disables distance attenuation.
In the Lua API, nil can be used to disable attenuation, a boolean can be
used to enable attenuation with a default minimum distance, or a number
can be used for full control over the parameter.
2021-02-24 17:43:42 -07:00
bjorn
0af7e98fad
phonon: rearrange Source accessors;
2021-02-24 17:43:42 -07:00
bjorn
584138c937
phonon: Compute listener/source basis vectors;
2021-02-24 17:43:42 -07:00
bjorn
f4a8a4d388
WIP;
2021-02-24 17:43:42 -07:00
bjorn
8bbb092497
Start phonon spatializer;
2021-02-24 17:43:42 -07:00
bjorn
5d542eb2ea
Minor Sound cleanup;
2021-02-24 14:11:49 -07:00
bjorn
7d0dfc9cdd
Sound: Ambisonic support;
...
Add support for importing ambisonic WAV files and 24/32 bit PCM WAV files.
The standard ambisonic format used internally in LÖVR is ACN channel ordering with SN3D normalization.
Anything else will be converted to this form.
There are a few restrictions and assumptions:
- Only 1st order ambisonics are supported. They need to have 4 channels.
- They can be in AMB format (Furse-Malham order/normalization), detected via WAVE_EXTENSIBLE GUID.
- Any other 4 channel file is assumed to be in "AmbiX" ACN/SN3D format.
- It seems that most ambisonic files in the wild that claim to be AmbiX are just 4 channel WAVs without any metadata.
- This means that non-ambisonic 4 channel WAVs could ambiguously be mistaken as ambisonic. This is incurred as a limitation of LÖVR.
- Ambisonic files can not currently be played back. SteamAudio currently has numerous bugs with this.
- Perhaps it would be possible to write an ambisonic rotator/panning decoder to use as a default implementation.
2021-02-24 14:11:49 -07:00
bjorn
1d1a2de124
Only use CTZL in audio;
2021-02-24 14:11:49 -07:00
bjorn
72a54bce2f
Support STL models;
...
Only binary STL files are supported right now, ASCII is more challenging.
2021-02-23 12:07:16 -07:00
bjorn
a430ae06b8
Early-reject OBJ files;
...
OBJ files must start with a vertex, object, mtllib, or comment.
2021-02-23 12:05:11 -07:00
bjorn
1145085446
macOS fixes;
2021-02-22 17:07:28 -07:00
bjorn
fb1447503b
Fix gcc warnings;
2021-02-19 23:44:23 -07:00
mcc
ffa63e9912
Allow the creation of a (potentially infinite-length) Sound created by a dynamically run callback
2021-02-19 21:30:16 -07:00
bjorn
57a215a0aa
Minor MeshShape cleanup;
...
- Fix memory leak
- Minor error message improvements
2021-02-19 17:28:04 -07:00
bjorn
880d06a1d1
Only enable compute extensions on desktop GL;
2021-02-19 14:09:40 -07:00
bjorn
1757d30a59
Compute shader feature detection adjustment;
...
- Compute feature requires compute shaders, image load/store, and SSBOs.
- GLSL 330 is always used, instead of changing depending on compute shader extension.
- Explicitly enable compute shaders, image load/store, and SSBO extensions when needed.
This allows implementations that don't support GLSL 430 to run compute shaders,
and keeps the min supported GL version more consistently at GL3.3.
2021-02-19 14:07:27 -07:00
bjorn
26d009aada
Fix sample conversion when only channel count conversion is required;
2021-02-19 12:35:52 -07:00
bjorn
a2b7e1619d
Fix wasm compilation issues;
2021-02-19 09:05:57 -07:00
bjorn
7ef215c312
simulator: fix aspect ratio;
2021-02-19 08:30:57 -07:00
bjorn
6c74a61ae3
simulator: Fix getDisplayDimensions;
...
getDisplayDimensions is supposed to return the dimensions of one eye.
2021-02-19 08:29:38 -07:00
bjorn
36170678f0
Sound: Change channel count to channel layout;
2021-02-18 21:17:25 -07:00
bjorn
08916df2f1
Tell spatializers about sources only when they're active;
...
apply will still only be called with sources after they have been created.
2021-02-18 20:49:20 -07:00
bjorn
952fee3bd1
Rework audio converters;
...
They are stored by value in the array so they are contiguous.
Source stores the index of its converter to save a bit of space and avoid realloc.
2021-02-17 22:47:50 -07:00
bjorn
7b7f6bbaeb
Simplify FOREACH_SOURCE;
2021-02-17 22:36:24 -07:00
bjorn
cb8a1e8962
Free playing Sources properly;
2021-02-17 22:31:03 -07:00
bjorn
75fda2336f
Enforce strict limit of 64 active sources;
...
If 64 sources are playing and a new one is started, Source:play will
return false.
Instead of a linked list, a static list of 64 Sources is used.
Bit scanning intrinsics are used to efficiently iterate the list,
using a mask (still deciding on this).
2021-02-17 20:46:33 -07:00
bjorn
ea64f32c1f
Source:clone;
2021-02-16 21:34:53 -07:00
bjorn
72284c2c5b
Merge branch 'master' into dev
2021-02-12 08:16:36 -07:00
bjorn
023067ec27
util.h no longer uses atomics;
2021-02-11 16:37:55 -07:00
bjorn
28e88d7598
Reorganize spatializer files/CMake; Oculus Audio tup support;
2021-02-10 12:41:15 -07:00
bjorn
5ae5acfb18
Make Font texture rgba16f;
...
Sampling from rg11b10f does not appear to work on mobile.
2021-02-10 15:22:30 -07:00
bjorn
0919da4091
Improve MSDF font shader; Add spread/padding settings to Font;
2021-02-10 07:08:29 -07:00
bjorn
7b136b914c
Update msdfgen;
...
- Rasterizer (maybe temporarily) uses 32 bit float textures.
2021-02-10 04:03:43 -07:00
bjorn
f8ed6c3a34
physics: Use dReal in more places;
...
This makes it easier to swap between float/double.
2021-02-09 23:24:27 -07:00
bjorn
351d1ae200
Fix vrapi includes;
2021-02-09 20:03:53 -07:00
bjorn
9377406854
Fix font wrap issue with spaces;
...
If a space starts before the wrap limit, but ends after it, the next
word won't wrap properly even though it should.
2021-02-09 08:06:37 -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
8c714c45b0
Clean up some includes;
2021-02-08 11:16:00 -07:00
bjorn
0e318aa46e
Make Rasterizer opaque;
2021-02-08 10:58:39 -07:00
bjorn
6d92d54079
Try having arr_t in util;
2021-02-08 18:25:05 -07:00
bjorn
bc4cde1653
Adjust lovrRelease signature;
2021-02-08 17:52:26 -07:00
bjorn
3ded60948f
rm core/ref; rm lovrAlloc; util does refcounting;
2021-02-08 17:26:44 -07:00
bjorn
ccc53a10aa
Cleanup;
2021-02-08 16:08:29 -07:00
bjorn
0877edf9d1
Fix capture;
2021-02-08 16:08:29 -07:00
bjorn
8bf0acd2eb
Add minimp3;
2021-02-08 16:08:29 -07:00
bjorn
1995aae7e9
Simplify enumeration more;
2021-02-08 16:08:29 -07:00
bjorn
60809268e7
Add the ability to request exclusive access to an audio device;
2021-02-08 16:08:29 -07:00
bjorn
111a376a2e
SoundData;
2021-02-08 16:08:29 -07:00
bjorn
e0ac328a72
SoundData WIP; WAV importer;
2021-02-08 16:08:29 -07:00
bjorn
e3e7b265a3
Add the ability to opt-out of default output device initialization;
2021-02-08 16:08:29 -07:00
bjorn
782c22448e
Mixer fast paths;
...
- If no converter is needed, don't create/use it
- If no spatialization is needed, don't copy
In the best case, samples willi now be read into a buffer and immediately mixed into the output.
2021-02-08 16:08:29 -07:00
bjorn
177a94738d
48khz sample rate; fixes;
2021-02-08 16:08:29 -07:00
bjorn
93ea56155e
scribbling;
2021-02-08 16:08:29 -07:00
bjorn
025865461c
Cleanup;
2021-02-08 16:08:29 -07:00
bjorn
13e100275e
Fix style issues;
2021-02-08 16:08:29 -07:00
bjorn
68f5bb3095
Fix style issues;
2021-02-08 16:08:29 -07:00
bjorn
cb8e1b5b91
Fix compile errors;
2021-02-08 16:08:29 -07:00
bjorn
a3a5b29d6d
Minor style changes;
2021-02-08 16:08:29 -07:00
mcc
f515d8e84f
Code review adjustments (code clarity, constness) for oculus spatializer
2021-02-08 16:08:29 -07:00
mcc
46bb053e0f
Late changes on oculus spatializer: Fix memory corruption bug on source delete, add comment
2021-02-08 16:08:29 -07:00