Skip to main content

Module scatter_mesh

Module scatter_mesh 

Source
Expand description

Built-in procedural grass blade (CEL-73): the default scatter mesh when a CesScatterLayer has no mesh assigned. A tapered, quadratically-bent blade with a dark→light-green vertex-colour gradient, so a dense field reads as grass with zero committed assets.

The look follows the hexaquo “full-geometry grass” approach, baking into the static mesh the two normal tricks that make flat blade geometry shade like a rounded 3-D blade (no custom shader needed):

  • Rounded width normals — the left/right edge normals fan outward (as if the cross-section were a cylinder), so interpolation across the blade width sweeps the normal and the blade catches a soft highlight down its length.
  • Tip-up normals — the forward normal lerps toward vertical from base to tip, so tips face the sky and pick up a specular glint.

What a static mesh can’t carry (would need a dedicated grass shader): wind sway, view-space thickening, and per-patch colour/scale noise. Per-instance scale jitter (0.8–1.2) is applied by ScatterPlace.slang instead.

Functions§

grass_blade_mesh
Build the blade ArrayMesh with rounded + tip-up baked normals and its own double-sided vertex-colour material.