The Shaders tab displays shader code for all applicable pipeline stages associated with the selected set of ergs and enables you to change it. The displayed shaders correspond to the selected ergs. For example, if no ergs are selected, then no shaders are shown.
The Shader column provides unique IDs for shaders of different types:
vertex shader (VS)
hull shader (HS)
domain shader (DS)
geometry shader (GS)
pixel shader (PS)
compute shader (CS).
For example, PS:326, PS:428, and VS:428 IDs correspond to different shaders.
Unique shader IDs are generated by Intel GPA and do not directly relate to anything in your original code.
GPU Time Column
The GPU Time column provides the cumulative GPU time (in microseconds) across all selected ergs for a given shader.
To see ergs that use a specific shader:
- Right-click on that shader and select "Select all Ergs that use this shader".
- Check ergs in the Scene Overview pane and in the Visualization pane.
For example, in the screenshot below, PS:697 is used by ergs 21, 23, 25, 27, 29, and 32. If you add up the shader times for PS:697, these 6 ergs take 77.6 microseconds in the GPU.
% GPU Column
The % GPU column shows the percent of the total GPU time used by all selected ergs. For example, PS:697 takes 77.6 microseconds, which is 40.8% of the total GPU time for ergs 21, 23, 25, 27, 29, and 32.
# Ergs Column
The # Ergs column shows how many ergs use this shader. For example, PS:697 is used by 6 ergs. To see which ergs use this shader, right-click on that shader and select "Select all Ergs that use this shader".
Code View Drop-down List
From the Code View drop-down list you can select which code to view - HLSL code, which is available only if the game supplies the high-level shading language at run time, or the Assembly code, which shows disassembled intermediate shader language. Assembly code is always available.
For the high-level shader view (if displayed), "include" paths are not currently viewable.
To view shader code, select a shader in the Shader column. The screenshot below illustrates vertex shader code.
The Profile button enables you to compute performance of the selected shader. When you click this button, the Shader tab displays:
- the total execution time for the analyzed shader, in microseconds
- the number of clocks that occurred during the measured period
- individual time for each shader instruction, in microseconds
Profiling is only supported on Intel microarchitecture code name Ivy Bridge or higher. For HLSL, the profiling information is only available if you compiled the analyzed shader with D3D debug flag for the applicable version of Microsoft DirectX*. Otherwise profiling information is only available for IL Assembly, and the Profile button for HLSL is disabled.
Replace File... Button
The Replace File... button enables you to specify the new shader source and replace the analyzed shader with another pre-existing shader.
Undo Edits Button
The Undo Edits button discards all changes if you edited the shader in the code field of the Shader tab.
Click this button to switch back to the original shader if you selected a different shader using the Replace File... button.
Click the Apply button if you want to apply the introduced shader changes to the selected ergs.
The Settings… button invokes the Shader Settings window where you can specify the options to the compiler.
Individual shaders need different settings. Graphics Frame Analyzer saves settings per shader ID and you can view the previous settings anytime you switch back to that shader.
You can apply the saved settings to the required shader any number of times, without opening the Shader Settings dialog box. For example, you specify some settings for VS:1, then go to PS:3 and set different settings. Later if you want to switch back to VS:1, the settings specified for VS:1 will be saved.