MDietermann 49d35cab5b feat: add multi-chunk world with cross-chunk face culling
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.
2026-05-28 15:32:45 +02:00

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
No description provided
Readme 1.1 MiB
Languages
C# 97.9%
GLSL 2.1%