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

simvx.graphics.assets

Asset loading — images and meshes from disk

simvx.graphics.gpu

Low-level Vulkan wrappers

simvx.graphics.materials

Material and texture system

simvx.graphics.picking

Entity picking and raycasting

simvx.graphics.renderer

High-level rendering pipelines

simvx.graphics.scene

CPU-side scene data that feeds the GPU

simvx.graphics.ui

2D overlay / UI system

API Reference

See simvx.graphics for the complete API.