Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 30 Jun 20:49
· 5 commits to develop since this release

A large release: a data-driven node registry, a unified properties/settings UI, a feature-macro library for common landforms, a new differential-erosion node, surface-detail normals, and editor/export parity work.

Node graph and registry:

  • Node types are now a single data-driven registry -- ports, parameters, palette entry, canvas colour, and source-node validation all derive from one descriptor per node, replacing the hand-maintained executor.rs match and scattered metadata.
  • Node parameters can be driven by graph connections (scalar parameter ports).
  • New Differential Erosion node: wears soft rock down while hard strata and slope-protected faces stand proud, forming mesas, benches, and stratified walls. Distinct from hydraulic erosion, which follows water flow and carves valleys.
  • New interactive Curve node editor for value remapping.
  • New Channel Split / Channel Merge for splitting a colour buffer into R/G/B/A heightmaps and recombining them; added coast-erosion and lightmap-bake compute operations.

Properties and settings:

  • Every settings modal and node-property panel now renders through one shared field renderer -- consistent rows, sliders that update live while dragging plus an editable value box, a reset-to-default control, and whole-row hover tooltips.
  • Settings modals gain a search filter and a Common/Advanced split so the fields most maps actually tune are up front and the rest stay one toggle away.
  • Node-property sliders show the registry default as a tick and a reset control; parameter descriptions surface as row tooltips.
  • Fixed-width label column and panel width so rows stay aligned instead of drifting as the panel settles.
  • Action-bar modals close on Escape; section help shows on hover instead of a separate info icon.

Feature-macro library:

  • Replaced the old biome macros with a data-driven feature-macro library of standalone landform generators (butte, mesa, plateau, basin, crater, chokepoint, land bridge, river, stream, canyon, island, ridge, and more), each with placement and configuration knobs.
  • River, stream, and canyon channels meander; islands get irregular coastlines; primitive features use irregular hand-drawn geometry rather than perfect shapes.
  • Path and area features seed editable splines so the initial shape can be drawn by hand.

Terrain and erosion:

  • Hydraulic erosion intensity is now resolution-independent (droplet count scales with grid area), so the low-res preview matches the full-res export instead of eroding far harder.
  • AutoTexture water bands and the CoastErosion shoreline anchor to the map's actual sea level.
  • Mirror symmetry seams are feathered to remove the hard copy line.
  • Reconciled hydraulic erosion defaults and dropped a dead method parameter.

Surface detail and normals:

  • Procedural tileable detail-normal generator with a detailNormalTex picker in the resources panel; presets render as a relief thumbnail gallery and are generated off the UI thread.
  • Surface Detail points at the splat-normal system; detailNormalTex is baked from the heightmap at export when left unset; the redundant heightmap-derived NormalMap node is gone.

Lava and water:

  • Lava is detected and emitted via mapconfig/lava.lua instead of being inferred from water damage.
  • Water damage is authorable, so caustic water can be set up.

Editor/export parity and CLI:

  • GPU-dispatched nodes now match the CPU export exactly; CPU and GPU noise generation are unified.
  • bar-cli: heightmap export command, a --gpu flag, full project validation in validate, and strict heightmap output in compile/export.

World Machine import tooling:

  • World Machine .tmd import-evaluation tooling with gap reports, plus link-topology and faithful-translation probes.

Node canvas:

  • New and imported nodes size to their port count, so a node is never created shorter than the height it could be manually resized down to.

Validation:

  • FinalComposition requires a texture input; full project validation runs in the CLI.

Bug fixes:

  • Slider handles stay clear of their neighbours at the value extremes.
  • Whole-row hover tooltips no longer cover the field controls they describe.
  • Default field values render in the normal text colour instead of a muted placeholder.
  • Identity modal labels are corrected and fields fill the row.