Skip to content

Commit cd90495

Browse files
TMHSDigitalclaude
andcommitted
fix(showcase): river-delta-tile quality pass — smooth sea depth, readable bars, hedged fields
The blotchy "camo" sea floor was the dark studio reflected in glossy rippled water: roughness 0.07 -> 0.16-0.20 and a six-stop depth ramp (turquoise over sand to deep blue) with soft fading plumes. Water by the frame takes seabed colour without the rim, and lip faces above the sea use the plinth slate, removing the cyan seam and the white artifact. Bars are arrowhead islets, logs strand only on beaches, the weir gains wattle hurdles, fields are staggered drilled strips with hedgerows, and the plinth uses hex-island's stratified section. Measured: 140062 tris (band 138000-142500), outer Z 0.2948 m (re-declared to the new tallest poplar; tolerance unchanged), coplanar pairs 0. Default exit 0 on 5.2.1 LTS and 4.5.11 LTS; all 15 falsifiers on 5.2.1 exit their documented codes (9, 15-28). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 5a8a81f commit cd90495

6 files changed

Lines changed: 206 additions & 102 deletions

File tree

1.03 KB
Loading
4.75 KB
Loading

‎showcase/gallery.json‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,9 +1123,9 @@
11231123
"name": "river-delta-tile",
11241124
"dir": "showcase/river-delta-tile",
11251125
"category": "terrain",
1126-
"teaches": "A procedural strategy-game map tile of a river delta — a square 2.40 m on a side, low and flat, where a river comes in through the back edge and forks twice at the angle natural deltas grow toward into four distributaries, each child's width set by hydraulic geometry so the widths squared balance at every fork; its water falling along every channel and level with the sea through the backwater reach to every mouth; natural levees holding each channel over the marsh; a farmed upper plain in a patchwork of fields, a wild lower plain of marsh, salt marsh and mud with an oxbow lake and ponds; a lobed coast with tan silt plumes fanning into the sea and marsh-crowned bars off the mouths; reed beds, weeping willows and poplars, drift logs afloat and stranded, and a fisherman's stilt hut with its jetty, boat and fish weir — through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.",
1127-
"alt": "A square delta map tile: a river splitting twice into four channels across fields and marsh, tan silt plumes and sandy bars off the mouths, and a stilt hut by a jetty.",
1128-
"witnessesFix": "Recomputed: 140150 tris, seven materials with 53503 ground, 46711 water, 17418 reed, 986 timber, 646 bark, 5420 foliage and 9855 plinth faces, UVs in 0..1 with zero AABB overlap, outer AABB 2.400×2.400×0.296 m, zmin 0, hygiene 0 including zero coplanar cross-shell pairs, the water never rising along any of the four courses (largest step 2e-7 m over 2863 samples, max 1e-6), the children's wetted widths squared over the parent's 0.960, 1.008 and 0.991 at the three forks (band 0.88–1.12) and the forks opening 73.3°, 73.6° and 74.0° (band 58–82), every mouth's course wet all the way and ending 0.00004 m off the sea's level, every levee crest at least 0.0078 m over its channel and 0.0021 m over the marsh behind at 228 stations, all six islands' cores 0.0037–0.0050 m out of the water round them, the sea at 0.1500 m with a 0.0024 m ripple and the ponds flat, every water rim at least 0.0025 m under the ground, all 4351 reed blades 0.0036–0.0059 m in the ground, the floating logs and the boat 0.33–0.55 of their height under the water and the stranded logs sealed in every sector, all 28 stilts, jetty posts and stakes footed 0.0099–0.0155 m in the bed with their tops over the water, all 35 trunks 0.009–0.011 m in the ground, LOD ratios in band, eight-hull collider 174 tris, non-empty glTF. --skip-decimate exits 9; --stray-vert 15; --lift-z 16; --uphill-channel 17; --choke-branch 18; --splay-fork 19; --plug-mouth 20; --breach-levee 21; --drown-islet 22; --flat-sea 23; --short-sea 24; --float-reeds 25; --sink-logs 26; --lift-hut 27; --float-trees 28.",
1126+
"teaches": "A procedural strategy-game map tile of a river delta — a square 2.40 m on a side, low and flat, where a river comes in through the back edge and forks twice at the angle natural deltas grow toward into four distributaries, each child's width set by hydraulic geometry so the widths squared balance at every fork; its water falling along every channel and level with the sea through the backwater reach to every mouth; natural levees holding each channel over the marsh; a farmed upper plain in a hedged patchwork of staggered fields drilled in rows, a wild lower plain of marsh, salt marsh and mud with an oxbow lake and ponds; a lobed coast with soft tan silt plumes fading into a sea whose colour ramps smoothly with depth out to a slate quay wall, and arrowhead marsh-crowned bars off the mouths; reed beds, weeping willows and poplars, drift logs afloat and stranded up the beaches, and a fisherman's stilt hut with its jetty, boat and a V-shaped wattle fish weir — through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.",
1127+
"alt": "A square delta map tile: a river splitting twice into four channels across hedged patchwork fields and marsh, soft tan plumes in a turquoise-to-blue sea, sandy marsh-topped islets off the mouths, a stilt hut by a jetty and a V-shaped fish weir.",
1128+
"witnessesFix": "Recomputed: 140062 tris, seven materials with 52606 ground, 46595 water, 17414 reed, 998 timber, 646 bark, 5420 foliage and 10752 plinth faces, UVs in 0..1 with zero AABB overlap, outer AABB 2.400×2.400×0.295 m, zmin 0, hygiene 0 including zero coplanar cross-shell pairs, the water never rising along any of the four courses (largest step 2e-7 m over 2863 samples, max 1e-6), the children's wetted widths squared over the parent's 0.960, 1.008 and 0.991 at the three forks (band 0.88–1.12) and the forks opening 73.3°, 73.6° and 74.0° (band 58–82), every mouth's course wet all the way and ending at the sea's level, every levee crest at least 0.0078 m over its channel and 0.0021 m over the marsh behind at 228 stations, all six islands' cores 0.0040–0.0050 m out of the water round them, the sea at 0.1500 m with a 0.0024 m ripple and the ponds flat, every water rim at least 0.0025 m under the ground, all 4350 reed blades 0.0037–0.0059 m in the ground, the floating logs and the boat 0.33–0.55 of their height under the water and the stranded logs sealed in every sector, all 28 stilts, jetty posts and stakes footed 0.0099–0.0155 m in the bed with their tops over the water, all 35 trunks 0.009–0.011 m in the ground, LOD ratios in band, eight-hull collider 174 tris, non-empty glTF. --skip-decimate exits 9; --stray-vert 15; --lift-z 16; --uphill-channel 17; --choke-branch 18; --splay-fork 19; --plug-mouth 20; --breach-levee 21; --drown-islet 22; --flat-sea 23; --short-sea 24; --float-reeds 25; --sink-logs 26; --lift-hut 27; --float-trees 28.",
11291129
"hero": "docs/gallery/assets/river-delta-tile-hero.webp",
11301130
"preview": "showcase/river-delta-tile/preview.webp",
11311131
"tags": [

‎showcase/river-delta-tile/README.md‎

Lines changed: 47 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,37 @@ front. The sea fills the tile out to its rim on the front and both sides.
3333
channel's margin, sloping down into the floodbasin behind
3434
([Smith et al.](https://ftp.ems.psu.edu/pub/geosc/sling/PUBLICATIONS_SLINGERLAND/2001-2010/Smithetal2009.pdf)) —
3535
their crests a few millimetres over the water and over the marsh. The
36-
older upper plain behind stands 5 mm higher and is farmed in a patchwork
37-
of fields on a slanting grid, parted by dark dikes, given out field by
38-
field toward the lower plain. The lower plain is wild: marsh in drifts of
36+
older upper plain behind stands 5 mm higher and is farmed as a lowland
37+
patchwork looks from the air: strips of fields on a slanting grid, the
38+
field lines staggered and the widths uneven strip by strip, each field
39+
its own crop — wheat, young barley, ripe gold, stubble, fresh plough,
40+
fallow — drilled in rows along or across it, its tone drifting across
41+
it, and every field hedged with a gapped line of dark bushes; the fields
42+
give out one by one toward the lower plain. The lower plain is wild: marsh in drifts of
3943
rush, sedge and rusty patches, salt marsh near the sea, dark wet mud at
4044
every water's edge, an oxbow lake and two ponds in the floodbasins. The
4145
fan's coast is lobed out at each mouth and draws back along the flanks,
4246
so the sea wraps both sides.
43-
- **Bars and plumes.** Middle-ground bars stand off three mouths: sandy
44-
round their margins, their crowns grown over with marsh and reeds. Each
45-
mouth's silt fans out into the sea in a tan plume that swirls and fades
46-
into the turquoise shallows, which deepen to blue toward the front.
47+
- **Bars and plumes.** Middle-ground bars stand off three mouths, shaped as
48+
the Wax Lake and Mississippi mouth bars grow: an arrowhead blunt to the
49+
current, its flanks swept back downstream round the water it splits,
50+
sandy round its margin and on the shoal about it, its crown grown over
51+
with marsh and reeds. Each mouth's silt fans out into the sea in a soft
52+
tan plume that thins to a milky jade and fades into the turquoise
53+
shallows; the sea's colour is one smooth ramp of its depth over the bed,
54+
out to deep blue toward the front, and its sheen is kept soft so the
55+
swell does not mirror the dark studio back as blotches. The sea is
56+
calm in the lee of the bars. The frame's slate runs down into the sea
57+
as a quay wall, and the sea runs deep right up to it.
4758
- **Life on it.** Reed beds — dense clumps of 11 to 18 blades — fringe the
4859
lower channels, the shore, the marsh and the bars. Weeping willows, each a
4960
lofted bell of foliage with a ragged hem of shoots, stand on the levees
5061
and the upper plain, and a row of poplars lines the trunk's levee. Drift
51-
logs float in the sea and the river or lie stranded on the bars and the
52-
beaches. In the bay between the two middle mouths a fisherman's hut stands
62+
logs float in the sea and the river or lie stranded up the beaches. In the bay between the two middle mouths a fisherman's hut stands
5363
on six stilts at the end of a jetty, with a thatched roof, a dark doorway
54-
and a window, a boat moored beside it, and a fish weir of stakes in the
55-
shallows nearby.
64+
and a window, a boat moored beside it, and a fish weir nearby: a V of
65+
stakes with a wattle hurdle woven along each arm, one dark fence line
66+
out of the water.
5667

5768
Every seeded draw comes from `random.Random(SEED)` in `plan_scene()`, before
5869
anything is built: where each tree, reed clump, log and the hut stand and
@@ -68,8 +79,10 @@ lattice share no vertex and no plane.
6879

6980
Seven materials: delta ground (marsh, meadow, fields, mud, sand, seabed),
7081
water (sea, channels, plumes, ponds), reed (the reeds and the hut's thatch),
71-
timber (the hut, jetty, posts, stakes, logs and boat), bark, foliage
72-
(willows and poplars), tile plinth (the slate rim and the skirt's section).
82+
timber (the hut, jetty, posts, stakes, hurdles, logs and boat), bark,
83+
foliage (willows and poplars), tile plinth (the slate rim, its quay wall
84+
into the sea, and the skirt's section — a turf line over bedded silts and
85+
sands with a scatter of pebbles, as the terrain category's).
7386

7487
It asserts **budget conformance** of the generated result. It does not
7588
witness an API contract. "It rendered without error" is not a check.
@@ -93,21 +106,27 @@ export file.
93106

94107
| Axis | Declared | Measured (5.2.1) |
95108
| --- | --- | --- |
96-
| Base triangles | 138000–142500 | 140150 |
109+
| Base triangles | 138000–142500 | 140062 |
97110
| LOD1 ratio | 0.32–0.62 of base | 0.5000 |
98111
| LOD2 ratio | 0.10–0.35 of base | 0.2200 |
99-
| Materials | exactly 7 distinct; face floors ground ≥51900, water ≥45300, reed ≥16880, timber ≥955, bark ≥627, foliage ≥5257, plinth ≥9560 | 7 slots; 53503 / 46711 / 17418 / 986 / 646 / 5420 / 9855 |
112+
| Materials | exactly 7 distinct; face floors ground ≥51900, water ≥45300, reed ≥16880, timber ≥955, bark ≥627, foliage ≥5257, plinth ≥9560 | 7 slots; 52606 / 46595 / 17414 / 998 / 646 / 5420 / 10752 |
100113
| UVs | in `0..1`, AABB overlap ≤ 1e-5 | in range, overlap 0 |
101-
| Outer AABB | (2.4000, 2.4000, 0.2960) m ± 0.01 | (2.4000, 2.4000, 0.2960), zmin 0 |
114+
| Outer AABB | (2.4000, 2.4000, 0.2948) m ± 0.01 | (2.4000, 2.4000, 0.2948), zmin 0 |
102115
| Collider tris (eight hulls) | ≤ 360 | 174 |
103-
| Export | written, size > 0, removed after measuring | 14562248 bytes |
116+
| Export | written, size > 0, removed after measuring | 14545956 bytes |
104117

105118
DECIMATE COLLAPSE triangle counts are not identical across Blender
106119
series, so the LOD gate is a ratio band, not an exact count. Bake pixels
107120
are stochastic, so the bake gate is `has_data` plus operator `FINISHED`,
108121
not byte-identity. The plan is seeded and nothing else is random; two
109122
default runs print identical measurements.
110123

124+
The outer AABB's declared height is the tallest poplar's top. Moving the
125+
stranded logs off the bars and up the beaches changed how many draws the
126+
log loop takes, so the trees and reeds after it were drawn afresh; the
127+
declared height follows the new tallest tree (0.2960 to 0.2948 m) at the
128+
same ± 0.01 tolerance. No band was widened.
129+
111130
### Hygiene
112131

113132
Recomputed from the generated mesh, not asserted about the script.
@@ -140,15 +159,15 @@ and onto the ground, along and across the channels' courses.
140159
| Water falls: along every mouth's course from the back edge through its forks, the water's surface every 4 mm, the largest rise from one sample to the next | ≤ 1e-6 m | 2e-7 m over 2863 samples |
141160
| Width rule: at each fork, the wetted width across the parent 100 mm upstream and across each child 150 mm downstream, (sum of the children's widths squared) / the parent's squared | 0.88–1.12 | 0.960, 1.008, 0.991 |
142161
| Fork angle: the angle between the two children's courses, each found from the wetted span's middle at 70 and 190 mm | 58–82° | 73.3°, 73.6°, 74.0° |
143-
| Mouths reach the sea: along every course, water over the ground at every sample; the water at its end against the sea's level | no gap, ≥ 0.001 m deep; ≤ 0.002 m | no gap, 0.0034 m shallowest; −0.00004 m at all four |
162+
| Mouths reach the sea: along every course, water over the ground at every sample; the water at its end against the sea's level | no gap, ≥ 0.001 m deep; ≤ 0.002 m | no gap, 0.0034 m shallowest; 0.00000 m at all four |
144163
| Levees: every 25 mm along every channel, each bank's crest (the highest ground out to three crest-distances) over the water at the channel's middle, and over the marsh behind it | ≥ 0.004 m; ≥ 0.0018 m | 0.0078; 0.0021 (228 stations) |
145-
| Islands: the lowest ground over each island's core against the water round it — the sea for the three bars, the higher of the two channels either side for the three islands between forks | ≥ 0.0025 m | 0.0037–0.0050 |
146-
| Water level: the open sea's top, median and largest excursion; each pond's top | level 0.150 ± 0.0015 m; ripple 0.001–0.006 m; ponds flat within 0.0004 m | 0.15004; 0.00244; 0.0000 |
147-
| Water contained: the ground over every rim vertex and rim-edge midpoint of every water sheet (save the river's cut in the back edge) | ≥ 0.0015 m | 0.0025 over 2703 points; 19 at the cut |
148-
| Reeds rooted: every blade's foot (its bottom cap) under the ground | 0.002–0.030 m, 4351 blades | 0.0036–0.0059 |
149-
| Afloat: every floating log and the boat, the share of its height under the water; every stranded log sealed in the ground in each sector | 0.25–0.75; ≥ 0.0025 m | 0.33–0.55 (4); 0.0075–0.0095 (4) |
164+
| Islands: the lowest ground over each island's core against the water round it — the sea for the three bars, the higher of the two channels either side for the three islands between forks | ≥ 0.0025 m | 0.0040–0.0050 |
165+
| Water level: the open sea's top, median and largest excursion; each pond's top | level 0.150 ± 0.0015 m; ripple 0.001–0.006 m; ponds flat within 0.0004 m | 0.15000; 0.00240; 0.0000 |
166+
| Water contained: the ground over every rim vertex and rim-edge midpoint of every water sheet (save the river's cut in the back edge) | ≥ 0.0015 m | 0.0025 over 2719 points; 19 at the cut |
167+
| Reeds rooted: every blade's foot (its bottom cap) under the ground | 0.002–0.030 m, 4350 blades | 0.0037–0.0059 |
168+
| Afloat: every floating log and the boat, the share of its height under the water; every stranded log sealed in the ground in each sector | 0.25–0.75; ≥ 0.0025 m | 0.33–0.55 (4); 0.0070–0.0124 (4) |
150169
| Posts: every stilt, jetty post and weir stake, its foot under the bed and its top over the water | foot 0.004–0.050 m, top ≥ 0.003 m over | 0.0099–0.0155 (28); 0.0082 |
151-
| Trees rooted: every trunk's foot under the ground | 0.004–0.050 m, 35 trunks | 0.0094–0.0114 |
170+
| Trees rooted: every trunk's foot under the ground | 0.004–0.050 m, 35 trunks | 0.0094–0.0113 |
152171

153172
## Falsifiers
154173

@@ -165,10 +184,10 @@ exited its declared code.
165184
| `--splay-fork` | fork angle (one channel swung out 30° about its fork: 104.3°) | 19 |
166185
| `--plug-mouth` | mouths reach the sea (a mouth dammed 6 mm over its water: 5 dry samples along its course) | 20 |
167186
| `--breach-levee` | levees (a crevasse cut in one bank: a crest 0.0015 m under the water) | 21 |
168-
| `--drown-islet` | islands (one bar's crest lowered 10 mm: 0.0059 m under the sea) | 22 |
187+
| `--drown-islet` | islands (one bar's crest lowered 10 mm: 0.0055 m under the sea) | 22 |
169188
| `--flat-sea` | water level (the sheet laid flat: ripple 0.00000 m) | 23 |
170189
| `--short-sea` | water contained (the sheet's shoreward rim drawn 50 mm out to sea: −0.0020 m) | 24 |
171-
| `--float-reeds` | reeds rooted (every reed raised 30 mm: feet −0.0264 m) | 25 |
190+
| `--float-reeds` | reeds rooted (every reed raised 30 mm: feet −0.0263 m) | 25 |
172191
| `--sink-logs` | afloat (the floating logs and the boat sunk 30 mm: 2.7–3.2 of their height under) | 26 |
173192
| `--lift-hut` | posts (the hut, the jetty and the weir raised 30 mm: feet −0.0201 m) | 27 |
174193
| `--float-trees` | trees rooted (the willows raised 40 mm: feet −0.0306 m) | 28 |
@@ -211,8 +230,8 @@ fan out toward the camera, and the sea, the plumes and the bars lie in
211230
front. Seen from this high, the floor behind the tile is the backdrop, so
212231
the warm wedge drops its pool on the floor off to the left, where it
213232
reaches no water to glare off, rather than on the back wall. Framing
214-
measures fill x 0.700, y 0.878, margins left 0.181, right 0.119, bottom
215-
0.061, top 0.061; the asset-quality floors pass.
233+
measures fill x 0.700, y 0.872, margins left 0.181, right 0.119, bottom
234+
0.061, top 0.067; the asset-quality floors pass.
216235

217236
## Exit codes
218237

4.86 KB
Loading

0 commit comments

Comments
 (0)