hypermine
hypermine copied to clipboard
A hyperbolic voxel game
Fixes #41 (Although ambient occlusion won't be 100% accurate due to ignored edge ~and corner~ margins) Fixes #330 (Necessary to avoid noticeable z-fighting after this change) This PR ensures that...
Tracking minor cosmetic improvements enabled by recent changes to Rust: - [x] Replace `.iter().copied()` on arrays with `.into_iter()` - [x] Replace `lazy_static` with const logic where possible, and otherwise [`OnceLock`](std::sync::OnceLock)...
If a voxel in the chunk's margin is solid but is next to a void voxel in the chunk's interior, the surface extraction logic will produce a surface on a...
Chunk data sent to the GPU is wrapped in a one-voxel margin that should be, but is not currently, populated with the data from neighboring chunks. If supplied, this data...
When a client first connects, the graph is synchronized to them in full. Each timestep, newly introduced graph nodes from that step are broadcast to all clients. These sets can...
To help avoid mistakes and make code easier to read and write, we should consider creating types to enforce the various invariants Hyperbolic vectors can have, much like nalgebra's `Point`...
At sufficiently high elevations with respect to the ground plane, glitchy floating islands appear. This is likely due to exponential growth of the magnitude of the normal vector encoding the...
Replaces my previous pull request on the same subject
Currently, for each frame, for each chunk, we invoke `vkCmdUpdateBuffer` with the transform from that chunk to the local node. In a valley, this can add up to hundreds of...