Implementing a Frame Graph
In this chapter, we are introducing frame graphs, a new system to control the rendering steps for a given frame. As the name implies, we are going to organize the steps (passes) required to render a frame in a Directed Acyclic Graph (DAG). This will allow us to determine the order of execution of each pass and which passes can be executed in parallel.
Having a graph also provides us with many other benefits, such as the following:
- It allows us to automate the creation and management of render passes and frame buffers, as each pass defines the input resources it will read from and which resources it will write to.
- It helps us reduce the memory required for a frame with a technique called memory aliasing. We can determine how long a resource will be in use by analyzing the graph. After the resource is no longer needed, we can reuse its memory for a new resource.
- Finally, we’ll be able to let the graph manage the insertion of memory...