49d35cab5b660948225c840ab676c383e790fa88
Add a World that stores chunks in a Dictionary keyed by chunk coordinate, with floor-division world<->chunk coordinate mapping (correct for negative coords). The mesher takes an optional neighbor sampler so faces at chunk borders are culled against adjacent chunks instead of always meshing the shell. Render one ChunkRenderer per chunk, placed via the model matrix. Reorganize the World layer into Blocks/ and Chunk/ sub-namespaces.
VoxelEngine
A learning voxel engine written in C# (.NET 10) on top of OpenTK 4 / OpenGL 3.3.
Status
Early baseline. The current goal is rendering a single face-culled, textured 16×16×16 chunk that you can fly around with a free camera — the structural core the rest of the engine builds on.
Tech stack
- .NET 10 / C#
- OpenTK 4.9.4 — windowing, OpenGL bindings, and math
- StbImageSharp — texture (PNG) loading
Build & run
Requires the .NET 10 SDK.
dotnet run --project VoxelEngine.csproj
Once the baseline is running: WASD to move, mouse to look, Esc to quit.
Project layout
Core/ game window + loop
Rendering/ shader, texture, camera, chunk renderer (OpenGL)
World/ block model, registry, chunk, mesher (no OpenGL)
Assets/ shaders + texture atlas
The World/ layer is intentionally free of any OpenGL dependency so the voxel logic can
be unit-tested headless.
Roadmap
- Baseline: window, fly-camera, one face-culled textured chunk
- Procedural terrain (noise)
- Multiple chunks + frustum culling
- Player controller + AABB collision
- Block break / place
- Lighting
Description
Languages
C#
97.9%
GLSL
2.1%