• Stars
    star
    2,416
  • Rank 18,346 (Top 0.4 %)
  • Language
    C++
  • License
    Other
  • Created almost 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Real-Time Rendering Framework

Falcor

Falcor is a real-time rendering framework supporting DirectX 12 and Vulkan. It aims to improve productivity of research and prototype projects.

Features include:

  • Abstracting many common graphics operations, such as shader compilation, model loading, and scene rendering
  • Raytracing support
  • Python scripting support
  • Render graph system to build modular renderers
  • Common rendering techniques such post-processing effects
  • Unbiased path tracer
  • Integration of various RTX SDKs such as DLSS, RTXDI and NRD

Prerequisites

Optional:

  • Windows 10 Graphics Tools. To run DirectX 12 applications with the debug layer enabled, you must install this. There are two ways to install it:
    • Click the Windows button and type Optional Features, in the window that opens click Add a feature and select Graphics Tools.
    • Download an offline package from here. Choose a ZIP file that matches the OS version you are using (not the SDK version used for building Falcor). The ZIP includes a document which explains how to install the graphics tools.
  • NVAPI, CUDA, OptiX (see below)

Building Falcor

Falcor uses the CMake build system. Additional information on how to use Falcor with CMake is available in the CMake development documetation page.

Visual Studio

If you are working with Visual Studio 2022, you can setup a native Visual Studio solution by running setup_vs2022.bat after cloning this repository. The solution files are written to build/windows-vs2022 and the binary output is located in build/windows-vs2022/bin.

Visual Studio Code

If you are working with Visual Studio Code, run setup.bat after cloning this repository. This will setup a VS Code workspace in the .vscode folder with sensible defaults (only if .vscode does not exist yet). When opening the project folder in VS Code, it will prompt to install recommended extensions. We recommend you do, but at least make sure that CMake Tools is installed. To build Falcor, you can select the configure preset by executing the CMake: Select Configure Preset action (Ctrl+Shift+P). Choose the Windows Ninja/MSVC preset (or one for a different rendering backend). Then simply hit Build (or press F7) to build the project. The binary output is located in build/windows-ninja-msvc/bin.

Warning: Do not start VS Code from Git Bash, it will modify the PATH environment variable to an incompatible format, leading to issues with CMake.

Configure Presets

Falcor uses CMake Presets store in CMakePresets.json to provide a set of commonly used build configurations. You can get the full list of available configure presets running cmake --list-presets:

$ cmake --list-presets
Available configure presets:

  "windows-vs2022"           - Windows VS2022
  "windows-ninja-msvc"       - Windows Ninja/MSVC
  "linux-clang"              - Linux Ninja/Clang
  "linux-gcc"                - Linux Ninja/GCC

Use cmake --preset <preset name> to generate the build tree for a given preset. The build tree is written to the build/<preset name> folder and the binary output files are in build/<preset name>/bin.

An existing build tree can be compiled using cmake --build build/<preset name>.

Note: Some render passes (RTXGI, RTXDI, DLSS in particular) are not fully working with the new Slang GFX backend.

Microsoft DirectX 12 Agility SDK

Falcor uses the Microsoft DirectX 12 Agility SDK to get access to the latest DirectX 12 features. Applications can enable the Agility SDK by putting FALCOR_EXPORT_D3D12_AGILITY_SDK in the main .cpp file. Mogwai, FalcorTest and RenderGraphEditor have the Agility SDK enabled by default.

NVAPI

To enable NVAPI support, head over to https://developer.nvidia.com/nvapi and download the latest version of NVAPI (this build is tested against version R520). Extract the content of the zip file into external/packman/ and rename R520-developer to nvapi.

NSight Aftermath

To enable NSight Aftermath support, head over to https://developer.nvidia.com/nsight-aftermath and download the latest version of Aftermath (this build is tested against version 2023.1). Extract the content of the zip file into external/packman/aftermath.

CUDA

To enable CUDA support, download and install CUDA 11.6.2 or later and reconfigure the build.

See the CudaInterop sample application located in Source/Samples/CudaInterop for an example of how to use CUDA.

OptiX

If you want to use Falcor's OptiX functionality (specifically the OptixDenoiser render pass) download the OptiX SDK (Falcor is currently tested against OptiX version 7.3) After running the installer, link or copy the OptiX SDK folder into external/packman/optix (i.e., file external/packman/optix/include/optix.h should exist).

Note: You also need CUDA installed to compile the OptixDenoiser render pass, see above for details.

NVIDIA RTX SDKs

Falcor ships with the following NVIDIA RTX SDKs:

Note that these SDKs are not under the same license as Falcor, see LICENSE.md for details.

Falcor Configuration

FalcorConfig.h contains some flags which control Falcor's behavior.

  • FALCOR_ENABLE_LOGGER - Enable/disable the logger. By default, it is set to 1.
  • FALCOR_ENABLE_PROFILER - Enable/disable the internal CPU/GPU profiler. By default, it is set to 1.

Resources

Citation

If you use Falcor in a research project leading to a publication, please cite the project. The BibTex entry is

@Misc{Kallweit22,
   author =      {Simon Kallweit and Petrik Clarberg and Craig Kolb and Tom{'a}{\v s} Davidovi{\v c} and Kai-Hwa Yao and Theresa Foley and Yong He and Lifan Wu and Lucy Chen and Tomas Akenine-M{\"o}ller and Chris Wyman and Cyril Crassin and Nir Benty},
   title =       {The {Falcor} Rendering Framework},
   year =        {2022},
   month =       {8},
   url =         {https://github.com/NVIDIAGameWorks/Falcor},
   note =        {\url{https://github.com/NVIDIAGameWorks/Falcor}}
}

More Repositories

1

kaolin

A PyTorch Library for Accelerating 3D Deep Learning Research
Python
4,238
star
2

PhysX

NVIDIA PhysX SDK
C++
2,893
star
3

PhysX-3.4

NVIDIA PhysX SDK 3.4
C++
2,307
star
4

kaolin-wisp

NVIDIA Kaolin Wisp is a PyTorch library powered by NVIDIA Kaolin Core to work with neural fields (including NeRFs, NGLOD, instant-ngp and VQAD).
Python
1,431
star
5

rtx-remix

Combined repo for the RTX-Remix runtime
1,248
star
6

DxrTutorials

C++
824
star
7

RTXGI-DDGI

RTX Global Illumination (RTXGI)
C++
654
star
8

GettingStartedWithRTXRayTracing

Getting Started with RTX Ray Tracing
C++
613
star
9

FleX

C++
579
star
10

RTX-Path-Tracing

Real-time path tracing library and sample
C++
571
star
11

nvrhi

C++
525
star
12

RayTracingDenoiser

NVIDIA Ray Tracing Denoiser
HLSL
461
star
13

FaceWorks

A middleware library and sample application for high-quality skin and eye rendering
C++
450
star
14

NVIDIAImageScaling

NVIDIA Image Scaling SDK
C
426
star
15

Streamline

Streamline Integration Framework
C
348
star
16

Blast

A modular destruction SDK designed for performance and flexibility, replacing APEX destruction
C++
331
star
17

RTXDI

C++
311
star
18

NvCloth

C
286
star
19

dxvk-remix

C++
274
star
20

KickstartRT

KickstartRT SDK
C++
178
star
21

Flow

Flow is a sparse grid-based fluid simulation library for real-time applications.
C
168
star
22

donut

C++
164
star
23

HBAOPlus

HBAO+
C++
160
star
24

bridge-remix

This is the NVIDIA RTX Remix Runtime Bridge repository
C++
137
star
25

SpatiotemporalBlueNoiseSDK

C
124
star
26

Displacement-MicroMap-Toolkit

C++
121
star
27

UnityPhysXPlugin

Experimental Unity package to enable access to NVIDIA PhysX SDK 4 from within Unity.
C#
121
star
28

NRI

C++
90
star
29

RTXMU

C++
89
star
30

donut_examples

C++
72
star
31

NRDSample

C++
69
star
32

ShaderMake

Shader Compilation Tool
C++
69
star
33

GeForceNOW-SDK

This is the home of the SDK for GeForce NOW
C
65
star
34

KickstartRT_demo

Repo for KickstartRT demo application
C++
49
star
35

Opacity-MicroMap-SDK

Opacity Micro-Map SDK Source Repository
C++
36
star
36

MathLib

C++
28
star
37

Displacement-MicroMap-SDK

C++
19
star
38

nas-sample

C++
16
star
39

Streamline_Sample

C++
16
star
40

Opacity-MicroMap-Samples

Samples repository for the Opacity MicroMap SDK
C++
11
star
41

Displacement-MicroMap-BaryFile

C++
11
star
42

NRIFramework

C
8
star
43

NRISamples

C++
7
star