bjorn
3bf5ec5744
Shader improvements;
...
Mostly renaming things and adding helper functions.
2022-07-06 22:54:56 -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
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
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
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
1752b220bf
Pass:text supports multicolor strings;
2022-06-27 21:42:51 -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
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
fbf2a039b7
setMaterial takes Texture in addition to Material;
2022-06-24 19:38:45 -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
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
cb121d3d36
Material fixes; Pass cleanup;
2022-06-17 17:43:26 -07:00
bjorn
86b2c934e8
Materials, mostly;
2022-06-16 23:49:09 -07:00
bjorn
7de6bdf242
Shaders; Rework vertex formats;
2022-06-15 20:46:43 -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
fc616f92c2
Pass:mesh; Pass:setMeshMode;
2022-06-09 23:05:32 -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
1cc8cf9f4a
Update glslang to accept array of shader strings;
2022-06-09 17:44:46 -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
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
d5325b87b4
Headset support;
2022-06-05 20:38:14 -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
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
d3a1a0ec22
Pass:cube; Pass:box;
2022-06-04 11:28:35 -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
ac3801902b
Pipeline stack;
2022-05-31 21:57:55 -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
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
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
42a924b0ee
lovrPassDraw; Pass:points;
2022-05-30 15:36:31 -07:00
bjorn
dd043cbf07
Fix bundle allocation;
2022-05-30 15:06:57 -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
ff77a30f01
Default shaders;
2022-05-27 20:47:20 -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
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
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
bfa0d94f2d
Pass pipeline API;
2022-05-11 12:50:26 -07:00
bjorn
d9e5ba8b9f
Slightly broken compileShader/newShader;
2022-05-09 11:47:06 -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
bjorn
22e15513f9
Sampler;
2022-05-01 15:47:17 -07:00
bjorn
211e3ef0f8
Compile fixes;
2022-05-01 15:18:56 -07:00
bjorn
ebe77e5924
Sketch out Texture uploads;
2022-04-30 18:49:46 -07:00
bjorn
0316378f74
Fix renderView precedence;
2022-04-30 09:13:21 -07:00
bjorn
e80d254dc6
Texture API;
...
Except newTexture because it's hard or something
2022-04-29 20:56:23 -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
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
a97193caac
Buffer stride can not be smaller than the size of a single item;
2022-04-28 15:39:45 -07:00
bjorn
a8b7bc75a8
Adjust;
2022-04-27 00:35:09 -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
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
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
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
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
cf2f63f147
Add missing include;
2022-04-21 17:39:59 -07:00
bjorn
37221afbc6
rm graphics module;
2022-04-21 17:39:58 -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
2da18d419b
mv util src;
2022-03-22 00:13:38 -07:00
bjorn
a4faad39f8
Font:getFilter; Font:setFilter;
2022-03-15 16:02:35 -07:00
bjorn
fdfcb5539f
Merge branch 'master' into dev
2022-03-14 13:19:59 -07:00
murat g
ee3ba6ef3e
Font filtering now respects the default setting.
2022-03-03 22:41:47 -08:00
bjorn
20e4567bd6
Merge branch 'master' into dev
2021-12-20 17:12:39 +02:00
bjorn
0a2f968850
Fix circle uvs;
...
After changing circle scale from diameter to radius, the uvs broke,
since they are calculated from the position.
2021-10-09 03:52:11 -07:00
bjorn
04d6996b94
Font:getWidth also returns width of last line;
2021-09-06 16:14:47 -07:00
bjorn
a3b791a7e7
Fix Canvas flushing;
2021-03-07 21:19:24 -07:00
bjorn
4f5adbc64c
lovr.system;
2021-02-25 09:00:12 -07:00
bjorn
39a4d2c1d5
rm lovr.graphics.triangle;
2021-02-24 17:45:31 -07:00
bjorn
0919da4091
Improve MSDF font shader; Add spread/padding settings to Font;
2021-02-10 07:08:29 -07:00
bjorn
8c714c45b0
Clean up some includes;
2021-02-08 11:16:00 -07:00