Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


RAMSES is a framework for defining "3D" , storing and distributing 3D (can be also 2D) scenes for HMIs and act as . From users perspective, RAMSES looks like a thin C++ abstraction of OpenGL commands. Through its C++ API, a lot of control is given to the user (and direct access to OpenGL if needed) in defining the scene graph. It is thus only a small abstraction/simplification of the complexity of OpenGL, without being very high level. RAMSES however allows for defining some RAMSES offers the same feature level as OpenGL but allows higher levels constructs such as widgets to be built on top of it. In addition to basic OpenGL, RAMSES supports higher level relationships between objects in such as a hierarchical scene graph, and also dynamic relationships. For example, animations can be defined in terms of how objects should move in relation to each other, and the details of programming this animation over time is solved by the library.

In addition to providing a convenient C++ programming interface towards GPU features, RAMSES also enables the definitions to be rendered on a remote display. An efficient representation of the defined scene graph, along with needed textures and other meta-data such as the animation definitions, is transferred over the network. Following the main characteristic of API Remoting, we can recognize that the final rendering of graphics is done by the GPU on the receiving side.

The sender and receiver libraries work in concert to achieve network transfer only when the data is required. Unlike a more direct API such as "draw this line here (right now)", RAMSES works through defining first the scene graph and rules locally, and the libraries will take care of when and what needs to be transferred, as well as what and when it is requiredcontent grouping, off-screen rendering, animations, text, and compositing. All of those features follow the principle of API remoting, i.e. to define the state of an object/animation and execute it on a different machine.

RAMSES distinguishes between content creation and content distribution; the same content (created with RAMSES) can be rendered locally, on one or more network nodes, or everywhere. RAMSES handles the distribution of the scenes, and offers an interface to control the final composition - which scene to be sent where, shown at which time, and how multiple scenes and/or videos will interact together. The control itself is subject to application logic (HMI framework, compositor, smartphone App etc.).

The data pipeline and timing are "immediate", i.e. the state of each scene is simultaneously pushed to all network participants. RAMSES provides a set of mechanisms to control framerate, timings and avoid jitter and frame drops as much as possible, but in order to achieve smooth experience on all network participants it needs careful system design and content optimization.

Usage in virtualized environments