acron.quads

A pool of quads in one vertex buffer — particles, sprites, billboards.

The pattern every quad system re-derives: N quads of four vertices in a single dynamic GeomVertexData with per-quad attribute columns, a static index list, a per-corner column the vertex shader offsets by (this engine’s GL context ignores gl_PointSize, so point sprites are camera-facing quads — RUNTIME rule), and an in-place resize. In place matters: a NEW node would drop the shader inputs, the set_bin and the shadow-mask hide the old one carried, which is why resize() reuses the buffer (set_num_rows + fresh indices) instead of rebuilding the node.

The pool owns the buffer and the node; the caller owns the columns’ meaning and writes them through view() / quads() / flat() (an acron.gpu.vertex_view() float32 memoryview — taking it is also what marks the rows dirty, so take it once per frame you actually write).

QuadPool(name, columns, max_quads, *[, dynamic])

max_quads quads in one buffer, with authored float32 columns.

Global Functions

omni_final(np_: NodePath) → None

Never cull, never recompute bounds — for geometry written in world (or screen) space under a node that stays at identity: the node’s bounds would be the pool’s, not the frame’s.