2c95c7831a
feat: weight vertical distance in chunk-load priority
...
Adds Configuration.VerticalPriorityWeight (default 4). The priority
formula in ChunkStreamer.RecomputeTargetSet now uses
dx^2 + dz^2 + dy^2 * VerticalPriorityWeight, so horizontal chunks at
the player's Y are dispatched before equally-distant chunks above or
below. Fixes janky loading where deep-underground chunks were
competing with surface chunks for early dispatch slots.
2026-06-01 13:41:55 +02:00
4fe552b8bd
refactor: early-return in Shader.Location uniform cache lookup
2026-06-01 13:38:54 +02:00
8423b73dfd
chore: tighten Configuration defaults for memory and CPU
...
RenderDistanceVertical 4 -> 2 (smaller vertical load box) and
WorkerThreadCount ProcessorCount-1 -> ProcessorCount/2 (less
aggressive worker pool).
2026-06-01 13:38:53 +02:00
34f923cbca
refactor: store-owned diff snapshot and drop dead ChunkJob.ExistingChunk
...
TryGetDiff now returns an independent copy so callers can safely retain the
reference; removes the defensive copy from ChunkStreamer.DispatchLoad.
ChunkJob.ExistingChunk was never populated (DispatchRemesh uses closures
instead), so the field is removed along with its misleading record-level
comment.
2026-06-01 13:31:05 +02:00
6b148362c0
test: end-to-end streaming + modification-store roundtrip
2026-06-01 13:24:20 +02:00
59466fb291
feat: wire infinite chunk streaming into Game with loading screen
2026-06-01 12:57:09 +02:00
4467a7bd10
feat: add LoadingScreen with full-screen triangle shader
2026-06-01 12:08:41 +02:00
85a345d6e7
feat: ChunkStreamer tracks failed chunks to prevent retry storms
2026-06-01 12:04:50 +02:00
da051ed413
feat: ChunkStreamer dirty set with cardinal-neighbor remesh on load
2026-06-01 11:46:33 +02:00
7d06706400
feat: ChunkStreamer unload path and SpawnReady property
2026-06-01 11:35:35 +02:00
c1f0928344
feat: ChunkStreamer load path with target-set, dispatch, and diff application
2026-06-01 11:19:06 +02:00
dc74fdadcc
feat: add streaming primitives (IChunkRenderer, IJobExecutor, NeighborSnapshots, ChunkJob)
2026-06-01 10:55:20 +02:00
39375b83ea
refactor: extract shared ChunkMath.FloorDiv helper
2026-06-01 10:45:58 +02:00
2afeee50d5
feat: add Player class wrapping Camera with chunk-coordinate accessor
2026-06-01 10:45:09 +02:00
6a68953c9a
feat: World.SetBlock writes through to IChunkModificationStore
2026-06-01 10:35:10 +02:00
7c310ebc6a
feat: add IChunkModificationStore and in-memory implementation
2026-06-01 10:16:46 +02:00
6f6fd7ecc5
fix: include SourceContext in console log output
2026-06-01 10:08:25 +02:00
67bff6031f
chore: gitignore runtime log directory
2026-06-01 09:41:35 +02:00
53d24f29ab
feat: add Serilog logging with daily-rolling file sink
2026-06-01 09:41:26 +02:00
1339bb45ec
feat: add Configuration class with user-tunable defaults
2026-06-01 09:34:40 +02:00
c1be0f75e5
feat: Random Seed toggle & removed unused atlas.png
2026-06-01 09:24:52 +02:00
MDietermann
a8e94a27b2
fix: Water TextureCoord mapping
2026-05-31 22:15:14 +02:00
MDietermann
f5787dc9cc
feat: generate procedural world on load via WorldGenerator
2026-05-31 22:11:27 +02:00
MDietermann
03cf0ceb07
feat: add WorldGenerator filling vertical chunk stacks
2026-05-31 22:08:41 +02:00
MDietermann
6196b38cc8
feat: add TerrainSampler with dense box-blur border smoothing
2026-05-31 22:06:30 +02:00
MDietermann
9880e4379c
feat: add BiomeMap with per-cell climate classification
2026-05-31 21:58:34 +02:00
MDietermann
589904beec
feat: add Plains/Desert/Mountains/Forest biomes and registry
2026-05-31 21:56:55 +02:00
MDietermann
294f3b82ef
feat: add WorldConstants, SurfacePalette and IBiome contract
2026-05-31 21:54:10 +02:00
MDietermann
d0707fde9d
feat: add deterministic VoronoiCells partition
2026-05-31 21:50:09 +02:00
MDietermann
44f53e8d50
feat: add seeded NoiseSource over FastNoiseLite
2026-05-31 21:46:53 +02:00
MDietermann
99b411bdbd
build: vendor FastNoiseLite, remove unused SimplexNoise package
2026-05-31 21:45:02 +02:00
MDietermann
c81cd3c561
feat: derive atlas tile size from loaded texture dimensions
2026-05-31 21:43:53 +02:00
MDietermann
50f2bc4221
fix: complete WaterBlock IBlock implementation and BlockIds list
2026-05-31 21:41:25 +02:00
MDietermann
af7a83300f
feat: 4x4 atlas with TileCoord-based UVs and grass faces
2026-05-31 21:39:42 +02:00
MDietermann
6eb17b6c5d
feat: make Sand/Snow opaque and register Sand/Snow/Water blocks
2026-05-31 21:38:11 +02:00
MDietermann
4e14786668
New Atlas + Texture Pipeline
2026-05-31 20:32:46 +02:00
MDietermann
ab8816e27c
feat: Updated Textures
2026-05-28 17:14:17 +02:00
MDietermann
c6916a6dd5
Update README.md
2026-05-28 13:35:31 +00:00
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
70c986529b
style: apply code-style cleanup (explicit types, this-qualification, switch expressions)
2026-05-28 13:29:13 +02:00
8e3195ca37
test: pin chunk mesher vertex layout with exact float count
2026-05-28 12:28:49 +02:00
177c47e8f8
feat: wire game window, render loop, and fly-camera input
2026-05-28 12:22:19 +02:00
7155ea7425
feat: add chunk renderer with interleaved vertex buffer
2026-05-28 12:16:09 +02:00
df22096548
feat: add texture loader and placeholder atlas
2026-05-28 12:14:11 +02:00
50bb77cb2d
feat: add shader pipeline and chunk GLSL shaders
2026-05-28 12:08:58 +02:00
d7ecf019cb
feat: add fly-camera with view/projection matrices
2026-05-28 12:04:30 +02:00
ecae0d4ce4
feat: add face-culled chunk mesher behind IChunkMesher
2026-05-28 12:00:26 +02:00
90be1035d4
feat: add Chunk as a dense 16-cubed id array
2026-05-28 11:56:49 +02:00
f4d3f9aab4
feat: add block model with IBlock flyweight and registry
2026-05-28 11:53:15 +02:00
17503820e6
fix: exclude nested test project from main project globs
2026-05-28 11:25:10 +02:00