Skip to content

domme/FANCY

Repository files navigation

FANCY

A small rendering framework that abstracts DX12 and Vulkan. Mostly created for personal learning-purposes and graphics-demos. Most areas are still under constructions, but feel free to browse the code for reference in your own projects.

Features

  • Rendering abstraction API for both DX12 and Vulkan. No DX12/Vulkan-specific code in high-level rendering API
  • Optional code-modules for Scene-management and GUI rendering
  • Built-in profiler for both CPU and GPU
  • Custom memory allocator for DX12 (planned for Vulkan as well)
  • Supports async compute
  • Shader hot-reloading
  • HLSL->SPIR-V compilation using the DirectXShaderCompiler
  • Import of most common 3D files using Assimp
  • Implicit and automatic hazard-tracking for resources

Used Libraries

Building

This project uses vcpkg as the unified package manager for all external dependencies. All required packages are declared in the vcpkg.json manifest file located in external/vcpkg/. WinPixEventRuntime is downloaded separately via a bootstrap script.

Prerequisites

You will need:

  • Visual Studio 2022 with C++ workload
  • Git (with support for git submodules)
  • CMake 4.3 or newer
  • Vulkan SDK (set VK_SDK_PATH environment variable)

Build Steps

  1. Clone the repository with all submodules:

    git clone --recurse-submodules https://github.com/yourusername/PathTracer.git
    cd PathTracer/FANCY
    
  2. Download WinPixEventRuntime (one-time setup):

    powershell -ExecutionPolicy Bypass -File bootstrap_winpix.ps1
    
  3. Install vcpkg dependencies from the manifest:

    cd external/vcpkg
    .\vcpkg.exe install
    cd ../..
    
  4. Generate the project using CMake from the PathTracer root:

    cd ../..
    cmake --preset vs2022-win64
    
  5. Build the solution:

    cmake --build _cmake_build --config Release
    

Important: Always run vcpkg install from the FANCY/external/vcpkg/ directory where vcpkg.json is located. This ensures packages are installed to the correct location (FANCY/external/vcpkg/installed/) that CMake expects.

About

A rendering-framework for DX12 and Vulkan. Mostly intended for personal learning purposes and graphics demos

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors