Authoring
Interaction
Bend, flatten, sweep, hold, and recover grass from collider-driven sources.
Kiwi Grass stores temporary interaction in a terrain-aligned GPU texture. Red and green contain a signed bend direction, blue contains bend strength plus collider-clearance distance above its normal range, and alpha contains flatten strength. Bend and flatten recover independently with frame-rate-independent exponential decay.
source setup
Add Grass Stomp Source (TerrainGrassStompSource) to the moving object and choose a contact mode:
- Automatic uses the assigned collider when available and otherwise uses the manual local bounds.
- Collider Bounds requires an assigned collider and rejects the source when it is missing.
- Manual Bounds transforms the local center and size into a world-space contact box.
The source position follows the center of the resolved contact bounds, so offset colliders and manual boxes stamp at the visible contact point. Soft Radius X and Soft Radius Z retain the original elliptical bend and swept-motion footprint without expanding to collider size. Capsule contact uses its projected capsule; other colliders and manual contact retain their conservative bounds. Stamping evaluates pixel-cell coverage rather than only pixel centers, keeping small sources strong and stable on large terrains. Bend Amount controls directional curvature, while Flatten Amount controls the artistic flattening response.
Prevent Grass Tip Clipping is available for capsule sources and enabled by default. It preserves the original stomp pose, adding clearance only toward the upper blade inside the capsule. Collider sources use Unity's native collider gizmo instead of a duplicate Kiwi Grass box. Manual contact draws its actual bounds plus the authored soft-radius ellipse.
terrain contact
Every renderer evaluates each source against its own terrain. Contact bounds drive terrain acceptance, conservative dirty-tile coverage, and held deformation. Capsule sources use their projected capsule only for tip clearance; ordinary stamping stays on the authored soft radius. A source is accepted only when its horizontal footprint overlaps the terrain and its vertical bounds intersect the space from the terrain surface to the maximum possible blade tip. Sources above the grass, below the terrain, outside the terrain, or with invalid bounds are rejected before upload.
This terrain-specific test prevents a source above or below the ground from bending grass and keeps stacked terrains independent.
movement and recovery
Sweep Movement stamps an elliptical capsule between consecutive accepted positions so fast grounded motion does not leave gaps. Invalid contact and teleports break history instead of drawing a long deformation streak. Disabling Sweep Movement stamps only the current footprint.
An accepted source applies the original immediate bend and flatten response. Released texels recover at the original stable per-texel 0.50-0.95 timing variation, avoiding synchronized motion without extending dirty-tile work. The first direction stored by a clean texel remains latched while that grass is bent, held, or recovering, so a moving collider cannot rotate an already-stomped blade around itself. The direction clears only when recovery returns both channels to rest, allowing the next stomp to choose a new natural direction. Stomp Recovery Rate controls the shared exponential recovery baseline and defaults to 0.55; Stomp Clear Threshold clears small residual values and their stored direction. A zero recovery rate keeps released deformation until another operation clears or recreates the stomp map.
editor preview and diagnostics
Live Scene-view interaction is enabled by default. Toggle it from Tools > Kiwi Studios > Kiwi Grass > Live Interaction Preview. The toggle is stored in editor preferences and does not dirty scenes or assets.
The renderer inspector reports whether its compute shader comes from a renderer override or the bundled fallback. Runtime statistics separate accepted sources from inactive, outside, above, below, invalid-contact, and source-cap rejections.
Still stuck?
Bring the renderer status with you.
Include the Kiwi Grass version, Unity and URP versions, operating system, graphics API, renderer status, Player log, and a minimal reproduction.