783 B
bump: minor
type: feature
ludic.render3d: the GPU blades grow where a painted density says. grass_density_layer(l) names a layer of
the ground densities (ground_density_open: the same 2 m texel, 64 m tiles, bake and dev fallback) as the
blades'; grass_cull.comp then keeps a blade by that density, bilinear, where it used to apply its rules (the
slope, the water's margin, the snow line, the photograph). Without one, nothing changes. The cull reads a
window of 5 x 5 density tiles round the camera (160^2 bytes, a host-visible storage buffer, re-filled from
the CPU tile cache when the camera crosses a 64 m tile), never the whole map. grass_rule_at(x, z) is the
rules on the CPU, for a migration that paints them; grass_density_texels() the side a density PNG has.