NVIDIA Falcor Real-Time Rendering Framework Beginner Guide Part 1

4 minute read

Published:

Falcor 6.0 and 7.0 (Falcor 8.0 instruction at the end)

I have tried to write some instructions from my side on top of the original Falcor documentation (version 6.0, 7.0, and 8.0), equivalent to Falcor’s README doc. This is a work in progress, and many things can go wrong. So, please do not take it as a reference.

For more details, please visit Falcor Home and Falcor git.

Prerequisites (Compulsory)

  • Win10 v20H2 or newer
  • Visual Studio 2022
  • Windows 10 SDK Latest
  • RTX GPU and latest driver
  • Developer mode enable in Windows OS (search For Developers in Windows)

Installation (Optional Libraries: works for 6.0–8.0)

  1. Windows 10 Graphics Tools (to run DX12 application with debug layer enabled). Two ways to install it,
    1. Check on the windows icon of your computer, then search Manage Optional Features. Search in the Installed features if you have already the Graphics Tools. If you don’t have it, add on the Add a feature and search Graphics tools. If this does not work for you go to next option.
    2. Download an offline package as .zip that matches the OS
  2. NVAPI (R470 R535)
    • download the latest NVAPI as .zip
    • rename the folder name to nvapi and paste it to C:\Falcor\Source\Externals\packman
      • I did not have the packman folder, so I created it
    • go to C:\Falcor\Source\Falcor\Core, open FalcorConfig.h and change #define _ENABLE_NVAPI 0 to 1
  3. aftermath 2023.2.0.23219
    • download, unzip, rename to aftermath and paste in C:\Users\local-admin\Desktop\Falcor\external\packman
  4. OptiX 7.3
    • copy Optix install folder and paste packman\optix
      • create an include folder and add the files, except the internal folder
  5. MDL_SDK: download the zip file, unzip, rename mdl-sdk, and paste in packman
  6. Microsoft DirectX 12 Agility SDK – packman/agility-sdk
  7. CUDA support (C:\Falcor\Source\Samples\CudaInterop\README.md)

BUILDING: CMAKE CLI 👍🏽 👍🏽 👍🏽

  1. Open the CMD and run cmake --preset windows-vs2022, I had some unexpected error with VS2017, therefore VS2019 or the latest recommended
    // if use visual studio 2022
      "windows-vs2022"           - Windows VS2022
    // if use visual studio code
      "windows-ninja-msvc"       - Windows Ninja/MSVC
    
  2. visual studio: Run setup_vs2022.bat; visual studio code: setup.bat
  3. visual studio: Open Falcor\build\windows-vs2022\Falcor.sln; visual studio code: ...
  4. visual studio: Build the solution (two workflows: 1) Mogwei, 2) Samples); visual studio code: ...

After Optional Library Added

  • See the CMakeLists.txt for missing (optional) libraries
    • optix: see previous (4)
    • aftermath: see previous (3)
    • nvapi: see previous (2)
    • mdl-sdk: see previous (5)
  • If the Optional Libraries are appropriate:
- FALCOR_HAS_D3D12: TRUE
+ FALCOR_HAS_D3D12: TRUE
- FALCOR_HAS_VULKAN: ON
+ FALCOR_HAS_VULKAN: ON
- FALCOR_HAS_AFTERMATH: OFF
+ FALCOR_HAS_AFTERMATH: ON
- FALCOR_HAS_NVAPI: OFF
+ FALCOR_HAS_NVAPI: ON
- FALCOR_HAS_PIX: ON
+ FALCOR_HAS_PIX: ON
- FALCOR_HAS_CUDA: ON
+ FALCOR_HAS_CUDA: ON
- FALCOR_HAS_OPTIX: OFF
+ FALCOR_HAS_OPTIX: ON
- FALCOR_HAS_D3D12_AGILITY_SDK: ON
+ FALCOR_HAS_D3D12_AGILITY_SDK: ON
- FALCOR_HAS_NRD: ON
+ FALCOR_HAS_NRD: ON
- FALCOR_HAS_DLSS: ON
+ FALCOR_HAS_DLSS: ON
- FALCOR_HAS_NV_USD: ON
+ FALCOR_HAS_NV_USD: ON
- FALCOR_HAS_MDL_SDK: OFF
+ FALCOR_HAS_MDL_SDK: ON
- FALCOR_ENABLE_USD: ON
+ FALCOR_ENABLE_USD: ON

im

Falcor 8.0

  • Falcor 8.0 was released on 19 Aug 2024 with a lot of amazing features and previous bug-fix
  • While I was updating my code repo, I was facing openvdb related runtime error, which I have fixed with on machine vcpkg openvdb
    • Additionally: openvdb added two more errors, in release Imath-3_1.dll, and in debug tbb12_debug.dll was missing, which I resolved with on-machine vcpkg
  • Finally, the Falcor readme says to use nvapi R535 (I guess they forgot to update here), did not work for me. I have tried with the latest nvapi R560 working. You can find the latest nvapi here
  • Although the original document still says using OptiX 7.3, I have tried with the latest OptiX 8.0.0, and it is working fine. Other than OptiX 7.3, I have also tried with OptiX 7.5, 7.6, 7.7, working fine as well. Further investigation may required. You may also need to fix dll missing, e.g., zlibd1.dll.