Skip to content

Extending RenderStream

One of the most powerful parts of RenderStream is that it can be extended to support new render engines. In this page we will discuss how to extend support to new render engines.

Features

In this section we will discuss the features of Renderstream you should understand before embarking on integrating it with your chosen render engine.

Features of the Renderstream API

Renderstream is an ecosystem where a Designer server will send timestamped “frame request” messages to a render engine. These messages are accompanied by frame metadata that descirbe how to render the scene. The metadata types we support include:

  • Camera transforms
  • Text
  • Numbers
  • Video Textures We expect render engines to listen for frame requests via our API and respond to them by submitting finished textures back to the API.

The renderers we support are:

  • DirectX 11
  • DirectX 12
  • OpenGL
  • Vulkan

Behind the scenes, Renderstream manages the sending and receiving of those textures over the network to display the images the render engine provides to the Disguise media server.

The render engine can also share the following metadata with Disguise via the Renderstream API:

  • Definition of what metadata the engine expects to use to render (Called the “Schema”)
  • Live profiling data
  • Live console logging
  • Custom statuses of the engine

There are also special tools within the API to support clustered rendering in-sync between multiple instances of a render engine across multiple machines.

Features that are not part of the API

Designer and the Renderstream ecosystem work together to provide additional controls of rendering which you should be aware of but do not need to implement yourself:

  • Designer is capable of discovering launchable assets that exist on render nodes. This is so they can be displayed to the user and launched/closed
  • Designer is capable of launching and closing the render application
  • Designer can also copy assets from one render node across a cluster of render nodes for distributed rendering

Existing render engines

Before writing your own implementation it may be valuable to check if your preferred engine is already supported.

Disguise provides in-house support for the following render engines:

The following 3rd parties have also developed their own renderstream integrations:

Documentation

If you want to get started with building your own renderstream integration you can find our official developer documentation site here.

We support C, C++ and Python bindings.

C and C++ bindings

For C and C++ bindings you can visit our RenderStream github which includes the API definition and samples for all of our supported render engines.

Additionally the following open-source implementations can be used as guides:

Python Bindings

A set of Python Bindings are available in the RenderStream-py project.

These bindings include a script to auto configure a new asset type (.pyrs) which will auto install the requirements.txt and configure a virtual environment for the python project to run in.

Contributing

We welcome pull requests and comments through Github if there are extensions or additions you would like to see to support your implementation. And if you would like to reach out to us for support please do so at support@disguise.one.