(57)【特許請求の範囲】
【請求項１】
写実的画像形成の処理負荷を分散させる方法であって、グラフィックス・クライアントが、
シーン・モデル・データを含むフレームを受信するステップと、
カメラ運動情報をユーザから受信するステップと、
前記シーン・モデル・データに基づいて、サーバ負荷分散ファクタを設定するステップと、
前記シーン・モデル・データ及び前記受信したカメラ運動情報に基づいて、予測レンダリング・ファクタを設定するステップと、
前記サーバ負荷分散ファクタ及び前記予測レンダリング・ファクタに基づいて、前記フレームを複数のサーバ帯域に分配するステップと、
前記複数のサーバ帯域を複数の計算サーバに分散させるステップと、
前記複数の計算サーバから処理済みサーバ帯域を受信するステップと、
前記受信した処理済みサーバ帯域に基づいて、処理済みフレームを組み立てるステップと、
画像としてユーザに表示するために前記処理済みフレームを伝送するステップと
を実行することを含む、前記方法。
【請求項２】
前記フレームを複数のサーバ帯域に分配するステップが、
前記水平方向のサーバ帯域若しくは垂直方向のサーバ帯域又はそれらの組み合わせの間で選択するステップ
をさらに含む、請求項１に記載の方法。
【請求項３】
前記グラフィックス・クライアントが、
前記複数のサーバのうちの少なくとも１つから、報告されたレンダリング時間を受信するステップと、
前記報告されたレンダリング時間に基づいて前記サーバ負荷分散ファクタを設定又は修正するステップ
をさらに含む、
請求項１に記載の方法。
【請求項４】
前記処理済みフレーム帯域を組み立てるステップが、
前記受信した処理済みサーバ帯域を復元するステップ
をさらに含む、請求項１に記載の方法。
【請求項５】
写実的画像形成の処理負荷を分散させる方法であって、複数の処理要素（ＰＥ）を含む計算サーバが、
カメラ運動情報を含むロー表示帯域を受信するステップと、
ＰＥ負荷分散ファクタ及び前記カメラ運動情報に基づいて、前記ロー表示帯域を複数のＰＥブロックに分配するステップと、
前記複数のＰＥブロックを前記複数のＰＥに分散させるステップであって、各ＰＥが、前記分散されたＰＥブロックをレンダリングして、レンダリング済みＰＥブロックを生成する、前記分散させるステップと、
前記レンダリング済みＰＥブロックを組み合わせて、処理済み表示帯域を生成するステップと、
各ＰＥについてのレンダリング時間を判断するステップと、
前記判断したレンダリング時間に基づいて、前記ＰＥ負荷分散ファクタを修正するステップと、
前記処理済み表示帯域をグラフィックス・クライアントに伝送するステップと
を実行すること含む、前記方法。
【請求項６】
前記伝送するステップは、
前記処理済み表示帯域を圧縮するステップ
を含む、請求項５に記載の方法。
【請求項７】
前記計算サーバが、
前記判断したレンダリング時間に基づいたレンダリング時間を前記グラフィックス・クライアントに報告するステップ
を実行することをさらに含む、請求項５に記載の方法。
【請求項８】
前記ＰＥ負荷分散ファクタを修正するステップは、
前記判断したレンダリング時間及び受信した予測レンダリング・ファクタに基づいて前記ＰＥ負荷分散ファクタを修正するステップ
をさらに含む、請求項５に記載の方法。
【請求項９】
写実的画像形成の処理負荷を分散させるグラフィックス・クライアントであって、
シーン・モデル・データを含むフレームを受信すること、
カメラ運動情報をユーザから受信すること、
前記シーン・モデル・データに基づいて、サーバ負荷分散ファクタを設定すること、
前記シーン・モデル・データ及び前記受信したカメラ運動情報に基づいて、予測レンダリング・ファクタを設定すること、
前記サーバ負荷分散ファクタ及び前記予測レンダリング・ファクタに基づいて、前記フレームを複数のサーバ帯域に分配すること、
前記複数のサーバ帯域を複数の計算サーバに分散させること、
前記複数の計算サーバから処理済みサーバ帯域を受信すること、
前記受信した処理済みサーバ帯域に基づいて、処理済みフレームを組み立てること、
画像としてユーザに表示するために前記処理済みフレームを伝送すること
を実行する、前記グラフィックス・クライアント。
【請求項１０】
前記フレームを複数のサーバ帯域に分配することが、
前記水平方向のサーバ帯域若しくは垂直方向のサーバ帯域又はそれらの組み合わせの間で選択すること
をさらに含む、請求項９に記載のグラフィックス・クライアント。
【請求項１１】
前記グラフィックス・クライアントが、
前記複数のサーバのうちの少なくとも１つから、報告されたレンダリング時間を受信すること
前記報告されたレンダリング時間に基づいて前記サーバ負荷分散ファクタを設定又は修正すること
をさらに含む、
請求項９に記載のグラフィックス・クライアント。
【請求項１２】
写実的画像形成の処理負荷を分散させる計算サーバであって、
各々の計算サーバは、複数の処理要素（ＰＥ）を含み、
前記計算サーバが、
カメラ運動情報を含むロー表示帯域を受信すること、
ＰＥ負荷分散ファクタ及び前記カメラ運動情報に基づいて、前記ロー表示帯域を複数のＰＥブロックに分配すること、
前記複数のＰＥブロックを前記複数のＰＥに分散させることであって、各ＰＥが、前記分散されたＰＥブロックをレンダリングして、レンダリング済みＰＥブロックを生成する、前記分散させること、
前記レンダリング済みＰＥブロックを組み合わせて、処理済み表示帯域を生成すること、
各ＰＥについてのレンダリング時間を判断すること、
前記判断したレンダリング時間に基づいて、前記ＰＥ負荷分散ファクタを修正すること、
前記処理済み表示帯域をグラフィックス・クライアントに伝送すること
を実行する、前記計算サーバ。
【請求項１３】
請求項９〜１１のいずれか一項に記載のグラフィックス・クライアントと請求項１２に記載の計算サーバとを備えているシステム。
【請求項１４】
写実的画像形成の処理負荷を分散させるコンピュータ・プログラムであって、グラフィックス・クライアントに、請求項１〜４のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
【請求項１５】
写実的画像形成の処理負荷を分散させるコンピュータ・プログラムであって、複数の処理要素（ＰＥ）を含む計算サーバに、請求項５〜８のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・ネットワーキング及び並行処理に関し、より具体的には、改善された写実的（photorealistic）画像形成の処理負荷を分散させるためのシステム及び方法に関する。
【背景技術】
【０００２】
マイクロプロセッサ・システムのような現代の電子コンピュータ・システムは、多くの場合、計算集約型タスクを別個のサブタスクに分割するように構成される。異機種システムの場合、一部のシステムは、キャッシュ認識（cache-aware）型タスク分割を用いて、分散アプリケーションの性能を改善する。技術が発展するにつれて、高速のローカル・キャッシュと低速の大容量メモリとの間のギャップが拡大し、キャッシングがさらに重要になる。一般的に、典型的な現在のシステムは、多数の処理要素（ＰＥ）にわたって作業を分散させて、キャッシュ・ヒット率を改善し、データの待ち時間を低減させようする。
【０００３】
例えば、光線追跡法などの写実的画像形成技術は、通常、固定されたデータ・アクセス・パターンをもたない、計算コストの高いアルゴリズムである。しかし、それにも関わらず、光線追跡法のタスクは、非常に高い空間的局所性及び時間的局所性を有することができる。従って、光線追跡用途のためのキャッシュ認識型タスク分散は、高い性能利得をもたらし得る。
【０００４】
しかし、典型的な光線追跡手法は、キャッシュ認識型タスク分散を十分に利用するように構成することができない。例えば、現在の光線追跡機構は、画像をタイルに分割することによって、レンダリングの問題を分解する。典型的な光線追跡機構は、これらのタイルを計算ユニットの間で明確に分散させるか、又は、ワーク・スティーリングを通じたＰＥによるアクセスのために、タイルを貪欲に保留する。
【０００５】
これらの手法のどちらにも著しく不利な点がある。典型的な明確な分散システムにおいては、タイルの分散を管理するのに必要な付加的な処理負荷により性能が抑制される。場合によっては、この付加的な処理負荷が、分散の管理によって達成された利得を減じることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
典型的なワーク・スティーリング・システムにおいては、各々のＰＥは、前の割り当てを処理した後に新しいタイルを取り込む。しかし、ＰＥは一般的なプールからタイルを取り込むので、タイルが高い空間的局所性を有する可能性は低い。従って、ワーク・スティーリング・システムにおいて、ＰＥは、キャッシュを新しいシーン・データで定期的にフラッシュするので、次のフレームについては準備ができておらず、タスクの空間的局所性を全く利用することができない。
【課題を解決するための手段】
【０００７】
以下の要約は、開示される実施形態に特有の革新的な特徴の一部の理解を容易にするために提供されるものであり、完全な説明となることを意図するものではない。実施形態の種々の態様の完全な認識は、明細書全体、特許請求の範囲、及び図面を全体として考慮に入れることによって得ることができる。
【０００８】
グラフィックス・クライアントが、シーン・モデル・データを含むフレームを受信する。シーン・モデル・データに基づいて、サーバの負荷分散ファクタを設定する。シーン・モデル・データに基づいて、予測レンダリング・ファクタを設定する。サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて、フレームを複数のサーバ帯域に分配する。サーバ帯域を複数の計算サーバに分散させる。計算サーバから処理済みサーバ帯域を受信する。受信した処理済みサーバ帯域に基づいて、処理済みフレームを組み立てる。画像としてユーザに表示するために、処理済みフレームを伝送する。
【０００９】
代替的な実施形態において、システムが、グラフィックス・クライアントを含む。グラフィックス・クライアントは、シーン・モデル・データを含むフレームを受信し、シーン・モデル・データに基づいてサーバ負荷分散ファクタを設定し、シーン・モデル・データに基づいて予測レンダリング・ファクタを設定し、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいてフレームを複数のサーバ帯域に分配し、複数のサーバ帯域を複数の計算サーバに分散させ、複数の計算サーバから処理済みサーバ帯域を受信し、受信した処理済みサーバ帯域に基づいて処理済みフレームを組み立て、画像としてユーザに表示するために、処理済みフレームを伝送するように構成される。
【００１０】
第１の態様から見ると、本発明は、グラフィックス・クライアントによってフレームを受信するステップと、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいてフレームを複数のサーバ帯域に分配するステップと、複数のサーバ帯域を複数の計算サーバに分散させるステップと、複数の計算サーバから処理済みサーバ帯域を受信するステップと、受信した処理済みサーバ帯域に基づいて処理済みフレームを組み立てるステップと、画像としてユーザに表示するために処理済みフレームを伝送するステップとを含み、フレームを分配するステップは、水平方向のサーバ帯域と垂直方向のサーバ帯域の間で選択するステップをさらに含む、データ処理システムにおいて写実的画像形成の処理負荷を分散させる方法を提供する。
する。
【００１１】
本発明は、ユーザ入力を受信するステップをさらに含み、予測レンダリング・ファクタを設定するステップは、受信したユーザ入力に基づいて予測レンダリング・ファクタを設定するステップをさらに含む、方法を提供することが好ましい。
【００１２】
本発明は、複数のサーバのうちの少なくとも１つから報告されたレンダリング時間を受信するステップをさらに含み、サーバ負荷分散ファクタを設定するステップは、報告されたレンダリング時間に基づいてサーバ負荷分散ファクタを設定するステップをさらに含む、方法を提供することが好ましい。
【００１３】
本発明は、処理済みフレーム帯域を組み立てるステップが、受信した処理済みサーバ帯域を復元するステップをさらに含む、方法を提供することが好ましい。
【００１４】
第２の態様から見ると、本発明は、計算サーバによって、シーン・モデル・データを含むロー表示帯域を受信するステップであって、計算サーバは複数の処理要素（ＰＥ）を含むステップと、ＰＥ負荷分散ファクタに基づいてロー表示帯域を複数のＰＥブロックに分配するステップと、複数のＰＥブロックを複数のＰＥに分散させるステップと、各ＰＥによって、ＰＥブロックをレンダリングして、レンダリング済みＰＥブロックを生成するステップと、計算サーバによって、レンダリング済みＰＥブロックを組み合わせて、処理済み表示帯域を生成するステップと、計算サーバによって、各ＰＥについてのレンダリング時間を判断するステップと、判断したレンダリング時間に基づいてＰＥ負荷分散ファクタを修正するステップと、処理済み表示帯域をグラフィックス・クライアントに伝送するステップとを含む、サーバ・データ処理システムにおいて写実的画像形成の処理負荷を分散させる方法を提供する。
【００１５】
本発明は、伝送するステップが、処理済み表示帯域を圧縮するステップをさらに含む、方法を提供することが好ましい。
【００１６】
本発明は、判断したレンダリング時間に基づいたレンダリング時間をグラフィックス・クライアントに報告するステップをさらに含む、方法を提供することが好ましい。
【００１７】
本発明は、ロー表示帯域が予測レンダリング入力をさらに含み、ロー表示帯域を分配するステップが、ＰＥ負荷分散ファクタ及び予測レンダリング入力に基づいて分配するステップをさらに含む、方法を提供することが好ましい。
【００１８】
本発明は、ＰＥ負荷分散ファクタを修正するステップが、判断したレンダリング時間及び受信した予測レンダリング入力に基づいてＰＥ負荷分散ファクタを修正するステップを含む、方法を提供することが好ましい。
【００１９】
別の態様から見ると、本発明は、グラフィックス・クライアントを含むシステムであって、グラフィックス・クライアントが、フレームを受信し、サーバ負荷分散ファクタを設定し、予測レンダリング・ファクタを設定し、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいてフレームを複数のサーバ帯域に分配し、複数のサーバ帯域を複数の計算サーバに分散させ、複数の計算サーバから処理済みサーバ帯域を受信し、受信した処理済みサーバ帯域に基づいて処理済みフレームを組み立て、画像としてユーザに表示するために処理済みフレームを伝送するように構成された、システムを提供する。
【００２０】
本発明は、グラフィックス・クライアントが、ユーザ入力を受信するようにさらに構成され、予測レンダリング・ファクタを設定することが、受信したユーザ入力に基づいて予測レンダリング・ファクタを設定することをさらに含む、システムを提供することが好ましい。
【００２１】
本発明は、グラフィックス・クライアントが、複数のサーバのうちの少なくとも１つから報告されたレンダリング時間を受信するようにさらに構成され、サーバ負荷分散ファクタを設定することが、報告されたレンダリング時間に基づいてサーバ負荷分散ファクタを設定することをさらに含む、システムを提供することが好ましい。
【００２２】
本発明は、複数の計算サーバをさらに含み、各々の計算サーバは、グラフィックス・クライアントに結合され、複数の処理要素（ＰＥ）を含み、かつ、グラフィックス・クライアントからシーン・モデル・データを含むロー表示帯域を受信し、ＰＥ負荷分散ファクタに基づいてロー表示帯域を複数のＰＥブロックに分配し、複数のＰＥブロックを複数のＰＥに分散させるように構成され、各々のＰＥは、ＰＥブロックをレンダリングして、レンダリングされたＰＥブロックを生成するように構成され、各々の計算サーバは、その計算サーバのＰＥによってレンダリングされたレンダリング済みＰＥブロックを組み合わせて、処理済み表示帯域を生成し、その計算サーバのＰＥの各々についてのレンダリング時間を判断し、判断したレンダリング時間に基づいてＰＥ負荷分散ファクタを修正し、処理済み表示帯域をグラフィックス・クライアントに伝送するようにさらに構成された、システムを提供することが好ましい。
【００２３】
本発明は、ロー表示帯域が予測レンダリング入力をさらに含み、ロー表示帯域を分配することが、ＰＥ負荷分散ファクタ及び予測レンダリング入力に基づいて分配することをさらに含む、システムを提供することが好ましい。
【００２４】
別の態様から見ると、本発明は、コンピュータ・システムにロードされ、実行されたときに、上述したような方法の全てのステップを実行するためのコンピュータ・プログラム・コードを含む、コンピュータ・プログラムを提供することが好ましい。
【００２５】
別の態様から見ると、本発明は、シーン・モデル・データを含むフレームを受信するように構成されたコンピュータ使用可能プログラム・コードと、シーン・モデル・データに基づいてサーバ負荷分散ファクタを設定するように構成されたコンピュータ使用可能プログラム・コードと、シーン・モデル・データに基づいて予測レンダリング・ファクタを設定するように構成されたコンピュータ使用可能プログラム・コードと、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいてフレームを複数のサーバ帯域に分配するように構成されたコンピュータ使用可能プログラム・コードと、複数のサーバ帯域を複数の計算サーバに分散させるように構成されたコンピュータ使用可能プログラム・コードと、複数の計算サーバから処理済みサーバ帯域を受信するように構成されたコンピュータ使用可能プログラム・コードと、受信した処理済みサーバ帯域に基づいて処理済みフレームを組み立てるように構成されたコンピュータ使用可能プログラム・コードと、画像としてユーザに表示するために処理済みフレームを伝送するように構成されたコンピュータ使用可能プログラム・コードとを含む、コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体上に格納された、デジタル化グラフィック・フレームを処理するためのコンピュータ・プログラムを提供する。
【００２６】
本発明は、ユーザ入力を受信するように構成されたコンピュータ使用可能プログラム・コードをさらに含み、予測レンダリング・ファクタを設定することが、シーン・モデル・データ及び受信したユーザ入力に基づいて予測レンダリング・ファクタを設定することをさらに含む、コンピュータ・プログラムを提供することが好ましい。
【００２７】
本発明は、フレームを分配することが、水平方向のサーバ帯域と垂直方向のサーバ帯域の間で選択することをさらに含む、コンピュータ・プログラムを提供することが好ましい。
【００２８】
本発明は、複数のサーバのうちの少なくとも１つから報告されたレンダリング時間を受信するように構成されたコンピュータ使用可能プログラム・コードをさらに含み、サーバ負荷分散ファクタを設定することが、シーン・モデル・データ及び報告されたレンダリング時間に基づいてサーバ負荷分散ファクタを設定することをさらに含むコンピュータ・プログラムを提供することが好ましい。
【００２９】
本発明は、処理済みフレーム帯域を組み立てることが、受信した処理済みサーバ帯域を復元することをさらに含む、コンピュータ・プログラムを提供することが好ましい。
【００３０】
別の態様から見ると、本発明は、シーン・モデル・データを含むロー表示帯域を受信するように構成されたコンピュータ使用可能プログラム・コードと、ＰＥ負荷分散ファクタに基づいてロー表示帯域を複数のＰＥブロックに分配するように構成されたコンピュータ使用可能プログラム・コードと、複数のＰＥブロックを複数のＰＥに分散させるように構成されたコンピュータ使用可能プログラム・コードと、各ＰＥによって、ＰＥブロックをレンダリングして、レンダリング済みＰＥブロックを生成するように構成されたコンピュータ使用可能プログラム・コードと、レンダリング済みＰＥブロックを組み合わせて、処理済み表示帯域を生成するように構成されたコンピュータ使用可能プログラム・コードと、各ＰＥについてのレンダリング時間を判断するように構成されたコンピュータ使用可能プログラム・コードと、判断したレンダリング時間に基づいてＰＥ負荷分散ファクタを修正するように構成されたコンピュータ使用可能プログラム・コードと、処理済み表示帯域をグラフィックス・クライアントに伝送するように構成されたコンピュータ使用可能プログラム・コードとを含む、コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体上に格納された、デジタル化グラフィック・フレームを処理するためのコンピュータ・プログラムを提供する。
【００３１】
本発明は、伝送することが処理済み表示帯域を圧縮することを含む、コンピュータ・プログラムを提供することが好ましい。
【００３２】
本発明は、判断したレンダリング時間に基づいたレンダリング時間をグラフィックス・クライアントに報告するように構成されたコンピュータ使用可能プログラム・コードを含む、コンピュータ・プログラムを提供することが好ましい。
【００３３】
本発明は、ロー表示帯域がさらに予測レンダリング入力をさらに含み、ロー表示帯域を分配することが、ＰＥ負荷分散ファクタ及び予測レンダリング入力に基づいて分配することを含む、コンピュータ・プログラムを提供することが好ましい。
【００３４】
本発明は、ＰＥ負荷分散ファクタを修正することが、判断したレンダリング時間及び受信した予測レンダリング入力に基づいてＰＥ負荷分散ファクタを修正することをさらに含む、コンピュータ・プログラムを提供することが好ましい。
【００３５】
同じ参照数字が別個の図面を通して同一の又は機能的に類似した要素を示し、詳細な説明と共に明細書に組み込まれその一部を形成する添付の図面は、ここに開示される実施形態を説明するのに役立つ。
【図面の簡単な説明】
【００３６】
【図１】好ましい実施形態による、改善された写実的画像形成システムを示すブロック図を示す。
【図２】好ましい実施形態による、改善されたグラフィックス・クライアントを示すブロック図を示す。
【図３】好ましい実施形態による、改善された計算サーバを示すブロック図を示す。
【図４】好ましい実施形態に従って実施することができる、改善された写実的画像形成の処理負荷分散方法の論理動作ステップを示す高レベル・フロー図を示す。
【図５】好ましい実施形態に従って実施することができる、改善された写実的画像形成の処理負荷分散方法の論理動作ステップを示す高レベル・フロー図を示す。
【図６】１つ又は複数の好ましい実施形態を組み込むように構成することができる例示的なコンピュータ・システムを示すブロック図を示す。
【発明を実施するための形態】
【００３７】
これらの非限定的な例に記述された特定の値及び構成は、異なるものであってもよく、単に少なくとも１つの実施形態を示すために挙げられているものにすぎず、本発明の範囲を限定することを意図するものではない。
【００３８】
以下の説明において、本発明の完全な理解を与えるために、多くの特定の詳細が説明される。当業者であれば、本発明をこれらの特定の詳細なしに実施できることを理解するであろう。他の例では、本発明を不必要な詳細で不明瞭にしないために、周知の要素は、概略図又はブロック図の形で示される。さらに、殆どの部分に関して、ネットワーク通信、電磁信号伝達技術、ユーザ・インターフェース、又は入力／出力技術等に関する詳細は、こうした詳細が、本発明の完全な理解を得るために必要であるとは考えられず、かつ、当業者の理解の範囲内にあると考えられる限り省略されている。
【００３９】
当業者には理解されるように、本発明は、システム、方法、又はコンピュータ・プログラムとして具体化することができる。従って、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形式をとることができ、これらは全て、本明細書において一般的に「回路」、「モジュール」、又は「システム」と呼ぶことができる。さらに、本発明は、媒体内に具体化されたコンピュータ使用可能プログラム・コードを有する、いずれかの有形の表現媒体内に具体化されたコンピュータ・プログラムの形態をとることができる。
【００４０】
１つ又は複数のコンピュータ使用可能媒体又はコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ使用可能媒体又はコンピュータ可読媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線、又は半導体のシステム、装置、デバイス又は伝搬媒体とすることができるが、これらに限定されるものではない。コンピュータ可読媒体のより具体的な例（非網羅的なリスト）として、以下のもの、すなわち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、インターネット又はイントラネットをサポートする伝送媒体、又は磁気記憶装置が挙げられる。プログラムが印刷された紙又は他の適切な媒体も、そのプログラムを例えば、その紙又は他の媒体の光学スキャンによって電子的にキャプチャし、次いで、コンパイルし、解釈し、又は必要に応じてそれ以外の適切な手法で処理し、その後、コンピュータ・メモリ内に格納することができるので、コンピュータ使用可能媒体又はコンピュータ可読媒体はプログラムが印刷された紙又は別の適切な媒体とすることさえできることに留意されたい。本明細書の文脈内において、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置、又はデバイスによって使用するため、又はこれらと接続して使用するために、プログラムを収納、保存、通信、伝搬、又は輸送することができるあらゆる媒体とすることができる。コンピュータ使用可能媒体は、コンピュータ使用可能なプログラム・コードがその中で具体化された、ベースバンド内の又は搬送波の一部としての、伝搬されたデータ信号を含むものとすることができる。コンピュータ使用可能プログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、及びＲＦなどを含むいずれかの適切な媒体を用いて伝送することができる。
【００４１】
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、ＳｍａｌｌＴａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語、及び「Ｃ」プログラミング言語又は同様なプログラミング言語のような、従来型の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立したソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部がリモート・コンピュータ上で実行される場合もあり、又は完全にリモート・コンピュータ若しくはサーバ上で実行される場合もある。一番最後のシナリオの場合、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部のコンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００４２】
本発明は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラムのフローチャート図及び／又はブロック図を参照して、以下で説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実施することができることが理解されるであろう。これらのコンピュータ・プログラム命令を、機械を製造するために、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／行為を実施するための手段を作り出すようにさせることができる。
【００４３】
これらのコンピュータ・プログラム命令を、コンピュータ又は他のプログラム可能データ処理装置に特定の方法で機能するように指示することができるコンピュータ可読媒体に格納し、それにより、そのコンピュータ可読媒体に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／行為を実施する命令手段を含む製品を製造するようにさせることもできる。
【００４４】
コンピュータ・プログラム命令をコンピュータ又は他のプログラム可能データ処理装置上にロードして、一連の動作ステップをコンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／行為を実施するためのプロセスを提供するように、コンピュータにより実行されるプロセスを生成することもできる。
【００４５】
プログラム・コードを格納し、及び／又は実行するのに適したデータ処理システムは、システム・バスを介してメモリ要素に直接的又は間接的に結合された少なくとも１つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量ストレージからコードを取り出さなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的に格納するキャッシュ・メモリを含むことができる。
【００４６】
入力／出力、すなわちＩ／Ｏ装置（これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス等を含む）は、直接、又は介在するＩ／Ｏコントローラを通じてのどちらかで、システムに結合することができる。データ処理システムが、介在する私設又は公衆ネットワークを通じて他のデータ処理システム又はリモート・プリンタ若しくはストレージ・デバイスに接続することを可能にするために、ネットワーク・アダプタをシステムに結合することもできる。モデム、ケーブル・モデム及びイーサネット・カードは、現在利用可能なネットワーク・アダプタのタイプのうちのごく一部である。
【００４７】
ここで図面を参照すると、図１は、本発明の好ましい実施形態による、改善された写実的画像形成の処理負荷を分散させるためのシステム１００の特定のコンポーネントを示す高レベル・ブロック図である。システム１００は、グラフィックス・クライアント１１０を含む。
【００４８】
グラフィックス・クライアント１１０は、以下に図２と関連してより詳細に説明されるような、グラフィックス・クライアント・モジュール又はデバイスである。グラフィックス・クライアント１１０は、ディスプレイ１２０に結合される。ディスプレイ１２０は、デジタル化されたグラフィック画像をユーザに表示するように構成された、他の点では従来型のディスプレイである。
【００４９】
グラフィックス・クライアント１１０はまた、ユーザ・インターフェース１３０にも結合される。ユーザ・インターフェース１３０は、ユーザ１３２との間で情報を送受信するように構成された、他の点では従来型のユーザ・インターフェースである。１つの実施形態において、グラフィックス・クライアント１１０は、ユーザ・インターフェース１３０からユーザ入力を受信する。１つの実施形態において、ユーザ入力は、複数の画像フレームを含み、各々フレームは、画像内に配置されたオブジェクトを記述するシーン・モデル・データを含む。１つの実施形態において、ユーザ入力はまた、画像フレームごとの視点（又は「眼」）の運動を記述するカメラ運動コマンドを含む。
【００５０】
示される実施形態において、グラフィックス・クライアント１１０はまた、ネットワーク１４０にも結合されている。ネットワーク１４０は、他の点では従来型のネットワークである。１つの実施形態においては、ネットワーク１４０は、ギガビット・イーサネット・ネットワークである。代替的な実施形態においては、ネットワーク１４０は、Ｉｎｆｉｎｉｂａｎｄネットワークである。
【００５１】
ネットワーク１４０は、複数の計算サーバ１５０にも結合されている。各々の計算サーバ１５０は、以下に図３と関連してより詳細に説明される計算サーバである。示される実施形態において、グラフィックス・クライアント１１０は、ネットワーク１４０を通して計算サーバ１５０に結合されている。
【００５２】
代替的な実施形態において、グラフィックス・クライアント１１０は、直接リンク１５２を通して１つ又は複数の計算サーバ１５０に結合されている。１つの実施形態においては、リンク１５２は、物理的な直接リンクである。代替的な実施形態においては、リンク１５２は、仮想プライベート・ネットワーク（ＶＰＮ）リンクのような仮想リンクである。
【００５３】
一般に、以下により詳細に説明される例示的な動作において、システム１００は、次のように動作する。ユーザ１３２が、ユーザ・インターフェース１３０を通して、一連の画像をディスプレス１２０上に表示するよう、グラフィックス・クライアント１１０に指示する。グラフィックス・クライアント１１０は、例えば、一連のフレームをグラフィックス・クライアント１１０上のストレージ又はユーザ・インターフェース１３０から取り出すことにより、一連のデジタル化画像「フレーム」として一連の画像を受信する。一般に、各フレームは、シーン内に配置された要素を記述するシーン・モデル・データを含む。
【００５４】
各フレームごとに、グラフィックス・クライアント１１０は、フレームを複数のサーバ帯域に分配し、各々のサーバ帯域は、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて特定の計算サーバ１５０と関連付けられている。グラフィックス・クライアント１１０は、サーバ帯域を計算サーバ１５０に分散させる。各計算サーバ１５０（複数の処理要素（ＰＥ）を含む）は、受信したサーバ帯域（「ロー（raw）表示帯域」として受信される）を、各々がＰＥ負荷分散ファクタに基づいて特定のＰＥと関連付けられたＰＥブロックに分割する。幾つかの実施形態においては、計算サーバ１５０は、ＰＥ負荷分散ファクタ及びグラフィックス・クライアント１１０から受信した予測レンダリング情報に基づいて、サーバ帯域をＰＥブロックに分割する。計算サーバ１５０は、ＰＥブロックをこれらのＰＥに分散させる。
【００５５】
ＰＥはＰＥブロックを処理し、ロー・フレーム・データをレンダリングし、計算集約型作業を行なって、該ロー・フレーム・データをターゲット・ディスプレイ１２０に適した形式に変化させる。写実的画像形成の処理においては、レンダリングは、光線追跡法、アンビエント・オクルージョン（ambient occlusion）、及び他の技術を含むことができる。ＰＥは、処理済みＰＥブロックをこれらの親計算サーバ１５０に戻し、親計算サーバ１５０は、処理済みＰＥブロックを処理済み表示帯域に構築する。
【００５６】
幾つかの実施形態においては、計算サーバ１５０は、グラフィックス・クライアント１１０への伝送のために処理済み表示帯域を圧縮する。幾つかの実施形態においては、１つ又は複数の計算サーバ１５０は、更なる圧縮なしに処理済み表示帯域を伝送する。各計算サーバ１５０は、ＰＥの各々がそのＰＥブロックをレンダリングするのにかかる時間と、ロー表示帯域全体についての総レンダリング時間とを判断する。
【００５７】
計算サーバ１５０は、各ＰＥについての個々のレンダリング時間に基づいて、ＰＥ負荷分散ファクタを調整する。１つの実施形態において、各計算サーバ１５０はまた、その総レンダリング時間をグラフィックス・クライアント１１０に報告する。
【００５８】
グラフィックス・クライアント１１０は、処理済み表示帯域を受信し、該帯域を処理済みフレームに構築する。グラフィックス・クライアント１１０は、ユーザに表示するために、処理済みフレームをディスプレイ１２０に伝送する。１つの実施形態において、グラフィックス・クライアント１１０は、計算サーバ１５０から受信した報告されたレンダリング時間に基づいて、負荷分散ファクタを修正する。
【００５９】
従って、上記に全体的に説明され、以下により詳細に説明されるように、グラフィックス・クライアント１１０は、一部はサーバ間の相対的負荷に基づき、一部はユーザから受信した予測レンダリング情報に基づいて、未処理のサーバ帯域を計算サーバ１５０に分散させる。計算サーバ１５０は、ＰＥブロックと予測レンダリング情報との間の相対的負荷に基づいて、未処理のサーバ帯域をＰＥブロックに分割する。ＰＥはブロックを処理し、これにより、計算サーバ１５０は組み合わされて処理済み帯域となり、グラフィックス・クライアント１１０に戻される。グラフィックス・クライアント１１０は、受信した処理済み帯域をユーザに表示するのに適した形式に構築する。計算サーバ１５０及びグラフィックス・クライアント１１０の両方とも、レンダリング時間を用いて、負荷分散ファクタを動的に調整する。
【００６０】
このように、システム１００は、計算集約型タスクを実行する要素の間で処理負荷を動的に分散させることができる。フレーム・データが変わると、フレームの特定の部分が他の部分よりも計算集約的になるが、システムは、応答時間をほぼ等しく保持するようにタスクを再配分することで応答することができる。当業者であれば理解するように、ほぼ同等しい応答時間は、負荷のバランスのとれていることを示し、ＰＥ／サーバについてのアイドル時間を低減させる助けとなる。
【００６１】
図２は、本発明の１つの実施形態による例示的なグラフィックス・クライアント２００を示すブロック図である。特に、クライアント２００は、制御処理ユニット（ＰＵ）２０２を含む。制御ＰＵ２０２は、他の点では従来型の処理ユニットであり、ここで説明されるように構成される。１つの実施形態においては、クライアント２００は、ＰｌａｙＳｔａｔｉｏｎ３（商標）（ＰＳ３）である。代替的な実施形態においては、クライアント２００は、ｘ８６マシンである。代替的な実施形態においては、クライアント２００は、シン・クライアント（thin client)である。
【００６２】
クライアント２００はまた、負荷分散モジュール２０４も含む。一般に、制御ＰＵ２０２及び負荷分散モジュール２０４は、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて、グラフィックス画像フレームを複数の帯域に分配する。特に、１つの実施形態において、負荷分散モジュール２０４は、サーバ応答時間及びユーザ入力に基づいて、サーバ負荷分散ファクタを設定し、修正するように構成される。１つの実施形態においては、ユーザ入力は、手作業によるサーバ負荷分散の設定を含む。
【００６３】
１つの実施形態において、負荷分散モジュール２０４は、フレームを、フレーム・データを含む帯域に分割し、システム２００は、レンダリングのために、分割されたフレーム・データを計算サーバに伝送する。代替的な実施形態においては、クライアント２００は、フレーム内の各帯域の境界を画定する座標情報を伝送する。１つの実施形態においては、座標情報は、キャッシュに入れられた（及び、一般的にアクセス可能な）フレームに関する座標を含む。
【００６４】
負荷分散モジュール２０４はまた、シーン・モデル・データ、ユーザ入力及びサーバ応答時間に基づいて、予測レンダリング・ファクタを設定し、修正するようにも構成される。１つの実施形態において、ユーザ入力は、カメラ運動情報を含む。１つの実施形態において、カメラ運動情報は、視点、又はカメラの「眼」、並びに視点の変化の速度と方向を示す運動ベクトルを含む。
【００６５】
例えば、１つの実施形態において、クライアント２００は、カメラ運動情報を含むユーザ入力を受領し、従って、眼の運動の方向及び速度を認識している。代替的な実施形態においては、クライアント２００は、人間のユーザの眼の運動をカメラの眼の運動に置き換えて、人間のユーザの眼の運動に関する追跡情報を含むユーザ入力を受領する。従って、負荷分散モジュール２０４は、フレームにわたる計算負荷の変化の予測に基づいて、サーバ帯域の分配を前もって調整することができる。
【００６６】
つまり、当業者であれば、フレームの特定の部分が他の部分よりも計算集約的であることを理解するであろう。例えば、実線の単色の背景のみを含むフレーム・セグメントは、複数の光源からの光を反射するディスコ・ボールを含むフレーム・セグメントよりもはるかに計算集約的ではない。従って、例えば、負荷分散モジュール２０４は、フレームを、３つの帯域、すなわちディスコ・ボールの半分を含む１つの帯域と、各々が背景全体及びディスコ・ボールの四分の一を含む２つの帯域とに分割することができる。
【００６７】
さらに、カメラの眼が変化したとき、フレーム内のシーン要素（例えば、ディスコ・ボール）は、該フレームの位置によってフレームに占める量が異なる。１つの実施形態において、カメラの眼の運動情報は、「追跡ベクトル」として、カメラ又は人間の眼の変化の方向及び速度を含む。代替的な実施形態においては、カメラの眼の運動情報は、カメラの眼が合焦されるターゲット・シーン・オブジェクトと、現在の視点からのターゲット・シーン・オブジェクトの相対距離とを含む。つまり、システムが、ユーザの関心の焦点である特定のオブジェクトすなわち「ターゲット・シーン・オブジェクト」を認識している場合、システムは、シーンがシフトして、特定のオブジェクトを表示ウィンドウの中心又は中心近くに向けて移動させると予測することができる。例えば、ターゲット・シーン・オブジェクトが現在の視点の右上方に配置されている場合には、カメラの眼、従ってシーンは、次に右上方にシフトする可能性が高く、負荷分散モジュールはその追跡ベクトルのためのサーバ帯域の分配を最適化することができる。
【００６８】
従って、１つの実施形態においては、負荷分散モジュール２０４は、カメラの眼の運動情報及びシーン・モデル・データを用いて、サーバ帯域の分配を前もって調整し、それにより、計算サーバにわたる計算負荷が等しくなる傾向がある。１つの実施形態において、負荷分散モジュール２０４は、追跡ベクトル、ターゲット・シーン・オブジェクト及び相対距離を用いて、サーバ帯域の分配の調整規模を決定する。１つの実施形態において、サーバ帯域の分配の調整規模は、サーバ帯域の分配の「積極性」の尺度となる。
【００６９】
一般に、フレームをサーバ帯域に分配すると、クライアント２００は、サーバ帯域をそれらの割り当てられた計算サーバに分散させる。クライアント２００は、代わりに、計算サーバから処理済み表示帯域を受信する。１つの実施形態において、クライアント２００は、各計算サーバについての応答時間を判断する。代替的な実施形態において、クライアント２００は、各計算サーバから、報告された応答時間を受信する。
【００７０】
クライアント２００はまた、キャッシュ２０６を含む。キャッシュ２０６は、他の点では従来型のキャッシュである。一般に、クライアント２００は、処理済みフレーム及び未処理のフレーム、並びに他の情報をキャッシュ２０６に格納する。
【００７１】
クライアント２００はまた、復元器２０８も含む。１つの実施形態において、クライアント２００は、計算サーバから、圧縮された処理済みサーバ帯域を受信する。従って、復元器２０８は、圧縮された処理済みサーバ帯域を復元するように構成される。
【００７２】
クライアント２００はまた、表示インターフェース２１０、ユーザ・インターフェース２１２、及びネットワーク・インターフェース２１４も含む。表示インターフェース２１０は、例えば、図１のディスプレイ１２０のようなディスプレイとインターフェースするように構成された、他の点では従来型の表示インターフェースである。ユーザ・インターフェース２１２は、例えば、図１のユーザ・インターフェース１３０として構成された、他の点では従来型のユーザ・インターフェースである。ネットワーク・インターフェース２１４は、例えば、図１のネットワーク１４０のようなネットワークとインターフェースするように構成された、他の点では従来型のネットワーク・インターフェースである。
【００７３】
上述したように、クライアント２００は、例えば、図１のグラフィックス・クライアント１１０のようなグラフィックス・クライアントである。従って、クライアント２００は、レンダリングのためにロー・サーバ帯域を計算サーバに伝送し、表示のために処理済み表示帯域を受信する。図３は、本発明の１つの実施形態による例示的な計算サーバを示す。
【００７４】
特に、図３は、本発明の１つの実施形態による例示的な計算サーバ３００を示すブロック図である。特に、サーバ３００は、制御処理ユニット（ＰＵ）３０２を含む。示されるように、制御ＰＵ３０２は、下述のように動作するように構成された、他の点では従来型の処理ユニットである。
【００７５】
サーバ３００はまた、複数の処理要素（ＰＥ）３１０も含む。一般に、各ＰＥ３１０は、ローカル・ストア３１２を有するように構成された、他の点では従来型のＰＥである。以下により詳細に説明されるように、各ＰＥ３１０は、レンダリングのためにＰＥブロックを受信し、ＰＥブロックをレンダリングし、レンダリング済みＰＥブロックを制御ＰＵ３０２に戻す。
【００７６】
サーバ３００はまた、負荷分散モジュール３０４も含む。一般に、制御ＰＵ３０２及び負荷分散モジュール３０４は、ＰＥ負荷分散ファクタに基づいて、受信したロー表示帯域を複数のＰＥブロックに分配する。特に、１つの実施形態において、負荷分散モジュール３０４は、ＰＥ応答時間に基づいて、ＰＥ負荷分散ファクタを設定し、修正するように構成される。代替的な実施形態においては、ＰＥ負荷分散ファクタは予測レンダリング・ファクタを含み、負荷分散モジュール３０４は、ＰＥ応答時間及びユーザ入力に基づいて、ＰＥ負荷分散ファクタを修正するように構成される。
【００７７】
１つの実施形態において、負荷分散モジュール３０４は受信したロー表示帯域を、フレーム・データを含むＰＥブロックに分割し、制御ＰＵ３０２は、レンダリングのために分割されたフレーム・データをＰＥに伝送する。代替的な実施形態においては、制御ＰＵ３０２は、各ＰＥブロックの境界を画定する座標情報を伝送する。１つの実施形態において、座標情報は、キャッシュに入れられた（及び一般的にアクセス可能な）フレームに関する座標を含む。
【００７８】
一般に、ロー表示帯域をＰＥブロックに分配すると、サーバ３００は、ＰＥブロックをそれらの割り当てられたＰＥに分散させる。ＰＥ３１０は、受信したＰＥブロックをレンダリングし、レンダリング済みＰＥブロックを制御ＰＵ３０２に戻す。１つの実施形態において、各ＰＥ３１０は、レンダリング済みＰＥブロックをキャッシュ３０６に格納し、ＰＥがそのＰＥブロックのレンダリングを完了したことを制御ＰＵ３０２に示す。
【００７９】
従って、サーバ３００はまた、キャッシュ３０６も含む。キャッシュ３０６は、他の点では従来型のキャッシュである。一般に、サーバ３００は、処理済み帯域及び未処理の帯域、ＰＥブロック、並びに他の情報をキャッシュ３０６に格納する。
【００８０】
サーバ３００はまた、圧縮器３０８も含む。１つの実施形態において、グラフィックス・クライアントは、計算サーバから、圧縮された処理済みサーバ帯域を受信する。従って、圧縮器３０８は、グラフィックス・クライアントへの伝送のために処理済みサーバ帯域を圧縮するように構成される。
【００８１】
サーバ３００はまた、ネットワーク・インターフェース３１４も含む。ネットワーク・インターフェース３１４は、例えば、図１のネットワーク１４０のようなネットワークとインターフェースするように構成される、他の点では従来型のネットワーク・インターフェースである。
【００８２】
一般に、サーバ３００は、グラフィックス・クライアントから、ロー表示帯域を受信する。制御ＰＵ３０２及び負荷分散モジュール３０４は、ＰＥ負荷分散ファクタに基づいて、受信した表示帯域をＰＥブロックに分割する。ＰＥ３１０は、割り当てられたブロックをレンダリングし、制御ＰＵ３０２は、レンダリング済みＰＥブロックを処理済み表示帯域に構築する。圧縮器３０８は、処理済み表示帯域を圧縮し、サーバ３００は、処理済み表示帯域をグラフィックス・クライアントに伝送する。
【００８３】
１つの実施形態においては、制御ＰＵ３０２は、各ＰＥ３１０についてのレンダリング時間に基づいて、ＰＥ負荷分散ファクタを調整する。１つの実施形態において、制御ＰＵ３０２はまた、表示帯域全体についての総レンダリング時間も判断し、総レンダリング時間をグラフィックス・クライアントに報告する。従って、一般に、サーバ３００は、ＰＥにおける負荷の変化に適合するようにＰＥ負荷分散ファクタを修正することができる。
【００８４】
このように、サーバ３００は、ＰＥ間のレンダリング負荷のバランスを取ることができ、そのことが、応答時間を改善（最小化）の助けとなる。グラフィックス・クライアント及び計算サーバの動作は、以下にさらに詳細に説明される。より具体的には、例示的なグラフィックス・クライアントの動作が、図４に関して説明され、例示的な計算サーバの動作が、図５に関して説明される。
【００８５】
図４は、写実的画像形成の処理負荷を分散させるための方法の１つの実施形態を示す。具体的には、図４は、好ましい実施形態に従って実施することができる、例えば図２のシステム２００によって実行される論理動作ステップを示す高レベル・フローチャート４００を示す。一般に、制御ＰＵ２０２は、特に断りのない限り、方法のステップを実行する。
【００８６】
ブロック４０５に示されるように処理が開始し、システム２００は、表示のために、シーン・モデル・データを含むデジタル・グラフィック画像フレームを受信する。例えば、システム２００は、ユーザ又は他の入力から、フレームを受信することができる。次に、ブロック４１０に示されるように、システム２００は、ユーザ入力を受信する。上述したように、１つの実施形態において、ユーザ入力は、カメラ運動情報を含む。
【００８７】
次に、ブロック４１５に示されるように、システム２００は、受信したフレームに基づいて、サーバ負荷分散ファクタを設定又は修正する。次に、ブロック４２０に示されるように、システム２００は、受信したユーザ入力及びシーン・モデル・データに基づいて、予測レンダリング・ファクタを設定又は修正する。次に、ブロック４２５に示されるように、システム２００は、サーバ負荷分散ファクタ及び予測レンダリング・ファクタに基づいて、フレームをサーバ帯域に分配する。
【００８８】
ユーザ入力及び予測レンダリング・ファクタに基づいて、システム２００は、カメラの眼の運動方向及び速度を認識している。従って、システム２００は、専ら反応的調整だけに依存する必要なしに、サーバの処理負荷を事前調整することができる。例えば、ユーザが上又は下を「見る」（カメラの眼を垂直方向に移動させる）場合、システム２００は、立ち上がりにおける計算サーバの領域のサイズを減少させて、すぐにシーンに導入される新しいモデルの幾何学形状に対応することができる。
【００８９】
さらに、システム２００は、目の運動速度に基づいて、処理負荷をどれだけ積極的に再バランスさせるかを調整することができる。カメラの眼がより迅速に移動する場合には、システム２００は、処理負荷をより積極的に調整することができる。カメラの眼の運動が遅い場合には、システム２００は、処理負荷をあまり積極的に調整することはできない。
【００９０】
付加的に、システム２００は、処理負荷の再バランスを、ユーザ入力によって示される眼の運動のタイプに合わせることができる。つまり、特定のタイプの眼の運動は、異なる調整パターンに最も良く応答する。例えば、眼のベクトルにズームすること又は眼のベクトルに沿って運動することにより、計算サーバにわたる不均衡が少なくなる。このように、システム２００は、素早いズーム機能に応答する場合、例えば、素早いパン機能に応答する場合に比べて、積極的に処理負荷を調整しなくてよい。
【００９１】
１つの実施形態において、システム２００は、フレームを水平方向のサーバ帯域に分配する。代替的な実施形態において、システム２００は、フレームを垂直方向のサーバ帯域に分配する。代替的な実施形態において、システム２００は、どの位置合わせがより効果的な（負荷分散の）分配をもたらすかによって、フレームを水平方向又は垂直方向のサーバ帯域に分配する。
【００９２】
次に、ブロック４３０に示されるように、システム２００は、サーバ帯域を計算サーバに分散させる。次に、ブロック４３５に示されるように、システム２００は、計算サーバから、圧縮された処理済み表示帯域を受信する。次に、ブロック４４０に示されるように、システム２００は、受信した圧縮された処理済み表示帯域を復元する。
【００９３】
次に、ブロック４４５に示されるように、システム２００は、処理済み表示帯域に基づいて、処理済みフレームを構築する。次に、ブロック４５０に示されるように、システム２００は、処理済みフレームを格納する。次にブロック４５５に示されるように、システム２００は、処理済みフレームに基づいて、画像を表示する。上述したように、１つの実施形態において、システム２００は、表示のために処理済みフレームを表示モジュールに伝送する。
【００９４】
次に、ブロック４６０に示されるように、システム２００は、計算サーバから、報告されたレンダリング時間を受信する。次に、ブロック４６５に示されるように、システム２００は、報告されたレンダリング時間に基づいて、サーバ負荷分散ファクタを修正する。プロセスはブロック４０５に戻り、グラフィックス・クライアントは、処理のためにフレームを受信する。
【００９５】
図５は、写実的画像形成の処理負荷を分散させるための方法の１つの実施形態を示す。具体的には、図５は、好ましい実施形態に従って実施することができる、例えば図３のシステム３００により実行される論理動作ステップを示す高レベル・フローチャート５００を示す。一般に、制御ＰＵ３０２は、特に断りのない限り、方法のステップを実行する。
【００９６】
ブロック５０５に示されるように処理が開始し、計算サーバは、グラフィックス・クライアントから、ロー表示帯域を受信する。例えば、図３のシステム３００は、図２のグラフィックス・クライアント２００から、ロー表示帯域を受信する。次に、ブロック５１０に示されるように、システム３００は、ＰＥ負荷分散ファクタに基づいてロー表示帯域をＰＥブロックに分配する。
【００９７】
１つの実施形態において、ロー表示帯域は、カメラ運動情報を含み、システム３００は、ＰＥ負荷分散ファクタ及びカメラ運動情報に基づいて、ロー表示帯域をＰＥブロックに分配する。１つの実施形態において、システム３００は、上記のブロック４２５に関して説明されたようなシステム２００と同じ方法で、ロー表示帯域を分配する。従って、システム３００は、ロー表示帯域を動的に分配して、フレーム画像の構成における予測される変化に対応し、ＰＥ間の負荷のバランスの保持を助けることができる。
【００９８】
次に、ブロック５１５に示されるように、システム３００は、ＰＥブロックを処理要素に分散させる。例えば、制御ＰＵ３０２は、ＰＥブロックを１つ又は複数のＰＥ３１０に分散させる。次に、ブロック５２０に示されるように、各ＰＥは、その受信したＰＥブロックをレンダリングする。例えば、ＰＥ３１０は、それらの受信したＰＥブロックをレンダリングする。
【００９９】
次に、ブロック５２５に示されるように、制御ＰＵ３０２は、ＰＥ３１０からレンダリング済みＰＥブロックを受信する。上述したように、１つの実施形態において、制御ＰＵ３０２は、キャッシュ３０６においてレンダリング済みブロックが利用可能であるとの通知を、ＰＥ３１０から受信する。次に、ブロック５３０に示されるように、システム３００は、レンダリング済みＰＥブロックを組み合わせて処理済み表示帯域にする。
【０１００】
次に、ブロック５３５に示されるように、システム３００は、グラフィックス・クライアントへの伝送のために、処理済み表示帯域を圧縮する。例えば、圧縮器３０８は、グラフィックス・クライアントへの伝送のために、処理済み表示帯域を圧縮する。次に、ブロック５４０に示されるように、システム３００は、圧縮された表示帯域をグラフィックス・クライアントに伝送する。
【０１０１】
次に、ブロック５４５に示されるように、システム３００は、各ＰＥについてのレンダリング時間を判断する。例えば、制御ＰＵ３０２は、各ＰＥ３１０についてのレンダリング時間を判断する。次に、ブロック５５０に示されるように、システム３００は、レンダリング時間をグラフィックス・クライアントに報告する。１つの実施形態において、システム３００は、最も遅いＰＥに基づいて、処理済み表示帯域についての総レンダリング時間を計算し、総レンダリング時間をグラフィックス・クライアントに報告する。代替的な実施形態においては、システム３００は、各ＰＥについてのレンダリング時間をグラフィックス・クライアントに報告する。
【０１０２】
次に、ブロック５５５に示されるように、システム３００は、各ＰＥについてのレンダリング時間に基づいて、ＰＥ負荷分散ファクタを調整する。上述したように、システム３００は、処理負荷をＰＥの間で分けるようにＰＥ負荷分散ファクタを設定し、各ＰＥがそのレンダリング・タスクを完了するのにほぼ同じ時間がかかるようにすることができる。
【０１０３】
従って、開示された実施形態により、他の方法及びシステムに優る多数の有利な点がもたらされる。例えば、開示された実施形態は、現行の手法、特にワーク・スティーリング・システムに優る、バランスのとれた処理負荷分散の改善を行なう。開示された実施形態が計算処理負荷をより良好に分散させるので、ワーク・スティーリングは不要であり、計算ユニットもまた、共通のワーク・スティーリング・スキーマの下で処理要素にタスクを再付与する際に特有の不利益を被ることなく、関連したキャッシュ・データを保持することができる。
【０１０４】
より具体的には、開示された実施形態は、特に光線追跡用途における写実的画像形成の処理負荷分散のバランスを提供する。フレームの計算集約型領域を能動的に管理し、次のフレームを待っている計算ユニットをストールさせることにより、レンダリング・システムが、データのストールのために費やす時間が少なくなる。
【０１０５】
さらに、開示された実施形態は、相対的処理負荷を保持するために領域が拡大又は低減されても、計算ユニットの焦点を特定の領域に保持する方法を提供する。従って、いずれの特定の計算ユニットも、キャッシュ内に有用なフレーム・データを保持している可能性が高くなり、キャッシュ・ヒット率が改善される。さらに、キャッシュ・ヒット率の改善は、僅かに増加したフレーム内のストールを克服し、全体的なレンダリング時間を改善する。
【０１０６】
付加的に、開示された実施形態は、予測されるレンダリング・タスクに基づいて、処理負荷を動的に調整するシステム及び方法を提供する。従って、開示された実施形態は、シーン内の領域の計算強度の変化を予想することによって、素早く運動するカメラの眼の性能への影響を低減させることができる。他の技術的利点は、当業者には明らかであろう。
【０１０７】
上述したように、ここで説明される１つ又は複数の実施形態は、コンピュータ・システムにおいて実施すること又は他の方法で具体化することができる。一般的に、本明細書で用いられる「コンピュータ」という用語は、任意の自動計算機械を指す。従って「コンピュータ」という用語は、ラップトップ、パーソナル・コンピュータ、ミニコンピュータ、及びメインフレームのような汎用コンピュータだけでなく、携帯情報端末（ＰＤＡ）、ネットワーク可能な手持ち式装置、インターネット又はネットワーク可能な携帯電話、及び他の適切な装置のような装置も含む。図６は、ここで説明される１つ又は複数の実施形態を実施するために使用可能な、例示的なコンピュータ・システムを示す詳細を提供するブロック図である。
【０１０８】
具体的には、図６は、コンピュータ・システム６００を示す。コンピュータ・システム６００は、コンピュータ６０２を含む。コンピュータ６０２は、他の点では従来型のコンピュータであり、少なくとも１つのプロセッサ６１０を含む。プロセッサ６１０は、他の点では従来型のコンピュータ・プロセッサであり、シングル・コア、デュアル・コア、中央演算処理ユニット（ＰＵ）、相乗演算ＰＵ、従属的（attached）ＰＵ、又は他の適切なプロセッサを含むことができる。
【０１０９】
プロセッサ６１０は、システム・バス６１２に結合される。バス６１２は、他の点では従来型のシステム・バスである。示されるように、コンピュータ６０２の種々のコンポーネントは、バス６１２に結合される。例えば、コンピュータ６０２は、メモリ６２０も含み、メモリ６２０は、バス６１２を通してプロセッサ６１０に結合される。メモリ６２０は、他の点では従来型のコンピュータ・メインメモリであり、例えば、ランダム・アクセス・メモリ（ＲＡＭ）を含むことができる。一般に、メモリ６２０は、アプリケーション６２２、オペレーティング・システム６２４、及びアクセス機能６２６を格納する。
【０１１０】
一般に、アプリケーション６２２は、他の点では従来型のソフトウェア・プログラム・アプリケーションであり、任意の数の典型的なプログラム、及び、本発明の１つ又は複数の実施形態を組み込むコンピュータ・プログラムを含むことができる。オペレーティング・システム６２４は、他の点では従来型のオペレーティング・システムであり、例えば、Ｕｎｉｘ、ＡＩＸ、Ｌｉｎｕｘ、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（商標）、ＭａｃＯＳ（商標）、及び他の適切なオペレーティング・システムを含むことができる。アクセス機能６２６２は、ネットワーク機能を含む、他の点では従来型のアクセス機能であり、オペレーティング・システム６２４内に含ませることができる。
【０１１１】
コンピュータ６０２はまた、記憶装置６３０も含む。一般に、記憶装置６３０は、他の点では従来型のデータを格納するための装置及び／又は複数の装置である。示されるように、記憶装置６３０は、ハード・ディスク６３２、フラッシュ又は他の揮発性メモリ６３４、及び／又は光記憶装置６３６を含むことができる。当業者であれば、他の記憶媒体を用いることもできることを理解するであろう。
【０１１２】
Ｉ／Ｏインターフェース６４０も、バス６１２に結合される。Ｉ／Ｏインターフェース６４０は、他の点では従来型のインターフェースである。示されるように、Ｉ／Ｏインターフェース６４０は、コンピュータ６０２の外部にある装置に結合される。特に、Ｉ／Ｏインターフェース６４０は、ユーザ入力装置６４２及び表示装置６４４に結合される。入力装置６４２は、他の点では従来型の入力装置であり、例えば、マウス、キーボード、テンキー、タッチ・センシティブ・スクリーン、マイクロフォン、ウェブカメラ、及び他の適切な入力装置を含むことができる。表示装置６４４は、他の点では従来型の表示装置であり、例えば、モニター、ＬＣＤディスプレイ、ＧＵＩ画面、テキスト画面、タッチ・センシティブ・スクリーン、点字ディスプレイ、及び他の適切な表示装置を含むことができる。
【０１１３】
ネットワーク・アダプタ６５０も、バス６１２に結合される。ネットワーク・アダプタ６５０は、他の点では従来型のネットワーク・アダプタであり、例えば、無線アダプタ、イーサネット・アダプタ、ＬＡＮアダプタ、ＷＡＮアダプタ、又は他の適切なアダプタを含むことができる。示されるように、ネットワーク・アダプタ６５０は、コンピュータ６０２を他のコンピュータ及び装置６５２に結合することができる。他のコンピュータ及び装置６５２は、ネットワーク環境において典型的に用いられる、他の点では従来型のコンピュータ及び装置である。当業者であれば、コンピュータ６０２及びコンピュータ・システム６００に適した多数の他のネットワーク構成が存在することを理解するであろう。
【０１１４】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラムの可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能な命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図面に記された順序とは異なる順序で行われることがあることにも留意すべきである。例えば、連続して図示された２つのブロックが実際には実質的に同時に実行されることもあり、又はこれらのブロックは、関与する機能に応じて、ときには逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は行為を実行する専用ハードウェア・ベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【０１１５】
当業者であれば、上で開示された特徴及び機能、並びに他の特徴及び機能、又はそれらの代替物は、望ましく組み合わせて多くの他の異なるシステム又はアプリケーションにすることができることを認識するであろう。付加的に、現在は予見又は予期されない種々の代替、修正、変形、又はそれらの改善が後に当業者により行なわれる可能性があり、それらもまた、添付の特許請求の範囲に包含されることが意図されている。
【図１】
0005462882.tif 000002
【図２】
0005462882.tif 000003
【図３】
0005462882.tif 000004
【図４】
0005462882.tif 000005
【図５】
0005462882.tif 000006
【図６】
0005462882.tif 000007