render3d: ground_fill's candidate is a function of its own; solid layers with stable ids; the trample as clearing discs
ground_candidate answers (layer, chunk, band, cell) -> keep, x, z, scale, yaw, seed, wind from pure gf_* steps and the density read between them; ground_fill draws its answers with the same operations in the same order. A solid layer fills at step0 and band 0 whatever the camera, a far band drawing a stable subset (draw 7 under (step0/step_b)^2), each thing an int id from (layer, chunk, cell), listed per chunk into a caller's GroundSolids or answered by id. r3d_ground_clearing hands the trample over as discs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
740ac2a879
commit
e535879262
7 changed files with 259 additions and 19 deletions
|
|
@ -860,6 +860,9 @@ export state Render3dState {
|
|||
gd_zbuf: []byte = null # one tile's deflated bytes as read
|
||||
gd_hand: int = 0
|
||||
gd_trample_cb: fn(float, float) -> float = null
|
||||
gd_clear: floats = floats(GD_CLEAR_MAX * 5) # the clearings as data: (x, z, r_in, r_out, floor) each (ground_clear.ludic)
|
||||
gd_clear_n: int = 0
|
||||
gd_cand: GroundCand = new GroundCand # ground_fill's candidate, filled and reused
|
||||
gb_layer: int = -1 # the densities' layer the blades grow by; -1: the rules (grass_density.ludic)
|
||||
gb_buf: int = 0 # its window round the camera, on the GPU
|
||||
gb_win: words = null # ... and the window's bytes, four texels a word, made once
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue