bjorn
eba71d5921
Fix more warnings;
2022-08-06 19:23:41 -07:00
bjorn
a2ee485d41
Fix most windows warnings in graphics code;
...
Co-authored-by: mcc <andi.m.mcclure@gmail.com>
2022-08-06 18:05:30 -07:00
bjorn
7efd19c45c
Add uniform buffer for global constants;
...
So far it has resolution and timestamp.
Broke the nogame shader, need to recompile.
2022-08-06 13:37:27 -07:00
bjorn
642388709b
Shader helper improvements;
2022-08-06 13:06:42 -07:00
bjorn
c41188c4b4
Merge branch 'master' into dev
2022-08-06 11:08:02 -07:00
bjorn
dd4fa5c382
Synchronize Material textures;
2022-08-06 00:50:25 -07:00
bjorn
6011e61d52
Fix lovr.headset.newModel and lovr.headset.animate;
2022-08-06 00:29:46 -07:00
bjorn
ed59eeb11c
gpu: don't use VkPipelineCacheHeaderVersionOne;
...
Doesn't exist in NDK...
2022-08-05 23:41:25 -07:00
bjorn
73f61b35b3
Fix background color space;
2022-08-05 22:14:09 -07:00
bjorn
2a3215fa05
Make indirect draws a :mesh variant;
2022-08-05 22:11:43 -07:00
bjorn
fcbeccdfb1
Fix background colors;
2022-08-05 21:05:02 -07:00
bjorn
cb59f64a7b
Adjust desktop fov;
2022-08-05 19:18:41 -07:00
bjorn
a23f0351cc
WIP OpenXR layout transitions;
2022-08-05 18:36:51 -07:00
bjorn
7ceefcf4c2
Fix mat4_getFov;
2022-08-04 21:55:22 -07:00
bjorn
019814e2c1
Change the way modules are destroyed;
...
They are now destroyed explicitly after tearing down the Lua state
instead of relying on finalizers. It's definitely annoying to make it
coordinated in a centralized way like this instead of being distributed,
but there's not really any reliabel way to ensure that graphics objects
are destroyed before the graphics module/device is destroyed, which is a
problem.
2022-08-04 21:44:34 -07:00
bjorn
aa4fce2842
Rename luax_atexit internals;
2022-08-04 21:33:37 -07:00
bjorn
16860e8ef5
rm stats;
...
These stats don't make sense right now.
2022-08-04 07:59:07 -07:00
bjorn
7c7f8ed907
Free ModelData metadata;
2022-08-04 00:31:39 -07:00
bjorn
eac3299bd0
ModelData:getMetadata;
2022-08-04 00:27:20 -07:00
bjorn
a6d843c642
Fix desktop driver;
2022-08-04 00:12:41 -07:00
bjorn
acd87a5e5c
lovr.graphics.present;
...
It's nice to have an explicit action for presentation.
2022-08-04 00:06:54 -07:00
bjorn
9b19a1cd47
Fix lovr.headset.animate;
2022-08-02 23:06:49 -07:00
bjorn
d42cac288f
Use anonymous union for ModelNode transform;
2022-08-02 23:03:52 -07:00
bjorn
10f2b727b6
glslang: auto map locations and binding numbers;
2022-08-02 22:06:44 -07:00
bjorn
89312c1c4b
Add on-disk shader cache;
...
Set t.graphics.shadercache to true (the default) and lovr will
read/write a shader cache file from/to disk.
2022-08-02 22:06:44 -07:00
bjorn
4ee092e81b
Make Pass a regular object;
...
It uses newPass instead of getPass. Temporary objects had lifetime
issues that were nearly impossible to solve. And normal objects are
easier to understand because they behave like all other LÖVR objects.
However, Pass commands are not retained from frame to frame. Pass
objects must be re-recorded before every submit, and must be reset
before being recorded again.
Pass objects now provide a natural place for render-pass-related info
like clears and texture handles. They also allow more information to be
precomputed which should reduce overhead a bit.
It is now possible to request a stencil buffer and antialiasing on the
window and headset textures, via conf.lua.
lovr.graphics.setBackground should instead set the clear color on the
window pass. Though we're still going to try to do spherical harmonics
in some capacity.
There are still major issues with OpenXR that are going to be ironed
out, and the desktop driver hasn't been converted over to the new
headset Pass system yet. So lovr.headset integration is a bit WIP.
2022-08-02 22:06:44 -07:00
bjorn
289f08b0df
Fix OpenXR texture layer count;
2022-08-01 22:43:44 -07:00
bjorn
d81d906f58
Fix;
2022-08-01 22:35:20 -07:00
bjorn
8952476e35
Adjust;
2022-08-01 22:14:49 -07:00
Josip Miskovic
31ca502034
Add isKeyDown
2022-08-01 22:13:30 -07:00
bjorn
c0dfb414d6
Per-stage default shaders;
2022-08-01 22:10:06 -07:00
bjorn
ac104e6f41
WIP stereo blit shader;
2022-07-31 13:26:35 -07:00
bjorn
c4ff7cca39
Passes track their readbacks;
...
There are some issues with immediately tracking readbacks in the global
linked list of pending readbacks:
- The Pass might not get submitted, in which case the readback will be
"dangling" and never complete (or it will erroneously think it's
completed but its buffer will contain garbage data).
- Thread safety issues of modifying a global data structure from a Pass.
Instead, Pass will locally track the readbacks it performs, and only at
submit time will those readbacks get added to the global list.
(There is a little bit of refcounting mistakes now, those will get
cleaned up).
2022-07-31 13:02:41 -07:00
bjorn
50f596bd34
Default shaders use lovrmain;
2022-07-31 11:18:15 -07:00
bjorn
2414f5f269
Material uvShift can be a single number too;
2022-07-31 10:39:49 -07:00
bjorn
4919daa93b
Small fixes;
2022-07-31 10:39:49 -07:00
bjorn
e87cec1b49
Reduce number of materials per block;
2022-07-31 10:39:49 -07:00
bjorn
9e4765818a
Rename texture depth to layer count;
2022-07-31 10:39:49 -07:00
bjorn
571c71b76e
Rename pipeline stack to state;
2022-07-31 10:39:49 -07:00
Josip Miskovic
7c792fd975
Fix cylinder's triangle winding and normals
2022-07-31 09:38:40 -07:00
Kelsey Higham
50b321fb64
More beginner-friendly error message
2022-07-21 16:30:13 -07:00
bjorn
a0173252b9
Slight improvement to lovr.mirror;
2022-07-17 20:07:31 -07:00
bjorn
922942a0bf
Initialize Pass font properly;
2022-07-17 20:07:20 -07:00
bjorn
d9623a51a9
Pass:setFont;
2022-07-17 19:53:31 -07:00
bjorn
24504d1719
Adjust;
2022-07-17 16:38:29 -07:00
bjorn
d17131c421
Pass:cone;
2022-07-17 16:38:00 -07:00
bjorn
92201b87a1
Rename timer tally type to time;
2022-07-17 13:17:33 -07:00
bjorn
83fa750a4d
Support and default to reverse-z with infinite far plane;
2022-07-17 12:37:59 -07:00
bjorn
1df537294a
Improve Model texture loading;
...
- Only loads textures used by materials
- Creates color/glow textures as sRGB
2022-07-17 12:04:47 -07:00
bjorn
c2dd7281cc
mv stage tally -> shader tally;
2022-07-17 11:38:55 -07:00
bjorn
1946fbb540
Reduce default near plane;
...
I feel like we've (un)done this before...
2022-07-17 11:05:24 -07:00
bjorn
5d3e1f93cd
Add d32fs8;
2022-07-17 11:03:00 -07:00
bjorn
32346796ef
Tally/Readback cleanup;
2022-07-17 09:50:15 -07:00
bjorn
faa690b7f0
Material API;
...
Just returns everything as a table. Some sort of key-value thing would
be nice but complicates the implementation.
2022-07-17 09:29:13 -07:00
bjorn
35d8a4c49c
Tally API;
2022-07-17 09:05:39 -07:00
bjorn
430f687add
Projection updates;
...
- Rename/reorder some projection matrix functions.
- Make perspective functions flip Y and use 0-1 NDC range.
- Flip winding and font vertices based on handedness.
This stuff is really confusing
2022-07-17 09:02:53 -07:00
bjorn
1bc31b7751
Revert accidental winding change;
2022-07-15 21:42:31 -07:00
bjorn
e2bfff1b0a
Tally/Readback fixes;
2022-07-14 19:23:02 -07:00
bjorn
45135899a1
Readback, mostly;
2022-07-14 00:05:58 -07:00
bjorn
3bfd9ca0e1
gpu: improve wait functions;
...
- gpu_finished -> gpu_is_complete
- add gpu_wait_tick -> can wait for specific tick to finish (fence)
- gpu_wait -> gpu_wait_idle
2022-07-14 00:04:38 -07:00
bjorn
c54a587590
gpu: fix read scratchpad destruction;
2022-07-14 00:04:21 -07:00
bjorn
4909a1963b
Fix clear alpha;
2022-07-14 00:03:58 -07:00
bjorn
f5ec2e9158
Don't encode Images upside down anymore;
2022-07-13 23:59:35 -07:00
bjorn
bca10c9e98
Make info structs const;
2022-07-13 00:07:15 -07:00
bjorn
0b76ab7e96
Add a few Tally things;
2022-07-12 19:59:12 -07:00
bjorn
1c571001e7
Finish Model API;
2022-07-12 19:35:23 -07:00
bjorn
cd65e8d34c
Cache only rebinds vertex/index buffers when needed;
2022-07-12 17:19:30 -07:00
bjorn
83245afae6
Fix Font:getLines;
2022-07-11 22:43:42 -07:00
bjorn
4e92a4e503
Super ultra cool geometry cache;
...
Pass stores a small 16-bucket cache of vertices/indices it recently
generated. Draws that have relatively predictable geometry can provide
a hash along with their draw. The Pass will reuse vertices based on the
hash, when possible, and return a NULL vertex pointer to let the draw-er
know they don't need to generate any vertices.
This provides a dramatic speedup when drawing the same shape many times
in a row. The overhead is negligible, with benefits kicking in with
just a small handful of repeated draws (3-5 for cubes, less for more
complex shapes).
2022-07-11 20:52:35 -07:00
bjorn
ae87abc7bb
gpu: fix allocator;
2022-07-11 19:53:53 -07:00
bjorn
a4e4181489
Error screen;
2022-07-10 21:37:52 -07:00
bjorn
a0cd36a77b
Fix torus winding;
2022-07-10 18:02:49 -07:00
bjorn
0a251495bc
Fix normal matrix;
2022-07-10 18:02:44 -07:00
bjorn
698977c5be
Better default torus segments;
2022-07-10 18:02:31 -07:00
bjorn
e8ebb17796
Fix hexcode render pass clear;
2022-07-10 17:07:04 -07:00
bjorn
cfa5613db4
gpu: render pass cache uses correct resolve layout;
2022-07-10 17:06:43 -07:00
bjorn
f23ae4009f
gpu: Fix render pass cache eviction;
2022-07-10 17:06:20 -07:00
bjorn
dacd17066d
luax_checkendpoints;
...
Allows drawing a sphere/capsule using 2 endpoints.
2022-07-10 13:11:47 -07:00
bjorn
4e8fe82f94
Font:getVertices;
2022-07-10 12:49:47 -07:00
bjorn
889b1d8271
Improve Buffer length estimation;
2022-07-10 12:49:11 -07:00
bjorn
f89b1811aa
Adjust default Buffer field locations;
...
I guess it's better to match them up with the default attributes.
In most cases you're going to want to manually specify them with names
or numbers anyway.
2022-07-10 12:35:02 -07:00
bjorn
f7d7281e70
Add index16/index32 FieldTypes;
...
Similar to u16/u32 but are 1-indexed when written using tables.
2022-07-10 12:18:31 -07:00
bjorn
8e89026678
Shader:getLocalWorkgroupSize;
2022-07-09 23:39:03 -07:00
bjorn
886bfe18c1
Shader "improvements";
2022-07-09 23:09:02 -07:00
bjorn
c7f4e11b0b
Improve shader errors;
2022-07-09 21:39:31 -07:00
bjorn
e8a5f02e7b
Start stats;
2022-07-09 21:19:51 -07:00
bjorn
159352770f
Model:getTriangles;
...
Doesn't 100% work, Buffers are kind of a mess, ugh.
2022-07-09 18:30:36 -07:00
bjorn
40cbb18346
Ugly Pass:capsule;
2022-07-09 16:38:25 -07:00
bjorn
b0c1dd5f12
Put nogame in its own file;
2022-07-06 23:50:43 -07:00
bjorn
f2cfb19d4d
Material textures must be sample-only;
...
Tracking every material's texture would add a lot of overhead, probably
2022-07-06 23:00:39 -07:00
bjorn
3bf5ec5744
Shader improvements;
...
Mostly renaming things and adding helper functions.
2022-07-06 22:54:56 -07:00
bjorn
f9c07f852b
gltf: KHR_texture_basisu; Only load active images;
2022-07-06 20:24:02 -07:00
bjorn
5f19c2e1be
Model:getBoundingBox; Model:getBoundingSphere;
2022-07-06 19:22:02 -07:00
bjorn
516ac2a925
Fix validation issue when first draw uses empty vertex format;
2022-07-06 16:43:42 -07:00
bjorn
a44ab9bcfa
Fix presentation sequence issue;
...
Fixes crash on error inside lovr.draw.
2022-07-05 21:58:54 -07:00
bjorn
dbc34c0fdc
Update internal resource limit caps;
2022-07-04 15:54:43 -07:00
bjorn
dd8d8fe67e
Adjust;
2022-07-04 15:22:54 -07:00
bjorn
b7e5bd1d67
Require 64KB uniform buffers;
...
64KB is near-ubiquitous, and the per-draw UBO needs this much space.
2022-07-04 15:21:43 -07:00
bjorn
b934fac1df
Pass:skybox;
2022-07-04 00:18:38 -07:00
bjorn
8aa14ba42b
Shader:hasAttribute;
2022-07-03 23:04:56 -07:00
bjorn
2c339dd944
Shader:hasStage;
2022-07-03 22:59:49 -07:00
bjorn
b2b6b14e3e
Fix Pass:mesh error handling;
2022-07-03 22:40:19 -07:00
bjorn
917b97ca2d
Adjust;
2022-07-03 21:48:43 -07:00
mcc
9a7eedbf4d
Remove 'check on egress' behaviors where an error for a sound being too large is emitted only when a getter is called (left harder-to-remove checks that occur when a sound is loaded)
2022-07-03 21:34:16 -07:00
mcc
15aa08bbe7
Adjustments to MSVC warnings PR based on github comments
2022-07-03 21:34:16 -07:00
mcc
28d64b6ced
Fix various compiler warnings in MSVC (non graphics edition)
...
- Put in casts/checks in audio code when assigning size_t to 32 bit
- () is different from (void)
- Turned off warnings for anonymous unions and negating unsigned integers which were technically accurate but unhelpful (and interfered with bit conversion and a weird bit math construct in audio.c) (CMakeLists only)
2022-07-03 21:34:16 -07:00
bjorn
cdf6b2017e
Fix segfault on shader compilation failure;
2022-07-03 20:19:17 -07:00
bjorn
4f15e7e34a
Fix plane winding;
2022-07-03 20:07:00 -07:00
bjorn
de090971f7
rm erroneous union;
2022-07-03 19:59:51 -07:00
bjorn
0d23d10e43
Animate normals; Use material color;
2022-07-03 19:20:30 -07:00
bjorn
d088c5471d
Model;
...
Does not include some of the fancier accessors yet.
2022-07-03 17:26:31 -07:00
bjorn
e8e9e7fd57
Fix leaks;
2022-07-03 12:59:51 -07:00
bjorn
45f74bad3d
Fix Image UB;
2022-07-03 12:59:17 -07:00
bjorn
56a9d81254
Fix push constants;
2022-07-01 18:34:31 -07:00
bjorn
d9d54ce348
Pass:copy(tally, buffer);
2022-06-30 18:51:03 -07:00
bjorn
8b37b25e54
TIME WIZARD;
2022-06-30 18:47:01 -07:00
bjorn
a521f11a44
lovrPassCopyTallyToBuffer;
2022-06-30 18:46:47 -07:00
bjorn
d06e0c8b09
gpu: tally waits for query results;
2022-06-30 17:34:30 -07:00
bjorn
0417e9095d
gpu: add timestampPeriod limit;
2022-06-30 17:34:30 -07:00
bjorn
c327eb103f
Tally;
2022-06-30 17:34:29 -07:00
bjorn
9e7bd34ab1
Font:getWidth;
2022-06-30 17:25:47 -07:00
bjorn
4125b1dc7e
mv getWrap getLines; Include bearing/advance in width;
2022-06-30 17:07:47 -07:00
bjorn
8e968cecd0
Fixes;
2022-06-30 00:29:52 -07:00
bjorn
1f8d37a160
Font:getKerning;
2022-06-29 21:49:55 -07:00
bjorn
078b54a7a5
Font:getWrap doesn't return width;
2022-06-29 21:33:39 -07:00
bjorn
7711fe8b65
Font:getWrap; Simplify Font internals;
2022-06-29 20:17:26 -07:00
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