Commit graph

60 commits

Author SHA1 Message Date
Stephen Seo 88a4d3df13 Refactor helper::cleanup_func! macro 2024-03-20 19:13:16 +09:00
Stephen Seo 77f4a980b9 Rename project to "vulkan_rust" 2024-03-19 13:37:17 +09:00
Stephen Seo feaf876284 Version bump to 1.1.0 2024-03-19 13:31:36 +09:00
Stephen Seo 5d431081cf "Vertex Buffers: Index buffer"
TODO: "Uniform Buffers"
At this point, the project is growing beyond drawing a single triangle.
2024-03-19 13:30:21 +09:00
Stephen Seo 05cf805c03 Suppress some clippy warnings for ffi module
No need to heed clippy warnings on code automatically generated by
bindgen.
2024-03-18 16:37:40 +09:00
Stephen Seo 6e2e67f086 Refactor macro
More minor refactoring of macro introduced 3 commits ago.
2024-03-18 16:35:25 +09:00
Stephen Seo 6d3a07975d Minor refactoring of macro
Minor refactoring of macro introduced 2 commits ago.
2024-03-18 16:21:44 +09:00
Stephen Seo 60fc98f73b Refactor helper macro
Some cleanup of the helper macro introduced in the previous commit.
2024-03-18 16:16:52 +09:00
Stephen Seo 4f1638904c Use a macro to create cleanup struct helper 2024-03-18 15:04:02 +09:00
Stephen Seo f7f428aa28 "Vertex buffers: Staging buffer"
TODO: "Vertex buffers: Index buffer"
https://vulkan-tutorial.com/Vertex_buffers/Index_buffer
2024-03-18 12:29:32 +09:00
Stephen Seo 3e12361e85 "Staging buffer: Abstracting buffer creation"
TODO: "Staging buffer: Using a staging buffer" and etc.
https://vulkan-tutorial.com/Vertex_buffers/Staging_buffer
2024-03-18 12:03:04 +09:00
Stephen Seo 9b5a011afc Suppress clippy warning about wordy fn return type 2024-03-17 18:53:55 +09:00
Stephen Seo 25b80b0d6d Refactor: Fix minor clippy warning 2024-03-17 18:53:07 +09:00
Stephen Seo bf1fc24011 Refactor: Split init code into function
Previous implementation originally had "init_vulkan" initialization
struct creation seperated into a different function, but was merged into
"init_vulkan" due to memory issues. More specifically, the struct
creation function used pointers to local variables that were not used
until the function went out of scope, causing the local variables to be
cleaned up and leaving the pointers in the "struct info" struct invalid
when they were actually used in a `ffi::Vk...` call.

This refactoring ensures that pointers to variables created in the
mentioned function does not become invalid when the function ends by
stored the pointees in `Pin<Box<...>>` and returning them with the
"struct info" struct at the end of the mentioned function.
2024-03-17 18:46:01 +09:00
Stephen Seo c6ee60de02 Refactor: Define types used by Vertex 2024-03-15 17:19:55 +09:00
Stephen Seo 4c1da84490 Refactoring: Make some functions "const" in Vertex 2024-03-15 17:04:00 +09:00
Stephen Seo 17cb9ddbc4 Minor refactoring
Use "Vector" instead of "math3d::Vector" since it is included via `use`.
2024-03-15 15:58:45 +09:00
Stephen Seo 7ddc39b42d Suppress "dead_code" warning in math3d.rs 2024-03-15 15:52:18 +09:00
Stephen Seo 612f7dc8da WIP "Vertex buffers: Vertex buffer creation"
TODO: "Vertex buffers: Staging buffer"
https://vulkan-tutorial.com/Vertex_buffers/Staging_buffer
2024-03-15 15:51:23 +09:00
Stephen Seo 07b384a6c7 WIP "Vertex buffers: Vertex input description"
TODO: "Vertex buffer creation"
https://vulkan-tutorial.com/Vertex_buffers/Vertex_buffer_creation

Note that triangle drawing doesn't work at this stage.
2024-03-15 15:51:12 +09:00
Stephen Seo fa26784e01 Handle window minimization
Implemented as mentioned in the "Swap chain recreation" page in the
tutorial.
2024-03-14 13:19:28 +09:00
Stephen Seo f52c9029bc Handle resizing window
This recreates the swap-chain if the window is resized, as mentioned in
"Swap chain recreation".

(Note that the "Drawing: Frames in flight" step in the tutorial was
skipped.)
2024-03-14 13:15:12 +09:00
Stephen Seo e82aa002c4 Minor refactoring 2024-03-14 12:27:44 +09:00
Stephen Seo 511a5589db Change default presentation mode to "FIFO"
Resolves #1.
2024-03-14 12:23:44 +09:00
Stephen Seo 29c8a08720 Minor refactorings 2024-03-13 15:03:09 +09:00
Stephen Seo 3b9a9bcd37 WIP "Drawing: Rendering and presentation"
Note that at this point, a Triangle is now drawn to the window. However,
there are some chapters remaining in the tutorial for other details.

TODO: "Drawing: Frames in flight"
https://vulkan-tutorial.com/Drawing_a_triangle/Drawing/Frames_in_flight
2024-03-13 14:53:05 +09:00
Stephen Seo f46710337a Minor refactoring 2024-03-13 13:58:30 +09:00
Stephen Seo d9b1f1dbe8 WIP "Drawing: Command Buffers"
TODO: "Drawing: Rendering and presentation"
2024-03-13 13:55:57 +09:00
Stephen Seo 9651b338f3 WIP "Drawing: Framebuffers"
TODO: "Drawing: Command buffers"
https://vulkan-tutorial.com/Drawing_a_triangle/Drawing/Command_buffers
2024-03-13 13:17:51 +09:00
Stephen Seo fa9c52ac10 WIP "Graphics pipeline basics: Conclusion"
TODO "Drawing: Framebuffers"
https://vulkan-tutorial.com/Drawing_a_triangle/Drawing/Framebuffers
2024-03-13 13:03:24 +09:00
Stephen Seo 0ea1243ddc WIP: "Graphics pipeline basics: Render passes"
TODO: "Graphics pipeline basics: Conclusion"
https://vulkan-tutorial.com/Drawing_a_triangle/Graphics_pipeline_basics/Conclusion
2024-03-13 12:07:51 +09:00
Stephen Seo 1def795b77 Bugfix: Do not error on --release mode
Check for "validation layers" should not panic in `--release` mode
(which is enabled for debug mode).
2024-03-12 16:49:15 +09:00
Stephen Seo 6b3c83d913 Refactoring: Use more Result instead of panic 2024-03-12 16:45:33 +09:00
Stephen Seo 425a0ae501 WIP "Graphics pipeline basics: Fixed functions"
TODO: "Graphics pipeline basics: Render passes"
https://vulkan-tutorial.com/Drawing_a_triangle/Graphics_pipeline_basics/Render_passes
2024-03-12 15:40:40 +09:00
Stephen Seo 3aa79ef21a WIP: "Graphics pipeline basics: Shader modules"
TODO: "Graphics pipeline basics: Fixed functions"
https://vulkan-tutorial.com/Drawing_a_triangle/Graphics_pipeline_basics/Fixed_functions
2024-03-12 14:22:57 +09:00
Stephen Seo 41dbff12c3 Minor fixes/refactorings 2024-03-06 12:27:53 +09:00
Stephen Seo a576fe4188 WIP impl "Image views"
TODO: "Graphics pipeline basics: Introduction"
https://vulkan-tutorial.com/Drawing_a_triangle/Graphics_pipeline_basics/Introduction
2024-03-06 12:18:49 +09:00
Stephen Seo 87d2071d09 Minor fix/refactoring 2024-03-06 12:06:56 +09:00
Stephen Seo 73160af503 WIP impl "Retrieving the swap chain images"
TODO: "Image views"
https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Image_views
2024-03-06 11:58:52 +09:00
Stephen Seo 2b80642ae8 Minor fix/refactoring 2024-03-05 18:27:37 +09:00
Stephen Seo dd676d762e WIP impl create swap chain
TODO: "Retrieving the swap chain images"
https://vulkan-tutorial.com/en/Drawing_a_triangle/Presentation/Swap_chain#page_Creating-the-swap-chain
2024-03-05 18:02:49 +09:00
Stephen Seo c8289cc8dc WIP impl helpers for choosing swap chain settings
TODO: "Creating the swap chain"
https://vulkan-tutorial.com/en/Drawing_a_triangle/Presentation/Swap_chain
2024-03-05 17:39:59 +09:00
Stephen Seo cc275989b1 WIP impl "Querying details of swap chain support"
TODO: "Choosing the right settings for the swap chain"
https://vulkan-tutorial.com/en/Drawing_a_triangle/Presentation/Swap_chain
2024-03-05 17:21:28 +09:00
Stephen Seo 2d8ded2111 Move ffi module to separate file 2024-03-05 17:03:33 +09:00
Stephen Seo 66be063ce0 WIP impl "Enabling device extensions"
TODO: "Querying details of swap chain support"
https://vulkan-tutorial.com/en/Drawing_a_triangle/Presentation/Swap_chain
2024-03-05 17:01:57 +09:00
Stephen Seo d49b8acede WIP impl "Checking for swap chain support"
TODO: next is "Enabling device extensions"
https://vulkan-tutorial.com/en/Drawing_a_triangle/Presentation/Swap_chain
2024-03-05 16:56:17 +09:00
Stephen Seo 5e9b12a0a2 WIP setup "window surface", "presentation queue"
TODO: "swap chain"
https://vulkan-tutorial.com/en/Drawing_a_triangle/Presentation/Swap_chain
2024-03-05 16:27:01 +09:00
Stephen Seo 62c01acc7a WIP impl. create glfw window surface
Minor `cargo fmt` fix.

TODO: "Querying for presentation support"
https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Window_surface
2024-03-05 15:58:33 +09:00
Stephen Seo ac88544d2f WIP impl. "logical device and queues"
TODO: "Presentation: Window surface"
https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Window_surface
2024-03-05 15:50:32 +09:00
Stephen Seo 81ff94485f WIP: Split off "create instance" code into fn
TODO: "Logical device and queues"
https://vulkan-tutorial.com/Drawing_a_triangle/Setup/Logical_device_and_queues
2024-03-05 15:28:06 +09:00