Visualization Library

Last updated
Visualization Library
Initial releaseMay 7, 2007;13 years ago (2007-05-07)
Stable release
1.0.0 / May 16, 2012;8 years ago (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.

Contents

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, quadtrees, 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

Related Research Articles

OpenGL application programming interface for rendering 2D and 3D vector graphics

OpenGL is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware acceleration if it is available on the graphics card, allowing for hardware acceleration of the entire 3D rendering pipeline or even only partial acceleration. Direct3D exposes the advanced graphics capabilities of 3D graphics hardware, including Z-buffering, W-buffering, stencil buffering, spatial anti-aliasing, alpha blending, color blending, mipmapping, texture blending, clipping, culling, atmospheric effects, perspective-correct texture mapping, programmable HLSL shaders and effects. Integration with other DirectX technologies enables Direct3D to deliver such features as video mapping, hardware 3D rendering in 2D overlay planes, and even sprites, providing the use of 2D and 3D graphics in interactive media ties.

Scene graph term

A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games, which arranges the logical and often spatial representation of a graphical scene. It is a collection of nodes in a graph or tree structure. A tree node may have many children but only a single parent, with the effect of a parent applied to all its child nodes; an operation performed on a group automatically propagates its effect to all of its members. In many programs, associating a geometrical transformation matrix at each group level and concatenating such matrices together is an efficient and natural way to process such operations. A common feature, for instance, is the ability to group related shapes and objects into a compound object that can then be manipulated as easily as a single object.

Irrlicht is an open-source game engine written in C++. It is cross-platform, officially running on Windows, macOS, Linux and Windows CE and due to its open nature ports to other systems are available, including FreeBSD, Xbox, PlayStation Portable, Symbian, iPhone and Google Native Client.

PHIGS is an application programming interface (API) standard for rendering 3D computer graphics, considered to be the 3D graphics standard for the 1980s through the early 1990s. Subsequently, a combination of features and power led to the rise of OpenGL, which became the most popular professional 3D API of the mid to late 1990s.

Java 3D

Java 3D is a scene graph-based 3D application programming interface (API) for the Java platform. It runs on top of either OpenGL or Direct3D until version 1.6.0, which runs on top of Java OpenGL (JOGL). Since version 1.2, Java 3D has been developed under the Java Community Process. A Java 3D scene graph is a directed acyclic graph (DAG).

Shader subroutine that may run on a graphics processing unit and is used to do shading, special effects, post processing, or general purpose computation

In computer graphics, a shader is a type of computer program originally used for shading in 3D scenes. They now perform a variety of specialized functions in various fields within the category of computer graphics special effects, or else do video post-processing unrelated to shading, or even perform functions unrelated to graphics at all.

OpenGL ES A subset of the OpenGL API for embedded systems

OpenGL for Embedded Systems is a subset of the OpenGL computer graphics rendering application programming interface (API) for rendering 2D and 3D computer graphics such as those used by video games, typically hardware-accelerated using a graphics processing unit (GPU). It is designed for embedded systems like smartphones, tablet computers, video game consoles and PDAs. OpenGL ES is the "most widely deployed 3D graphics API in history".

OpenSceneGraph open-source 3D graphics application programming interface

OpenSceneGraph is an open-source 3D graphics application programming interface, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling.

COLLADA is an interchange file format for interactive 3D applications. It is managed by the nonprofit technology consortium, the Khronos Group, and has been adopted by ISO as a publicly available specification, ISO/PAS 17506.

A shading language is a graphics programming language adapted to programming shader effects. Such language forms usually consist of special data types, like "vector", "matrix", "color" and "normal". Due to the variety of target markets for 3D computer graphics, different shading languages have been developed.

OpenGL Shading Language shading language

OpenGL Shading Language (GLSL) is a high-level shading language with a syntax based on the C programming language. It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use ARB assembly language or hardware-specific languages.

Quartz Composer programming language

Quartz Composer is a node-based visual programming language provided as part of the Xcode development environment in macOS for processing and rendering graphical data.

Multisample anti-aliasing (MSAA) is a type of spatial anti-aliasing, a technique used in computer graphics to remove jaggies.

Perl OpenGL software: portable, compiled wrapper library

Perl OpenGL (POGL) is a portable, compiled wrapper library that allows OpenGL to be used in the Perl programming language.

Clutter is a GObject-based graphics library for creating hardware-accelerated user interfaces. Clutter is an OpenGL-based 'interactive canvas' library and does not contain any graphical control elements. It relies upon OpenGL (1.4+) or OpenGL ES for rendering,. It also supports media playback using GStreamer and 2D graphics rendering using Cairo.

HOOPS Visualize is a 3D computer graphics designed to render graphics across both mobile and desktop platforms.

CopperLicht is an open-source JavaScript library for creating games and interactive 3D applications using WebGL, developed by Ambiera. The aim of the library is to provide an API for making it easier developing 3D content for the web. It is supposed to be used together with its commercial 3D world editor CopperCube, but it can also be used without.

In computing, Stage3D is an Adobe Flash Player API for rendering interactive 3D graphics with GPU-acceleration, within Flash games and applications. Flash Player or AIR applications written in ActionScript 3 may use Stage3D to render 3D graphics, and such applications run natively on Windows, Mac OS X, Linux, Apple iOS and Google Android. Stage3D is similar in purpose and design to WebGL.

This is a glossary of terms relating to computer graphics.