Vulkan Game Engine
Summary
Simple Game Engine using Vulkan 1.2, implementing common Game Engine features and capabilities.
The software also implements a custom job system using system fibers, following Naughty Dog’s talk on GDC2015 “Parallelizing the Naughty Dog Engine Using Fibers”.
This Engine implements common characteristics as interactable GameObject oriented scenes, scene/project serialization, model instancing, and multi-threaded command buffer recording.
Some algorithms for geometry processing and time-critical rendering have also been implemented, such as:
- Vertex-Clustering mesh simplification. Fast simplification using octrees, and configurable with normal clustering and different error metrics.
- Automatic LOD meshes creation, which also computes multiple LODs at the same time for a performant implementation.
- Critical-Rendering automatic LOD selection to achieve stable fps. The objective frame delta time is configurable.
- Cell-to-Cell visibility. The Engine includes an editor to generate cells and walls; it generates a data structure that allows to precompute the visibility of the scene objects and cull non-visible objects at run-time. This uses a conservative supercover Bresenham approach.