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.

API

class simvx.core.render_queue.RenderBatch

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

Attributes: mesh: Mesh geometry (vertices, indices) material: Material properties (color, 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]

Get transforms as list of 4x4 numpy arrays.

transforms_as_bytes() bytes

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

class simvx.core.render_queue.RenderQueue

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

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

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

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