bjorn
da565296fd
Add stb_sprintf;
2019-01-18 08:55:29 -08:00
bjorn
347a399890
Adjust util.h macros;
2019-01-18 08:44:03 -08:00
bjorn
e6d9b82bba
Adjust BlockType; getValue -> read;
2019-01-16 10:02:44 -08:00
bjorn
ee7544eba8
ShaderBlock:getValue; Shader:send vector fixes;
...
Allows you to read back values from a ShaderBlock.
- This is also probably useful for Shaders.
- This creates SO MANY tables. It feels so bad to expose this. But
also it's the only way to read values back from a compute operation,
so it's pretty indispensable. In the future there could be a Blob
variant.
2019-01-16 10:02:44 -08:00
bjorn
3d2488a577
I forgot DRAW_ID and VERTEX need the same counts;
2019-01-15 19:43:11 -08:00
mcc
d8147dd67d
Small portability compile fixes in headers
2019-01-14 13:17:40 -08:00
bjorn
27000d2238
Rebuild math.lua.h;
2019-01-14 12:30:47 -08:00
bjorn
5ac3c51607
Fix shifting precedence;
2019-01-14 12:29:25 -08:00
bjorn
aa56cbc7b0
Fix crash on repeated calls to Channel:peek;
2019-01-12 20:51:50 -08:00
bjorn
5382bc3379
Fix some batching edge cases;
...
- Reduce size of vertex buffer by one to account for primitive restart.
- Always write to the draw ID buffer to prevent it from going out of sync with the vertex buffer and prevent a potential problem with geometry reuse.
2019-01-12 18:25:38 -08:00
bjorn
bb9d354ac9
Fix missing LuaJIT return;
2019-01-12 05:06:57 -08:00
bjorn
6bfc6623ac
More consistent matrix out args;
2019-01-12 04:58:05 -08:00
bjorn
577ed57b2d
oops, access the two types of Pools properly;
2019-01-12 04:22:11 -08:00
bjorn
c41a5c4e3c
Math copy functions allow you to specify a Pool;
2019-01-12 03:46:14 -08:00
bjorn
990544d3f4
Fix quat:save in LuaJIT;
2019-01-12 03:06:40 -08:00
bjorn
90cacd03ca
Handle numbers more consistently in Lua API;
...
I still don't know if I should cast or not, but at least now things
will be consistently right or wrong.
2019-01-11 22:37:54 -08:00
bjorn
538f5f8aa1
Trim stbtt;
...
Removes functionality from stb_truetype that isn't being used.
This makes it compile 25% faster (~.5s).
2019-01-11 14:01:55 -08:00
bjorn
c85fd69079
Optimize uniform parsing;
...
By only parsing the first uniform in an array.
2019-01-11 12:27:40 -08:00
bjorn
305acb89a9
Fix quaternion multiplication signs;
2019-01-11 05:35:08 -08:00
bjorn
7338c82d7f
Add resizable vector pools;
...
It seems too dangerous/annoying to have pools error when they run
out of memory. Instead, we'll make it so you can choose to make
a pool resizable, where it enlarges its memory if it runs out. By
default Pools aren't resizable, but the default math pool is.
Also, reduce the size of the default pool from 640k to 4k.
2019-01-10 14:10:04 -08:00
bjorn
f709a6849b
Fix crashes with :save'd vectors in LuaJIT;
2019-01-08 02:37:50 -08:00
bjorn
dee53f953c
Fix vector save functions in LuaJIT;
2019-01-08 00:54:07 -08:00
bjorn
40c7deaefe
Vector API improvements;
2019-01-06 03:25:00 -08:00
bjorn
c7fa8f8497
Fix vec3:set;
2019-01-05 00:21:56 -08:00
bjorn
49b0aaa986
Pool allocation failures throw an error;
...
For now.
2019-01-05 00:11:23 -08:00
bjorn
cc88a0b919
Expose option to flip TextureData on load;
2019-01-04 23:32:25 -08:00
bjorn
ed71485fcc
Fix header vs. implementation pool function names;
2019-01-04 23:32:25 -08:00
bjorn
e1c656c288
Primitive restart is automatic in WebGL;
2019-01-04 18:01:01 -08:00
bjorn
83a56efd5e
Ugh;
2019-01-04 18:01:01 -08:00
bjorn
fc08b479dc
Fix sign issue;
2019-01-04 18:01:01 -08:00
bjorn
dac6b0fdbb
Cache geometry;
2019-01-04 18:01:01 -08:00
bjorn
ea13e638c2
Fix viewports;
2019-01-04 18:01:01 -08:00
bjorn
379dc74cd5
Mesh fixes;
2019-01-04 18:01:01 -08:00
bjorn
6f96ee65da
Finish primitive restart;
2019-01-04 18:01:01 -08:00
bjorn
67727b092b
Start primitive restart;
2019-01-04 18:01:01 -08:00
bjorn
6382c1f71c
Cleanup;
2019-01-04 18:01:01 -08:00
bjorn
1068dd1081
Rework cylinder;
2019-01-04 18:01:01 -08:00
bjorn
ea3a77a73a
Many batching improvements; Refactoring;
2019-01-04 18:01:01 -08:00
bjorn
d66057ee70
Avoid redundant strlen in font printing;
2019-01-04 18:01:01 -08:00
bjorn
fae7786c8d
Simplify Pipeline;
2019-01-04 18:01:01 -08:00
bjorn
1c5d73e3da
Make more GPU functions static;
2019-01-04 18:01:01 -08:00
bjorn
ffd7a1202c
rm lovrCanvasIsDirty;
2019-01-04 18:01:01 -08:00
bjorn
709a91ac56
rm Shader.dirty;
2019-01-04 18:01:01 -08:00
bjorn
09832dab8f
rm Mesh.dirty;
2019-01-04 18:01:01 -08:00
bjorn
111cfafaf2
rm lovrMeshDraw;
2019-01-04 18:01:01 -08:00
bjorn
c87645e8ef
Put non-opengl-specific stuff in their own files;
2019-01-04 18:01:01 -08:00
bjorn
fbcee9ac9c
rm lovrTextureGetId;
2019-01-04 18:01:01 -08:00
bjorn
55e889824f
lovrGpuSubmit;
2019-01-04 18:01:01 -08:00
bjorn
62645cde28
Pipeline -> 4 bytes; lineWidth -> uint8_t;
2019-01-04 18:01:01 -08:00
bjorn
561805450d
rm Pipeline.dirty;
2019-01-04 18:01:01 -08:00
bjorn
498c25a544
Move Shader out of Pipeline;
2019-01-04 18:01:01 -08:00
bjorn
c99527ec2e
Move pointSize out of Pipeline;
2019-01-04 18:01:01 -08:00
bjorn
9f79dd95f4
Move font out of Pipeline;
2019-01-04 18:01:01 -08:00
bjorn
29748dc0db
Move color out of Pipeline;
2019-01-04 18:01:01 -08:00
bjorn
dffcc8c295
Move Canvas out of Pipeline;
2019-01-04 18:01:01 -08:00
bjorn
030c765c6b
Move backgroundColor out of Pipeline;
2019-01-04 18:01:01 -08:00
bjorn
2ceb474b04
DrawCommand -> DrawRequest;
2019-01-04 18:01:01 -08:00
bjorn
779e28353d
Rebuild math.lua.h;
2019-01-04 02:19:10 -08:00
bjorn
4f716499b0
Fix declspec for math functions;
...
LuaJIT can't find math functions on windows unless they are exported.
2019-01-04 02:18:21 -08:00
bjorn
355aa9612c
Fix redundant lovrAudio initialization;
2018-12-19 02:43:10 -08:00
bjorn
551bf12edd
Minor cleanup;
2018-12-19 02:03:24 -08:00
bjorn
eca8a71c84
Allocate files on the stack when possible;
2018-12-19 01:49:15 -08:00
bjorn
086f7f4e47
lovrRelease frees objects instead of destructor;
...
That way objects allocated on the stack can be destroyed.
2018-12-19 01:41:01 -08:00
bjorn
5b52a91778
mv ref->free ref->destructor;
2018-12-19 01:33:47 -08:00
bjorn
4c9b02a6ff
Release builtin ShaderBlock;
2018-12-19 01:32:54 -08:00
bjorn
9803e9916f
Use naming convention for destructor;
2018-12-19 01:04:42 -08:00
bjorn
155a0c1449
lovr*Create -> lovr*Init; lovr*Create macro;
2018-12-19 01:04:42 -08:00
bjorn
60a12a6b7e
Rename thread module init/destroy;
2018-12-19 01:04:42 -08:00
bjorn
c63c49338a
Make opengl graphics structs more accessible;
2018-12-19 01:04:42 -08:00
bjorn
58950aa20e
_lovrAlloc throws on OOM;
2018-12-19 01:04:42 -08:00
bjorn
ab8e86b9a5
Fix vec3() in LuaJIT;
2018-12-17 20:14:10 -08:00
bjorn
68a0bf4a10
mat4:transformPoint;
2018-12-17 20:07:19 -08:00
bjorn
b0a146919f
Add vec3:length;
2018-12-17 19:32:43 -08:00
bjorn
25b47e62a8
rm Material isDefault;
2018-12-17 14:16:48 -08:00
bjorn
1fb2d6be02
Always use pushliteral when possible;
2018-12-15 21:45:32 -08:00
bjorn
ad10f3bc37
Fix rgb10a2 constant;
2018-12-15 17:35:57 -08:00
bjorn
63f4fa261b
Flush before Canvas resolve;
2018-12-14 16:02:30 -08:00
bjorn
e6b7c41860
Improve lovrDrawData uniform names;
2018-12-14 16:02:25 -08:00
bjorn
28a53e8df5
Sort uniforms in ShaderBlocks;
2018-12-14 16:02:21 -08:00
bjorn
6dae6ecd07
Remove unnecessary breaks in lovrShaderCreateDefault;
2018-12-14 16:02:18 -08:00
bjorn
b34ed206e0
Fix lovrBufferDestroy when Buffer is persistent;
2018-12-14 16:02:11 -08:00
bjorn
762cc64e09
Fix OpenVR events;
...
There was a problem where we were relying on module initialization ordering. Now that modules are initialized in an arbitrary order, we can't guarantee that event will be loaded before headset.
2018-12-14 14:42:35 -08:00
bjorn
3972ddc2ad
rm Cabin;
2018-12-14 10:58:03 -08:00
bjorn
099cf4cb22
Add VarelaRound;
2018-12-14 10:58:03 -08:00
bjorn
68a69eec2b
Fix sphere and cylinder;
2018-12-13 23:05:56 -08:00
bjorn
ff581d2e07
Fix Mesh:draw;
2018-12-12 19:39:01 -08:00
bjorn
c999f10039
Use _Noreturn for lovrThrow;
...
Generates smaller and prettier assembly.
2018-12-12 19:35:18 -08:00
bjorn
a67f59000f
DrawMode -> DrawStyle; MeshDrawMode -> DrawMode;
...
Renaming enums doesn't really have an impact on the API usage, just
the docs and internal naming of things.
2018-12-12 18:43:04 -08:00
bjorn
c3dcf03194
Minor param fix;
2018-12-11 22:54:13 -08:00
bjorn
2540953422
lovr.graphics.setAlphaSampling for alpha to coverage;
2018-12-11 22:52:58 -08:00
bjorn
28ab5377c8
Fix Mesh batching stuff;
2018-12-11 22:23:38 -08:00
bjorn
2435108d4d
rm drawInstanced (last argument of draw instead);
...
Willing to revert this, but I think this is the cleaner API to use.
2018-12-11 22:16:40 -08:00
bjorn
259dbd5758
completely rm lovrGraphics from opengl.c;
2018-12-11 22:12:19 -08:00
bjorn
b02eae30b4
Autoinstancing;
2018-12-11 22:10:29 -08:00
bjorn
18fdd0c062
Autobatching;
2018-12-11 13:27:59 -08:00
bjorn
387a91d5e4
lovr.graphics.flush;
2018-12-11 11:13:46 -08:00
bjorn
2e5c927b92
Expose max UBO size in lovr.graphics.getSystemLimits;
2018-12-11 11:13:02 -08:00
bjorn
c531852932
Refactor rendering;
2018-12-10 23:05:02 -08:00
bjorn
aa2f8867ee
Mesh: more flexible int attributes;
...
This is ugh but be patient.
2018-12-10 16:00:37 -08:00
bjorn
eaf26ce4b8
Struct cleanup;
2018-12-10 15:18:42 -08:00
bjorn
24ba340929
Add CHECK_SIZEOF;
...
It can be used to check the size of a type at compile time.
2018-12-09 23:36:02 -08:00
bjorn
7f333ce956
Refactor Mesh attributes;
2018-12-07 19:11:14 -08:00
bjorn
40454d1380
Use ShaderBlock for transforms/colors;
2018-12-07 18:19:03 -08:00
bjorn
e2886d3bb5
Mesh uses Buffer;
2018-12-07 15:57:45 -08:00
bjorn
9a0f7c919a
ShaderBlocks use Buffers;
2018-12-06 16:34:14 -08:00
bjorn
ac33b8b085
Add Buffer objects;
2018-12-06 16:14:30 -08:00
bjorn
b586bc2cce
lovrFontRender uses raw float* instead of VertexPointer;
2018-12-05 10:23:26 -08:00
bjorn
a8361677f5
Move pose from Mesh to DrawCommand;
2018-12-05 10:22:12 -08:00
bjorn
0a6de472ae
Add ARB_buffer_storage;
2018-12-05 10:19:24 -08:00
mcc
4238402ec0
lovrFileWrite buffer can be const and therefore should
2018-12-04 12:40:30 -08:00
bjorn
3a774354e8
Remove lovrHeadsetGetEyePose;
...
A lot of drivers didn't bother to support it, it's not used very often,
and there are better ways to expose it that will soon be implemented.
2018-12-02 13:27:55 -08:00
bjorn
9a3ba5fb52
LuaJIT: mat4:scale accepts single number;
2018-12-02 13:03:29 -08:00
bjorn
9d965e1d7a
LuaJIT: mat4:translate, rotate, scale support chaining;
2018-12-02 13:02:10 -08:00
bjorn
0054c771b2
Properly release Curves on creation;
2018-12-02 12:51:20 -08:00
bjorn
fb455a671c
LuaJIT: dereference vector pointers before use;
...
That way __sub doesn't break due to built-in pointer operator.
2018-12-02 12:48:44 -08:00
bjorn
4e6bf41e67
mat4 fixes;
2018-12-02 12:08:07 -08:00
bjorn
ecabec9bf2
Finish LuaJIT API;
2018-12-02 12:08:07 -08:00
bjorn
43567e561a
Update lovr.graphics.points/lines to work with vectors;
2018-12-02 12:08:07 -08:00
bjorn
2aadc9bde1
rm Transform;
2018-12-02 12:08:07 -08:00
bjorn
c7934b3b13
Update API to work with vectors;
2018-12-02 12:08:07 -08:00
bjorn
ba192374dc
Start math types;
2018-12-02 12:08:07 -08:00
mcc
ca75cb37c1
Awkward hotfix to tinycthread.h
...
Becuase of https://github.com/tinycthread/tinycthread/issues/47 . Only needed on Android. Not needed in the glfw tinycthread because we don't use glfw on Android.
2018-11-30 13:00:28 -08:00
bjorn
783115c2cf
Add newlines to the end of some files;
2018-11-27 15:03:52 -08:00
mcc
778b654f1d
Move lovr.android.getApplicationId() to lovr.filesystem.getApplicationId(). Kill Android module
...
This requires adding an application id function to platform and adding a mini definition to sds into platform.h. All platforms except Android return NULL (no application id)
2018-11-27 15:02:25 -08:00
mcc
264db37ce6
Fix lovr.event.quit("restart") on Android
2018-11-27 15:02:25 -08:00
mcc
adabf4c6ef
Fix broken android lua module
...
The LOVR_ENABLE_ANDROID flag wasn't getting passed to C, and the getApplicationId code had bugs
2018-11-27 15:02:25 -08:00
mcc
99026af5ca
Fix Android compile
2018-11-27 15:02:25 -08:00
mcc
961bf859f6
Android lua module
...
Currently provides only a lovr.android.getApplicationId(). This returns an Android-specific identifier that doesn't cleanly map to anything specific in other OSes.
2018-11-27 15:02:25 -08:00
mcc
8e8091ccbc
Fixes to error handling in boot.lua
...
- The pcalls to run conf were triggering their error very late, and were detecting error based on the second return value of pcall being non-nil. In fact the second return value of pcall is often non-nil in the case of *success*. We should check the first parameter, success/failure, instead.
- It is possible in principle to call error() with a non-string value, so errhand should sanitize its values with tostring.
- There is a check in the main boot.lua loop whether xpcall returned a string, which is the sign luajit hit an error in an error handler. This check was occurring in the wrong place (my fault; merge error when preparing PR) so if lovr.load() hit this case we were falling back to the horrible “could not call a string” error.
2018-11-24 18:48:29 -08:00
bjorn
0e99d47394
Fix module destruction;
...
There is a problem when a Thread stops: it destroys all of the modules
that it required. This is because we unconditionally call luax_atexit
when modules are required, and when the thread lua_State dies it takes
all of the modules with it. To fix this, lovr<Module>Init will return
whether or not initialization successfully happened, which provides us
with enough info to know if we should place the luax_atexit destructor
2018-11-19 09:24:28 -08:00
bjorn
465e5c2010
Controller:getVelocity; Controller:getAngularVelocity;
2018-11-19 09:24:10 -08:00
bjorn
e5dd0a2c17
Fix wasm build.........;
2018-11-16 07:36:44 -08:00
bjorn
6168ec243f
Add platform/glfw.h;
...
Platforms that want to use glfw for most of their platform code can
include "glfw.h" for common functions, in a single-file-lib fashion.
All glfw code is in this file.
2018-11-16 07:24:20 -08:00
bjorn
217a2f6354
Fix problems not caught by MSVC;
2018-11-16 07:19:29 -08:00
bjorn
ca0034e0aa
rm lib/glfw;
2018-11-16 04:44:36 -08:00
bjorn
ba253a0716
oculus_mobile: lovrPlatform instead of glfw;
...
please don't break!
2018-11-16 04:44:20 -08:00
bjorn
c9793eae49
lovrPlatform: init/destroy;
2018-11-16 03:59:06 -08:00
bjorn
b7deda3758
lovrPlatform: Keyboard/mouse;
...
Update fake.c
2018-11-16 03:18:08 -08:00
bjorn
5c3280ba2a
boot.lua: Improve errors when loading modules fails;
...
Remove hardcoded list of modules as well.
2018-11-16 02:27:34 -08:00
bjorn
ba60e99890
lovrPlatform: Window creation;
2018-11-16 02:26:56 -08:00
bjorn
6514492cb8
glfwGetTime -> lovrPlatformGetTime;
...
Same for glfwSetTime;
2018-11-16 00:28:45 -08:00
bjorn
4cd5505ac2
glfwPollEvents -> lovrPlatformPollEvents;
2018-11-16 00:24:43 -08:00
bjorn
da92cce634
Fix wasm build;
2018-11-15 08:21:26 -08:00
bjorn
005d4b93f2
Move math helpers into lib;
...
They aren't really part of the math module since they are shared
across several modules, more "util"-y.
2018-11-15 08:03:51 -08:00
bjorn
2238f51338
Use lovrLog functions in oculus_mobile.c;
...
Question: Are we okay to simplify log levels to DEBUG/WARN? If not,
maybe we add a LOVR_LOG_LEVEL thing...
2018-11-15 07:51:21 -08:00
bjorn
81451eb99d
rm trailing whitespace;
2018-11-15 07:51:21 -08:00
bjorn
ab232571d0
Make sure error messages get printed;
2018-11-15 07:51:21 -08:00
bjorn
0b78e238b3
luax_traceback;
...
Simplifies traceback code by adding a polyfill for Lua 5.2's
luaL_traceback function that can be used by the panic helper and
luax_getstack.
2018-11-15 07:51:21 -08:00
bjorn
c6126bed59
Move print_override to luax;
...
It makes more sense for it to live there since it's a Lua override.
I misunderstood something when communicating about this initially.
2018-11-15 07:51:21 -08:00
bjorn
784d61ef4a
Modify module loading;
...
Dynamically loading things was cool but is causing more pain than
pleasure because it just barely doesn't work everywhere. Instead,
find a better way to load modules. Use a data driven luaL_Reg array
to define the module mapping and luaL_register to smoosh it into
package.preload at boot time. Benefits:
- LOVR_ENABLE_<x> defines are respected and only require a single #if
- Module list is data driven and defined in one place
- It's faster (luax_preloadmodule did a global lookup every invocation)
- It works everywhere
Oh also threads were totally broken and this (mostly) fixes them.
2018-11-15 07:51:21 -08:00