Terrain and generation reference
Every control that shapes the heightmap: brushes, stamps, coastlines, sea level, the Generate modal, models and their ground sample distances.
This page lists every control that changes elevation, with its real default, its real range and the engine key it writes. Colour controls live in Colour and climate reference; this page stops at the point where the heightmap is final. For the workflow around these controls, read Painting terrain and Enhancing terrain.
How to read this page#
The Engine key column names the field the control writes. Three kinds appear:
- Wire params. Keys of
DEFAULT_PARAMSor of thePOST /api/worlds/{id}/generatebody. These reach the engine and are recorded in provenance. - Request fields. Keys of a one-shot request such as the coastline apply payload or the Deterrace run. They are not persisted as world settings.
- Client state. Brush geometry that never leaves the app's own interface layer; it is turned into painted texels locally and only the resulting heightmap goes to the engine. These are marked
client.
Ranges are the ones the control enforces. Where the API accepts a wider band than the slider offers, both are given. Every spatial figure is ground distance unless it says pixels.
Physical scale#
Scale is set once, in the setup wizard, and everything downstream is denominated against it. Changing it later means rebuilding the world.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Map width (km) (flat map) | extent_km[0] | 200 km | 1 to 100 000 km | Ground width of the single rectangle. Locked once a heightmap draft exists. |
| Equatorial circumference (km) (whole world) | extent_km[0] | 40 000 km | 1 to 100 000 km | Ground distance around the equator. Sets the scale every region inherits. |
| Planet radius (km) (whole world) | planet_radius_km | 6371 km | 1 to 100 000 km | Sphere radius used for the oblique Hammer projection each region is cut with. |
| Height at white (m) | peak_m | 4000 m | 1 to 100 000 m | Land elevation that pure white in your imported heightmap decodes to. |
A blank globe starts as a 4096 x 2048 equirectangular ocean planet with no continents and no seed.
Section geometry#
A region cut off the globe carries its own raster geometry. These are set in the region composer's Advanced controls.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Output long side | output_long_side | 2048 px | server accepts 32 to 8192 px | Pixel size of the longest edge of the new section's raster. |
| Overlap policy | overlap_ids handling | Allow overlap | Allow / Reject | Whether a selection that overlaps an existing region is refused. A rejection can be retried in place with Allow overlap. |
| Feather | margin_px | 32 px | fixed on this route | Extra margin carried around the drawn selection so edits at the edge have context. |
| Square crop | square_crop | off | fixed on this route | Regions keep the aspect of what you drew. |
section_service.MAX_EDGE refuses anything above 8192 with "output_long_side exceeds bounds". Confirm whether the field should be clamped to 8192 or the server limit raised.Two extents exist and they are not interchangeable. selection_extent_km is the great-circle span of what you drew. extent_km measures the persisted raster, which includes the feather, so it runs about 20 % larger on a region with the default 32 px margin and about 45 % larger on a globe-colour tile. The Regions list and the section footer both quote the selection.
Hard limits: a section crop may not exceed 8192 px on an edge or 32 megapixels in total, and a selection whose farthest vertex sits more than 100 degrees from its centre is refused as not representable as one local section.
Sea level#
Sea level is 0 m by definition. Land is positive, ocean is negative, and every section carries its own decode contract:
elev_m = brightness x scale_m - depth_m
The Sea level slider#
At the top of the Height brush group in Draw mode.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Sea level | terrainSeaLevelNorm (client, committed as a datum rebase) | 0.50 | 0 to 1, step 0.01 | Moves the waterline through the section's height range. The panel states that 0.50 is the current datum, and the preview updates live as you drag. |
At 0 or 1 the panel warns that the endpoint can leave an all-land or all-sea map with no usable coastline. Once a section has been through Generate, it also warns that moving sea level reclassifies land and ocean the model authored. Set sea level before you generate.
Sea level at import#
Authored once, in the wizard's Sea & terrain step, and written into the section's decode contract.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Waterline | sea_level_norm | the server's proposal, falling back to 0.5 | 0 to 1, step 0.005 | Brightness counted as sea level. 0 means black is sea level. |
| Deepest point (m) / Deepest point override (m) | floor_depth_m | 6000 m on an attached bathymetry map, otherwise inferred | 1 to 100 000 m | Metres the darkest ocean value decodes to. Not to be confused with the coastline tool's ocean_floor_depth_m below, which is a different control on a different job. |
| Ocean depth source | bathymetry_source | No depth in my maps (none/v1) | none/v1, heightmap/v1, uploaded-map/v1 | Where the bathymetry comes from: synthesized, read from the heightmap's own sub-waterline shades, or attached as a separate depth map. |
| Synthetic sea floor | synth_bathymetry | Auto | auto, on, off | Whether a shelf, slope and abyss are synthesized under a heightmap that carries no depth. Only shown for No depth in my maps. |
| Values already in metres | values_in_metres | false | true / false | EXR and DEM passthrough. When true, sea_level_m (default 0.0 m) states which metre value counts as sea level. |
With a normalised heightmap, the value above the waterline maps as (b - s) / (1 - s) x peak_m and below it as (b - s) / s x depth_m, so the two branches are continuous and b == sea_level_norm is exactly sea level. A heightmap that encodes elevation and bathymetry as one continuous ramp implies depth = peak x s / (1 - s), which is what the inferred depth reports. The waterline can also be read off a land mask or a Köppen climate map of the same size rather than off the heightmap. See Setting up a world.
Sea level during Generate#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| (fixed by the modal) | water_level_m | 0 m | any finite metre value over the API | Elevation the generator counts as sea level for the land/sea split, the water-tile skip and the land reconcile. |
Both generation paths anchor the datum to the input: the model authors detail, the input owns sea level.
The height brush#
Four brush modes share one group. Set height is the continuous brush; Stamp, Landmass and Coast are placement tools and are covered further down.
Size#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Size | radiusM (client) | 3 % of the section's short ground edge | min = larger of 50 m and 0.2 % of the extent; max = smaller of 500 km and 50 % of the extent | Brush radius in ground metres, on a log10 track. The readout is diameter. |
The bounds are per section, so the slider always spans something useful. The size is shared with the Biome brush. A section that records no ground scale sizes the brush in texels instead and says so in the panel; its physical size then differs between sections.
Strength, flow and edge#
The pair of sliders under Size swaps depending on whether the mode is relative or absolute.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Strength (Relative only) | strength (client) | 250 m | 10 to 2000 m, step 10 | Metres added or removed per stroke pass, or per second while you hold the brush still. |
| Flow (absolute modes) | flow (client) | 1.00 | 0.05 to 1, step 0.05 | Fraction of the way each dab moves the surface toward the target height. |
| Falloff (Relative only) | hardness (client) | 0.50 | 0 to 1, step 0.05 | Exponent of the dab profile. Higher is a sharper shoulder. |
| Edge hardness (absolute modes) | levelHardness (client) | 1.00 | 0 to 1, step 0.05 | Fraction of the radius that stays flat-topped. The readout appends · hard at 0.95 and above. |
| Lower (carve) (Relative only) | dir (client) | off (raise) | on / off | Flips the stroke from raise to carve. |
Set-height modes#
| Mode | What it does |
|---|---|
| Relative | Adds or subtracts around the current surface. |
| Set | Writes exactly the target height. |
| Raise to | Only lifts ground that sits below the target. |
| Lower to | Only drops ground that sits above the target. |
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Target height | targetM (client) | 0 m | the section's own span, widened to at least -6000 to +9000 m | The elevation the absolute modes write toward. Step 100 m. |
| Snap to levels | snapToLevels (client) | off | on / off | Snaps the target, and any eyedropper sample, to the nearest saved level. |
The floor and ceiling are the abyssal-plain reference the coastline tool uses and an above-Everest ceiling, so you can always paint outside the section's current range. When the target sits outside that range the panel warns that Apply changes will widen the span, and that the 16-bit height step grows with it.
The level palette#
Saved elevations that Deterrace later reads as its band centres. Add the current target with + Add current (n m); each saved level is a chip you can click to reuse or remove. [ and ] step the target through the palette in every mode except Relative. Alt-clicking the canvas samples the height under the cursor into the target.
Landform stamps#
One pointer-down places one landform. Dragging does not build it up. Each tile carries its own measured ground extent and relief, so placing one at 1x puts a real range down at the size that range actually is.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Scale (no jitter) | stampScale (client) | 1x | 0.1x to 10x, log10 track, step 0.01 | Multiplier on the tile's true ground size. The cap note reports the resulting span, and appends · true size within 2 % of 1x. |
| Scale (jitter on) | stampJitter.scaleMin/Max (client) | 0.65x to 1.5x | same track | The band each placement samples from. |
| Rotation (no jitter) | stampRotation (client) | 0 degrees | -180 to +180 degrees, step 0.01 rad | Heading of the placement. |
| Rotation (jitter on) | stampJitter.rotationMin/Max (client) | -180 to +180 degrees | same | The band each placement samples from. |
| Opacity | stampOpacity (client) | 1.00 | 0.05 to 1, step 0.05 | How strongly the stamp writes into the surface. |
| Blend | stampBlend (client) | Normal | Normal / Add / Max / Min | Max and Min keep the higher or lower of stamp and terrain, which is usually what you want for heights. |
| Keep out of open water | stampRespectWaterline (client) | on | on / off | Stops Add and Max growing land where the sea already is. |
Jitter#
| Control | Engine key | Default | What it does |
|---|---|---|---|
| Jitter, vary each stamp | stampJitter.on (client) | off | Turns the two Scale and Rotation sliders into ranges. |
| Vary example | stampJitter.example (client) | on | Each click drops a random landform from the open category. |
| Mirror flips | stampJitter.mirror (client) | on | Allows horizontal and vertical mirroring per placement. |
Categories are the tile bank's own feature classes: 1 Fold, 2 Block, 3 Rift, 4 Plateau, 5 Hills, 6 Volcanic, 7 Canyon, 8 Dunes, 9 Range, 10 Region. One is open at a time. The panel refuses to size a stamp on a section with no ground scale, and warns when the placement is wider than the section.
Landmass shapes#
A landmass placement writes no metres. It stages a land or sea decision, and the server turns the accumulated batch into terrain with a real continental margin. There is no cap on how many placements go into one coastline, which is what the panel means by PLACE AS MANY AS YOU LIKE.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Placing | op per dab | Add land | Add land / Remove land | Remove land erases with the same outlines, which is how a bay, a strait or a lagoon gets a real coastline instead of a circle. |
| Scale (no jitter) | landmassScale (client) | 1x | 0.2x to 200x, log10 track | Multiplier on the outline's measured true size. |
| Scale (jitter on) | landmassJitter.scaleMin/Max (client) | 0.75x to 1.35x | same track | The band each placement samples from. |
| Rotation | landmassRotation (client) | 0 degrees | -180 to +180 degrees | Heading. With jitter on this becomes a -180 to +180 degree range. |
| Jitter, vary each placement | landmassJitter.on (client) | off | on / off | As for stamps, with Vary example and Mirror flips on by default. |
Shapes are grouped by real size class: 1 Skerry (under 3 km across), 2 Islet (3 to 8 km), 3 Isle (8 to 20 km), 4 Island (20 to 50 km), 5 Large island (over 50 km). Above 5x the panel states plainly that the outline is no longer that island, it is that island's outline used as a continental silhouette. The shape stays plausible because coastlines repeat at every scale; the size is yours.
Coastline detail#
Shared with the Coast lasso: one settings object, one continental margin per section.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Reshape strength | fidelity (inverted: strength = 1 - fidelity) | 0.80 (fidelity 0.20) | 0 to 1, step 0.05 | How far the engine departs from the outline you stamped. Reads Faithful below 0.4, Balanced to 0.7, Bold above. |
| Roughness | coast_roughness | 2.0 | 0 to 3, step 0.1 | Amplitude of the re-injected coast detail. Rugged over relief, calm over flats. |
| Island density | island_density | 10 | 0 to 30, step 1 | How many offshore islets the refiner grows. |
The outline you place is smooth at its new size, so this band re-injects real coast detail at the right physical scale.
Sea floor#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Shelf depth | shelf_depth_m | 130 m | 20 to 400 m in the panel, API accepts up to 2000 m | Depth of the continental shelf outside the new coast. |
| Shelf width | shelf_width_km | 60 km | 5 to 200 km in the panel, API accepts up to 500 km | How far the shelf runs before the slope begins. |
| Ocean floor | ocean_floor_depth_m | 6000 m | 1000 to 11 000 m, step 250 | Abyssal-plain depth the slope descends to. |
The coast lasso#
Trace a loop and the coast inside it is redrawn. Nothing outside the loop changes, the preview is live, and Revert is available after you apply. The lasso previews from the applied terrain, so it refuses to run while you have unapplied strokes.
Coastline shape#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Reshape strength | fidelity (inverted) | 0.80 (fidelity 0.20) | 0 to 1, step 0.05 | Faithful keeps your painted waterline; Bold grows rias, bays and islets from it. |
| Roughness | coast_roughness | 2.0 | 0 to 3, step 0.1 | Amplitude of the injected detail. |
| Detail octaves | octaves | 4 | 1 to 8, step 1 | How many scales of coast detail are added. |
| Bay density | bay_density | 6 | 0 to 30, step 1 | How many bays are cut into the traced coast. |
| Island density | island_density | 10 | 0 to 30, step 1 | How many offshore islets are grown. |
Sea floor#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Shelf depth | shelf_depth_m | 130 m | 20 to 400 m | As above. |
| Shelf width | shelf_width_km | 60 km | 5 to 200 km | As above. |
| Ocean floor | ocean_floor_depth_m | 6000 m | 1000 to 11 000 m | As above. |
| Blend radius | blend_radius_km | 145 km | 20 to 300 km, step 5 | How far offshore the new margin blends into the existing sea floor. |
| Keep out of open water | coast_bathymetry | on | on / off | Whether the apply writes a real continental margin under the new coast. |
The lasso's preset differs from the landmass preset it inherits from: coast_bathymetry true, fidelity 0.2, coast_roughness 2.0, dejag_strength 12, octaves 4.
coast_bathymetry, which is the sea-floor switch, and the same label on the Stamp band writes stampRespectWaterline, which is a different thing. Confirm which label is wrong.Coastline settings with no control#
These ship at fixed values on every coastline apply. They are on the wire, so the API can set them.
| Engine key | Default | What it does |
|---|---|---|
land_threshold | 0.0 | Field value that counts as the land cut. |
dejag | corridor | De-jagging strategy. uniform and adaptive also exist. |
dejag_strength | 30.0 on a landmass apply, 12.0 on the lasso | How hard the traced outline is smoothed before detail is added. |
preserve_area | false | Keeps the land area constant across the refine. The Preserve land area toggle in the Generate modal sets this, along with zero island and bay density. |
island_km | auto: 2 % of the extent, clamped 8 to 300 km, then 70 % of that | Characteristic island size. |
bay_km | auto: 2 % of the extent, clamped 8 to 300 km | Characteristic bay size. |
coastal_plain_km | 15 km | Width of the flat coastal plain behind the new shore. |
slope_width_km | 85 km | Width of the continental slope between shelf and abyss. |
seed | 7 | Same seed, same coast. |
Deterrace#
Melts the risers of a contour-quantized heightmap into ramps while every pixel stays inside the elevation band it was drawn in. Land only: the sea floor is untouched.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Radius | sigma_px | 2.0 px | 0.5 to 8 px in the panel, API accepts 0.25 to 32 px | Smoothing radius in pixels of this section's grid. The panel converts it to metres for you. |
| Iterations | iters | 300 | 20 to 1000 in the panel, API accepts 1 to 5000 | How many relaxation passes run. |
| Stop once further passes can no longer change the result | auto_stop_eps | checked, sends 0.1 | on / off | Stops early once the largest per-pixel move of a pass falls below 0.1 m. |
| Level table | levels_m | detected from the section | at least one level, strictly increasing | One elevation per level. Each level's band runs up to the next level. Rows are editable and removable. |
| Max height | top entry of bands_m | one contour step above the top level, or the highest land seen | at or above the top level | The upper bound of the top level's band. Equal to the top level keeps the summit flat. |
The modal scores the section first and reports what share of land sits on a detected level. A low score discourages the run, it never blocks it. Running Deterrace invalidates a refined coastline, so refine the coast afterwards rather than before.
Terrain models#
The model is the scale contract. Its coarse cell is a fixed physical size, and the decoder super-resolves each cell to a fixed 256 x 256 block, so the cell size decides the feature scale of everything the model invents. Picking the wrong one gives you correct-looking terrain at the wrong scale.
| Model | Id | Coarse cell | Pixels per cell | Native ground sample distance |
|---|---|---|---|---|
| 90 m | xandergos/terrain-diffusion-90m | 23.0 km | 256 | 90 m/px, continental |
| 30 m | xandergos/terrain-diffusion-30m | 7.7 km | 256 | 30 m/px, playable |
| Base-lite | loresat/base-lite | 23.5904 km | 20 | about 1.18 km/px, continental |
90 m is the default and the recipe the reference world was generated with. Base-lite is our own whole-world model: it runs its own fixed recipe, bypasses the coarse grid the other two derive from your extent, and ignores precision, output resolution, SNR, rainfall and coastline settings.
The modal steers you between them:
- A 30 m run whose extent spans more than 128 coarse cells is flagged as beyond the continental threshold, with the note that 90 m matches the reference recipe at that size and keeps native output within reach of the combine ceiling.
- Base-lite below a 3000 km long edge is flagged because it invents roughly the 2.7 to 46 km band and adds nothing finer than about 2.4 km, so at that size the 90 m and 30 m models produce far more detail.
Which models appear depends on what is installed. The list is filtered to the server's allowed models, and base-lite additionally needs its runtime environment variables set.
The Generate modal#
Re-synthesizes the section's terrain at true physical scale, then colours it. Climate is inherited unchanged.
Model and precision#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Terrain model capability | model | the server's default, falling back to 90 m | the three models above | Sets the coarse cell, and therefore the feature scale. |
| Precision (hidden for Base-lite) | dtype | Half · bf16 | bf16, fp32 | Inference precision. Baked into the loaded pipeline, so the sidecar reloads when you change it. |
Output resolution#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Native output (uncapped) (hidden for Base-lite) | combine_res_cap and output_resolution | off | on / off | Off, the run targets the workspace Output selection. On, it assembles at the model's own 256 px per cell with no combine ceiling, which is the Blender Seamless reference behaviour. |
The modal states the resulting inference size, pixels per cell and approximate metres per pixel before you start. At or above a 4 GB estimated assembly it warns that the assembly canvas needs roughly that much system RAM while combining chunks, and that the final heightmap PNG will be similarly large.
Detail#
Three preset cards lead the section: Sketch (90 m, SNR 0.20, x1, the default), Faithful (30 m, SNR 0.05, x1) and Faithful, faster (90 m, SNR 0.05, x2). A preset sets model, SNR and feature scale together; moving any dial off a preset's exact values simply leaves the preset. The feature-scale slider shows the resulting effective cell size in km.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Elevation SNR (hidden for Base-lite) | snr_elev | 0.20 | 0.05 to 1.0, step 0.05 | Adherence to the terrain you painted, above the model's scale floor: the model follows your map above about 6 cells (roughly 138 km at 90 m or 46 km at 30 m, divided by the feature scale), sketches 1.5 to 6 cells, and invents everything finer at any SNR. Lower sticks closer above that limit. Do not read this as a quality dial and do not invert it. The default 0.20 keeps the inventive recipe that suits hand-drawn maps. When authored coastlines and shallows must survive a model-authored run, use 0.05: measured on a real continental section it roughly doubles shelf-bathymetry adherence and keeps authored water bodies recognisable, with no drowned-land penalty. |
| Feature scale (hidden for Base-lite) | feature_scale | ×1 | ×0.5 to ×4, step 0.25 | The grain of everything the model invents. The working grid is sized as if the section spanned its extent times this value: above ×1 landforms come finer and denser, below ×1 broader and more massive. The world's real size — and every kilometre-denominated system downstream — is untouched. Cost grows with the square of the value: ×4 is roughly 16× the generation time, and a large section can tip over the single-shot cap into the chunked path. |
| Seed | seed | 0 | 0 and up, step 1 | Same seed with the same conditioning gives identical terrain. |
Rainfall conditioning#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Off / Use rainfall (hidden for Base-lite) | use_rainfall | Use rainfall | on / off | Feeds the section's rainfall layer to the model's precipitation channel. Falls back to elevation-only conditioning when the section has no rainfall layer. |
| (fixed by the modal) | snr_precip | 0.20 | any finite value over the API | Adherence on the precipitation channel. Only meaningful when rainfall is on. |
| (fixed by the modal) | precip_max_mm | 3000 mm/yr | any finite value over the API | The millimetres per year that rainfall brightness 1.0 means. |
The physical scale comes from the rainfall layer's own recorded millimetres per year at white. Only a layer with no recorded scale is read at the 3000 mm/yr default, which silently mis-scales a map exported at any other range. That failure is invisible: you get a plausible-looking world conditioned at the wrong climate.
Coastline#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Model authors coastline | model_authors_coastline | on | on / off | On, bathymetry guides a model-authored shore and generated ocean fades back to the authored sea floor by 600 m depth. Off, the current land and sea boundary is preserved exactly. |
| Enhance coastline before generation | coastline_enhance | off, and disabled while Model authors coastline is on | on / off | Runs the coastline refiner as a pre-pass. Intended for terrain with no meaningful bathymetry. |
| Preserve land area | coastline_params.preserve_area | off | on / off | Only appears when the refiner is on and the model is not authoring the coast. Sends preserve_area: true with island and bay density at 0. |
The two are mutually exclusive by validation: asking for coastline enhancement while the model authors the coastline is a 422. On whole-world globe runs model_authors_coastline is forced off, because the open-ocean land-scatter regression is still open.
The fixed part of the recipe#
The modal pins these and states so: "Addon parity: 16-cell chunks, 3-cell overlap, de-block on, bathymetry on, deep-ocean skipping, 0 m water level, retained chunk tiles, and no relief-body remap." They are all on the wire, so the API can change them.
| Engine key | Default | What it does |
|---|---|---|
chunk_cells | 16 | Coarse cells per GPU read on a chunked run. Memory against batching; never affects terrain or seams. |
overlap_cells | 3 | Cross-fade margin between neighbouring reads. Turns the per-read DC step into an invisible gradient. 0 abuts hard. |
max_coarse_long | 64 | Single-shot ceiling on the coarse-cell long edge. Over the cap a section auto-routes to the chunked path rather than erroring. |
combine_res_cap | 32768 px, or 0 when Native output (uncapped) is on | Terrain combine ceiling. 0 means uncapped native. |
deblock_lowfreq_reconcile | true | Solves and blends the per-chunk DC offsets that would otherwise read as square blocks. Needs scipy. |
keep_individual_tiles | true | Retains each generated read region as a 16-bit PNG plus tiles_index.json, for diagnosis and A/B replay. |
skip_water_tiles | true | Skips chunks that sit entirely below the coastal fade. |
use_bathymetry | true | Composes the conditioning's ocean depth from the bathymetry crop. |
target_peak_m | 0.0 (auto) | 0 trusts the model's own metres: the land is matched to your map block by block (mean height) and the summits stay the model's. A positive value pins the land peak to it exactly. |
relief_body_match | false | See below. |
Two notes on use_bathymetry. Turning it off does not mean land-only or ocean-at-zero: it keeps a constant ocean floor at ocean_floor_depth_m (6000 m). The model was trained on real DEMs where the sea floor is negative metres, so an ocean at zero reads as flat coastal land and the model invents random coastal relief. A constant floor anchors the coastline in the conditioning itself. Second, conditioning is rebuilt from the authored land heightmap and bathymetry on every run, never from the previous generation's output, so a repeated Generate does not ratchet the sea level upward.
Relief matching#
Two post-processes exist that reshape the model's land body against your input. Both are off, both are reachable only through the API, and both exist for a specific defect.
| Engine key | Default | What it does |
|---|---|---|
relief_body_match | false | Lifts each block's land relief distribution toward the input's without moving the coast or the block peak. Aimed at the "flat land under sparse peaks" case, where block maxima already match but the between-peak body stays flat (measured 24 m of relief against the authored 47 m on a 4000 km section). The coastline and the block peak are fixed points of the remap, so it cannot move the shore or invent offshore land. The per-block exponent is clipped so it lifts and never flattens, and it is applied only where the input's body is higher than the model's. |
lowfreq_land_swap | false | Re-imposes the authored low band on land. Default off as a deliberate divergence from the add-on: measured on real runs it sank the model's healthy land body below sea level on low-lying worlds, drowning 30 to 32 % of authored land against 0.8 % without it. Kept as the rescue for a pathological global DC bias, nothing else. |
relief_body_match is not part of the reference recipe. Turn it on only when you have looked at a render and can name the flat interior it is meant to fix.
Grain rolloff#
Base-lite output carries a rising near-Nyquist tail that aliases into moiré under fractional zoom (measured at 18.7 times real terrain's power at 2 px). Every base-lite pass therefore runs a calibrated radial 13 x 13 FIR rolloff over the deviation from the guide, after stitching and after relief matching.
It is on by default, it is not exposed in the interface, and the server never passes the tool's --no-grain-rolloff flag. Because it filters the deviation and not the guide, authored detail survives untouched, and because the kernel is translation-invariant it is seam-safe across tiles. Content at 4 px and coarser is unaffected.
This applies to base-lite only. The 30 m and 90 m models do not run it.
Revert and snapshots#
Generate takes a snapshot of the hand-authored heightmap before the first run on a section, and Revert to authored heightmap in the modal footer restores it. Deterrace keeps its own snapshot, restored with Revert to previous heightmap. Both buttons appear only when a snapshot exists. A revert protects future generates; it does not undo a generate you have since built on.
Defaults worth leaving alone#
snr_elevat 0.20. Small values mean strong adherence to your terrain. Raising it loosens the model from what you painted, which is rarely what someone reaching for a "more detail" slider wants. 0.20 is the value the terrain-diffusion author recommends for imported heightmaps, and it is what the model's own CLI ships as its default. The one deliberate departure: drop to 0.05 for coastal fidelity when a model-authored run must respect authored shallows and island layouts.- The model choice. The coarse cell is a physical contract. A 30 m run on a continental extent produces mountains at the wrong size, and the result looks right until you measure it.
use_bathymetryon. Off means a constant 6000 m floor, and the constant floor is doing real work. Neither setting gives you an ocean at zero.relief_body_matchandlowfreq_land_swapoff. The second one drowns a third of the authored land on low-lying worlds. It exists to rescue a pathological run, and nothing else.- Sea level before Generate. Moving the waterline afterwards reclassifies land and ocean the model authored, and the editor says so.
- Grain rolloff on. Stripping it puts moiré into every base-lite world at viewer zoom. If the model is ever retrained the rolloff's calibration constants have to be re-measured against the new output, not just carried over.
precip_max_mmat 3000. It is only read when your rainfall layer records no scale of its own. Changing it to match a map that does record a scale changes nothing, and changing it blind mis-scales the climate conditioning invisibly.