Status
SteamPeaks
ChartsSalesUpcomingPatchesEventsCalculator
New on SteamEvery app, DLC and depot the minute Steam creates itAppsEvery app on Steam, newest change firstPackagesSubs and bundles, and what each containsDepotsDepots, manifests and install sizesTagsSteam's user tags and the games under themDevelopers & publishersCompanies and their cataloguesTechnologiesEngines, SDKs and anti-cheat found in the filesChange historyEvery PICS changelist as it lands
SignalsNineteen readings of the whole catalogueCompareAny games side by sideRecordsAll-time peaks and the days they were setReportsWeekly and monthly write-upsAlerts & newsroomWatch a game, get told when it movesSteam statusIs Steam up, right nowWeb API explorerTry the endpoints in the browser
EventsSteam's own events and the sales calendarCalculatorWhat a Steam account is worth, and its pile of shame
/
Sign in
/
SteamPeaks
The ultimate resource for Steam data.
ExploreChartsSalesSales and festsUpcomingPatchesEventsRecordsTrendingSignals
DatabaseAppsPackagesDepotsTagsDevelopersTechnologiesChange history
ToolsCalculatorCompareSearchAlertsSteam statusAPI
SiteMethodologyFAQDiscordSupportSign in via Steam
Not affiliated with Valve or Steam. Game names and artwork belong to their owners. All times UTC.
PrivacyCookiesFair useStatus
InfinicityEventsDev Diary: Ramping up the (procedural) vegetation
Community

Dev Diary: Ramping up the (procedural) vegetation

Infinicity · published 21 Dec 2024, 09:36 UTC

All eventsPlayers around this dateRead on Steam

I recently ramped up the level of procedural tree foliage and wanted to briefly post about it.

I chose to generate the trees myself and spent some time thinking about how to do that. I didn't look at any other implementations but rather tried to imagine the simplest approach I could think of and build out from there.

Initially I considered a tree to simply be a pole (like a telegraph pole).

Pointing up, normal to the surface I then imagine rings around its exterior that I could then stitch together using triangles.

Next I imagine at some distance along the pole, branching by rotating the (imaginary) pole about the branching point (the new origin) a configurable number of degrees in the XY (elevation) and ZX (azimuth) planes.

This process repeats recursively with the pole radius narrowing at each branching point and shortening and effectively produces a hierarchy of transformations (one per branching point) that I then bake into the mesh vertices for each branch sub-mesh.

Next, to improve on the rigid pole appearance I modified the ring placement to follow a sinusoidal pattern (rather than the straight pole) by imagining the sin function rotated counter-clockwise +ve 90 degrees in the XY plane. Starting at zero then this function (now transposed) moves vertically upwards and oscillates +/- about the X axis.

For the leaves I chose initially a spherical distribution of points.

For the spherical distribution of triangular leaves I went with the Fibonacci sphere making each point the leaf triangle's circumcentre.

I then added support for optional hanging vines the colour of which are complementary to the leaf colours.

Finally, for coloration I added support for 3 schemes; Monochrome, Complementary and Analogous coloration (in HSV colour space).

A short video of the results can be see in this video:

Watch on YouTube

More from Infinicity

Other announcements

All events
Community26 Dec 2025Procedural Object Placement with Variable-Radius Poisson Disk Sampling and noiseWhen generating large procedural worlds, placing objects believably is harder than it looks. Trees shouldn’t overlap. Rocks shouldn’t clump unnaturally. Buildings need breathing room. And ideally, all of this should be controllable, performant, and compatible with procedural generation. A few years ago, while working on procedural world generation for my game, I ran into exactly this problem i.…Community17 Dec 2025Turning Real Footage into Game Animations (and Why I Open-Sourced the Tool)One of the challenges I’ve been thinking about a lot while working on Infinicity is animation. I wanted characters that feel hand-animated and expressive but without relying on huge animation budgets or locking myself into a very rigid art style. I also wanted a workflow that lets me iterate quickly i.e. change timing, style, or scale without redoing everything from scratch. That led me down an…Community13 Dec 2025Player moddable terrain feature addedI’ve added a new feature that lets players tweak the mountain noise layers in real-time. Previously, the terrain was generated using layers of noise with fixed frequency and amplitude. Now players can adjust these parameters to shape the mountains exactly how they like whether that’s jagged peaks, rolling hills, or something in between. This gives a lot more expressive freedom while exploring o…