Visualization Library

Visualization Library
Initial release May 7, 2007 (2007-05-07)
Stable release
1.0.0 / May 16, 2012 (2012-05-16)
Written in C++
Operating system Cross-platform
Type 3D graphics
License Simplified BSD License
Website visualizationlibrary.org

Visualization Library (VL) is an open source C++ middleware for 2D/3D graphics applications based on OpenGL 4, designed to develop portable applications for the Microsoft Windows, Linux and Mac OS X operating systems.

Design goals

Visualization Library was designed to:

  1. Implement an intuitive, thin and portable C++ wrapper around OpenGL 4.
  2. Be fully compatible with older versions of OpenGL (1.x, 2.x and 3.x).
  3. Deliver the features and performances of modern GPUs also to non-gaming applications, like virtual reality, scientific and medical visualization, simulators, training and so on.
  4. Provide a generic and fine-grained framework that can be used to assemble customized rendering techniques.
  5. Avoid the architectural limitations of the uber-scene-graph paradigm.
  6. Give to the programmer as much control as possible while taking care of the dirty details.

Internal design

Visualization Library design is based on algorithmic and data structure specialization and separation, unlike many other 3D frameworks part of the so-called "uber scene graph" family, that is, those 3d engines that keep all the rendering information in a single hierarchical structure. Thus, Visualization Library uses different data structures (possibly hierarchical) to manage each particular domain of the rendering pipeline. For example, the transform tree is kept in a separate tree graph data structure and the objects part of the scene ("Actors" in Visualization Library parlance) can freely refer to a node of the transform tree. Actors are kept in their own scene partitioning data structure from which their visibility is tested against the view frustum and from which eventually they are extracted at rendering time to be part of the rendering queue. This allow VL to be independent from, and take advantage of, virtually any type of scene management technique, such as PVS, portal/sector, KdTree, quad trees, octrees etc. Shaders are also a concept that is kept independent from the rest of the logic and do not require any hierarchical data structure to be used by an Actor. However VL provides a ShaderNode class, as a high level service, that allows the user to update and manage Shaders in a hierarchical way using inheritance rules similar to the ones commonly available in uber-scene-graph based frameworks. The rendering pipeline follows a similar modular approach, so that highly customized rendering techniques can be implemented by assembling and reusing VL components.

Main features

Development status

The first public release of Visualization Library was on May 7, 2007. Visualization Library is currently at its second stable release, VL 2011.05.1140, which follows the first one, VL 2009.07.640. While the design remained essentially the same the latest stable release differs from its predecessor mainly for: supporting OpenGL 3 and 4 and in particular tessellation shaders, double precision uniform variables, new texture formats such as multisample textures and texture objects, extensive framebuffer object support and a better tuning for applications that make heavy use of GLSL, among many other enhancements.

See also

This article is issued from Wikipedia - version of the 5/7/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.