From 708b23d77424ac520cca1cc07487e3a8ad51385f Mon Sep 17 00:00:00 2001 From: Jonas Reith Date: Sat, 27 Jun 2026 23:04:49 +0200 Subject: [PATCH] Show more rivers (riverThreshold 50->25) + remove globe subgrid overlay Two fixes from user feedback on the hydrology view: 1. Rivers looked too sparse. Investigated coupling rainfall into discharge (climate precip -> river rainfall): it does NOT work as hoped because river *location* is set by drainage topology (where water collects), not local rainfall -- weighting rainfall mostly changes river *size*, and concentrating a fixed water budget pushes mid-size rivers below the display threshold, so FEWER rivers show. Reverted that approach. Instead lower the default riverThreshold 50 -> 25 so tributaries render too: a richer, more visible network (~2x river cells on test worlds) without descending into noise. Tunable in planet.cfg. 2. Clicking a tile overlaid a low-res, always-elevation-coloured subgrid patch on the 3D globe that clashed with the active colour mode and read as a "strange pattern". Removed the globe overlay; the clicked tile's high-res subgrid still shows in the right-side detail panel. test_logic + test_biota pass; full app builds clean. Co-Authored-By: Claude Opus 4.8 --- BUILD.md | 2 +- CLAUDE.md | 2 +- src/render/ViewerRender.cpp | 5 +++-- src/sim/PlanetTypes.hpp | 3 ++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/BUILD.md b/BUILD.md index e025e85..e04b2b3 100644 --- a/BUILD.md +++ b/BUILD.md @@ -113,7 +113,7 @@ Drift keeps running at a finer timestep during hydrology. (Config keys keep the phase3AfterMy 300 My drift before the "Start Phase 2.5?" prompt phase3DtScale 0.2 hydrology timestep = cflDtMy()*this (finer = slower drift) rainfall 1.0 uniform precip per cell (drainage-area unit) - riverThreshold 50 discharge above which a cell is a river + riverThreshold 25 discharge above which a cell is a river (lower = richer network) riverIncision 0.02 K in stream-power incision K*Q^m*S^n*dt (raise = carve faster) riverDischargeExp 0.5 m (discharge exponent) riverSlopeExp 1.0 n (slope exponent) diff --git a/CLAUDE.md b/CLAUDE.md index c0c1ba6..a46184b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -563,7 +563,7 @@ triangles (plates are fixed in phase 1). before the Phase-3 prompt; `phase3DtScale` (0.2) — Phase-3 timestep = `cflDtMy()*this` (smaller = finer carving, slower drift per step); `rainfall` (1.0) — uniform precip per cell (drainage-area unit; orographic precip is a later - climate add-on); `riverThreshold` (50) — discharge above which a cell is a river + climate add-on); `riverThreshold` (25) — discharge above which a cell is a river (also the river-render threshold); `riverIncision` K (0.02) + `riverDischargeExp` m (0.5) + `riverSlopeExp` n (1.0) — stream-power incision `K*Q^m*S^n*dt` (raise K for faster valley carving); `riverTransport` (0.1) — transport capacity diff --git a/src/render/ViewerRender.cpp b/src/render/ViewerRender.cpp index 5931ad5..388076c 100644 --- a/src/render/ViewerRender.cpp +++ b/src/render/ViewerRender.cpp @@ -34,8 +34,9 @@ void Viewer::renderGlobe3D() { } rlEnd(); - if (selectedCell >= 0) // detail patch - drawSubgrids(subgrids, visBase, elevExagg, planet.cfg.seaLevel, 0.0016f); + // (The clicked tile's high-res subgrid is shown in the right-side detail panel, + // not overlaid on the globe -- the overlay was a low-res, always-elevation-coloured + // patch that clashed with the active colour mode and read as a "strange pattern".) if (showBorders && (!borders.empty() || !ridgeBorders.empty())) { rlSetLineWidth(2.0f); rlBegin(RL_LINES); diff --git a/src/sim/PlanetTypes.hpp b/src/sim/PlanetTypes.hpp index 5dd430d..2531c2f 100644 --- a/src/sim/PlanetTypes.hpp +++ b/src/sim/PlanetTypes.hpp @@ -158,7 +158,8 @@ struct PlanetConfig { double phase3AfterMy = 300.0; // My of drift before the Phase-3 prompt double phase3DtScale = 0.2; // Phase-3 timestep = cflDtMy() * this (finer) double rainfall = 1.0; // uniform precip per cell (drainage-area unit) - double riverThreshold = 50.0; // discharge above which a cell counts as a river + double riverThreshold = 25.0; // discharge above which a cell counts as a river + // (lower = richer network incl. tributaries shown) double riverIncision = 0.02; // K in stream-power incision K*Q^m*S^n*dt double riverDischargeExp = 0.5; // m: discharge exponent in stream power double riverSlopeExp = 1.0; // n: slope exponent in stream power