When selecting points or cells from the render view, ParaView currently executes internally an “Extract Selection” filter to display the primitive under the mouse each time the mouse moves. The overview of the internal pipeline is depicted in Figure 1. While it is generally fast enough, when dealing with huge datasets the execution of the filter slows down the user experience, making the selection feature painful to use. This short article will explain how we managed to optimize this preselection feature and how to use it.
Fast preselection concept
Extracting preselection primitives is not conceptually required since these primitives are already displayed in the render view. In fact, all the point coordinates and cells topology that can be selected are already uploaded on the GPU in OpenGL buffers (vertex buffer object and index buffer object respectively). The main idea is to re-use the existing point coordinates and build a new small index buffer object corresponding to the preselected primitives directly from the VTK mapper. The new concept is illustrated by Figure 2.
Activate fast preselection
The fast preselection feature is already available in ParaView master and will be available in ParaView 5.9. It is currently disabled by default but can be enabled very easily in the render view tab advanced settings (see Figure 3).
- The feature works only for the interactive point and cell selection and the recently introduced point and cell value selection
- High order cells are not displayed properly (internal edges are visible)
- Only visible surface of 3D cells are displayed even if the surface is translucent
This work was supported by Electricité de France (EDF)
Developments were done by Kitware SAS, France