Extending RenderStream (RenderStream の拡張)
RenderStream の最も強力な点の1つは、新しいレンダーエンジンをサポートするように拡張できることです。このページでは、新しいレンダーエンジンへのサポートを拡張する方法について説明します。
このセクションでは、RenderStream を任意のレンダーエンジンと統合する前に理解しておくべき RenderStream の機能について説明します。
RenderStream API の機能
Section titled “RenderStream API の機能”RenderStream は、Designer サーバーがタイムスタンプ付きの「フレーム要求」メッセージをレンダーエンジンに送信するエコシステムです。これらのメッセージには、シーンのレンダリング方法を記述したフレームメタデータが付随します。サポートするメタデータの種類は次のとおりです。
- カメラトランスフォーム
- テキスト
- 数値
- ビデオテクスチャ
レンダーエンジンは、API を介してフレーム要求をリッスンし、完成したテクスチャを API に送り返して応答することが求められます。
サポートするレンダラーは次のとおりです。
- DirectX 11
- DirectX 12
- OpenGL
- Vulkan
RenderStream は、舞台裏でこれらのテクスチャのネットワーク経由での送受信を管理し、レンダーエンジンが提供する画像を Disguise メディアサーバーに表示します。
レンダーエンジンは、RenderStream API を介して次のメタデータを Disguise と共有することもできます。
- レンダリングに使用するメタデータの定義(「スキーマ」と呼ばれます)
- ライブプロファイリングデータ
- ライブコンソールログ
- エンジンのカスタムステータス
また、複数のマシンにまたがる複数のレンダーエンジンインスタンス間で同期したクラスターレンダリングをサポートするための特別なツールも API 内にあります。
API に含まれない機能
Section titled “API に含まれない機能”Designer と RenderStream エコシステムは連携して、レンダリングの追加制御を提供します。これらは把握しておくべきものですが、自分で実装する必要はありません。
- Designer は、レンダーノード上に存在する起動可能なアセットを検出できます。これにより、それらをユーザーに表示し、起動/終了できます。
- Designer は、レンダーアプリケーションの起動と終了を行えます。
- Designer は、分散レンダリングのために、あるレンダーノードからレンダーノードのクラスター全体へアセットをコピーすることもできます。
既存のレンダーエンジン
Section titled “既存のレンダーエンジン”独自の実装を作成する前に、お好みのエンジンがすでにサポートされているかどうかを確認すると役立つ場合があります。
Disguise は、次のレンダーエンジンを自社でサポートしています。
次のサードパーティも、独自の RenderStream 統合を開発しています。
- TouchDesigner
- Volinga
- Spout(ZeroSpace Studios により実装)
ドキュメント
Section titled “ドキュメント”独自の RenderStream 統合の構築を始めたい場合は、公式の開発者ドキュメントサイトをこちらでご覧いただけます。
C、C++、Python のバインディングをサポートしています。
C および C++ バインディング
Section titled “C および C++ バインディング”C および C++ バインディングについては、RenderStream の GitHub をご覧ください。API 定義と、サポートするすべてのレンダーエンジンのサンプルが含まれています。
さらに、次のオープンソース実装をガイドとして使用できます。
Python バインディング
Section titled “Python バインディング”Python バインディングのセットは、RenderStream-py プロジェクトで入手できます。
これらのバインディングには、新しいアセットタイプ(.pyrs)を自動構成するスクリプトが含まれており、requirements.txt を自動でインストールし、Python プロジェクトを実行するための仮想環境を構成します。
カスタム環境変数
Section titled “カスタム環境変数”カスタムエンジン向けに、カスタムの環境変数リストの設定をサポートしています。これは、アセットの実行ファイルと同じディレクトリーに .env ファイルを追加することで行えます。
このファイルは assetname_variables.env という形式で、すべて小文字にする必要があります。
環境変数ファイルの例を次に示します。
NAME=VALUE # No spaces around the equals signNAME2=VALUE2
# You can also define a variable over multiple linesMULTI="""This is amultiline variable"""サポートしてほしい拡張や追加がある場合は、GitHub を通じてのプルリクエストやコメントを歓迎します。サポートについてお問い合わせいただく場合は、support@disguise.one までご連絡ください。