Commit Graph

2119 Commits

Author SHA1 Message Date
bjorn de6d3dab5b Add tup build system;
It's still a rough draft and likely only works on my machine, but can be
improved over time.

Rough explanation:

- tup.config contains high-level build configuration defaults.
- Tuprules.tup contains mostly compiler flags (generated from the
  tup.config) and declares some macros used to compile code.
- Tupfile takes all generated object files and links them into the
  lovr executable.
- src/Tupdefault defines the default build steps for src and all
  subdirectories, which is to compile all .c files to .o files and put
  them in the <objects> bucket for linking by the toplevel Tupfile.

It's possible to have multiple configs active at once for different
platforms, projects, etc.  To do this, create a folder for each build
variant you want, and place a tup.config in each folder (it can be a
symlink, which is helpful).  Then, invoking `tup` will build all your
variants, or you can build a specific one by doing `tup <foldername>`.
2019-06-10 04:06:22 -07:00
bjorn 31a1dc6cee Details; 2019-06-10 03:39:53 -07:00
bjorn e9853ed3c7 t.math.ffi conf flag; 2019-06-10 00:11:20 -07:00
bjorn 98f4365474 Add astc and dxt GraphicsFeatures; 2019-06-09 23:59:57 -07:00
bjorn b0a7d5c122 ASTC textures;
I like typing numbers.
2019-06-09 09:11:29 -07:00
bjorn 0b5c609264 Add OpenVR touch bindings;
Untested.
2019-06-06 01:10:50 -07:00
bjorn 5551f76557 Reset render data when restarting in oculus_mobile;
Fixes a crash where rendering would occur with the old Lua state
after a restart.
2019-06-05 20:23:21 -07:00
bjorn c0f4e2848b Update android build; 2019-06-05 20:22:51 -07:00
bjorn 0c75f40793 rm the other restrict;
I guess it just isn't portable.
2019-06-04 04:43:02 -07:00
bjorn feae7bdf3a rm extra restrict qualifier;
Maybe this is confusing MSVC.  Doesn't appear to impact codegen.
2019-06-04 04:20:23 -07:00
bjorn d1f754d5f9 Fix Model memory leaks; 2019-06-03 08:13:42 -07:00
bjorn 06c6b172de vec3 has 4 elements; 2019-06-03 07:20:03 -07:00
bjorn 31e086edaf Inline all the maf functions; 2019-06-03 07:19:25 -07:00
bjorn 4eb03006d7 Fix SoundData loading; 2019-06-03 00:29:41 -07:00
Bjorn Swenson 68c1b6a201
Merge pull request #122 from bjornbytes/hand-updates
Hand updates
2019-06-03 00:14:45 -07:00
bjorn dc34ed4570 Start to trend towards 4-element arrays for vec3;
It will be important for enabling more SIMD.
2019-06-02 20:35:52 -07:00
bjorn c7a2e513d3 Inline hash function; 2019-06-02 04:15:46 -07:00
bjorn 575552a147 Restart hotkey works on default error screen; 2019-06-02 03:29:34 -07:00
bjorn 374492c586 Add experimental hotkeys flag;
- Add t.hotkeys flag to conf.lua, which defaults to true.
- If t.hotkeys is truthy, the following hotkeys will be enabled:
  - Escape: Quit the experience
  - F5: Restart the experience
2019-06-02 03:00:12 -07:00
bjorn cf7a738a9f Fix openvr.c; 2019-06-02 02:27:19 -07:00
bjorn 83c2d3ceef Optimize timer module slightly; 2019-06-02 02:02:15 -07:00
bjorn 22fe333150 Update refcounting (again);
- Ref struct only stores refcount now and is more general.
- Proxy stores a hash of its type name instead of an enum.
- Variants store additional information instead of using a vtable.
- Remove the concept of superclasses from the API.
- Clean up some miscellaneous includes.
2019-06-02 01:02:26 -07:00
bjorn d2bff7d239 lovr.graphics.tick and tock;
Initial support for GPU timer queries.
2019-06-01 17:29:53 -07:00
bjorn 84bd50379d Add primary button/axis;
It's called "primary".
2019-05-31 12:00:15 -07:00
bjorn 7ac3d6938b rm TRACKER devices for now;
This is not the correct way to expose them.  It doesn't seem like
there is consensus on how to expose them yet.  At the very least
LÖVR should instead use the hardcoded OpenVR tracker paths like
/camera, /keyboard, /foot/left, /foot/right, etc.

See these issues:

- https://github.com/ValveSoftware/openvr/issues/1030
- https://github.com/ValveSoftware/openvr/issues/962
2019-05-31 10:57:29 -07:00
bjorn 9674276ff7 Add lovr.headset.getHands;
The iterator is nice and concise, but a table is more conventional
and allows you to easily retrieve the number of tracked hands.  The
iterator version may be removed in favor of the table version, since
you can always iterate over a table yourself.
2019-05-31 10:52:31 -07:00
bjorn af0678f9e9 rm DEVICE_HAND;
If we expose both unhanded hands and handed hands, people need to
deal with handling (haha) both cases in their apps.  It's simpler
to always deal with left and right hands, even though it is a bit
less general.  Still, this is congruent with the current state of
OpenVR and OpenXR, and I think there are still open questions about
the more uncommon cases where there are more than two hands.
2019-05-31 10:41:40 -07:00
bjorn fe559903e1 Oculus Go controller has handedness; 2019-05-31 10:37:43 -07:00
bjorn d11e9be175 Lua userdata store their destructor in their metatable; 2019-05-28 16:31:13 -07:00
Bjorn Swenson 5ec6f1d1d1
Merge pull request #120 from mcclure/oculus-quest
Oculus quest support
2019-05-28 16:30:17 -07:00
mcc 1449d4c914 Oculus mobile: Support getAcceleration 2019-05-28 18:59:05 -04:00
bjorn 06e3ef702c Add built-in ShaderFlag for skinning vertices;
Now you can pass in the { skinned = true } flag when creating a Shader
to get skinning behavior without needing to write it yourself.  The
default is still false.

Need to profile to make sure the if is getting optimized out.
2019-05-28 03:43:54 -07:00
bjorn c5210deae8 Fix ShaderFlag parsing; 2019-05-28 03:43:12 -07:00
bjorn f3d31cf4ef Add multiview and timer query extensions; 2019-05-28 03:14:08 -07:00
bjorn 1cfc2adf4a Fix typo; 2019-05-28 02:45:08 -07:00
bjorn 6b439327fa Make refcounts atomic; 2019-05-28 02:43:15 -07:00
bjorn 29b2420dea Work around macOS flicker bug;
At this point I don't know if maybe I'm just using UBOs wrong but whatever.
2019-05-27 19:05:47 -07:00
bjorn 4221c547d7 glTF: Add support for base64 buffer data; 2019-05-26 21:13:59 -07:00
bjorn 56f4c812ce Small intermediate fix for models without animators; 2019-05-26 21:12:07 -07:00
bjorn d08c454f46 Fix sign issue in rasterizer;
Fixes missing glyphs.
2019-05-26 12:51:25 -07:00
mcc f4189d13e8 Oculus Mobile fixes: Fix potential crash, fix touches on Go after Quest changes 2019-05-26 11:17:49 -04:00
mcc 991b35a628 Oculus mobile: revamp bridge to support Oculus Quest 2019-05-26 10:29:42 -04:00
bjorn 0b8bc4145e openxr: Begin the session at the correct time; 2019-05-25 20:15:42 -07:00
bjorn b26e29cb7b Fix more LuaJIT math casts; 2019-05-24 20:54:38 -07:00
bjorn 831ebda303 Fix LuaJIT Pool integration; 2019-05-24 20:39:05 -07:00
bjorn d5ad10f408 Permit symbolic links in lovr.filesystem;
If needed, it can be made configurable later.
2019-05-24 19:16:43 -07:00
bjorn 9b6f7c35b4 Fix lovr.headset.isTouched; 2019-05-24 15:14:20 -07:00
bjorn 3bf08f0ca3 Add the ability to create default shaders;
lovr.graphics.newShader('font')
2019-05-22 18:00:02 -07:00
bjorn c464bde609 Add DefaultShaders enum; 2019-05-22 16:36:40 -07:00
bjorn db5076a100 Rename SHADER_DEFAULT to SHADER_UNLIT; 2019-05-22 16:34:57 -07:00
bjorn 3dc4d06285 Fix eye enum; 2019-05-22 14:37:46 -07:00
bjorn 698466d19c Add missing include in animator.h; 2019-05-21 00:32:20 -07:00
bjorn 5b1e281d4c Switch to a fork of LuaJIT that supports android; 2019-05-21 00:26:21 -07:00
bjorn 3804a1c0ee lovrPlatformGetName;
Used in lovr.getOS.
2019-05-20 20:44:39 -07:00
bjorn 4cc154fdfa More number conversions; 2019-05-20 20:35:07 -07:00
bjorn e4c32d2f08 Fix oculus_mobile api.h include; 2019-05-20 15:17:38 -07:00
bjorn e87b81e34a Fix android platform include order; 2019-05-20 15:16:27 -07:00
bjorn a9972a88de Fix oculus_mobile_bridge include path; 2019-05-20 15:15:10 -07:00
bjorn e8a8f6718e Fix vrapi_getAxis; 2019-05-20 15:13:05 -07:00
bjorn df6b7fc96a Ref is mostly private now;
It's really nice how objects don't need to care about how they're
allocated/managed now.
2019-05-20 15:09:06 -07:00
bjorn 57aad490ae Start sized int conversions; 2019-05-20 14:34:03 -07:00
bjorn c31853a1d4 Fix build; 2019-05-20 14:31:46 -07:00
bjorn 67b76e08c2 Details; 2019-05-20 04:15:24 -07:00
bjorn e368723248 Improve platform-specific defines; 2019-05-20 04:05:39 -07:00
bjorn 67ddefd0c2 Ensure platform functions have prefix; 2019-05-20 04:02:25 -07:00
bjorn b1e848ef6b Cleanup filesystem module; 2019-05-20 03:51:22 -07:00
bjorn 1335ab55ae Warnings/cleanup; 2019-05-20 03:41:12 -07:00
bjorn 7645f4c014 Add core folder; 2019-05-20 02:47:33 -07:00
bjorn a17f10e273 Add modules folder; 2019-05-19 00:38:35 -07:00
bjorn 4a47afca38 Organize api folder; 2019-05-19 00:31:42 -07:00
bjorn 79ba7a7ad5 gltf: Support partially-keyed animation properties; 2019-05-18 22:19:28 -07:00
bjorn 8d1b335da4 More mapping fixes; 2019-05-18 21:34:36 -07:00
bjorn 440b30df59 Add filter/wrap to default texture; 2019-05-18 04:33:28 -07:00
bjorn 1792f066f2 Fix CMakeLists; Fix buffer unmapping; Formatting; 2019-05-18 01:09:06 -07:00
bjorn e3e52a7808 Fix issue when animated model has no animator; 2019-05-18 00:30:43 -07:00
bjorn 976d59e364 Undo single-translation-unit experiment for now; 2019-05-17 16:29:24 -07:00
bjorn 6f7c30e7e2 Single-translation-unit experiment; 2019-05-15 12:05:56 -07:00
bjorn 1aef9963f5 Clean up thread module; 2019-05-14 04:43:38 -07:00
bjorn a4e563fe6f Clean up event module; 2019-05-14 04:37:56 -07:00
bjorn 3267bad4fa Add ShaderFlags;
newShader and newComputeShader accept an optional options table
that can contain a table of flags.  Flags are turned into #defines
in the shader source and can be used as specialization constants in
the future.

Currently they can only be bools and ints.  This might change to add
float and/or remove bools.
2019-05-14 03:48:01 -07:00
bjorn 6134abe866 Handle vsync better;
- Add vsync flag to t.window and lovr.graphics.createWindow.
- vsync is 1 by default.
- Some headset drivers override vsync if they have special timing requirements.
2019-05-14 00:18:22 -07:00
bjorn 15c4b6fcd2 Fix me ifdefs; 2019-05-13 20:52:11 -07:00
bjorn f786c40b4e Rework Buffer updates;
Use unsynchronized mapped buffers on macOS.

Reduce amount of Buffer flushes and stalls by flushing once per
batch instead of once per draw.
2019-05-13 20:35:21 -07:00
bjorn b8ed63fcc4 Fix double/float conversions; 2019-05-13 04:28:57 -07:00
bjorn 566cd20984 Cleanup; 2019-05-13 04:25:34 -07:00
bjorn 69260cfbb3 openvr: rm state.rift;
Yay actions?
2019-05-13 04:25:34 -07:00
bjorn 8e7a4323d0 rm custom PI define; 2019-05-13 03:56:34 -07:00
bjorn 83b8ee2d08 Audio cleanup; 2019-05-13 03:53:17 -07:00
bjorn 97e3774718 Make TimerState private; 2019-05-13 03:35:41 -07:00
bjorn 963f496ac1 Lua hides a Type in its userdata; 2019-05-13 03:21:11 -07:00
bjorn 429efcb38d Change circle size argument from diameter to radius; 2019-05-12 23:34:04 -07:00
bjorn 51ce0c1418 rm compat; 2019-05-12 22:28:02 -07:00
bjorn 7c2a119324 SteamVR Input 2019-05-12 22:23:28 -07:00
bjorn c20554645e Initial KTX support; 2019-05-12 22:23:28 -07:00
bjorn 5b0fa8b522 Fix warnings; 2019-05-12 22:23:28 -07:00
bjorn 9a1579a773 Ensure maf symbols are exported on unix; 2019-05-12 22:23:28 -07:00
bjorn db3c3dbb1e Fix lovr.headset.hands; 2019-05-12 22:23:28 -07:00
bjorn ebcdc6d36e Ensure bone pose gets reset when not animating; 2019-05-12 22:23:28 -07:00
bjorn 28c453075a Fix batching overflow; 2019-05-12 22:23:28 -07:00
bjorn 511afef0c6 Fix batching issue with non-instanced primitives; 2019-05-12 22:23:28 -07:00