|
Vulkan Schnee 0.0.1
High-performance rendering engine
|
This document describes the data structures used by the renderer and their relationships.
The renderer transforms the scene graph into flat GPU buffers. The hierarchy is:
An object is an Actor or Entity in the ECS (EnTT). Each object has:
Objects can have zero or more MeshComponents attached.
A MeshComponent references its parent entity and contains a SceneNode for local transforms. Each MeshComponent has:
Each mesh consists of one or more primitives. A primitive represents a single draw unit with:
Primitives are subdivided into meshlets for the mesh shader pipeline. Each meshlet contains:
Meshlet bounds are used for fine-grained culling before rendering.
Indirect dispatch parameters for compute shaders:
Per-object data for frustum culling:
Describes where meshlet data is located in the buffer:
Frustum planes for stereo culling:
Simple atomic counters track surviving objects/meshlets:
Binned counters track per-pipeline counts: