Commit graph

62 commits

Author SHA1 Message Date
Serkyo 928f0103a4 docs(renderer): collapse multi-line comments and note construction leak 2026-05-16 20:30:01 +02:00
Serkyo 7399d554ec docs(workspace): require comments stay on one line when possible 2026-05-16 20:29:51 +02:00
Serkyo f968299f24 docs(workspace): clarify commit body policy 2026-05-16 19:45:53 +02:00
Serkyo f04912df70 fix(renderer): plug shader-module and stale-handle leaks
create_graphics_pipeline now destroys its shader modules on the error
path as well, and update_mesh nulls the buffer handles after destroying
them so a later Drop or retry cannot redestroy freed buffers.
2026-05-16 19:43:16 +02:00
Serkyo 4130ebf5f9 fix(client): drop renderer before window on shutdown
Reorder the fields of App so renderer is declared before window. Rust
drops struct fields in declaration order, and the renderer owns a
Vulkan surface tied to the window's display-server handle; tearing the
window down first leaves the surface dangling when Renderer::drop runs.
2026-05-16 19:28:54 +02:00
Serkyo 19f79080b1 fix(renderer): correct resource teardown ordering in Drop
Replace ptr::read-based field consumption with Option<T> + take() for
sync primitives, GPU allocations, and the allocator itself. The prior
pattern left bitwise-duplicated values in the original fields, so Rust's
automatic field drop after Drop::drop returned freed the same heap
buffers (Vec backings inside SyncPrimitives) and Allocations twice.

The allocator is now explicitly dropped before destroy_device so its
own Drop impl, which releases vk::DeviceMemory blocks, runs while the
logical device is still valid. Swapchain image views are also now
destroyed before the swapchain, as required by the Vulkan spec.
2026-05-16 19:28:47 +02:00
Serkyo 5659469e17 chore(workspace): fix formatting and clippy warnings 2026-05-16 19:05:53 +02:00
Serkyo 61a7fb0ed5 feat(client): implement face culling and voxel rendering 2026-05-16 19:04:27 +02:00
Serkyo 203cc2a671 feat(renderer): add dynamic mesh updates via buffer reallocation 2026-05-16 19:04:20 +02:00
Serkyo ab01c8a033 feat(server): implement authoritative chunk tracking 2026-05-16 19:04:08 +02:00
Serkyo 72b9c9e885 feat(assets): add default worldgen data pack 2026-05-16 19:03:39 +02:00
Serkyo 4724e91281 feat(shared): define base voxel world types and procedural generation 2026-05-16 19:03:29 +02:00
Serkyo 38077c980d feat(renderer): implement depth testing and indexed 3d rendering 2026-05-12 23:00:30 +02:00
Serkyo 32ef9ca4c6 chore(workspace): finalize clippy requirements and resolve all warnings 2026-05-12 19:03:39 +02:00
Serkyo 28a6b63611 docs(workspace): include Lua linting/formatting in agent guidelines 2026-05-12 18:57:47 +02:00
Serkyo d30834e14f chore(workspace): run cargo fmt 2026-05-12 18:53:56 +02:00
Serkyo 34f1a9d989 chore(workspace): enforce missing_docs and resolve all linting violations 2026-05-12 18:52:30 +02:00
Serkyo 6d4435f856
chore(workspace): Changed FUNDING.yml to target patreon 2026-05-12 17:20:02 +02:00
Serkyo 720f969a2c docs(workspace): add multi-part license with Cryoforge Nexus as author 2026-05-12 15:55:06 +02:00
Serkyo 527e4976e4 fix(workspace): remove std from selene to avoid feature errors 2026-05-12 12:30:52 +02:00
Serkyo 9eff8ffb78 fix(workspace): change selene standard library to lua52 2026-05-12 12:20:33 +02:00
Serkyo 9e81ebb1bf ci(workspace): use selene-light binary to disable roblox lints 2026-05-12 12:17:55 +02:00
Serkyo eeb4118041 fix(workspace): correct selene config rule variant to deny 2026-05-12 12:12:06 +02:00
Serkyo 51683c08ac ci(workspace): clean up lua CI logic and add placeholder scripts 2026-05-12 12:11:03 +02:00
Serkyo f974112d2b ci(workspace): add release workflow and fix lua CI scripts 2026-05-12 12:07:39 +02:00
Serkyo 3a6e51d017 docs(workspace): add branching strategy and CI guidelines 2026-05-12 11:47:04 +02:00
Serkyo fd5d5e4e4b chore(workspace): configure linters and format codebase 2026-05-12 11:43:17 +02:00
Serkyo f483d4b981
chore(workspace): update funding links in FUNDING.yml 2026-05-12 10:28:05 +02:00
Serkyo f989898a18 chore(workspace): add rtk rules for antigravity 2026-05-12 10:07:13 +02:00
Serkyo e6f8414817 feat(renderer): implement vertex buffer allocation and memory mapping 2026-05-11 00:04:42 +02:00
Serkyo 8af89292b6 feat(renderer): integrate graphics pipeline and initialize gpu allocator with centralized frames in flight 2026-05-10 22:56:14 +02:00
Serkyo c7fc5de690 docs(renderer): add detailed docstrings for all struct fields and logic 2026-05-10 22:16:53 +02:00
Serkyo cfb7b7c83c docs(workspace): update project rules for formal documentation and struct field docstrings 2026-05-10 22:04:23 +02:00
Serkyo 17d06a0423 feat(renderer): add pipeline module for graphics pipeline creation 2026-05-10 22:02:43 +02:00
Serkyo 560b1e4d0f feat(renderer): add mesh module with Vertex struct 2026-05-10 22:02:09 +02:00
Serkyo 5887b2a2a8 feat(assets): add cube vertex and fragment shaders 2026-05-10 22:00:40 +02:00
Serkyo 1c3eb69cbf fix(renderer): align synchronization with working save and force FIFO 2026-05-09 21:49:40 +02:00
Serkyo 3997fa5fd9 refactor(renderer): modularize crate and enable vulkan 1.3 features 2026-05-09 21:43:30 +02:00
Serkyo 1805ae6aa6 feat(renderer): implement robust synchronized render loop 2026-05-09 21:33:57 +02:00
Serkyo e005bf1c75 feat(renderer): create synchronization primitives 2026-05-09 21:03:34 +02:00
Serkyo d0fa203743 feat(renderer): create command pool and buffer 2026-05-09 17:35:09 +02:00
Serkyo 65b43651bb feat(renderer): create image views for swapchain images 2026-05-09 17:29:47 +02:00
Serkyo 636c44b29f fix(renderer): handle u32::MAX swapchain extent
Fixed a crash where the renderer would attempt to create a swapchain with u32::MAX dimensions when the OS didn't provide a preferred extent. Updated Renderer::new to accept window dimensions and use them as a fallback. Also renamed InstanceCreateFailed to VulkanError for better generality.
2026-04-30 15:17:38 +02:00
Serkyo 76450da41f feat(renderer): finalize swapchain initialization
Negotiated swapchain settings (format, present mode, extent), created the swapchain and its images, and ensured correct destruction order. Added comprehensive documentation for all new fields and methods.
2026-04-30 15:15:07 +02:00
Serkyo 5ee9fc1bd6 feat(renderer): implement surface creation and support checks
Created the OS surface and ensured that the selected GPU and queue family support presentation to that surface. Updated Drop to properly destroy the surface and improved documentation.
2026-04-30 14:56:45 +02:00
Serkyo 347f868af1 feat(renderer): update new() to accept window handles
Updated the Renderer constructor to accept RawDisplayHandle and RawWindowHandle, and updated the client to pass these handles during resumption. This is a prerequisite for surface creation.
2026-04-30 14:48:03 +02:00
Serkyo 70e08dd883 feat(renderer): implement Drop trait for resource cleanup
Ensured that the Logical Device, Debug Messenger, and Instance are destroyed in the correct reverse order when the Renderer is dropped. Added documentation for the cleanup process.
2026-04-30 14:26:18 +02:00
Serkyo 92764f6f2d feat(renderer): implement logical device creation
Created the logical device handle, enabled Vulkan 1.3 features (dynamic rendering, synchronization2), and retrieved the graphics queue. Added documentation for the new fields and helpers.
2026-04-30 14:19:16 +02:00
Serkyo 7034a24498 feat(renderer): implement physical device selection
Added logic to enumerate and score physical devices, preferring discrete GPUs. Added NoSuitableGpu error variant and documentation for the selection process.
2026-04-30 13:46:46 +02:00
Serkyo edcde4ffd1 feat(renderer): wire vulkan debug messenger to tracing
Implemented the Vulkan debug callback to intercept internal driver warnings and validation layer errors, converting them into tracing logs. Resolved unused assignment and unsafe pointer 2024 edition warnings. Added doc comments for the Renderer and its initialization logic.
2026-04-30 12:26:38 +02:00