OptionalbaseBlade colour at the root (any CSS colour).
OptionalbladeBlade height in metres. Any height works (lawns ~0.1, meadows ~0.5, tall grass 1–3).
OptionalbladeBlade width at the base in metres.
OptionalbuildMilliseconds per frame spent (re)building tiles, nearest first. Spreads work to avoid frame spikes.
OptionalcameraCamera the field follows. Defaults to the R3F default camera.
OptionalcastWhether grass within shadowDistance casts shadows (needs a shadow-casting light).
Optionalclumping0..1 how strongly blades gather into tufts that splay outwards.
OptionalclumpTuft diameter in metres.
Optionalcolor0..1 per-blade brightness variation.
Optionalcurvature0..1 natural droop of blades when there is no wind.
OptionaldebugTints grass by LOD (red, yellow, green, blue) to help tune lods.
OptionaldensityBlades per square metre at full density (LOD 0).
OptionalgrassCoverage/height control texture; see GrassMap. null = grass everywhere.
Optionalheight0..1 random height spread per blade.
OptionalinteractionGlobal multiplier on how strongly interactors bend grass.
OptionalinteractorsUp to 16 objects that push grass aside.
OptionallodsExactly four levels of detail, ordered near → far.
OptionalmaxRadius (metres) around the camera that has grass. Blades fade out over the last 15%.
OptionalmaxSteepest terrain gradient (rise / run) that still grows grass. Infinity disables the check.
OptionalpaintTurns on the TerrainPainter with this brush (needs grassMap). false = off.
Optionalpatchiness0..1 field-scale light/dark and dry patches.
OptionalpresetStarting look; any GrassStyle field you pass overrides the preset's value.
OptionalreceiveWhether grass receives shadows.
OptionalrefReceives the underlying Grass instance (for sampleHeight, mapNode, stats, …).
OptionalshadowRadius (metres) around the camera in which grass casts shadows. Shadows are costly: keep it small.
OptionalstiffnessHigher = less wind/interaction bending.
OptionalsunLight used for back-lit translucency. null = first DirectionalLight found in the scene.
OptionalterrainMesh/group (or a ref to one) — baked when the component mounts or the object changes — or a
(x, z) => y height function. Inline functions are fine: the latest one is always used, but
tiles already built keep their heights (call grass.setTerrain() to force a rebuild).
OptionaltileEdge length of a streaming tile in metres. Tiles are re-centred around the camera.
OptionaltipBlade colour at the tip (any CSS colour).
Optionaltranslucency0..1 how much sunlight shines through blades when back-lit.
OptionaltypeDetailed geometric blades, or lightweight view-facing billboard tufts.
Optionalwidth0..1 random width spread per blade.
OptionalwindWind settings to change; unspecified fields keep their current value.
Props of the
<Grass>component: every GrassInput setting plus the ones below.