Frame Debugger – Unity Official Tutorials
Articles Blog

Frame Debugger – Unity Official Tutorials

August 23, 2019

In Unity rendering a frame to the screen occurs in a linear sequence of events. The Frame Debugger is a tool which lets you see all the steps involved in rendering a frame step by step. It allows you to the see intermediate render targets, shadow maps and each draw call that contributes to the frame, in order. The frame debugger is accessed from Window – Frame Debugger. The editor will pause and in the frame debug window a sequential list of each step involved in current frame will displayed. Many of these are draw called. But they also involve other render related events like frame buffer clears, which set the initial colours of the screen, or compute shader invocation. A draw call is a command in which the CPU sends content to be rendered, like meshes, to the GPU to be rendered as pixels for display. At the top of the window are two forward and back buttons along with a slider, which will allow you to step through this list in order. Selecting a single step in the process from the main list will cause that draw call or event, along with the steps prior to it, to be drawn in the game view. If that step is drawing a mesh renderer the game object with that mesh renderer attached will be highlighted in the hierarchy. Viewing a step in the main list allows you to see where in the overall process of drawing the frame it occurs. Related steps are grouped together and their views can be expanded or collapsed. Analysing frames in this way is useful to learn precisely how and in what order Unity is rendering your frame. When setting up a new project we can choose between 4 different render paths. Each render path renders content differently. Choosing which to use is highly dependent on the nature of your project. To choose a render path for your project navigate to Edit – Project Settings – Player and select a rendering path from the drop-down under Other Settings. For more information about the available render paths please see the information linked below. Each render path can use a different number of render targets. A render target is a feature of GPUs that allow a scene to be rendered to an intermediate memory buffer. Using the for Forward rendering path 1 render target is used by default. Here shown as RT0, along with a depth buffer. Using customer shaders it’s possible to use more render targets in forward rendering but using the standard shader this is the default behaviour. This project is in differed rendering mode. In differed rendering mode multiple render targets are used. When rendering to multiple targets at once you can select which display using the drop down menu. In this example we can see the diffuse, specular, normals, and emission and indirect lighting buffers in in Unity 5 differed shading mode using the standard shader. You can also see the depth buffer by selecting it from the same drop down. When an event is highlighted information will be displayed about that event in the information panel. In the case of draw calls the information panel also includes buttons which will allow you to isolate and visualise information, including the red, green, blue and alpha channels of the selected render target. You can also adjust the brightness of the display using the levels bracketed slider here. This can be useful in HDR rendering to isolate certain luminance ranges of a frame for analysis. Subtitles by the community

Only registered users can comment.

  1. Is there a way to use a frame debugger to show physics calculations per frame? I'm trying to pause on a specific frame for a physics based tutorial, but even using FixedUpdate and FixedDeltaTime doesn't consistently pause on the same frames for different devices (which have different FPS rates). Any idea if that's even possible to do?

  2. Hi, does Unity have a debugger for code? I use Netbeans for web development and with its debugger I can check every line of code step by step while it executes them. Does Unity have something similar?

Leave a Reply

Your email address will not be published. Required fields are marked *