Texture Share は、CPU および負荷の高いメモリ コピー処理をバイパスし、データ ストアを GPU メモリに保持することで、処理間での GPU データの受け渡しを効率的に行います。
共有可能なデータの例には、テクスチャ、プロジェクション、カメラ マトリクス、深度バッファが含まれます。Texture Share は、アプリケーション間における一貫性を確保にするための同期メカニズムとスレッド バリアをサポートします。
Texture Share は以下のメソッドによってプロジェクトへ統合することが可能です。
-
C++ SDK (DirectX11 と DirectX12 を統合)
-
ブループリント
-
nDisplay へのサポート

Unreal Engine が外部アプリケーションとビューポートを共有している例。アプリケーションは回転するキューブのテクスチャとしてビューポートを使用しています。
サンプル プロジェクト
Sample C++ プロジェクトはソースコードと共に「Engine/Source/Programs/TextureShare/Samples/ThirdParty」に含まれています。DirectX11 および DirectX12 の両方で Texture Share を使用する方法のサンプルがあります。Texture Share の使用方法の詳細については、 を参照してください。
同期ポリシー
GPU データを共有するには、Texture Share の各インタラクションに対して送信側と受信側が必要です。アプリケーションがデータ交換を行うとき、送信側と受信側は送受信操作に対してミラーリングされた優先順位を使用する必要があります。
たとえば、Unreal Engine を送信側、サードパーティの DirectX アプリケーションを受信側とします。
-
Unreal Engine は送信、次に受信を実行する。
-
サードパーティ アプリケーションは受信、次に送信を実行する。
Texture Share はブロックとなる動作を制御するために、データ交換のさまざまなステージで同期を行うためのオプションをいくつか提供します。この 3 つのステージについて説明していきます。
Connection Sync Mode
Connection Sync Mode (接続同期モード) はクライアントとサーバーが接続する際の同期ポリシーを定義します。以下の表がこのポリシーの説明になります。
オプション | 説明 |
---|---|
Default | このモードはモジュールのグローバル設定を使用します。デフォルトの接続同期ポリシーは以下のとおりです。
|
None | このモードは、リモート プロセスがテクスチャ共有メカニズムに接続するときにブロックしません。 |
SyncSession | このモードは、リモート プロセスが正常に接続し、データを交換する準備ができるまでブロックします。 |
Frame Sync Mode
Frame Sync Mode (フレーム同期モード) は生成されたフレームに対する同期ポリシーを定義します。以下の表がこのポリシーの説明になります。
オプション | 説明 |
---|---|
デフォルト | このモードはモジュールのグローバル設定を使用します。デフォルトのフレーム同期ポリシーは以下のとおりです。
|
None | このモードは、フレームをリモート プロセスと同期せず、フレームをスキップできます。 |
FrameSync | このモードでは、両方のアプリケーションがスキップせずにフレームを交換します。このモードは、フレーム インデックスがプロセス間での一貫性を保証します。 |
Texture Sync Mode
Texture Sync Mode (テクスチャ同期モード) は、テクスチャ共有接続メカニズムが確立された際のデータの読み取りと書き込みの操作の順序を定義します。以下の表がこのポリシーの説明になります。
オプション | 説明 |
---|---|
デフォルト | このモードはモジュールのグローバル設定を使用します。デフォルトのテクスチャ同期ポリシーは以下のとおりです。
|
None | このモードは、テクスチャのペアリングをスキップし、読み取り前にリモート プロセスからの書き込み操作をブロックしません。 |
SyncRead | このモードでは、テクスチャのペアリングはスキップされますが、読み取り前にリモート プロセスで書き込み操作が終了するのをブロックします。 |
SyncPairingRead | このモードは、テクスチャのペアリング中にブロックし、読み取り前にリモート プロセスで書き込み操作が終了するのを待機します。 |
Texture Share を nDisplay で使用する
nDisplay は Texture Share によるビューポートの共有およびビューポート上での受信テクスチャの表示をサポートしています。ビューポートの id から共有したビューポート テクスチャにアクセスすることができます。
他のアプリケーションから受信したテクスチャを nDisplay ビューポートに表示するには、nDisplay のポストプロセスを使用して、テクスチャ共有アイテムを定義し、それを nDisplay ウィンドウに割り当てます。
nDisplay でのテクスチャの共有および受信の詳細については、「nDisplay コンフィギュレーション ファイルのリファレンス」を参照してください。
既知の制約事項
Texture Share は現在ベータ版です。この機能の既知の制限事項は以下の通りです。
-
Texture Share SDK は現在 DirectX11 と DirectX12 のみをサポートします。
-
Texture Share アイテム名は最大 128 文字です。
-
1 プロセスでの Texture Share の最大アイテム数は 100 です。
-
Texture Share アイテムの最大テクスチャ数は 10 です。
Texture Share アイテムは、DirectX テクスチャへのポインタと、プロジェクション、カメラ、回転マトリクスなどの補助バッファを持つコンテナです。