Welcome to osgCompute - a nodekit for OpenSceneGraph
osgCompute is the abstract base library for the execution of code on parallel streaming processors. The library is connected to OpenSceneGraph (OSG) and thus it can be included in the scenegraph. It gives the user the possibility to jump to the Graphics Processing Unit (GPU) for any kind of calculations. The manipulated data is then afterwards available to the scenegraph for further processing (e.g. rendering). |
|
osgCuda is based on the osgCompute library and implements the specific functionality for NVIDIA's CUDA. CUDA is a general purpose parallel computing architecture that leverages the parallel compute engine in NVIDIA GPUs to solve many complex computational problems in a fraction of the time required on a CPU. |
|
What is next? OpenCL (Open Computing Language) is a new heterogeneous computing environment. A release of a OpenCL API/driver interface doesn't exist at the moment. The use of osgCompute as the base library for the connection of OpenCL and OSG looks promising.
For support please subscribe to the public mailing list of OpenSceneGraph or go directly to the OpenSceneGraph forum which is synchronized with the mailing lists.
News
| 30th, March 2010 | Version 0.7 of osgCompute has been tagged. This version includes some minor bug fixes and provides easy context handling (see download section). |
| 16th, December 2009 | Version 0.6 of osgCompute has been tagged. This version is compatible with the current OSG-svn/trunk/2.9.6 version (see download section). In addition to Windows and Linux operating systems the current version of osgCompute officially supports Mac OS X. |
| 10th, December 2009 | Version 0.5 of osgCompute has been tagged. Please see the download section for further details. |
| 11th, November 2009 | A new example "osgGeometryDemo" has been added. |
| 28th, September 2009 | osgCompute has been continuously updated during the last months. Please download the latest tagged version (0.4) of osgCompute or check out the SVN trunk. |
| 20th, April 2009 | SVN trunk is now open to the public and can be downloaded. Since the documentation is not finished yet please refer to the examples to obtain any explanations. |
Features
osgCompute takes advantage of parallel streaming processors on GPUs. It offers a simple interface for GPU progamming which dramatically increases the speed of your application (since osgCuda is the only library which implements this functionality we refer to some CUDA specific terms in the following):
- Jump to the GPU within the OSG scenegraph for GPU calculations
- Further processing of the GPU data within the OSG scenegraph
- Basic data types of the streaming processors are encapsulated in Buffers
- Buffers ensure a proper exchange of OSG and CUDA data types as well as between various modules
- Quick start for scientific visualization
- Examples easily describe how to use the library
- osgCuda supports the latest Runtime API of CUDA
- Easy debugging of the graphics kernels
Examples
The osgCompute library contains some examples which show the library's usage and its capabilities in principle. For any details please examine the source code of the examples.
![]() |
osgEndiannessDemo uses osgCuda for computing a simple swap of the byte order of a given input stream. This example demonstrates the usage of osgCuda with no OpenGL functionality. |
![]() |
osgGeometryDemo uses osgCuda and the OSG scenegraph for a deformation of the geometry. The osgCuda::Module "warp" moves the vertices along the normal vector. The result is then rendered by OSG. |
![]() |
osgParticleDemo uses osgCuda and the OSG scenegraph for a simple particle movement. Two osgCuda::Modules take care of the particle emitter and the particle mover functionality. The result calculated by the modules is then rendered by OSG using a point sprite approach for proper visualization. |
![]() |
osgTexDemo loads an osg::Image which is then processed by an osgCuda::Module. The module uses CUDA arrays and CUDA texture filtering. Finally, the result is rendered by OSG. |
Usage
osgCompute implements its computation node as a RenderBin and thus it can be used similar to an osg::Camera in the scenegraph or as a leaf node. A RenderBin can contain further RenderBins producing a tree hierarchy of RenderBins. Here is a simple scenegraph example: first, the computation is processed. Its results then can be applied to the rest of the scenegraph. |
|
Requirements
- We recommend using the OSG-2.8 branch or even the current OSG-svn/trunk/2.9.x version of OpenSceneGraph for testing the latest developer release of osgCompute, although it should also work with former OpenSceneGraph versions
- CMake build system to generate a platform-specific build environment
- osgCuda needs a proper CUDA driver for your NVIDIA graphics card
Restrictions
- The current SVN version of OpenSceneGraph (OSG-svn/trunk/2.9.x or later) or the upcoming release of OpenSceneGraph-2.8.1 is recommended for the support of multithreading with osgCuda
- The Driver API is currently not supported by osgCuda
- An OSG scenegraph which includes osgCompute cannot be saved to a file at the moment
Future Work
- We are working on a feature which enables the osgCompute modules to be loaded and saved together with the OSG scenegraph
- The connection to OpenCL might also be a nice challenge
Documentation
A doxygen documentation of the source code will be available soon.
Download
Source: Please use the following svn command in order to get the latest revision of the osgCompute source:
|
Example Data: If the examples are compiled please ensure that the data will be available. Please add the path of the data directory to your OSG_FILE_PATH environment variable. This ensures that OSG is able to load the
necessary data successfully. The latest svn revision of the data can be obtained here:
|
Or download the following source packages (we recommand to compile and run the sources with the osg-version they were created for):
| File | Description | Size | Date | OSG Version |
| osgCompute-0.7.zip | Latest developer release | 153KB | 03/30/10 | OSG-svn/trunk/2.9.6 |
| osgCompute-Data-0.7.zip | Example data | 170KB | 03/30/10 | |
Older Versions: |
||||
| osgCompute-0.6.zip | 153KB | 12/16/09 | OSG-2.9.6 | |
| osgCompute-Data-0.6.zip | 170KB | 12/16/09 | ||
| osgCompute-0.5.zip | 150KB | 12/10/09 | OSG-2.8.x | |
| osgCompute-Data-0.5.zip | 170KB | 12/10/09 | ||
| osgCompute-0.4.zip | 153KB | 09/28/09 | OSG-2.8.x | |
| osgCompute-Data-0.4.zip | 170KB | 09/28/09 | ||
| osgCompute-0.2.zip | 132KB | 04/09/09 | OSG-2.8.x | |
| osgCompute-Data-0.2.zip | 170KB | 04/09/09 | ||
| osgCompute-0.1.zip | 130KB | 04/06/09 | OSG-2.8.x | |
| osgCompute-Data-0.1.zip | 170KB | 04/06/09 | ||
License
osgCompute is protected by Copyright, and is licensed as OpenSource, so the source code is freely available, modifyable and redistributed under terms of the Lesser Gnu Public License (LGPL).
Acknowledgements
We would like to thank Robert Osfield for his support regarding osgCompute and for his incredible work on OpenSceneGraph. Additionally, we would also like to thank Art Tevs for discussing some design questions as well as testing the modules.
More Information
J. Orthmann, M. Keller and A. Kolb:
Integrating GPGPU Functionality into Scene Graphs
In 14th International Workshop on Vision, Modeling, and Visualization, 2009
Contact
osgCompute is developed and maintained by the SVT group which consists of members of the Computer Graphics and Multimedia Systems Group of the University of Siegen, Germany.
For support on osgCompute (incl. osgCuda) please subscribe to the public mailing list of OpenSceneGraph or go directly to the OpenSceneGraph forum which is synchronized with the mailing lists.








