MDietermann 9c28bf152f perf(streaming): cache per-column surface heights to fix move lag spikes
RecomputeTargetSet sampled TerrainSampler.HeightAt (a 169-point biome
blend kernel) 5x per column over the whole render distance on the main
thread every chunk crossing (~1,445 calls = ~250k biome lookups), causing
multi-frame hitches while moving. Memoize each chunk column's (min,max)
surface range, reused across ticks and pruned to the horizontal window, so
each column is sampled once. Exact (no terrain change); spike is amortized
to a thin edge strip per crossing and zero when stationary.
2026-06-01 20:43:31 +02:00
2026-05-28 13:35:31 +00: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%