Rendering Dependency Graph

The Rendering Dependency Graph is a graph-based scheduling system designed to perform whole-frame optimization of the render pipeline.

Choose your operating system:

Windows

macOS

Linux

The Rendering Dependency Graph , also called RDG or Render Graph, is a graph-based scheduling system designed to perform whole-frame optimization of the render pipeline. It takes advantage of modern APIs, like DirectX 12, to improve performance through the use of automatic asynchronous-compute scheduling, as well as more efficient memory and barrier management.

DirectX 11 and OpenGL style APIs require the driver to invoke complex heuristics to determine when and how to perform critical scheduling operations on the GPU. Examples would include flushing caches, managing and reusing memory, or performing layout transitions. The immediate-mode nature of the interface requires complex bookkeeping and state-tracking to handle every edge case—ultimately, negatively impacting performance and hampering parallelism.

Modern graphics APIs, like DirectX 12, Vulkan, and Metal 2, have shifted away from this model, instead opting to shift the burden of low-level GPU management to the application itself. This presents an opportunity to improve performance and simplify the rendering stack by exploiting higher-level context of the rendering pipeline to drive scheduling.

The concept for RDG works as follows: instead of executing passes immediately on the GPU, execution is deferred until the entire frame is recorded into a dependency graph data structure. Once all passes are gathered, the graph is compiled and executed in dependency-sorted order.

The whole-frame knowledge of the dependency graph data structure paired with the power of modern graphics APIs enables RDG to perform complex scheduling tasks under the hood, completely transparent to the user:

  • Performs automatic scheduling and fencing of asynchronous-compute passes.

  • Keeps alias memory between resources active during disjoint intervals of the frame.

  • Kicks off barriers and layout transitions early to avoid pipeline stalls.

Furthermore, RDG capitalizes on the dependency-graph to provide rich validation during pass setup, improving the development process by automatically catching both functional and performance-affecting issues.

Additional Notes and Resources

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Dismiss