JP2011511367A - グラフィック遠隔化アーキテクチャ - Google Patents

グラフィック遠隔化アーキテクチャ Download PDF

Info

Publication number
JP2011511367A
JP2011511367A JP2010545038A JP2010545038A JP2011511367A JP 2011511367 A JP2011511367 A JP 2011511367A JP 2010545038 A JP2010545038 A JP 2010545038A JP 2010545038 A JP2010545038 A JP 2010545038A JP 2011511367 A JP2011511367 A JP 2011511367A
Authority
JP
Japan
Prior art keywords
client
data stream
command
server
plug
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010545038A
Other languages
English (en)
Other versions
JP5455930B2 (ja
Inventor
チウ,カン
アブド,ナディム・ワイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011511367A publication Critical patent/JP2011511367A/ja
Application granted granted Critical
Publication of JP5455930B2 publication Critical patent/JP5455930B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities

Abstract

リモートクライアントにおいて、グラフィック画像をレンダリングするためのグラフィック遠隔化アーキテクチャを実装するシステム及び方法が開示される。一実装において、リモートサーバー上にホストされるD3Dアプリケーションがリモートクライアントによって使用されるとき、D3Dアプリケーションに関連付けられたグラフィックが、リモートクライアントにおいて生成され、レンダリングされる。これに関連し、グラフィックに対応するD3Dコマンド及びD3Dオブジェクトが、リモートサーバーにおいて、データストリームの中に抽象化される。データストリームが、その後、リモートクライアントに送信される。リモートクライアントにおいて、D3Dコマンド及びD3Dオブジェクトが、データストリームから抽出され、実行され、グラフィック画像を生成する。グラフィック画像は、その後、リモートクライアントにおいてレンダリングされ、出力装置を使用し表示される。
【選択図】 図1

Description

本発明は、計算システムにおけるグラフィック処理に関し、具体的には、リモート計算環境におけるグラフィック処理に関する。
[0001]フォト編集、ゲームなどのように高性能グラフィックアプリケーションを生成するためのグラフィックソフトは、複雑な計算を利用する動画及びその他のツールを含み得る。通常、そのような高性能グラフィックアプリケーションは、複雑な計算を管理するためのグラフィックハードウェアの支援を提供する様々な技術を使用する。例えば、Microsoft(登録商標)Windows(登録商標)オペレーティングシステム上で実行されるグラフィックアプリケーションは、グラフィックハードウェアの支援を提供するDirect3Dレンダリング技術を使用し得る。Direct3Dは、グラフィックアプリケーションの中で3D画像をレンダリングするためのコマンドを含んでいる三次元(3D)グラフィック・アプリケーション・プログラミング・インターフェース(API)である。
[0002] 今やほとんどのパーソナルコンピューター(PC)は、そのようなグラフィックハードウェアの支援を提供しているが、そのような技術を遠隔化する効率的な方法はどこにも存在しない。例えば、リモートセッションにおいて、グラフィックアプリケーションは、ウィンドウサイズもユーザー接続数も率に応じ増やすことができず、安定性問題ももたらし得る。更に、グラフィックス・アクセラレーションは、ビデオ・グラフィックス・アダプター(VGA)を実行するサーバーコンピューターにおいても仮想計算機においても利用され得ない。結果として、リモートセッションを介し実行するグラフィックアプリケーションは、質の悪いエンドユーザー体験をもたらし得る。
本発明の目的は、リモートクライアントにおいて、3Dグラフィック画像のレンダリングを可能にするDirect3D遠隔化アーキテクチャを用いた自己記述型データレンダリングを実装する技法を提供することである。
[0003]この概要は、以下の「発明を実施するための形態」において更に記載されているグラフィック遠隔化アーキテクチャに関連する簡易化した概念を紹介するために提供されている。この概要は、請求対象項目の本質的な特徴を特定することも意図されておらず、請求対象項目の範囲を決定する際に使用することも意図されていない。
[0004]実施形態において、サーバーコンピューター上にホスティングされる三次元(3D)アプリケーションは、リモートクライアントコンピューターによって使用される。3Dアプリケーションに関連付けられたグラフィックは、リモートサーバーにおいてデータストリームの中に抽象化され、クライアントコンピューターに送信されるグラフィックに対応している3Dコマンド及び3Dオブジェクトの使用によってリモートクライアントコンピューターにおいて生成され、レンダリングされる。3Dコマンド及び3Dオブジェクトがデータストリームから抽出され、実行され、クライアントコンピューターにグラフィック画像を生成する。
[0005]詳細な説明を添付の図を参照し説明する。図面において参照番号の最上位の桁は、参照番号が最初に出現する図面を識別している。異なる図面における同一の参照番号の使用は、同等又は同一の項目を示している。
[0006]3D遠隔化アーキテクチャを実装するための例示的ネットワーク環境を示すブロック図である。 [0007]3D画像のリモートレンダリングを実装するための例示的計算サーバーを示すブロック図である。 [0008]3D画像のリモートレンダリングを実装するための例示的クライアントを示すブロック図である。 [0009]3D遠隔化アーキテクチャの例示的実装を示すブロック図である。 [0010]3Dグラフィックアプリケーション中のコマンドを抽象化するための例示的プロセスを示す流れ図である。 [0011]3D画像をレンダリングするための例示的プロセスを示す流れ図である。
[0012]この開示は、リモートに位置するクライアントにおいて三次元又は3D画像のレンダリングを容易にし、リモートセッションにおいて、改善されたエンドユーザー体験を達成するための遠隔化アーキテクチャを実装する方法及びシステムに関連する。通常、Terminal Service(登録商標)環境のようなリモート環境において、Direct3D又はD3Dコマンドのような任意のグラフィックに集中したアプリケーションコマンドは、サーバーで実行される。コマンド実行後、グラフィック画像などの出力は、サーバーのグラフィックス・プロセッシング・ユニット(GPU)の支援を用いてレンダリングされる。レンダリングされたグラフィック画像は、その後、ビットマップ画像としてクライアント装置に送信され、クライアントサイドにおいて、表示装置を介し表示される。そのような方法にて実行するDirect3D又は三次元アプリケーションは、サーバーの利用可能性、拡張性、サーバー安定性などアーキテクチャ上の要因によって制限され、質の悪いエンドユーザー体験をもたらす。具体的には、圧縮及びその他の特殊方法を使用しているとき、アーキテクチャ上の欠点は、フレームレート制御の欠如及び斬新的なテクスチャレンダリングの不適当性を含み得る。
[0013]リモートクライアントにおいて3Dグラフィック画像のレンダリングを可能にするためのDirect3D遠隔化アーキテクチャを実装する技法が、以下の説明に開示される。一実装において、サーバーコンピューターにおいてグラフィック画像をレンダリングする代わりにその後、最終的なビットマップ画像をクライアント装置に送信する。D3Dコマンドがその後、D3Dコマンドを実行し得るクライアント装置に直接に送信され得る。クライアント端末装置のGPUが、グラフィック画像などの出力をレンダリングし、クライアント端末に画像を表示する。かくしてグラフィック画像は、サーバー端末のGPUを使用せずに、クライアント装置においてレンダリングされ得る。更に、フレームレート制御及び斬新的なテクスチャレンダリング方法を実装し、前述したアーキテクチャ上の欠点を克服するための技法が開示される。
[0014]クライアント装置において、3Dグラフィック画像をレンダリングするためのDirect3D遠隔化アーキテクチャを実装する方法及びシステムが、以下の説明に開示される。
例示的ネットワーク環境
[0015]図1は、本明細書に記載した技法を実装し、本明細書に記載したエレメントの全体又は一部を代表し得る3D又はDirect3D(D3D)遠隔化アーキテクチャを実装するための例示的ネットワーク又は計算環境(100)を示している。計算環境(100)は、計算環境の例であって、使用されている計算機及びネットワークアーキテクチャの使用範囲及び/又は機能性に対し、どのような制限も示すように意図されていない。
[0016]計算環境(100)は、(クライアント(102)としてまとめて参照される)複数のクライアント装置(102−1,102−2,102−3,…,102−N)を含む。クライアント(102)は、ネットワーク(104)を介し、サーバーコンピューター又はサーバー(106)と通信可能に関連付けられる。クライアント(102)は、例えば、デスクトップPC、ノートブックコンピューター、ポータブルコンピューター、個人情報端末(PDA)、ワークステーション、携帯計算装置、又はインターネット接続専用端末など様々な従来の任意の計算装置であり得る。クライアント(102)それぞれは、レンダリング用の異なるプログラムモジュールをストアするメモリーを含む。例えば、クライアント(102−1)は、D3Dプラグイン(112)及びレンダリングを実行するための別のモジュールのような異なるプログラムモジュール(110)をストアし得るメモリー(108)を含む。
[0017]ネットワーク(104)は、無線ネットワーク若しくは有線ネットワーク又はその組み合わせであり得る。ネットワーク(104)は、お互いに相互接続された個別のネットワークの集まり及び単一の大規模ネットワーク(例えばインターネット又はイントラネット)としての機能性としても代表され得る。そのような個別のネットワークの例は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、及びメトロポリタンエリアネットワーク(MAN)を含むがこれらに限定しない。更に、個別のネットワークは、無線ネットワーク若しくは有線ネットワーク又はその組み合わせでもあり得る。
[0018]サーバー(106)は、例えば、汎用計算装置、又はサーバークラスター及びメインフレームクラスターであり得る。サーバー(106)は、クライアント(102−1)などのクライアントに対応しているユーザー空間(116)を有するメモリー(114)を含む。ユーザー空間(116)は更に、D3D抽象化モジュール(118)及びリモートアダプター(120)を含む。サーバー(106)のリモートアダプター(120)は、クライアントとの接続を確立し、D3D抽象化モジュール(118)によって抽象化されたレンダリング用グラフィックコマンドを送信する。
[0019]一実装において、D3D抽象化モジュール(118)が、ターミナル・サーバー(TS)/D3D抽象化レイヤ上で実行する。D3D抽象化レイヤは、サーバー(106)の物理ハードウェアとD3Dアプリケーションのようなグラフィックアプリケーションとの間に実装される。抽象化レイヤは、ハードウェアの実装詳細をそのようなアプリケーションから隠す。
[0020]D3D抽象化モジュール(118)は、クライアント(102−1)などのクライアントが、リモートセッション中、サーバー(106)のD3Dアプリケーションを使用するとき、D3Dアプリケーションから1つ以上のD3Dコマンド及びD3Dオブジェクトを受信する。D3D抽象化モジュール(118)は更に、D3DアプリケーションとD3Dアプリケーションを実行するグラフィックハードウェアとの間の通信を抽象化する。
[0021]D3D抽象化モジュール(118)は、ネットワーク(104)上に送信され得るストリーミングデータの中にD3Dコマンド及びD3Dオブジェクトを抽象化する。D3D抽象化モジュール(118)は、かくして、サーバー(106)が、データストリームとして抽象化されたコマンド及びオブジェクトを1つ以上のクライアント(102)に送信可能にする。データストリームは、ネットワーク(104)を介し、リモート・デスクトップ・プロトコル(RDP)、D3D遠隔化プロトコルなどのような異なる遠隔化プロトコルに基づいて送信される。
[0022]データストリームをサーバー(106)からクライアント(102−1)に送信するために、リモートアダプター(120)が、ネットワーク(104)上のクライアント(102−1)のD3Dプラグイン(112)と通信チャネルを確立する。リモートアダプター(120)は、D3Dプラグイン(112)からクライアント(102−1)のディスプレイアダプターの利用可能性及び機能をチェックする。D3Dプラグイン(112)からの確認を受信すると、リモートアダプター(120)は、D3D抽象化モジュール(118)とD3Dプラグイン(112)との間に通信チャネルを確立する。
[0023]D3D抽象化モジュール(118)は、クライアント(102−1)においてD3Dアプリケーションに関連付けられた抽象化D3Dコマンド及びD3DオブジェクトをD3Dプラグインに送信する。一実装において、D3D抽象化モジュール(118)は、抽象化されたD3Dコマンド及びD3DオブジェクトをD3Dプラグイン(112)に隠されたデータとして送信する。
[0024]クライアント端末(すなわちクライアント(102))において、データストリームが、D3Dプラグイン(112)のような1つ以上のD3Dプラグインによって受信され、処理される。D3Dプラグイン(112)は、データストリームを受信し、データストリームを解析し、D3Dコマンドを抽出する。更に、D3Dプラグインは、実際のD3Dオブジェクトを生成し、D3Dコマンドを実行し、クライアント端末におけるGPUを使用しグラフィック画像などの出力をレンダリングする。
例示的サーバー
[0025]図2は、3D画像リモートレンダリングを実装するための例示的サーバー(106)である。サーバー(106)は、プロセッサー(202)、ネットワークインターフェース(単数又は複数)(204)、入力/出力インターフェース(単数又は複数)(206)、及びメモリー(114)を含む計算装置であり得る。ネットワークインターフェース(単数又は複数)(204)は、クライアント(102)又はサーバー(106)などの多くの計算装置と相互接続するための1つ以上のポートを含み得る。ネットワークインターフェース(単数又は複数)(204)は、有線ネットワーク(例えばLANネットワーク、ケーブルネットワークなど)並びに無線ネットワーク(例えばWLANネットワーク、セルラーネットワーク、衛星ネットワークなど)を含む様々なネットワーク及びプロトコルタイプを用いた通信を容易にし得る。
[0026]入力/出力インターフェース(単数又は複数)(206)は、例えば、スキャナーポート、マウスポート、キーボードポートなどを含んでいて、データをクライアント(102)から受信するか又はそれに送信する。一実装において、サーバー(106)の入力/出力インターフェース(単数又は複数)(206)は、ネットワーク(104)上にD3Dコマンド及びD3Dオブジェクトなどのデータを送信する。サーバー(106)の入力/出力インターフェース(単数又は複数)(206)は、同期化のために、レンダリングされたグラフィック画像を代表とするデータ又はコンテンツなどのデータを1つ以上のクライアント(102)から受信する。
[0027]メモリー(114)は、ランダムアクセスメモリー(RAM)のような揮発性メモリー、及び/又は読み出し専用メモリー(ROM)、及びフラッシュRAMのような不揮発性メモリー双方の形式の任意の計算機可読媒体であり得る。メモリー(114)は、通常、プロセッサー(202)によってそれに即座にアクセス可能なデータ及び/又はその上で間もなく作動されるプログラムモジュールを含む。
[0028]一実装において、メモリー(114)は、クライアント(102)それぞれに対応しているユーザー空間(116)及びプログラムデータ(208)を含む。ユーザー空間(116)それぞれは、その他のモジュール(210)に加えてD3D抽象化モジュール(118)及びリモートアダプター(120)を含む。プログラムデータ(208)は、D3Dコマンド(212)、D3Dオブジェクト(214)、データストリーム(216)、及びその他のプログラムデータ(218)を含むパラメータをストアし得る。
[0029]D3D抽象化モジュール(118)は、D3Dコマンド(212)及びD3Dオブジェクト(214)を含んでいるデータトラフィックを監視するように構成され得る。以下、更に詳細に説明されるように、D3D抽象化モジュール(118)は、D3DアプリケーションからD3DAPIを介しD3Dコマンド(212)及びD3Dオブジェクト(214)と受信するように構成され得る。D3DAPIは、D3Dアプリケーション中の3D画像をレンダリングするために使用され得る機能を含む。別の実装において、D3D抽象化モジュール(118)は、D3DアプリケーションからD3Dコマンド(212)及びD3Dオブジェクト(214)を直接に受信するように構成され得る。
[0030]一実装において、受信されるD3Dコマンド(212)は、高頻度のコマンドであって、クライアント(102)から1つ以上のネットワークラウンドトリップを必要とする。そのようなネットワークラウンドトリップは、高頻度のコマンド実行時の遅れをもたらす。そのようなネットワークラウンドトリップを回避するために、D3D抽象化モジュール(118)が、抽象化レイヤにおいて、D3Dオブジェクトそれぞれにハンドル又は識別子を割り当てるように構成され得る。D3D抽象化モジュール(118)がその後、クライアント端末上でD3Dオブジェクトを生成するためのハンドルを、別のパラメータと一緒にデータストリーム(216)に記録する。ハンドルは、サーバー(106)のメモリー(114)中の別のプログラムデータ(218)にストアされ得る。
[0031]D3D抽象化モジュール(118)は、D3Dコマンド(212)及びD3Dオブジェクト(214)をデータストリーム(216)の中に抽象化し、ネットワーク(104)を介しそれらを送信する。これに関連し、リモートアダプター(120)が、クライアント(102−1)のディスプレイアダプターの利用可能性及び機能に関する情報の問い合わせをする。クライアント(102−1)のD3Dプラグイン(112)から利用可能性及び機能の確認を受信すると、リモートアダプター(120)は、D3D抽象化モジュール(118)とD3Dプラグイン(112)との間に通信チャネルを確立する。D3D抽象化モジュール(118)は、通信チャネルを介し、抽象化したD3Dコマンド(212)及びD3Dオブジェクト(214)をクライアント(102−1)のD3Dプラグイン(112)に送信する。
[0032]抽象化に加えてD3D抽象化モジュール(118)は、リソースの集中型符号化を実行するように構成され得る。リソースの集中型符号化は、当技術分野で周知のD3Dリソースを符号化するために利用可能な圧縮及びデシメーション方法を包含している。これは、複数のアプリケーション及び再接続に対して、サーバー(106)が効率的に帯域幅を使用できるようにする。例えば、D3Dアプリケーションは、テクスチャマッピング、メッシュデータ、又は利用可能な帯域幅よりもサイズがより大きな通常のビットマップ画像などのD3Dリソースを利用し得る。そのような場合、D3D抽象化モジュール(118)は、リソースサイズを低減するための周知の圧縮及び/又はデシメーション方法を使用する。システムの広範囲に渡って持続するキャッシュが実行され、サーバー(106)の帯域幅を効率的に使用するためにリソース符号化プロセスが集中化され得る。
例示的クライアント
[0033]図3は、3D画像のリモートレンダリングを実装するための例示的クライアント(102)を示す。例示的クライアント(102)は、任意のクライアント(102)、例えば、クライアント(102−1)であり得、プロセッサー(302)、ネットワークインターフェース(単数又は複数)(304)、入力/出力インターフェース(単数又は複数)(306)、メモリー(108)、及び入力/出力装置(単数又は複数)(310)を含む。ネットワークインターフェース(単数又は複数)(304)は、ネットワーク(104)を介しクライアント(102)間の通信を容易にする。
[0034]例示的実装において、ネットワークインターフェース(304)は、クライアント(102−1)をサーバー(106)又はクライアント(102−1)以外のクライアント(102)に接続するための1つ以上のポートを含む。ネットワークインターフェース(単数又は複数)(304)は、有線ネットワーク(例えばLANネットワーク、ケーブルネットワークなど)並びに無線ネットワーク(例えばWLANネットワーク、セルラーネットワーク、衛星ネットワークなど)を含む様々なネットワークタイプ及びプロトコルタイプを用いた通信を容易にし得る。
[0035]入力/出力インターフェース(単数又は複数)(306)は、例えば、スキャナーポート、マウスポート、キーボードポートなどを含んでいて、データをクライアント(102)から受信するか又はそれに送信し得る。一実装において、クライアント(102−1)の入力/出力インターフェース(単数又は複数)(306)は、例えば、ネットワーク(104)を介しD3Dコマンド(212)及びD3Dオブジェクト(214)などのデータを受信する。
[0036]クライアント(102−1)の入力/出力インターフェース(単数又は複数)(306)は、同期化のためにレンダリングされるグラフィック画像を代表とするデータ又はコンテンツなどのデータをサーバー(106)に送信する。入力/出力インターフェース(単数又は複数)(306)は、入力/出力装置(310)によってレンダリングされたグラフィック画像などのデータを表示し得る。
[0037]メモリー(108)は、ランダムアクセスメモリー(RAM)のような揮発性メモリー、及び/又は読み出し専用メモリー(ROM)、及び/又はフラッシュRAMのような不揮発性メモリー双方の形式の任意の計算機可読媒体であり得る。メモリー(108)は、プロセッサー(302)によってそれに即座にアクセス可能なデータ及び/又はその上で作動されるプログラムモジュールを含む。例示的実装において、メモリー(108)は、プログラムモジュール(110)及びプログラムデータ(308)を含む。プログラムモジュール(110)は、D3Dプラグイン(112)及びその他のモジュール(312)を含み得る。プログラムデータ(308)は、データストリーム(314)、グラフィック画像(316)、及びその他のプログラムデータ(318)を含むパラメータをストアし得る。
[0038]D3Dプラグイン(112)は、D3Dコマンド(212)及びD3Dオブジェクト(214)を含むデータストリーム(314)を受信し、D3Dコマンド(212)を抽出する。更に、D3Dプラグイン(112)は、D3Dコマンド(212)を実行し、クライアント端末のGPUを使用することによって出力グラフィック画像をレンダリングする。一実装において、クライアント(102−1)のD3Dプラグイン(112)が、ネットワーク(104)を介しサーバーからデータストリーム(314)を受信するように構成され得る。D3Dプラグイン(112)は、当技術分野において周知の任意の解析方法を使用しデータストリーム(314)解析し、データストリーム(314)からD3Dコマンド(212)を抽出するように構成され得る。
[0039]D3Dプラグイン(112)は、データストリーム(314)と一緒に受信したハンドルを使用しD3Dオブジェクト(214)を生成するように構成され得る。前述したように、ハンドルは、D3Dアプリケーションのようなグラフィックアプリケーションに関連付けられたリソースアドレスを含むエントリーを有していて、D3Dオブジェクト(214)などのオブジェクトが識別され、検査され、生成され、及び/又は変更され得る。従ってD3Dオブジェクトは、ハンドルを割り当てられていて、D3Dプラグイン(112)によってクライアント端末において実際のD3Dオブジェクト(214)を生成し得る。D3Dプラグイン(112)が、その後、D3Dコマンド(212)を実行し、クライアントのGPUを使用しグラフィック画像(316)をレンダリングし得る。グラフィック画像(316)のレンダリングは、当技術分野で周知のレンダリング方法によって実行され得る。
[0040]レンダリングに加えてD3Dプラグイン(112)は、サーバー(106)のデスクトップ上に表示されるウィンドウ形状における変化をトラッキングし、サーバーのデスクトップ表示に従って、クライアント(102−1)において変化するように構成される。ウィンドウ形状の変化は、ウィンドウのリサイズ、ウィンドウの移動若しくは位置、及び/又はサーバー(106)のデスクトップの可視領域の変化を含み得る。
[0041]ウィンドウ形状の変化を支援するためのプロキシウィンドウが、クライアント(102−1)において使用され得、サーバー(106)のウィンドウにおいて発生する幾何学的変化を再生成する。プロキシウィンドウは、サーバー(106)におけるウィンドウ及びクライアント(102)におけるウィンドウのような、同一セッションにおいて起動された任意のウィンドウとの相互運用性を保証する。プロキシウィンドウは、例えばデスクトップ構成機能が利用できないとき、クライアント(102)において確立され得る。デスクトップ構成は、クライアントのディスプレイ画面上にグラフィック画像の画素が表示される方法を変更する機能であって、サーバー(106)のデスクトップ・ウィンドウ・マネージャーによって制御され得る。
[0042]D3Dプラグイン(112)は、クライアントサイド(102)、例えばクライアント(102−1)上にDirect3Dグラフィックをフルスクリーン占有モードで提示するようにも構成される。フルスクリーン表示占有モードは、ユーザーから介入をせずに、画面解像度及びピクセルフォーマットを自動的にキャプチャし、設定/リストアする。クライアントウィンドウは、画像を表示するために使用される簡素なウィンドウであり得る。しかしながら、Direct3Dアプリケーションは、簡素なウィンドウフォーマットによって支援され得ないフルスクリーン表示占有モード下で実行する。D3Dプラグイン(112)は、クライアントのウィンドウにフルスクリーン表示を用いたフルスクリーン占有モードのグラフィックを提示し、ユーザー体験を改善する。
[0043]D3Dプラグイン(112)は、サーバーが同期化するための情報を必要とする場合、レンダリングされたグラフィック画像(316)に関連する情報をサーバー(106)に送信するように構成される。一実装において、D3Dプラグイン(112)は、クライアントサイド専用のレンダリングプロトコルに基づいてクライアント(102−1)のウィンドウに出力グラフィック画像をレンダリングする。そのような場合、レンダリングされたコンテンツが、デフォルトによってクライアント(102)にストアされていて、また、サーバーがコンテンツを必要とする場合、サーバー(106)に送信され得る。従って、D3Dプラグイン(112)は更に、認識済のサーバー(106)の不可視のデスクトップと、サーバー(106)のデスクトップに関するクライアントサイド(102)の可視表示との間のトラッキング及び同期化が可能なように構成され得る。
[0044]更に、同期化及びコンテンツの一貫性を達成するためにD3Dプラグイン(112)は、サーバー(106)から発行される様々なDirect3Dコマンド(212)と、クライアント(102)のデスクトップに実行される読み出しアクセス/書き込みアクセスと、をトラッキングするように構成され得る。D3Dプラグイン(112)は更に、サーバー(106)及びクライアント(102−1)などのクライアント(102)双方によって送信/受信される画素それぞれに関する更新情報を維持し得る。例えば、デスクトップ構成が利用できないとき同期化するために、画素に関する情報が更新され得る。
例示的アーキテクチャ
[0045]図4は、Direct3D(D3D)遠隔化アーキテクチャ(400)の例示的実装を示している。アーキテクチャ(400)は、D3D遠隔化アーキテクチャの論理的ビューであって、リモートセッション内でグラフィック画像をレンダリングするために使用される関連コンポーネントを表示する。アーキテクチャ(400)は、サーバーサイド(402)(例えばサーバー(106))において作動するコンポーネントグループを含み得る。サーバーサイド(402)のコンポーネントは、D3DアプリケーションからD3Dコマンドを受信し、ネットワーク上のクライアントサイド(404)(例えばクライアント(102))に送信されるストリームデータとしてD3Dコマンド及びD3Dオブジェクトを抽象化する。クライアントサイド(404)は、クライアント(102−1)などのクライアント(102)と関係するコンポーネントグループを含む。クライアントサイド(404)のコンポーネントが、データストリームを受信し、D3Dコマンドを抽出し、実際のD3Dオブジェクトを生成し、D3Dコマンドを実行し、クライアント端末において、出力グラフィック画像をレンダリングする。本アーキテクチャ(400)は更に、サーバー(106)又はクライアント(102)によってセッション空間(406)として参照される同一セッション内においてアクセスされるコンポーネントと、サーバー(106)又はクライアント(102)によってグローバル空間(408)として参照される別のセッション内においてアクセスされるコンポーネントと、を含む。
[0046]一実装において、サーバーサイド(402)のD3Dアプリケーション(410)が、ユーザーからの入力として1つ以上のD3Dコマンド(212)を受信する。D3Dアプリケーション(410)は、ゲームアプリケーションのような複雑な計算を含む高性能グラフィックアプリケーションであり得る。そのようなアプリケーションに対しD3Dコマンド(212)及びD3Dオブジェクト(214)は、Terminal Server(登録商標)TS/D3D抽象化レイヤ(412)においてデータストリーム(216)として抽象化される。一実装において、D3D抽象化モジュール(118)が、Terminal Server(登録商標)TS/D3D抽象化レイヤ(412)上でオブジェクトを抽象化するためのコマンドを実行する。更に、D3D抽象化モジュール(118)が1つ以上のD3Dオブジェクト(214)にハンドルを割り当て、実際のD3Dオブジェクト(214)がクライアント端末において、ハンドルを使用し生成され得る。
[0047]D3Dコマンド(212)及びD3Dオブジェクトの抽象化に関し、D3D抽象化モジュール(118)は、D3DAPI(414)と通信するが、場合によってGPUが利用可能である場合、アプリケーションは、サービスサイドにGPU(すなわちローカルGPUドライバー(416))を実装し得る。この場合、(又はOSポリシーごとのデフォルトで)GPUドライバー(416)が、サーバー(106)にローカルに存在し得、Win32kプロセス(418)と通信し得る。言い換えると、クライアント(例えばクライアント(102−1)などのクライアント(102))においてリモートGPUを提示しているリモートアダプター(120)は、存在しているローカルGPUドライバー(416)と協力し実行され得るが、ローカルGPUドライバー(416)は、この遠隔化アーキテクチャが機能するように存在し得ない。ローカルGPUドライバー(416)は、遠隔化アーキテクチャが既存のローカルグラフィックアーキテクチャとどのように統合されるか示す。
[0048]Win32kプロセス(418)は、メモリー、プロセッサー(単数又は複数)、及び入力/出力装置のような計算リソースに対し最小レベルの抽象化を提供するWindows(登録商標)オペレーティングシステムのカーネルプロセスである。Win32kプロセス(418)は、グラフィック関連タスクを実行するグラフィック・デバイス・インターフェース(GDI)のGDIアプリケーション(420)と通信する。GDIアプリケーション(420)は、グラフィックオブジェクトを表示し、モニター及びプリンターなどの出力装置にグラフィックオブジェクトを送信するために使用されるMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムのインターフェースであり得る。GDIアプリケーション(420)は、直線、曲線、及びレンダリングフォントなどを描画するようなグラフィック関連タスクを実行し得る。
[0049]一実装において、そのようなグラフィック関連タスクを実行するためにGDIアプリケーション(420)は、GDI32プロセス(422)を使用する。GDI32プロセス(422)は、サーバーのWindows(登録商標)オペレーティングシステムのGDIに関する機能を含んでいて、クライアント(102)のディスプレイウィンドウ上に画像を表示するためのオブジェクト及びプロセス情報を生成する。GDI32プロセス(422)は、D3Dアプリケーション(410)に対しD3Dオブジェクト(214)の生成のようなグラフィック関連機能を実行する。
[0050]D3Dオブジェクト(214)の生成後、D3Dコマンド(212)及びD3Dオブジェクト(214)は、D3Dアプリケーション(410)及びD3DAPI(414)に連絡される。連絡の間、D3D抽象化レイヤ(412)において、D3D抽象化モジュール(118)が、D3Dコマンド(212)及びD3Dオブジェクト(214)をデータストリーム(216)の中に抽象化する。D3D抽象化モジュール(118)は、D3Dオブジェクト(214)のハンドルもデータストリーム(216)の中に抽象化する。
[0051]D3D抽象化モジュール(118)は、ネットワーク(104)を介し、クライアント(102)にデータストリーム(216)を送信する。これに関連し、リモートアダプター(120)は、クライアント(102−1)などのクライアント(102)のディスプレイアダプターの利用可能性及び機能に関する問い合わせをする。クライアント(102−1)のD3Dプラグイン(112)から確認を受信すると、リモートアダプター(120)は、ネットワーク(104)を介しデータストリーム(216)を送信するための通信チャネルを確立する。
[0052]クライアントサイド(404)において、D3Dプラグイン(112)が、リモートアダプター(120)によって確立される通信チャネルを介しデータストリーム(314)を受信する。D3Dプラグイン(112)によって受信されるデータストリーム(314)は、D3Dコマンド(212)、D3Dオブジェクト(214)、及び実際のD3Dオブジェクト(214)を再生成するためのハンドルを含む。D3Dプラグイン(112)は、当技術分野で周知の任意の解析方法を使用し、受信したデータストリーム(314)を解析し、D3Dコマンド(212)及びD3Dオブジェクト(214)を抽出する。
[0053]D3Dプラグイン(112)は、その後、D3Dコマンド(212)を実行し、D3Dアプリケーション(410)に関連付けられたグラフィックを表示する。これに関連し、D3Dプラグイン(112)は、クライアント(102−1)などのクライアント(102)のD3DAPI(424)と通信する。D3DAPI(424)は、D3Dプラグイン(112)とグラフィックハードウェアとの間においてD3Dコマンド(212)及びD3Dオブジェクト(214)を通信し、グラフィックアプリケーションを実行する。D3DAPI(424)は、グラフィックを表示するために使用され得るグラフィック画像をレンダリングするコマンドも含む。
[0054]D3DAPI(424)は更に、ハンドルを使用した実際のD3Dオブジェクト(214)生成のようなグラフィック関連タスクを実行するために、Win32kプロセス(426)とインタラクションする。Win32kプロセス(426)(Windows(登録商標)オペレーティングシステムのカーネルプロセス)は、サーバー(106)のWin32kプロセス(418)と同様であり得る。実際のD3Dオブジェクト(214)の生成に関しWin32kプロセス(426)は、実際のD3Dオブジェクト(214)を生成するグラフィック・デバイス・インターフェースプロセスのGDI32プロセス(428)とインタラクションする。
[0055]実際のD3Dオブジェクト(214)の生成後、クライアントサイド(404)のGDI32プロセス(428)は、D3DAPI(424)を介しD3Dプラグイン(112)にD3Dオブジェクト(214)を連絡する。更に、D3Dプラグイン(112)は、D3Dオブジェクト(214)を使用し、D3Dコマンド(212)を実行し、グラフィック画像(316)をレンダリングする。D3Dプラグイン(112)は、GPUドライバーと同様にグラフィック画像(316)をレンダリングする。レンダリングされたグラフィック画像(316)は、その後、クライアント(102−1)の入力/出力装置(310)を介し表示される。実装において、クライアント(102)それぞれは、リモートターミナルサーバークライアント(430)であり得る。クライアント(102)のD3Dプラグインは、クライアント(102)が切断され、後で再接続しようとするときも、レンダリングプロセス中のセッションにおいてD3Dオブジェクト(214)を持続し得る。再接続の成功後、サーバー(106)及びクライアント(102)は、D3Dアプリケーション(410)の実行を再開する。
[0056]実装において、D3Dアプリケーション(410)のグラフィック表示は、1つ以上のクライアント(102)によって共有され得るテクスチャマッピング、ノーマルマッピングなどのような1つ以上のD3Dリソースを使用することを含む。リソースを共用するためにD3Dプラグイン(112)は、D3Dリソースそれぞれにハンドル又は識別子を割り当てるように構成され得るが、ハンドルの使用は、1つ以上のクライアント(102)からのネットワークラウンドトリップを必要とする。絶え間のないネットワークラウンドトリップを回避するために、集中型サーバーコンポーネントは、クライアント(102)に割り当てられたプロキシとして使用されるハンドルを提供する。例えば、RDPDD(Remote Desktop Protocol Device Driver)(432)又はRDPWD(Remote Desktop Protocol Win32k Driver)(434)がそれぞれ、クライアント(102)に対するプロキシとしてセッション空間(406)又はグローバル空間(408)において使用され得る。
[0057]更に、進歩的なテクスチャレンダリング方法、フレームレート制御方法及び自動再接続方法のような1つ以上の方法が、D3D遠隔化アーキテクチャにおいて実装され得る。一実装において、D3Dアプリケーション(410)は、より良いエンドユーザー体験を達成するために、より多くのネットワーク回線容量を消費するメッシュ及びテクスチャなどのD3Dリソースも処理する。そのような場合、進歩的なテクスチャレンダリング方法が効率的に帯域幅を割り当て、より良いエンドユーザー体験を達成するように構成され得る。
[0058]更に、D3D抽象化モジュール(118)が、D3Dアプリケーション(410)のタイプに基づいてフレーム転送レートを制限することによって、サーバー(106)は帯域幅消費を規制可能なフレームレート制御方法を使用し得る。そのようなフレームレート制御方法は、複数の接続並びにアプリケーション間の拡張性及び一貫性を改善し得る。
[0059]加えてD3Dアプリケーション(410)からシームレスなリモート自動再接続体験を提供する自動再接続方法が実装され得る。例えば、クライアント(102)がD3Dアプリケーション(410)の実行中に切断されたとき、実行中のD3Dアプリケーション(410)を支援可能な新しいクライアントが接続され得る。一実装において、新しいクライアントの再接続中、D3Dアプリケーション(410)は、DEVICE_LOST又はDEVICE_REMOVEDなどのメッセージを受信する。D3D抽象化モジュール(118)は、その後、D3Dアプリケーション(410)を切断前のステータスにリストアし、D3Dアプリケーション(410)実行をレジュームする。別の実装において、新しいクライアントに再接続中、D3D抽象化モジュール(118)は、サーバーサイド(402)において、オブジェクトコンテンツを再生成するために必要とされるD3Dコマンド(212)及びD3Dオブジェクトの完全な抽象化を実行する。
[0060]サーバー(106)は、切断セッション中、無限数のD3Dコマンド(212)を蓄積しないことを保証するための更なる方法が使用され得る。本実装において、サーバー(106)において、無限数のD3Dコマンド(212)を回避するために、D3Dアプリケーション(410)を呼び出す1つ以上のカーネルのスレッドが遮断され得る。
例示的プロセス
[0061]Direct3D遠隔化アーキテクチャを実装する例示的方法を以下に説明する。これらの方法のいくつか又はすべては必要でないが、図1〜4に示されるようなアーキテクチャの少なくとも一部は実装され得る。また、本方法のいくつかの動作は、説明した順番で実行される必要性はなく、状況によって変更され、及び/又は完全に省略されることを理解されたい。
[0062]図5は、サーバー端末におけるD3Dグラフィックアプリケーション中の抽象化コマンドに関する例示的プロセス(500)を示している。例示的プロセス(500)が説明される順番は、制限として理解されるように意図されておらず、説明したどのような方法のブロックも本方法又は代替方法を実装するために順不同に接続され得る。更に、個々のブロックは、本明細書に記載した対象項目の趣旨及び範囲から逸脱せずに本方法から削除され得る。更に、本方法は、適切な任意のハードウェア、ソフトウェア、ファームウェア、又はその組み合わせで実装され得る。
[0063]ブロック(502)において、1つ以上のグラフィックアプリケーションコマンドが識別され、グラフィックアプリケーションから受信され得る。D3D抽象化モジュール(118)は、D3D抽象化レイヤ(412)においてグラフィックアプリケーションコマンドを監視していて、D3Dアプリケーション(410)から受信し得る。
[0064]ブロック(504)において、アプリケーションコマンドが、APIを介しグラフィックハードウェアドライバーに連絡される。D3D抽象化モジュール(118)は、D3DAPI(414)を介し、受信したコマンド(212)をグラフィックハードウェアドライバーに連絡し得る。
[0065]ブロック(506)において、グラフィックハードウェアドライバーによって生成されたアプリケーションコマンド及びオブジェクトが、データストリームの中に抽象化される。D3D抽象化モジュール(118)が、生成されたD3Dコマンド(212)及びD3Dオブジェクト(214)をデータストリーム(216)の中に隠されたデータとして抽象化し得、それらがネットワーク(104)上に送信される。更に、D3D抽象化モジュール(118)が、1つ以上のD3Dオブジェクトにハンドル又は識別子を割り当てる。D3D抽象化モジュール(118)は、クライアント(102−1)においてD3Dオブジェクト(214)を生成するために使用され得るハンドルを別のパラメータと一緒にデータストリーム(216)の中に記録する。
[0066]ブロック(508)において、データストリームが、クライアントにネットワークを介し送信される。D3D抽象化モジュール(118)は、1つ以上のクライアント(102)、例えばクライアント(102−1)にデータストリーム(216)を送信し得る。データストリーム(216)がその後、クライアント(102−1)のD3Dプラグイン(112)によって、データストリーム(314)として受信される。
[0067]一実装において、データストリーム(216)中のD3Dコマンド(212)及びD3Dオブジェクト(214)は、当技術分野で周知の任意の圧縮及びデシメーション方法を使用し圧縮され得る。例えば、D3Dリソースが、テクスチャ、メッシュデータなどのようにサイズが大きく、ネットワーク(104)の帯域幅に適合することが不可能な場合、そのような技法が使用され得る。圧縮されたD3Dリソースは、その後、リモートアダプター(120)を介しネットワーク(104)上に送信され得る。
[0068]リモートアダプター(120)は、D3D抽象化モジュール(118)をクライアント(102−1)のD3Dプラグイン(112)と通信可能にする。これに関連し、リモートアダプター(120)は、クライアント(102−1)のディスプレイアダプターの利用可能性及び機能ステータスをチェックする。確認がD3Dプラグイン(112)から一旦、受信されると、リモートアダプター(120)は、D3D抽象化レイヤ(412)とD3Dプラグイン(112)との間に通信チャネルを確立する。D3D抽象化モジュール(118)は、確立した通信チャネルを介し、ネットワーク(108)上のクライアント(102)にデータストリーム(216)を送信する。
[0069]図6は、3D画像をレンダリングするための例示的プロセスを示す。例示的プロセス(600)が説明されている順番は、制限として理解されるように意図されておらず、本方法又は代替方法を実装するために説明した方法のブロックがどれでも順不同に接続され得る。更に、個々のブロックは、本明細書に記載した対象項目の趣旨及び範囲から逸脱せずに本方法から削除され得る。更に、本方法は、適切な任意のハードウェア、ソフトウェア、ファームウェア、又はその組み合わせにて実装され得る。
[0070]ブロック(602)において、データストリームがサーバーから受信される。クライアント(102−1)のD3Dプラグイン(112)が、サーバー(106)のD3D抽象化モジュール(118)からデータストリーム(314)を受信する。
[0071]ブロック(604)において、D3Dコマンド及びD3Dオブジェクトが、データストリームから抽出される。D3Dプラグイン(112)が、データストリーム(314)からD3Dコマンド(212)及びD3Dオブジェクト(214)を抽出し得る。更に、D3Dプラグイン(112)は、クライアント(102−1)のGPUの支援を用いてD3Dコマンド(212)を実行し得る。
[0072]ブロック(606)において、グラフィック画像形式の出力は、クライアントにおける入力/出力装置を介しレンダリングされる。3Dグラフィック画像(316)のようなD3Dアプリケーション(410)の出力は、当技術分野で周知の任意のレンダリングアルゴリズムを使用し、クライアント(102−1)の入力/出力装置(310)を介し、レンダリングされ得る。
[0073]前述した任意の方法に関する動作のいくつかはプロセッサー又はその他の計算装置によって、1つ以上の計算機可読媒体上にストアされている命令に基づいて実装される。計算機可読媒体は、リソースモデリングアプリケーションによって利用可能なローカル又はリモートにアクセスされ得る任意の媒体であり得る。非限定の例として計算機可読媒体は、計算機記憶媒体及び通信媒体を含む。計算機記憶媒体は、計算機読込可能命令、データ構造、プログラムモジュール、又はその他のデータなどの情報記憶に関する任意の方法若しくは技術で実装された揮発性及び不揮発性並びに取り外し可能及び取り外し不可能媒体を含む。計算機記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリー、若しくはその他のメモリー技術、CD−ROM、デジタル多用途ディスク(DVD)、若しくはその他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、若しくはその他の磁気記憶装置、又は所望した情報をストアするために使用され、アプリケーションをモデル化するリソースによってアクセスされ得る別の任意の媒体、を含むがこれらに限定しない。通信媒体は、通常、任意の情報伝達媒体に対する計算機可読命令、データ構造、プログラムモジュール、又はその他のデータを具体化する。いくつかの上記の組み合わせも計算機可読媒体の範囲内に含まなくてはならない。
結論
[0074]本発明は、自己記述型データレンダリングを実装するための構造的特徴及び/又は方法論の動作に対し特定の言語で説明しているが、本発明が必ずしも説明した特定の特徴又は動作に限定されるわけではないことが理解されよう。むしろ、特定の特徴及び動作は、本発明を実装する例示的形式として開示されている。
100 例示的ネットワーク計算環境
102 クライアント
102−1 クライアント
102−2 クライアント
102−3 クライアント
102−N クライアント
104 ネットワーク
106 サーバー
108 メモリー
110 プログラムモジュール
112 D3Dプラグイン
114 メモリー
116 ユーザー空間
118 D3D抽象化モジュール
120 リモートアダプター
202 プロセッサー
204 ネットワークインターフェース
206 入力/出力インターフェース
208 プログラムデータ
210 その他のモジュール
212 D3Dコマンド
214 D3Dオブジェクト
216 データストリーム
218 その他のプログラムデータ
302 プロセッサー
304 ネットワークインターフェース
306 入力/出力インターフェース
308 プログラムデータ
310 入力/出力装置
312 その他のモジュール
314 データストリーム
316 グラフィック画像
318 その他のプログラムデータ
400 遠隔化アーキテクチャ
402 サーバーサイド
404 クライアントサイド
406 セッション空間
408 グローバル空間
410 D3Dアプリケーション
412 D3D抽象化レイヤ
414 D3Dアプリケーションプログラミングインターフェース
416 ローカルGPUドライバー
418 Win32kプロセス
420 GDIアプリケーション
422 GDI32プロセス
424 D3Dアプリケーションプログラミングインターフェース
426 Win32kプロセス
428 GDI32プロセス
430 リモートターミナルサーバークライアント
432 RDPDD(リモート・デスクトップ・プロトコル・デバイス・ドライバー)
434 RDPWD(リモート・デスクトップ・プロトコル・Win32k・ドライバー)

Claims (22)

  1. メモリーと、
    前記メモリーと作動可能に接続されるプロセッサーと、
    1つ以上のクライアントに対応している前記メモリー中のユーザー空間であって、前記ユーザー空間が、三次元(3D)コマンド及び3Dオブジェクトを含んでいるデータトラフィックを監視するための抽象化モジュールを含んでいるものと、を含むサーバーコンピューター。
  2. 前記メモリーが、前記3Dコマンド、前記3Dオブジェクト及びデータストリームをストアしているプログラムデータを含むことを特徴とする請求項1記載のサーバーコンピューター。
  3. 前記ユーザー空間が、クライアント装置における、ディスプレイアダプターの利用可能性及び機能に関する問い合わせをするリモートアダプターを含むことを特徴とする請求項1記載のサーバーコンピューター。
  4. 前記リモートアダプターが、前記抽象化モジュールと前記クライアント装置のプラグインとの間に通信チャネルを確立し、前記プラグインが、コマンド及び3Dオブジェクトを受信することと、を特徴とする請求項3記載のサーバーコンピューター。
  5. 前記抽象化モジュールが、3Dアプリケーション中で3D画像をレンダリングする機能を含むアプリケーション・プログラム・インターフェース(API)を介し、前記3Dアプリケーションから前記3Dコマンド及び3Dオブジェクトを受信するように構成されることを特徴とする請求項1記載のサーバーコンピューター。
  6. 前記抽象化モジュールが、前記3Dオブジェクトに識別子を割り当てることを特徴とする請求項1記載のサーバーコンピューター。
  7. 前記抽象化モジュールが、前記3Dコマンド及び3Dオブジェクトをデータストリームの中に抽象化し、前記データストリームを前記1つ以上のクライアントに送信することを特徴とする請求項1記載のサーバーコンピューター。
  8. 前記抽象化モジュールが、圧縮及びデシメーションによる集中型符号化を実行することを特徴とする請求項1記載のサーバーコンピューター。
  9. 前記3Dコマンドが、高頻度のコマンドであることを特徴とする請求項1記載のサーバーコンピューター。
  10. メモリーと、
    前記メモリーと作動可能に接続されるプロセッサーと、
    3Dコマンド及び3Dオブジェクトをインクルードしたデータストリームを受信し、前記3Dコマンドを抽出する受信側メモリー中の3Dプラグインと、
    前記抽出した3Dコマンドをレンダリングするグラフィック・プロセッシング・ユニット(GPU)と、を含むクライアントコンピューター。
  11. 前記3Dプラグインが、前記データストリームを解析し、3Dコマンドを抽出することを特徴とする請求項10記載のクライアントコンピューター。
  12. 前記3Dプラグインが、前記データストリーム中の前記3Dオブジェクトに関連付けられたハンドルを識別することによって3Dオブジェクトを生成することを特徴とする請求項10記載のクライアントコンピューター。
  13. 前記ハンドルが、グラフィックアプリケーションに関連付けられたリソースのアドレスを含んでいるエントリーを含むことを特徴とする請求項12記載のクライアントコンピューター。
  14. 前記3Dプラグインが、3Dグラフィックをフルスクリーンのユーザーインタフェースに提示することを特徴とする請求項10記載のクライアントコンピューター。
  15. 前記3Dプラグインが、同期化情報をサーバーに送信することを特徴とする請求項10記載のクライアントコンピューター。
  16. 前記3Dプラグインが、クライアントサイド専用のレンダリングプロトコルに基づいて出力グラフィックをレンダリングすることを特徴とする請求項10記載のクライアントコンピューター。
  17. 前記GPUが、前記データストリームを送信するサーバーコンピューターのウィンドウに生じる幾何学的変化を生成するためのプロキシウィンドウを生成することを特徴とする請求項10記載のクライアントコンピューター。
  18. 計算機実行可能媒体上に実装される方法であって、
    グラフィックアプリケーションコマンドから受信し、識別するステップと、
    前記グラフィックアプリケーションコマンドをグラフィックドライバーに伝達するステップと、
    前記アプリケーションコマンド及び前記グラフィックドライバーによって生成されたオブジェクトをデータストリームに抽象化するステップと、を含む方法。
  19. 伝達するステップが、アプリケーションプログラムインターフェースを介することを特徴とする請求項18記載の方法。
  20. 前記抽象化するステップが、生成されたコマンド及びオブジェクトを隠されたデータとして抽象化するステップ含むことを特徴とする請求項18記載の方法。
  21. 更に、前記データストリームをネットワーク上の1つ以上のクライアントに送信するステップを含む請求項18記載の方法。
  22. 更に、前記データストリームを圧縮するステップを含む請求項21記載の方法。
JP2010545038A 2008-02-01 2009-01-06 グラフィック遠隔化アーキテクチャ Active JP5455930B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/024,848 2008-02-01
US12/024,848 US8433747B2 (en) 2008-02-01 2008-02-01 Graphics remoting architecture
PCT/US2009/030201 WO2009099689A1 (en) 2008-02-01 2009-01-06 Graphics remoting architecture

Publications (2)

Publication Number Publication Date
JP2011511367A true JP2011511367A (ja) 2011-04-07
JP5455930B2 JP5455930B2 (ja) 2014-03-26

Family

ID=40931210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010545038A Active JP5455930B2 (ja) 2008-02-01 2009-01-06 グラフィック遠隔化アーキテクチャ

Country Status (8)

Country Link
US (1) US8433747B2 (ja)
EP (1) EP2248101B1 (ja)
JP (1) JP5455930B2 (ja)
KR (1) KR101527991B1 (ja)
CN (1) CN101933041B (ja)
BR (1) BRPI0907240A2 (ja)
RU (1) RU2493582C2 (ja)
WO (1) WO2009099689A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017505078A (ja) * 2013-11-11 2017-02-09 アマゾン テクノロジーズ インコーポレイテッド 複数のストリーム・コンテンツ提示
US10097596B2 (en) 2013-11-11 2018-10-09 Amazon Technologies, Inc. Multiple stream content presentation
US10257266B2 (en) 2013-11-11 2019-04-09 Amazon Technologies, Inc. Location of actor resources
US10315110B2 (en) 2013-11-11 2019-06-11 Amazon Technologies, Inc. Service for generating graphics object data
US10347013B2 (en) 2013-11-11 2019-07-09 Amazon Technologies, Inc. Session idle optimization for streaming server
US10374928B1 (en) 2013-11-11 2019-08-06 Amazon Technologies, Inc. Efficient bandwidth estimation
US10601885B2 (en) 2013-11-11 2020-03-24 Amazon Technologies, Inc. Adaptive scene complexity based on service quality

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8745173B1 (en) 2011-12-30 2014-06-03 hopTo Inc. Client computing system for and method of receiving cross-platform remote access to 3D graphics applications
US8433747B2 (en) 2008-02-01 2013-04-30 Microsoft Corporation Graphics remoting architecture
CN102123266A (zh) * 2010-01-12 2011-07-13 华为终端有限公司 基于网真技术的点对点视频通信方法、编解码器和客户端
EP2616954B1 (en) 2010-09-18 2021-03-31 Google LLC A method and mechanism for rendering graphics remotely
KR101401380B1 (ko) * 2010-11-04 2014-05-30 한국전자통신연구원 원격 렌더링 기반의 3d 응용프로그램 실행 장치 및 그 방법
US9244912B1 (en) 2010-12-10 2016-01-26 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop redrawing session utilizing HTML
US8966376B2 (en) 2010-12-10 2015-02-24 Wyse Technology L.L.C. Methods and systems for remote desktop session redrawing via HTTP headers
US9430036B1 (en) 2010-12-10 2016-08-30 Wyse Technology L.L.C. Methods and systems for facilitating accessing and controlling a remote desktop of a remote machine in real time by a windows web browser utilizing HTTP
US8589800B2 (en) 2010-12-10 2013-11-19 Wyse Technology Inc. Methods and systems for accessing and controlling a remote desktop of a remote machine in real time by a web browser at a client device via HTTP API utilizing a transcoding server
US9245047B2 (en) * 2010-12-10 2016-01-26 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop session utilizing a remote desktop client common interface
US8504654B1 (en) * 2010-12-10 2013-08-06 Wyse Technology Inc. Methods and systems for facilitating a remote desktop session utilizing long polling
US8949726B2 (en) 2010-12-10 2015-02-03 Wyse Technology L.L.C. Methods and systems for conducting a remote desktop session via HTML that supports a 2D canvas and dynamic drawing
US9395885B1 (en) 2010-12-10 2016-07-19 Wyse Technology L.L.C. Methods and systems for a remote desktop session utilizing HTTP header
US9535560B1 (en) 2010-12-10 2017-01-03 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop session for a web browser and a remote desktop server
CN102592315B (zh) * 2011-01-12 2015-04-08 赞奇科技发展有限公司 基于gpu云集群的3d渲染平台
CN102857533B (zh) * 2011-07-01 2015-11-18 云联(北京)信息技术有限公司 一种基于云计算的远程交互式系统
WO2013019517A1 (en) 2011-08-02 2013-02-07 Ciinow, Inc. A method and mechanism for efficiently delivering visual data across a network
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
US8838749B1 (en) 2011-12-30 2014-09-16 hopTo Inc. Cloud based client computing system for and method of receiving cross-platform remote access to 3D graphics applications
US8769052B1 (en) 2011-12-30 2014-07-01 hopTo Inc. Cloud-based server computing system for and method of providing cross-platform remote access to 3D graphics applications
US8766990B1 (en) 2011-12-30 2014-07-01 hopTo Inc. Server computing system for and method of providing cross-platform remote access to 3D graphics applications
CN103106680B (zh) * 2013-02-16 2015-05-06 赞奇科技发展有限公司 基于云计算架构的三维图形渲染的实现方法及云服务系统
US9865222B2 (en) 2013-03-15 2018-01-09 Videri Inc. Systems and methods for displaying, distributing, viewing, and controlling digital art and imaging
WO2014144930A2 (en) * 2013-03-15 2014-09-18 Videri Inc. Systems and methods for distributing, viewing, and controlling digital art and imaging
US9600940B2 (en) * 2013-04-08 2017-03-21 Kalloc Studios Asia Limited Method and systems for processing 3D graphic objects at a content processor after identifying a change of the object
US9645820B2 (en) 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
CN103294439B (zh) * 2013-06-28 2016-03-02 华为技术有限公司 一种图像更新方法、系统及装置
US9183613B2 (en) * 2013-08-01 2015-11-10 Intel Corporation Adaptive remote computing
US9578074B2 (en) 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
US20150130814A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Data collection for multiple view generation
US20150133214A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Video encoding based on areas of interest
US20150178032A1 (en) * 2013-12-19 2015-06-25 Qualcomm Incorporated Apparatuses and methods for using remote multimedia sink devices
KR102067017B1 (ko) 2014-01-27 2020-02-11 한국전자통신연구원 매쉬업 서비스를 위한 가상 api 제공 장치 및 방법
US11310312B2 (en) 2014-07-07 2022-04-19 Citrix Systems, Inc. Peer to peer remote application discovery
US11283866B2 (en) 2014-07-07 2022-03-22 Citrix Systems, Inc. Providing remote access to applications through interface hooks
CN110389827B (zh) * 2018-04-20 2023-05-12 伊姆西Ip控股有限责任公司 在分布式系统中进行优化的方法、设备和计算机程序产品
CN109682344A (zh) * 2018-12-12 2019-04-26 上海建工集团股份有限公司 墙体实时监测方法及系统

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487172A (en) * 1974-11-11 1996-01-23 Hyatt; Gilbert P. Transform processor system having reduced processing bandwith
JPH1166106A (ja) * 1997-06-30 1999-03-09 Xerox Corp マルチメディアデータベース及びデータベースからの情報抽出方法
JP2002505776A (ja) * 1997-06-13 2002-02-19 アイアンサイド テクノロジーズ インコーポレーテッド 性能が強化され、ネットワーク・トラヒックが少ないネットワークを通しての、ソフトウェア構成要素を操作する方法
JP2002063601A (ja) * 2000-08-15 2002-02-28 Shinji Shimojo 仮想空間システム
JP2002092624A (ja) * 2000-09-20 2002-03-29 Casio Comput Co Ltd 情報通信システム
US6714200B1 (en) * 2000-03-06 2004-03-30 Microsoft Corporation Method and system for efficiently streaming 3D animation across a wide area network
JP2005011354A (ja) * 2003-06-19 2005-01-13 Microsoft Corp 通知ボンドを使用してキャッシュオブジェクトを管理するためのシステムおよび方法
JP2005284694A (ja) * 2004-03-30 2005-10-13 Fujitsu Ltd 3次元モデルデータ提供プログラム、3次元モデルデータ提供サーバ、及び3次元モデルデータ転送方法
KR20060067248A (ko) * 2004-12-14 2006-06-19 한국전자통신연구원 사용자 공유를 위한 실사 파노라믹 콘텐츠의 장면저작/콘텐츠 생성 장치 및 그 방법
JP2006236334A (ja) * 2005-01-28 2006-09-07 Fujitsu Ltd データ転送システム、データ転送サーバプログラム及びデータ受信プログラム
US7162528B1 (en) * 1998-11-23 2007-01-09 The United States Of America As Represented By The Secretary Of The Navy Collaborative environment implemented on a distributed computer network and software therefor
JP2007004228A (ja) * 2005-06-21 2007-01-11 Fujitsu Ltd ウェブアプリケーションシステム,遠隔操作サーバプログラム及び遠隔操作クライアントプログラム
US20070061878A1 (en) * 2005-09-12 2007-03-15 Microsoft Corporation Creating secure interactive connections with remote resources
JP2007510202A (ja) * 2003-10-23 2007-04-19 マイクロソフト コーポレーション 合成デスクトップウィンドウマネージャ

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6215898B1 (en) * 1997-04-15 2001-04-10 Interval Research Corporation Data processing system and method
US6176883B1 (en) * 1997-11-24 2001-01-23 International Business Machines Corporation System and method for generating unsupported network information indicators
US6314452B1 (en) * 1999-08-31 2001-11-06 Rtimage, Ltd. System and method for transmitting a digital image over a communication network
US6618053B1 (en) 2000-01-10 2003-09-09 Vicarious Visions, Inc. Asynchronous multilevel texture pipeline
US6882967B2 (en) * 2000-01-27 2005-04-19 Middle Digital Inc. Apparatus and method for remote administration of a PC-server
US20020135585A1 (en) * 2000-02-01 2002-09-26 Dye Thomas A. Video controller system with screen caching
US6567091B2 (en) * 2000-02-01 2003-05-20 Interactive Silicon, Inc. Video controller system with object display lists
US6877027B1 (en) * 2000-02-19 2005-04-05 Hewlett-Packard Development Company, L.P. System and method for providing synchronization verification of multiple applications across remote systems
US6828983B1 (en) * 2000-05-12 2004-12-07 S3 Graphics Co., Ltd. Selective super-sampling/adaptive anti-aliasing of complex 3D data
CN1199464C (zh) * 2000-05-23 2005-04-27 皇家菲利浦电子有限公司 通信系统和数据交换的方法
US6966837B1 (en) * 2001-05-10 2005-11-22 Best Robert M Linked portable and video game systems
MXPA04002722A (es) * 2001-09-26 2005-11-04 Interact Devices Inc Sistema y metodo para comunicar senales de medios.
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US7081904B2 (en) 2002-02-26 2006-07-25 Microsoft Corporation Methods and apparatuses for identifying remote and local services
EP1483741A2 (en) 2002-03-01 2004-12-08 t5 Labs Ltd Centralised interactive graphical application server
US6989836B2 (en) 2002-04-05 2006-01-24 Sun Microsystems, Inc. Acceleration of graphics for remote display using redirection of rendering and compression
TW569575B (en) * 2002-04-30 2004-01-01 Realtek Semiconductor Corp Transmission setup method and device for multicast packet
US7149800B2 (en) * 2002-05-29 2006-12-12 Seventh Knight Auditing computer systems components in a network
JP2005175566A (ja) * 2003-12-08 2005-06-30 Shinichi Hirabayashi 立体表示システム
WO2005099333A2 (en) * 2004-04-16 2005-10-27 Digital Accelerator Corporation Method and apparatus for delivering consumer entertainment services accessed over an ip network
US7424482B2 (en) * 2004-04-26 2008-09-09 Storwize Inc. Method and system for compression of data for block mode access storage
US7590750B2 (en) 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
KR20070116925A (ko) * 2005-03-29 2007-12-11 마이크로소프트 코포레이션 웹 페이지 데이터 전송 시스템 및 방법
US7836133B2 (en) * 2005-05-05 2010-11-16 Ironport Systems, Inc. Detecting unwanted electronic mail messages based on probabilistic analysis of referenced resources
US20070005734A1 (en) 2005-06-30 2007-01-04 Microsoft Corporation Generically extensible client application
US7844442B2 (en) 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device
US8527563B2 (en) 2005-09-12 2013-09-03 Microsoft Corporation Remoting redirection layer for graphics device interface
US7899864B2 (en) 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
US20080082670A1 (en) * 2006-09-28 2008-04-03 Microsoft Corporation Resilient communications between clients comprising a cloud
US8433747B2 (en) 2008-02-01 2013-04-30 Microsoft Corporation Graphics remoting architecture
US8144187B2 (en) * 2008-03-14 2012-03-27 Microsoft Corporation Multiple video stream capability negotiation

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487172A (en) * 1974-11-11 1996-01-23 Hyatt; Gilbert P. Transform processor system having reduced processing bandwith
JP2002505776A (ja) * 1997-06-13 2002-02-19 アイアンサイド テクノロジーズ インコーポレーテッド 性能が強化され、ネットワーク・トラヒックが少ないネットワークを通しての、ソフトウェア構成要素を操作する方法
JPH1166106A (ja) * 1997-06-30 1999-03-09 Xerox Corp マルチメディアデータベース及びデータベースからの情報抽出方法
US7162528B1 (en) * 1998-11-23 2007-01-09 The United States Of America As Represented By The Secretary Of The Navy Collaborative environment implemented on a distributed computer network and software therefor
US6714200B1 (en) * 2000-03-06 2004-03-30 Microsoft Corporation Method and system for efficiently streaming 3D animation across a wide area network
JP2002063601A (ja) * 2000-08-15 2002-02-28 Shinji Shimojo 仮想空間システム
JP2002092624A (ja) * 2000-09-20 2002-03-29 Casio Comput Co Ltd 情報通信システム
JP2005011354A (ja) * 2003-06-19 2005-01-13 Microsoft Corp 通知ボンドを使用してキャッシュオブジェクトを管理するためのシステムおよび方法
JP2007510202A (ja) * 2003-10-23 2007-04-19 マイクロソフト コーポレーション 合成デスクトップウィンドウマネージャ
JP2005284694A (ja) * 2004-03-30 2005-10-13 Fujitsu Ltd 3次元モデルデータ提供プログラム、3次元モデルデータ提供サーバ、及び3次元モデルデータ転送方法
KR20060067248A (ko) * 2004-12-14 2006-06-19 한국전자통신연구원 사용자 공유를 위한 실사 파노라믹 콘텐츠의 장면저작/콘텐츠 생성 장치 및 그 방법
JP2006236334A (ja) * 2005-01-28 2006-09-07 Fujitsu Ltd データ転送システム、データ転送サーバプログラム及びデータ受信プログラム
JP2007004228A (ja) * 2005-06-21 2007-01-11 Fujitsu Ltd ウェブアプリケーションシステム,遠隔操作サーバプログラム及び遠隔操作クライアントプログラム
US20070061878A1 (en) * 2005-09-12 2007-03-15 Microsoft Corporation Creating secure interactive connections with remote resources

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017505078A (ja) * 2013-11-11 2017-02-09 アマゾン テクノロジーズ インコーポレイテッド 複数のストリーム・コンテンツ提示
US10097596B2 (en) 2013-11-11 2018-10-09 Amazon Technologies, Inc. Multiple stream content presentation
US10257266B2 (en) 2013-11-11 2019-04-09 Amazon Technologies, Inc. Location of actor resources
US10315110B2 (en) 2013-11-11 2019-06-11 Amazon Technologies, Inc. Service for generating graphics object data
US10347013B2 (en) 2013-11-11 2019-07-09 Amazon Technologies, Inc. Session idle optimization for streaming server
US10374928B1 (en) 2013-11-11 2019-08-06 Amazon Technologies, Inc. Efficient bandwidth estimation
US10601885B2 (en) 2013-11-11 2020-03-24 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US10778756B2 (en) 2013-11-11 2020-09-15 Amazon Technologies, Inc. Location of actor resources

Also Published As

Publication number Publication date
JP5455930B2 (ja) 2014-03-26
CN101933041B (zh) 2014-01-08
KR20100114050A (ko) 2010-10-22
EP2248101A1 (en) 2010-11-10
WO2009099689A1 (en) 2009-08-13
CN101933041A (zh) 2010-12-29
US20090195537A1 (en) 2009-08-06
EP2248101A4 (en) 2017-05-17
RU2493582C2 (ru) 2013-09-20
KR101527991B1 (ko) 2015-06-10
RU2010132174A (ru) 2012-02-10
US8433747B2 (en) 2013-04-30
EP2248101B1 (en) 2018-12-05
BRPI0907240A2 (pt) 2015-07-14

Similar Documents

Publication Publication Date Title
JP5455930B2 (ja) グラフィック遠隔化アーキテクチャ
US8638336B2 (en) Methods and systems for remoting three dimensional graphical data
US8169436B2 (en) Methods and systems for remoting three dimensional graphics
US8718400B2 (en) Methods and systems for prioritizing dirty regions within an image
US9235452B2 (en) Graphics remoting using augmentation data
US20160055613A1 (en) Image Processing Method, Virtual Machine, and Virtual Machine System
CA2823975C (en) Three-dimensional earth-formation visualization
CN102523109A (zh) 资源状态更新方法、管理客户端及服务器
CN115052043B (zh) 一种云桌面的视频传输方法、电子设备、装置及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130121

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130419

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140107

R150 Certificate of patent or registration of utility model

Ref document number: 5455930

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250