The EnSight Visualization Application 435
21.4 Advanced Rendering
One of the most recognizable aspects of a visualization framework is its
interactive rendering system and associated user interface. The ease with
which useful visual representations of large, complex data sets may be con-
structed is one measure of the effectiveness of such interfaces. The EnSight
rendering infrastructure has undergone several major revisions designed to
improve this measure. Recent revisions have been motivated by the need to
support distributed-memory volume rendering and improve direct user inter-
action with extremely large data sets. These changes facilitated a move to a
more modern, Qt-based GUI (see Fig. 21.4) that supports improved direct
interaction mechanisms—drag and drop, context sensitive menus, etc.
In order to improve application responsiveness with large data sets, it be-
came necessary to be able to perform as many actions as possible without
forcing geometry to be re-rendered, as rendering-induced latency tends to in-
crease with the rendered polygon count. Additionally, direct interaction and
feedback methods introduced in the revised EnSight GUI added the require-
ment to support object-level picking and high performance object recognition,
with both geometry and annotation elements in the rendering system. The
resulting rendering system supports dynamic selection changes with object
silhouette highlighting and object picking, without forcing additional render-
ing operations. The approach is to base the rendering system on an image
fragment compositing system implemented with OpenGL shaders. This mech-
anism maps naturally to distributed parallel compositing, allowing a single,
unified system to support both simple desktop and distributed parallel ren-
dering.
The dynamic shader system uses OpenGL multiple render-target enabled
framebuffer objects, making it possible to break up the rendering pipeline
into independent, retained layers for the 3D geometry and 2D annotations.
Hardware picking and layered rendering make it possible to eliminate the tra-
ditional EnSight modes (plots, annotations, viewports, etc.), replacing them
with context-sensitive direct interaction, which accelerates and simplifies user
interaction. The system was developed as an extension to the existing parallel
compositing system. All of the geometry rendering operations are implemented
in a framework that is based on the ability to generate complete OpenGL
shader programs. The shader programs represent the current rendering state
dynamically, from a collection of shader program fragments.
21.4.1 Customized Fragment Rendering
The dynamic fragment system follows the Chromium [7] OpenGL model
without the network components. It uses a state tracking system [4] to deter-
mine what rendering functionality is active and computes the actual fragment
program from the state. As the core application makes OpenGL calls, a model
of the current rendering state is formed and tracked, avoiding the overhead of