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 <noreply@anthropic.com>
This commit is contained in:
parent
4aacfdabdd
commit
708b23d774
2
BUILD.md
2
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
|
phase3AfterMy 300 My drift before the "Start Phase 2.5?" prompt
|
||||||
phase3DtScale 0.2 hydrology timestep = cflDtMy()*this (finer = slower drift)
|
phase3DtScale 0.2 hydrology timestep = cflDtMy()*this (finer = slower drift)
|
||||||
rainfall 1.0 uniform precip per cell (drainage-area unit)
|
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)
|
riverIncision 0.02 K in stream-power incision K*Q^m*S^n*dt (raise = carve faster)
|
||||||
riverDischargeExp 0.5 m (discharge exponent)
|
riverDischargeExp 0.5 m (discharge exponent)
|
||||||
riverSlopeExp 1.0 n (slope exponent)
|
riverSlopeExp 1.0 n (slope exponent)
|
||||||
|
|||||||
@ -563,7 +563,7 @@ triangles (plates are fixed in phase 1).
|
|||||||
before the Phase-3 prompt; `phase3DtScale` (0.2) — Phase-3 timestep =
|
before the Phase-3 prompt; `phase3DtScale` (0.2) — Phase-3 timestep =
|
||||||
`cflDtMy()*this` (smaller = finer carving, slower drift per step); `rainfall`
|
`cflDtMy()*this` (smaller = finer carving, slower drift per step); `rainfall`
|
||||||
(1.0) — uniform precip per cell (drainage-area unit; orographic precip is a later
|
(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`
|
(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
|
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
|
for faster valley carving); `riverTransport` (0.1) — transport capacity
|
||||||
|
|||||||
@ -34,8 +34,9 @@ void Viewer::renderGlobe3D() {
|
|||||||
}
|
}
|
||||||
rlEnd();
|
rlEnd();
|
||||||
|
|
||||||
if (selectedCell >= 0) // detail patch
|
// (The clicked tile's high-res subgrid is shown in the right-side detail panel,
|
||||||
drawSubgrids(subgrids, visBase, elevExagg, planet.cfg.seaLevel, 0.0016f);
|
// 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())) {
|
if (showBorders && (!borders.empty() || !ridgeBorders.empty())) {
|
||||||
rlSetLineWidth(2.0f); rlBegin(RL_LINES);
|
rlSetLineWidth(2.0f); rlBegin(RL_LINES);
|
||||||
|
|||||||
@ -158,7 +158,8 @@ struct PlanetConfig {
|
|||||||
double phase3AfterMy = 300.0; // My of drift before the Phase-3 prompt
|
double phase3AfterMy = 300.0; // My of drift before the Phase-3 prompt
|
||||||
double phase3DtScale = 0.2; // Phase-3 timestep = cflDtMy() * this (finer)
|
double phase3DtScale = 0.2; // Phase-3 timestep = cflDtMy() * this (finer)
|
||||||
double rainfall = 1.0; // uniform precip per cell (drainage-area unit)
|
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 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 riverDischargeExp = 0.5; // m: discharge exponent in stream power
|
||||||
double riverSlopeExp = 1.0; // n: slope exponent in stream power
|
double riverSlopeExp = 1.0; // n: slope exponent in stream power
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user