Foundation
|
Foundation is a work-in-progress cross-platform rendering framework.
Heavily inspired by Arseny Kapoulkine's niagara, bgfx, and Unreal Engine, this project aims to provide a high-performance, low overhead rendering framework for extremely fast prototyping of various GPU workloads.
A comprehensive Examples section is provided below for quickstarts and reference.
You can also check out the ModelViewer application for an advanced usage of the framework.
All examples can also be found at The Examples directory.
cmake
is required for builds. A C++20 compliant compiler is also required.
All third-party dependencies are included as FetchContent
declarations. See Thirdparty for a comprehensive list.
Slang is required for building shaders for all backends, and should be available in your PATH
.
Vulkan SDK is required for building the VulkanApplication backend.
You can build, and debug the app with Visual Studio's CMake intergration. Or with any alternative CMake workflow of your choice.
The Vulkan SDK installer should take care of most, if not all the setup for you.
Refer to https://docs.vulkan.org/tutorial/latest/02_Development_environment.html#_linux_2 for setting up the Vulkan SDK on Linux.
Refer to https://docs.vulkan.org/tutorial/latest/02_Development_environment.html#_macos for setting up the Vulkan SDK on macOS.
The following commands will create a build directory, generate the build system files, and build all targets with 8 parallel jobs. Binary artifacts will be located in build/bin/
.
The following CMake options are available:
Option | Description | Default |
---|---|---|
FOUNDATION_WITH_ASAN | Build with Address Sanitizer enabled | OFF |
FOUNDATION_WITH_TSAN | Build with Thread Sanitizer enabled | OFF |
FOUNDATION_WITH_PROFILING | Build with profiler (Tracy) enabled | ON |
FOUNDATION_RHIVULKAN_VALIDATION_LAYER | Build with Vulkan Validation Layer enabled | ON |
FOUNDATION_WITH_EXAMPLES | Build examples | ON |
FOUNDATION_WITH_TESTS | Build tests | ON |
FOUNDATION_WITH_MODELVIEWER | Build the model viewer application | ON |
Toggle these options with -D<OPTION>=ON/OFF
when running cmake ..
, e.g. cmake -DFOUNDATION_WITH_SANITIZERS=ON ..
CMake Unity Builds are supported, and can be enabled with -DCMAKE_UNITY_BUILD=ON
when running cmake ..
.
Or, notes to self. If you are here, well ...thanks a lot for the interest^^
Radeon™ Developer Tool Suite has issues with OSS AMD drivers (RADV and co), see:
On Arch https://aur.archlinux.org/packages/vulkan-amdgpu-pro
seems to resolve the issue.