simvx.core.render_queue

Render queue — efficient batch submission for backends.

Backends call SceneTree._collect_render_queue() once per frame to get optimized batches. No user-facing API; purely internal optimization layer.

Example (backend usage): batches = scene_tree._collect_render_queue() for batch in batches: batch.material.bind() gpu_draw(batch.mesh, batch.transforms) # Single GPU call for 1000s

Module Contents

Classes

RenderBatch

Single GPU draw call: mesh + material + transform instances.

RenderQueue

Collects and sorts geometry for efficient rendering.

Data

log

API

simvx.core.render_queue.log[source]

‘getLogger(…)’

class simvx.core.render_queue.RenderBatch[source]

Single GPU draw call: mesh + material + transform instances.

Attributes: mesh: Mesh geometry (vertices, indices) material: Material properties (colour, blend mode, etc.) transforms: Nx4x4 array of model matrices (or flat if GPU-instanced) layer: Sort key (higher = rendered last)

mesh: simvx.core.graphics.mesh.Mesh

None

material: simvx.core.graphics.material.Material

None

transforms: list[numpy.ndarray] | numpy.ndarray

None

layer: int

0

property instance_count: int

Number of instances in this batch.

transforms_as_matrices() list[numpy.ndarray][source]

Get transforms as list of 4x4 numpy arrays.

transforms_as_bytes() bytes[source]

Get transforms as GPU-ready bytes (for instancing buffer).

class simvx.core.render_queue.RenderQueue[source]

Collects and sorts geometry for efficient rendering.

Internal use only. Created by SceneTree._collect_render_queue().

Initialization

add_instance(mesh: simvx.core.graphics.mesh.Mesh, material: simvx.core.graphics.material.Material, transform: numpy.ndarray, layer: int = 0) None[source]

Add a mesh instance (called by scene tree traversal).

get_batches() list[simvx.core.render_queue.RenderBatch][source]

Get sorted render batches (opaque, then transparent by depth).