Commit Graph

15 Commits

Author SHA1 Message Date
bd1a2c9673 Using push constants instead of a second vertex buffer 2024-09-02 19:34:57 -05:00
697a8205d4 Added subpixel text rendering
Modifications to glyph loading and color blending were made.

Artifacts occur when you scale down the glyphs.
2024-07-15 22:48:35 -05:00
b3e114c2a1 Font rendering
Text boxes may be created where the text is left, center, or right
aligned.
2024-07-13 21:31:23 -05:00
08c58e719c Autism
License text changes, adding const and restrict keywords, freetype git
submodule
2024-07-01 15:06:24 -05:00
31e37846b4 Fixed modifying mesh instances
Rather than use a uniform, the code was modified so that the vertex
buffer for the mesh instances was not recreated from scratch. Now each
mesh can be assigned a max number of instances. On each modififcation
the instance data and the number of instances can be passed to the mesh.
2024-06-30 08:46:57 -05:00
0c55429241 Non-blocking REPL
Makeshift REPL so that one can evaluate expressions while the game is
running. I have a curses project which used lua to do something
similiar, I'd like to repurpose that at some point. For now, this is
satisfactory.
2024-06-29 19:39:01 -05:00
1a7b86f6d1 View mode and Chez Scheme rewrite
All of the common lisp code was translated into Chez Scheme. A grid
coordinate system was added; with the 'v' key one can toggle a grid
selector which may be manipulated with vi keys or the numpad.

Currently, when moving the selector there is an issue. The selector is
moved by updating one of two vertex buffers (one is for geometry, one is
for mesh instances). I plan on the second one to be static in the long
run, this is a 'quick and dirty solution'. Uniform buffers will
eventually be implemented. Right now, everything works with a bit of
error message spam.
2024-06-28 00:36:03 -05:00
f4506e5a90 Added a development diary
A development diary will be good for organization. The diary will list
things like plans or tasks to complete.
2024-05-22 21:15:28 -05:00
b0dd2cdf3a Added textures
Textures are stored in a global hashtable. Each mesh pipeline has access
to a single texture. The texture may be used as an atlas by creating
meshes with different texture coordinates. The current system should be
fine for text glyphs. However, if you have an atlas where each
subdivision is equal in its dimensions, the use of layers and the
VK_IMAGE_VIEW_TYPE_2D_ARRAY view type would be best. Some preliminary
code for this was completed, but for now inserting textures into the
hashmap defaults to VK_IMAGE_VIEW_TYPE_2D.
2024-05-22 09:57:13 -05:00
6e32539435 Depth buffering 2024-05-16 03:43:05 -05:00
29b7e4b50b Added Camera
Set up uniform buffers for the camera. The camera still lacks a proper
controller on the lisp side, but you can create the matrix data in lisp.
The projection matrices use the "reverse-z" trick. When setting up depth
buffering in the (near) future, this needs to be considered.
2024-05-15 23:04:51 -05:00
207de345f7 Window events, math, and asdf
Window resize events are now sent from the renderer to lisp.
On the lisp side, some math code has been written, but not yet
integrated into the project.
2024-05-13 19:05:28 -05:00
1ec76f56c8 Instancing
The renderer now allows instancing. The way this works is by having to
vertex buffers. One contains the normal vertex geometry data, the other
contains per-instance data.
2024-05-09 16:39:50 -05:00
583a6e67b3 Hello quad program
The Vulkan renderer now has a mesh structure which utilizes vertex, index,
and staging buffers. On the lisp side, you can now provide a vertex type
when creating a pipeline and the appropriate vertex data when creating
the mesh. Meshes are associated with pipelines.

Currently there is one vertex type: pos2color3, which will
likely be modified and replaced. There is no instanced rendering yet,
so drawing a pipeline just involves drawing every mesh associated with
that pipeline.
2024-05-06 11:28:01 -05:00
d076c9673d Hello Triangle program with Vulkan
The Vulkan bits are written in C. Then in common lisp you talk to the
renderer. On the common lisp side, the program was made to allow
interaction with the REPL while the game runs. Vertex buffers have not
been implemented yet, the Vulkan stuff is currently barebones.
2024-05-03 12:01:33 -05:00