Sly 25.10.: „weich“ soll ein Textur-Verlauf am Pinselrand sein, nicht fleckig;
gerade Strichkanten wirkten weiter hart (1-m-Übergang).
- Format (optional, alte Karten gültig): materials_b_r8_b64 (zweites Material
je Punkt) + materials_w_r8_b64 (Anteil 0–255); ohne Mischung fallen die
Felder weg. V15 prüft Länge/IDs/Paarigkeit.
- TerrainField.apply_material_brush_mix: innen voll, außen Smoothstep-Anteil;
nur verstärken, nie abschwächen; Gras drübermalen mischt zurück.
- Shader: Top-2 aus 4 Nachbarpunkten × (a, b) mit Anteilen → nur noch 2
Albedo-Fetches; Warp bleibt.
- Pinsel/Live-Vorschau, Spiegeln, Symmetrie-Analyse/-Anwenden, Resize,
Anheben, Undo (terrain-Snapshot) tragen die Misch-Schicht mit.
- Streu-Rand (vorheriger Commit) entfernt.
- Tests: test_mal_fein 30/30 (Verlauf fällt weich, nie abschwächen,
zurückmischen, Kodierung), Editor-Suite unverändert grün bis auf die
bekannten Umgebungs-Tests; Kette Editor → Server → Client per
run_map_download_e2e 15/15 mit gemischter Karte.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sly: „feiner malen“. Die Material-Schicht bekommt ein eigenes Raster
(terrain.material_resolution, optional; Default = resolution → alte Karten
unverändert gültig): ~1 m pro Punkt, auf dem Höhenraster ausgerichtet,
max. 1025 (1024 m → 1025, 256 m → 257, 2048 m → 1025 = 2 m).
- SvmapIO: material_resolution / material_resolution_for / resample /
upgrade_material_layer / material_at_height_point; V15 prüft Raster + Länge.
- Neue Karten starten fein; beim Öffnen werden alte Karten optisch identisch
angehoben (Datei ändert sich erst beim Speichern); Resize rechnet die
Schicht auf ihrem eigenen Raster an der Weltposition um.
- Pinsel, Spiegeln (Symmetrie live + „Symmetrie anwenden“) und Live-Splat
arbeiten auf dem Material-Raster; Vertex-Farben lesen den passenden Punkt.
- Malen-Hinweis zeigt die echte feinste Einheit.
- Tests: test_mal_fein 22/22 (Raster, Anheben, 2-m-Pinsel ≈ 13 Punkte,
V15, Roundtrip, Resize); test_terrain/test_terrain_mirror/
test_symmetry_onclick auf das neue Raster nachgezogen; Identitäts-Runner OK.
Kette Editor → Server (Prüfsumme) → Client per run_map_download_e2e 15/15.
Format-Spiegel: Match-Server svmap_loader (V15) + Client svmap_terrain.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>