The OpenSG 2 Vision
The goal of OpenSG is to be a widely used, self-sustaining Open Source scenegraph system for a wide variety of applications. We're not focusing on one application area, the system should be general enough to be able to handle a wide variety of things. The design goal is to provide an abstraction of the complications of the underlying graphics hardware and software systems for the user to simplify use of advanced graphics systems and algorithms. This means that details about multi-pass algorithms, shader composition, multi-threading and clustering should be hidden as far as possible.
OpenSG 2 is our chance to fix things and add some significant new capabilities compared to OpenSG 1. It will be a major release, so some incompatibility is to be expected (even though we'll be trying hard to limit it to what's really necessary, and provide helper scripts to the areas that we couldn't avoid). So we're trying to avoid restricting ourselves to things that have little impact and allow significant changes. A chance like this will not come again very soon.
That does not mean that we're ignoring our current strengths. OpenSG 2 will still
- Support complete multi-thread safety and efficient synchronization
- Support a wide variety of clustering options (sort-first, sort-last, and variants of each), including load-balancing in different ways
- Be dynamically extensible in as many respects as we can afford
The main enhancements of OpenSG 2 over OpenSG 1 will be:
- Simplified (for the user) and more efficient (both memory and CPU cycles) handling of the multi-thread safe data structures (aka FieldContainers)
- Cleaner integration of multi-pass algorithms like shadows and HDR rendering methods with tone mapping
- Support for dynamically generated/composited shaders that are collected when traversing the scenegraph, to enable the orthogonality that made !OpenGL easy to use for combining different features like lighting, shadows and active geometry creation
- Simplified code to enable more people to contribute
- Better, more extensive documentation
- Target basic system towards OpenGL 3.0 structure
- Redesign of the volume rendering module to focus on modern, shader-based methods
- Redesign of the dox:Geometry to better support current high-performance OpenGL methods (VBOs)
- Extension of the dox:Geometry to allow extended data (like face-based data) to support geometry-based operations like ray tracing and progressive meshes
- More robust code and fewer bugs by using unit tests that are run automatically as part of the dailybuild
- More flexible handling of dynamic extensions (aka plugins) to simplify using optional code (like the current set of contributions) and user-added code
- Simplified build system that supports a wider variety of platforms and makes installers/distributions easier to create
- Provide more example programs on how to use certain features and how to integrate OpenSG into/use OpenSG with different frameworks like VRJuggler, ARToolkit, wxWidgets etc. These should be built as part of the dailybuild and be part of the distributions
This page describes a very high-level vision of what we're trying to achieve with OpenSG 2. If you're interested in lower-level details and maybe helping, please see the roadmap page for an overview of concrete issues.