Yellow seam where marsh meets dry savanna (dual-grid base bleeds through) #200

Closed
opened 2026-07-24 21:38:46 +02:00 by panda · 1 comment
Collaborator

Reported from the client: at the marsh / dry-savanna border a thin yellow line shows under the marsh.

Diagnosis

BiomeTransition.Order ranks marsh last, i.e. highest priority, and dry_grassland fourth. The dual-grid draw (GridRenderer.DrawDualTile) therefore takes the lowest-priority corner as the base full tile and paints each higher biome over it through a corner mask (DualGrid.MaskAtOrAbove). On a marsh/savanna edge that means:

  • base = dry savanna, drawn as a full diamond,
  • marsh painted over it with a 16-way corner mask.

Wherever the mask's coverage falls a pixel short of the diamond edge, the bright yellow base shows through beneath the dark marsh. The pairing is the worst case in the palette: savanna is the lightest ground, marsh the darkest, so any gap reads as a hard yellow line. (The masks already carry a ~2px expansion added when the original 1px seams were fixed in #162 — evidently not enough for this pair.)

Things to try

  • Widen the mask diamond expansion further and re-generate the 16 masks (scripts/genmasks.py), then re-bake.
  • Or draw the dominant corner biome as the base when three or four corners share it, so the mask only has to cover a minority edge.
  • Or pre-multiply/clamp the mask edge so its outermost ring is fully opaque rather than feathered.

Definition of Done (delta)

  • No light seam is visible along a marsh/dry-savanna border at 1:1 zoom, checked in-client on a fresh DB.
  • The other biome pairings are re-checked for regressions (the fix must not re-introduce the 1px seams of #162).

Related: #162 (dual-grid borders), #137.

Reported from the client: at the **marsh / dry-savanna** border a thin **yellow line shows under the marsh**. ## Diagnosis `BiomeTransition.Order` ranks `marsh` **last**, i.e. highest priority, and `dry_grassland` fourth. The dual-grid draw (`GridRenderer.DrawDualTile`) therefore takes the *lowest*-priority corner as the **base full tile** and paints each higher biome over it through a corner mask (`DualGrid.MaskAtOrAbove`). On a marsh/savanna edge that means: - base = **dry savanna**, drawn as a full diamond, - marsh painted over it with a 16-way corner mask. Wherever the mask's coverage falls a pixel short of the diamond edge, the bright yellow base shows through beneath the dark marsh. The pairing is the worst case in the palette: savanna is the lightest ground, marsh the darkest, so any gap reads as a hard yellow line. (The masks already carry a ~2px expansion added when the original 1px seams were fixed in #162 — evidently not enough for this pair.) ## Things to try - Widen the mask diamond expansion further and re-generate the 16 masks (`scripts/genmasks.py`), then re-bake. - Or draw the *dominant* corner biome as the base when three or four corners share it, so the mask only has to cover a minority edge. - Or pre-multiply/clamp the mask edge so its outermost ring is fully opaque rather than feathered. ## Definition of Done (delta) - No light seam is visible along a marsh/dry-savanna border at 1:1 zoom, checked in-client on a fresh DB. - The other biome pairings are re-checked for regressions (the fix must not re-introduce the 1px seams of #162). Related: #162 (dual-grid borders), #137.
Owner

Risolta da PR #202 (dc0b132): il seam giallo marsh/savanna è stato eliminato rendendo binario il bordo delle mask dual-grid (scripts/genmasks.py, SOFT 0.18→0.015) e correggendo il dimensionamento dell'overlap in pixel di tile. Chiudo — completata.

Risolta da **PR #202** (`dc0b132`): il seam giallo marsh/savanna è stato eliminato rendendo binario il bordo delle mask dual-grid (`scripts/genmasks.py`, `SOFT` 0.18→0.015) e correggendo il dimensionamento dell'overlap in pixel di tile. Chiudo — completata.
marco closed this issue 2026-07-25 19:06:15 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo#200
No description provided.