Commit graph

153 commits

Author SHA1 Message Date
Serkyo fd6ec10ce5 fix(renderer): recreate swapchain on resize and out-of-date present 2026-07-16 02:54:23 +02:00
Serkyo 2bf140cf02 feat(client): stream local chunk meshes around camera 2026-07-16 02:24:27 +02:00
Serkyo 60fe2fc294 feat(client): upload origin chunk via renderer insert_mesh 2026-07-16 00:05:30 +02:00
Serkyo dd8a969828 feat(renderer): render keyed collection of chunk meshes with per-chunk offset 2026-07-16 00:05:30 +02:00
Serkyo bb33247f96 chore(net): modified doc comments 2026-07-15 18:48:21 +02:00
Serkyo 7620c3b54e feat(client): connect to server and complete handshake 2026-07-14 01:38:58 +02:00
Serkyo e941415836 feat(server): accept QUIC client connections 2026-07-14 01:38:58 +02:00
Serkyo e9d6854e7a feat(net): add threaded tokio runtime bridge for connections 2026-07-14 01:38:50 +02:00
Serkyo 30a45f1c41 docs(net): trim handshake pack-validation TODO comment 2026-07-14 01:18:53 +02:00
Serkyo 7b3908dd7f test(workspace): relocate all tests into per-crate src/tests via #[path] 2026-07-14 00:42:42 +02:00
Serkyo 8e7cd15085 feat(net): perform synvael handshake and graceful disconnect 2026-07-13 23:40:53 +02:00
Serkyo 092d546c52 docs(workspace): standardize function doc sections and enforce # Errors 2026-07-13 21:09:27 +02:00
Serkyo c6d8d1bd70 refactor(net): move NetError into its own error module 2026-07-13 19:56:19 +02:00
Serkyo aa9dc18efe feat(net): add QUIC endpoints with synvael ALPN and self-signed TLS 2026-07-13 14:26:19 +02:00
Serkyo f83a0f1232 chore(shared): add reasons to expect attributes 2026-07-13 00:39:49 +02:00
Serkyo 343ea7605b chore(server): add reasons to expect attributes 2026-07-13 00:39:49 +02:00
Serkyo 6b3ae06031 chore(renderer): add reasons to expect attributes 2026-07-13 00:39:49 +02:00
Serkyo 8a5c662e10 chore(client): add reasons to expect attributes 2026-07-13 00:39:49 +02:00
Serkyo f7e986cb24 feat(net): add length-prefixed postcard frame codec 2026-07-13 00:27:51 +02:00
Serkyo 339c0efe5a feat(shared): support server-pushed resource packs 2026-07-12 16:01:39 +02:00
Serkyo 41ba2e5d5c feat(shared): add network control-protocol message types 2026-07-12 13:33:36 +02:00
Serkyo ae33251c70 Merge branch 'dev' into feat/networking-foundation
# Conflicts:
#	Cargo.lock
2026-07-12 01:04:16 +02:00
Serkyo fef3d1d549 chore(net): removed redundant licence-file 2026-07-12 01:02:33 +02:00
Serkyo eb696385b4 Merge branch 'dev' of github.com:Cryoforge-Nexus/Synvael into dev 2026-07-12 00:48:03 +02:00
Serkyo 81c578ad0a chore(workspace): removed redundant license-file 2026-07-12 00:46:25 +02:00
Serkyo eefc9a2a5a docs(workspace): unwrap pre-wrapped module doc comments 2026-07-12 00:41:34 +02:00
Serkyo 2891ff1feb refactor(workspace): centralize serde/postcard/thiserror pins and use concise dep inheritance 2026-07-12 00:41:34 +02:00
Serkyo f0d2269e8f chore(workspace): scaffold net crate for QUIC transport 2026-07-12 00:28:45 +02:00
Serkyo 82cb8513be chore(workspace): inherit license-file and normalize package key order 2026-07-11 23:52:20 +02:00
Serkyo 8a0a28765c chore(server): changed test import to be generic 2026-07-11 22:47:20 +02:00
Serkyo c54eeb2216 feat(server): add dirty-chunk write-back on unload 2026-07-11 21:44:35 +02:00
Serkyo 0fedd1b30b chore(workspace): refactored the way some comments were written across the repository 2026-07-10 17:38:07 +02:00
Serkyo 955d62bfcf feat(server): add LRU chunk cache 2026-07-10 13:23:58 +02:00
Serkyo e0dfcde529 feat(server): add chunk loading pipeline 2026-07-10 13:01:21 +02:00
Serkyo fa99b6dcea docs(server): note whole-file rewrite deviation from save spec 2026-07-10 01:15:44 +02:00
Serkyo 085f496898 chore(workspace): removed leftover mod.rs files 2026-07-10 00:26:59 +02:00
Serkyo 54d2f522cc refactor(server): migrate mod.rs modules to path-style files 2026-07-09 19:47:00 +02:00
Serkyo b6687dc82b refactor(shared): migrate mod.rs modules to path-style files 2026-07-09 19:47:00 +02:00
Serkyo 1db124e63b feat(server): add atomic region-file durability layer 2026-07-09 15:14:24 +02:00
Serkyo a4f2bb32bc style(shared): apply rustfmt to save module 2026-07-09 15:00:28 +02:00
Serkyo 8c8c70e990 fix(shared): correct SYNR framing order and widen worldgen version 2026-07-09 14:59:18 +02:00
Serkyo de6f7dd722 feat(shared): add SYNR region index framing 2026-07-09 00:20:34 +02:00
Serkyo b676755633 feat(shared): add SYNC per-chunk record encoding 2026-07-08 16:21:54 +02:00
Serkyo 7ce3bb8577 refactor(server): propagate config-load errors via anyhow 2026-07-08 15:14:45 +02:00
Serkyo e940cf560e chore(workspace): centralize shared deps and unify glam to 0.33 2026-07-08 15:05:55 +02:00
Serkyo 9a3224d102 feat(shared): add sparse baseline-relative ChunkData 2026-07-08 14:16:02 +02:00
Serkyo b196dc3152 refactor(shared): split world module into per-concept files 2026-07-08 02:37:19 +02:00
Serkyo 3a3ecc13e2 feat(shared): add palette-compressed chunk representation 2026-07-08 02:16:18 +02:00
Serkyo 12390d3008 refactor(server): drop unused synchronous get_chunk path 2026-07-07 22:47:07 +02:00
Serkyo ca39d36a81 feat(server): gate startup on initial region streaming 2026-07-07 22:29:50 +02:00
Serkyo 19fdec44d1 test(server): cover async reconcile convergence and eviction race 2026-07-07 22:27:00 +02:00
Serkyo 9001cc6f98 feat(server): generate chunks on worker pool 2026-07-07 22:21:32 +02:00
Serkyo 44511cde75 feat(server): stream chunks around a player entity via ECS 2026-07-07 18:53:24 +02:00
Serkyo 9b4cfccd43 refactor(server): pass EntityPos to load_around 2026-07-07 18:14:52 +02:00
Serkyo bf55c91e91 feat(shared): derive serde on EntityPos 2026-07-07 18:14:52 +02:00
Serkyo d0ddc31801 feat(shared): add EntityPos split-coordinate entity position 2026-07-07 18:07:15 +02:00
Serkyo 3b802a542f perf(server): parallelize chunk generation in load_around 2026-07-07 17:17:54 +02:00
Serkyo 6bd8e5d3ba feat(server): generate a cylinder of chunks around a center point 2026-07-07 01:47:46 +02:00
Serkyo 8045c3cae3 refactor(workspace): use #[expect] over #[allow] for lint suppressions 2026-07-07 01:28:56 +02:00
Serkyo d3c75a4454 feat(shared): add ChunkPos::from_world world-to-chunk conversion 2026-07-07 01:17:35 +02:00
Serkyo ea6fbf1624 feat(client): add free-fly camera with wasd and mouse-look 2026-07-06 00:20:57 +02:00
Serkyo 102c75a514 refactor(workspace): rename project codename from Catalyst to Synvael 2026-06-27 22:57:08 +02:00
Serkyo cd7ab3a3c5 chore(workspace): add SPDX identifiers to source files 2026-05-17 21:06:39 +02:00
Serkyo de17b143db chore(workspace): declare license metadata in Cargo.toml 2026-05-17 21:06:13 +02:00
Serkyo 928f0103a4 docs(renderer): collapse multi-line comments and note construction leak 2026-05-16 20:30:01 +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 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 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 fd5d5e4e4b chore(workspace): configure linters and format codebase 2026-05-12 11:43:17 +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 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 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
Serkyo 83dde5a794 feat(renderer): enable vulkan validation layers in debug builds
Configured InstanceCreateInfo to request the VK_LAYER_KHRONOS_validation layer and the VK_EXT_debug_utils extension when compiling in debug mode. This lays the foundation for wiring Vulkan debug callbacks to tracing.
2026-04-30 11:33:07 +02:00
Serkyo 9ceefc6654 feat(client): initialize renderer and extract vulkan extensions
Added ash-window dependency to bridge winit and Vulkan. Extracted raw display handle in the event loop and queried required Vulkan extensions to pass down to the renderer initialization.
2026-04-30 01:38:24 +02:00
Serkyo d60ccd7918 feat(renderer): implement base Vulkan instance initialization
Added ash and thiserror dependencies to the renderer crate. Defined RendererError for typed Vulkan failure handling. Implemented the Renderer struct with basic Vulkan Entry and Instance creation.
2026-04-30 01:29:04 +02:00