this is a engine designed around good PC performance
this engine is primarely a PC focused engine, it uses stuff like vertex pulling and other newer vulkan features and extensions that are largly incompatable with mobile GPU's (those in phones specefically). while it will most likely still run and compile. it will likely have quite terrible peformance due to the differing nature of mobile GPU's, and the entire engine would require a major refit or extensive pragma compile blocks or a lot of differing code paths based on local enviroment. even more than already.
TL;DR this engine does and will not focus on providing good performance on mobile GPU's.
different GPU's can have wildly differing performance with the same code. every gpu architechture is different with its own quirks and performance considerations. this engine allows toggling features that might not always increase performance. the following is the list of conditionals that the engine has:
-
pre-depth pass:
doing a early depth pass and cull geometry with a HI-Z system. this can reduce overdraw and fragment count considerably. but it doesnt always actually improve performance. many gpu's can already cull fragments very effectively using gpu black magic. test performance on different hardware to know if this helps.
-
something else:
- CMake ≥ 3.28
- a C++20-capable compiler with module support
- vcpkg available and
VCPKG_ROOTset for the default preset
you can follow the guide here for installation.
git clone <repo-url>
cd VulkanEngineV5Use the provided preset:
cmake --preset default -S . -B buildUseful options:
-DBUILD_TESTING=OFFto skip tests-DENABLE_LOGGING=OFFto compile out logging macros-DCLANG_TIDY_ENABLED=OFFto skip clang-tidy setup
If you want a manual configure step instead of the preset:
cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" -DBUILD_TESTING=ONcmake --build build --config Debug # or Release/RelWithDebInfoctest --test-dir build -C DebugSet -DCLANG_TIDY_ENABLED=ON to enable static analysis when clang-tidy is available and a .clang-tidy file exists at the project root. Set it to OFF to skip clang-tidy configuration.