this post was submitted on 16 Jul 2025
17 points (100.0% liked)

Procedural Generation

161 readers
7 users here now

A community to discuss and share anything procedural generation related, for example game worlds and assets, or simulations whether scientific or ludic.

From Wikipedia:

Procedural generation is a method of creating data algorithmically as opposed to manually, typically through a combination of human-generated assets and algorithms coupled with computer-generated randomness and processing power.

founded 2 years ago
MODERATORS
 

A procgen weekend project in Blender and geometry nodes. The idea was to start from a simple painted map -as simple and childlike- as possible, and let the computer do the rest.

Some images of the process :

Extract map contours

Separate seafloor from land

Look at the distance to shore

Filter it some

A voronoi for the rocks

Masked so they only appear near the shore

Roughly the same approach for the seafloor

A couple materials, water surface, Nishita sky

Cheers !

you are viewing a single comment's thread
view the rest of the comments
[โ€“] troyunrau@lemmy.ca 2 points 2 weeks ago (1 children)

I start with perlin with several scales, mixed together. But then I do a lot of extra stuff.

For example, a filter of my own creation I call "swiggle" helps create curved linear features. Sample of what it does to a checkerboard.

I like to find things like steep gradients and erode them to help form mountain ranges that have passes in them and such. So I'll do something like a Voronoi map, where the density of cells is related to the map gradient. Then calculate features per cell. That way great plains stay relatively flat.

I'm currently hung up in doing erosion and deposition properly. Not like a fake single pass version, but an iterative version that moves things over time. That has led me into some scientific computing rabbit holes where geoscientists do real simulations. But python cannot handle that well.

[โ€“] Hadriscus@jlai.lu 2 points 2 weeks ago (1 children)

Ah nice swiggle. It creates vortices in input coordinates or something to that effect ?

If you're finding gradients does that mean you compute surface derivatives or do you "just" look at neighbouring points ? I can't figure that out in geonodes yet, supposedly that's something a shader is better suited for (and more performant). But I don't know the first thing about OSL and stuff.

Wrt erosion, in Blender there's a framework in place for making solvers (simulation zone). But you still have to write the actual solver... and I have to say I totally overlooked deposition last time I worked on it... and "worked" is a big word ๐Ÿ˜‰

[โ€“] troyunrau@lemmy.ca 2 points 2 weeks ago

Yeah, swiggle is pretty much exactly that. The coordinates, amplitudes, and radius are randomized (based on the map seed, so it is reproducible). It makes a good distortion on top of things like mountain range positions. You don't see the swirls in practice.

Yeah, I mathematically compute a gradient vector. Which is actually one of the very easy things to do in python. I then bias Voronoi cell centre point density based on the amplitude of the local gradient.

The same gradient calculations would be used in a real erosion/deposition model. Where the gradient is high, erode. Move those particles down gradient. Deposit particles where gradient is less steep. Repeat a thousand times. Marvel at emergent phenomenon like river valleys and deltas. It's the "repeat a thousand times" that python really struggles with. It's fine to run it once and wait. But I don't want it to be days of modeling per map :)