RAMSES Documentation  27.0.130
Information for RAMSES users and developers
Using DLT with RAMSES

What is being logged by RAMSES and where

RAMSES has a lot of logging information, but most of it is hidden (log level debug or lower) unless explicitly enabled in order to avoid spam. Two of the things which are always logged are:

  • The RAMSES version and some system information the first time a ramses application is instantiated
  • Changes to scene states (new scene published, existing scene shown/hidden, etc.)

Other logs have to be enabled explicitly by turning up the log level of the corresponding log contexts within the application which is being debugged.

Application ID

DLT allows each application to have an application ID. Since RAMSES is not a standalone application, it doesn't have its own application ID. It is recommended that every application using RAMSES sets a unique application ID via RamsesFramework::setDLTApplicationID(). The application ID (visible in DltViewer for every log message) can be used to easily identify which RAMSES instance was the source of that log message. Be watchful when filtering logs to filter for the correct application ID - this is possible by either enabling the log contexts for that specific application ID only and disabling the rest, or by specifying it in the log filters.

User-related log contexts

RAPI
Contains all "non-const" calls to RAMSES Client API methods, such as Scene::createMeshNode(). These log messages are logged with trace log level for performance reasons. To enable it, the context log level must be set to "verbose" from the DLT Viewer.

RAPR
Same as RAPI, but shows the calls to the RAMSES Renderer API, such as RamsesRenderer::startThread()

RMSH
Used to pass DLT injections to RAMSES over the ramses shell (RAMSH) - see below how to do that

RRND
Shows state changes of scenes on the renderer. This includes availability and subscription status as well as whether the scene is mapped (i.e. on the GPU) and shown (being rendered to a buffer, not necessarily visible)

Other, less interesting log contexts

RFRA
Internal logs from the ramses framework.

RCLI
Internal logs from the ramses client.

RCOM
Logs from the communication/distribution subsystem.

RPRO
Profiling logs.

RSMT
Used for automated smoke tests.

DLT injections

DLT provides a way to send messages to an application, called "injections". Injections are typically used for debugging purposes such as enabling specific features temporarily or controlling the flow of the application.

In order to send an injection to RAMSES:

  • right click the Ramsh context (RMSH)
  • select 'Send injection...'
  • set service id to 5000 (RAMSES utilizes only one service with a fixed port)
  • enter the Ramsh command as plain text in the 'Data' field
DLT injection for a given context
DLT injection service id + payload

The simplest command which prints all available commands is 'help'. Useful commands are:

  • validate: checks the validity and prints the state of a scene of a ramses client
  • rinfo: prints the internal state of the RAMSES renderer
  • dumpSceneToFile: saves a scene to file(s) and sends the file optionally over DLT