Terrain painting: region material palette with 4-per-patch selection
Megan Starchild
Glad to see terrain painting in progress. One request for its design: please don't lock regions to just 4 materials total.
Good-looking terrain needs more variety than 4: rock, a pebble/scree transition around the rock, riverbed, wet dirt along the banks, paths, grass, forest floor. With only 4 slots, creators will keep covering the ground with mesh and alpha decals, and that costs more performance than the terrain itself.
Proposal, borrowed from how World of Warcraft handles it:
- Each region gets a larger material palette (12–16 slots).
- The region is divided into patches (e.g. 16m or 32m).
- Each patch picks up to 4 materials from the palette, and the paintmap stores weights for those 4.
Why this works:
- Shader cost per pixel stays the same as today (still 4 layers blended per patch), so low-end hardware isn't hit any harder.
- The palette can live in a GPU texture array, so the extra memory is predictable and bounded.
- Because it's per region rather than per parcel, it avoids the texture-loading problems mentioned for parcel-level swatches.
- The editor can assign patch materials automatically: painting with a material that isn't in a patch's set yet adds it if there's a free slot.
WoW has used this exact approach (4 textures per ~33m chunk, drawn from a larger zone tileset) since 2004. It's a big part of why its terrain looks hand-crafted without heavy geometry.
Log In