"コンピュータシステム上で、各々が遠隔クライアントアプリケーションに対応している複数のアプリケーションインスタンスをホストする段階と、アプリケーションインスタンスがホストされている前記遠隔クライアントアプリケーションそれぞれにネットワーク接続を維持する段階と、前記遠隔クライアントアプリケーションのうち少なくとも2つの間に、前記コンピュータシステムのグラフィックプロセッシングユニットのリソースを割り当てる段階と、前記コンピュータシステムの前記グラフィックプロセッシングユニットの前記リソースを利用して、前記遠隔クライアントアプリケーションの前記少なくとも2つに対応する前記アプリケーションインスタンスのグラフィック出力を同時にレンダリングする段階と、前記レンダリングされたグラフィック出力を、前記遠隔クライアントアプリケーションの前記少なくとも2つに、銘々のネットワーク接続を介して送信する段階とを備える方法。前記グラフィックプロセッシングユニットの前記リソースはメモリストレージを有し、前記遠隔クライアントアプリケーションのうち少なくとも2つの間に、前記コンピュータシステムのグラフィックプロセッシングユニットのリソースを割り当てる段階は、前記メモリストレージの特定の部分を、前記遠隔クライアントアプリケーションの前記少なくとも2つのそれぞれに割り当てる段階を有する、請求項1に記載の方法。各レンダリングされたグラフィック出力は、対応する遠隔クライアントアプリケーションに割り当てられた前記メモリストレージの前記部分に格納される、請求項2に記載の方法。前記コンピュータシステムの前記グラフィックプロセッシングユニットの前記リソースを利用して、送信前に、前記レンダリングされたグラフィック出力を同時に符号化する段階をさらに備える、請求項1に記載の方法。前記レンダリングされたグラフィック出力のそれぞれは、対応する遠隔クライアントアプリケーションへのビデオストリーム内に符号化されて送信される、請求項4に記載の方法。前記アプリケーションインスタンスの前記グラフィック出力は、一回のレンダリングパスでレンダリングされ、前記アプリケーションインスタンスの前記レンダリングされたグラフィック出力は、一回の符号化パスで符号化される、請求項4に記載の方法。複数の第2コンピュータシステムに接続された第1コンピュータシステムであって、前記複数の第2コンピュータシステム間で共有されていて画像を格納するレンダリングターゲットを有する第1コンピュータシステムにより、それぞれが前記複数の第2コンピュータシステムの1つに対応する複数のレンダリングパラメータのセットにアクセスする段階と、前記第1コンピュータシステムにより、前記複数のレンダリングパラメータのセットに基づいて、前記複数の第2コンピュータシステムのための複数の画像を同時にレンダリングする段階であって、前記複数の画像それぞれは前記複数の第2コンピュータシステムの1つについて、前記複数の第2コンピュータシステムの前記1つに対応する前記複数のレンダリングパラメータのセットの1つに基づいてレンダリングされ、前記レンダリングターゲットに格納される段階と、前記第1コンピュータシステムにより、前記複数の画像それぞれを、前記画像がレンダリングされている前記複数の第2コンピュータシステムのうち対応するものに送信する段階とを備える方法。前記レンダリングターゲットは、複数のレンダリングターゲットユニットに分割され、前記複数のレンダリングターゲットユニットそれぞれは、少なくとも1つの画素を格納し、前記複数の第2コンピュータシステムそれぞれは、前記複数のレンダリングターゲットユニットの少なくとも1つを割り当てられ、前記複数の画像それぞれは、前記画像がレンダリングされた前記複数の第2コンピュータシステムの1つに割り当てられた前記複数のレンダリングターゲットユニットの前記少なくとも1つ内にレンダリングされる、請求項7に記載の方法。前記第1コンピュータシステムにより、送信前に前記複数の画像を同時に符号化する段階をさらに備える、請求項7に記載の方法。前記複数の画像それぞれは、複数のビデオストリームの1つの現在のフレームとして符号化され、前記複数のビデオストリームそれぞれは、前記複数の第2コンピュータシステムの1つに対応している、請求項9に記載の方法。前記第1コンピュータシステムにより、前記画像がレンダリングされた前記複数の第2コンピュータシステムの前記1つに対して前記複数の画像それぞれを送信する段階は、前記第1コンピュータシステムにより、前記複数のビデオストリームそれぞれを、前記複数の第2コンピュータシステムの対応するものに送信する段階を有する、請求項10に記載の方法。前記第1コンピュータシステムにより、前記複数のレンダリングパラメータのセットを更新する段階をさらに備える、請求項7に記載の方法。前記複数の第2コンピュータシステムそれぞれの上で、特定のコンピュータプログラムのインスタンスが実行され、前記複数の第2コンピュータシステムそれぞれの上で実行されている前記特定のコンピュータプログラムの前記インスタンスの現在の状態によって、当該第2コンピュータシステムに対応する前記複数のレンダリングパラメータのセットのうちの対応するものが決定される、請求項12に記載の方法。前記複数のレンダリングパラメータのセットそれぞれが、少なくとも1つのシェーダ定数を含む、請求項7に記載の方法。システムであって、1以上のプロセッサが実行可能な命令を有するメモリと、グラフィックプロセッシングユニットと、前記メモリに連結され、前記命令を実行する1以上のプロセッサとを備え、前記1以上のプロセッサは、前記命令を実行するときに、各々が遠隔クライアントアプリケーションに対応している複数のアプリケーションインスタンスをホストして、アプリケーションインスタンスがホストされている前記遠隔クライアントアプリケーションそれぞれにネットワーク接続を維持し、前記遠隔クライアントアプリケーションのうち少なくとも2つの間に、前記グラフィックプロセッシングユニットのリソースを割り当て、前記グラフィックプロセッシングユニットの前記リソースを利用して、前記遠隔クライアントアプリケーションの前記少なくとも2つに対応する前記アプリケーションインスタンスのグラフィック出力を同時にレンダリングし、前記レンダリングされたグラフィック出力を、前記遠隔クライアントアプリケーションの前記少なくとも2つに、銘々のネットワーク接続を介して送信する、システム。ソフトウェアを格納する1以上のコンピュータ可読有形格納媒体であって、前記ソフトウェアは1以上のコンピュータシステムにより実行されると、各々が遠隔クライアントアプリケーションに対応している複数のアプリケーションインスタンスをホストして、アプリケーションインスタンスがホストされている前記遠隔クライアントアプリケーションそれぞれにネットワーク接続を維持し、前記遠隔クライアントアプリケーションのうち少なくとも2つの間に、グラフィックプロセッシングユニットのリソースを割り当て、前記グラフィックプロセッシングユニットの前記リソースを利用して、前記遠隔クライアントアプリケーションの前記少なくとも2つに対応する前記アプリケーションインスタンスのグラフィック出力を同時にレンダリングし、前記レンダリングされたグラフィック出力を、前記遠隔クライアントアプリケーションの前記少なくとも2つに、銘々のネットワーク接続を介して送信する、1以上のコンピュータ可読有形格納媒体。本開示を、添付図面を参照しつつ、一部の実施形態に基づいて記載する。以下の記載では、特定の詳細を述べて、本開示の完全な理解を促す。しかし、当業者には、本開示がこれら特定の詳細の一部または全てがなくても実施可能であることが明らかである。他の場合には、本開示を不当に曖昧にしないために、公知のステップおよび/または構造は、詳しく示さない。加えて、本開示は、特定の実施形態との関連で記載されるが、この記載は、記載される実施形態に開示を限定する意図はないことを理解されたい。逆に、記載は、添付請求項で定義される開示の精神および範囲内に含まれている代替例、変更例、および均等物を含むことを意図している。クライアント-サーバアーキテクチャは、サーバに、1以上のクライアントとリソースを共有させる。このアーキテクチャは様々な利点を有している。例えば通常のサーバはクライアントよりも多くのリソース例えばプロセッサまたはメモリを有し、性能機能が高いことから、サーバは、クライアントよりもタスクを早くすることができることが多い。このような性能面での違いは、タスクがリソースを多く必要とする場合、または、クライアントのリソース量が限られている場合に特に顕著となる。同時に、サーバがクライアントの代わりに、またはクライアントのためにタスクを行っている間、クライアントのリソース占有を解除して、クライアントでローカルに実行する必要のあるタスク等の他のタスク例えば、クライアントのユーザとのやりとりを行わせる、といったこともできる。サーバで実行されるのに適していると思われるタスクの一種に、サーバがホストするアプリケーションを、クライアントに対する送信用のビデオ出力としてレンダリングする、というものがある。コンピュータグラフィックの分野では、レンダリングは、通常はコンピュータプログラムを利用して、あるモデルから画像を生成するプロセスとして理解されている。モデルは、通常、三次元3Dオブジェクトの記述であり、厳密に定義された言語またはデータ構造で表すことができるようなものである。モデルは、幾何学、視点、テクスチャ、照明、シェーディング、動き、その他の適切な種類の情報を含んでよい。モデルがレンダリングされる画像は、デジタル画像またはラスターグラフィック画像であってよく、画素群により形成することができる。本開示では、レンダリングの思想を、任意のアプリケーションの任意の出力を表す画像を生成することへと拡張する。レンダリングは、2次元2Dデータおよび3Dデータを含む任意のデータに基づいて実行されてよい。あくまで例示であり限定ではないが、特定の実施形態では、3Dモデルに基づいて画像を生成することに加えて、ウェブのブラウジングアプリケーション、ワード処理アプリケーション、スプレッドシートアプリケーション、マルチメディアアプリケーション、科学および医療用のアプリケーション、およびゲームアプリケーション等のアプリケーションの出力を表す画像もレンダリングする。レンダリングは、高解像度および高画質をレンダリングされる画像に求める場合には特に、非常に計算量が多いことからリソースを多く必要とするプロセスであるので、サーバでの実行に適した種類のタスクといえる。これまでの古いコンピュータシステムでは、3次元のモデルを単純な2D画像にレンダリングするのに数時間または数日間かかっていた。コンピュータハードウェア特にコンピュータグラフィックアプリケーション例えばゲーム、マルチメディア、娯楽、またはマッピング専用に設計されたコンピュータハードウェアの開発、進歩により、現在のコンピュータシステムは、各画像を数秒間または数ミリ秒間にレンダリングすることができるようになった。実際、モデルを単一の画像にレンダリングするためにサーバで利用可能なリソース全てが占有されるという事態もあまりなくなってきている。一部の実施形態では、サーバで利用可能なリソースを有効活用するために、サーバが複数のクライアントに対して複数のレンダリングを同時に実行して例えば、複数の3Dモデルを複数の2D画像に同時にレンダリングして、且つ、各クライアントに対してレンダリングをそれぞれ実行する。一部の実施形態では、サーバの利用可能なリソースが、複数のクライアントに割り当てられたり、複数のクライアントにより共有されたりする場合がある。従って、各クライアントには、サーバで利用可能なリソースの一部が割り当てられる。より詳しくは、一部の実施形態では、サーバのグラフィックプロセッシングユニットGPUをクライアント間で共有する。特定のクライアントについて実行されるレンダリングはそれぞれ、そのクライアントに対して特に割り当てられたリソースの持分を利用して実行されてよい。一部の実施形態では、レンダリングプロセスで生じた出力である各レンダリングされた画像を、レンダリング画像が取得された対応するクライアントに送信してもよい。図1は、単一のサーバ120が複数のクライアント130に同時に複数のレンダリングを行うシステムの一例を示す。図1には、図示をしやすくする目的から4つのクライアント130A、130B、130C、130Dしか示していない。実際には、サーバは、任意の数のクライアントに対してレンダリングを同時に行ってよく、任意の時点においてあるサーバがサポートするクライアント数には理論的には制限がない。同様に、図1には、図示をしやすくする目的から1つのGPU121および1つのCPU122しか示していない。実際には、サーバは、任意の数のGPUおよびCPUを有してよい。一部の実施形態では、サーバ120は各クライアント130とそれぞれ別の接続150を介して接続する。一部の実施形態では、サーバ120とクライアント130との間の接続150は、コンピュータネットワークを介したネットワーク接続であってよく、このコンピュータネットワークとは、あくまで例示であり限定ではないが、インターネット、イントラネット、ローカルエリアネットワークLAN、ワイドエリアネットワークWAN、無線ネットワーク、またはこれらコンピュータネットワークの2以上の組み合わせであってよい。一部の実施形態では、各ネットワーク接続150が、トランスポート制御プロトコルTCP接続、ユーザデータグラムプロトコルUDP接続、または任意の他の適切な接続であってよい。一部の実施形態では、サーバ120は複数のTCPソケット124を有してよく、各クライアント130が、別個のTCP接続150を介して異なるTCPソケット124に接続されていてよい。例えばクライアント130Aは、TCP接続150Aを介してサーバ120のTCPソケット124Aに接続されてよい。一部の実施形態では、データがサーバ120と各クライアント130との間で双方向に、対応する接続150を介して交換されてよい。例えばサーバ120とクライアント130Aとは、接続150Aを介して双方向にデータを交換してよい。データは任意の適切なフォーマットであってよい。例えばサーバ120は、ビデオストリームの形態でデータをクライアント130に送信することができ、各クライアント130が、データをサーバ120に送信してよい。サーバ120とクライアント130との間の通信では、任意の適切なプロトコルが利用されてよい。例えば、アプリケーション131Aのインスタンスが、クライアント130Aのためにサーバ120で実行されている場合を想定する。サーバ120で実行されているアプリケーション131Aのインスタンスのレンダリングされた出力が、ビデオストリームの形態でサーバ120からクライアント130Aに送信されてよく、各レンダリングされた画像は、アプリケーション131Aのインスタンスの出力を、ビデオストリームの特定のフレームで表したものである。クライアント130Aが受け取った入力は特に、サーバ120で実行されているアプリケーション130Aのインスタンスの状態を変えさせる入力は、クライアント130Aからサーバ120に送信するとよい。一部の実施形態では、サーバ120は、1以上の中央処理装置CPU122と1以上のグラフィックプロセッシングユニットGPU121とを有していてよい。CPUおよびGPUは、コンピュータ分野でよく知られている。簡単に説明すると、CPUは、コンピュータの機能およびコンピュータプログラムの命令を実行するコンピュータシステムの部分のことである。GPUは、マイクロプロセッサ例えばCPUからのグラフィックレンダリングをオフロードするための専用プロセッサである。一般的には、GPUは、コンピュータグラフィックを操作する際に非常に効率がよく、その高度な並列構造によって、広範囲の複雑なアルゴリズムにおいて例えばグラフィック関連のアルゴリズムにおいて、汎用CPUよりも効果が高い。一部の実施形態では、GPU121は、ビデオカードの一部であってよく、またはサーバ120のマザーボードにあってもよい。一部の実施形態では、GPU121はレンダリングターゲットを含んでよい。一部の実施形態では、レンダリングプロセスは、1以上のアプリケーションの出力を、レンダリングターゲットに対する1以上の画像としてレンダリングする。一部の実施形態では、レンダリングされた2D画像が、GPU121のレンダリングターゲット内に格納されてよい。一部の実施形態では、レンダリングターゲットは、GPU121内のフレームバッファまたは任意の種類のメモリまたはストレージであってよい。図2は、GPU例えばGPU121のレンダリングターゲット200の一例を示す。この例では、レンダリングターゲット200がGPU121内のメモリストレージ例えばフレームバッファである。一部の実施形態では、レンダリングターゲットは、1以上のアプリケーションのレンダリングされた出力を表す最大256メガピクセルまでを格納することができる。従って、例えばレンダリングターゲットは、それぞれ1メガピクセルのブロック1024x1024画素の16x16格子に分割されてよい。レンダリングターゲットは、他の表示アスペクト率に対応するように分割されてもよい。一部の実施形態では、レンダリングターゲットは、複数の部分に分割されてよい。図2では、レンダリングターゲット200は、4×4の格子という16個の部分に分割されており、各部分を、レンダリングターゲット200のユニットまたはレンダリングターゲットのユニットと称することができる。ここでも、レンダリングターゲット200を16個のレンダリングターゲットに分割したのは、説明の便宜上である。一部の実施形態には、レンダリングターゲットは、任意の数のユニットに分割することができ、レンダリングターゲットをいくつのレンダリングターゲットユニットに分割するか、に関しては理論上の制限はない。同様に、各レンダリングターゲットユニットのサイズおよび大きさは、レンダリングターゲットのサイズおよび大きさに応じて決定してもよいし、レンダリングターゲットをいくつのレンダリングターゲットユニットに分割するか、に応じて定めてもよい。例として、各レンダリングターゲットユニットは、256画素×256画素であってもよいし、512画素×512画素であってもよいし、1024画素×1024画素であってもよい。もちろん、レンダリングターゲットユニットの幅と高さとが同じである必要はない。例えば、レンダリングターゲットユニットが256画素×512画素であっても、512画素×256画素であっても構わない。一部の実施形態では、サーバ120のGPU121のレンダリングターゲット200が4つのクライアント130間で分散されており、各クライアント130が1以上のレンダリングターゲットユニットを割り当てられても良い。各クライアント130に割り当てられるべきレンダリングターゲットユニットの数は、クライアント130の実際の要件およびシステムアーキテクチャに応じて定められて良い。一部の実施形態では、特定のクライアント130のディスプレイの解像度、大きさ、および向きによって、そのクライアント130に割り当てるレンダリングターゲットユニットの数が決定されてもよい。例えば、図2の各レンダリングターゲットユニットを、1024画素×1024画素とする。さらに、クライアント130Aが、比較的低解像度例えば1024画素×768画素のディスプレイを持つノートブックコンピュータであるとする。この場合には、1つのレンダリングターゲットユニットが、1024画素×768画素以下のレンダリング画像を格納するために十分なメモリスペースを有していることになる。従って、クライアント130Aには、1つのレンダリングターゲットユニット例えばレンダリングターゲットユニット211が割り当てられて良い。他方で、クライアント130Bが、1920画素×1680画素のディスプレイを有するデスクトップコンピュータであると想定する。この場合には、1920画素×1680画素の画像を格納するために4つのレンダリングターゲットユニットが必要となるだろう。従ってクライアント130Bは、4つのレンダリングターゲットユニットを割り当てられることになる例えばレンダリングターゲットユニット212,213、222、および223。一部の実施形態では、特定のクライアント130に割り当てられているレンダリングターゲットユニットの向きを、そのクライアント130のディスプレイのサイズおよび向きに応じて定めて良い。例えばクライアント130Cが、ディスプレイの幅がディスプレイの高さよりずっと小さい長尺状のディスプレイを持つ場合を想定する。この場合には、同じ列にある3つのレンダリングターゲットユニット221、231、241をクライアント130Cに割り当てることで、長尺状のディスプレイをサポートすることができるつまり、レンダリングターゲットユニット221、231、241を合わせることで、クライアント130Cのディスプレイのサイズおよび向きをシミュレーションする。最後に、クライアント130Dが高解像度のディスプレイを有しており、この高解像度のレンダリング画像を格納するために、6つのレンダリングターゲットユニット232、233、234、242、243、244をクライアント130Dに割り当てる場合を想定する。もちろん、任意のある時点に、全ての利用可能なレンダリングターゲットユニットが個々のクライアントに割り当てられる必要はない。一定のレンダリング中に、複数のレンダリングターゲットユニット例えばレンダリングターゲットユニット214、224を未割り当てにしておいて、後でクライアント130に割り当てることもできる。同様に、あるクライアント130に既に割り当てたレンダリングターゲットユニットを、不要になった時点で例えばこのクライアント130がサーバ120から切断された場合等、割り当て解除することもできる。一部の実施形態では、各クライアント130が、アプリケーションと称されることもある1以上のコンピュータプログラムに関連付けられてよい。図1では、説明を簡単にするべく、1つのアプリケーション131を、各クライアント130に関連付けられているものとして示している。例えばアプリケーション131Aがクライアント130Aに関連付けられているとする。しかしながらこの思想は、各クライアント130に複数のアプリケーションが関連付けられている場合であっても通用する。一部の実施形態では、サーバ120は、1以上のクライアント130のための1以上のアプリケーション131の1以上のインスタンスをホストするよう構成されている。アプリケーション131のインスタンスのレンダリングされた出力が、対応するクライアント130へと送信されて、クライアント130の1以上のユーザに対して表示される。一部の実施形態では、クライアント130に関するアプリケーション131のインスタンスを、クライアント130のために、サーバ120で実行することができる。サーバ120で実行されるアプリケーション131のインスタンスの出力は、サーバ120によって、画像としてレンダリングされてよい。一部の実施形態では、アプリケーション131のインスタンスのレンダリングされた出力は、ビデオデータとして符号化されて、ビデオストリームとして対応するクライアント130に送信されてよい。各クライアント130は、対応するアプリケーション131のレンダリング出力を表すビデオストリームを受信すると、ビデオデータを復号して、対応するアプリケーション131のレンダリング出力を表示することができる。例えば、アプリケーション131Aのインスタンスを、クライアント130Aのサーバ120上で実行する。アプリケーション131Aのインスタンスの出力は、サーバ120によって1以上の画像としてレンダリングされてよい。アプリケーション131Aのインスタンスのレンダリングされた出力は、ビデオストリームとして符号化されて、クライアント130Aへ送信されてよい。クライアント130Aがビデオストリームを受信すると、ビデオストリームを復号して、アプリケーション131Aのレンダリング出力を取得して、この出力をクライアント130Aに表示することができる。一部の実施形態では、各クライアント130が、1以上のCPU不図示と1以上のGPU不図示とを含んでよい。一部の実施形態では、各クライアント130が、ビデオストリーム符号化されたビデオフレームをそのGPUのメモリにロードして、符号化されたビデオデータを復号することで、対応するアプリケーション131のレンダリング出力を表示することができる。クライアント130でコンピュータプログラム131のインスタンスが実行されると、様々なレンダリングを実行する必要がでてくる。例えば、プログラムインスタンス131Aがゲームアプリケーションであると想定する。ゲームのビデオは、毎秒60フレームのレートで進むようなものであり、各フレームでは、ゲームシーンの新たな3Dモデルを画像にレンダリングする必要がでてくる。従って、プログラムインスタンス131Aが、毎秒60回のレンダリングを必要とする場合がある。プログラムインスタンス131Bが動画像であるとすると、ビデオは毎秒30フレームの速度で進む。ここでも、各フレームでは、動画のシーンを画像に新たにレンダリングする必要がある場合がある。従ってプログラムインスタンス131Bは、毎秒30回のレンダリングを必要とする。さらに、画像をそのプログラムインスタンス131の3Dモデルからレンダリングする方法を示すレンダリングパラメータが一式、各プログラムインスタンス131に対して存在する。一部の実施形態では、レンダリングパラメータに、あくまで一例であり限定ではないが、レンダリングするモデル、ビューポートまたはカメラアングル、照明、テクスチャ、シェーディング、または画像の解像度を含めることができる。さらに、レンダリングパラメータは、フレームごと、つまりレンダリングごとに変化することがある。例えば、プログラムインスタンス131A等のゲームアプリケーションでは、クライアント130Aのプレーヤがそのゲームシーンの間に動くと、そのゲームシーンの3Dモデルのオブジェクト、ひいては、カメラアングル、照明、およびシェーディングも変わる場合がある。この結果、各レンダリングが、ゲームの現在の状態例えば、そのレンダリングのための特定のシーン、視点の位置、カメラアングル、照明、またはシェーディングに対応するレンダリングパラメータの別のセットを有することがある。一部の実施形態では、サーバ120が、サーバ120に現在接続しているクライアント130ごとに異なるレンダリングパラメータのセット123を有している。例えば、レンダリングパラメータのセット123Aは、クライアント130Aに対応している。各レンダリングパラメータのセット123は、コンピュータプログラム131の対応するインスタンスから取得されてよく、当該コンピュータプログラム131のインスタンスのレンダリング方法を記述していてよい。例えば、レンダリングパラメータのセット123Aは、プログラム131Aについてのレンダリング方法を記述したレンダリングパラメータを含んで良く、レンダリングパラメータは、プログラムインスタンス131Aの現在の状態に基づいて更新することができてよい。場合によっては、複数のクライアント130が、同じコンピュータプログラムの複数のインスタンスを実行しつつ、異なるレンダリングパラメータ123を有していてもよい。例えば、クライアント130Aおよび130Dが、同じゲームアプリケーションの2つのインスタンスを実行する場合を想定する。クライアント130Aおよび130Dにおける2人のプレーヤは、独立して、または相互作用しつつ同じゲームをプレイすることができる例えば、同じゲームにおける2つの異なるキャラクターとして。2人のプレーヤがある時点で同じゲームを独立してプレイする場合には、ゲームの異なる段階にある場合があるので、この2人のプレーヤがクライアント130Aおよび130Dのディスプレイ上で見る画像は異なる。もしも2人のプレーヤがある時点で同じゲームを相互作用しつつプレイする場合には、同じゲームシーン中であっても、2人のプレーヤは、そのゲームシーンを異なる位置且つ異なる角度から見ることになる。この場合にも、2人のプレーヤは、クライアント130Aおよび130Dのディスプレイ上でそれぞれ別の画像を見ることになる。いずれの場合にも、2人のプレーヤがある時点で別の画像を見ているために、レンダリングパラメータは、同じゲームアプリケーションの2つのインスタンス間で異なるものとなる。一回のレンダリングパスにおいて、ピクセルシェーダおよび/または他のレンダリング機能は、とりわけ、画像をレンダリングする視点などを画定するレンダリングパラメータのセットによって動作する。一部の実施形態では、一回のレンダリングパスにおいて、サーバ120が、4つのレンダリングパラメータのセット123にそれぞれ基づいて、クライアント130上で実行される4つのプログラムインスタンス131について4回のレンダリングを同時に行うことができる。一部の実施形態では、GPU121は、実際のレンダリング機能を実行することができる。一部の実施形態では、各レンダリングにおいて、各クライアントに対するレンダリングされた画像フレームが同時に出力される。一部の実施形態では、4つのレンダリングされた画像それぞれを、対応するクライアント130に対して割り当てたGPU121内のレンダリングターゲット200の特定の部分に格納する。例えば、第1レンダリングは、レンダリングパラメータのセット123Aに基づいてクライアント130A上で実行されているプログラムインスタンス131Aについて実行されて、この第1レンダリングの画像がレンダリングターゲットユニット211に格納される。第2レンダリングが、レンダリングパラメータのセット123Bに基づいてクライアント130B上で実行されているプログラムインスタンス131Bについて実行されて、この第2レンダリングの画像がレンダリングターゲットユニット212、213、222、223に格納される。第3のレンダリングが、レンダリングパラメータのセット123Cに基づいてクライアント130C上で実行されているプログラムインスタンス131Cについて実行されて、この第3のレンダリングの画像がレンダリングターゲットユニット221、231、241に格納される。第4のレンダリングが、レンダリングパラメータのセット123Dに基づいてクライアント130D上で実行されているプログラムインスタンス131Dについて実行されて、この第4のレンダリングの画像がレンダリングターゲットユニット232、233、234、241、242、243、244に格納される。一部の実施形態では、一回の符号化パスにおいて、サーバ120が、レンダリングターゲット200に格納されている4つのレンダリング画像を同時に符号化することができる。一部の実施形態では、GPU121が実際の符号化を実行する。例えば、レンダリング画像それぞれを、別のビデオストリームの1つのフレームとして符号化することができる。一部の実施形態では、サーバ120は、今は4つのビデオストリームに符号化されている4つのレンダリング画像を、それぞれ4つのクライアント130に送信することができる。より詳しくは、第1レンダリング画像を、第1ビデオストリームのフレームとして符号化して、クライアント130Aに送信することができる。第2レンダリング画像は、第2ビデオストリームのフレームとして符号化して、クライアント130Bに送信することができる。第3のレンダリング画像は、第3のビデオストリームのフレームとして符号化して、クライアント130Cに送信することができる。第4のレンダリング画像は、第4のビデオストリームのフレームとして符号化して、クライアント130Dに送信することができる。各クライアント130は、対応するビデオストリームを受信すると、このビデオストリームを復号して、自身のディスプレイ上にレンダリング画像を表示することができる。一部の実施形態では、サーバ120は、ビデオコーデック機能を実装するものであってよい。ビデオコーデックは、サーバ120で実行されているアプリケーション131のインスタンスの出力を表すレンダリングされた画像を符号化するのに利用されてよい。一部の実施形態では、ビデオコーデックは、レンダリングターゲット200に格納されているレンダリングされている画像にアクセスして、これら画像をマクロブロックに分割することができる。一実装例では、各マクロブロックのサイズが、16画素×16画素であってよい。一部の実装例では、後述するように、離散コサイン変換DCT演算を8x8の分割部分に実行してもよい。このようにして、4:2:0というダウンサンプリングのために、各マクロブロックが4つの8x8の輝度部分、4つの4x4Cb部分、および4つの4x4Cr部分を含む。しかし他のマクロブロックサイズを利用することもできる。次にビデオコーデックは、以下のように各マクロブロックの輝度および色度の分割部分に対して一定の変換および量子化演算を行う。これら演算は直列で行っても並列で行っても良い。符号処理がGPUに行われる場合には、マクロブロックに対する処理は、並列で行うことで処理時間を短くして、高いスループットを得ることができる。コーデックは、2D平面を、その画素の輝度値を最もよくモデルしている各マクロブロックに適合させる。平面は、z=axbyで定義され、aおよびbは、平面の勾配パラメータを定義している。コーデックは、次に、平面の勾配パラメータに基づいてマクロブロックの画素の輝度値を調節する。一実装例では、各画素のコーデックは、平面の等式の対応する値を、その位置の画素値から減算する。構想上は、これは、適合後の画素x,y=画素x,y-zで定義される。一実装例では、コーデックは、色値の分割部分の値は調節しない。次に、コーデックは、マクロブロックにDCTを適用する。一実装例では、コーデックは、4つの8x8画素の輝度部分および8つの4x4の色度部分にDCTを別個に適用する。コーデックは、次に、2x2のアダマール変換を、各輝度部分および各色度部分に対応して設定された各DCT係数のDC成分に適用して、DC係数値間の相関性を見つける。別の実装例では、コーデックは、これら部分のサイズを動的に決定する。例えば、コーデックは、各部分の選択に対する比率および歪みに基づいて、4x4、8x8、または16x16の部分からの選択を行う。コーデックは、マクロブロックのDCT係数を、一次1Dアレイへと順序を付け直す。一実装例では、4つの色度部分のDCT係数をジグザグの順序で走査してから、DCT係数を飛び越し走査して、DC成分の値と、他の対応するDCT成分の値とをまとめる。一実装例では、輝度部分は、色度部分とは別に符号化される。一実装例では、色度部分は、輝度チャネル同様の、まとめる方法により飛び越し走査される。他の実装例では、ジグザグに順序を付け直す以外の方法をとってもよい。コーデックはさらに、各選択肢のための結果であるコスト符号化に必要なビット数と、各選択肢に関する誤りまたは歪みに基づいて、例えば、整数値またはゼロのいずれかに四捨五入するかを判断する量子化プロセスであるレート歪み最適化を利用して、1DアレイのDCT係数を量子化する。一実装例では、レート歪み最適化は、本質的にはビデオ品質メトリックを適用して、ソースからのずれと、各可能性のある決定結果についてのビットコストとを両方計測する。ビットは、その品質レベルに対するビットコストと品質との間の関連性を表す値であるラグランジュでビットコストを乗算することで数学的に計測される。ソースからのずれは、ピーク信号対雑音比PSNRビデオ品質メトリックを最大化するべく、平均二乗誤差として計測することができる。ビットコストの計算は、テストするための各ビデオブロックを、エントロピー符号器に渡して、実際のビットコストを計測することで、行うことができる。一実装例では、次にコーデックは、各マクロブロックのDC予測値を計算して、そのマクロブロックのDC係数からDC予測値を減算することで、DC予測値に基づいて各マクロブロックのDC係数を調節する。一実装例では、DC予測値Xは、近隣のブロックのDC係数に基づいて決定されてよい。言い換えると、ブロックXのDC予測値が、ブロックcのDC係数値より小さいブロックaおよびbのDC係数の合計に基づいて決定される、ということである。一実装例では、DC予測値の調節は、輝度および色度チャネルの両方に対して実行される。次にコーデックは、量子化された係数を各ブロックについて保留されているメモリスペースへと符号化する。一実装例では、コーデックは、可変長符号化の一形態を利用して、各ブロックについて量子化された係数を圧縮する。一実装例では、コーデックは、ホフマン符号化の次にランレングス符号化RLEを用いる。各マクロブロックについて量子化されたDCT係数を符号化すると、マクロブロックの符号化ビットとビット長とが得られる。ビット長が分かったので、コーデックは並列プレフィックス合計操作parallelprefixsumを実行して、最終的な出力であるビットストリームにおける各マクロブロックの開始位置を得る。次にコーデックは、GPU121に、符号化されたデータを出力ストリームに書き込ませて、ラスター方式同様の順序で各マクロブロックのデータを書き込むことで、メインシステムメモリにバッファさせる。一実装例では、データは、並列処理演算を利用してGPU121によってCPUメモリに書き込むことができる。例えばコーデックは、データを収集操作gatheroperationで1以上の出力ストリームに書き込む。例えば、1つのデータワード1または2バイトを書き込むタスクを持つプロセスまたは関数は、各マクロブロックの開始ビット位置とそのフレームの出力ストリームのデータワードの位置とを利用して、データワードを構築してメモリに書き込むためのデータビットにアクセスする留保されているメモリ位置を決定する。収集操作によって、GPU121のリソースを利用する並列処理演算における出力を書き込むことができるので、さらにスループットを向上させることができる。例えば一実装例では、メモリ内のデータまたはマシンワードの位置を、出力ストリームを書き込む入力として受け取るものとして、関数を定義することができる。この関数は、データまたはマシンワードおよびマクロブロックの開始ビット値の位置に基づいて1以上のマクロブロックから選択されたビット部分から、マシンワードをアセンブルして、マシンワードのデータをメモリに書き込むことができる。この関数は、並列実装することで、クライアント130にネットワーク経由で送信するための、GPU121のメモリ例えばレンダリングターゲット200からの出力のメインメモリへの書き込みを加速して行わせることができる。他の実装例では、GPU121のメモリは、送信データを、ソケットまたはその他の接続アブストラクションに書き込むために直接アクセスすることができる。一部の種類のアプリケーションでは、その出力を代表的な画像に連続してレンダリングする必要がある場合がある。例えば上述したように、ゲームアプリケーションは毎秒60回のレンダリングを必要とするものも多い。他の種類のアプリケーションでは、ユーザ入力があったときのみに新たなレンダリングが必要となる。例えば、ワード処理アプリケーションであれば、ユーザが入力したときのみに、クライアントのスクリーンに表示されている文書をリフレッシュする必要があるだろう文書の画像のレンダリング。さらに、クライアントで実行されているアプリケーションインスタンスの各レンダリングは、アプリケーションインスタンスの現在の状態が時間とともに変化することがあるような場合には異なるレンダリングパラメータに基づいて決定されてよい。一部の実施形態では、各クライアント130が、クライアント130で実行されているプログラムインスタンス131、および、必要であれば最近のレンダリングパラメータに基づく3Dモデルその他のデータをサーバ120に送信してよい。サーバ120は、各クライアント130から受け取る情報を格納することができる。一部の実施形態では、サーバ120は、各クライアント130から受け取った情報に基づいて、特定のクライアントに対していつレンダリングを実行するべきかを決定し、このレンダリングでは、3Dモデルおよびレンダリングパラメータが、他の適切な情報とともに利用される。一部の実施形態では、CPU122が実際の決定を行うことができる。一部の実施形態では、各レンダリングパスにおいて、CPU122がGPU121に、GPU121がそのレンダリングパス中に同時に複数のレンダリングを実行するために必要となる全てのデータ例えばモデル、レンダリングパラメータのセットを提供してよい。図3は、複数のクライアントに対して複数のレンダリングを同時に実行するサーバの方法を示す。一部の実施形態では、サーバのGPU内のレンダリングターゲットを、複数のレンダリングターゲットユニットに分割してよいステップ301。一部の実施形態では、レンダリングターゲットは、レンダリングされた画像が格納されうるGPU内のフレームバッファまたはその他の適切な種類のメモリまたはストレージであってよい。一部の実施形態では、レンダリングターゲットユニットは、全てが同じサイズであってよい例えば各レンダリングターゲットユニットが同じ画素数を有してよい。任意の時点において、サーバは、任意の数のクライアントに接続されてよく、これらクライアントの代わりにこれらクライアントのためにより詳しくは、これらクライアントで実行されているコンピュータプログラムのインスタンスのためにレンダリングを実行してよい。一部の実施形態では、1以上のレンダリングターゲットユニットを、サーバに現在接続されておりサポートされている各クライアントに対して割り当ててよいステップ302。1クライアントに実際に割り当てるレンダリングターゲットユニット数およびどのレンダリングターゲットユニットを割り当てるかは、そのレンダリングターゲットユニットが利用可能であるか、および、そのクライアントのシステムアーキテクチャ一例であり限定ではないが、ビデオフレームバッファまたはクライアントのディスプレイの解像度、サイズ、大きさ、および向きに応じて決定されてよい。例えば、新たなクライアントがサーバに接続されると、サーバは、現在利用可能なレンダリングターゲットユニットつまり、その時点でどのクライアントにも割り当てられていないレンダリングターゲットユニットのうち1以上をこのクライアントに対して割り当てる。逆に、サーバからあるクライアントが切断された場合には、サーバは、このクライアントに割り当てていたレンダリングターゲットユニットの割り当てを解除してdeallocateつまり占有を解除する:freeup、当該レンダリングターゲットユニットを将来他のクライアントに割り当てることができるようにする。1人のクライアントに割り当てられるレンダリングターゲットユニット数は、そのクライアントのビデオフレームバッファまたはディスプレイのサイズまたは解像度に応じて定められて良い例えば、高い解像度のディスプレイを有するクライアントには、低解像度のディスプレイを有するクライアントよりも多くの数のレンダリングターゲットユニットが割り当てられて良い。一部の実施形態では、コンピュータプログラムのインスタンスが、サーバに接続されているクライアント上で実行され始めると、サーバがこのプログラムインスタンスにレンダリングを行う場合、クライアントは、プログラムインスタンスのサーバに通知を行い、プログラムインスタンスのレンダリングを行うようサーバに要求する。クライアントは、レンダリングにおいて利用するプログラムインスタンスのモデルをサーバに送る。サーバは、プログラムインスタンスのレンダリングを行う期間は、このプログラムインスタンスのモデルを格納していてよい。一部の実施形態では、サーバは複数のクライアントに対してレンダリングを実行する場合があるので、各モデルを、どのクライアントに該モデルが関連付けられているかを示す固有識別子IDで特定することができる。もちろん、1クライアント上で、同じまたは異なるコンピュータプログラムの複数のインスタンスを実行することができる。一部の実施形態では、クライアントは、サーバに対して、このクライアントで実行中の複数のプログラムインスタンスのレンダリングの実行を要求することができる。この場合、クライアントは、サーバに対して、複数のプログラムインスタンスに対応する複数のモデルを送信することができる。例えばプログラムインスタンスがクライアントで実行を開始するたびに、クライアントは、そのプログラムインスタンスのモデルをサーバに送信することができる。サーバはこれらモデルを格納してよく、各モデルは、当該モデルに関連付けられているクライアントおよびそのクライアントで実行されているプログラムインスタンスを示す固有IDで特定されてよい。一部の実施形態では、サーバに現在接続されてサポートされている各クライアントについて1以上のレンダリングパラメータのセットを維持することができるステップ303。一部の実施形態では、各レンダリングパラメータのセットが、あるクライアントで実行されているコンピュータプログラムのインスタンスに対応して、この特定のプログラムインスタンスについて実行されるレンダリング法を示している。従って、プログラムインスタンスの表示が時間が経って変わると、レンダリングパラメータも時間の推移とともに例えばレンダリングごとに変わる。一部の実施形態では、各レンダリングパラメータのセットが、モデルに関連付けられているクライアントおよびそのクライアントで実行されているプログラムインスタンスを示す固有IDで特定されてよい。世の中には数多くのレンダリング技術が存在しており、本開示は、適したレンダリング技術のいずれをも対象としている。例えば、レイトレーシングは、レンダリング後の画像において非常に高度なフォトリアリズムを達成可能な、公知且つよく利用されているレンダリング技術である。簡単にいうと、レイトレーシングは、画像平面における画素間の光路を追跡することで、モデルから画像を生成する技術のことである。レイトレーシングには共に利用可能なアルゴリズムが様々存在している。レイトレーシングは、現実的には3Dオブジェクトに対する照明の効果をシミュレーションするものではあるが、計算量が多いのでサーバでの実行に適していると思われる。一部の実施形態では、レイトレーシングアルゴリズムをサーバで実行して、レイトレーシングを利用してレンダリングを実行してよい。コンピュータグラフィック分野では、シェーダは、一義的には、高度な柔軟性をもってグラフィックハードウェアに対するレンダリング効果を計算するために利用されるソフトウェア命令セットのことである。一部の実施形態では、シェーダは、サーバのGPUプログラム可能レンダリングパイプラインをプログラミングするために利用することができ、この技術は、既に固定機能パイプラインfixedfunctionpipelineに取って代わったと見られる向きもある。シェーダには様々な種類があり、本開示では適したシェーダをいずれも対象としている。例えば、バーテックスシェーダは、GPUに与えられる各頂点に一度実行されて、各頂点の仮想空間における3Dの位置を、表示スクリーンまたはレンダリングされる2D画像の2D座標およびZバッファの深さ値に変換することができる。バーテックスシェーダは、位置、色、およびテクスチャ座標等の特性を操作することができる。ジオメトリシェーダは、バーテックスシェーダの後のレンダリングパイプラインの次段に置かれ、メッシュから頂点を加減算し、手続きとして配置を生成したり、容量分析的な詳細volumetricdetailsを既存のメッシュに与えたりするために利用されてよい。ピクセルシェーダは、フラグメントシェーダとも称され、個々の画素の色を計算し、通常はシーンの照明および関連する効果について例えばバンプマッピングおよびカラー調節利用される。一部の実施形態では、各レンダリングパラメータのセットが、GPUのレンダリングパイプラインの様々な種類のシェーダに対応するシェーダ定数を含んでいて良い。シェーダ定数は、GPUに対して、レンダリングの実行方法を指示する。従って、実際には、シェーダ定数を利用して、レンダリングの結果レンダリングされた画像が制御されることになる。上述したように、プログラムインスタンスが異なれば表示される画像も異なるために、各レンダリングパラメータのセット例えばシェーダ定数は、対応するプログラムインスタンスについてレンダリングごとに変化することが考えられる。一部の実施形態では、必要に応じて、サーバが維持しているレンダリングパラメータのセットを、レンダリングパスの前に更新してもよいステップ304。各クライアントは、クライアントで実行されておりサーバでサポートされているプログラムインスタンスの現在の状態をサーバに送信してよい。一部の実施形態では、サーバは、クライアントから受け取った情報に基づいてレンダリングパラメータのセットを更新してよい。一部の実施形態では、サーバは、1回のレンダリングパスにおいて、現在サーバでサポートされている複数のクライアントについて複数の画像を同時にレンダリングすることができるつまり複数のレンダリングを行うことができるステップ305。一部の実施形態では、一回のレンダリングパスで、GPUレンダリングパイプラインにおいて一度移動が可能である。1つのレンダリングパイプライン内には様々な段階が存在する場合がある。例えば、先ずサーバのCPUが、命令と配置データとを、サーバのGPUに送信するとする。当該命令およびデータは、対応するモデルおよびレンダリングパラメータのセットに基づいて判断することができる。第2に、バーテックスシェーダ内で、配置を変換して照明計算を実行してよい。第3に、ジオメトリシェーダを利用する場合には、シーンにおける配置をいくらか変更してよい。第4に、計算した配置を三角形に分けてよいtriangulate。そして最後に、得られた三角を画素に変換してよい。一回のレンダリングパス中に複数の画像を同時にレンダリングするためには、GPUのリソースを複数のレンダリングプロセスで共有する必要がある。一部の実施形態では、生成されるレンダリング画像それぞれ、より詳しくは、レンダリング画像の画素値を、レンダリング画像に対応してクライアントに割り当てられた特定のレンダリングターゲットユニット内に格納する。一部の実施形態では、サーバは、ビデオストリームを利用して現在サポートしている各クライアントにレンダリングされた画像を送信して、各レンダリング画像がビデオストリームのフレームとなるようにしてよい。一部の実施形態では、サーバは、一回の符号化パスで、レンダリングターゲットに格納されている複数のレンダリング画像を、複数のクライアントに対応する複数のビデオストリームに同時に符号化してよいステップ306。例えば、第1レンダリング画像が、第1クライアントのための第1ビデオストリームの現在のフレームとして符号化され、第2レンダリング画像が、第2クライアントのための第2ビデオストリームの現在のフレームとして符号化され、といった具合であってよい。一部の実施形態では、次にサーバは、今ではビデオストリーム内でフレームとして符号化されているレンダリング画像をクライアントに送信してよいステップ307。各ビデオストリームは、対応するクライアントに送信される。例えば、第1ビデオストリームが第1クライアントに送信され、第2ビデオストリームが第2クライアントに送信され、といった具合であってよい。各クライアントは、ビデオストリームで新たなデータを受け取ると、このビデオストリームを復号して、サーバがレンダリングした画像である現在のフレームを抽出する。クライアントは、次に、表示スクリーンに現在のフレームつまりレンダリング画像を表示してよい。各クライアントで実行されている各プログラムインスタンスについて複数のレンダリングを実行することがよくある。従ってステップ304から307を繰り返すことができる。各レンダリングパスは、1人のクライアントに1枚のレンダリング画像が割り当てられるよう、サーバが現在サポートしている複数のクライアントに対して複数のレンダリング画像を生成することができる。各レンダリング画像は、対応するビデオストリームの別個のフレームとして符号化されて、対応するクライアントに送信されてよい。一部の実施形態は、ネットワーク環境で実装されてよい。図4は、ネットワーク環境400の一例を示す。ネットワーク環境400は、1以上のサーバ420と1以上のクライアント430とを互いに連結するネットワーク410を含む。一部の実施形態では、ネットワーク410は、イントラネット、エクストラネット、仮想プライベートネットワークVPN、ローカルエリアネットワークLAN、無線LANWLAN、ワイドエリアネットワークWAN、メトロポリタンエリアネットワークMAN、通信ネットワーク、衛星ネットワーク、インターネットの一部、または別のネットワーク410、または2以上のネットワーク410の組み合わせを含む。本開示は、適切な任意のネットワーク410を想定している。1以上のリンク450が、サーバ420またはクライアント430をネットワーク410に連結する。一部の実施形態では、1以上のリンク450それぞれが、1以上の有線、無線、または光リンク450を含む。一部の実施形態では、1以上のリンク450それぞれが、イントラネット、エクストラネット、仮想プライベートネットワークVPN、ローカルエリアネットワークLAN、無線LANWLAN、ワイドエリアネットワークWAN、メトロポリタンエリアネットワークMAN、通信ネットワーク、衛星ネットワーク、インターネットの一部、または別のネットワーク450、または2以上のネットワーク450の組み合わせを含む。本開示は、サーバ420およびクライアント430をネットワーク410に連結する任意の適切なリンク450を含む。一部の実施形態では、各サーバ420は、中央型サーバであってもよいし、または、複数のコンピュータまたは複数のデータセンタを包括する分散型サーバであってもよい。サーバ420は、様々な種類のものであってよく、例示であって限定ではないが、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ、またはプロキシサーバであってよい。一部の実施形態では、各サーバ420が、サーバ420が実装してサポートする適切な機能を実行するために、ハードウェア、ソフトウェア、埋め込まれた論理部品、または、これら部品の2以上の組み合わせを含んでよい。例えばウェブサーバは、一般的に、ウェブページまたはウェブページの特定の部分を含むウェブサイトをホストすることができる。より詳しくは、ウェブサーバは、HTMLファイルその他のファイルの種類をホストすることができ、または、要求に応じてファイルを動的に作成または構成することができ、HTTPまたはクライアント430からの他の要求に応じて、クライアント430にこれらを通信することができる。メールサーバは、一般的に、電子メールサービスを様々なクライアント430に提供する機能を有している。データベースサーバは、一般的にいって、1以上のデータストア内に格納されているデータを管理するためのインタフェースを提供する機能を有している。一部の実施形態では、各クライアント430は、クライアント430が実装またはサポートする適切な機能を実行するために、ハードウェア、ソフトウェア、うめこまれた論理部品、または、これら部品の2以上の組み合わせを含む電子デバイスであってよい。例示であって限定ではないが、クライアント430は、デスクトップコンピュータシステム、ノートブックコンピュータシステム、ネットブックコンピュータシステム、ハンドヘルド電子デバイス、または移動電話器であってよい。クライアント430は、クライアント430におけるネットワークユーザをネットワーク410にアクセスさせることができる。クライアント430は、ウェブブラウザ例えばMicrosoft社のInternetExplorer、またはMozillaFirefoxを有してよく、GoogleのToolbarまたはYahooのToolbar等のアドオン、プラグイン、その他の拡張機能を有してよい。クライアント430は、ユーザに、他のクライアント430における他のユーザと通信させることができる。本開示は、任意の適切なクライアント430を含むこととする。一部の実施形態では、1以上のデータストレージ440が、1以上のサーバ420に1以上のリンク450を介して通信可能に連結されていてよい。一部の実施形態では、データストレージ440を利用して、様々な種類の情報を格納することができる。一部の実施形態では、データストレージ440に格納されている情報を、特定のデータ構造に従って組織化することもできる。一部の実施形態では、サーバ420またはクライアント430に、データストレージ440に格納されている情報を管理させる例えば取得、修正、追加、または削除を行わせるインタフェースを提供することもできる。一部の実施形態では、各サーバ420が、1以上のクライアント430に同時にサービス提供してよく、サポートしているクライアント430にレンダリングを実行してよい。サーバ420は、ビデオストリーム内の複数のレンダリング画像各レンダリング画像が1つのフレームであるを符号化することで、サポートしている特定のクライアント430のレンダリング画像を送信することができ、ビデオストリームをクライアント430に送信することができる。クライアント430は、ビデオストリームを受信すると、ビデオストリームを復号して、表示用の画像フレームを抽出することができる。米国特許出願第12/579,300号、および、12/709,343号明細書は両方とも全ての目的でここに参照として組み込まれる、1以上のクライアント430に、圧縮したビデオストリームを配信するために利用されてよいビデオコーデックを開示している。加えて、前述した各出願明細書は、各サーバ420がGPUの並列処理リソースを利用して、ビデオをクライアント430用に生成してストリーミングする方法を開示している。一部の実施形態は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせとして実装されてよい。あくまで例示であり限定ではないが、1以上のコンピュータシステムが、ここで記載され図示される1以上のプロセスの1以上のステップを実行する特定の論理またはソフトウェアを実行することができる。コンピュータシステムのうち1以上は、中央型であっても分散型であってよく、適宜、複数のコンピュータシステムまたは複数のデータセンタを包括していてよい。本開示は、任意の適切なコンピュータシステムを含むことができる。一部の実施形態では、ここで記述され図示される1以上のプロセスの1以上のステップの実行が、必ずしも1以上の地理的位置に限定されず、時間的な制約を持たなくてもよい。一例であり限定ではないが、1以上のコンピュータシステムは、自身の機能をリアルタイムで、オフラインで、バッチモードで、または、適宜、上述したものの任意の組み合わせで実行することができる。コンピュータシステムのうち1以上は、適宜、機能の1以上の部分を異なる時点に、異なる場所で、異なる処理を利用して実行することができる。ここでは、論理という場合、適切な場合には、1以上のソフトウェアを含むことができ、この逆もしかりである。ソフトウェアという場合、適切な場合には、1以上のコンピュータプログラムを含むことができ、この逆もしかりである。ソフトウェアという場合、適切な場合には、データ、命令、または両方を含むことができ、この逆もしかりである。同様に、データという場合には、適切な場合には、命令を含むことができ、この逆もしかりである。1以上のコンピュータ可読媒体は、特定の実施形態を実装するソフトウェアを格納したり、具現化したりすることができる。コンピュータ可読媒体は、適宜、ソフトウェアを搬送したり、通信したり、含んだり、保持したり、維持したり、伝播させたり、保有したり、格納したり、送信したり、伝送したり、または具現化することができる。コンピュータ可読媒体は、生物学的、化学的、電子的、電磁的、赤外線、磁気、光、量子、その他の適切な媒体または2以上の媒体の組み合わせであってよい。コンピュータ可読媒体は、1以上のナノメートル単位のコンポーネントを含んでよく、または、ナノメートル単位の設計または製造物を具現化してもよい。一例であるコンピュータ可読格納媒体には、これらに限定はされないが、コンパクトディスクCD、フィールドプログラマブルゲートアレイFPGA、フロッピー登録商標ディスク、光ディスクflopticaldisk、ハードディスク、ホログラフィック記憶デバイス、集積回路IC用途特定集積回路ASIC等、磁気テープ、キャッシュ、プログラム可能論理デバイスPLD、ランダムアクセスメモリRAMデバイス、読み取り専用メモリROMデバイス、半導体メモリデバイス、およびその他の適したコンピュータ可読格納媒体が含まれる。特定の実施形態を実装するソフトウェアは、任意の適切なプログラミング言語プロシージャ言語であってもオブジェクト指向型言語であってもよいまたはこれらプログラミング言語の組み合わせで書き込まれて良い。適宜、任意の適切な種類のコンピュータシステム例えばシングルまたはマルチプロセッサコンピュータシステムまたはシステムが、特定の実施形態を実装するソフトウェアを実行することができる。適切な場合には、汎用コンピュータシステムが、特定の実施形態を実装するソフトウェアを実行することができる。例えば図5は、特定の実施形態の一以上の部分を実装するのに適したコンピュータシステム500の一例を示す。本開示は、特定の構成の特定のコンポーネントを有する特定のコンピュータシステム500を記載または例示しているが、本開示は、任意の適切な構成の任意の適切なコンポーネントを含む任意の適切なコンピュータシステムを含むこともできる。さらにコンピュータシステム500は、例えば1以上の集積回路IC、1以上のプリント配線基板PCB、1以上のハンドヘルドまたはその他のデバイス例えば移動電話またはPDA、1以上のパーソナルコンピュータ、または1以上のスーパーコンピュータ等の任意の適切な物理的形態をとることができる。システムバス510は、コンピュータシステム500のサブシステム同士を連結することができる。ここでは、バスという概念は、共通の機能を果たす1以上のデジタル信号線を含んでよい。本開示は、任意の適切なバスアーキテクチャを有する任意の適切なバス構造例えば1以上のメモリバス、1以上の周辺バス、1以上のローカルバス、または上述したものの組み合わせを有する任意の適切なシステムバス510を含むことができる。一例であるバスアーキテクチャには、これらに限定はされないが、ISAIndustryStandardArchitectureバス、EISAEnhancedISAバス、マイクロチャネルアーキテクチャMCAバス、VLBVideoElectronicsStandardsAssociationlocalバス、PCIPeripheralComponentInterconnectバス、PCIエクスプレスバスPCI-X、およびAGPAcceleratedGraphicsPortバスが含まれる。コンピュータシステム500は、1以上のプロセッサ520または中央処理装置CPUを含む。プロセッサ520は、命令、データ、またはコンピュータアドレスを一時的にローカルに格納するためのキャッシュ522を含んでいてよい。プロセッサ520は、メモリ530を含む1以上の格納デバイスに連結される。メモリ530は、ランダムアクセスメモリRAM532および読み取り専用メモリROM534を含んでよい。データおよび命令は、プロセッサ520とRAM532との間を双方向に伝送されてよい。データおよび命令は、ROM534からプロセッサ520へと一方向で伝送されてよい。RAM532およびROM534は、任意の適切なコンピュータ可読格納媒体を含んでよい。コンピュータシステム500は、双方向的にプロセッサ520に連結された固定ストレージ540を含む。固定ストレージ540は、格納制御ユニット552を介してプロセッサ520に連結されてよい。固定ストレージ540は、さらなるデータ格納キャパシティを提供してよく、任意の適切なコンピュータ可読格納媒体を含んでよい。固定ストレージ540は、オペレーティングシステムOS542、1以上の実行可能ファイル544、1以上のアプリケーションまたはプログラム546、データ548等を格納してよい。固定ストレージ540は、通常は、一次ストレージより遅い二次格納媒体例えばハードディスクである。適宜、固定ストレージ540に格納される情報が仮想メモリとしてメモリ530に組み込まれても良い。プロセッサ520は、例えばグラフィック制御554、ビデオインタフェース558、入力インタフェース560、出力インタフェース562、および格納インタフェース564等の様々なインタフェースに連結されてよく、これらはそれぞれ適切なデバイスと連結されていてよい。入力デバイスおよび出力デバイスの例には、これらに限定はされないが、ビデオディスプレイ、トラックボール、マウス、キーボード、マイクロフォン、タッチセンサー式のディスプレイ、トランスデューサーカードリーダ、磁気または紙テープリーダ、タブレット、スタイラスペン、音声または手書き認識器、生体認証リーダ、またはコンピュータシステムが含まれる。ネットワークインタフェース556は、プロセッサ520を、別のコンピュータシステムまたはネットワーク580に連結してよい。ネットワークインタフェース556を利用することで、プロセッサ520は、特定の実施形態のステップを実行する間に、情報をネットワーク580に対して送受信することができる。実施形態によってはプロセッサ520上でのみ実施されるものもある。実施形態によっては、プロセッサ520上と、同時に実行されている1以上の遠隔プロセッサ上とで実施可能なものもある。コンピュータシステム500がネットワーク580に接続されたネットワーク環境では、コンピュータシステム500は、ネットワーク580に接続されている他のデバイスと通信することができる。コンピュータシステム500は、ネットワークインタフェース556を介してネットワーク580と通信してよい。例えば、コンピュータシステム500は、ネットワーク580から情報例えば別のデバイスからの要求または応答を、ネットワークインタフェース556に入ってくる1以上の入力パケットという形式で受信してよく、メモリ530は、後の処理のために入力パケットを格納することができる。コンピュータシステム500は、ネットワーク580に、情報例えば別のデバイスへの要求または応答を、ネットワークインタフェース556からの1以上の出力パケットという形式で送信してよく、この出力パケットは、送信前にはメモリ530が格納していてよい。プロセッサ520は、メモリ530内の入力パケットまたは出力パケットにアクセスして、特定要件に従って処理する。コンピュータシステム500は、1以上の入力デバイス566キーパッド、キーボード、マウス、スタイラスペン等を含みうる、1以上の出力デバイス5681以上のディスプレイ、1以上のスピーカ、1以上のプリンタ等を含みうる、1以上の格納デバイス570、および1以上の格納媒体572を有しうる。入力デバイス566は、コンピュータシステム500の外部にあっても内部にあってもよい。出力デバイス568も、コンピュータシステム500の外部にあっても内部にあってもよい。格納デバイス570も、コンピュータシステム500の外部にあっても内部にあってもよい。格納媒体572も、コンピュータシステム500の外部にあっても内部にあってもよい。一部の実施形態では、ここに記載または例示した1以上のプロセスの1以上のステップを実行するためのソフトウェアを具現化する1以上のコンピュータ可読格納媒体を含む1以上のコンピュータ可読プロダクトを含む。一部の実施形態では、媒体の1以上の部分、ソフトウェア、またはこれら両方が、ここで記載または例示した1以上のプロセスの1以上のステップの実行専用に設計および製造されたものであってよい。これらに加えて、または、これらに代えて、一部の実施形態では、媒体の1以上の部分、ソフトウェア、またはこれら両方が、ここで記載または例示したプロセス特有の設計、製造されたものではなく、一般的に利用可能なものであってもよい。コンピュータ可読格納媒体の例には、これらに限定はされないが、CD例えばCD-ROM、FPGA,フロッピー登録商標ディスク、光ディスクflopticaldisk、ハードディスク、ホログラフィック記憶デバイス、集積回路IC用途特定集積回路ASIC等、磁気テープ、キャッシュ、プログラム可能論理デバイスPLD、ランダムアクセスメモリRAMデバイス、読み取り専用メモリROMデバイス、半導体メモリデバイス、およびその他の適したコンピュータ可読格納媒体が含まれる。一部の実施形態では、ソフトウェアは、コンパイラが生成することのできるマシンコード、または、コンピュータが解釈プログラムを利用して実行することができる高レベルのコードを含む1以上のファイルを生成してよい。一例であり限定ではないが、メモリ530は、ソフトウェアを具現化する1以上のコンピュータ可読格納媒体を含むことができ、コンピュータシステム500は、プロセッサ520がソフトウェアを実行する結果、ここに記載され例示された特定の機能を提供することができる。メモリ530はソフトウェアを格納して、プロセッサ520はソフトウェアを実行することができる。メモリ530は、ソフトウェアを具現化する大容量格納デバイス530のコンピュータ可読格納媒体から、または、1以上の他のソースからネットワークインタフェース556経由で、ソフトウェアを読み出すことができる。ソフトウェアの実行時には、プロセッサ520は、ここに記載され例示された1以上のプロセスの1以上のステップを実行することができ、これには、特定の要求に応じて、ソフトウェアの1以上の部分の命令に応じて、メモリ530への格納のために1以上のデータ構造を定義して、データ構造の1以上を修正することを含みうる。これに加えて、またはこの代わりに、コンピュータシステム500は、回路内にハードウェアとして組み込まれている、または具現化された論理の結果として、ここに記載または例示した特定の機能を提供することができ、これらはソフトウェアの代わりに、またはソフトウェアと協働して動作することで、ここに記載または例示した1以上のプロセスの1以上のステップを実行することができる。本開示は、特定の要求に応じて、ハードウェアおよびソフトウェアの任意の適切な組み合わせを含む。一部の実施形態では、コンピュータシステム500は、1以上のグラフィックプロセッシングユニットGPU524を含んでよい。一部の実施形態では、GPU524は、グラフィックレンダリング分野でよく利用される数学的演算に対する1以上の集積回路および/またはプロセッサコアを含んでよい。一部の実施形態では、GPU524は、特別なグラフィックユニット命令セットを利用してよく、他の実装例では、GPUがCPU同様の命令セット例えば修正後のx86命令セットを利用してよい。グラフィック処理セット524は、転送blitting、テクスチャマッピング、ピクセルシェーディング、フレームバッファリング等の複数のグラフィック上のプリミティブな操作を実装してよい。一部の実施形態では、GPU524は、グラフィックアクセラレータ、汎用GPUGPGPU、または任意の他の適切な処理ユニットであってよい。一部の実施形態では、GPU524は、ハードウェアシステムアーキテクチャをカードスロットを通って取り付けられるグラフィックまたはディスプレイカードに実装されてよい。他の実装例では、GPU524は、コンピュータシステムアーキテクチャのマザーボード上に集積されてもよい。適切なグラフィックプロセッシングユニットには、AdvancedMicroDevices登録商標AMDR7XXベースのGPUデバイスAMDR8XXベースのGPUデバイスIntel登録商標LarabeeベースのGPUデバイスnVidia登録商標8シリーズのGPUnVidia登録商標9シリーズのGPU、nVidia登録商標100シリーズのGPU、nVidia登録商標200シリーズのGPU、およびその他のDX11を利用可能なGPUが含まれる。本開示は、特定の順序で特定の動作を記載または例示してきたが、本開示では、任意の適切な動作を任意の適切な順序で行うことができる。さらに本開示は、任意の適切な処理を、任意の適切な順序で1以上の回数繰り返すこともできる。本開示は特定の動作を一連の作業として記載または例示しているが、本開示では、適宜、任意の適切な動作を略同時に行っても良い。ここに記載または例示した適切な1つの動作または一連の動作は、適宜、別のプロセス例えばオペレーティングシステムまたはカーネルによって中断、停止、または制御されてもよい。動作は、システム処理の全てまたは実質的な部分を占拠するオペレーティングシステム環境または独立型のルーチンとして行うことができる。本開示は、当業者であれば理解するであろう、例示的な実施形態に対する全ての変更、代替、変形、修正等を含む。同様に、適切な場合には、添付請求項も、当業者であれば理解するであろう、例示的な実施形態に対する全ての変更、代替、変形、修正等を含む。"