Graphics Backend¶
The simvx.graphics package provides GPU-accelerated Vulkan rendering for SimVX.
Architecture¶
SimVX uses a GPU-driven forward renderer — all draw calls use vkCmdDrawIndexedIndirect with no Python loops during rendering. Object transforms, materials, and draw commands are packed into flat NumPy arrays and uploaded to SSBOs once per frame.
Key Features¶
Multi-draw indirect — thousands of objects in a single Vulkan draw call
SSBO-driven data — transforms, materials, and lights in Shader Storage Buffer Objects
Bindless textures — up to 4096 textures in a single descriptor array
Multi-viewport — split-screen, picture-in-picture, offscreen render targets
Frustum culling — CPU-side per-viewport bounding-sphere culling
Guides¶
App Class — App class, game loop, and windowing backends
Custom Shaders — Custom GLSL vertex and fragment shaders
Visual Testing — Headless rendering, pixel assertions, and visual regression tests
Web export (browser runtime + HTML bundler) now lives in its own package; see Web Export.
Subpackages¶
Subpackage |
Description |
|---|---|
Asset loading — images and meshes from disk |
|
Low-level Vulkan wrappers |
|
Material and texture system |
|
Entity picking and raycasting |
|
High-level rendering pipelines |
|
CPU-side scene data that feeds the GPU |
|
2D overlay / UI system |
API Reference¶
See simvx.graphics for the complete API.