Tech Summary

Understanding OpenGL Volumizer™ Technology

The New Standard for Volume Visualization
Volume visualization is one of the best ways of understanding increasingly large and complex sets of observed or simulated scientific and engineering data. Volume visualization techniques present an entire data set at once, and take advantage of the innate capabilities of the human visual system to distinguish depth and recognize patterns, trends, and anomalies in complex visual environments.

Volume visualization techniques require minimum preprocessing and enable users to interpret that data by applying their own knowledge of the scientific or engineering processes that underlie it. By magnifying the human intelligence applied to the interpretation process, scientists and engineers can create better solutions faster and at lower cost than ever before.

What Is OpenGL Volumizer?

Comparison between geometric and volumetric primitives

OpenGL Volumizer is a library of C++ classes that facilitates the manipulation and display of volumetric data sets common in geo-science, medical, scientific, and engineering applications. It provides a layer of functionality that sits on top of OpenGL® and integrates seamlessly into higher-level toolkits and applications.

Features include:

  • A high-level and extensible interface for volume rendering
  • Highly flexible design with low-level services and high-level utilities
  • Hardware acceleration on any system supporting OpenGL with 3D textures
  • Performance optimized for Onyx® class systems
  • Support for the combination of volume visualization with opaque geometry
  • Support for rendering of multiple co-registered volumes in a coherent fashion
  • Integrated shading capabilities for high image quality and graphics based visualization techniques
  • Large data management, through the use of data paging, memory management and graphics-resource control.
  • Thread safety, to allow implementation of multi-threaded applications that run on multiple processors and graphics engines to scale performance.
  • Inter-operability with existing toolkits such as OpenGL PerformerTM and the Visualization Toolkit
  • Application development tools like loaders for common data formats and sample source code.

Benefits of OpenGL Volumizer
Developers utilizing OpenGL Volumizer will see direct benefits in reduced development time, lower support cost, and increased performance. Even more importantly, developers can increase the differentiation of their products by redirecting resources from low-level optimization and maintenance toward increased functionality available through OpenGL Volumizer.

  • Minimum development time. By using a single API across all target platforms, application developers can focus on the differentiated features of their applications rather than the mechanics of how volume rendering is implemented on each hardware platform.

  • Maximum portability. Since the OpenGL Volumizer library is designed to run on multiple current and future SGI® platforms, applications that build on top of the library will run on new SGI systems with little or no reprogramming.

  • Maximum performance today. SGI has optimized OpenGL Volumizer for all current SGI workstations so application developers will be able to write their application once and achieve maximum performance on all systems.

  • Maximum performance tomorrow. OpenGL Volumizer will be optimized for all future SGI workstations, enabling applications developed on top of the library to quickly take maximum advantage of hardware and software advances.

  • Addition of volume visualization to existing applications. By layering on top of OpenGL, OpenGL Volumizer enables simple and immediate integration with geometry-based rendering; existing applications written in OpenGL and toolkits like OpenGL PerformerTM and the Visualization Toolkit can be upgraded with volume rendering capabilities rather than rewritten from scratch.

  • New volume visualization capabilities. OpenGL Volumizer directly supports a number of new capabilities that make volume visualization attractive in new application domains.

Volumetric Shaders

Example of Traditional Volume Rendering and High Quality Volume Rendering with Monkey Bone and Visible Woman shaded and unshaded images.
Traditional Volume Rendering   High Quality Volume Rendering
View Larger

OpenGL Volumizer allows you to apply different shading techniques in order to generate specific visual effects like the ones shown in these pictures. It provides a high-level easy-to-use interface to modern programmable graphics hardware to facilitate high quality rendering of volume data sets by incorporating custom shaders into an application.

Scalable Volume Visualization

volume rendering of seismic data with multiple graphics pipes using 3d decomposition arrow volume rendering of seismic data with multiple graphics pipes using dplex
Database Decomposition   Final Composited Result

There are a number of methods for scaling volume-rendering performance using multiple graphics pipes. The figure above shows database composition across four graphics pipes. The head data set is decomposed into four bricks by creating four shapes. Each shape is rendered on one pipe using one render action per pipe to generate partial images. These partial images are composited in order of their back-to-front visibility to generate the final image. Using this technique, four InfiniteReality4™ pipes can provide a combined texture memory size of 4GB and a linear increase in pixel-fill performance.

Volume Rendering Of Large Volumetric Data sets

Visible Male 1 Visible Male 2 Visible Knee
Three examples of volume rendering of large volumetric data sets. These examples were all generated from the 6.77GB visible male data set.

OpenGL Volumizer introduces 3D clip-textures to allow applications to visualize arbitrarily large volumetric data, by merging the advantages of volume roaming and multi-resolution techniques. These pictures show the visible male data set rendered interactively on an Onyx system with InfiniteReality3™ graphics (256 MB texture memory) using data paging techniques. The total data set is 6.77 GB in size and only 1 GB was allowed to be resident in main memory.