Commit Graph

3856 Commits

Author SHA1 Message Date
bjorn c3e3993a6f Upgrade to OpenXR 1.0.23; 2022-05-27 21:14:39 -07:00
bjorn fa8be29dfa Use unique subdirectories for plugins in CMake; 2022-05-06 11:11:59 -07:00
Samuel Gosselin 255f4e4a34 fixup: keep coding style consistent. 2022-05-06 10:55:29 -07:00
Samuel Gosselin 02c67d090d fixup: gracefully handle XR_ERROR_DISPLAY_REFRESH_RATE_UNSUPPORTED_FB and return |false| instead. 2022-05-06 10:55:29 -07:00
Samuel Gosselin 425a2ca343 Add support for setting the display refresh-rate.
OpenXR provides APIs to enumerate the supported refresh-rates, and
selecting a new refresh-rate. This patch adds two new APIs to the
lovr.headset module:

  - lovr.headset.getDisplayFrequencies():
	Returns a table containing the supported refresh-rates on
	success; nil otherwise.
  - lovr.headset.setDisplayFrequency(refreshRate:number):
	Returns true on success, false otherwise.

Only the OpenXR backend has support for this feature and it is
gated by the "refreshRate" feature flag, similarly to what the
"getDisplayFrequency()" API does.
2022-05-06 10:55:29 -07:00
Ryan Pavlik 307d33b327 Allow XR_KHR_android_create_instance to be optional.
It's essentially replaced by KHR_loader_init_android,
and will eventually not be provided by new/updated runtimes
2022-05-06 09:28:15 -07:00
bjorn 4483145d53 Allow passing a file to lovr;
The file will be treated as main.lua.
Its directory will be treated as the source.
2022-04-28 17:36:05 -07:00
bjorn 005530c9c0 CMake: Add C_STANDARD_REQUIRED;
When you set C_STANDARD, CMake won't listen and will decay to older
C versions if the one you asked for isn't supported.

You can set C_STANDARD_REQUIRED, but it won't work in VS 2017 and below.

I guess this is better than nothing.
2022-04-27 20:31:10 -07:00
Josip Miskovic 24a0751c16 Add `World:setStepIterations(num)` and its getter
Physics world's "quick step" is executed in multiple iteration steps.
The getter and setter for this value is now made available as two new
methods in the World object.

This is allows user to balance between the less accurate but quick
simulations, and more stable behavior of physics.

Something similar was already possible, by reducing the delta time and
running the sim multiple times per frame. However, any force user applies
to collider is zeroed after each step. User would thus have to keep track
of applied forces, and re-apply them inside the physics iteration loop.

By default ODE uses 20 iterations in quick step.
2022-04-27 11:39:08 -07:00
jascase901 51d96f6fa2 include required for linux support. 2022-04-24 13:07:59 -07:00
jascase901 aeb269b24a use static assert macro instead of keyword
This change fixes a linker error I noticed when compiling on my windows
sytstem. see #551

According to this link the macro is prefered to the keyword.
https://docs.microsoft.com/en-us/cpp/c-language/static-assert-c?view=msvc-170#:~:text=The%20_Static_assert%20keyword%2C%20and%20the%20static_assert%20macro%2C%20both,runtime%20and%20incur%20a%20runtime%20cost.%20Microsoft-specific%20behavior
2022-04-24 13:07:59 -07:00
bjorn 218134d79c Compile miniaudio without pedantic;
It throws warnings when compiling as wasm.
2022-04-19 22:45:17 -07:00
bjorn c2847cedce Details; 2022-04-19 22:45:06 -07:00
bjorn 2dc9081d02 wasm target uses gnu11 standard;
This is because compiling with newer versions of emscripten warns
on use of EM_ASM without GNU C, and miniaudio uses EM_ASM.
2022-04-19 22:43:05 -07:00
bjorn 66c74a7cd3 CMake moves OpenXR loader on Linux; 2022-04-19 22:41:18 -07:00
bjorn a2cb611b6c Fix mipmaps with nearest filtering; 2022-04-14 16:16:22 -07:00
bjorn 85ee89d36f Fix weirdness with vec2 scale arguments; 2022-04-06 10:10:27 -07:00
bjorn 8af8d7922a tup: Lua also defines linux flag on android; 2022-04-06 09:22:50 -07:00
bjorn 972a0f2333 tup: define platform-specific Lua define; 2022-04-01 17:10:25 -07:00
bjorn dd7ed4eb51 tup: simplify tup.config overrides; 2022-04-01 16:54:28 -07:00
bjorn 7d3aa3e061 tup: s/overrides/troublemakers; 2022-04-01 16:05:16 -07:00
bjorn afbf98929f Clean up tup a bit; 2022-04-01 15:58:13 -07:00
bjorn cd0e458af9 lovr.filesystem.write/append returns success instead of size;
We don't have a good way of returning filesystem error messages yet,
but it's still useful to return a boolean instead of a number to
detect failure of zero byte writes.  Exposing the number of bytes
written is kind of weird since it's not very actionable.
2022-03-30 22:45:09 -07:00
bjorn 42e618fa00 World:getContacts; 2022-03-30 22:32:20 -07:00
bjorn 8fcdfd2bb4 Minor physics cleanup; 2022-03-30 22:05:10 -07:00
bjorn b115e5865f Fix miniaudio warning; 2022-03-30 21:15:51 -07:00
bjorn efbcb5e4c2 Merge branch 'master' into dev 2022-03-30 13:52:58 -07:00
bjorn fdfc63db63 Windows yells at ode less; 2022-03-30 13:40:27 -07:00
bjorn b32244b787 OpenXR: Make update idempotent;
The state tracking here is getting pretty complicated... oh well!
2022-03-30 13:33:02 -07:00
bjorn 0238549e66 OpenXR: sync all subaction paths; 2022-03-30 13:33:02 -07:00
bjorn 8235965eca rm util from os_macos; 2022-03-30 12:42:01 -07:00
bjorn 5d271de91a mv map util; 2022-03-30 12:34:38 -07:00
bjorn faa42ee38b mv resources etc; 2022-03-30 12:34:34 -07:00
bjorn 2ec5a1a9dd OpenXR: Valve Index grip improvements; 2022-03-30 11:13:55 -07:00
bjorn 3972a8df20 Reset OpenXR event type after polling;
Otherwise the struct will have the wrong type when polling the next
event.  Kind of annoying.
2022-03-29 08:56:26 -07:00
bjorn 72c93630ce Shift arguments up by one in fused mode;
There's a bug where arguments start at 0 instead of 1 in fused mode.

In fused mode, we aren't going to consume one of the command line
arguments for the project path like we normally do, so in order to
provide that argument to the lovr project at index 1, shift them all up
by one in boot.lua.  We can only do this after the filesystem module is
loaded, so it can't go in main.c with all the other arg stuff.

The zero'th argument in fused mode is now the source path, just like how
it works in non-fused mode.  This means the executable path is in the
arg table twice, which is sensible since in fused mode both the
interpreter and the interpreter's source are the same file.
2022-03-28 13:24:44 -07:00
monolifed af3ec874f0 Keep winding with flip 2022-03-28 12:37:21 -07:00
bjorn d70619ec96 Source:isSpatial; Separate spatial from effects; 2022-03-27 19:09:25 -07:00
bjorn c824c5c135 obj: triangulate faces;
Supports faces with any number of vertices by converting to triangle
fans.
2022-03-27 18:35:38 -07:00
bjorn e47f3eb108 Use doubles for noise; 2022-03-27 14:51:06 -07:00
bjorn f347ac98d9 Switch to simplex noise;
Pending test
2022-03-27 01:21:52 -07:00
bjorn 342f92940e Add :equals method to vector objects; 2022-03-25 16:05:38 -07:00
bjorn 03df236e63 Fix Canvas depth buffer mipmap generation; 2022-03-25 13:12:18 -07:00
bjorn 6c9531564e Make physics structs private; 2022-03-25 12:40:29 -07:00
bjorn 018b94a0fb Update ODE to include header changes; 2022-03-25 12:38:07 -07:00
bjorn 05c15d47ac Update ODE submodule;
Includes a fix for a crash with colliders that are out of bounds.
2022-03-25 12:28:16 -07:00
bjorn 985d8c7a61 Fix glTF base64 precedence issue; 2022-03-25 12:22:07 -07:00
bjorn 56dbb346e7 ODE uses 4-component vec3s too; 2022-03-25 12:15:38 -07:00
bjorn dc6de4ca14 Freeze! GCC police; 2022-03-25 12:15:38 -07:00
bjorn fdb4db2297 Support base64 images in glTF; 2022-03-25 03:58:06 -07:00