MDietermann
9193df2710
style: drop redundant type qualifiers, use explicit types (IDE cleanup)
...
Pure formatting from the IDE's code cleanup: remove redundant ClassName./namespace qualifiers and replace var with explicit types. No behavior change.
2026-06-03 16:26:32 +02:00
MDietermann
102d8166aa
fix(streaming): load water-surface chunks over submerged columns
2026-06-03 14:50:52 +02:00
MDietermann
225c6f7253
feat(streaming): load full column bedrock->surface to fix terrain holes
2026-06-03 08:01:38 +02:00
MDietermann
cba6b8c761
feat(world-gen): move cave ceiling and dark bands to new sea level (256)
2026-06-03 07:53:34 +02:00
MDietermann
715444d10a
feat(world-gen): rescale biome relief and snow line for 512-tall world
2026-06-03 07:49:34 +02:00
MDietermann
3c7e7a46a3
feat(world-gen): scale world height 128->512 and sea level 64->256
2026-06-03 07:46:21 +02:00
MDietermann
2677b1b003
feat: New Textures for ores
2026-06-01 22:09:02 +02:00
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
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