Graphics Performance Analysis

Graphics Performance Analysis

This page contains information regarding the tools provided by Vortex® to help find graphics performance issues.

Vortex Performance Tools

Different tools are provided in order to keep an eye out for graphics performance issues. More often than not though, the users will recognize the potential issues after experiencing stuttering and will then start investigating using these same tools. The graphics performance tools are meant to be used with the Vortex Studio Player; Vortex Studio Editor is not optimized for performance and should not be used to calculate and investigate performance issues.

Polygon Mode Switching

When pressing F2, the user can change the polygon modes of what is displayed. The polygon modes are as follows:

  • Normal: No changes to shading

  • Wireframe: Displays the meshes as wireframes. Useful to find meshes with a lot of vertices.

  • Point: Shows the meshes as points only. Useful to find out if there is some pixel shading bottleneck.

Normal

Wireframe

Point

Statistics

This shows an overlay of statistics which comes from the Profiler. Values are updated at every frame and provides both the instant FPS as well as the average FPS over 60 frames.

Note that the min and max counts are usually the ones the user should be looking at in order to find spikes and instability.

  • Cur: Value for the current frame.

  • Min: Minimum value over 60 frames.

  • Max: Maximum value over 60 frames.

  • Avg: Average of the accumulated values over 60 frames.

The following lists the different pages which can be cycled through by pressing F3.

Page 1

  • Synchronisation Mode (V Sync, SW Sync, Sync Off, SW+V Sync): Indicates the current sync mode used by the node, and can be toggled with F4, in the top left corner.

  • Frame Rate: Rate of the frame rendering (frame per second); inverse of cycle time.

Page 2

  • Timings in ms (milliseconds):

    • Cycle Time: Time taken by the application to execute all instructions for one frame and come back to the same point in the code (application update + time spent outside of the update function.

    • Application Update: Time taken by the application to execute all instructions for one frame (UI, Graphics, Network...).

    • SW Sync: Time taken by the application to wait for the time step to reach 16 ms/60 Hz - depends on current synchronization mode.

    • UI Events: Time taken to compute user interface events in the application.

    • Graphics: Time taken by the graphics module to execute all graphics instructions for one frame.

      • Extensions: Time taken by the graphics extensions to complete a cycle.

      • Snapshots: Time taken to call all snapshotables takeSnapshot().

      • PV Snapshots: Time taken to call all snapshotables per view takeSnapshot().

      • Culling: Time taken to cull unnecessary geometry.

      • Resources: Time taken to prepare the required GPU resources (e.g., textures, meshes).

      • CPU Draw: Time taken to perform the drawcalls.

      • Buffer Swap & VSync: Time taken to execute the buffer swap and VSync; depends on current synchronization mode.

    • Network: Time taken to deserialize the network information.

      • GPU Draw: Time taken to fully complete a set of GL commands to render all views.

  • Usage in percentage; press Ctrl+F3 for it to activate (may impact performance):

    • CPU Memory: Percentage of system-used CPU memory on the machine running the application.

    • GPU Memory: Percentage of used GPU memory on the graphics card running the application.

    • GPU Processor: Percentage of GPU usage on the graphics card running the application.

    • GPU Memory I/O: Percentage of memory I/O usage on the graphics card running the application.

Page 3

  • Lights: The total amount of lights in the scene (active or not).

  • Lights (Active): The total amount of activated/visible lights in the scene.

  • Lights (Casting Shadows): The total amount of active lights casting shadows.

  • Shadow Map Count: The shadow map count. The point, spot and directional lights usually use one map count. The directional light depends on the settings in the Adaptive Feature Controller extension.

  • Draw Calls: The total amount of draw calls being sent to the GPU. This depends on many things including:

    • Everything rendered (3d, 2d and UI elements)

    • Frustum culling

    • Shadow casters (don't forget frustum culling applies here as well)

    • Picking (in the Editor, activates when user moves the mouse)

    • Object selection (blueish tint when selecting an object in the Editor)

    • Instancing - the instancer module puts meshes together into an instanced draw when possible. This instanced draw also has a maximum size so many draws can trigger multiple instanced draws.

  • GPU Draw Executions: The same value minus the instancing processing. In other words, the instances are not merged together.

  • Vertex Count: The total amount of vertices sent and processed by the GPU.

  • Extensions: The total amount of graphics extensions which require an update on every iteration. The HeightField is a good example but a geometry is only meant to be data so it does not require an update.

  • Extensions (Updateable): The total amount of graphics extensions which require an update on every iteration. The HeightField is a good example but a geometry is only meant to be data so it does not require an update.

  • Snapshotables: The total amount of snapshotables. A snapshotable is an object which generates snapshots sent to the graphics engine. It can be anything including a simple graphics node or even a mirror.

  • Preparators: The total amount of view snapshots which generates the draws.

  • Preparators (Enabled): The total amount of active preparators.

  • Views: The total amount of view snapshots (viewport, mirror, picture in picture, ocean reflection, etc).

  • Views (Enabled): The total amount of activated views.

  • Passes: The total amount of passes which is usually composed of every rendering step for all the different effects. For instance, clear, background, depth prepass, opaque pass, etc.

  • Passes (Enabled): The total amount of activated passes