Aphrodite is a high-performance, Vulkan-based graphics engine designed for game development and graphics applications on Linux.
- Vulkan
- Mesh Shading Support
- Render Graph
- Bindless Support, automatic handle code generation with built-in helper module
- Resource Management
- Coroutine-based Job System
- Scene Management
- Built-in Windowing, Input, Event Support
- UI Support
- Shader Reflections and Caching
- Application Framework
To clone the repository, execute the following commands:
git clone https://github.com/K1ngst0m/Aphrodite
cd Aphrodite
Aphrodite can be built directly on a Linux system or inside a container. The project uses CMake presets to simplify the build configuration process.
To build and run the project natively, explore available presets and then build:
# List available build presets
cmake --list-presets
# Configure and build with selected preset
cmake --preset default && cmake --build build -- -j$(nproc)
For a containerized build when you want to avoid installing dependencies directly on your host system:
# Build with default preset (clang-release)
./scripts/container_builder.py
# Build with specific preset
./scripts/container_builder.py clang-debug
# Clean build
./scripts/container_builder.py --clean
This requires Docker or Podman installed on your system. Build results will be in the build-container/
directory.
Aphrodite includes several examples to demonstrate key engine features:
A basic example showcasing the core rendering features of the engine:
- Resource Loading (buffers, images, shaders)
- Render Graph Setup and Management
- Render Loop Implementation
- Command Buffer Recording
- Bindless Resource System
- Application Configuration
A utility example that demonstrates Aphrodite’s render graph system in dry run mode:
- Visualizes render graph structures
- Exports to GraphViz DOT format
- Demonstrates dependency analysis
- Includes simple and complex rendering pipeline examples
For complete and most recent examples, please refer to the examples/
directory.
- Project Structure - Overview of the project’s directory structure and component organization
The src/
directory contains detailed documentation for various engine components:
- Resource Loader System - Documentation for the asset loading and management system
- Buffer Loader - Handles GPU buffer creation and data uploading
- Image Loader - Processes textures and images with format conversion
- Geometry Loader - Imports 3D models with optimization and mesh shader support
- Shader Loader - Compiles and manages shader programs
- Render Graph System - Documentation for the render graph system
- Global Manager - Documentation for the global instance management system
- Exception Handling - Documentation for the error handling system
The scripts/
directory contains development tools integrated into the build system as CMake targets with an aph-
prefix:
- Dependency Grapher - Tool for visualizing cmake module dependencies in the project
- Tool:
dependency_grapher.py
- CMake targets:
aph-cmake-dependency-graph
,aph-cmake-dependency-graph-dot
,aph-cmake-dependency-graph-svg
- Tool:
- CMake Formatter - Documentation for the CMake formatting tool that ensures consistent style
- Tool:
cmake_formatter.py
- CMake targets:
aph-check-cmake-format
,aph-fix-cmake-format
- Tool:
- Clang Formatter - Documentation for C++ source formatting tool
- Tool:
clang_formatter.py
- CMake targets:
aph-check-clang-format
,aph-fix-clang-format
- Tool:
- Container Build - Documentation for building the project in a containerized environment
- Tool:
container_builder.py
- Tool:
The engine is built as a set of modular components with clear separation of concerns. The dependency graph shows all engine components and their relationships: