Features
Vegetation
Biome plant placement from terrain maps; grass in the weather's wind; GPU-placed instances seen by path tracing; per-instance bones.
- Plant placement (
VegetationField3D,Biome,PlantSpecies): places species by spacing, footprint and rules on slope, wetness and distance to water over aTerrainDataMap3D; evenly spread, the same for a seed. 12,899 plants over 256 m place once in about 45 ms, then draw as ordinary MultiMeshes. - Placement by geology (
TerrainDataMap3D.geology_source;PlantSpeciessoil_depth_range,rock_range,talus_range): plants follow the generated soil, rock and scree; trees stay off bare rock and thin soil, grass thins on rock. - Density masks (
density_mask,density_mask_rect; per speciesmask_channel,mask_invert): a painted texture thins or clears any species per channel, for clearings and paths. - Placement by climate (
temperature_range,january_temperature_range,precipitation_range,aridity_range,sunlight_range): species by temperature, winter frost, rain, aridity and sunlight. - Canopy shade (
canopy_radius,shade_range;weather_map): understorey placed by the shade of placed crowns; crowns feed the weather’s canopy map. - Grass (
GrassField3D): blades grow round the camera in clumps, followTerrainDataMap3Drules, thin with distance, bend in theWeatherMap3Dwind and darken in rain; path traced. - Trampling (
grass_tramplegroup,GrassField3D.trample_recovery): bodies lay grass down and it springs back. - Ground cover (
GrassField3Dundercoat fields,view_facing;PlantSpeciespatches): edge-on blades widened, ground tinted under grass, clover and flower drifts. - GPU-placed instances (
RenderingServer.multimesh_mark_buffer_rd_changed()): MultiMesh records written by a compute shader reach culling, motion vectors and path tracing. - Instance bones (
MultiMesh.bones_per_instance): each instance is skinned from its own records, so thousands of plants bend in the wind without a Skeleton3D each; raster and path traced. 900 swaying stems: 0.30 ms render CPU, against 5.97 ms as 900 Skeleton3D.
Images#

Plant placement: trees on dry ground, bushes between them, reeds along the banks (placeholder meshes).

Grass: a full carpet, raster and path traced.

Ground cover: bare ground between blades is filled with undercoat, clover and flowers.

Grass in wind: gusts sweep across the field downwind.

Trampling: the grass lies down under the body and springs back behind it.

GPU-placed instances: without the call the GPU-written instances never appear.

Instance bones: one MultiMesh, every stem bent by its own bones.