1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# Credits
| Kind | Who | Note |
|---|---|---|
| Author | godosa | |
| Libraries | see [licenses.md](licenses.md); three.js vendored | |
| Tooling | AI assistance (Claude, Anthropic) | engineering tool; statement in README |
## Models and sources
Methods taken from papers, textbooks or other projects (worldgen's own are in its CREDITS.md). Add a row in the same
commit as the code.
| Source | Used for | Module |
|---|---|---|
| H3 hexagonal grid (Uber, h3geo.org) | cells, refined areas, river level of detail | `refine.py`, `h3par.py`, `viewer/js/riverlod.js` |
| Equal Earth projection (Šavrič, Patterson & Jenny 2018) | flat map view | `viewer/js/geo.js` |
| Inigo Quilez, "Domain Warping" (iquilezles.org/articles/warp) | vegetation patch shapes in land colour | `tiles.py` |
| Holdridge 1947, Science 105 (life zones) | wooded share of open land by zone | `tiles.py` |
| Rune Skovbo Johansen, erosion filter and Phacelle noise (2025, runevision.com / blog and Shadertoy; slope-aligned stripes, octave by octave) | erosion gullies in the relief detail, done in 3-D on the sphere | `tiles.py` |
| Dave Hoskins, "Hash without Sine" (Shadertoy 4djSRW, MIT); value noise (Perlin 1985) | 3D fine grain below the map's resolution | `viewer/js/tilelayer.js` |
| Barnes, Lehman & Mulla 2014 (priority-flood + ε); Braun & Willett 2013 (stream-power incision) | refined areas, sea-floor canyons | `refine.py`, `seafloor.py` |
| Lindsay 2016, Hydrological Processes 30 (least-cost breaching of depressions; Dijkstra 1959) | a world lake's way out cut through a fine sill | `refine.py` |
| Pike 1964 (actual evapotranspiration); 6.5 °C/km lapse rate | refined areas' runoff and temperature | `refine.py` |
| Leopold & Maddock 1953, USGS Prof. Paper 252 (hydraulic geometry, width ∝ √Q) | river channel width | `rivers.py` |
| Strahler 1957 (stream order) | which rivers show at each zoom | `viewer/js/riverlod.js`, `overlays.js` |
|