SketcherTools
A non-destructive terrain heightmap authoring plugin for Godot 4, designed to complement brush-based terrain plugins like Terrain3D. Instead of painting terrain directly — which permanently modifies heightmap data — SketcherTools lets you compose terrain elements as independent objects that can be freely repositioned, rescaled, and reconfigured at any time.
The Problem It Solves
Brush-based terrain editing is destructive by nature. Once you sculpt a mountain, you cannot move it — you have to erase and redraw it from scratch. This becomes increasingly painful as your world grows larger.
SketcherTools introduces an object-based composition approach where every terrain formation is a standalone object with its own transform. Nothing is committed to the final heightmap until you explicitly export it.
Key Features
🗺️ Non-Destructive Workflow
Every sketch object stores its configuration as data — position, rotation, scale, noise parameters, blend mode, falloff, and curve modifier. Change anything, anytime. The heightmap is recomputed from scratch every frame during editing.
🏔️ Procedural Heightmap Generation
Three noise algorithms are available as heightmap sources, all implemented natively in GLSL shaders:
- Perlin Noise — smooth, natural-looking terrain base
- Fractal Brownian Motion (FBM) — layered detail with configurable octaves, lacunarity, and gain
- Ridged Noise — sharp mountain ridges and dramatic peaks
🗿 Primitive SDF Shapes
Generate heightmaps from basic geometric forms using Signed Distance Functions:
- Circle — smooth radial gradient, ideal for isolated hills or craters
- Box — square gradient, ideal for plateaus or flat-edged formations
🖼️ External Heightmap Input
Use any existing heightmap image as a sketch object source — real-world elevation data, purchased assets, or heightmaps from other tools.
🎛️ Per-Object Composition Controls
Falloff Smooth the edges of each sketch object to avoid hard cuts:
None— no falloff appliedSquare— Chebyshev distance-based box falloffRadial— Euclidean distance-based circular falloff
Curve Modifier Reshape the height distribution of any sketch object:
None— use heightmap values as-isExponential— apply power curve to height valuesFree Curve— define a custom curve directly in the Godot editor
Blend Modes (Combine) Control how each object interacts with the terrain below it:
MAX— take the higher value (additive elevation)MIN— take the lower value (depressions, valleys)MIX— linear interpolationFLATTEN— pull terrain toward a target heightADD— direct additionSUBTRACT— direct subtraction
Replace Mode Override terrain values directly, with edge transitions controlled entirely by the object's falloff setting.
👁️ Real-Time Preview
- 2D — grayscale heightmap preview updated every frame
- 3D — vertex-displaced plane mesh for topographic preview from any camera angle, with Sobel-based normal recalculation for accurate lighting
📦 Multi-Chunk Canvas
The sketch board uses a GPU-accelerated multi-chunk system powered by MultiMeshInstance3D. Configure canvas size through:
- Chunk Level — number of chunks per axis (1×1 up to 16×16)
- Chunk Size — size of each chunk in meters (64 to 2048)
This allows large terrain canvases without being limited by maximum texture size.
💾 Adaptive Tiling Export
Export your composition as EXR heightmaps (32-bit float, single channel):
- Single file when export size ≥ canvas size
- Multi-tile when export size < canvas size, with
coordinate-encoded filenames (e.g.
sketcher_128_-256.exr)
Tile filenames encode their world-space position, making them directly compatible with Terrain3D's import system.
🔁 Direct Terrain3D Import
An included import utility reads your exported EXR tiles and places them at the correct world positions in Terrain3D automatically — no manual coordinate entry required.
Workflow Overview
Changelog for version v0.0.1-beta1
No changelog provided for this version.