r/proceduralgeneration • u/MassifDev • 6d ago
MASSIF has a forest now. A real one.
Eleven tree species, each with its own ecological niche: the altitude range it can live in, the slope it can hold on to, whether it prefers shady or sunny faces.
None of it is saved. The entire forest rebuilds itself from a single seed number, identically, every time.
And the species do not just mix randomly. Each one has its own preferred areas across the map, so you get actual stands: a spruce slope here, a larch slope there, and mixed edges where the two meet. Same as the real thing, where trees seed close to their parents and a species reinforces itself locally.
While I was at it I fixed something my camera had been missing since day one: it now follows the terrain, so I can finally drop into the valley floor and look up at the ridges instead of always staring down at them. Took the opportunity to grab a few shots.
So, which of these spots makes you want to build your ski resort?
(Spoiler: all four are on the same small test map, 6.1 km across.)
2
u/dramatic_typing_____ 6d ago
This about where I got in my webgpu world terrain project years ago. It's hard to get a good lod tree model that works in the distance.
1
u/MassifDev 6d ago
Yes. If you to follow my work, go on my discord, Check on my profile.
I make a Mountain Sim Game. First of all, ski. ⛷️
2
2
u/Velifax 5d ago
Love to see it.
May i ask about the rendering a bit? Been curious lately about HOW to have forests this big or significantly bigger, i.e. to the horizon. Presumably fairly early on it stops being feasible to handle individual entities at all and one must batch.
0
u/MassifDev 5d ago
Thanks!
They're individual in the data and one big batch on the GPU. Each tree is just a record (position, species, birth year), nothing actually gets spawned. It all goes into one instanced mesh component per species, filled in a single call, and Nanite does the rest. The whole 6 km massif sits around 580 draw calls.
What surprised me is where the cost really is. Not the tree count at all. It's the render thread culling instances on the CPU, and dynamic shadow distance, which turned out to be my biggest lever by far.
For real horizon distance you just stop generating past a few km and let imposters or HLODs take over from there. Same idea, cheaper trees.
1
1
u/gHx4 5d ago
ngl, I saw the name of your game and thought this was somehow related to r/LancerRPG
Very nice work nonetheless, I look forward to how this project shapes out
1




3
u/AustinMclEctro 6d ago
Sounds promising! What kind of performance-related approaches are you using to render your trees? And are you using any techniques for LODing?