render3d: the GPU blades grow by a painted density (a layer of the ground densities, grass_density_layer) where a map has one - a 5x5-tile window round the camera in a storage buffer the cull samples - and by today's rules where not; grass_rule_at is the rules on the CPU for the migration

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-29 21:14:22 +03:00
parent e6f4685bd0
commit 9186abbbe3
10 changed files with 219 additions and 21 deletions

View file

@ -0,0 +1,9 @@
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.