# Analyze a render graph in URP

> Check a render graph using the Render Graph Viewer, Rendering Debugger, or Frame Debugger.

There are several ways to analyse a render graph:

* [Use the Render Graph Viewer](#use-the-render-graph-viewer)
* [Use the Rendering Debugger](#use-the-rendering-debugger)
* [Use the Frame Debugger](#use-the-frame-debugger)

## Use the Render Graph Viewer

To open the **Render Graph Viewer** window, go to **Window > Analysis > Render Graph Viewer**.

The Render Graph Viewer window displays a render graph, which is the optimized sequence of render passes the Universal Render Pipeline (URP) steps through each frame. The Render Graph Viewer displays both built-in render passes and any [custom render passes](/engine/6000.0/manual/render-pipelines/universal-render-pipeline/customizing-urp/intro-to-scriptable-render-passes.md) you create.

For more information about the **Render Graph Viewer** window, refer to [Render Graph Viewer window reference](/engine/6000.0/manual/render-pipelines/universal-render-pipeline/customizing-urp/render-graph/viewer-reference.md).

### View a render graph

The **Render Graph Viewer** window displays the render graph for the current scene by default. To select another render graph, use the dropdown in the toolbar.

#### Example: check how URP uses a resource

You can use the resource access blocks next to a resource name to check how the render passes use the resource.


**Render Graph Viewer example:**
![](/api/media?file=/engine/6000.0/media/images/render-graph-viewer.png)

In this example, the `_MainLightShadowmapTexture_` texture goes through the following stages:

1. During the first five render passes between **InitFrame** and **SetupCameraProperties**, the texture doesn't exist. The resource access blocks are dotted lines.

2. The **Main Light Shadowmap** render pass creates the texture as a global texture, and has write-only access to it. The resource access block is red. For more information about global textures, refer to [Transfer textures between passes](/engine/6000.0/manual/render-pipelines/universal-render-pipeline/customizing-urp/render-graph/working-with-textures/pass-textures-between-passes.md).

   The blue merge bar below **Main Light Shadowmap** means URP merged **Main Light Shadowmap**, **Additional Lights Shadowmap** and **SetupCameraProperties** into a single render pass.

3. The next five render passes don't have access to the texture. The resource access blocks are gray.

4. The first **Draw Objects** render pass has read-only access to the texture. The resource access block is green.

5. The next two render passes don't have access to the texture. The resource access blocks are gray.

6. The second **Draw Objects** render pass has read-only access to the texture. The resource access block is green.

7. Unity destroys the texture, because it's no longer needed. The resource access blocks are blank.

### Check how URP optimized a render pass

To check the details of a render pass, for example to find out why it's not a native render pass or a merged pass, do either of the following:

* Select the render pass name to display the details in the Pass List.
* Below the render pass name, hover your cursor over the gray, blue, or flashing blue resource access overview block.

For more information about displaying details of a render pass, refer to [Render Graph Viewer window reference](/engine/6000.0/manual/render-pipelines/universal-render-pipeline/customizing-urp/render-graph/viewer-reference.md).

## Use the Rendering Debugger

You can use the Rendering Debugger to log the resources URP uses and how it uses them, in the **Console** window.

To enable logging, follow these steps:

1. Select **Window > Analysis > Rendering Debugger** to open the **Rendering Debugger** window.
2. In the left pane, select the **Render Graph** tab.
3. Enable **Enable Logging**.
4. Select either **Log Frame Information** to log how URP uses resources, or **Log Resources** to log details about the resources.
5. Select the new item in the **Console** window to display the full log.

For more information about the Rendering Debugger, refer to [Rendering Debugger](/engine/6000.0/manual/analysis/graphics-performance-profiling/in-urp/understand-performance/rendering-debugger.md).

## Use the Frame Debugger

Use the [Frame Debugger](https://docs.unity3d.com/2023.3/Documentation/Manual/frame-debugger-window.html) to check the render passes and draw calls in the rendering loop.

The Frame Debugger displays the following in the [Event Hierarchy panel](https://docs.unity3d.com/Manual/frame-debugger-window-event-hierarchy.html) when the render graph system is active:

* A parent rendering event called **ExecuteRenderGraph**.
* Child rendering events called **(RP \<render-pass>:\<subpass>)**, where `<render-pass>` is the render pass number and `<subpass>` is the subpass number.

The Frame Debugger shows only render passes that contain a draw call.

For more information about the Frame Debugger, refer to [Frame Debugger](https://docs.unity3d.com/2023.3/Documentation/Manual/frame-debugger-window.html).

## Additional resources

* [Optimize a render graph](/engine/6000.0/manual/render-pipelines/universal-render-pipeline/customizing-urp/render-graph/optimize.md)
* [Render graph system](/engine/6000.0/manual/render-pipelines/universal-render-pipeline/customizing-urp/render-graph.md)
* [Rendering in the Universal Render Pipeline](/engine/6000.0/manual/render-pipelines/universal-render-pipeline/introduction/urp-concepts/rendering-in-universalrp.md)
* [Frame Debugger](https://docs.unity3d.com/2023.3/Documentation/Manual/frame-debugger-window.html)
* [Rendering Debugger](/engine/6000.0/manual/analysis/graphics-performance-profiling/in-urp/understand-performance/rendering-debugger.md)
* [Understand performance](/engine/6000.0/manual/analysis/graphics-performance-profiling/in-urp/understand-performance/understand-performance.md)
