Rendering Dependency Graph

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

Windows
MacOS
Linux

As of Unreal Engine 4.23, the underlying implementation of the Rendering Dependency Graph (RDG) is still under development and lacks many of the performance benefits mentioned in this page. However, the API is stable and the renderer is in the process of being fully ported over to RDG. Also, all new rendering features are being written using RDG.

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

  • For a crash course on using RDG with many examples, see the following Power Point slide deck: RDG 101: A Crash Course

Select Skin
Light
Dark
언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼