Skip to content

Vulkan-based graphics framwork designed for game development and graphics applications on Linux.

Notifications You must be signed in to change notification settings

K1ngst0m/Aphrodite

Repository files navigation

Aphrodite

Aphrodite is a high-performance, Vulkan-based graphics engine designed for game development and graphics applications on Linux.

Core Features

  • 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

Cloning

To clone the repository, execute the following commands:

git clone https://github.com/K1ngst0m/Aphrodite
cd Aphrodite

Building and Running

Aphrodite can be built directly on a Linux system or inside a container. The project uses CMake presets to simplify the build configuration process.

Native Build

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)

Container Build

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.

Usage and Examples

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.

Documentation and Development Tools

  • Project Structure - Overview of the project’s directory structure and component organization

The src/ directory contains detailed documentation for various engine components:

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
  • 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
  • Clang Formatter - Documentation for C++ source formatting tool
    • Tool: clang_formatter.py
    • CMake targets: aph-check-clang-format, aph-fix-clang-format
  • Container Build - Documentation for building the project in a containerized environment
    • Tool: container_builder.py

Component Structure

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:

docs/cmake_dependency_graph.svg

Third Party Libraries

About

Vulkan-based graphics framwork designed for game development and graphics applications on Linux.

Topics

Resources

Stars

Watchers

Forks