Terracrust: Procedural Landscape Brush Tool

Hello everyone!

I’ve been developing a terrain generator plugin and it is in stage that I could showcase it first time.

The goal for the project is to provide terrain generator software directly inside Unreal Engine. Instead if relying to imported landscape textures, the plugin can generate landscape brushes inside editor. Brushes are edited in a custom editor where you shape the generation logic by using nodes.


To paint into landscape, you place a brush into the level and assign generator graph in it. The plugin runs the generation logic made in the graph and paints height and weight data that the graph outputs. Everything is non-destructive, so you can re-generate each brush individually. The system also supports usage of brush transform in the terrain graph, so it can adapt to correct rotations or scales eg. when using aspect or slope masks.


You can create any number of inputs and outputs to the graph. Inputs are exposed to details panel of the brush, so you can change the values per brush.


Outputs are painted to landscape by adding height or weight painters to the brush where you can select which outputs are painted into which landscape layers.

I have also added a texture baker that is used to bake/pack outputs into textures straight in Terracrust Editor.

The generation logic is run on GPU, so it runs fast even on larger resolutions.

Lately I’ve been focusing on improving erosion simulation and it starts to look promising. Next step with the project is to add snowfall simulation, snow melt simulation, and bunch of new utility nodes.

The plugin will be available on marketplace once I get it ready.

To make the product as solid as possible, I am open for suggestions and improvements. If you are interested in my project, leave some comments or join to my Discord Server to have a chat.

1 Like

Some new progress with the terrain generator :slightly_smiling_face:

I have now finalized the brush system that can paint the generated data into landscape. The system can now cache generation results, so when moving brushes it can use cached data instead of generating it again. The cache also works in the Terracrust graph editor for certain nodes, so small tweaks and adjustments are faster when you don’t have to wait heavy simulation nodes to process each time you make an edit for node that comes after it.

Erosion also got revisit and it now generates better and more masks for weight painting such as wear, loose sediment, and deposition masks in addition to water flow map. Erosion node also has new thermal erosion which gives better results than the previous one and can now simulate talus production better.

Weightmap generation also got new nodes and features such as option to prioritize certain weightmaps and contrast for blending them together. The system takes care of normalization of weights, so they all sum up to 1.0 automatically. Weight values (and any other inputs added to the graph) can be easily adjusted in the brush details panel, so you see the results immediately without jumping to external software to export-import new maps.

I also implemented landscape material that uses weight maps, supports height blending, and breakup transitions to get rid of too smooth gradients between weight layers. The landscape in the screenshot was made fully procedural without any external software or texture brushes. Material textures are from Quixel and grass foliage from free marketplace packs to demostrate how the system works.

The plugins starts to feel that there isn’t much to be done anymore until I can release the first version of it, so stay tuned :slight_smile: