Optimizing Shaders

To determine whether shaders cause a performance bottleneck for the selected draw calls, you can change the shader code inside Graphics Frame Analyzer and check the performance effect without recompiling your code.

To experiment with shader code:

  1. Select one or more draw calls for which you would like to analyze the shader code.
  2. From the Resource List, choose the shader used in the selected draw calls. Graphics Frame Analyzer displays the shader source code and all the resources used by the shader.
  3. In the Shader Resource List, analyze resources used in the shaders grouped by type:

    • Constant Buffer View (CBV) (DirectX only)
    • Render Target View (RTV)
    • Sampler
    • Shader Resource View (SRV) (DirectX only)
    • Storage Buffer Object (SBO) (Vulkan only)
    • Storage Texture (Vulkan only)
    • Texture (Vulkan only)
    • Uniform Buffer Object (UBO) (Vulkan only)
    • Unordered Access View (UAV) (DirectX only)
    • Vertext Buffer View (VBV) (Vulkan only)

    Graphics Frame Analyzer displays various resource parameters, the shader type using the resource, and shader registers each resource is bound to. Resources are listed in the following format:

    <shader name>:<register ID>         <resource type>:<resource ID> (<view type><view ID>) <resource debug name>

    To open a resource, click the desired resource name.
  4. From the Shader Type drop-down list, select the type of shader you would like to analyze from the drop down menu . The shader code opens in the Shader Editor  . For easier reading, you can click the button to indent the code, and the button to preprocess the selected shader and hide the code paths that do not get executed.

  5. While Assembly code is read-only, you can experiment with the HLSL code for DirectX* and HLSL and GLSL for Vulkan*, if these codes are available for your shader. In this case, select HLSL or GLSL from the respective drop-down menu and edit the code directly in the Shader Viewer. The shader recompiles on the fly. If you introduced any errors, you can see the corresponding message in the Notification pane below the Shader Editor.
  6. If the code looks fine, click the button to save the changes.
    Graphics Frame Analyzer recalculates all metrics and displays new data in the Metrics pane and in the Main bar Chart.


    When you click the button, Graphics Frame Analyzer saves all the shaders. This enables you to write your own code and replace the whole shader to experiment.

  7. If you want to undo your edits, click the button. The original shaders are restored.

See Also

Profiling View Window

Resource Pane

For more complete information about compiler optimizations, see our Optimization Notice.