Purpose

The RemotePanelRendering module is derived from the RemoteRendering module. It allows rendering module panels offscreen, which can be viewed by using a RemoteRenderingClient module or any other remote rendering client (e.g. a web browser).

Usage

Add the RemotePanelRendering module to your network and set the Panel value to the module panel that you want to render.

Tips

If you have several processes running that use RemotePanelRendering at the same time, you can set the environment variable MLAB_NUMBER_CONCURRENT_PANEL_RENDERING to a number to restrict the number of these modules that render a panel at the same time. This can avoid a GPU bottleneck by serializing the use of the GPU.

Windows

Default Panel

../../../Modules/ML/MLRemoteRendering/mhelp/Images/Screenshots/RemotePanelRendering._default.png

Output Fields

outBase

name: outBase, type: RemoteRendering(MLBase)
For accessing this object via scripting see the Scripting Reference: MLRemoteRenderingWrapper.

Parameter Fields

Visible Fields

Enable Multi Sampling

name: enableMultiSampling, type: Bool, default: FALSE

Enable multi sample anti-aliasing (MSAA). This only works when a GraphicsView is rendered, since it requires OpenGL rendering.

Multi Sampling

name: multiSampling, type: Integer, default: 16

Sets the number of multi sampling samples that are used. If the hardware supports less samples, the module uses the maximum supported number of samples.

Store Transparency

name: storeTransparency, type: Bool, default: FALSE

If enabled, the alpha channel of the framebuffer is enabled and the resulting alpha is sent with the rendered image. This forces the usage of PNG, since JPG does not support transparency.

Intercept Double Clicks

name: interceptDoubleClicks, type: Bool, default: FALSE

If set, the RemotePanelRendering module will intercept and remove double clicks (including the first click of a double click). This is done by delaying mouse clicks until the double click is received or the double click threshold (time or distance) is exceeded.

Be aware that using this feature can disturb the usual ordering between input events and other messages received from the remote connection.

Enable

name: overrideStreamingQuality, type: Bool, default: FALSE

Allows to override the image type and quality for image streaming.

NOTE: Typically the client can select the desired type and quality by sending the streaming settings, e.g. from JavaScript or the HTTP url. If overrideStreamingQuality is enabled, the quality is set by the server/this module and can not be set from the client any more.

Interactive Image Type

name: interactiveImageType, type: Enum, default: JPG

Interactive image type.

Values:

Title Name
Jpg JPG
Png PNG
Bmp BMP
Webp Lossy WEBP_LOSSY
Webp Lossless WEBP_LOSSLESS
Jpg Alpha JPG_ALPHA

High Quality Image Type

name: highQualityImageType, type: Enum, default: PNG

HQ image type.

Values:

Title Name
Jpg JPG
Png PNG
Bmp BMP
Webp Lossy WEBP_LOSSY
Webp Lossless WEBP_LOSSLESS
Jpg Alpha JPG_ALPHA

Interactive Jpg Quality

name: interactiveJpgQuality, type: Integer, default: 70, minimum: 0, maximum: 100

Interactive JPG Quality (0-100)

High Quality Jpg Quality

name: highQualityJpgQuality, type: Integer, default: 100, minimum: 0, maximum: 100

HQ Jpg quality (0-100)

Panel

name: panel, type: String

This field must be set to the name of the module (and optionally include also the window name) whose panel should be rendered. The syntax is “modulename[.windowname]”. If windowname is not given, then the default panel is rendered. If you want to render the panel of a sub-module, you can use “macroname.submodule.windowname”. In this case, the windowname is required to distinguish between submodule and windowname. The default panel is named “_default”, so you can write “macroname.submodule._default” to get the default panel of a submodule. There is a special syntax for showing the panel of the parent macro, which is a single “.”. It is also possible to select a specific panel of the parent macro, which is “.windowname”.

Examples:

Value Meaning
SomeModule Show the default panel of SomeModule in the same network
SomeModule.someWindow Show the window named someWindow of SomeModule
SomeModule.SubModule._default Show the default panel of SomeModule.SubModule
SomeModule.SubModule.someWindow Show the window names someWindow of SomeModule.SubModule
. Show the default panel of the parent macro
.someWindow Show the window named someWindow of the parent macro
parent:someWindow Show the default panel of the parent macro of the parent macro
parent:SomeModule._default Show the default panel of the parent macro of the parent macro

Note that “parent:” is one level above the macro in which the RemotePanelRendering is located, which is why there is the special single “.” syntax to specify the direct parent macro.

Status

name: status, type: Enum, persistent: no

This field indicates the status of the RemotePanelRendering module.

Values:

Title Name
No Module Panel Specified NO_MODULE_PANEL_SPECIFIED
Module Not Found MODULE_NOT_FOUND
Window Control Not Created WINDOW_CONTROL_NOT_CREATED
Window Not Created WINDOW_NOT_CREATED
Rendering RENDERING

Enable Nested Graphics Views

name: enableNestedGraphicsViews, type: Bool, default: FALSE

Enables support for nested graphics views.

Enable Context Menu Events

name: enableContextMenuEvents, type: Bool, default: FALSE

It enabled, a ContextMenu event is generated when the right mouse button is released. Since embedded context menus have several limitations and there might be non-working context menus or even context menus that appear on the server, this options is disabled by default and is considered experimental.

Enable Focus Stealing

name: enableFocusStealing, type: Bool, default: TRUE

Enable focus stealing behavior when the mouse enters the remote panel rendering. This may steal the keyboard focus from the client computer if worker process and client are on the same computer, but is necessary to make keyboard shortcuts like those defined with the accel keyword work.

Hidden Fields

imageRendered

name: imageRendered, type: Trigger

doubleClickIntercepted

name: doubleClickIntercepted, type: Trigger

This is triggered when a double click was intercepted by the module.

imageCacheId

name: imageCacheId, type: String

clearImageCacheOnClient

name: clearImageCacheOnClient, type: Trigger

isRenderSizeSet

name: isRenderSizeSet, type: Bool, default: FALSE