bjorn
e9654cd067
Fix function prototypes;
2019-08-21 23:19:42 -07:00
bjorn
28344928c9
Simplify arr;
2019-08-21 23:16:58 -07:00
bjorn
9b0e43b249
Fix t.window = nil;
2019-08-21 22:26:31 -07:00
bjorn
13655d0df4
Simplify logging;
2019-08-21 19:02:02 -07:00
bjorn
cd09e1e695
rm sds;
2019-08-21 16:30:20 -07:00
bjorn
8d4760167f
luax is now api;
2019-08-21 15:27:26 -07:00
bjorn
7c8a44cc57
Cleanup function pointer typedefs;
2019-08-21 14:44:54 -07:00
bjorn
fb279057b8
maf no longer needs to export symbols;
2019-08-21 03:29:37 -07:00
bjorn
b51dece762
Fix bug with permanent vectors;
2019-08-20 00:54:42 -07:00
bjorn
f91eed3834
Rebuild boot.lua.h;
2019-08-20 00:54:36 -07:00
bjorn
3050d70f3d
Slightly better OpenVR head pose;
2019-08-19 14:55:28 -07:00
bjorn
e6c9fd1a6e
rm error screen buttons;
2019-08-19 14:52:56 -07:00
bjorn
26e7233fde
Fix some API issues with lightuserdata;
2019-08-19 14:35:06 -07:00
bjorn
b1b97ddb02
quat:direction returns vec3;
2019-08-19 14:19:10 -07:00
bjorn
97e90a8699
Fix checkvariant error message;
2019-08-19 14:16:42 -07:00
bjorn
2f7743583f
Rebuild actions.json.h;
2019-08-19 14:16:37 -07:00
bjorn
584261e21f
rm ffi vectors;
2019-08-19 14:13:36 -07:00
bjorn
e6bedba0bc
Fix OpenVR head pose;
2019-08-17 22:50:35 -07:00
bjorn
c703092f87
Add missing timers GraphicsFeature;
2019-08-13 22:11:59 -07:00
bjorn
a4781c7013
Fix cylinder winding;
2019-08-12 20:03:32 -07:00
bjorn
d3bf51daef
Add alphaCutoff shader flag;
2019-08-12 17:38:03 -07:00
bjorn
c3af8c14c1
Add uniformScale shader flag;
...
Used to switch to a faster version of lovrNormalMatrix, can be used
with all shader types.
2019-08-12 17:33:32 -07:00
bjorn
8821ecd340
Standard shader: Tonemap by default;
2019-08-12 02:36:23 -07:00
bjorn
4eb768b13b
Fix GLSL type cast;
2019-08-11 18:47:12 -07:00
bjorn
265931e474
Standard shader: Multiply with graphics color;
...
I guess.
2019-08-11 18:34:16 -07:00
bjorn
51b4064801
Standard shader: Refactoring;
2019-08-11 18:15:43 -07:00
bjorn
3d8313a7f1
Add analytical approximation for specular BRDF lookup;
2019-08-11 17:22:09 -07:00
bjorn
4719e5edbe
Well that was broken;
2019-08-10 18:12:16 -07:00
bjorn
93f076acc9
Fix default uniform values;
...
Not supported in GLES.
2019-08-09 17:36:14 -07:00
bjorn
b8cb53e021
Standard shader: Refactoring;
2019-08-09 17:31:30 -07:00
bjorn
948363e7df
OpenGL: Enable seamless cubemap filtering;
...
It is always used in WebGL 2 and OpenGL ES 3.
2019-08-09 17:22:00 -07:00
bjorn
4d3bfea67c
Model:getMaterial(name|index); rm Model:setMaterial;
2019-08-09 16:10:46 -07:00
bjorn
bd773d2d6c
Add materialMap to ModelData;
2019-08-09 15:14:22 -07:00
bjorn
83b2f8d745
Add uniform for controlling light color and intensity;
2019-08-09 00:27:17 -07:00
bjorn
a1cc3fb838
rm lovr.headset.getDisplayTime;
...
It is not useful in its current state, but will be useful later.
2019-08-09 00:01:08 -07:00
bjorn
851f5f27ec
Add more default headset drivers;
2019-08-09 00:00:42 -07:00
bjorn
30ea8995d2
Fix view vector;
2019-08-07 17:53:38 -07:00
bjorn
2c115ce66e
Automatically detect mipmap count for IBL;
2019-08-07 15:56:52 -07:00
bjorn
b5be93b94b
Fix problem with falsy shader flags;
2019-08-07 15:56:13 -07:00
bjorn
289d365866
Better error messages when loading cubemaps;
2019-08-07 15:14:59 -07:00
bjorn
fe939213be
Initial standard shader flags;
...
- normalTexture = true
- indirectLighting = true (requires uniform setup!)
- occlusion = true (only affects indirect lighting)
- emissive = true
- tonemap = true
2019-08-06 14:39:14 -07:00
bjorn
54d58c79cd
Fix issue where multiple shader flags don't work;
2019-08-06 14:38:49 -07:00
bjorn
edd162052c
Fix diffuse texture batching;
2019-08-06 11:38:12 -07:00
bjorn
b08d9d0b30
Standard shader: Add tonemapping;
...
ACES.
2019-08-05 15:34:21 -07:00
bjorn
96c47d590c
rm lovrEnvironmentTexture from Material;
2019-08-05 15:20:17 -07:00
bjorn
e4ab5aa85a
Standard shader: Add image-based lighting;
...
Very WIP, still need to add the BRDF lookup table.
2019-08-05 14:49:09 -07:00
bjorn
bff9399308
Rename skinned flag to animated;
2019-08-04 15:08:21 -07:00
bjorn
017dd15c78
Update OpenXR to 1.0;
...
Still untested, gib runtimes pls.
2019-08-03 19:06:57 -07:00
bjorn
06fb8b2503
Simplify fill;
...
lovr.graphics.fill renders a fullscreen quad, it's convenient because
you don't need to set up a mesh and toggle all the pipeline states.
However, if you are dealing with copying/rendering between stereo
textures, you have to write your own shader for that. For now.
2019-08-03 16:03:13 -07:00
bjorn
db57592646
Attempt to display SOME relevant message for 'error occurred while displaying another error' in the luajit-only nonstandard crash path
2019-08-02 20:29:28 -07:00
bjorn
e9fd052fc6
Start fixing lovr.graphics.fill;
2019-08-02 15:48:35 -07:00
bjorn
0d5c776b02
Windows opens console with --console argument;
...
Instead of all the time.
2019-08-01 13:49:39 -07:00
bjorn
aab987dbef
Fix WebGL gamma correction;
...
Ugh, WebGL doesn't have sRGB backbuffers.
2019-08-01 13:26:45 -07:00
bjorn
d03d0a39ec
Fix GCC compilation;
2019-08-01 13:02:31 -07:00
bjorn
15cdc78c6b
Rebuild xxd files;
...
xxd on windows is different or something.
2019-08-01 13:01:47 -07:00
bjorn
38671d4ca9
Fix warning;
2019-08-01 13:01:41 -07:00
bjorn
ecac39c08b
Add experimental buttons to default error screen;
2019-08-01 00:14:37 -07:00
bjorn
7690db28af
Windows: Fix all the int warnings;
2019-07-31 17:51:49 -07:00
bjorn
c384d54aa5
OpenVR: Default haptic frequency to 1Hz;
2019-07-31 17:17:41 -07:00
bjorn
9e8fcc01af
Knuckles: Use force sensor as grip axis;
2019-07-31 16:54:56 -07:00
bjorn
ca8e280dcd
Fix texture refcounting in lovr.graphics.newTexture;
...
Also a memory leak with window icons (does anyone use that?)
2019-07-31 14:43:35 -07:00
bjorn
507736ba2d
Oh no;
2019-07-31 14:43:31 -07:00
bjorn
78f2060405
rm lovr.headset.getAcceleration, getAngularAcceleration;
...
Because OpenXR did...
2019-07-30 20:22:08 -07:00
bjorn
9712f4765c
lovr.headset.hands is CURSED;
2019-07-30 20:17:38 -07:00
bjorn
947c468eb1
Don't restart twice on F5;
2019-07-29 11:52:06 -07:00
bjorn
4b9e6849c8
Better boolean shader flags; Multicanvas flag;
...
Instead of boolean shader flags turning into actual booleans defines
in the shader source, for GLSL they turn into defines. This lets you
use ifdef, which is the more common intended usage.
Also MULTICANVAS is now a boolean shader flag. The old MULTICANVAS
define is deprecated.
2019-07-28 18:08:23 -07:00
bjorn
f564444641
Fix some WebGL issues;
2019-07-28 17:28:18 -07:00
mcc
d391a4750f
Use base diffuse color from materials in Standard shader
2019-07-25 15:08:53 -07:00
bjorn
239a9514ea
Model: Fix animations that aren't keyed at t=0;
2019-07-19 16:42:51 -07:00
bjorn
d0ee0d9b1a
glTF: Fix transform for scenes with multiple root nodes;
2019-07-19 16:42:13 -07:00
bjorn
2b19c64aca
rm primary DeviceButton and DeviceAxis;
...
It is confusing and doesn't really solve the intended problem very well.
For now we will all just suffer with our tedious device-specific Lua code.
2019-07-17 17:33:21 -07:00
bjorn
c92c0ef3c5
lovr.headset.isTracked;
2019-07-17 17:09:45 -07:00
bjorn
416f28990a
Tracking functions return 0 instead of nil; rm lovr.headset.getDirection;
2019-07-17 17:07:33 -07:00
bjorn
62fe520da1
maf: Fix quat_getDirection;
2019-07-16 23:03:37 -07:00
bjorn
a04d55d13e
Fix quat indexing in vanilla Lua;
2019-07-16 23:03:27 -07:00
bjorn
013d301c35
Fix vec3:sub in vanilla lua;
2019-07-16 22:53:01 -07:00
bjorn
a5326d530a
LuaJIT: Fix quaternion __newindex;
2019-07-16 22:52:34 -07:00
bjorn
7f445db3cc
Update mat4:set for vanilla lua;
2019-07-16 22:51:26 -07:00
bjorn
db519f7f53
mat4:scale: Allow for a single argument in LuaJIT;
2019-07-16 22:02:18 -07:00
bjorn
122143b13a
vec4;
2019-07-16 20:30:51 -07:00
bjorn
9156fa2cbf
Vector rework;
2019-07-16 20:30:51 -07:00
mcc
39f8203442
Don't reset camera position of desktop driver on reset
2019-07-16 20:27:45 -07:00
bjorn
84cdc592bc
Make sure lovrBufferUnmap always unmaps;
2019-07-12 20:16:18 -07:00
bjorn
2eb4b779ab
Model cleanup;
2019-07-11 20:13:47 -07:00
bjorn
4b4020d3a7
Model:pose; Model:getNodePose;
2019-07-11 20:09:46 -07:00
bjorn
8e2775ef6d
Math: cleanup;
2019-07-11 11:35:50 -07:00
bjorn
6b87576e6d
Channel: cleanup;
2019-07-11 11:29:18 -07:00
bjorn
8c76e6f19b
RandomGenerator: cleanup;
2019-07-11 11:24:34 -07:00
bjorn
1f8a7e073f
Curve: cleanup;
2019-07-11 11:22:03 -07:00
bjorn
f81a65430b
Add support for cubic spline keyframe interpolation;
2019-07-11 11:05:53 -07:00
bjorn
3c07ad6b0b
Replace Animator with Model:animate;
2019-07-10 22:08:19 -07:00
bjorn
4372eb293e
rm comma operator;
...
everyone is making fun of me haha
2019-07-10 18:46:51 -07:00
mcc
f5633f4248
Fix lovr.filesystem.append()
...
Previously, this program function lovr.update(dt) lovr.filesystem.append("/test123", lovr.timer.getTime()) end would fail in lovr because lovrFileWrite required the file to be in write mode (not append)
2019-07-10 16:29:09 -07:00
mcc
a6936b5649
Fix -DLOVR_ENABLE_THREAD=OFF compile
...
l_event.c was processing a thread-related event and in the process using a thread struct, even when LOVR_ENABLE_THREAD is undefined and threads do not exist. I caused the thread event type to simply not exist when the thread module is not being built.
Since the event is now only sometimes present, I put it at the end of the enum as slight protection against binary mismatches with dynamically loaded modules.
2019-07-10 16:23:20 -07:00
mcc
070892ee12
Fix crash with lovr.event.quit("restart") on Oculus Mobile
...
Because of how and when draws occur in our Oculus Mobile path, during a restart it would attempt to draw a frame after lovrGraphicsDestroy() is called, leading to a crash in lovrGraphicsSetCamera(). This blocks draws until the restart is finished and renderTo() has been called (conveniently detectable using the existing state.renderCallback).
2019-07-10 16:10:02 -07:00
mcc
8bfc8683db
Patch maf.h so it can be included in C++
...
A C-only feature is used in one spot currently, which would be fine if maf.h were maf.c, but it's designed to be #included...
2019-07-10 14:58:55 -07:00
mcc
38886f0dc4
Patch sds.h so that it can be #included from C++
...
Empty arrays aren't allowed in C++, so a single dummy element has to be added. sds works by scary cast magic so this dummy element is never actually allocated. A #define is used in this patch so in C this compiles exactly the same as before.
2019-07-10 14:58:55 -07:00
mcc
99f8122f23
ref.h compiles in C++
...
Check for GCC version >=4.7 [covers GCC or, theoretically, Intel C Compiler] or __has_builtin(__atomic_add_fetch) [covers Clang]. If either of these are found, prefer the GCC atomic builtins instead of the C11 builtins.
Also: Gates Microsoft atomics on _MSC_VER, not _WIN32. This may help improve compatibility with mingw but has not been tested.
2019-07-10 14:58:25 -07:00
bjorn
f208a5e067
Fix array initialization;
...
Because the new arr.h contains an array on the stack, we can't
initialize it and then copy it, or the pointer to the stack array
will be pointing to the wrong thing, causing incorrect behavior.
2019-07-09 09:06:11 -07:00
bjorn
af29e29e4d
Fix lovr.graphics.setProjection;
...
Needed to be using new frameData stuff.
2019-07-08 14:35:54 -07:00
bjorn
f2feda9420
oculus: Remove offset;
...
Since we are calling SetTrackingOriginType with floor level, we don't
need to apply the seated-level t.headset.offset adjustment.
2019-07-05 01:05:02 -07:00
bjorn
348798b86c
Make shader in nogame screen more correct;
2019-07-02 20:12:24 -07:00
mcc
dc98846169
Fix error screen on Android
...
As discussed in slack, lovr.errhand appears to predate lovr.graphics.hasWindow() and does not use it. This resulted in a crash on Oculus Go
2019-07-02 18:45:08 -07:00
mcc
53270fbd76
mat4_transform_project in maf.h
...
mat4_transform ignores the final row of the matrix, which normally contains scale data. This is fine for modelview matrices, which is all lovr currently uses mat4_transform for. However it fails if you ever use mat4_transform on a projection matrix.
mat4_transform_project takes the final row into account, so you can use it with projection matrices. This was useful in my fork and might be useful to have around in lovr someday later.
2019-07-02 13:37:33 -07:00
mcc
1b085a00ea
As discussed in slack, Oculus should be letting lovrCanvasCreate decide whether to double
2019-07-02 13:28:36 -07:00
bjorn
57f97056da
Use I4ui instead of I1ui for lovrDrawID constant value;
...
glVertexAttribI1ui isn't supported on GLES for some reason.
2019-07-02 12:51:36 -07:00
bjorn
2d6aa18069
Be a little more correct about when draw id is written;
2019-07-02 00:14:01 -07:00
bjorn
775cf5cda1
Don't accidentally draw meshes too many times;
...
Oops!
2019-07-02 00:09:43 -07:00
bjorn
44da36b610
Write draw ids at the right time (fix flicker);
2019-07-01 02:47:59 -07:00
bjorn
2fb393306c
rm skybox args;
...
They used to always be necessary, now they are almost never necessary.
2019-06-29 21:01:03 -07:00
bjorn
e3e930d6cc
Set index buffer at the right time;
...
Just a small ordering issue with previous commit.
2019-06-29 20:39:01 -07:00
bjorn
6256acfc6d
Ahhh fix everything;
...
- If you have an instanced batch, it will use the instanced mesh. That
has a drawID attribute that uses the identity buffer, which has a vertex
divisor. BUT if you only have one instance, then we won't emit an
instanced draw, and the use of a divisor'd attribute w/ a non-instanced
draw is causing mega problems on macOS.
- This also fixes observed macOS bugs like:
- Needing to have a small UBO
- Flickering at startup
- Flicker when writing to the last byte of a UBO
- etc.
- Also make the generic attribute value for lovrDrawID more correct (scalar instead of vector).
2019-06-29 20:24:36 -07:00
bjorn
afe4d8c0e3
Fix GL error with buffer unmapping;
...
This doesn't seem to fix any of the macOS rendering bugs though...
2019-06-29 20:08:31 -07:00
bjorn
d3f08fd1f0
rm logo.png;
2019-06-29 18:28:20 -07:00
bjorn
b2df3e9816
Update nogame screen;
...
- Slightly dim background color (may change).
- Use a shader for the logo (it's centered now, not quite 100% like the image).
- Adjust text optical weight (I hate it).
2019-06-29 18:27:55 -07:00
bjorn
e82ba030a6
lovr.headset.getDisplayTime;
...
Returns the predicted display time, which is the estimated time at which
the photons of the next frame will hit the eyeballs of a person in the HMD.
This should be used instead of lovr.timer.getTime when used for rendering
something that is time-dependent. Updating simulations, logic, or access
to high frequency times should still use lovr.timer.getTime.
2019-06-29 17:36:36 -07:00
bjorn
8faff22f38
Regenerate math.lua.h;
2019-06-28 22:07:31 -07:00
mcc
c604149428
Y-flip mirror texture on Oculus
...
Oculus gives us the mirror texture "upside down" compared to every other driver, so flip it rightside up before drawing in boot.lua.
2019-06-28 22:46:23 -04:00
bjorn
d87fc56b63
lovr.headset.getDisplayMask;
2019-06-28 00:13:45 -07:00
bjorn
4222be88b5
Use UBO for Camera matrices;
...
Ugh I don't like the "Camera" concept anymore, but I can't figure
out how to easily get rid of it. Maybe wait till displays are a thing.
2019-06-27 22:17:50 -07:00
bjorn
fa6c4a6b39
Organization;
2019-06-27 21:04:15 -07:00
bjorn
370124c88d
Batching cleanup;
...
- Rename drawMode to topology in some places.
- Batch uses DrawCommand internally to simplify stuff.
- Do less work while flushing.
- Store global head/tail cursors instead of unused per-batch cursors.
2019-06-27 20:58:42 -07:00
bjorn
779949964f
More small batching changes;
...
- Reduce number of batches to 4. Yeah it's arbitrary, will monitor.
- Just use memcmp for BatchParams. Since we're using designated initializers,
we aren't running into issues with memcmp+struct padding bits, and in the
event it does lead to false positives on some platforms, at worst we'll just
experience a harmless reduction in batching efficiency.
2019-06-27 19:05:54 -07:00
bjorn
6da17b0a91
Optimize gamma correction;
...
Currently, we gamma correct colors on every clear and every draw.
It's taking a lot of time. Instead, we'll gamma correct colors
when they're changed using lovr.graphics.setColor/setBackgroundColor.
2019-06-27 15:41:57 -07:00
bjorn
7e067da8e7
Add defaultCanvas;
...
Having a normal Canvas object that represents the backbuffer reduces
some indirection where we have to last-minute check if a Canvas is
set. It also means that all of the draw-related info that was _sometimes_
on the Canvas is now _always_ on the Canvas, which reduces the amount
of redundant information we need to provide for a draw call.
There may be some issues related to changing the width/height/stereo
of the default Canvas.
2019-06-27 15:36:51 -07:00
bjorn
26e474bcfc
Simplify Mesh handling;
...
Removes some indirection from flush (I guess moves it into batch,
not sure what's better).
2019-06-27 14:14:31 -07:00
bjorn
551dea8c86
Adjust includes;
2019-06-27 13:44:09 -07:00
bjorn
b8e63adcbf
graphics: Cleanup;
...
Make batching structs and defines private.
2019-06-27 13:38:38 -07:00
bjorn
fe21de403b
lovrGraphicsDrawMesh;
2019-06-27 13:35:43 -07:00
bjorn
b3080ae5d9
rm macos instancing hack;
...
I haven't been able to see adverse affects from it anymore. Can
always put it back if it resurfaces.
2019-06-27 13:27:43 -07:00
bjorn
39b0d2d754
graphics: Minor refactoring;
2019-06-27 13:26:39 -07:00
bjorn
297208c205
Minor cleanup to stream buffer code;
2019-06-27 13:01:04 -07:00
bjorn
052990aa47
Make some graphics structs private;
2019-06-27 01:48:35 -07:00
bjorn
2baa8d03ee
Make singlepass detection more readable;
2019-06-26 21:47:22 -07:00
bjorn
adf5e69ea1
oculus: Remove unused variable;
2019-06-26 14:51:32 -07:00
mcc
fc90a03584
Fix MSVC-specific warnings
2019-06-25 19:16:48 -07:00
mcc
430fbc27d5
ovrHand -> ovrHandType in oculus.c. We don't understand how this worked before but it fixes the oculus-windows build.
2019-06-25 19:16:48 -07:00
bjorn
6b2de4a0a1
Temporary implementation for persistent buffer discard;
...
Should fix potential crashes with persistent buffers.
2019-06-25 19:16:08 -07:00
bjorn
010bbff519
openvr: Fix stereo Canvas dimensions mismatch;
...
(The width is automatically doubled when stereo now)
2019-06-25 19:15:38 -07:00
bjorn
312a7617c3
Fix typo in shader;
2019-06-25 19:15:11 -07:00
bjorn
09b6f74acf
Native textures: initialize mipmapCount;
2019-06-25 18:59:31 -07:00
bjorn
749774e2fc
Native texture depth must be explicitly specified;
...
To fix validation errors when attaching them to Canvases.
2019-06-25 18:57:18 -07:00
bjorn
7e65116add
Fix oculus backend;
2019-06-25 18:16:54 -07:00
bjorn
a3d5371d01
rm lib/vec/vec from oculus.c;
2019-06-25 18:07:56 -07:00
bjorn
928ccee5f1
Multiview;
2019-06-25 01:21:59 -07:00
bjorn
a691192af9
lovrBufferDiscard;
2019-06-25 01:21:59 -07:00
bjorn
5cd93b66c6
rm fence syncs;
...
They are too buggy and are not as efficient as orphaning.
2019-06-24 19:17:55 -07:00
bjorn
b17d01e4aa
Don't return NULL from mat4_invert;
2019-06-22 17:25:48 -07:00
bjorn
8d2f005bf3
Add stdlib.h to oculus_mobile;
2019-06-21 11:28:40 -07:00
bjorn
9f3638b018
TextureData:paste;
2019-06-20 23:36:18 -07:00
bjorn
7ebee200ea
rm strdup;
...
It isn't part of C, causing compiler errors on some platforms.
2019-06-20 22:21:31 -07:00
bjorn
879c789a08
Polyfill M_PI;
...
It technically isn't part of C, which is causing problems on some systems.
2019-06-20 21:43:40 -07:00
bjorn
807c519397
Fix typo;
2019-06-20 21:36:07 -07:00
bjorn
b6d65922af
Standard shader: spherical harmonics irradiance;
2019-06-20 21:17:32 -07:00
bjorn
286cb711e4
Standard shader: emissive;
2019-06-20 18:22:49 -07:00
bjorn
a9241e781b
Standard shader: emissive;
2019-06-20 18:20:07 -07:00
bjorn
179071023f
Standard shader: diffuse, specular, normal mapping;
...
No shader flags yet. Still need occlusion, emissive, configurable
lighting, IBL.
2019-06-20 17:46:22 -07:00
bjorn
b54f68a3d5
glTF: Support Textures with missing images and samplers;
2019-06-20 17:44:30 -07:00
bjorn
5881bdd5b1
Fix gpu timer array;
2019-06-20 14:44:28 -07:00
bjorn
4611b1c9a3
Add no-op standard shader;
2019-06-20 14:21:35 -07:00
bjorn
612f699aa4
Rename default shader to unlit;
2019-06-20 14:09:55 -07:00
bjorn
c10851d726
Fix tostring;
2019-06-20 13:47:43 -07:00
bjorn
d856f6d592
opengl: Create default texture at startup;
...
More predictable performance, fixes an obscure bug.
2019-06-20 11:35:46 -07:00
bjorn
6b2d06e766
Add lovrPlatformOpenConsole;
2019-06-16 18:55:43 -07:00
bjorn
eb1e257209
Add new array implementation; Upgrade filesystem;
...
Filesystem:
- Uses streaming file IO.
- Uses less memory when requiring files.
- Simplifies its require path implementation.
2019-06-16 13:30:30 -07:00
bjorn
f8f6d98df4
Use better default for identity quat;
2019-06-14 15:04:17 -07:00
bjorn
9e42fe295a
math.lua: Fix vec3:sub;
2019-06-14 13:30:07 -07:00
bjorn
9c322495fa
Fix bug when reading mat4s;
2019-06-14 13:22:13 -07:00
bjorn
2f3c23ed7e
Ensure getHands uses 4-element vec3;
2019-06-14 13:04:10 -07:00
bjorn
79083c7df1
Fix warnings on newer versions of gcc;
2019-06-11 19:57:20 -07:00
bjorn
909ee1ad79
Use highp in vertex shaders on GLES;
2019-06-10 08:12:36 -07:00
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
bjorn
6ff35420bd
More leap fixes;
...
Also reduce branching in headset accessors.
2019-05-12 22:23:28 -07:00
bjorn
06b8b6f405
Leap fixes;
2019-05-12 22:23:28 -07:00
bjorn
26c1859531
Update WebVR;
2019-05-12 22:23:28 -07:00
bjorn
9382afb94d
Put controller models back on nogame screen;
2019-05-12 22:23:08 -07:00
bjorn
2ecae65925
trackpad -> touchpad;
...
Sorry
2019-05-12 22:23:02 -07:00
bjorn
57321db2cd
lovr.headset.getDriver accepts devices;
2019-05-12 22:23:02 -07:00
bjorn
5413f6a427
Device iterators;
2019-05-12 22:23:02 -07:00
bjorn
7807b1abd7
lovr.headset.getAcceleration, getAngularAcceleration;
...
Add missing getBonePose impls.
Refactor some ovr stuff.
2019-05-12 22:23:02 -07:00
bjorn
b6e1e5e3b0
lovr.headset.getBonePose; Device shorthands;
2019-05-12 22:23:02 -07:00
bjorn
05f4ba7342
Change everything;
...
Use enums because they make things easier.
2019-05-12 22:23:02 -07:00
bjorn
1d079f0c95
Fix desktop_isDown;
2019-05-12 22:23:02 -07:00
bjorn
e21b64155a
Re-prefix headset backend function names;
2019-05-12 22:23:02 -07:00
bjorn
89ccf750ba
Start compat system;
2019-05-12 22:23:02 -07:00
bjorn
4b3e72a5f1
Fix warnings;
2019-05-12 22:22:29 -07:00
bjorn
2aace190fe
Add oculus:getDisplayTime;
2019-05-12 22:22:29 -07:00
bjorn
5947a96556
Fix getDisplayTime prototype;
2019-05-12 22:22:29 -07:00
bjorn
c2fc7daf2d
Split mat4_getTransform;
2019-05-12 22:22:29 -07:00
bjorn
801f997b0a
Use vectors for headset pose accessors;
2019-05-12 22:22:29 -07:00
bjorn
344edd8c30
Add missing OpenXR string constant;
2019-05-12 22:22:29 -07:00
bjorn
dafa7fefbe
Fix setTransform;
2019-05-12 22:22:29 -07:00
bjorn
5ff8e51d88
Add openxr:getDisplayTime;
2019-05-12 22:22:29 -07:00
bjorn
ed725927c3
OpenXR headset backend;
2019-05-12 22:22:29 -07:00
bjorn
aa1d33669c
Just use leap;
2019-05-12 22:22:29 -07:00
bjorn
e22d98e09e
Finish Leap backend;
2019-05-12 22:22:29 -07:00
bjorn
5ff49e73c2
Leap WIP;
2019-05-12 22:22:29 -07:00
bjorn
400598735c
rm isTracked for now;
2019-05-12 22:22:29 -07:00
bjorn
df5de9a35e
Use strings for paths;
...
It's probably slower, but it's way less complicated, so it seems like
a win for now. Can implement compile-time hashing, tries etc. later
if it's identified as a performance issue for a real person.
Also a bunch of cleanup in openvr.c and oculus.c.
2019-05-12 22:22:29 -07:00
bjorn
45931d005a
lovr.headset.isTracked;
2019-05-12 22:22:29 -07:00
bjorn
bb06b211cd
Add missing getDirection binding;
2019-05-12 22:22:29 -07:00
bjorn
5c6163580b
rm unused headset.h;
2019-05-12 22:22:29 -07:00
bjorn
d8581106d4
Support Vive trackers again;
...
/trackers/1
2019-05-12 22:22:29 -07:00
bjorn
ca30991b2a
"VR Simulator" -> "Simulator";
2019-05-12 22:22:29 -07:00
bjorn
85d461e71c
Fixup lovr.headset.getName;
2019-05-12 22:22:29 -07:00
bjorn
50e77fc023
Combine getVelocity and getAngularVelocity impls;
2019-05-12 22:22:29 -07:00
bjorn
a9ef3656a1
lovr.headset.getDirection;
2019-05-12 22:22:29 -07:00
bjorn
965f39f834
Do less work in lovr.headset.getPosition/getOrientation;
2019-05-12 22:22:29 -07:00
bjorn
9a8b119a81
Add missing enum;
2019-05-12 22:22:29 -07:00
bjorn
42ba6ddbb9
oculus_mobile build fixes;
2019-05-12 22:22:29 -07:00
bjorn
7a5ae2bfe1
Update oculus_mobile backend;
2019-05-12 22:22:29 -07:00
bjorn
77f848ea8f
Update oculus backend;
2019-05-12 22:22:29 -07:00
bjorn
f5b976cfae
Actually read paths in API;
2019-05-12 22:22:29 -07:00
bjorn
e406678b1c
rm luax_pushpath;
2019-05-12 22:22:29 -07:00
bjorn
2584809c23
Reorganize path enum;
2019-05-12 22:22:29 -07:00
bjorn
4edb8de0b0
Shorten path enum prefix;
2019-05-12 22:22:29 -07:00
bjorn
86537141ac
Add eye path;
2019-05-12 22:22:29 -07:00
bjorn
b42c3ffc0e
Rename hands to hand;
2019-05-12 22:22:29 -07:00
bjorn
6182ce59af
Cleanup;
2019-05-12 22:22:29 -07:00
bjorn
4e8d64a1a3
Cleanup;
2019-05-12 22:22:29 -07:00
bjorn
60d2111937
Add proximity to Subpaths;
2019-05-12 22:22:29 -07:00
bjorn
87d3c2742c
Drop static function prefixes;
2019-05-12 22:22:29 -07:00
bjorn
b0067233f7
getType -> getName;
2019-05-12 22:22:29 -07:00
bjorn
b9c5dce584
re-add proximity sensor button;
2019-05-12 22:22:29 -07:00
bjorn
fd985c95ff
rm isMounted;
2019-05-12 22:22:29 -07:00
bjorn
da6fd4d07c
Remove Controllers;
2019-05-12 22:22:29 -07:00
bjorn
bd609fc338
rm Controller:getHand;
2019-05-12 22:21:06 -07:00
bjorn
cb0a40a4b6
lovr.headset.isDown; lovr.headset.isTouched;
2019-05-12 22:21:06 -07:00
bjorn
45757f2fa3
Fixes;
2019-05-12 22:21:06 -07:00
bjorn
b95280006a
lovr.headset.newModel;
2019-05-12 22:21:06 -07:00
bjorn
cb79973b98
lovr.headset.vibrate;
...
Signature changed to take strength, duration, and frequency. All
are optional.
2019-05-12 22:21:06 -07:00
bjorn
36e4529dca
lovr.headset.getAxis;
...
Takes a path and returns 1-3 float values representing the components
of the axis at the path. The "touchx" and "touchy" axes are now just
"touchpad".
2019-05-12 22:21:06 -07:00
bjorn
5ab8904809
Controller polyfill; rm Controller pose functions; OpenVR paths;
2019-05-12 22:21:06 -07:00
bjorn
f87b4e6a25
Read paths; Desktop driver uses paths;
2019-05-12 22:21:06 -07:00
bjorn
48cf7e1874
Start paths;
2019-05-12 22:21:06 -07:00
bjorn
8208238df7
Support multiple tracking drivers;
...
Now the lovr.headset module initializes one display driver (the
first one in the list) and multiple tracking drivers. Only drivers
that implement 'renderTo' will be considered for display driver.
Tracking drivers are stored in a linked list, and retrieving pose
information involves trying all of the tracking drivers until the
pose is found.
2019-05-12 22:21:06 -07:00
bjorn
c95c0afb4c
Set alpha sampling to false in lovr.graphics.reset;
2019-05-08 20:09:42 -07:00
bjorn
c9775c84ac
Remove t.gammacorrect flag;
...
Gamma correct rendering is core in all supported OpenGL versions,
and it's usually a good idea to enable it.
2019-05-03 17:53:33 -07:00
bjorn
594921d2ec
newThread: can load thread code from a file or Blob;
...
Also fix a lifetime issue: If the string containing thread code was
garbage collected before you started the thread, you would have been
running free'd memory as Lua code!
2019-05-02 15:09:54 -07:00
bjorn
0e0cfee6e8
Font:getWidth returns lineCount;
2019-04-27 11:13:37 -07:00
bjorn
7eff3d7d4c
rm platform include;
2019-04-23 15:26:45 -07:00
bjorn
8af82d3bc1
Handle mipMapCount = 0 in DDS textures;
2019-04-23 15:25:31 -07:00
bjorn
afc8000fc7
rm stddef from util;
2019-04-21 11:52:04 -07:00
bjorn
c021afedae
Fix more warnings;
2019-04-20 18:42:25 -07:00
bjorn
7af5b9816a
Stupid float stuff;
...
I'm sorry.
2019-04-20 17:02:48 -07:00
bjorn
2dea0eacfb
Use -fvisibility=hidden to hide symbols by default;
...
This saves some space, and it's better to be conscious about symbol exports.
2019-04-20 16:20:05 -07:00
bjorn
b95c97ff57
rm unused mat4_setTransform function;
2019-04-20 14:15:43 -07:00
bjorn
0341233876
Also support hexcodes in lovr.graphics.clear;
2019-04-20 13:38:09 -07:00
bjorn
c247682653
BRING BACK HEXCODES;
2019-04-20 13:36:36 -07:00
bjorn
f268810d2a
Minor cleanup; Fix some undefined behavior;
2019-04-20 13:11:11 -07:00
bjorn
ec7b2c0b68
Formatting;
2019-04-20 12:07:26 -07:00