Wasser-Tile hatte 2 dunkle Pixel: ein LEAVES-2x2-Block (Seed 333, Offset 15)
blutete 1px ueber die Tile-Grenze in die erste Wasser-Spalte. Fix: Dekor-
Offsets (LEAVES 2x2, STONE-Adern 2x1) auf TILE_PX-size begrenzen, so dass
keine Bloecke mehr ins Nachbar-Tile bluten. Verifiziert: 0 blutende Bloecke.
README: Steuerung aktualisiert (Shift = Sprint/Runter statt Ctrl) sowie
neue Grafik-Features (Schatten, baked AO, Post-Processing) und config.js
ergaenzt.
Co-Authored-By: Claude <noreply@anthropic.com>
Visuals:
- PCFSoftShadowMap (2048²), directional light follows player with a tight
shadow frustum (SHADOW_AREA) for high texel density; opak blocks cast+receive,
water receives.
- Baked vertex ambient occlusion ("smooth lighting"): per-vertex solid-neighbor
lookup (0fps algorithm) written into a color attribute, with flip-triangulation
to avoid brightness seams across quad diagonals.
- EffectComposer: RenderPass -> UnrealBloomPass (subtle) -> OutputPass with
ACES filmic tone-mapping + sRGB. HalfFloat render target (anti-banding) + MSAA.
Controls:
- Sprint moved from Ctrl to Shift (Ctrl is problematic in browsers). Shift in
fly mode still means "descend" (no conflict, sprint only applies when walking).
config.js:
- New central js/config.js for all tweakable values (world, performance,
renderer/tone-mapping, sky & fog, camera, lighting, shadows, bloom, AO,
player physics, mouse sensitivity, reach) with SHADOWS_ENABLED / BLOOM_ENABLED
feature toggles. Structural engine constants stay in constants.js.
- SEA_LEVEL / WORLD_SEED moved constants.js -> config.js (consumers rewired).
Co-Authored-By: Claude <noreply@anthropic.com>