The tools below modify the terrain. Use the 'Paint Terrain Height' tools to edit the terrain shape, and the 'Paint Terrain Texture' tools to paint the texture. When you use the texture paint tools, the texture mode in 'Render Settings' will flip to 'Custom'. Change this back to 'Auto' to automatically paint the texture.

Size: The size of the brush head.

Strength: The amount of effect to apply. Note that 0 is the center, and to the left is negative. Some tools do nothing with negative strength.

Falloff: The curve of falloff toward the outer edge of the brush.

Pull: Pull or push the terrain. Negative strength pushes down, and positive pulls up.

Smooth: Blur the terrain, making it smoother.

Set: Directly set the height. Strength defines the height to set to.

Noise: Add some randomness to the terrain. Use this with a small brush and low falloff for the best effect.

Editing Tools

Brush Properties:


Paint Terrain Height:

Paint Terrain Texture:

Render Options

Ambient Occlusion:
Global Illumination:
Normal Map:

The options effect the rendered view. Turn options off to acheive a faster framerate. You may need to click in the window to force a redraw after changing some options.

Set Material

Click the buttons above to swap the texture set on the terrain. This is non-destructive: if you've painted a texture, the texture mix will be applied to the new set of textures.

View Buffers

Use this to view the under-the-hood texture buffers.

Load Examples

Load an example terrain. This is destructive! You'll loose whatever you're working on.

Slot 1:

Slot 2:

Slot 3:

Save and load a terrain. This uses HTML5 LocalStorage, so it will persist even after you close the browser.
An editor for height map terrains by Rob Chadwick ( This experiment uses WebGL for rendering the height field, and also for the editing operations. The rendering pipeline uses the GPU to accelerate raytracing for soft shadows, ambient occlusion, global illumination and volumetric atmosphere shadows. The height map generates tangent space in a shader, and uses texture atlases for diffuse and normal mapping. The diffuse lighting term is supplied by precomputed spherical harmonics. All operations use floating point values packed into RGBA textures, so it should not require any special WebGL extensions.
Use the right mouse button and wheel to navigate, and the left button to edit. Buffers will be redrawn on mouseup. The samples for the raytraced effects accumulate over time, and should be nice and smooth after 30 seconds or so.