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¶
Single GPU draw call: mesh + material + transform instances. |
|
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).