GraphRunner is a personal project to build a modern, cross-platform graphics engine from the ground up.
It features a flexible Render Hardware Interface (RHI) abstracting over Vulkan and DirectX 12, with a powerful Render Graph at its core to manage frame dependencies and rendering passes efficiently.
GraphRunner is a modern graphics engine focused on clean architecture and high performance. Key features include:
Currently working, not implemented yet.
- Cross-Platform: Designed to run on multiple operating systems.
- Render Hardware Interface (RHI): A custom abstraction layer supporting both Vulkan and DirectX 12.
- Render Dependency Graph (RDG): Efficiently manages frame rendering, resource barriers, and pass dependencies.
Aims to implement modern techniques such as...
- Deferred Rendering
- Octree-based scene culling
- and more.
src/: for implementations(*.cc).include/: for header files(*.h).lib/: static libraries to be linked.tests/: unit test based on GoogleTest.example/: some examples for features.out/: for binaries.
- CMake 3.23 equal or over
- C++ Compiler with -std=C++20 (example: Visual Studio 2022)
- Git
- formatter : clang-format(optional)
- linter : clang-tidy(optional)
Because of using vcpkg as a Git sub-module, --recurse-submodules flag is necessary.
git clone --recurse-submodules git@github.com:eldeshue/GraphRunner.git GraphRunnerIf you already cloned tihs repo without the flag, execute command below. This command will initialze and update the sub-module.
cd GraphRunner
git submodule update --init --recursivethis project is baed on CMake with CMakePresets.json. So, choose preset you want to build and run cmake.
cmake --preset <preset-name>example:
- Windows + MSVC Debug :
cmake --preset windows-msvc-debug-mode- Unix-like + Clang Release:
cmake --preset unixlike-clang-releasecmake --build --preset <preset-name>example:
cmake --build --preset windows-msvc-debug-modectest --preset <test-preset-name>example:
ctest --preset test-unixlike-gcc-debugdebug binary goes to
out/build/<preset-name>/bin/for example:
./out/build/unixlike-gcc-debug/bin/my_executable
./out/build/unixlike-gcc-debug/bin/test_myprojectin VSCode, .vscode/launch.json needed
windows-clang-release: Windows + Clang + Releaseunixlike-gcc-debug: Linux/macOS + GCC + Debugunixlike-clang-release: Linux/macOS + Clang + Release
for Test Presets, add test- prefix. example: test-unixlike-clang-release
- License of the Package in the project is at NOTICE.md