1
0
Fork 0
mirror of https://github.com/bjornbytes/lovr.git synced 2024-07-06 14:23:34 +00:00
Commit graph

1790 commits

Author SHA1 Message Date
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