Commit Graph

3716 Commits

Author SHA1 Message Date
bjorn fa2bd2b05c Shuffle around Rasterizer;
Shorter names, ditch linegap
2022-06-28 20:18:45 -07:00
bjorn 90092c55e4 Font: ignore \r; Fix uv adjustment; Ignore linegap; 2022-06-28 16:28:14 -07:00
bjorn 63f45de9de Fix Pass:setShader(nil); 2022-06-27 23:15:19 -07:00
bjorn 408fcb8b37 Fix typo; 2022-06-27 21:43:23 -07:00
bjorn 1752b220bf Pass:text supports multicolor strings; 2022-06-27 21:42:51 -07:00
bjorn af2c53a762 Fix luax_optcolor; 2022-06-27 21:38:40 -07:00
bjorn e5d4ac10cb Fix Font atlas expansion; 2022-06-26 21:22:45 -07:00
bjorn 9d84d3907b Font texture is u8;
Originally we made the font texture f16 due to "clamping" of the
distance field, and kept it as floats (but f32 since conversion isn't
automatic with Vulkan) here.  However, clamping isn't really an issue.
You can increase the spread of the font to literally get a wider spread
of the SDF for glows, etc.  Switching to u8 uses 4x less texture memory,
which is significant.
2022-06-26 20:57:57 -07:00
bjorn bac57dc0d2 Add stack allocation to temp allocator;
It can be used to push the current cursor onto the stack, perform some
tmep allocations, and then pop the stack to "free" them all at once.
This can be nice if you're doing some temporary allocations that aren't
going to be needed when the function returns, since it reduces the
amount of allocator growth a bit.

This allocator is meant to be threadlocal eventually, so there are no
thread-safety concerns.
2022-06-26 20:53:12 -07:00
bjorn cbe24f482f Adjust font uvs;
- Padding is automatically computed from spread.
  - Spread increases detail at small sizes.
  - Remove failure cases where padding < spread/2
- UVs are un16x2, making room for color
- Don't center glyphs inside their atlas bounding box
- Cache normalized UVs and update them (for glyphs and vertices) when
  the atlas changes size.
  - Updating the UVs is UGLY and duplicates a lot of code.  It may be
    better to normalize the UVs on the fly, or just re-render the entire
    string if the atlas is updated.
2022-06-26 20:28:30 -07:00
bjorn 24fd9e0c04 gpu: properly cast device to uintptr_t; 2022-06-26 00:46:11 -07:00
bjorn ae4d7156fd lovr.graphics.submit ignores falsy values; 2022-06-26 00:45:49 -07:00
bjorn 7f22e18533 Error better when Buffer field is missing type; 2022-06-25 23:43:24 -07:00
bjorn 756b184306 Some font cleanup; 2022-06-25 19:54:13 -07:00
bjorn 02daeb1a2b The font code is pretty I promise; 2022-06-25 15:26:42 -07:00
bjorn 4021d4e893 Pass:monkey;
Questionable.
2022-06-24 23:05:09 -07:00
bjorn 75e8df58df Pass:cylinder; 2022-06-24 23:01:22 -07:00
bjorn 5c43ad0792 Pass:fill; 2022-06-24 19:59:48 -07:00
bjorn 0a3ccb4f8a stb_image sets srgb flag properly; 2022-06-24 19:38:57 -07:00
bjorn fbf2a039b7 setMaterial takes Texture in addition to Material; 2022-06-24 19:38:45 -07:00
bjorn f729320793 Fix creating Material from Texture; 2022-06-24 19:38:23 -07:00
bjorn dc9e93103f Pass:sphere; 2022-06-23 21:23:16 -07:00
bjorn dc73d2309a Pass:donut; 2022-06-23 19:52:37 -07:00
bjorn 8c63f47b8a Fix default shader switching; 2022-06-23 17:07:39 -07:00
bjorn 173c9a258e Sketch render pass automipmap; 2022-06-22 19:05:36 -07:00
bjorn c1d8c64c45 Pass:copy can copy tables to buffers; 2022-06-22 00:39:56 -07:00
bjorn cb4275bff7 Add DrawStyle; 2022-06-22 00:05:26 -07:00
bjorn 499cf9c0dc More Font APIs; 2022-06-21 15:28:03 -07:00
bjorn 71f6a88a62 Font uses padding; 2022-06-20 19:24:41 -07:00
bjorn ad0595ff35 lovr.graphics.getDefaultFont; 2022-06-20 18:58:12 -07:00
bjorn cfc0f52449 Support tab codepoints; 2022-06-20 18:52:10 -07:00
bjorn 362b389131 Pass:text;
Code is still messy, but it works okay.
2022-06-20 18:26:15 -07:00
bjorn ce58556372 Fix Pass:setBlendMode/setMaterial; 2022-06-20 18:25:05 -07:00
bjorn 7625ef9bd8 Rasterizer:getGlyphImage; 2022-06-20 18:24:12 -07:00
bjorn fe31431016 rm EGL/X11; Android fixes; 2022-06-20 18:23:28 -07:00
bjorn 0306096577 luax_optu32 doesn't evaluate index twice; 2022-06-20 18:17:51 -07:00
bjorn 3df9aea3fd Add Font shader; 2022-06-20 18:17:37 -07:00
bjorn 7def390f9c OpenXR/CMake fixes; 2022-06-20 15:51:24 -07:00
bjorn af8c061c50 Default buffer can be used for colors; 2022-06-18 23:31:51 -07:00
bjorn a654cec40f lovr.graphics.newFont; 2022-06-18 17:43:12 -07:00
bjorn b89c61a8f4 HorizontalAlign and VerticalAlign enums; 2022-06-18 17:41:10 -07:00
bjorn 0d7fed1fa7 Rasterizer:getBoundingBox;
For the global bounding box
2022-06-18 17:40:14 -07:00
bjorn 717f95f6bd Start updating Rasterizer; 2022-06-17 17:43:58 -07:00
bjorn cb121d3d36 Material fixes; Pass cleanup; 2022-06-17 17:43:26 -07:00
bjorn c1bb47d737 Merge branch 'master' into dev 2022-06-16 23:50:11 -07:00
bjorn 86b2c934e8 Materials, mostly; 2022-06-16 23:49:09 -07:00
bjorn fcc2758046 Potentially add support for KHR_texture_transform; 2022-06-15 23:51:23 -07:00
bjorn fb42bf3fbb Rearrange some ModelData stuff; 2022-06-15 23:17:11 -07:00
bjorn 7de6bdf242 Shaders; Rework vertex formats; 2022-06-15 20:46:43 -07:00
bjorn af8f650a07 Make map_t size deterministic;
Currently, the amount of memory allocated for a map can sometimes be
different depending on whether it was allocated with an initial capacity
or the items were added iteratively.

This causes problems for people that want to copy data between maps that
have the same number of elements.

Now, the size of a map will always be the same for a given number of
elements, regardless of how the elements are added.

Plus this gets rid of the weird prevpo2 function.  Yay.
2022-06-14 16:52:19 -07:00
bjorn fbe54d5dca Physics shape dimensions must be positive;
Or the world will explode.  That would be bad.
2022-06-12 18:18:48 -07:00
bjorn 70e0f5c5cf Synchronization; 2022-06-11 22:55:43 -07:00
bjorn d9b5237851 Sync cleanup; 2022-06-11 19:07:46 -07:00
bjorn 3d83d0fcfe Pass:multimesh;
IT'S ALIVE
2022-06-09 23:38:33 -07:00
bjorn 2896dc0bfa gpu: indirect draws accept optional stride; 2022-06-09 23:31:46 -07:00
bjorn fc616f92c2 Pass:mesh; Pass:setMeshMode; 2022-06-09 23:05:32 -07:00
bjorn 2abf1a4a0c Fix luax_optu32; 2022-06-09 23:05:02 -07:00
bjorn 3009e1d45c Rename transfers to uploads; 2022-06-09 22:44:23 -07:00
bjorn ab2c52bc05 Fix attachment cache; 2022-06-09 20:05:31 -07:00
bjorn 988393bb7f gpu: properly expunge render passes and framebuffers; 2022-06-09 20:05:04 -07:00
bjorn 451e8a53ed Discard attachments more; 2022-06-09 19:26:53 -07:00
bjorn 1cc8cf9f4a Update glslang to accept array of shader strings; 2022-06-09 17:44:46 -07:00
bjorn b2e681ddfd Allow hexcode for render pass clear; 2022-06-09 17:37:06 -07:00
bjorn ac9bc5112b Fix typo; 2022-06-09 00:09:47 -07:00
bjorn efe57133d0 Validation errors are logs not errors; 2022-06-09 00:01:51 -07:00
bjorn c2dab3cf2c Update lovr.draw signature;
- If you return a truthy value from lovr.draw, the pass won't be
  submitted.  A falsy value will submit the input pass.
- For convenience, lovr.graphics.submit returns true.
2022-06-08 23:59:48 -07:00
bjorn 6f16385fa1 Improve graphics error handling; 2022-06-08 23:59:36 -07:00
bjorn 0d4d7bc0e3 Fix vertex shader draw count; Simplify upload sync; 2022-06-08 21:23:30 -07:00
bjorn ef19a334a9 Pass:setSampler;
This is an experimental take on the "default filter" system.  Each
render Pass has its own "global sampler", initialized to trilinear.  The
global sampler will be used by default to sample textures/materials in
shaders.  You can set it to a filter mode or a full Sampler object.  You
can always send your own Sampler objects to Shaders if you want
per-texture sampler settings.  The global sampler is designed to be set a
small number of times per pass instead of on every draw.  Basically,
just do Pass:setSampler('nearest') and draw your minecraft world.
2022-06-07 20:42:10 -07:00
bjorn a26e732ab0 Cleanup; 2022-06-07 20:42:06 -07:00
bjorn 2b65b50ed9 Pass:setViewport; Pass:setScissor;
It pretends to be like a pipeline state even though it isn't.
Might be nice for nil to mean "the framebuffer size" which is the default.
2022-06-06 12:38:15 -07:00
bjorn 2ee1a8d014 Image:getPointer; 2022-06-06 07:32:01 -07:00
bjorn d5325b87b4 Headset support; 2022-06-05 20:38:14 -07:00
bjorn e36cc6482d rename pass/buffer to getPass/getBuffer; 2022-06-05 18:56:03 -07:00
bjorn a8b35074e0 Pass:send supports push constants; 2022-06-05 18:54:26 -07:00
bjorn 8effa7424f Pass:circle; 2022-06-05 13:12:49 -07:00
bjorn 7b5c816345 More efficient resource tracking;
- Temporary buffers are not tracked
- Sample-only textures are not tracked, but their initial upload is synchronized.
- Default texture something something
2022-06-04 14:54:04 -07:00
bjorn 6245aaa9d9 I have made a mistake; 2022-06-04 14:49:58 -07:00
bjorn 3a43d44460 Pass tracks resources for sync purposes; 2022-06-04 14:28:23 -07:00
bjorn ea80936af7 Pass:compute; 2022-06-04 11:54:05 -07:00
bjorn d8583c6a9d gpu_compute; gpu_compute_indirect; 2022-06-04 11:53:59 -07:00
bjorn d3a1a0ec22 Pass:cube; Pass:box; 2022-06-04 11:28:35 -07:00
bjorn 3013567e73 Fix Pass:translate; 2022-06-04 11:28:31 -07:00
bjorn e07a2691e0 Clean up plane; 2022-06-04 11:19:28 -07:00
bjorn 62f2d9a800 Organization; 2022-06-04 09:57:06 -07:00
bjorn e652ae67af Pass:plane; 2022-06-04 01:34:13 -07:00
bjorn ebc6d9d3a3 Pass:line; 2022-06-04 01:33:50 -07:00
bjorn a2668a1632 Fix canvas always trying to add depth buffer; 2022-06-04 01:33:11 -07:00
bjorn 2c2eada1f0 Fix pipeline creating the wrong render pass; 2022-06-04 01:31:16 -07:00
bjorn d9bf19da33 Fix texture memory allocation; 2022-06-04 01:30:51 -07:00
bjorn b2a3c59c42 Fix projection matrix; 2022-06-04 01:04:23 -07:00
bjorn ac3801902b Pipeline stack; 2022-05-31 21:57:55 -07:00
bjorn a09773a5c8 gpu_sync; 2022-05-31 21:50:29 -07:00
bjorn ec8b7f9727 Adjust; 2022-05-31 21:45:54 -07:00
bjorn 8431fc72ba Adjust; 2022-05-31 21:41:43 -07:00
bjorn 0104fe1910 Fancy compare mode aliases; 2022-05-31 21:33:06 -07:00
bjorn 513a1876c9 Simplify vertex buffers;
The default buffer is always bound to slot 0 once at the beginning of
command buffers, reducing the amount of rebinding.
2022-05-31 21:20:01 -07:00
bjorn ab04577495 Enforce maximum spirv version; 2022-05-31 20:47:47 -07:00
bjorn a2cc4f3495 Cap vertex attribute/buffer limits; 2022-05-31 20:40:50 -07:00
bjorn ec0da8e91f Correctly recycle scratchpad buffers; 2022-05-31 20:37:24 -07:00
bjorn 1f39ed8c51 Ensure binding numbers are less than 32;
We use u32 masks...
2022-05-31 20:24:43 -07:00
bjorn 99e45c22ad Add some descriptor set limits; 2022-05-31 20:16:16 -07:00
bjorn aa929482cd Fix default air absorption; 2022-05-31 13:55:38 -07:00
bjorn 42a924b0ee lovrPassDraw; Pass:points; 2022-05-30 15:36:31 -07:00
bjorn 8253b7361c gpu: More vulkan functions use buffer offsets; 2022-05-30 15:26:01 -07:00
bjorn 5a776528a8 maf: Modify matrix functions to use Vulkan convention; 2022-05-30 15:22:41 -07:00
bjorn dd043cbf07 Fix bundle allocation; 2022-05-30 15:06:57 -07:00
bjorn 2570485b20 gpu: pipeline creates render pass properly; 2022-05-30 13:32:59 -07:00
bjorn 6a531c04a8 luax_tofloat; 2022-05-30 13:32:40 -07:00
bjorn a434203ce0 spv: ignore input variables missing location decoration; 2022-05-30 13:14:05 -07:00
bjorn 32fb5e63ac Destroy descriptor pools properly; 2022-05-30 13:12:04 -07:00
bjorn e59a75fce8 Pass camera functions; 2022-05-30 12:29:52 -07:00
bjorn 205767bc81 VertexFormat; 2022-05-30 12:18:42 -07:00
bjorn 541ebc1b61 Bundle allocator; 2022-05-30 12:17:17 -07:00
bjorn 25bb64b18c gpu: viewport/binding fixes; 2022-05-29 23:58:18 -07:00
bjorn 7e0e5222da mat4_cofactor; 2022-05-29 23:48:17 -07:00
bjorn 082ddc0e1b gpu: add drawing functions; 2022-05-29 21:36:40 -07:00
bjorn 0c8f1b6400 gpu: add binding functions; 2022-05-29 21:36:29 -07:00
bjorn ff77a30f01 Default shaders; 2022-05-27 20:47:20 -07:00
bjorn 03a53bcae2 Fix Buffer copy range calculation; 2022-05-26 00:11:02 -07:00
bjorn 6440bc68f3 Pass:mipmap; 2022-05-26 00:07:10 -07:00
bjorn af0e388e91 Pass:copy; Pass:blit; 2022-05-25 23:52:24 -07:00
bjorn 885e335f8c Image dimension accessors take mip level; 2022-05-25 23:51:51 -07:00
bjorn 6771ff64b5 Pass:clear; 2022-05-25 19:45:01 -07:00
bjorn a5f37f7d7d better lovrBufferIsTemporary; 2022-05-25 19:23:01 -07:00
bjorn 73f13ef3c7 Initialize buffer data properly; 2022-05-24 22:30:59 -07:00
bjorn 99ecd04e27 Pass:send; 2022-05-23 23:10:11 -07:00
bjorn 5c0b9e51ed Pass:setShader clears/resets bindings; 2022-05-23 22:32:36 -07:00
bjorn d9e8b81b72 Default buffer/texture/sampler; 2022-05-23 22:32:12 -07:00
bjorn 6dce0be2da pipeline lookup; 2022-05-23 21:44:42 -07:00
bjorn e054218713 gpu_bundle; gpu_bundle_pool; layouts; 2022-05-23 21:40:57 -07:00
bjorn a0db01959d Shader:clone; 2022-05-22 15:10:07 -07:00
bjorn a64fd216ea newShader; 2022-05-22 15:09:09 -07:00
bjorn de30337374 core/spv; 2022-05-22 15:02:42 -07:00
bjorn 355b2bf85b Switch to glslang fork;
The reason is that the glslang C API doesn't support the extra
overloads that let you provide multiple strings or the lengths for
strings.  In our case our shader blobs are not null terminated, so
sending them to glslang would overrun the buffer.  I forked glslang
and modified the C API to support a length parameter.
2022-05-22 14:58:07 -07:00
bjorn 4f568ed84d s/setColorMask/setColorWrite; Pass:setColor; 2022-05-11 17:30:08 -07:00
bjorn 070e4f304d lovr.graphics.get/setBackground; 2022-05-11 15:38:05 -07:00
bjorn 970a84a514 Surface, swapchain, window texture, vsync; 2022-05-11 15:28:04 -07:00
bjorn f7b4ec725f Render passes; 2022-05-11 12:51:13 -07:00
bjorn 24f09ea608 lovr.graphics.submit works; 2022-05-11 12:50:49 -07:00
bjorn bfa0d94f2d Pass pipeline API; 2022-05-11 12:50:26 -07:00
bjorn bd970a5ec8 gpu_pipeline; 2022-05-11 12:49:05 -07:00
bjorn 3ff13edfb6 util: Add BREAK; 2022-05-11 12:47:12 -07:00
bjorn e820e40e08 Move window opening to lovr.system; 2022-05-09 12:43:19 -07:00
bjorn 91c48e57d5 macOS: implement virtual memory functions; 2022-05-09 12:41:21 -07:00
bjorn d9e5ba8b9f Slightly broken compileShader/newShader; 2022-05-09 11:47:06 -07:00
bjorn 88296a7c16 gpu_layout;
Stores a declaration of a group of shader resources.
2022-05-07 16:08:49 -07:00
bjorn 22edbe4f64 BC1 is rgb; 2022-05-06 17:27:16 -07:00
bjorn 5d078461a2 Rename copy texture usage to transfer; 2022-05-06 17:26:59 -07:00
bjorn 1fde5a36d0 Transform stack; 2022-05-06 17:26:38 -07:00
Samuel Gosselin 255f4e4a34 fixup: keep coding style consistent. 2022-05-06 10:55:29 -07:00
Samuel Gosselin 02c67d090d fixup: gracefully handle XR_ERROR_DISPLAY_REFRESH_RATE_UNSUPPORTED_FB and return |false| instead. 2022-05-06 10:55:29 -07:00
Samuel Gosselin 425a2ca343 Add support for setting the display refresh-rate.
OpenXR provides APIs to enumerate the supported refresh-rates, and
selecting a new refresh-rate. This patch adds two new APIs to the
lovr.headset module:

  - lovr.headset.getDisplayFrequencies():
	Returns a table containing the supported refresh-rates on
	success; nil otherwise.
  - lovr.headset.setDisplayFrequency(refreshRate:number):
	Returns true on success, false otherwise.

Only the OpenXR backend has support for this feature and it is
gated by the "refreshRate" feature flag, similarly to what the
"getDisplayFrequency()" API does.
2022-05-06 10:55:29 -07:00
Ryan Pavlik 307d33b327 Allow XR_KHR_android_create_instance to be optional.
It's essentially replaced by KHR_loader_init_android,
and will eventually not be provided by new/updated runtimes
2022-05-06 09:28:15 -07:00
bjorn 7ac9f357d8 Sampler API; 2022-05-01 15:48:41 -07:00
bjorn 22e15513f9 Sampler; 2022-05-01 15:47:17 -07:00
bjorn 203a60c63a rm model samplers; 2022-05-01 15:41:34 -07:00
bjorn f13bfabb5d Fix texture allocator block sizes; 2022-05-01 15:41:03 -07:00
bjorn 211e3ef0f8 Compile fixes; 2022-05-01 15:18:56 -07:00
bjorn 77a32333e0 lovr.graphics.pass; 2022-04-30 18:56:38 -07:00
bjorn ebe77e5924 Sketch out Texture uploads; 2022-04-30 18:49:46 -07:00
bjorn b7aa3f29a4 gpu: add texture transfer functions; 2022-04-30 15:58:19 -07:00
bjorn dbc4f08fa5 You can write quats to buffers now; 2022-04-30 15:58:09 -07:00
bjorn 0316378f74 Fix renderView precedence; 2022-04-30 09:13:21 -07:00
bjorn 445f813524 Ignore srgb flag for formats that don't support it; 2022-04-30 09:13:16 -07:00
bjorn 0772d8b4de newTexture; 2022-04-30 03:06:14 -07:00
bjorn e80d254dc6 Texture API;
Except newTexture because it's hard or something
2022-04-29 20:56:23 -07:00
bjorn c60116ad61 rm Color; 2022-04-29 20:55:54 -07:00
bjorn 4be958195d Start Texture; 2022-04-29 20:38:34 -07:00
bjorn e53ddfa03b isFormatSupported; 2022-04-29 17:16:16 -07:00
bjorn bc6b98123b gpu_texture; 2022-04-29 15:09:01 -07:00
bjorn 48e2509a3c lovr.graphics.wait; 2022-04-28 22:37:03 -07:00
bjorn 7aee0a4656 Add Pass; Buffer transfers; lovr.graphics.submit; Bugfixes; 2022-04-28 22:30:31 -07:00
bjorn 874c35120b mv getBuffer buffer; 2022-04-28 20:57:36 -07:00
bjorn d76936c48d gpu: add ticks and streams; 2022-04-28 20:57:36 -07:00
bjorn 6ee2b901f7 Fix to buffer constructor; 2022-04-28 20:26:47 -07:00
bjorn c285d0cdf9 Buffer:getFormat uses string keys; 2022-04-28 20:19:11 -07:00
bjorn 4483145d53 Allow passing a file to lovr;
The file will be treated as main.lua.
Its directory will be treated as the source.
2022-04-28 17:36:05 -07:00
bjorn a97193caac Buffer stride can not be smaller than the size of a single item; 2022-04-28 15:39:45 -07:00
Josip Miskovic 24a0751c16 Add `World:setStepIterations(num)` and its getter
Physics world's "quick step" is executed in multiple iteration steps.
The getter and setter for this value is now made available as two new
methods in the World object.

This is allows user to balance between the less accurate but quick
simulations, and more stable behavior of physics.

Something similar was already possible, by reducing the delta time and
running the sim multiple times per frame. However, any force user applies
to collider is zeroed after each step. User would thus have to keep track
of applied forces, and re-apply them inside the physics iteration loop.

By default ODE uses 20 iterations in quick step.
2022-04-27 11:39:08 -07:00
bjorn a8b7bc75a8 Adjust; 2022-04-27 00:35:09 -07:00
bjorn 9e5510b9a7 Adjust; 2022-04-27 00:32:01 -07:00
bjorn e8c809a870 Temporary buffers; 2022-04-27 00:28:39 -07:00
bjorn 43f56c223c Tell Vulkan about the engine name and version; 2022-04-27 00:21:04 -07:00
bjorn d8701df780 Add f16 conversion to util; 2022-04-27 00:19:44 -07:00
bjorn 65b0f95ca9 Add lovrUnreachable macro; 2022-04-27 00:05:14 -07:00
bjorn d2110af83a Fixup; 2022-04-26 22:51:24 -07:00
bjorn 39418b8393 Add temp frame allocator; 2022-04-26 22:44:44 -07:00
bjorn d45ded089c os_win32: add virtual memory functions; 2022-04-26 22:44:06 -07:00
bjorn a3438274b5 Add non-scratchpad Buffers;
This includes the memory allocator and the morgue.

You can't actually write any data to the buffer yet, since we don't have
commands or temp buffers.  Temp buffers (scratchpads) are coming soon.
2022-04-26 15:32:54 -07:00
bjorn 50ebed697e Update some features and limits;
- rm dynamicIndexing and nonUniformIndexing, for now (arrays aren't well
  supported)
- rename compressed texture features
- move clip/cull distance to limit instead of feature (limit can be 0)
2022-04-26 15:31:51 -07:00
jascase901 51d96f6fa2 include required for linux support. 2022-04-24 13:07:59 -07:00
jascase901 aeb269b24a use static assert macro instead of keyword
This change fixes a linker error I noticed when compiling on my windows
sytstem. see #551

According to this link the macro is prefered to the keyword.
https://docs.microsoft.com/en-us/cpp/c-language/static-assert-c?view=msvc-170#:~:text=The%20_Static_assert%20keyword%2C%20and%20the%20static_assert%20macro%2C%20both,runtime%20and%20incur%20a%20runtime%20cost.%20Microsoft-specific%20behavior
2022-04-24 13:07:59 -07:00
bjorn 3ae0ff568f Rework device info; 2022-04-22 13:28:59 -07:00
bjorn be1cedc922 Always enable fullIndexBufferRange feature; 2022-04-22 01:07:07 -07:00
bjorn 557f18ab3c Add gpu_webgpu;
Send help
2022-04-21 17:58:26 -07:00
bjorn 9a54102387 Image rework: KTX1 and KTX2 loaders; 2022-04-21 17:39:59 -07:00
bjorn f37c1824da lovr.graphics.getDevice/getFeatures/getLimits; 2022-04-21 17:39:59 -07:00
bjorn 40e9a4ab73 core/gpu; 2022-04-21 17:39:59 -07:00
bjorn f0827de864 Re-add ASTC loader; 2022-04-21 17:39:59 -07:00
bjorn f2e95e147a Re-add STB loader; 2022-04-21 17:39:59 -07:00
bjorn 0c4d3cb8da WIP new Image implementation and DDS loader;
- Image supports loading files with multiple layers
- Image supports semantic flags like srgb, premultiplied, etc.
- Image:getPixel and :setPixel support more formats
- DDS loader supports BC4-BC7, DXT2/DXT4, uncompressed formats, etc.
2022-04-21 17:39:59 -07:00
bjorn cf2f63f147 Add missing include; 2022-04-21 17:39:59 -07:00
bjorn 60cabcff3e rm unused variables in headset bindings; 2022-04-21 17:39:59 -07:00
bjorn e05c2cd593 renderTo no longer uses removed graphics functions; 2022-04-21 17:39:59 -07:00
bjorn d9ec003e79 Start Image rework; 2022-04-21 17:39:59 -07:00
bjorn 37221afbc6 rm graphics module; 2022-04-21 17:39:58 -07:00
bjorn a2cb611b6c Fix mipmaps with nearest filtering; 2022-04-14 16:16:22 -07:00
bjorn 85ee89d36f Fix weirdness with vec2 scale arguments; 2022-04-06 10:10:27 -07:00
bjorn cd0e458af9 lovr.filesystem.write/append returns success instead of size;
We don't have a good way of returning filesystem error messages yet,
but it's still useful to return a boolean instead of a number to
detect failure of zero byte writes.  Exposing the number of bytes
written is kind of weird since it's not very actionable.
2022-03-30 22:45:09 -07:00
bjorn 42e618fa00 World:getContacts; 2022-03-30 22:32:20 -07:00
bjorn 8fcdfd2bb4 Minor physics cleanup; 2022-03-30 22:05:10 -07:00
bjorn b115e5865f Fix miniaudio warning; 2022-03-30 21:15:51 -07:00
bjorn efbcb5e4c2 Merge branch 'master' into dev 2022-03-30 13:52:58 -07:00
bjorn b32244b787 OpenXR: Make update idempotent;
The state tracking here is getting pretty complicated... oh well!
2022-03-30 13:33:02 -07:00
bjorn 0238549e66 OpenXR: sync all subaction paths; 2022-03-30 13:33:02 -07:00
bjorn 8235965eca rm util from os_macos; 2022-03-30 12:42:01 -07:00
bjorn 5d271de91a mv map util; 2022-03-30 12:34:38 -07:00
bjorn faa42ee38b mv resources etc; 2022-03-30 12:34:34 -07:00
bjorn 2ec5a1a9dd OpenXR: Valve Index grip improvements; 2022-03-30 11:13:55 -07:00
bjorn 3972a8df20 Reset OpenXR event type after polling;
Otherwise the struct will have the wrong type when polling the next
event.  Kind of annoying.
2022-03-29 08:56:26 -07:00
bjorn 72c93630ce Shift arguments up by one in fused mode;
There's a bug where arguments start at 0 instead of 1 in fused mode.

In fused mode, we aren't going to consume one of the command line
arguments for the project path like we normally do, so in order to
provide that argument to the lovr project at index 1, shift them all up
by one in boot.lua.  We can only do this after the filesystem module is
loaded, so it can't go in main.c with all the other arg stuff.

The zero'th argument in fused mode is now the source path, just like how
it works in non-fused mode.  This means the executable path is in the
arg table twice, which is sensible since in fused mode both the
interpreter and the interpreter's source are the same file.
2022-03-28 13:24:44 -07:00
monolifed af3ec874f0 Keep winding with flip 2022-03-28 12:37:21 -07:00
bjorn d70619ec96 Source:isSpatial; Separate spatial from effects; 2022-03-27 19:09:25 -07:00
bjorn c824c5c135 obj: triangulate faces;
Supports faces with any number of vertices by converting to triangle
fans.
2022-03-27 18:35:38 -07:00
bjorn e47f3eb108 Use doubles for noise; 2022-03-27 14:51:06 -07:00
bjorn f347ac98d9 Switch to simplex noise;
Pending test
2022-03-27 01:21:52 -07:00
bjorn 342f92940e Add :equals method to vector objects; 2022-03-25 16:05:38 -07:00
bjorn 03df236e63 Fix Canvas depth buffer mipmap generation; 2022-03-25 13:12:18 -07:00
bjorn 6c9531564e Make physics structs private; 2022-03-25 12:40:29 -07:00
bjorn 985d8c7a61 Fix glTF base64 precedence issue; 2022-03-25 12:22:07 -07:00
bjorn 56dbb346e7 ODE uses 4-component vec3s too; 2022-03-25 12:15:38 -07:00
bjorn dc6de4ca14 Freeze! GCC police; 2022-03-25 12:15:38 -07:00
bjorn fdb4db2297 Support base64 images in glTF; 2022-03-25 03:58:06 -07:00
bjorn bb9a20aaf2 Add basic help command line flag; 2022-03-25 03:58:06 -07:00
bjorn 5e752f0b25 Fix error when passing objects as thread arguments; 2022-03-23 23:16:34 -07:00
bjorn 301f7b2cc9 Android mounts save directory earlier;
This fixes issues with conf.lua not getting read properly, and also
the weird quirk of getIdentity not working until setIdentity runs.
2022-03-23 18:27:05 -07:00
bjorn dcd1e58d0d rm tracking drivers; 2022-03-23 13:11:16 -07:00
bjorn a1d0b2fa11 Use fixed-size audio callbacks;
WebAudio may need...attention.
2022-03-23 10:57:30 -07:00
bjorn 20caeca69a Upgrade miniaudio; 2022-03-23 10:57:30 -07:00
bjorn 243e686ea4 rm lovr.headset.getDisplayMask; 2022-03-22 19:45:44 -07:00
bjorn 1eed2bc83c lovr.headset.isFocused; 2022-03-22 19:43:00 -07:00
bjorn 3d542b4791 rm beacon devices;
They are no longer supported by any headset drivers.
2022-03-22 18:08:44 -07:00
bjorn b7527c3584 More people use COUNTOF; 2022-03-22 17:56:26 -07:00
bjorn 98e186af5b Fix duplicate field; 2022-03-22 17:53:47 -07:00
bjorn 1f3c5dea79 dt uses headset time instead of system time; 2022-03-22 17:52:16 -07:00
bjorn d1dc2f3199 rm pico;
Notes:

- We can actually use a single Activity.java file for oculus/pico now
- We can unconditionally compile os_android.c on Android
- No need for including extra jars in build system
- Headset rendering is guaranteed synchronous now, no need to ref L
- Add an "android flavor" build setting to differentiate between oculus
  and pico devices, since they both use OpenXR.
- Update the pico manifest to reflect their OpenXR sample
- Remove some OpenGL hacks that aren't necessary anymore
2022-03-22 16:03:21 -07:00
bjorn f1cc668298 rm vrapi; 2022-03-22 16:02:45 -07:00
bjorn 4f39f4f68f rm oculus; 2022-03-22 16:02:45 -07:00
bjorn b9889ca97a rm openvr; 2022-03-22 16:02:45 -07:00