1
0
Fork 0
mirror of https://github.com/bjornbytes/lovr.git synced 2024-07-02 12:33:52 +00:00
Commit graph

2747 commits

Author SHA1 Message Date
bjorn aa52fc9ca4 OpenXR: Session fixes; getMirrorTexture; Frame submission; 2020-08-26 13:42:42 -06:00
bjorn 420ab91575 OpenXR: Fix clipFar; 2020-08-26 13:42:42 -06:00
bjorn 833fabb733 OpenXR: Add identity pose to reference spaces; 2020-08-26 13:42:42 -06:00
bjorn 93d82a8d14 OpenXR: Call xrGetOpenGLGraphicsRequirementsKHR; 2020-08-26 13:42:42 -06:00
bjorn beb281a43d Pass instance to xrResultToString; 2020-08-26 13:42:42 -06:00
bjorn 7617da0ec1 Move headset initialization to lovr.headset.init;
OpenXR basically has a hard requirement that a graphics API is available
before its session can be created.  Currently the graphics module isn't
always around when headset initialization takes place.  Polling the
graphics availability in update/renderTo has some consequences for calls
made to the headset module in lovr.load or during the first few frames.

So instead we're going to delay headset initialization to a special
function that is called after modules are required.  It can also be
called manually if the window creation is delayed.
2020-08-26 13:42:42 -06:00
bjorn 6c2679e00f Fix model loading edge case; 2020-08-26 04:41:15 -06:00
bjorn 2ced7c2c16 OpenXR: More robust graphics plugin; 2020-08-24 03:09:26 -06:00
bjorn 244e6cdd75 OpenXR focus events; 2020-08-24 02:10:12 -06:00
bjorn 0b94fe336e Reorganize OpenXR graphics extension stuff; 2020-08-24 02:04:06 -06:00
bjorn 5ab8dffd8d Fix OpenXR axis actions;
2D axes can't be used as 2D actions and instead need to be represented
as two 1D axes.  Also fixup oculus touch / valve index action paths.
2020-08-23 16:11:20 -06:00
bjorn 9f769470e6 Fix OpenXR OpenGL swapchain type; 2020-08-23 16:10:57 -06:00
bjorn ba3d10dd60 OpenXR: Make action names snake case;
Capital letters are not valid for action names.
2020-08-23 15:33:02 -06:00
bjorn 0439c932ce openxr: Move actions into resources; 2020-08-22 15:40:52 -06:00
bjorn 3cb291c866 rm leap motion driver;
Planning on using the new Ultraleap OpenXR API layer.  It's possible
that this will be added back if that doesn't work out.
2020-08-22 14:05:40 -06:00
bjorn 19cf537726 Clean up tracking driver initialization; 2020-08-22 13:42:52 -06:00
bjorn a055caaae4 Fix file permissions; 2020-08-22 13:36:39 -06:00
bjorn 8973730d8a openvr_getSkeleton;
Untested
2020-08-22 13:33:06 -06:00
bjorn e50835260a Clean up WebXR;
- Pointer lock
- wasPressed/wasReleased
- Cleanup
2020-08-21 04:37:38 -06:00
bjorn 6cadcea65d WebXR updates;
- Make the renderloop synchronous by hijacking the RAF to run on the
  XRSession when active.
- Convert os_web to use emscripten's native HTML5 interface instead
  of going through GLFW.
- Stop using preinitialized GL context -- lovrPlatformCreateWindow
  now creates the context.
- GLES2/3 emulation is not necessary.
- Remove inline sessions.  The VR simulator is used to render to the
  Canvas instead.  webxr_attach and webxr_detach are used to replace
  replace the active headset driver with the webxr driver when an
  immersive session starts.
- Add noop desktop_getSkeleton.
2020-08-20 13:28:07 -06:00
bjorn 4a8e8ae2a9 Rename SUPER key to OS internally; 2020-08-19 14:03:06 -06:00
bjorn 6fd80d10a1 rm unused window argument in errhand; 2020-08-19 14:01:31 -06:00
bjorn ec257b179f Support Lua 5.2, 5.3, 5.4; 2020-08-19 13:12:57 -06:00
bjorn f364fe030b Make Windows platform functions more private; 2020-08-18 21:21:35 -06:00
bjorn 1ca7aeb94e Reset font pixel density in errhand; 2020-08-18 21:15:31 -06:00
bjorn 17ce02d429 Fix OpenXR compile errors and add some android support; 2020-08-18 21:10:06 -06:00
bjorn 80f9514295 Shader:sendImage only checks srgb flag for RGBA textures;
It doesn't need to check it for RGB and compressed textures because
those are already rejected.

It may also be a good idea to zero-out the srgb flag for formats that
it doesn't apply to.
2020-08-18 20:20:48 -06:00
bjorn d937be35b5 Fix lovr.graphics.line(nil); 2020-08-17 14:43:46 -06:00
Nevyn Bengtsson 101cd38a7e pico: fix controller position 2020-08-17 14:34:40 +02:00
Nevyn Bengtsson d5e26a72d1 pico: stub for text event 2020-08-17 14:28:56 +02:00
bjorn ce4364fed2 Fix openvr_getSkeleton signature; 2020-08-17 03:30:20 -06:00
bjorn 82159a9885 rm persistent mapping; sync Mesh and ShaderBlock; 2020-08-17 03:29:30 -06:00
bjorn 810086e1ba Make WindowFlags const in createWindow; 2020-08-17 00:55:12 -06:00
bjorn e9841dd562 openvr hand -> device; 2020-08-16 20:28:21 -06:00
bjorn 9d1a685eb7 OpenVR: Remove skeletal input;
To fix the build, it will be re-added soon.
2020-08-16 20:27:24 -06:00
bjorn 4848d9a43a Model:hasJoints; 2020-08-16 00:49:16 -06:00
bjorn 65470f1e0e Update webxr driver; rm webvr; 2020-08-16 00:31:20 -06:00
bjorn 1b5e7b2203 vrapi_getSkeleton; 2020-08-12 15:47:10 -06:00
bjorn 438f7ef0d6 Add more Android keycodes; 2020-08-10 20:52:30 -06:00
bjorn 544c7a72e6 Add missing headers to os_web; 2020-08-08 19:19:56 -06:00
bjorn 4177202cc7 Don't enable GL debug output in WebGL; 2020-08-08 17:38:12 -06:00
bjorn 2a8c454de1 Add some more keys; 2020-08-08 16:04:20 -06:00
bjorn 40594317c3 Android textinput event; 2020-08-08 12:36:09 -06:00
bjorn 6823942e3d utf8_encode function; 2020-08-08 12:13:37 -06:00
bjorn 079338c0cc textinput event utf8 encode; 2020-08-07 16:25:56 -06:00
bjorn c24317d982 Start textinput event; 2020-08-07 15:17:19 -06:00
bjorn 682633d98b Add scancode and key repeat arguments to key events; 2020-08-07 14:15:45 -06:00
bjorn 414c5b991d Event module cleans up pending events on quit; 2020-08-06 20:09:45 -06:00
bjorn 1e30c0d93c Android key events; 2020-08-06 19:42:12 -06:00
bjorn cb4281b889 Add keypressed and keyreleased events; rm t.hotkeys; 2020-08-06 19:19:45 -06:00
bjorn c20c5508b4 vrapi: lovr.headset.newModel and lovr.headset.animate; 2020-08-06 18:00:54 -06:00
bjorn 3e9c877507 Add missing malloc assert; 2020-08-05 15:08:35 -06:00
bjorn 7e941cd22f lovr.headset.animate; Animated OpenVR controller models;
- lovr.headset.newModel accepts an optional options table as the
  second argument.  There is currently a single option named
  'animated' that can be used to request an animatable model.
  Currently it isn't clear if this should be a hint or not.
- lovr.headset.animate (name pending) can be called with a device
  and a model (usually with an animated model from headset.newModel,
  but this is not required).  The function attempts to animate the
  Model to match the pose of the device in an opaque driver-specific
  way, and returns whether or not this was successful.
- OpenVR has models for controllers with a system called "components"
  that can be used to animate the individual buttons.  Now the OpenVR
  headset driver implements the 'animate' function to make use of the
  controller components, to easily load and render animated controllers.
2020-08-05 15:05:59 -06:00
Nevyn Bengtsson b938a839e0 fix crash in lovrGraphicsGetPixelDensity
Neither Quest nor Pico check for null on its out-params.
Better to send in dummy params to avoid nulls.
2020-08-05 14:48:58 +02:00
bjorn e0decf5327 Fix ModelData pointer alignment;
ModelData manages a single allocation and creates pointers into
that allocation.  These pointers were tightly packed, creating
alignment issues which triggered undefined behavior.  Now, the
pointers are all aligned to 8 byte boundaries.
2020-08-04 12:28:21 -06:00
bjorn 83ff4783c2 ALIGN macro aligns up instead of down;
So you don't have to add (n - 1).  Hopefully this turns out to be
the common case.
2020-08-04 12:23:45 -06:00
bjorn 86fee211f1 Default errhand implementation handles restart event; 2020-08-04 12:21:38 -06:00
bjorn f1b447662d Fix lovr.headset.getDriver when passed a Device; 2020-08-04 12:19:22 -06:00
Nevyn Bengtsson 27384ac62c Fix Pico build
* lovrPlatformGetBundlePath was missing the root argument
* ANDROID_SDK can't be assumed to be the parent of the ndk folder, in case it's a side-by-side installation of the NDK. Instead, ANDROID_SDK should be provided with -D
* One more thing we could mention in the docs that I ran into: Installing java with apt gave me an incompatible version. It worked better to just -DJAVA_HOME= to the java that comes with Android studio (/snap/android-studio/91/android-studio/jre on ubuntu).
2020-08-04 10:42:04 +02:00
bjorn ee95e6c6bd Refactor OBJ model loading;
It no longer uses sscanf and no longer overflows its buffer.
2020-08-04 00:12:58 -06:00
bjorn b45baacb66 Handle active attributes that don't have a location;
There are some attributes that don't have a location (gl_InstanceID
is being reported for some reason).  Their location is -1 and this
causes a left shift of a negative value which is undefined.
2020-07-30 02:46:17 -06:00
bjorn 4160743b77 Fix desktop game packaging issue;
Accidentally hardcoded it to "assets" when updating Android.
2020-07-29 16:30:14 -06:00
bjorn 826fc098bc Set identity to empty string if save mount fails; 2020-07-29 16:27:17 -06:00
Bjorn 617d508d68
Merge pull request #269 from jmiskovic/savemount
Config parameter for save directory precedence
2020-07-29 16:26:07 -06:00
bjorn ae2e14f98f rm save directory mount failure fix;
This is a temporary revert to make a merge easier.
2020-07-29 16:25:29 -06:00
bjorn 99fdcc8287 Fix calling convention of GL debug callback; 2020-07-29 14:56:46 -06:00
bjorn d4f88f3d8d lovr.log: strip trailing newline in default implementation;
GL debug messages sometimes have newlines...
2020-07-29 14:24:57 -06:00
bjorn f0a5a8838b OpenGL debug messages and contexts;
The new t.graphics.debug flag controls the following:

- If enabled, a debug context is created
- If disabled, a no-error context is created
- If enabled, GL debug messages are forwarded to lovr.log
2020-07-28 16:12:30 -06:00
bjorn e3aa4c7d5d t.graphics.debug flag; 2020-07-28 16:12:15 -06:00
bjorn 5a17b48e4e Add GL_KHR_debug; 2020-07-28 16:08:37 -06:00
bjorn b024e71a98 Fix luax_vlog stack balancing; 2020-07-28 15:31:02 -06:00
bjorn c423b1292a Fix save directory to use system path separator; 2020-07-27 18:15:16 -06:00
bjorn 55f66f217e Adjust pico SDK version to 27; 2020-07-27 17:09:16 -06:00
bjorn ac58a1aeba Pico: Draw the rest of the owl;
Add entrypoints, headset backend code, fill in the Activity, and
add various special cases to account for the asynchronous render loop,
lack of sRGB support, and OpenGL state resets.
2020-07-27 14:56:21 -06:00
bjorn 58ab637465 Custom os implementation for pico; 2020-07-27 14:28:40 -06:00
bjorn b0b9e38da6 Pico: add pico jar and missing DRIVER_PICO enumerant; 2020-07-27 14:25:57 -06:00
bjorn e7d4e6cf7b Start pico headset backend; 2020-07-27 13:58:52 -06:00
bjorn d25e20fb9d mv AndroidManifest.xml AndroidManifest_vrapi.xml; 2020-07-27 13:47:32 -06:00
bjorn 87b979f51c mv Activity.java Activity_vrapi.java; 2020-07-27 12:50:27 -06:00
bjorn 066a8a3795 opps; 2020-07-27 11:28:35 -06:00
bjorn 472c59bc7b Fix windows build; 2020-07-19 17:57:05 -06:00
Elias Fleckenstein 7860322af9
Reverted size_t in ine 104 back to ssize_T 2020-07-11 15:32:15 +02:00
Elias Fleckenstein ea9fadc1ad
Fixed errors & warnings when compiling on linux
I added header files with #include to prevent the implicit declaration warnings and fixed a typo in function size_t lovrPlatformGetExecutablePath(char* buffer, size_t size).
2020-07-10 16:32:45 +02:00
bjorn 9abed055d8 lovr.log;
lovr.log is a new callback that is invoked whenever LÖVR wants to
send the project a message.  For example, this could be a performance
warning from the graphics module, an error message from one of the
headset backends, or an API deprecation notice.

The callback's signature is (message, level, tag).  The message is a
string containing the message to log, level is a string that is currently
one of "debug", "info", "warn", "error", and tag is an optional string
that is used to indicate the source of the message for grouping purposes.

The default implementation of the callback just prints the message,
but the callback can be overridden to do things like filter messages,
write them to a file, or even render them in VR.  Projects can also
invoke the callback directly to log their own messages.
2020-07-06 16:20:55 -06:00
bjorn 8b8681ad2f rm core/hash; 2020-07-06 16:01:31 -06:00
bjorn d045929065 ShaderBlock:getShaderCode: add namespace support; 2020-07-04 17:50:00 -06:00
bjorn 29f8365eed Clean up os_android and fix event polling issues; 2020-07-03 20:17:39 -06:00
bjorn eb008935e8 vrapi: wasPressed/wasReleased; 2020-07-03 18:12:14 -06:00
bjorn 59a1c14c04 rm oculus_didChange; 2020-07-03 17:59:18 -06:00
bjorn a9aaedae61 rm oculusmobile from t.headset.drivers;
Replaced by vrapi
2020-07-02 20:17:09 -06:00
bjorn 515cec673c Fix quit request for glfw; 2020-07-02 20:15:06 -06:00
bjorn 96337bf8cc rm core/gpu;
This is far from done and will probably be structured a bit differently.
2020-07-02 10:46:13 -06:00
bjorn 9777306b70 rm oculus mobile; 2020-07-02 10:46:10 -06:00
Bjorn 26b4b58479
Merge pull request #273 from bjornbytes/android-tup
Android Support
2020-07-02 09:26:14 -07:00
bjorn a0d2ba94ad vrapi: haptics, tracking space fixes; 2020-07-02 10:22:38 -06:00
bjorn 0dd4a1191c rm getApplicationId; 2020-06-29 18:10:03 -06:00
bjorn d8f7325bc7 lovr-oculus-mobile fixes; 2020-06-29 17:40:57 -06:00
Josip Miskovic c314824304 Initialize vec3 from mat4
Rotation and scaling is lost, only position is extracted from mat4.
2020-06-28 11:49:43 +03:00
bjorn 4d6ad2239e Quest input fixes; 2020-06-26 16:09:16 -06:00
bjorn afaae2febb Remaining android filesystem work; 2020-06-25 18:18:44 -06:00