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.
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.
|osgTraceDemo uses the new osgCuda serializer and loads a scene graph from a file. The two modules which are used in the computation are loaded from libraries. The result of the vortex field's tracing is rendered by OSG.|
|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.|
|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.|
|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.|
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
|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):
|osgCompute-1.1.zip||Latest developer release||630KB||11/08/11||OSG-2.9.6 or newer|
|osgCompute-1.0.zip||623KB||04/06/11||OSG-2.9.6 or newer & CUDA 4|
|osgCompute-0.8.zip||193KB||08/03/10||OSG-2.9.6 or newer & CUDA 3.x|
- 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
- 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
|9th, November 2011||Announcement: we will tag a new version of osgCompute within the next few days. It will include some major changes in the API and makes it even easier to understand the basic ideas behind osgCompute. Stay tuned :-)|
|8th, November 2011||The version 1.1 of osgCompute has been released (it is based on the SVN revision 428). Basically, we just fixed some bugs of the previous version 1.0.|
|6th, April 2011||The version 1.0 of osgCompute has been released. A documentation has been added. Please download the latest version of osgCompute or check out the SVN trunk.|
|3rd, August 2010||The version 0.8 of osgCompute has been released. It requires CUDA 3.x and OSG-2.9.8 or later. osgCompute supports OSG's new serializer and a new example (osgTrace) has been added. Please download the latest version of osgCompute or check out the SVN trunk.|
|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.|
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).
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.
J. Orthmann, M. Keller and A. Kolb:
Integrating GPGPU Functionality into Scene Graphs
In 14th International Workshop on Vision, Modeling, and Visualization, 2009
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.