Painting terrain
The Draw-mode paint surface in full: height and biome brushes, landform stamps, coastline tools, Deterrace, guides and undo.
Draw mode is where you block a section in. Everything here is live and cheap, runs on the CPU, and can be undone. What you paint is a guide the terrain model reads, so the useful question at every stroke is whether the model will keep what you drew or replace it. This page covers the whole paint surface and answers that question first.
What painting is for#
You author a rough shape. Generate keeps your coarse structure and your coastline and invents everything finer. Colour then follows from the finished heightfield, which is why rivers, snow and biome tone are not things you paint.
Three facts set the floor on detail.
The paint surface is capped at 1,024 px on its long edge. The server resamples the native heightfield down to that when you enter Draw mode. On a 4,000 km section one paint pixel is about 3.9 km of ground; on a 200 km focus area it is about 200 m.
Apply changes writes a difference. Dayside subtracts the baseline it served you from what you painted, upsamples only that difference to native, and adds it to the native heightmap. Untouched ground keeps its native detail exactly. Ground you painted keeps its native detail with your change laid over the top.
Generate resamples the section to a coarse grid. The cell is a fixed ground size per model: 23 km for the 90 m model, 7.7 km for the 30 m model, about 23.6 km for Base-lite. Anything finer than one coarse cell is averaged away before the model sees it.
What is worth painting#
- Where land is and where sea is.
- The footprint and rough height of a massif, a plateau, a basin, a rift.
- Continental shelf and deep sea floor. The model conditions on the signed map, so a flat ocean reads to it as a featureless floor and it will give you one back.
- Absolute plateau heights in metres, if you are building a contour-style section for Deterrace.
- Köppen climate, on the Biome layer. That layer is never touched by Generate.
What Enhance replaces#
- Individual ridge lines, spurs, cirques and valley detail. The model authors these.
- River channels. Rivers are routed from the finished heightfield at render time and drawn by catchment area. Carving one by hand does nothing useful.
- Erosion texture and small-scale roughness.
- Anything narrower than one coarse cell of the model you intend to run.
Two exceptions are worth knowing. The coastline tools write at native resolution, not through the 1,024 px surface, so a traced coast survives at full detail. And in the Generate dialog, turning Model authors coastline off preserves your land and sea boundary exactly.
Entering Draw mode#
Click Draw in the top bar, or the brush icon on the left rail (title Height brush (Draw mode)), which also selects the Height layer and the Draw tool in one action. The layers icon below it (Biome layer) does the same for the Biome layer.

The left rail carries three view tools that stay available while you paint: Inspect, Pan (drag canvas) and Fit. All rail buttons are disabled while a commit is in flight.
Canvas zoom runs 0.6 to 3.0 in steps of 0.25, with a zoom cluster bottom-right. Hold Space at any time for a temporary pan, the same override Photoshop, Krita and Figma use. The cursor becomes a grab hand and the brush ring is hidden. The override is released on key up, and also whenever the window loses focus or is hidden, so it cannot get stuck held down.
The Paint layer switch at the top of the Controls panel toggles Height and Biome. Brush size is shared between the two. Nothing else is.
Sea level#
The Sea level slider sits at the top of the Height brush group and moves the datum the whole section is measured against.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Sea level | terrainSeaLevelNorm | 0.5 | 0 to 1, step 0.01 | Sets the normalised waterline. The preview updates live; the value is committed on release, and 0.50 is the current height datum. |
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 you also get: Changing sea level after Generate reclassifies model-authored land and ocean. Prefer setting it before Generate. Take that seriously. Moving the datum re-reads which model-authored pixels are land.
Applying a sea-level change rebases the whole field and resets the slider to 0.50.
Brush modes#
Four tiles sit under the Brush mode group label on the Height layer. All four ship.
| Mode | Gesture | What it writes |
|---|---|---|
| Set height | Continuous brush | Metres, into the paint surface. |
| Stamp | One pointerdown, one landform | Metres, into the paint surface. Dragging does not build up. |
| Landmass | One click, one island outline | Nothing directly. It stages a land or sea decision that previews live and is written by the server at native resolution. |
| Coast | A lasso, traced and released | Nothing directly. It stages a region whose coastline is redrawn, previewed live and written at native resolution. |
Switching away from Coast or Landmass cancels any pending preview.
Shared brush controls#
These four sliders appear under the Shared band, and only in Set height mode. Stamp, Landmass and Coast have their own controls instead. Size is also mounted on the Biome layer.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Size | brush.radiusM | radius 20,000 m, or 3 % of the section's short ground edge | Per section: radius min is the larger of 50 m and 0.2 % of the extent; radius max is the smaller of 500 km and 50 % of the extent. Log scale, step 0.01 | Brush radius in metres of ground. The readout is the diameter, written ⌀ 40 km. |
| Strength | brush.strength | 250 m | 10 to 2000 m, step 10 | Relative mode only. Metres of elevation change per stroke pass at the brush centre. |
| Flow | brush.flow | 1 | 0.05 to 1, step 0.05 | Absolute modes only. How far each dab blends toward the target. 1 reaches it in one pass. |
| Falloff | brush.hardness | 0.5 | 0 to 1, step 0.05 | Relative mode only. Profile exponent of the dab. |
| Edge hardness | brush.levelHardness | 1 | 0 to 1, step 0.05 | Absolute modes only. Flat-top fraction of the radius. Reads · hard at 0.95 and above. |
The size range is fitted to the section, not to an absolute metre span, so the slider's travel stays useful on a 100 km focus area and on a whole continent. Until you move it yourself the brush defaults to 3 % of each new section's short edge. The moment you set a size it sticks, and moving to a section served at a different pitch keeps the same ground size.
On a section that records no ground scale the brush is sized in texels instead and the panel says so: THIS SECTION RECORDS NO GROUND SCALE, SO THE BRUSH IS SIZED IN TEXELS.
Falloff and Edge hardness are different quantities on purpose. Falloff shapes a soft additive dab. Edge hardness sets how much of the radius is a flat top, and it defaults hard because a soft skirt around a plateau writes a continuum of off-level elevations, which is exactly what Deterrace cannot read as a level.
The height brush#
Set height mode has four sub-modes under the Set height band, selected in the Height brush mode group.

| Segment | Hint on screen | Behaviour |
|---|---|---|
| Relative | RELATIVE adds or subtracts around the current surface. | Adds or carves metres around whatever is there. |
| Set | SET writes exactly the target height. | Writes the target. |
| Raise to | RAISE-TO only lifts ground below the target. | Never lowers. |
| Lower to | LOWER-TO only drops ground above the target. | Never lifts. |
Relative mode#
A Lower (carve) toggle flips the brush from raise to carve. Direction is not part of the mode.
Strength deposits over distance and over time. One dab lands per 0.45 of a radius travelled, and holding the tip still deposits at the slider's rate per second. Hold the brush in place to keep building a hill. A fast stroke keeps exactly the weight it had before the time term existed, because a frame that covers a full dab spacing is already paid for by the distance term and earns no dwell. A frame longer than 50 ms is clamped, so coming back to a window that was minimised cannot dump a kilometre of elevation under a stationary cursor.
The absolute modes#
Set, Raise to and Lower to all write toward a Target height.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Target height | brush.targetM | 0 m | The section's own span, widened to at least -6,000 to +9,000 m. Step 100 | The elevation the brush writes toward, in metres against sea level. |
| Snap to levels | snapToLevels | off | toggle | Snaps the eyedropper's sample to the nearest saved level. |
The target bounds are the section's current span, never narrower than the authoring envelope of -6,000 m to +9,000 m. A blank flat world publishes with a narrow symmetric span, which without that floor would put abyssal ocean out of reach. Targets beyond the current span are legitimate: Apply changes hands the server raw metres and re-derives the span. The cost is a coarser section-wide 16-bit height step. The panel says so when it applies, naming the section's current span and warning that Apply changes will widen it and that the 16-bit height step grows with the span.
Sampling a height#
Alt-click the canvas to sample the height under the cursor straight into Target height. With Snap to levels on, the sample lands on the nearest saved level. The eyedropper button beside the number field does the same for whatever the cursor is currently hovering; its title reads Use 1,240 m from under the cursor when a sample is available.
The level palette#
Under the Level palette band, + Add current (1,200 m) saves the current target as a level. Levels are stored ascending, rounded to the nearest metre, de-duplicated. Each is a chip you can click to reuse or remove with its X. [ and ] step the target down and up through the palette.
The palette is what Deterrace reads. Paint your plateaus at palette levels, then run Deterrace to melt the risers into ramps.
Stamps#
Stamp mode places measured real-world landforms. The pack holds 55 tiles at 512 px each, spanning 13.5 km to 6,500 km of ground across ten classes.
| Class | Count | Ground extent |
|---|---|---|
1 Fold | 5 | 57 to 134 km |
2 Block | 3 | 28 to 121 km |
3 Rift | 3 | 17 to 156 km |
4 Plateau | 3 | 31 to 147 km |
5 Hills | 3 | 25 to 32 km |
6 Volcanic | 5 | 14 to 39 km |
7 Canyon | 4 | 14 to 38 km |
8 Dunes | 3 | 36 to 74 km |
9 Range | 18 | 1,100 to 2,200 km |
10 Region | 8 | 3,800 to 6,500 km |
Range and Region are the large stamps, sized for whole-continent sections. At a 200 km focus area they will overrun, and the panel says so, quoting the placed span and telling you to scale it down or pick a smaller landform.
The category picker#
Classes are collapsible boxes with one open at a time. Each header shows a thumbnail, the class label and its tile count. Each tile shows a thumbnail, its class name and its true ground extent, with a title reading Rift · 156 km across · 1,850 m relief. Every tile is a 512 px raster, so a grid of unlabelled thumbnails would be misleading by an order of magnitude. The size is stated everywhere the tile appears.
With nothing selected, the panel tells you to pick a landform and click once on the canvas: one click, one mountain. The stamp does not build up as you drag.
Placement controls#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Scale | stampScale | 1× | 0.1× to 10×, log, step 0.01 | Multiplier on true ground size. The cap note under it reads the resulting ground span, and appends · true size within 2 % of 1×. |
| Rotation | stampRotation | 0° | -180° to 180°, step 0.01 rad | Heading. |
| Opacity | stampOpacity | 1 | 0.05 to 1, step 0.05 | Deposit strength. |
| Blend | stampBlend | 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 | on | toggle | Stops Add and Max growing land where the sea already is. |
Jitter and the ghost#
Jitter turns one selection into a scattered distribution. Its label reads vary each stamp. Two sub-toggles follow.
| Control | Engine key | Default | What it does |
|---|---|---|---|
| Jitter | stampJitter.on | off | Master switch. Off, every placement is the exact selection. |
| Vary example | stampJitter.example | on | Each click drops a random landform from the open class. |
| Mirror flips | stampJitter.mirror | on | Independent 50 % mirror on X and on Y. A reflection is not a rotation, so this gives variety no heading can. |
With jitter on, Scale and Rotation become range sliders and read as the ranges each placement samples from. Scale defaults to 0.65× to 1.5× and is sampled log-uniformly so the spread reads evenly against the log slider. Rotation defaults to the full -180° to 180°.
The ghost cursor shows the outline of the exact placement that will land, including the jittered tile, size, heading and mirror. It is resolved once per event that invalidates it: a placement landing, the jitter settings changing, the selection changing. It is never re-rolled on pointer move. An earlier build re-rolled while the mouse moved so the cursor visibly cycled, which made the ghost decoration rather than a promise, because the click drew its own independent sample. The outline itself is cut through the stamp value multiplied by its window, at two iso levels, so it never promises relief in the tile's corners that the brush will not lay down.
Landmass shapes#
Landmass mode places real Natural Earth island outlines as land or sea decisions. The library holds 5,090 outlines in five size bands.
| Class | Count | Size hint |
|---|---|---|
1 Skerry | 409 | under 3 km across |
2 Islet | 1,704 | 3 to 8 km |
3 Isle | 1,743 | 8 to 20 km |
4 Island | 1,018 | 20 to 50 km |
5 Large island | 216 | over 50 km |
A class of 1,700 outlines cannot mount 1,700 thumbnails, so the grid shows an evenly strided sample of 24 per class and says so under it: showing 24 of 1,743 real outlines. The stride matters. Outlines arrive sorted by ground extent, so taking the first 24 would show you only a class's smallest members. Jitter still draws from the whole class, and the footer says that too.
Placing#
The Landmass operation switch chooses Add land or Remove land. Remove erases with the same outlines, which is how a bay, a strait or a lagoon gets a real coastline instead of a circle.
Each click stages one placement. Place as many as you like; they make one coastline. The batch previews live on the map, and the status line reads 4 placed · 18,204 px would change · tune or apply.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Scale | landmassScale | 1× | 0.2× to 200×, log, step 0.01 | Multiplier on true measured ground size. |
| Rotation | landmassRotation | 0° | -180° to 180°, step 0.01 rad | Heading. |
| Jitter | landmassJitter.on | off | toggle | Label reads vary each placement. |
| Vary example | landmassJitter.example | on | toggle | Each click drops a different real island from the open class. |
| Mirror flips | landmassJitter.mirror | on | toggle | As for stamps. |
Jitter scale defaults to 0.75× to 1.35×, tighter than the stamp pack's spread, because Vary example is already drawing a different real island each click and a wide size range on top of that reads as noise.
Scaling past the real island#
The harvest caps at 1,500 km², so every outline is an island and nothing larger. Authoring a continent means scaling one up. Above 5× the panel says exactly what you have done: at that multiplier this is no longer a 21 km island, it is that island's outline used as a continental silhouette. Coastlines repeat at every scale, so the shape stays plausible; the size is yours and not Natural Earth's.
That is defensible. Coastlines are statistically self-similar, so a 21 km island's silhouette still behaves like a coast at 157 km. It is never implicit.
Coastline detail and sea floor#
Landmass shares one continental margin per section with the Coast lasso. Both bands write the same settings object.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Reshape strength | fidelity (inverted) | Bold (0.8) | 0 to 1, step 0.05 | Reads Faithful below 0.4, Balanced to 0.7, Bold at 0.7 and above. The outline you place is smooth at its new size; this re-injects real coast detail at the right physical scale. |
| Roughness | coast_roughness | 2.0 | 0 to 3, step 0.1 | Amplitude of that detail. |
| Island density | island_density | 10 | 0 to 30, step 1 | Offshore islets generated along the new coast. |
| Shelf depth | shelf_depth_m | 130 m | 20 to 400 m, step 10 | Depth of the continental shelf. |
| Shelf width | shelf_width_km | 60 km | 5 to 200 km, step 5 | How far the shelf runs before the slope. |
| Ocean floor | ocean_floor_depth_m | 6,000 m | 1,000 to 11,000 m, step 250 | Deepest sea floor. |
Bay and island feature sizes (bay_km, island_km) are auto-fitted to the section at 2 % of its extent, clamped 8 to 300 km, with islands at 70 % of that. They have no controls.
Applying#
Apply coastline writes a new heightmap at full resolution with a real sea floor. Undo last drops the most recent placement. Cancel discards the batch. A landmass previews from the applied terrain, so unapplied strokes block it. The panel says your painted changes are not applied yet, that a landmass previews from the applied terrain and would discard them, and tells you to use Apply changes first.
The coast lasso#
Coast selects a region. It is neither a brush nor a fill. Paint land with the height brushes, run Apply changes, then trace a loop around a stretch of coast. On release the coastline inside the loop is redrawn from the terrain you painted: rugged over relief, calm over flats, with a real continental margin. Nothing outside the loop changes.
Tracing does not commit. It stages the selection and the canvas shows a live, non-committed preview rendered by the server at the paint resolution. Every setting below re-previews, so you tune the coast on the map. The canvas badge reads Updating coastline… while the server works, then settles into a coastline-preview state inviting you to adjust or Apply, or reports that the preview failed and to adjust the settings. The panel reads Preview on the map · 24,110 px would change · tune or apply.
Apply coastline then commits it at native resolution and Cancel discards it. The same unapplied-paint guard applies: the lasso previews from committed terrain, so paint has to be applied first.
Coastline shape#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Reshape strength | fidelity (inverted) | Bold (0.8) | 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 detail are injected. |
| Bay density | bay_density | 6 | 0 to 30, step 1 | Inlets carved into the new coast. |
| Island density | island_density | 10 | 0 to 30, step 1 | Offshore islets. |
Sea floor#
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Shelf depth | shelf_depth_m | 130 m | 20 to 400 m, step 10 | Shelf depth, shown as a negative value. |
| Shelf width | shelf_width_km | 60 km | 5 to 200 km, step 5 | Shelf run before the slope. |
| Ocean floor | ocean_floor_depth_m | 6,000 m | 1,000 to 11,000 m, step 250 | Abyssal depth. |
| Blend radius | blend_radius_km | 145 km | 20 to 300 km, step 5 | How far the new margin blends into the surrounding sea floor. |
| Keep out of open water | coast_bathymetry | on | toggle | Gives the authored coastline a real continental margin in place of a flat 60 m ramp. |
coast_bathymetry, whose documented meaning is "give the authored coastline a real continental margin instead of the flat 60 m ramp". That reads like a label reused from the Stamp band's stampRespectWaterline toggle, which does something else entirely. Either the label or my description of it needs your call.The biome brush#
Switch Paint layer to Biome and you paint Köppen classes directly. This layer is never touched by Generate, and authored climate outranks the latitude estimate everywhere in the colour engine.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Size | brush.radiusM | shared with the height brush | per section, see above | Same physical brush. |
| Hardness | biomeHardness | 1 | 0 to 1, step 0.05 | Edge softness. Separate from the height brush's Falloff. |
| Show biome overlay | biomeOverlayEnabled | on | toggle | Shows the class colours over the terrain. |
| Overlay | biomeOverlayOpacity | 45 % | 0 to 1, step 0.05 | Overlay opacity. |
| Strength | biomeBrush.strength | 100 % | 0.1 to 1, step 0.05 | Deposit strength per dab. |
The Köppen picker#
Classes are grouped by macro biome: Tropical, Arid, Mediterranean, Temperate, Boreal, Tundra, Ice. Each group is a grid of chips carrying the class colour swatch and its code. Classes already present in the map sort first and carry the title Cfb · present.
The full list, in order: Af, Am, Aw, BWh, BWk, BSh, BSk, Csa, Csb, Csc, Cwa, Cwb, Cwc, Cfa, Cfb, Cfc, Dsa, Dsb, Dsc, Dsd, Dwa, Dwb, Dwc, Dwd, Dfa, Dfb, Dfc, Dfd, ET, EF. The default selection is Cfb.
A world with no biome layer shows THIS WORLD HAS NO BIOME LAYER. and a Create biome layer button, which confirms with FILL THE MAP WITH Cfb (TEMPERATE)? THIS IS UNDOABLE. Creating the layer is a history entry like any other, so undo reaches it.
Guide overlay#
The Guide overlay group sits outside the layer branch, because a guide is traced with both brushes. It is collapsed by default. The same control is mounted in the globe workspace side panel, and one guide selection is shared between the sphere and the paint stage.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Show guide overlay | guideOverlayEnabled | on | toggle | Disabled until a guide is selected. |
| Guide opacity | guideOverlayOpacity | 45 % | 0 to 1, step 0.05 | Disabled with no guide selected or the toggle off. |
Choose guide image… opens a real OS file picker. Dayside never accepts a pasted path. Accepted formats are PNG, JPEG and WebP, up to 64 MB, 16,384 px on either side, and no more than 8,192 × 8,192 pixels in total. A world holds 12 guides. The list carries a No guide entry plus one row per image with a thumbnail, name and pixel size, each removable.
The editor draws the section's own view of the guide, not the world's, so an equirectangular guide is projected to the section rather than squashed into the crop. On a whole-world project a guide that is not 2:1 gets a warning, because the sphere wraps a guide as a full equirectangular texture and anything else stretches on it.
Applying changes#
Apply changes commits the whole paint session to the section's heightmap. It is disabled when there is nothing to undo, while a commit is running, and while an enhance job runs.
What happens on commit:
- Only pixels you actually changed are written. Height and biome each carry their own dirty mask.
- The height edit is applied as a difference and upsampled to native, so untouched ground is untouched.
- Biome IDs are resampled with nearest-neighbour to the native Köppen crop, which keeps class boundaries hard.
- If you moved the sea level, the whole field is rebased and the slider returns to 0.50.
- The section's refined coastline is marked stale.
- The undo history is reset. The committed result becomes the new baseline, and the strokes behind it are gone.
That last point is the one to remember. Undo covers a paint session. It does not walk back across an Apply.
The commit is capped at 2,048 px on an edge server-side, which the 1,024 px paint surface sits comfortably inside.
Revert is a different mechanism. It restores the hand-authored heightmap from a snapshot captured the first time you ran Generate on that section, and it appears in the Generate and Deterrace dialogs. A section that has never been generated has no snapshot and no Revert. The Coast and Landmass panels state that revert is available afterwards; that promise is this snapshot, so it holds only for a section that has been generated at least once.
Paint history and undo#
The history icon on the left rail (Paint history in Draw mode) toggles the Paint history group. It carries Undo and Redo buttons and a list of strokes, newest first, with the current position tagged CURRENT and a terminal row Original terrain.
Stroke labels state what the stroke did: Raise stroke, Lower stroke, Set 1,200 m, Raise to 800 m, Lower to 0 m, Cfb biome stroke, Stamp <tile>, Sea level 0.62, Create biome layer.
History holds 20 strokes plus a permanent original baseline. Past capacity the oldest stroke snapshot is dropped, so the deepest undo becomes an explicit jump from the oldest retained stroke straight to original terrain. Snapshots are copied CPU rasters and never enter the UI state store.
Landmass placements are the exception: they push no paint history, because nothing has been written to the heightfield yet and an undo there would have nothing to restore. Use Undo last in the Landmass panel instead.
Deterrace#
Deterrace melts the risers of a contour-quantised heightmap into ramps while every pixel stays inside the elevation band it was drawn in. It is the companion to painting plateaus at palette levels. Land only: the sea floor is left exactly as it is. Open it from the top bar.
The dialog detects levels for you and scores the section, reporting how many levels it found and what share of land sits on one. Below the hint threshold of 0.75 it says instead: Only 31% of land sits on a detected level, so this section does not look like a contour map. Running it is harmless, but there may be little to melt. It discourages, it never blocks.
The level table is editable and takes one number per level: the elevation the band was drawn at, in metres. A level's pixels may move anywhere between it and the next level up, which the Up to column shows beside each row. The top level runs up to Max height, a single field under the table that is prefilled one contour step above the top level (or at the highest land the analysis saw, whichever is higher). Set it equal to the top level to keep the summit flat. Share is the fraction of land sitting on each level. Rows have a remove button and Add level appends one step above the top, lifting the max height clear of it if it has to.
| Control | Engine key | Default | Range | What it does |
|---|---|---|---|---|
| Radius | sigma_px | 2.0 px | 0.25 to 32 px server-side; the slider runs 0.5 to 8 in steps of 0.5 | Smoothing radius, in pixels of this section's grid. The note under it converts to metres of ground. |
| Iterations | iters | 300 | 1 to 5,000 server-side; the slider runs 20 to 1,000 in steps of 20 | Passes of the constrained solve. |
| Stop once further passes can no longer change the result | auto_stop_eps | checked (sends 0.1) | checkbox | Early exit once the solve converges. |
A warning states the real consequence: changing the heightmap invalidates this section's refined coastline, so you will need to refine it again afterwards. The dialog cannot be dismissed by backdrop click or the close X while a run is in flight.
Keyboard shortcuts#
Every shortcut is suppressed when focus is in an input, textarea, select or contenteditable element. All of them except the Space release require Draw mode.
| Key | Context | Action |
|---|---|---|
| Space (hold) | any | Temporary pan. Grab cursor, brush ring hidden. Yields to a focused button, link, checkbox, switch, tab, radio or menu item only when the pointer is not over the canvas. Released on key up, or when the window loses focus or is hidden. |
[ / ] | Height layer, Stamp or Landmass with something selected | Shrink or grow the placement. |
[ / ] | Height layer, any absolute height mode | Step the target height down or up through the level palette. Does nothing in Relative mode. |
| ← / → | Height layer, Stamp or Landmass with something selected | Rotate 1° per press. |
| Shift + ← / → | same | Rotate 15° per press. |
| Ctrl/Cmd + Z | Draw mode | Undo paint. |
| Ctrl/Cmd + Shift + Z | Draw mode | Redo paint. |
| Alt + click | Height layer, on the canvas | Eyedropper. Samples the height under the cursor into Target height, snapped to levels when Snap to levels is on. |
| Ctrl/Cmd + scroll | on the canvas, live placement | Step to the next or previous landform or coastline shape in the open picker group. Falls through to zoom everywhere else, so a trackpad pinch still zooms. |
The bracket keys claim the placement modes before the height-target branch can, and they are gated on the Height layer and on something being selected. A stamp selection left behind on the Height layer never swallows the Biome layer's keys, and the keys fall through when the picker is empty.
The heads-up display#
In Draw mode with the Draw tool, two readouts sit on the canvas.
Height under cursor shows a signed metre value against a range bar labelled with the section's minimum, section range · m, and its maximum. Height layer only.
The brush line changes with the mode. A brush reads ⌀ 40 km plus a suffix: · RAISE, · LOWER, · SET 1,200 m, · RAISE TO 800 m or · LOWER TO 0 m. A placement reads its ground span and heading, 157 km · 34°, with ↔ or ↕ for mirrors, · jitter when jitter is on, and · LAND or · REMOVE for landmass. On an unscaled section the brush reads in pixels.
There is no equivalent readout in Render mode.
Editing large sections#
Open a section big enough to need it and Dayside offers a working-resolution proxy. The prompt quotes the section's pixel size and megapixel count, and warns that editing terrain at full resolution is slow enough that a single coastline edit can take minutes. Pick a resolution below native and your full-resolution master is kept untouched. The choice is remembered per section, so it never re-prompts.
While a proxy is active a banner sits under the top bar: Editing at 4K · native 16,384×16,384 · 3 edits not yet baked. Bake to native replays your edits onto the full-resolution master. Discard throws the proxy edits away and restores the untouched master.
The bake is never automatic. It is an explicit button.