summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)Author
4 daysrefactor Texture into its own thingIrene Knapp
as part of this, the command pools are moved from window dressing to permanent note also how mip count is a value computed by loading the texture, and used when creating the sampler, which is part of the window dressing. the assumption about how it's computed will have to change when we support multiple textures, but for now we settle for just pushing the assumption to the top level. Force-Push: yes Change-Id: I545c53feedc99628fbe943120798fe66fe9e065b
5 daysmove the obj loader to a more logical placeIrene Knapp
Force-Push: yes Change-Id: I0d506fa517daeacf63b52fdd5900f1bbee9c22b7
6 daysremove physical_device from ForReinitIrene Knapp
Vulkanalia tracks it for us in Device. it's used in Model, so it wasn't strictly in-scope for ForReinit; this solves the problem and simplifies some stuff. Force-Push: yes Change-Id: I8e38c236b3dc4c112671382a062c9ada2f34fbb1
6 daysmove models into their own struct and fileIrene Knapp
Force-Push: yes Change-Id: Ic6aa38b7d069825beadeb144eace5a9d23f0d21b
7 daysfurther splitting of graphics submodulesIrene Knapp
now this is starting to feel like halfway decent organization Force-Push: yes Change-Id: I45cc4afb45e1528705680eb4192c1e9ba72f53fb
7 daysmove some modules into a new graphics submoduleIrene Knapp
Force-Push: yes Change-Id: I5cbdf59870258f099fc6dd47ff2f1566376c1585
7 daysstate needed when rendering is now in its own structIrene Knapp
subdividing the lifetimes of all our various objects may feel questionable in general, but this particular division is a very natural one Force-Push: yes Change-Id: I499a32875a4d75965944af720e7bfd6ec5965c15
7 daysfactor out the render commands into a new scene moduleIrene Knapp
use push constants this concludes the tutorial; there's now a bit of fairly obvious refactoring to do to group objects in a way that reflects when they're needed, which can be followed by building a real scene graph Change-Id: Id3b76d00d08ae915270095bd606e41767b7ec177 Force-Push: yes
10 daysantialiasingIrene Knapp
yay less fuzz or more fuzz depending on what you think of as fuzz Force-Push: yes Change-Id: I207c040805d97baaa8be887a463a37863159056e
2026-07-27generate mipmapsIrene Knapp
Force-Push: yes Change-Id: I2683fa6e3f290a812b74e5b64701c3094bb5cbee
2026-07-20load a nontrivial model and render it with a textureIrene Knapp
yay Force-Push: yes Change-Id: Icb715692286c8560532ab73d32a49be8f485d790
2026-07-18depth bufferIrene Knapp
yay Change-Id: I7795e22712f27b262cde807a942ddec342d07c55 Force-Push: yes
2026-07-18draw a second squareIrene Knapp
in order to test the depth buffer, which does not yet exist Force-Push: yes Change-Id: Ibb4c279ff8b83ad9c0c37897f623631c4e342fb0
2026-07-18pull the shader data stuff into its own fileIrene Knapp
separate from the linear algebra stuff Force-Push: yes Change-Id: I26fc7ac596f304fa35ca7a4d0e1349d4fa0685ee
2026-07-18draw the imageIrene Knapp
wow yay :) Force-Push: yes Change-Id: I7053ec3a7ed7b46e9c9d1260fd0f73b398b798af
2026-07-18load a texture imageIrene Knapp
also refactor buffer management a little this doesn't yet draw the texture Change-Id: Id2efa761223a588bf599041ac525c3b988f0113b Force-Push: yes
2026-07-17add Transformation::look_at()Irene Knapp
now we have real camera behavior. yay! Force-Push: yes Change-Id: I291d0cce0f2624e9bff8356c8dbe2aabc49599e2
2026-07-15add an fps counterIrene Knapp
Force-Push: yes Change-Id: I66313a981a19ca65fa68463e89e093da14fde41e
2026-07-15it spins!!!!Irene Knapp
ahem. more formally: provide animated uniforms to the shader, and use them the tutorial just wants us to do three matrices, and to defer all the actual math to a library it recommends. that would certainly be simpler. anyway, we use quaterion+offset for everything but the projection frustum, and do all the math ourselves Change-Id: I399f432bebb1e7ca4d4342efa1d5aaf37b32f427 Force-Push: yes
2026-07-11use an index buffer now, and draw two trianglesIrene Knapp
Force-Push: yes Change-Id: I2c58bad402908fa36caf271da3cae78e43ef3110
2026-07-11don't rely on having shared memoryIrene Knapp
this uses a staging buffer and a final buffer, per the tutorial. it also uses a new command pool for purely transient command buffers, which the tutorial mentions as a possibility but doesn't detail. Force-Push: yes Change-Id: Ic74c89045869bcc7bd0313aa162c87536fb561fc
2026-07-11abstract buffer managementIrene Knapp
Force-Push: yes Change-Id: I3276e65f2ef29199b57a748a321998747b607b22
2026-07-09allocate and use a vertex bufferIrene Knapp
kinda cool how the driver interfaces with the kernel to map memory on our behalf Force-Push: yes Change-Id: I906f68b59dcedc1fd6d9bfc52c9b299abc9cd828
2026-07-09don't draw when minimized (nice and easy)Irene Knapp
Force-Push: yes Change-Id: I11c96044372dbc9fb10ad5af5d22e72a42080ca7
2026-07-09okay, reinitializing for window changes works nowIrene Knapp
yay Force-Push: yes Change-Id: Id8dce4cd4bc696be322fe5b612837e3651437f7e
2026-07-09make most of the associated functions into file-level functionsIrene Knapp
now that the two halves of the graphics state are in their own files, this is easier to read the public functions remain as part of the impl Force-Push: yes Change-Id: Ic7d73be04f31b484348bbc5d62cc93f0c877717c
2026-07-09move all the window dressing stuff into its own fileIrene Knapp
Force-Push: yes Change-Id: Ib2db6c2af91698678c99969f575636abb4215b54
2026-07-09move all the PermanentGraphicsState stuff into its own fileIrene Knapp
Force-Push: yes Change-Id: I3600d1588ce7251b91e33a8956d89357fadda013
2026-07-09move all the permanent graphics state init into the implIrene Knapp
Force-Push: yes Change-Id: I09cbc3c2e1e20beba0cf64d346222e3dc2d680ea
2026-07-09move all the window dressing init logic into impl WindowDressingIrene Knapp
Force-Push: yes Change-Id: Icd63ed890ae0c726b71bb85e02072faff32cb87e
2026-07-09move the details of dropping WindowDressing into a new functionIrene Knapp
this will help with the re-creation thing Force-Push: yes Change-Id: I74d70c7dd1d11ade0d1d4cf0a0e20da45b76e942
2026-07-09move all the window dressing initialization into its own functionIrene Knapp
Force-Push: yes Change-Id: I6968fd0332a86e595d2d6983c02c761e51300e9b
2026-07-09new Permanent structIrene Knapp
almost everything in Surreality that isn't in WindowDressing is now in Permanent Force-Push: yes Change-Id: I994427668030ed2ebf5f159fa4d5d665ca07b372
2026-07-09roll init_surface() into init()Irene Knapp
Force-Push: yes Change-Id: I563da2752169ed5a6d6c6e0e712823222dcf850d
2026-07-09combine init_vulkan_entry and init_vulkan_instance into init_vulkanIrene Knapp
yay Force-Push: yes Change-Id: I65bef1f64c8e1eaef0897d9a01a2bf09cdef47f1
2026-07-09only compute queue family indices onceIrene Knapp
as a now-removed comment said, doing this repeatedly was always sus Force-Push: yes Change-Id: I419683cc979147aff1790a75aa03509b23ae561e
2026-07-09removed all the bundled-up return-value structsIrene Knapp
they are replaced with tuples and single-purpose bool wrappers Force-Push: yes Change-Id: Iabf9c1d3f9dddee160d556004b2a72b15cd6e574
2026-07-09slightly change how SwapchainFeatures is usedIrene Knapp
the goal is to make clear that it's a single-purpose value-return struct Force-Push: yes Change-Id: Idf3a3ebce2d44ea4fa2c75073e33b34c9055ca8b
2026-07-09move a lot of stuff into a new struct WindowDressingIrene Knapp
this is to group things with related lifecycles together Force-Push: yes Change-Id: If4ee44715900f3379f6589ac1e90afe62e6a2328
2026-07-08simplify drop()Irene Knapp
Force-Push: yes Change-Id: I52cf7db5a61899c54ceecd0f86acbef13474d929
2026-07-07reorganize init logic for clear lifecyclesIrene Knapp
yeahhhhhh, it wasn't viable to do this while following that part of the tutorial, but it was always gonna be needed anyway, now all the various pieces of initialization are associated functions instead of methods, which makes it dramatically easier to see what the data dependencies are Change-Id: Ie63272945430e27d1026ad3cb724d8ac2d2f6047 Force-Push: yes of course
2026-07-07fix string lifetime issueIrene Knapp
yeahhhhhhhhhh Force-Push: yes Change-Id: I30a7cc5bd35d22beb81c7bef8013b636e74ee5e2
2026-07-06add a build.rs that calls glslangIrene Knapp
Force-Push: yes Change-Id: I5a565f3ad343a36ffe17436b337f524805d072f7
2026-07-06render a few frames at onceIrene Knapp
Force-Push: yes Change-Id: Ibf09815b6d64c80242d623a1a5f387d6e7166f67
2026-07-05TRIANGLEIrene Knapp
Force-Push: yes Change-Id: I3e3aa50c5de4b2ccb0719663e029aadb3056dc70
2026-07-05successfully instantiate the render pipelineIrene Knapp
in the words of the tutorial, "We are already getting quite close to seeing something pop up on the screen"..... it took THREE DAYS. encouragement is great and all, but perhaps don't trivialize that effort Force-Push: yes Change-Id: Icf7fd651dbf12cae0320f98d1622fad5fcd3fd0d
2026-07-04load compiled SPIR-V bytecode (yay)Irene Knapp
no way to build it except by hand, as-yet. the tutorial doesn't cover that, we'll need to circle back and write a build.rs Force-Push: yes Change-Id: I2b489381f95b4b7505862caa236dea1c60cd9c1a
2026-07-04create swapchain images and image viewsIrene Knapp
Force-Push: yes Change-Id: If540bc5a398ff2b26e706b0c4fe85de4bb932232
2026-07-04create a swapchain (when supported)Irene Knapp
lots of decisions about modes in here, which will have far-reaching effects Force-Push: yes Change-Id: Ia73ccbd0bce8933970d7379acc09d5865dc4c2b5
2026-07-04add a Vulkan surface, and a presentation queue pointing to itIrene Knapp
the unique queue family index thing here is suggested by the kyelmayes tutorial Force-Push: yes Change-Id: Ib03700d2c77016293934eec5e2c37ec157906ebb