Pure math + spatial-acceleration data structures + vertex formats +
OBJ loader. Layer 1, no dependencies on the rest of the engine. Used by
physics, render, world, and
navigation.
Shapes (AABB / OBB / triangle / sphere / disc), the vertex formats
the GPU pipeline expects, transform decomposition, frustum extraction,
and acceleration structures — BVH, octree, interval tree. Also the OBJ
loader, since it deals with raw Geometry.
Transform{position, rotation, scale} + a dirty bit +
cached local/world matrices. update_local and
update_world rebuild lazily during the scene-graph
traversal — nothing recomputes unless something upstream moved.
Vertex (position, normal, color, uv, tangent) and
SkinningData (joints + weights) are bit-for-bit what the
GPU pipelines consume; the matching
vk.VertexInputBindingDescription lives next to them so the
two never drift.