Commit Graph

71 Commits

Author SHA1 Message Date
MDietermann
94930faccb feat(rendering): frustum-cull chunk draws and log render counts 2026-06-01 20:14:03 +02:00
MDietermann
43527e617b feat(streaming): load surface shell + player slab instead of vertical box 2026-06-01 18:51:38 +02:00
MDietermann
9daa9f8267 feat(rendering): distance fog and config-derived far plane 2026-06-01 18:46:02 +02:00
MDietermann
89ac70f1ab feat(world-gen): add MinCaveY ceiling to CaveCarver 2026-06-01 18:42:29 +02:00
MDietermann
262933238c feat(rendering): add Frustum with AABB intersection test 2026-06-01 18:40:16 +02:00
MDietermann
6c808b507b feat(config): add visibility + MinCaveY fields and cave-gen docs 2026-06-01 18:38:30 +02:00
22531c6ee1 todo: added todos for new blocks 2026-06-01 15:50:32 +02:00
3704d7ce1e feat(core): wire fog-distance uniforms in Game render loop 2026-06-01 15:48:10 +02:00
aa1aa6fec6 feat(rendering): add fog-distance darkness to chunk shaders 2026-06-01 15:46:33 +02:00
2e36d40386 feat(rendering): add Shader.SetFloat uniform setter 2026-06-01 15:45:40 +02:00
9410fee78b feat(world-gen): integrate CaveCarver into WorldGenerator.Generate 2026-06-01 15:43:32 +02:00
645fd00868 feat: moved blockclasses into dedicated folder 2026-06-01 15:41:49 +02:00
15be8f6059 feat(world-gen): implement worm cave pass in CaveCarver 2026-06-01 15:36:34 +02:00
070bdfeac1 feat(world-gen): implement noise-threshold cave pass 2026-06-01 15:28:11 +02:00
093b3deabf feat(world-gen): add CaveCarver skeleton (no-op Carve) 2026-06-01 15:23:05 +02:00
013d524544 feat(world-gen): add WormHash deterministic mixing function 2026-06-01 15:20:09 +02:00
4587f81071 feat(blocks): add ore block scaffolding (Coal, Iron, Gold, Diamond) 2026-06-01 15:17:33 +02:00
8166c25ba6 feat(core): add cave-generation and fog tuning to Configuration 2026-06-01 15:14:22 +02:00
d1c8c22705 perf: skip renderer for chunks with empty mesh
Pure-air chunks (above terrain) and chunks where every face culls
produce a zero-length mesh from ChunkMesher.Build(). Previously
InstallResult still allocated a real ChunkRenderer (VBO + VAO) and
registered a zero-vertex draw call. With RenderDistanceVertical=2 and
a player at surface Y, the topmost vertical layer is typically all
pure air -- roughly H*H = ~289 wasted renderers per spawn.

The chunk still gets added to _ready so SpawnReady, dirty-marking and
unload bookkeeping continue to work; DrawAll's iteration over the
renderer dictionary naturally skips entries that don't exist.
2026-06-01 13:44:51 +02:00
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