(57)【特許請求の範囲】
【請求項１】
グラフィックスパイプラインを実施するための方法であって、
仮想シーンに影響を及ぼす複数の光源を判定することであって、前記複数の光源のそれぞれは、前記グラフィックスパイプラインにおいて前記仮想シーンの複数の画像をレンダリングするアプリケーションの実行中に生成される仮想光源である、前記判定することと、
前記仮想シーンの画像のオブジェクトのジオメトリを、第１の視点からディスプレイの複数の画素上に投影することと、
前記ディスプレイの複数の画素を複数のタイルに分割することと、
表示される前記画像に関する最高解像度の中心窩領域を画定することであって、画素の第１のサブセットは前記中心窩領域に割り当てられ、画素の第２のサブセットは前記中心窩領域の外側にある周辺領域に割り当てられる、前記画定することと、
前記周辺領域内にある第１のタイル内に表示される１つ以上のオブジェクトに影響を及ぼす前記複数の光源から光源の第１のセットを判定することと、
前記第１のタイルの画素内の画像をレンダリングするとき、前記第１のセットからの少なくとも２つの光源を、前記第１のタイルに影響を及ぼす第１の集合光源にクラスタリングすることと、
前記第１のタイルに影響を及ぼす前記集合光源の数を標的数に抑制することと、
前記光源の第１のセットが前記標的数未満であることを判定することと、
前記標的数を満たすために、前記第１のタイルのサイズを拡大することと、
を含む、方法。
【請求項２】
前記クラスタリングすることは、最近隣検索またはＫ平均法クラスタリング技術を使用して、光源の複数のクラスタを前記複数の光源から生成することであって、光源のクラスタ毎に前記第１のタイルに影響を及ぼす前記集合光源が生成され、光源の各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも１つの光源を含む、前記生成すること、をさらに含む、請求項１に記載の方法。
【請求項３】
クラスタ内の２つの光源間の最長距離を閾値に抑制することと、
前記光源の複数のクラスタに関する複数のクラスタエラーを最小にすることと、
光源のクラスタ毎に、対応する集合光源を生成することと、
をさらに含む、請求項２に記載の方法。
【請求項４】
前記対応する集合光源を生成することは、さらに、
前記光源の対応するクラスタ内の光源の場所を平均化することによって、前記対応する集合光源の集合場所を判定することと、
前記光源の対応するクラスタ内の光源の彩度を合計することによって、前記対応する集合光源の集合彩度を判定することと、
前記光源の対応するクラスタ内の光源の色の加重和を行うことによって、前記対応する集合光源の色の集合を判定することと、
を含む、請求項３に記載の方法。
【請求項５】
前記光源の複数のクラスタ内の各クラスタに対応する前記クラスタエラーは、現在の光源と、他の光源のそれぞれとの間の距離の繰り返し合計を含み、前記現在の光源は、繰り返し毎に前記クラスタ内の異なる光源を含む、請求項３に記載の方法。
【請求項６】
前記ディスプレイはヘッドマウントディスプレイ（ＨＭＤ）を含む、請求項１に記載の方法。
【請求項７】
前記画像内の前記中心窩領域は、前記ディスプレイの中心にある静止エリアに対応する、請求項１に記載の方法。
【請求項８】
前記画像内の前記中心窩領域は、ユーザの眼が向いている前記ディスプレイ上の場所に対応する、請求項１に記載の方法。
【請求項９】
コンピュータシステムであって、
プロセッサと、
前記プロセッサに結合されたメモリであって、前記コンピュータシステムによって実行された場合、グラフィックスパイプラインを実施するための方法を前記コンピュータシステムに実行させる命令を格納したメモリとを備え、前記方法は、
仮想シーンに影響を及ぼす複数の光源を判定することであって、前記複数の光源のそれぞれは、前記グラフィックスパイプラインにおいて前記仮想シーンの複数の画像をレンダリングするアプリケーションの実行中に生成される仮想光源である、前記判定することと、
前記仮想シーンの画像のオブジェクトのジオメトリを、第１の視点からディスプレイの複数の画素上に投影することと、
前記ディスプレイの複数の画素を複数のタイルに分割することと、
表示される前記画像に関する最高解像度の中心窩領域を画定することであって、画素の第１のサブセットは前記中心窩領域に割り当てられ、画素の第２のサブセットは前記中心窩領域の外側にある周辺領域に割り当てられる、前記画定することと、
前記周辺領域内にある第１のタイル内に表示される１つ以上のオブジェクトに影響を及ぼす前記複数の光源から光源の第１のセットを判定することと、
前記第１のタイルの画素内の画像をレンダリングするとき、前記第１のセットからの少なくとも２つの光源を、前記第１のタイルに影響を及ぼす第１の集合光源にクラスタリングすることと、
前記第１のタイルに影響を及ぼす前記集合光源の数を標的数に抑制することと、
前記光源の第１のセットが前記標的数未満であることを判定することと、
前記標的数を満たすために、前記第１のタイルのサイズを拡大することと、
を含む、コンピュータシステム。
【請求項１０】
前記クラスタリングすることは、最近隣検索またはＫ平均法クラスタリング技術を使用して、光源の複数のクラスタを前記複数の光源から生成することであって、光源のクラスタ毎に前記第１のタイルに影響を及ぼす前記集合光源が生成され、光源の各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも１つの光源を含む、前記生成すること、をさらに含む、請求項９に記載のコンピュータシステム。
【請求項１１】
前記方法は、
クラスタ内の２つの光源間の最長距離を閾値に抑制することと、
前記光源の複数のクラスタに関する複数のクラスタエラーを最小にすることと、
光源のクラスタ毎に、対応する集合光源を生成することと、
をさらに含む、請求項１０に記載のコンピュータシステム。
【請求項１２】
前記対応する集合光源を生成することは、さらに、
前記光源の対応するクラスタ内の光源の場所を平均化することによって、前記対応する集合光源の集合場所を判定することと、
前記光源の対応するクラスタ内の光源の彩度を合計することによって、前記対応する集合光源の集合彩度を判定することと、
前記光源の対応するクラスタ内の光源の色の加重和を行うことによって、前記対応する集合光源の色の集合を判定することと、
を含む、請求項１１に記載のコンピュータシステム。
【請求項１３】
前記光源の複数のクラスタ内の各クラスタに対応する前記クラスタエラーは、現在の光源と、他の光源のそれぞれとの間の距離の繰り返し合計を含み、前記現在の光源は、繰り返し毎に前記クラスタ内の異なる光源を含む、請求項１１に記載のコンピュータシステム。
【請求項１４】
前記ディスプレイはヘッドマウントディスプレイ（ＨＭＤ）を含む、請求項９に記載のコンピュータシステム。
【請求項１５】
グラフィックスパイプラインを実施するためのコンピュータプログラムを格納した非一時的コンピュータ可読媒体であって、
仮想シーンに影響を及ぼす複数の光源を判定するプログラム命令であって、前記複数の光源のそれぞれは、前記グラフィックスパイプラインにおいて前記仮想シーンの複数の画像をレンダリングするアプリケーションの実行中に生成される仮想光源である、前記判定するプログラム命令と、
前記仮想シーンの画像のオブジェクトのジオメトリを、第１の視点からディスプレイの複数の画素上に投影するプログラム命令と、
前記ディスプレイの複数の画素を複数のタイルに分割するプログラム命令と、
表示される前記画像に関する最高解像度の中心窩領域を画定するプログラム命令であって、画素の第１のサブセットは前記中心窩領域に割り当てられ、画素の第２のサブセットは前記中心窩領域の外側にある周辺領域に割り当てられる、前記画定するプログラム命令と、
前記周辺領域内にある第１のタイル内に表示される１つ以上のオブジェクトに影響を及ぼす前記複数の光源から光源の第１のセットを判定するプログラム命令と、
前記第１のタイルの画素内の画像をレンダリングするとき、前記第１のセットからの少なくとも２つの光源を、前記第１のタイルに影響を及ぼす第１の集合光源にクラスタリングするプログラム命令と、
前記第１のタイルに影響を及ぼす前記集合光源の数を標的数に抑制するプログラム命令と、
前記光源の第１のセットが前記標的数未満であることを判定するプログラム命令と、
前記標的数を満たすために、前記第１のタイルのサイズを拡大するプログラム命令と、
を含む、非一時的コンピュータ可読媒体。
【請求項１６】
前記クラスタリングするプログラム命令は、最近隣検索またはＫ平均法クラスタリング技術を使用して、光源の複数のクラスタを前記複数の光源から生成することであって、光源のクラスタ毎に前記第１のタイルに影響を及ぼす前記集合光源が生成され、光源の各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも１つの光源を含む、前記生成するプログラム命令、をさらに含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１７】
クラスタ内の２つの光源間の最長距離を閾値に抑制するプログラム命令と、
前記光源の複数のクラスタに関する複数のクラスタエラーを最小にするプログラム命令と、
光源のクラスタ毎に、対応する集合光源を生成するプログラム命令と、
をさらに含む、請求項１６に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記対応する集合光源を生成するプログラム命令は、さらに、
前記光源の対応するクラスタ内の光源の場所を平均化することによって、前記対応する集合光源の集合場所を判定するプログラム命令と、
前記光源の対応するクラスタ内の光源の彩度を合計することによって、前記対応する集合光源の集合彩度を判定するプログラム命令と、
前記光源の対応するクラスタ内の光源の色の加重和を行うことによって、前記対応する集合光源の色の集合を判定するプログラム命令と、
を含む、請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記光源の複数のクラスタ内の各クラスタに対応する前記クラスタエラーは、現在の光源と、他の光源のそれぞれとの間の距離の繰り返し合計を含み、前記現在の光源は、繰り返し毎に前記クラスタ内の異なる光源を含む、請求項１７に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ビデオゲーム技術の進歩にともない、ビデオゲームは、ますます、人気が出ている。例えば、高出力のグラフィックスプロセッサは、ビデオゲームをプレイするとき、信じられないほどの視聴及び対話型体験を提供している。加えて、ディスプレイは、より高い解像度で設計されている。例えば、本発明の技術は、約１９：１０のアスペクト比を有する２Ｋ解像度（例えば、２０４８×１０８０画素にわたる２．２メガピクセル）を有するディスプレイを含む。１６：９のアスペクト比を有する４Ｋ  ＵＨＤ（超高精細）解像度（例えば、３８４０×２１６０画素にわたる８．２メガピクセル）を有する他のディスプレイは、現在、市場に販売促進され、勢いが増すことが予想される。高解像度ディスプレイとともにグラフィックス処理能力は増加し、特に、より高解像度のディスプレイを利用するように設計されたビデオゲーム及びゲームエンジンをプレイするとき、従来では信じられないほどの視聴経験をユーザに提供している。
【０００２】
また、レンダリング画像／フレームを高解像度ディスプレイに反映するには、レンダリングエンジンとディスプレイとの間等の帯域幅容量を増加する必要がある。ほとんどの場合、有線接続は、ディスプレイをサポートするために必要な帯域幅を扱うことが可能なはずである。しかしながら、ゲームシステムは、ますます、データをディスプレイに反映するとき、障壁をもたらし得る無線接続で構成されるようになっている。例えば、無線接続は、ユーザに対してローカルにあるゲーム機とディスプレイとの間で確立し得る。これらの場合、無線接続は、より高解像度のディスプレイを十分に利用するために必要な帯域幅を扱うのに十分に安定性が高くない場合があり、それにより、レンダリングされる動画像列全体を表示するために（バッファで満たされるときに）、表示されるビデオゲームは妨害され得る。いくつかの場合、ビデオゲーム処理は、ディスプレイへの無線接続の低域帯域幅と一致するために、スロットル調整され得、それにより、ビデオフレームは、遮断することなく、無線接続を通して、ビデオデータを反映するために、より低解像度でレンダリングされ得る。しかしながら、処理をスロットル調整することによって、ユーザに、より高解像度のグラフィックスで十分なゲーム経験が与えられない。
【０００３】
特に、ビデオゲームをプレイするとき、ユーザにとって高レベルの満足感を達成するために、グラフィックス処理を修正することは有益である。
【０００４】
この状況において、本開示の実施形態が生じる。
【発明の概要】
【０００５】
本開示の実施形態は、高解像度を有する中心窩領域内の画像の部分と、より低解像度を有する中心窩領域の外側の部分とを表示するように構成される、中心窩レンダリングに関する。具体的には、中心窩領域の外側にある画像部分は集合光源でレンダリングされ、集合光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する。したがって、クラスタの個別の光源のそれぞれの個別の効果を算出する代わりに、クラスタの集合光源の効果だけを算出する。当該方式では、例えば、複雑度が少ない画像に部分的に起因して、表示される一連のビデオフレームに関する全帯域幅は小さくなる。さらに、一連のビデオフレームは、算出複雑度が少なくなるため、最小のレイテンシで、またはレイテンシがなく、リアルタイムで、（例えば、有線または無線接続を通して）送達されることができる。また、シミュレーションモデルによって、パーティクルシステムは、火、煙、布、及び水等の物理的効果を生じさせるために広く使用される。また、パーティクルシステムは、魔法等の多くの非物理的効果において使用される。パーティクルをシミュレート及びレンダリングするための算出はかなり高価であり得る。ユーザがパーティクルシステムを積極的に見ていない場合（すなわち、パーティクルシステム効果が、周辺領域内に、または周辺領域内に描かれる場合）、パーティクルシステムは、潜在的に、同様の知覚効果を達成するために、スケーリングされる（例えば、より大きくする）及び暗くなる（例えば、アルファ値を修正する）ように、レンダリングされるときの少数のパーティクルによって表され得る。
【０００６】
一実施形態では、グラフィックスパイプラインを実施するための方法を開示する。本方法は、仮想シーンに影響を及ぼす複数の光源を判定することを含む。本方法は、シーンの画像のオブジェクトのジオメトリを、第１の視点からディスプレイの複数の画素上に投影することを含む。本方法は、ディスプレイの複数の画素を複数のタイルに分割することを含む。本方法は、表示される画像に関する最高解像度の中心窩領域を画定することを含み、画素の第１のサブセットは中心窩領域に割り当てられ、画素の第２のサブセットは中心窩領域の外側にある周辺領域に割り当てられる。本方法は、周辺領域内にある第１のタイル内に表示される１つ以上のオブジェクトに影響を及ぼす複数の光源から光源の第１のセットを判定することを含む。本方法は、第１のタイルの画素内の画像をレンダリングするとき、第１のセットからの少なくとも２つの光源を、第１のタイルに影響を及ぼす第１の集合光源にクラスタリングすることを含む。
【０００７】
さらに別の実施形態では、コンピュータシステムが開示される。コンピュータシステムはプロセッサ及びメモリを含み、メモリは、プロセッサに結合され、コンピュータシステムによって実行される場合、コンピュータシステムに、グラフィックスパイプラインを実施するための方法を実行させる命令をメモリ内に記憶する。本方法は、仮想シーンに影響を及ぼす複数の光源を判定することを含む。本方法は、シーンの画像のオブジェクトのジオメトリを、第１の視点からディスプレイの複数の画素上に投影することを含む。本方法は、ディスプレイの複数の画素を複数のタイルに分割することを含む。本方法は、表示される画像に関する最高解像度の中心窩領域を画定することを含み、画素の第１のサブセットは中心窩領域に割り当てられ、画素の第２のサブセットは中心窩領域の外側にある周辺領域に割り当てられる。本方法は、周辺領域内にある第１のタイル内に表示される１つ以上のオブジェクトに影響を及ぼす複数の光源から光源の第１のセットを判定することを含む。本方法は、第１のタイルの画素内の画像をレンダリングするとき、第１のセットからの少なくとも２つの光源を、第１のタイルに影響を及ぼす第１の集合光源にクラスタリングすることを含む。
【０００８】
別の実施形態では、グラフィックスパイプラインを実施するためのコンピュータプログラムを記憶する非一時的なコンピュータ可読媒体が開示される。コンピュータ可読媒体は、仮想シーンに影響を及ぼす複数の光源を判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、シーンの画像のオブジェクトのジオメトリを、第１の視点からディスプレイの複数の画素上に投影するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、ディスプレイの複数の画素を複数のタイルに分割するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、表示される画像に関する最高解像度の中心窩領域を画定するためのプログラム命令を含み、画素の第１のサブセットは中心窩領域に割り当てられ、画素の第２のサブセットは中心窩領域の外側にある周辺領域に割り当てられる。コンピュータ可読媒体は、さらに、周辺領域内にある第１のタイル内に表示される１つ以上のオブジェクトに影響を及ぼす複数の光源から光源の第１のセットを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、第１のタイルの画素内の画像をレンダリングするとき、第１のセットからの少なくとも２つの光源を、第１のタイルに影響を及ぼす第１の集合光源にクラスタリングするためのプログラム命令を含む。
【０００９】
一実施形態では、グラフィックスパイプラインを実施するための方法を開示する。本方法は、仮想シーンで効果を生じるパーティクルのシステムを生成することを含み、パーティクルのシステムは複数のパーティクルジオメトリを含む。本方法は、さらに、パーティクルのシステムからパーティクルのサブシステムを判定することを含み、パーティクルのサブシステムは複数のパーティクルジオメトリから取られたパーティクルジオメトリのサブセットを含む。本方法は、仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く場所に対応する。本方法は、効果の少なくとも一部が、画像の周辺領域内に位置していることを判定することを含む。本方法は、パーティクルのサブシステムをレンダリングし、効果を生じさせることを含む。
【００１０】
さらに別の実施形態では、コンピュータシステムが開示される。コンピュータシステムはプロセッサ及びメモリを含み、メモリは、プロセッサに結合され、コンピュータシステムによって実行される場合、コンピュータシステムに、グラフィックスパイプラインを実施するための方法を実行させる命令をメモリ内に記憶する。本方法は、仮想シーンで効果を生じるパーティクルのシステムを生成することを含み、パーティクルのシステムは複数のパーティクルジオメトリを含む。本方法は、さらに、パーティクルのシステムからパーティクルのサブシステムを判定することを含み、パーティクルのサブシステムは複数のパーティクルジオメトリから取られたパーティクルジオメトリのサブセットを含む。本方法は、仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く場所に対応する。本方法は、効果の少なくとも一部が、画像の周辺領域内に位置していることを判定することを含む。本方法は、パーティクルのサブシステムをレンダリングし、効果を生じさせることを含む。
【００１１】
別の実施形態では、グラフィックスパイプラインを実施するためのコンピュータプログラムを記憶する非一時的なコンピュータ可読媒体が開示される。コンピュータ可読媒体は、仮想シーンで効果を生じるパーティクルのシステムを生成するためのプログラム命令を含み、パーティクルのシステムは複数のパーティクルジオメトリを含む。コンピュータ可読媒体は、パーティクルのシステムからパーティクルのサブシステムを判定するためのプログラム命令を含み、パーティクルのサブシステムは複数のパーティクルジオメトリから取られたパーティクルジオメトリのサブセットを含む。コンピュータ可読媒体は、仮想シーンの画像をレンダリングするとき、中心窩領域を判定するためのプログラム命令を含み、中心窩領域はユーザの注目が向く場所に対応する。コンピュータ可読媒体は、効果の少なくとも一部が、画像の周辺領域内に位置していることを判定するためのプログラム命令を含む。コンピュータ可読媒体は、パーティクルのサブシステムをレンダリングし、効果を生じさせるためのプログラム命令を含む。
【００１２】
本開示の他の利点は、本開示の原理の例を用いて示す添付の図面と併せて解釈される以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【００１３】
本開示は、添付の図面と併せて解釈される以下の説明を参照して最良に理解され得る。
【００１４】
【図１Ａ】本開示の一実施形態による、対話型体験をＶＲコンテンツに提供するように構成されるシステムを示す。
【００１５】
【図１Ｂ】本発明の実施形態による、実行するビデオゲームと併せてＨＭＤの機能を概念的に示す。
【図１Ｃ】本発明の実施形態による、実行するビデオゲームと併せてＨＭＤの機能を概念的に示す。
【００１６】
【図２Ａ】本開示の一実施形態による、対応するユーザに対してローカルで実行する１つ以上のゲームアプリケーションをプレイする１人以上のユーザにゲーム制御を提供する、システムを示す。
【００１７】
【図２Ｂ】本開示の一実施形態による、クラウドゲームネットワークを通して実行されるゲームアプリケーションをプレイする１人以上のユーザにゲーム制御を提供する、システムを示す。
【００１８】
【図３Ａ】本開示の一実施形態による、ディスプレイ上に示され、高解像度の中心窩領域を含み、中心窩領域がディスプレイの中心に対応する、画像を示す。
【００１９】
【図３Ｂ】本開示の一実施形態による、ディスプレイ上に示され、高解像度の中心窩領域を含み、中心窩領域が、ユーザの視線が向いているディスプレイの場所に対応する、画像を示す。
【００２０】
【図４Ａ】本開示の一実施形態による、中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施する、グラフィックスプロセッサを示す。
【００２１】
【図４Ｂ】本開示の一実施形態による、遅延タイルレンダリングによって実施される中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施する、グラフィックスプロセッサを示す。
【００２２】
【図５Ａ】本開示の一実施形態による、中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施し、中心窩領域内の画像の部分が高解像度でレンダリングされ、周辺領域内の画像の部分がより低解像度でレンダリングされる方法のステップを示すフロー図を示す。
【００２３】
【図５Ｂ】本開示の一実施形態による、タイル遅延レンダリングによって実施される中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施し、中心窩領域の外側のタイルの光源が集合する方法のステップを示すフロー図を示す。
【００２４】
【図６Ａ】本開示の一実施形態による、シーンに影響を及ぼす複数の光源と、集合光源を形成する光源のクラスタとの例証図である。
【００２５】
【図６Ｂ】本開示の一実施形態による、複数のタイルに分割され、遅延レンダリングシステムにおいて、タイル毎に基づいてレンダリングが行われる、ディスプレイの例証図である。
【００２６】
【図７Ａ】本開示の一実施形態による、中央処理装置（ＣＰＵ）またはグラフィックス処理ユニット（ＧＰＵ）を使用する制限された量のパーティクル（例えば、１０００未満）のパーティクルシステムシミュレーションを含む中心窩レンダリングと、パーティクルシステムの描画効果が中心窩領域または周辺領域の内部に位置するかどうかに応じて、ランダムサンプリングによって生成されるパーティクルの全システムまたはパーティクルのサブシステムを使用してＧＰＵにおけるパーティクルシステムのレンダリングとを行うように構成される、グラフィックスパイプラインを実施するグラフィックスプロセッサを示す。
【００２７】
【図７Ｂ】本開示の一実施形態による、大量のパーティクル（例えば、１０００を超えるもの）のパーティクルシステムシミュレーションを含む中心窩レンダリングを行うように構成され、パーティクルシステムの描画効果が中心窩領域または周辺領域の内部に位置するかどうかに応じて、パーティクルクラスタリング及びパーティクル集合によって生成されるパーティクルの全システムまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーションし、次に、レンダリングすることの両方を行う、グラフィックスパイプラインを実施するグラフィックスプロセッサを示す。
【００２８】
【図８】本開示の一実施形態による、大量のパーティクル（例えば、１０００を超えるもの）のシミュレーションを含むグラフィックスパイプラインを実施し、パーティクルシステムの描画効果が中心窩領域または周辺領域の内部に位置するかどうかに応じて、パーティクルクラスタリング及びパーティクル集合によって生成されるパーティクルの全システムまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーションし、次に、レンダリングすることの両方を行う方法のステップを示すフロー図である。
【００２９】
【図９】本開示の一実施形態による、画像の効果をシミュレートするために使用されるパーティクルのシステムからパーティクルのサブシステムを生成する例証図である。
【００３０】
【図１０】本開示の実施形態による、ヘッドマウントディスプレイのコンポーネントを示す図である。
【００３１】
【図１１】本開示の様々な実施形態による、ゲームシステムのブロック図である。
【発明を実施するための形態】
【００３２】
以下の詳細な説明が例証の目的のために多くの具体的な詳細を含有するが、当業者は、以下の詳細に対する多くの変形及び改変が本開示の範囲内にあることを認識する。したがって、下記に説明される本開示の態様は、一般概念のいかなる損失を生じさせることなく、この説明に続く「特許請求の範囲」に制限を課すことなく記述される。
【００３３】
概して、本開示の様々な実施形態は、中心窩レンダリングを行うように構成されるビデオレンダリングシステムのグラフィックスプロセッサを説明し、中心窩領域内の画像の部分は高解像度でレンダリングされ得、中心窩領域の外側の部分はより低解像度でレンダリングされ得る。具体的には、中心窩領域の外側にある画像部分は、画像をレンダリングするための算出を減らすために、集合光源でレンダリングされ、集合光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する。また、パーティクルシステムは、パーティクルシステムの効果が表示される画像の中心窩領域または周辺領域の内部に位置するかどうかに応じて、パーティクルのフルコンポーネントまたはパーティクルのサブシステムを使用してレンダリングされる。いくつかの実施形態では、中心窩レンダリングは、ヘッドマウントディスプレイ（ＨＭＤ）の内部に画像を表示する目的の範囲内、または、その目的のために行われる。
【００３４】
様々な実施形態の上記の一般的理解によって、ここで、実施形態の例示的詳細は、様々な図面を参照して説明される。
【００３５】
本明細書の全体を通して、「ビデオゲーム」または「ゲームアプリケーション」への言及は、入力コマンドの実行によって指示される任意の種類の対話型アプリケーションを表すことを意味する。例証の目的だけのために、対話型アプリケーションは、ゲーム用アプリケーション、ワード処理、ビデオ処理、ビデオゲーム処理等を含む。さらに、用語「ビデオゲーム」及び「ゲームアプリケーション」は交換可能である。
【００３６】
図１Ａは、本発明の実施形態による、ビデオゲームの対話型ゲームプレイ用のシステムを示す。ユーザ１００がヘッドマウントディスプレイ（ＨＭＤ）１０２を装着するように示されている。ＨＭＤ１０２は、眼鏡、ゴーグル、またはヘルメットと同様の様式で装着され、ビデオゲームを対話型ビデオゲームから、または他のコンテンツを対話型アプリケーションから、ユーザ１００に表示するように構成される。ＨＭＤ１０２は、ユーザの眼に密接する表示機構のその準備によって、超没入体験をユーザに提供する。したがって、ＨＭＤ１０２は、表示領域を、ユーザの視野の大部分またはさらに全体を占めるユーザの眼のそれぞれに提供することができる。図１Ａ〜図１Ｂ及び他の図によって、レンダリング画像を表示するために、ＨＭＤを使用して示されているが、本発明の実施形態は任意の表示デバイス内の中心窩レンダリングを行うために適切であり、中心窩レンダリングは、周辺領域内に表示されるオブジェクトをレンダリングするための光源の集合を含み、レンダリング画像を任意のディスプレイ上に表示する。
【００３７】
一実施形態では、ＨＭＤ１０２は、中心窩レンダリングで構成される画像を表示するように構成可能であり、中心窩領域内の画像の部分が高解像度で表示され、中心窩領域の外側の部分がより低解像度で表示される。具体的には、中心窩領域の外側にある画像部分は集合光源でレンダリングされ、集合光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する。したがって、クラスタの個別の光源のそれぞれの個別の効果を算出する代わりに、クラスタの集合光源の効果だけを算出する。当該方式では、例えば、表示される一連のビデオフレームに関する全帯域幅は制限される。
【００３８】
一実施形態では、ＨＭＤ１０２は、コンピュータまたはゲーム機１０６に接続されることができる。コンピュータ１０６への接続は、有線または無線であり得る。コンピュータ１０６は、限定ではないが、ゲーム機、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、モバイルデバイス、携帯電話、タブレット、シンクライアント、セットトップボックス、メディアストリーミングデバイス等を含む、当技術分野で既知である任意の汎用または専用コンピュータであり得る。一実施形態では、コンピュータ１０６は、ビデオゲームを実行し、ＨＭＤ１０２によってレンダリングするために、ビデオ及び音声をビデオゲームから出力するように構成され得る。コンピュータ１０６は、ビデオゲームを実行することが制限されていないが、また、ＨＭＤ１０２によってレンダリングするために、ＶＲコンテンツ１９１を出力する対話型アプリケーションを実行するように構成され得る。一実施形態では、コンピュータ１０６は、中心窩領域の外側の画像の部分をレンダリングするとき、光源を集合させることを行う。
【００３９】
ユーザ１００は、コントローラ１０４を動作させ、ビデオゲームに入力を提供し得る。加えて、カメラ１０８は、ユーザ１００が位置する対話環境の１つ以上の画像をキャプチャするように構成され得る。これらのキャプチャ画像は、ユーザ１００、ＨＭＤ１０２、及びコントローラ１０４の場所及び移動を判定するために分析されることができる。一実施形態では、コントローラ１０４は、その場所及び配向を判定するために追跡することができる、光または他のマーカ要素を含む。カメラ１０８は、音を対話環境からキャプチャする１つ以上のマイクロホンを含み得る。マイクロホン配列によってキャプチャされる音は、音源の場所を識別するために処理され得る。識別された場所からの音は、識別された場所からではない他の音を排除するために、選択的に利用または処理されることができる。さらに、カメラ１０８は、複数の画像キャプチャデバイス（例えば、立体カメラ対）、ＩＲカメラ、深度カメラ、及びそれらの組み合わせを含むように定義されることができる。
【００４０】
別の実施形態では、コンピュータ１０６は、クラウドゲームプロバイダ１１２で、ネットワークを通して通信して、シンクライアントとして機能する。クラウドゲームプロバイダ１１２は、ユーザ１０２によってプレイされるビデオゲームを維持及び実行する。コンピュータ１０６は、ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８からの入力をクラウドゲームプロバイダに伝送し、クラウドゲームプロバイダは、実行するビデオゲームのゲーム状態に影響を及ぼす入力を処理する。ビデオデータ、音声データ、及び触覚フィードバックデータ等の実行するビデオゲームからの出力は、コンピュータ１０６に伝送される。コンピュータ１０６は、さらに、伝送前にデータを処理し得る、または、データを関連デバイスに直接伝送し得る。例えば、ビデオ及び音声ストリームはＨＭＤ１０２に提供される一方、触覚フィードバックデータは、コントローラ１０４に提供される振動フィードバックコマンドを生成するために使用される。
【００４１】
一実施形態では、ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８は、それら自体が、ネットワーク１１０に接続し、クラウドゲームプロバイダ１１２と通信する、ネットワークデバイスであり得る。例えば、コンピュータ１０６は、別にビデオゲーム処理を行わないが、通過ネットワークトラフィックを容易にする、ルータ等のローカルネットワークデバイスであり得る。ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８（すなわち、画像キャプチャデバイス）によるネットワークへの接続は、有線または無線であり得る。
【００４２】
さらに別の実施形態では、コンピュータ１０６はビデオゲームの一部を実行し得る一方、ビデオゲームの残りの部分は、クラウドゲームプロバイダ１１２上で実行され得る。他の実施形態では、ビデオゲームの一部は、また、ＨＭＤ１０２で実行され得る。例えば、ビデオゲームをコンピュータ１０６からダウンロードするための要求は、クラウドゲームプロバイダ１１２によってサービスされ得る。要求がサービスされている間に、クラウドゲームプロバイダ１１２はビデオゲームの一部を実行し、ＨＭＤ１０２上にレンダリングするために、ゲームコンテンツをコンピュータ１０６に提供し得る。コンピュータ１０６は、ネットワーク１１０を通して、クラウドゲームプロバイダ１１２と通信し得る。ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８から受信した入力がクラウドゲームプロバイダ１１２に伝送され、その間に、ビデオゲームは、コンピュータ１０６上にダウンロードしている。クラウドゲームプロバイダ１１２は、実行するビデオゲームのゲーム状態に影響を及ぼす入力を処理する。ビデオデータ、音声データ、及び触覚フィードバックデータ等の実行するビデオゲームからの出力は、各々のデバイスへの前方伝送のために、コンピュータ１０６に伝送される。
【００４３】
いったんビデオゲームがコンピュータ１０６に完全にダウンロードされると、コンピュータ１０６は、ビデオゲームを実行し、クラウドゲームプロバイダ１１２上に中止した場所からビデオゲームのゲームプレイを再開し得る。ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８からの入力はコンピュータ１０６によって処理され、ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８から受信された入力に応答して、ビデオゲームのゲーム状態を調節する。係る実施形態では、コンピュータ１０６におけるビデオゲームのゲーム状態は、クラウドゲームプロバイダ１１２におけるゲーム状態と同期する。同期化は、コンピュータ１０６及びクラウドゲームプロバイダ１１２の両方において、ビデオゲームの現在の状態を継続することが定期的に行われ得る。コンピュータ１０６は、出力データを関連デバイスに直接伝送し得る。例えば、ビデオ及び音声ストリームはＨＭＤ１０２に提供される一方、触覚フィードバックデータは、コントローラ１０４に提供される振動フィードバックコマンドを生成するために使用される。
【００４４】
図１Ｂは、本発明の実施形態による、ＶＲコンテンツ１９１の生成と併せたＨＭＤ１０２の機能（例えば、アプリケーション及び／またはビデオゲームの実行等）を概念的に示す。いくつかの実施態様では、ＶＲコンテンツエンジン１２０は、ＨＭＤ１０２に通信するように結合されるコンピュータ１０６（図示されない）で実行される。コンピュータは、ＨＭＤに対してローカルであり得る（例えば、ローカルエリアネットワークの一部）、または、リモートに位置し（例えば、広域ネットワーク、クラウドネットワーク等の一部）、ネットワークを介してアクセスされ得る。ＨＭＤ１０２とコンピュータ１０６との間の通信は、有線接続プロトコルまたは無線接続プロトコルに従い得る。例えば、アプリケーションを実行するＶＲコンテンツエンジン１２０は、ビデオゲームを実行するビデオゲームエンジンであり得、ビデオゲームのゲーム状態を更新するために入力を受信するように構成される。図１Ｂの以下の説明は、簡潔及び明確にする目的のために、ビデオゲームを実行するＶＲコンテンツエンジン１２０の状況の範囲内で説明され、ＶＲコンテンツ１９１を生成することが可能である任意のアプリケーションの実行を表すことが意図される。オブジェクトの存在及び場所、仮想環境の状態、イベントのトリガ、ユーザプロフィール、視点等の様々な態様の現在のゲームプレイを定義するビデオゲームの様々なパラメータの値によって、少なくとも部分的に、ビデオゲームのゲーム状態を定義することができる。
【００４５】
示される実施形態では、ゲームエンジン１２０は、例として、コントローラ入力１６１、音声入力１６２、及び運動入力１６３を受信する。コントローラ入力１６１は、ハンドヘルドゲームコントローラ１０４（例えば、Ｓｏｎｙ  ＤＵＡＬＳＨＯＣＫ（登録商標）４  無線コントローラ、Ｓｏｎｙ  ＰｌａｙＳｔａｔｉｏｎ（登録商標）Ｍｏｖｅ  モーションコントローラ）、または装着可能グローブインターフェースコントローラ等の装着可能コントローラ等の、ＨＭＤ１０２から分離しているゲームコントローラの動作から定義され得る。例として、コントローラ入力１６１は、方向入力、ボタン押し、トリガアクティベーション、運動、ジェスチャ、またはゲームコントローラの動作から処理される他の種類の入力を含み得る。音声入力１６２は、ＨＭＤ１０２のマイクロホン１５１から、または画像キャプチャデバイス１０８内に含まれるマイクロホンから、またはローカルシステム環境内の他の場所で処理されることができる。運動入力１６３は、ＨＭＤ１０２内に含まれる運動センサ１５９から、またはＨＭＤ１０２の画像をキャプチャするときに画像キャプチャデバイス１０８から処理されることができる。ＶＲコンテンツエンジン１２０（例えば、ゲームアプリケーションを実行するエンジン）は、ビデオゲームのゲーム状態を更新するゲームエンジンの構成に従って処理される入力を受信する。エンジン１２０は、ゲーム状態データを様々なレンダリングモジュールに出力し、レンダリングモジュールは、ゲーム状態データを処理し、ユーザに提示されるコンテンツを定義する。
【００４６】
示される実施形態では、ビデオレンダリングモジュール１８３は、ＨＭＤ１０２上に提示するために、ビデオストリームをレンダリングすることが定義される。中心窩ビューレンダラ１９０は、ビデオレンダリングモジュール１８３と一体となっている及び／またはビデオレンダリングモジュール１８３から独立している中心窩画像をレンダリングするように構成される。加えて、複数の実施形態では、中心窩ビューレンダラ１９０によって提供される機能は、ビデオレンダリングモジュール１８３の内部に組み込まれ得る。具体的には、中心窩ビューレンダラ１９０は、中心窩ビューレンダリングを行うように構成され、中心窩領域内の画像の部分は高解像度を有し、中心窩領域の外側の部分はより低解像度を有する。具体的には、中心窩領域の外側にある画像部分は、画像をレンダリングするための算出を減らすために、集合光源でレンダリングされ、集合光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する。クラスタ生成部１９２は、中心窩レンダリングの目的のために、光源のクラスタ内に、光源を集合させるように構成される。より具体的には、遅延タイルレンダラ１９４は、ディスプレイの画素の個別のタイル部分内のオブジェクトをレンダリングすることによって、遅延タイルレンダリングを行うように構成され、中心窩領域の外側に位置するオブジェクトを表示するタイルに関して、中心窩レンダリングを行うとき、光源はクラスタ生成部１９２によって集合する。
【００４７】
ＨＭＤ１０２内の光学部１７０のレンズは、ＶＲコンテンツ１９１を視認するように構成される。ディスプレイスクリーン１７５は、光学部１７０のレンズの後ろに配置され、その状態では、光学部１７０のレンズは、ＨＭＤ１０２がユーザによって装着されるとき、ディスプレイスクリーン１７５とユーザの眼１６０との間にある。当該方式では、ビデオストリームは、ディスプレイスクリーン／プロジェクタ機構１７５によって提示され、ユーザの眼１６０によって光学部１７０を通して視認され得る。ＨＭＤユーザは、例えば、ＨＭＤを装着し、ゲームプレイ用のビデオゲームを選択することによって、対話型ＶＲコンテンツ１９１（例えば、ＶＲビデオソース、ビデオゲームコンテンツ等）と対話することを選び得る。ビデオゲームから生じる対話型仮想現実（ＶＲ）シーンは、ＨＭＤのディスプレイスクリーン１７５上でレンダリングされる。当該方式では、ＨＭＤは、ユーザの眼に密接するＨＭＤの表示機構を準備することによって、ユーザがゲームプレイに完全に没入することを可能にする。コンテンツをレンダリングするためのＨＭＤのディスプレイスクリーン内に画定される表示領域は、ユーザの視野の大部分またはさらに全体を占め得る。一般的に、各眼は、１つ以上のディスプレイスクリーンを視認している光学部１７０の関連レンズによって支えられる。
【００４８】
音声レンダリングモジュール１８２は、ユーザによって聞くために、音声ストリームをレンダリングするように構成される。一実施形態では、音声ストリームは、ＨＭＤ１０２に関連付けられるスピーカ１５２を通して出力される。スピーカ１５２は、オープンエアスピーカ、ヘッドホン、または音声を提示することが可能である任意の他の種類のスピーカの形態を取り得ることを認識されたい。
【００４９】
一実施形態では、視線追跡カメラ１６５は、ＨＭＤ１０２内に含まれ、ユーザの視線の追跡を可能にする。１つだけの視線追跡カメラ１６５が含まれるが、２つ以上の視線追跡カメラが、ユーザの視線を追跡するために使用され得ることに留意されたい。視線追跡カメラは、ユーザの眼の画像をキャプチャし、画像はユーザの視線方向を判定するために分析される。一実施形態では、ユーザの視線方向についての情報は、ビデオレンダリングに影響を及ぼすために利用されることができる。例えば、ユーザの眼が特定の方向に見ていることが判定された場合、中心窩ビューレンダラ１９０によって提供される中心窩レンダリングによってより詳細な高解像度、またはユーザが見ている領域のより高速な更新等を提供することによって、その方向に対するビデオレンダリングを優先または強調することができる。ユーザの視線方向は、ヘッドマウントディスプレイに対して、ユーザが位置する実環境に対して、及び／またはヘッドマウントディスプレイ上にレンダリングされる仮想環境に対して定義できることを認識されたい。
【００５０】
大まかに言って、視線追跡カメラ１６５によってキャプチャされた画像の分析は、単独で考慮されるとき、ＨＭＤ１０２に対するユーザの視線方向を提供する。しかしながら、ＨＭＤ１０２の追跡された場所及び配向と組み合わせて考慮されるとき、ＨＭＤ１０２の場所及び配向がユーザの頭部の場所及び配向と同じであるように、ユーザの現実世界の視線方向を判定することができる。すなわち、ユーザの眼の位置移動を追跡することと、ＨＭＤ１０２の場所及び配向を追跡することとから、ユーザの現実世界視線方向を判定することができる。仮想環境のビューがＨＭＤ１０２上でレンダリングされるとき、ユーザの現実世界の視線方向は、仮想環境におけるユーザの仮想世界の視線方向を判定するために適合されることができる。
【００５１】
加えて、触覚フィードバックモジュール１８１は、コントローラ１０４等のＨＭＤユーザによって動作するＨＭＤ１０２または別のデバイスのいずれかに含まれる触覚フィードバックハードウェアに、信号を提供するように構成される。触覚フィードバックは、振動フィードバック、温度フィードバック、圧力フィードバック等の様々な種類の触感の形態を取り得る。
【００５２】
図１Ｃは、本発明の実施形態による、ＶＲコンテンツ１９１の生成と併せたＨＭＤ１０２の機能（例えば、アプリケーション及び／またはビデオゲームの実行等）を概念的に示す。図１Ｃは、図１ＣのＨＭＤ１０２がパーティクル及びシミュレーションモデルを中心窩に適応するように構成される中心窩ビューレンダラ９１９０を含むことを除いて、図１Ｂと同様であり、図１ＢのＨＭＤ１０２は、遅延ライティングを最適化するように構成される中心窩ビューレンダラ１９０を含む。同様に、図１Ｂ及び図１Ｃで、（ならびに、本明細書全体を通して）番号付けされたコンポーネントは、同一であり、同じ機能を行う。
【００５３】
示される実施形態では、ビデオレンダリングモジュール１８３は、ＨＭＤ１０２上に提示するために、ビデオストリームをレンダリングすることが定義される。中心窩ビューレンダラ９１９０は、ビデオレンダリングモジュール１８３と一体となっている及び／またはビデオレンダリングモジュール１８３から独立している中心窩画像をレンダリングするように構成される。加えて、複数の実施形態では、中心窩ビューレンダラ９１９０によって提供される機能は、ビデオレンダリングモジュール１８３の内部に組み込まれ得る。具体的には、中心窩ビューレンダラ９１９０は、中心窩ビューレンダリングを行うように構成され、中心窩領域内の画像の部分は高解像度を有し、中心窩領域の外側の部分はより低解像度を有する。より具体的には、パーティクルシステムは、画像の中心窩領域に対して、対応する効果の表示場所に応じて異なるようにシミュレート及び／またはレンダリングされる。例えば、中心窩領域の内側に表示されるパーティクルシステムは、パーティクルシステムのパーティクルのフルコンポーネントを使用して、シミュレート及び／またはレンダリングされる。周辺領域内に表示されるパーティクルシステムは、パーティクルのサブシステムを使用して、シミュレート及び／またはレンダリングされる。中心窩パーティクル及び／またはフラグメント判定部９１９２は、レンダリングされたパーティクル及び／またはパーティクルシステムが中心窩領域の内側または外側に表示されたかどうかを判定するように構成される。パーティクルシステム及び／またはサブシステムシミュレータ９１９５は、様々な実施形態では、パーティクルシステムにおけるパーティクルのフルコンポーネントを使用して効果をシミュレートするように、または、パーティクルのサブシステムを使用して効果をシミュレートするように構成される。例えば、制限されたパーティクル（例えば、１０００未満）を有するパーティクルシステムに関して、効果が中心窩または周辺領域の内部で発生するかどうかにかかわらず、パーティクルシステムにおけるパーティクルのフルコンポーネントをシミュレートする。しかしながら、パーティクルシステムによって発生する効果が周辺領域内に表示されるとき、パーティクルのサブシステムはレンダリングされる。この場合、パーティクルのサブシステムは、ランダムパーティクルセレクタ９１９６によって生成され得る。また、大量のパーティクル（例えば、１０００を超えるもの）を有するパーティクルシステムに関して、パーティクルシステムによって発生する効果が周辺領域内に表示されるとき、パーティクルのサブシステムはシミュレートされ、その後、パーティクルの同じサブシステムからの出力を使用してレンダリングされる。この場合のパーティクルのサブシステムは、パーティクルクラスタラ及びアグリゲータ９１９８によって判定され得る。パーティクルシステム及びサブシステムレンダリング９１９４は、パーティクルシステムによって発生する効果が中心窩領域内に表示されるとき、パーティクルシステムにおけるパーティクルのフルコンポーネントをレンダリングし、効果が周辺領域内に表示されるとき、パーティクルのサブシステムをレンダリングするように構成される。パーティクルスケーラ及びカラーモディファイア９１９９は、パーティクルのサブシステムにおけるパーティクルをスケーリングし、パーティクルの色を修正し、パーティクルシステムのユーザによって同じまたは同様の感知できる効果を達成するように構成される。例えば、サブシステムにおける各パーティクルは、（例えば、縮小率に基づいて）より大きいサイズスケーリングされ、暗くなる（例えば、縮小率に基づいてアルファ値を修正する）。中心窩ビューレンダラ９１９０のコンポーネント及び／または機能は、ＣＰＵもしくはＧＰＵ、またはそれらの組み合わせの内部で行われ得る。
【００５４】
一実施形態では、視線追跡カメラ１６５は、ＨＭＤ１０２内に含まれ、ユーザの視線の追跡を可能にする。１つだけの視線追跡カメラ１６５が含まれるが、２つ以上の視線追跡カメラが、ユーザの視線を追跡するために使用され得ることに留意されたい。視線追跡カメラは、ユーザの眼の画像をキャプチャし、画像はユーザの視線方向を判定するために分析される。一実施形態では、ユーザの視線方向についての情報は、ビデオレンダリングに影響を及ぼすために利用されることができる。例えば、ユーザの眼が特定の方向に見ていることが判定された場合、中心窩ビューレンダラ９１９０によって提供される中心窩レンダリングによってより詳細な高解像度、中心窩内に表示されるパーティクルシステム効果のより高解像度、中心窩の外側に表示されるパーティクルシステム効果のより低解像度、またはユーザが見ている領域のより高速な更新等を提供することによって、その方向に対するビデオレンダリングを優先または強調することができる。ユーザの視線方向は、ヘッドマウントディスプレイに対して、ユーザが位置する実環境に対して、及び／またはヘッドマウントディスプレイ上にレンダリングされる仮想環境に対して定義できることを認識されたい。
【００５５】
図２Ａは、対応するユーザに対してローカルで実行する１つ以上のゲームアプリケーションをプレイする１人以上のユーザにゲーム制御を提供するシステム２００Ａを示し、バックエンドサーバサポート（例えば、ゲームサーバ２０５を経由してアクセス可能である）が複数のユーザをサポートする複数のローカルコンピューティングデバイスをサポートするように構成され得、各ローカルコンピューティングデバイスは、シングルプレイヤーまたはマルチプレイヤービデオゲーム等のビデオゲームのインスタンスを実行し得る。例えば、マルチプレイヤーモードでは、ビデオゲームがローカルで実行している間、クラウドゲームネットワークは、同時に、情報（例えば、ゲーム状態データ）を各ローカルコンピューティングデバイスから受信し、１つ以上のローカルコンピューティングデバイスの全体を通して、適宜、当該情報を分散し、これにより、各ユーザは、マルチプレイヤービデオゲームのゲーム環境において、（例えば、ビデオゲームの対応するキャラクタによって）他のユーザと対話することが可能である。当該方式では、クラウドゲームネットワークは、マルチプレイヤーゲーム環境内でユーザ毎に、ゲームプレイを調整及び組み合わせる。ここで図面を参照すると、同様の参照番号は同一の部分または対応する部分を示す。
【００５６】
図２Ａに示されるように、複数のユーザ２１５（例えば、ユーザ１００Ａ、ユーザ１００Ｂ・・・ユーザ１００Ｎ）は、複数のゲームアプリケーションをプレイし、ゲームアプリケーションのそれぞれは、対応するユーザの対応するクライアントデバイス１０６（例えば、ゲームコンソール）上で、ローカルで実行される。クライアントデバイス１０６のそれぞれは、対応するゲームアプリケーションのローカルでの実行が行われる点で、同様に構成され得る。例えば、ユーザ１００Ａは、対応するクライアントデバイス１０６上の第１のゲームアプリケーションをプレイし得、第１のゲームアプリケーションのインスタンスは、対応するゲームタイトル実行エンジン２１１によって実行される。第１のゲームアプリケーションを実施するゲームロジック２２６Ａ（例えば、実行可能コード）は、対応するクライアントデバイス１０６上に記憶され、第１のゲームアプリケーションを実行するために使用される。例証の目的のために、ゲームロジックは、携帯用媒体（例えば、フラッシュドライブ、コンパクトディスク等）によって、またはネットワークを経由して（例えば、ゲームプロバイダからインターネット２５０を経由してダウンロードされる）、対応するクライアントデバイス１０６に送達され得る。加えて、ユーザ１００Ｂは、対応するクライアントデバイス１０６上の第２のゲームアプリケーションをプレイし、第２のゲームアプリケーションのインスタンスは、対応するゲームタイトル実行エンジン２１１によって実行される。第２のゲームアプリケーションは、ユーザ１００Ａのために実行する第１のゲームアプリケーションに同一であり得る、または異なるゲームアプリケーションであり得る。第２のゲームアプリケーションを実施するゲームロジック２２６Ｂ（例えば、実行可能コード）は、前述に説明したような対応するクライアントデバイス１０６上に記憶され、第２のゲームアプリケーションを実行するために使用される。さらに、ユーザ１００Ｎは、対応するクライアントデバイス１０６上のＮ番目のゲームアプリケーションをプレイし、Ｎ番目のゲームアプリケーションのインスタンスは、対応するゲームタイトル実行エンジン２１１によって実行される。Ｎ番目のゲームアプリケーションは、第１もしくは第２のゲームアプリケーションに同一であり得る、または完全に異なるゲームアプリケーションであり得る。第３のゲームアプリケーションを実施するゲームロジック２２６Ｎ（例えば、実行可能コード）は、前述に説明したような対応するクライアントデバイス１０６上に記憶され、Ｎ番目のゲームアプリケーションを実行するために使用される。
【００５７】
前述に説明しように、クライアントデバイス１０６は、ゲームコントローラ、タブレットコンピュータ、キーボード等の様々な種類の入力デバイスからの入力と、ビデオカメラ、マウス、タッチパッド等によってキャプチャされるジェスチャとを受信し得る。クライアントデバイス１０６は、ネットワーク１５０を通してゲームサーバ２０５に接続することが可能である、少なくともメモリ及びプロセッサモジュールを有する任意の種類のコンピューティングデバイスであり得る。また、対応するユーザのクライアントデバイス１０６は、ローカルまたはリモートで実行するゲームタイトル実行エンジン２１１によって実行されるレンダリング画像を生成するように、及びレンダリング画像をディスプレイ（例えば、ディスプレイ１１、ＨＭＤ１０２等）上に表示するように構成される。例えば、レンダリング画像は、ユーザ１００Ａのクライアントデバイス１０６上で実行する第１のゲームアプリケーションのインスタンスに関連付けられ得る。例えば、対応するクライアントデバイス１０６は、ゲームプレイを駆動するために使用される入力コマンド等によって、対応するユーザのゲームプレイを実施するために、ローカルまたはリモートで実行される対応するゲームアプリケーションのインスタンスと相互作用するように構成される。クライアントデバイス１０６のいくつかの例は、パーソナルコンピュータ（ＰＣ）、ゲームコンソール、ホームシアターデバイス、汎用コンピュータ、モバイルコンピューティングデバイス、タブレット、電話機、またはゲームサーバ２０５と相互作用し、ビデオゲームのインスタンスを実行することができる任意の他の種類のコンピューティングデバイスを含む。
【００５８】
一実施形態では、クライアントデバイス１０６は、ゲームアプリケーションをプレイする対応するユーザのためのシングルプレイヤーモードで動作している。別の実施形態では、複数のクライアントデバイス１０６は、それぞれのユーザが特定のゲームアプリケーションをプレイする対応するユーザのためのマルチプレイヤーモードで動作している。その場合、ゲームサーバを介するバックエンドサーバサポートは、マルチプレイヤー処理エンジン２１９等によってマルチプレイヤー機能を提供し得る。具体的には、マルチプレイヤー処理エンジン２１９は、特定のゲームアプリケーション用のマルチプレイヤーゲームセッションを制御するように構成される。例えば、マルチプレイヤー処理エンジン２１９は、マルチプレイヤーセッションコントローラ２１６と通信し、マルチプレイヤーセッションコントローラ２１６は、マルチプレイヤーゲームセッションに参加するユーザ及び／またはプレイヤーのそれぞれとの通信セッションを確立及び維持するように構成される。当該方式では、当該セッションにおいてユーザは、マルチプレイヤーセッションコントローラ２１６によって制御され、相互に通信することができる。
【００５９】
さらに、マルチプレイヤー処理エンジン２１９は、各ユーザの対応するゲーム環境内でユーザ間の対話を可能にするために、マルチプレイヤーロジック２１８と通信する。具体的には、状態共有モジュール２１７は、マルチプレイヤーゲームセッションにおけるユーザのそれぞれに関する状態を管理するように構成される。例えば、状態データは、特定地点における、対応するユーザに関する（ゲームアプリケーションの）ゲームプレイの状態を定義するゲーム状態データを含み得る。例えば、ゲーム状態データは、ゲームキャラクタ、ゲームオブジェクト、ゲームオブジェクト属性、ゲーム属性、ゲームオブジェクト状態、グラフオーバーレイ等を含み得る。当該方式では、ゲーム状態データは、ゲームアプリケーションの対応する地点において存在するゲーム環境の生成を可能にする。ゲーム状態データは、また、ＣＰＵ、ＧＰＵ、メモリ、登録値、プログラムカウンタ値、プログラム可能ＤＭＡ状態、ＤＭＡに関するバッファデータ、オーディオチップ状態、ＣＤ−ＲＯＭ状態等の状態など、ゲームプレイをレンダリングするために使用されるすべてのデバイスの状態を含み得る。ゲーム状態データは、また、どの実行可能コードの一部が当該地点からビデオゲームを実行するためにロードされる必要があるかを識別し得る。ゲーム状態データは、データベース（図示されない）内に記憶され得、状態共有モジュール２１７によってアクセス可能である。
【００６０】
さらに、状態データは、対応するプレイヤーに関するビデオゲームを個人用にする情報を含むユーザ保存データを含み得る。これは、ユーザによってプレイされるキャラクタに関連付けられる情報を含み、これにより、ビデオゲームは、ユーザに一意であり得るキャラクタ（例えば、場所、姿、見た目、衣類、武器等）でレンダリングされる。当該方式では、ユーザ保存データは、対応するユーザのゲームプレイのキャラクタの生成を可能にし、当該キャラクタは、対応するユーザによって現在経験しているゲームアプリケーションの地点に対応する状態を有する。例えば、ユーザ保存データは、ゲームをプレイするときユーザ１００Ａによって選択されたゲーム難易度、ゲームレベル、キャラクタ属性、キャラクタの場所、残された寿命の数値、利用可能である寿命に関する可能である合計数、鎧、戦利品、時間カウンタ値等を含み得る。例えば、ユーザ保存データは、また、対応するユーザ１００Ａを識別するユーザプロフィールデータを含み得る。ユーザ保存データは、ストレージ（図示されない）内に記憶され得る。
【００６１】
当該方式では、状態共有データ２１７及びマルチプレイヤーロジック２１８を使用するマルチプレイヤー処理エンジン２１９は、オブジェクト及びキャラクタを、マルチプレイヤーゲームセッションに参加するユーザのゲーム環境のそれぞれにオーバーレイ／挿入することが可能である。例えば、第１のユーザのキャラクタは、第２のユーザのゲーム環境にオーバーレイ／挿入される。これは、それらの各々のゲーム環境のそれぞれ（例えば、スクリーン上に表示されるようなもの）を介して、マルチプレイヤーゲームセッションにおけるユーザ間の対話を可能にする。
【００６２】
図２Ｂは、本開示の一実施形態による、クラウドゲームネットワークを通して実行される各々のＶＲ視聴環境においてゲームアプリケーションをプレイする１人以上のユーザ２１５（例えば、ユーザ１００Ｌ、１００Ｍ・・・１００Ｚ）にゲーム制御を提供するシステム２００Ｂを示す。いくつかの実施形態では、クラウドゲームネットワークは、ホストマシンのハイパーバイザ上で起動する複数の仮想マシン（ＶＭ）を含むゲームクラウドシステム２１０であり得、１つ以上の仮想マシンは、ホストのハイパーバイザに利用可能であるハードウェアリソースを利用するゲームプロセッサモジュールを実行するように構成される。ここで図面を参照すると、同様の参照番号は同一の部分または対応する部分を示す。
【００６３】
示されるように、ゲームクラウドシステム２１０は、複数の対話型ビデオゲームまたはゲームアプリケーションへのアクセスを提供するゲームサーバ２０５を含む。ゲームサーバ２０５は、クラウド内で利用可能である任意の種類のサーバコンピューティングデバイスであり得、１つ以上のホスト上で実行する１つ以上の仮想マシンとして構成され得る。例えば、ゲームサーバ２０５は、ユーザのゲームアプリケーションのインスタンスをインスタンス化するゲームプロセッサをサポートする仮想マシンを管理し得る。したがって、複数の仮想マシンに関連付けられるゲームサーバ２０５の複数のゲームプロセッサは、複数のユーザ２１５のゲームプレイに関連付けられるゲームアプリケーションの複数のインスタンスを実行するように構成される。当該方式では、バックエンドサーバサポートは、複数のゲームアプリケーションのゲームプレイのメディア（例えば、ビデオ、音声等）のストリーミングを、複数の対応するユーザに提供する。
【００６４】
複数のユーザ２１５は、ネットワーク２５０を介してゲームクラウドシステム２１０にアクセスし、ユーザ（例えば、ユーザ１００Ｌ、１００Ｍ・・・１００Ｚ）は、対応するクライアントデバイス１０６’を介してネットワーク２５０にアクセスし、クライアントデバイス１０６’は、図２Ａのクライアントデバイス１０６（例えば、ゲーム実行エンジン２１１等を含む）と同様に構成され得る、または算出機能を提供するバックエンドサーバ（例えば、ゲーム実行エンジン２１１を含む）とのインターフェースを提供するシンクライアントとして構成され得る。
【００６５】
具体的には、対応するユーザ１００Ｌのクライアントデバイス１０６’は、インターネット等のネットワーク２５０を通して、ゲームアプリケーションへのアクセスを要求するように、ならびにゲームサーバ２０５によって実行され及び対応するユーザ１００Ｌに関連付けられる表示デバイスに送達されるゲームアプリケーション（例えば、ビデオゲーム）のインスタンスをレンダリングするように構成される。例えば、ユーザ１００Ｌは、ゲームサーバ２０５のゲームプロセッサ上で実行するゲームアプリケーションのインスタンスで、クライアントデバイス１０６’を経由して対話し得る。より具体的には、ゲームアプリケーションのインスタンスは、ゲームタイトル実行エンジン２１１によって実行される。ゲームアプリケーションを実施するゲームロジック（例えば、実行可能コード）は、データストア（図示されない）によって記憶され及びアクセス可能であり、ゲームアプリケーションを実行するために使用される。示されるように、ゲームタイトル処理エンジン２１１は、複数のゲームロジック２７７を使用して、複数のゲームアプリケーションをサポートすることが可能である。
【００６６】
前述に説明したように、クライアントデバイス１０６’は、ゲームコントローラ、タブレットコンピュータ、キーボード等の様々な種類の入力デバイスからの入力と、ビデオカメラ、マウス、タッチパッド等によってキャプチャされるジェスチャとを受信し得る。クライアントデバイス１０６’は、ネットワーク２５０を通してゲームサーバ２０５に接続することが可能である、少なくともメモリ及びプロセッサモジュールを有する任意の種類のコンピューティングデバイスであり得る。また、対応するユーザのクライアントデバイス１０６’は、ローカルまたはリモートで実行するゲームタイトル実行エンジン２１１によって実行されるレンダリング画像を生成するように、及びレンダリング画像をディスプレイ上に表示するように構成される。例えば、レンダリング画像は、ユーザ１００Ｌのクライアントデバイス１０６’上で実行する第１のゲームアプリケーションのインスタンスに関連付けられ得る。例えば、対応するクライアントデバイス１０６’は、ゲームプレイを駆動するために使用される入力コマンド等によって、対応するユーザのゲームプレイを実施するために、ローカルまたはリモートで実行される対応するゲームアプリケーションのインスタンスと相互作用するように構成される。
【００６７】
クライアントデバイス１０６’は、レンダリング画像を受信するように、及びレンダリング画像をディスプレイ１１またはＨＭＤ１０２上に表示する（例えば、ＶＲコンテンツを表示する）ように構成される。例えば、クラウドベースサービスによって、レンダリング画像は、ユーザ１００に関連して、ゲームサーバ２０５のゲーム実行エンジン２１１上で実行するゲームアプリケーションのインスタンスによって送達され得る。別の例では、ローカルゲーム処理によって、レンダリング画像は、ローカルゲーム実行エンジン２１１によって送達され得る。いずれの場合、クライアントデバイス１０６は、ゲームプレイを駆動するために使用される入力コマンド等によって、対応するユーザ１００のゲームプレイに関連して、ローカルまたはリモートの実行エンジン２１１と相互作用するように構成される。別の実施態様では、レンダリング画像は、クラウドベースサービスから、または、クライアントデバイス１０６（例えば、ＰｌａｙＳｔａｔｉｏｎ（登録商標）リモートプレイ）を介して直接、無線または有線で、スマートフォンまたはタブレットにストリームされ得る。
【００６８】
別の実施形態では、前述に説明したようなマルチプレイヤー処理エンジン２１９は、ゲームアプリケーション用のマルチプレイヤーゲームセッションを制御するために提供する。具体的には、マルチプレイヤー処理エンジン２１９がマルチプレイヤーゲームセッションを管理しているとき、マルチプレイヤーセッションコントローラ２１６は、マルチプレイヤーゲームセッションのユーザ及び／またはプレイヤーのそれぞれとの通信セッションを確立及び維持するように構成される。当該方式では、当該セッションにおいてユーザは、マルチプレイヤーセッションコントローラ２１６によって制御され、相互に通信することができる。
【００６９】
さらに、マルチプレイヤー処理エンジン２１９は、各ユーザの対応するゲーム環境内でユーザ間の対話を可能にするために、マルチプレイヤーロジック２１８と通信する。具体的には、状態共有モジュール２１７は、マルチプレイヤーゲームセッションにおけるユーザのそれぞれに関する状態を管理するように構成される。例えば、前述に説明したように、状態データは、特定地点における、対応するユーザ１００に関する（ゲームアプリケーションの）ゲームプレイの状態を定義するゲーム状態データを含み得る。さらに、前述に説明したように、状態データは、対応するプレイヤーに関するビデオゲームを個人用にする情報を含むユーザ保存データを含み得る。例えば、状態データはユーザのキャラクタに関連付けられる情報を含み、これにより、ビデオゲームは、ユーザに一意であり得るキャラクタ（例えば、姿、見た目、衣類、武器等）でレンダリングされる。当該方式では、状態共有データ２１７及びマルチプレイヤーロジック２１８を使用するマルチプレイヤー処理エンジン２１９は、オブジェクト及びキャラクタを、マルチプレイヤーゲームセッションに参加するユーザのゲーム環境のそれぞれにオーバーレイ／挿入することが可能である。これは、それらの各々のゲーム環境のそれぞれ（例えば、スクリーン上に表示されるようなもの）を介して、マルチプレイヤーゲームセッションにおけるユーザ間の対話を可能にする。
【００７０】
図３Ａは、本開示の一実施形態による、ディスプレイ３００上に示される画像３１０を示し、当該画像は高解像度の中心窩領域３１０Ａを含み、中心窩領域がディスプレイの中心に対応する。具体的には、単純及び明確にするために、画像３１０は、文字「Ｅ」の行列を含む。画像３１０は、中心窩領域３１０Ａ及び周辺領域３１０Ｂを含む複数の領域に分割される。
【００７１】
示されるように、中心窩領域３１０Ａは静止しており、ディスプレイ３００の中心に対応する。中心窩領域３１０Ａは、ビデオゲームのグラフィックスを視認するとき等に、ほとんど、ユーザが（例えば、眼の窩を使用して）視線を向ける領域と想定される。時々、ユーザの視線は中心から外れるように向き得るが、視線は、ほとんど、（メインコンテンツを視認するために）中心に向いている。いくつかの場合、画像は、最初に、（例えば、着目オブジェクトを視認するために）ユーザの視線を中心から外れるようにし、次に、（例えば、中心窩領域３１０Ａに向かってオブジェクトを移動させることによって）視線を中心に戻すように設計されている。
【００７２】
具体的には、中心窩領域３１０Ａの内部に表示される及び位置する画像３１０等の任意の画像の部分（複数可）は、より高解像度においてレンダリングされる。例えば、グラフィックスパイプラインは、算出複雑度を減らすために使用される任意の技術の使用を最小にしながら、中心窩領域３１０Ａ内で画像の部分をレンダリングする。具体的には、本発明の実施形態に関して、中心窩領域３１０Ａに対応する画素を使用して表示されるオブジェクトに影響を及ぼす光源は、オブジェクト上のその効果のそれぞれ（例えば、オブジェクトの多角形上の色、テクスチャ、シャドーイング等）を判定するために、グラフィックスパイプライン内で個別に算出される。より高解像度を表すものとして、中心窩領域３１０Ａの内部で表示される文字「Ｅ」のオブジェクトは、明瞭に、鮮やかな色、及び最小のぼやけで示される。これは、ディスプレイ３００上で中心窩領域３１０Ａに向かうユーザの視線と一致し、それを利用している。
【００７３】
加えて、中心窩領域３１０Ｂ内に配置される及び位置する画像３１０等の画像の部分（複数可）は、より低解像度（例えば、中心窩領域３１０Ａ内に位置する画像及び／またはオブジェクトの部分の解像度よりも低い）においてレンダリングされる。一般的に、ユーザの視線は、その視線の主な焦点が中心窩領域３１０Ａ内のオブジェクトに向いているとき、周辺領域３１０Ｂ内に位置する及び／または表示されるオブジェクトに向いていない。シーン内の現実のビューと一致するように、周辺領域３１０Ｂ内のオブジェクトは、より低解像度でレンダリングされ、例えば、ユーザが移動オブジェクト（例えば、膝の屈伸運動の代わりに脚を伸ばして歩行している人間）を知覚することが可能であるように十分に細部にわたって、周辺領域３１０Ｂ内の単数のオブジェクト内の、または複数のオブジェクト間で十分なコントラストでレンダリングされる。より低解像度でレンダリングを達成するために、グラフィックスパイプラインは、算出複雑度を減らす計算効率の良い技術を使用して、周辺領域３１０Ｂ内で画像の部分をレンダリングし得る。具体的には、本発明の実施形態に関して、周辺領域３１０Ｂ内の画素に対応する画素を使用して表示されるオブジェクトに影響を及ぼす光源は、１つ以上のクラスタにグループ化され得、クラスタ内の光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する単一の光源に集合する。したがって、クラスタの個別の光源のそれぞれの個別の効果を算出する代わりに、クラスタの集合光源の効果だけを算出する。これは、画像全体をレンダリングするときに算出処理を減らし、特に、周辺領域３１０Ｂ内でレンダリングされたオブジェクトに関する算出処理を減らす。
【００７４】
また、シーン内の現実のビューと一致するように、周辺領域３１０Ｂ内のオブジェクトは、より低解像度でレンダリングされ、例えば、ユーザが移動オブジェクト（例えば、膝の屈伸運動の代わりに脚を伸ばして歩行している人間）を知覚することが可能であるように十分に細部にわたって、周辺領域３１０Ｂ内の単数のオブジェクト内の、または複数のオブジェクト間で十分なコントラストでレンダリングされる。より低解像度でレンダリングを達成するために、グラフィックスパイプラインは、算出複雑度を減らす計算効率の良い技術を使用して、周辺領域３１０Ｂ内で画像の部分をレンダリングし得る。具体的には、本発明の実施形態に関して、パーティクルシステムは、パーティクルシステムによって発生する効果が表示される画像の中心窩領域の内側または外側に表示されるかどうかに応じて、異なるようにシミュレート及び／またはレンダリングされる。例えば、中心窩領域の内側にあるパーティクルシステムは、パーティクルシステムのパーティクルのフルコンポーネントを使用して、シミュレート及び／またはレンダリングされる。中心窩領域の外側にある（例えば、周辺領域内の）パーティクルシステムは、パーティクルのサブシステムを使用して、シミュレート及び／またはレンダリングされる。したがって、周辺領域内に位置するパーティクルシステムの全てのパーティクルを算出する代わりに、パーティクルのサブシステムだけがシミュレート及び／またはレンダリングされ、それによって、対応する画像内のパーティクルシステムによって生じる効果をレンダリングするために必要な算出を少なくする。これは、（例えば、パーティクルシステムのシミュレーション及び／またはレンダリングによって）画像全体をレンダリングするときに算出処理を減らし、特に、周辺領域３１０Ｂ内でレンダリングされたパーティクルシステムに関する算出処理を減らす。また、パーティクルのサブシステムを使用してレンダリングされ、中心窩領域の外側に表示されるパーティクルシステムを含む各画像は、パーティクルシステムのパーティクルのフルコンポーネントを使用して、シミュレート及び／またはレンダリングされるパーティクルシステムを含む画像よりも少なくデータを定義することを必要とする。したがって、一連のビデオフレームは、転送されるデータが少ないため、最小のレイテンシで、またはレイテンシがなく、リアルタイムで、（例えば、有線または無線接続を通して）送達されることができる。
【００７５】
図３Ｂは、本開示の一実施形態による、ディスプレイ３００上に示され、高解像度の中心窩領域３１０Ａ’を含み、中心窩領域が、ユーザの視線が向いているディスプレイの場所に対応する、画像３１０’を示す。具体的には、画像３１０’は、図３Ａに示される画像３１０と同様であり、単純及び明確にするために、文字「Ｅ」の行列を含む。画像３１０は、中心窩領域３１０Ａ’及び周辺領域３１０Ｂ’を含む複数の領域に分割される。
【００７６】
示されるように、中心窩領域３１０Ａ’は、ユーザの視線がどの方向に向いているかに応じて、ディスプレイ３００の全体にわたって動的に移動する。前述に説明したように、例えば、ＨＭＤ１０２の視線追跡カメラ１６５を使用して、視線を追跡し得る。したがって、中心窩領域３１０Ａ’は必ずしも、ディスプレイ３００の中心に対応しない場合があるが、代わりに、画像３１０’の内部のユーザの実際の方向及び注目の焦点に相関する。すなわち、中心窩領域３１０Ａ’はユーザの片眼及び／または両眼の移動と一緒に動的に移動する。
【００７７】
前述に紹介したように、中心窩領域３１０Ａ’の内部に表示される及び位置する画像３１０’等の任意の画像の部分（複数可）は、中心窩領域３１０Ａ’内に位置するオブジェクトをレンダリングするときに算出複雑度を減らすために使用される任意のレンダリング技術の使用を最小にすることによって、より高解像度においてレンダリングされる。具体的には、本発明の実施形態に関して、中心窩領域３１０Ａ’に対応する画素を使用して表示されるオブジェクトに影響を及ぼす光源は、オブジェクト上のその効果のそれぞれ（例えば、オブジェクトの多角形上の色、テクスチャ、シャドーイング等）を判定するために、グラフィックスパイプライン内で個別に算出される。より高解像度を表すものとして、中心窩領域３１０Ａ’の内部で表示される文字「Ｅ」のオブジェクトは、明瞭に、鮮やかな色、及び最小のぼやけで示される。
【００７８】
加えて、中心窩領域３１０Ｂ’内に配置される及び位置する画像３１０’等の画像の部分（複数可）は、より低解像度（例えば、中心窩領域３１０Ａ内に位置する画像及び／またはオブジェクトの部分の解像度よりも低い）においてレンダリングされる。前述に紹介したように、一般的に、ユーザの視線は、その視線の主な焦点が中心窩領域３１０Ａ’内のオブジェクトに向いているとき、周辺領域３１０Ｂ’内に位置する及び／または表示されるオブジェクトに向いていない。したがって、周辺領域３１０Ｂ’内のオブジェクトは、より低解像度でレンダリングされ、例えば、ユーザが移動オブジェクト（例えば、膝の屈伸運動の代わりに脚を伸ばして歩行している人間）を知覚することが可能であるように十分に細部にわたって、周辺領域３１０Ｂ’内の単数のオブジェクト内の、または複数のオブジェクト間で十分なコントラストでレンダリングされる。より低解像度でレンダリングを達成するために、グラフィックスパイプラインは、算出複雑度を減らす計算効率の良い技術を使用して、周辺領域３１０Ｂ’内で画像の部分をレンダリングし得る。具体的には、本発明の実施形態に関して、周辺領域３１０Ｂ’内の画素に対応する画素を使用して表示されるオブジェクトに影響を及ぼす光源は、１つ以上のクラスタにグループ化され得、クラスタ内の光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する単一の光源に集合し、画像全体をレンダリングするとき算出処理を減らし、特に、周辺領域３１０Ｂ’内のオブジェクトに関する算出処理を減らす。さらに、より低解像度でレンダリングを達成するために、グラフィックスパイプラインは、算出複雑度を減らす計算効率の良い技術を使用して、周辺領域３１０Ｂ’内で画像の部分をレンダリングし得る。具体的には、本発明の実施形態に関して前述に説明したように、パーティクルシステムのシミュレーション及び／またはレンダリングは、パーティクルシステムの効果が画像の周辺領域内に表示されるとき、パーティクルのサブシステムを使用して行われる。
【００７９】
遅延ライティングの最適化
図４Ａは、本開示の一実施形態による、中心窩レンダリングを行うように構成されるグラフィックスパイプライン４００Ａを実施する、グラフィックスプロセッサを示す。グラフィックスパイプライン４００Ａは、３Ｄ（３次元）多角形レンダリングプロセスを使用して画像をレンダリングするための全体的プロセスを示しているが、中心窩レンダリングを行うパイプライン内部の追加プログラマブル素子を含む。レンダリング画像のためのグラフィックスパイプライン４００Ａは、ディスプレイ内の画素毎に対応する色情報を出力し、色情報は、テクスチャ及びシェーディング（例えば、色、シャドーイング等）を表し得る。グラフィックスパイプライン４００Ａは、図１Ａのゲームコンソール１０６、図１ＢのＶＲコンテンツエンジン１２０、図２Ａ及び図２Ｂのクライアントデバイス１０６、及び／または図２Ｂのゲームタイトル処理エンジン２１１の内部で実施可能である。
【００８０】
示されるように、グラフィックスパイプラインは、入力ジオメトリ４０５を受信する。例えば、入力ジオメトリ４０５は、３Ｄゲーム世界内の頂点と、頂点のそれぞれに対応する情報とを含み得る。頂点によって画定される多角形（例えば、三角形）を使用してゲーム世界内の所与のオブジェクトを表すことができ、次に、対応する多角形の表面は、グラフィックスパイプライン４００Ａによって処理され、最終効果（例えば、色、テクスチャ等）を達成する。頂点属性は、法線（例えば、その方向は頂点に対して直角である）、色（例えば、ＲＧＢ―赤、緑、及び青の３色の組等）、及びテクスチャ座標／マッピング情報を含み得る。
【００８１】
頂点シェーダ及び／またはプログラム４１０は、入力ジオメトリ４０５を受信し、３Ｄシーン内でオブジェクトを構成する多角形またはプリミティブを作る。すなわち、頂点シェーダ４１０は、オブジェクトがゲーム世界内にセットされるとき、プリミティブを使用してオブジェクトを作り上げる。頂点シェーダ４１０は、シーンのライティングに応じて、多角形に関するライティング計算及びシャドーイング計算を行うように構成され得る。プリミティブは、頂点シェーダ４１０によって出力され、グラフィックスパイプライン４００Ａの次のステージに送達される。また、クリッピング（例えば、ゲーム世界内の視点によって定義されるようなビューフラスタムの外側にあるプリミティブを識別及び無視する）等の追加動作は、頂点シェーダ４１０によって行われ得る。
【００８２】
プリミティブはラスタライザ４２０にフィードされ、ラスタライザ４２０は、シーン内のオブジェクトを、３Ｄゲーム世界内の視点（例えば、カメラ場所、ユーザの眼の位置等）によって定義される２次元（２Ｄ）の画像平面に投影するように構成される。単純化レベルにおいて、ラスタライザ４２０は各プリミティブを確認して、対応するプリミティブによってどの画素が影響を受けるかを判定する。具体的には、ラスタライザ４２０はプリミティブを画素サイズフラグメントに分割し、各フラグメントはディスプレイ内の画素に対応する。１つ以上のフラグメントが、画像を表示するとき、対応する画素の色に寄与し得ることに留意することが重要である。また、視点に対する、クリッピング（ビューフラスタムの外側にあるフラグメントを識別及び無視する）と、カリング（より近いオブジェクトによって塞がれたフラグメントを無視する）等の追加動作は、ラスタライザ４２０によって行われ得る。
【００８３】
中心窩フラグメントシェーダ及び／またはプログラム４３０は、そのコアにおいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントシェーダ４３０は、フラグメント毎に、深度、色、法線、及びテクスチャ座標（例えば、テクスチャ細部）を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントシェーダ４３０は、色及び他の属性（例えば、視点からの距離に関するｚ深度、及び透明度に関するアルファ値）を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ４３０は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、フラグメントシェーダ４３０は、フラグメント毎に、シャドーイング効果を適用し得る。説明の目的のために、ゲーム世界内の明確な位置を有する点光のような、光を全方向に放射する光源だけが説明されている。指向性ライティング等の他のライティングが利用可能である。
【００８４】
より具体的には、中心窩フラグメントシェーダ４３０は、フラグメントが中心窩領域または周辺領域の内部にあるかどうかに基づいて、上記に説明したようなシェーディング動作を行う。表示される画像の中心窩領域内部に位置するフラグメントは、中心窩領域内部のフラグメントに関する詳細なテクスチャ及び明度を達成するために処理効率を考慮せず、高解像度におけるシェーディング動作を使用して処理される。他方では、中心窩フラグメントシェーダ４３０は、移動及び十分なコントラスト等を提供する最小の動作で十分に詳細にフラグメントを処理するために処理効率に着目し、周辺領域内部に位置するフラグメント上でシェーディング動作を行う。例えば、本発明の実施形態では、周辺領域内の画素内に表示されるフラグメントに影響を及ぼす光源は、１つ以上のクラスタにグループ化され得、クラスタ内の光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する単一の光源に集合し、画像全体をレンダリングするとき算出処理を減らす。フラグメントシェーダ４３０の出力は、処理されたフラグメント（例えば、テクスチャ及びシェーディング情報）を含み、グラフィックスパイプライン４００Ａの次のステージに送達される。
【００８５】
出力統合コンポーネント４４０は、対応する画素のそれぞれに寄与する及び／またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、３Ｄゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイの２Ｄ色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン４００Ａの次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント４４０は、フラグメント間の値及び／またはフラグメントシェーダ４３０から判定された画素の選定的混合を行い得る。
【００８６】
ディスプレイ内の画素毎の明度は、フレームバッファ４５５内に記憶される。これらの値は、シーンの対応する画像を表示するとき、対応する画素に対して走査される。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、もしくは右から左に、上から下に、もしくは下から上に、または任意の他のパターンで、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
【００８７】
図４Ｂは、本開示の一実施形態による、遅延タイルレンダリングによって実施される中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施する、グラフィックスプロセッサを示す。レンダリング画像のためのグラフィックスパイプライン４００Ｂは、ディスプレイ内の画素毎に対応する色情報を出力し、色情報は、テクスチャ及びシェーディング（例えば、色、シャドーイング等）を表し得る。グラフィックスパイプライン４００Ｂは、図１Ａのゲームコンソール１０６、図１ＢのＶＲコンテンツエンジン１２０、図２Ａ及び図２Ｂのクライアントデバイス１０６、及び／または図２Ｂのゲームタイトル処理エンジン２１１の内部で実施可能である。
【００８８】
遅延レンダリングは、いくつかの方法で行われ得、グラフィックスパイプライン４００Ｂによって実施されるように、大まかに説明される。概して、遅延タイルレンダリングは、複数のサブ画像として、ゲーム世界のシーンの各画像を処理する。生成される各サブ画像はディスプレイのタイルに対応し、ディスプレイは複数のタイル内で分割される。すなわち、各タイルは別個にレンダリングされ、様々なタイルに関連付けられる全てのサブ画像をレンダリングしているとき、画像を完全にレンダリングする。特定のタイルに関連するオブジェクトは、グラフィックスパイプライン４００Ｂの１つ以上のステージで行われ得る。示されるように、一実施形態では、タイル生成部４６０は、頂点シェーダ４１０とラスタライザ４２０との間で、画像のタイリングを行い得る。別の実施形態では、タイル生成部４６０’は、ラスタライザ４２０とフラグメントシェーダ４３０’との間で、画像のタイリングを行い得る。
【００８９】
パイプライン４００Ｂはパイプライン４００Ａと同様であり、同様の参照番号は同一の部分または対応する部分を指し、３Ｄ多角形レンダリング処理を使用して画像をレンダリングするために使用され、中心窩レンダリングを行う追加プログラマブル素子を含む。具体的には、パイプライン４００Ｂは、画像をレンダリングするとき、また遅延タイルレンダリングとしても既知であるタイルレンダリングを行うように構成される。タイルのそれぞれは、より低解像度を有する中心窩領域の外側にある画像部分をレンダリングすることを含む、中心窩レンダリングプロセスで画像のその一部をレンダリングする。例えば、中心窩領域内の画像部分は、光源の対応するクラスタの個別の光源から生じる総合効果と密に近似する集合光源を使用してレンダリングされる。
【００９０】
前述に紹介したように、グラフィックスパイプライン４００Ｂは、ゲーム世界内の頂点と、頂点のそれぞれに対応する情報とを含み得る入力ジオメトリ４０５を受信する。頂点属性は、法線、色、及びテクスチャ座標／マッピング情報を含み得る。頂点は、ゲーム世界内のオブジェクトを画定し、より具体的には、ゲーム世界内のオブジェクトの表面を形成する多角形（例えば、三角形）を画定する。多角形は、グラフィックスパイプライン４００Ｂによって処理され、最終効果（例えば、色、テクスチャ等）を達成する。
【００９１】
頂点シェーダ４１０は、入力ジオメトリ４０５を受信し、３Ｄゲーム世界内でオブジェクトを構成する多角形またはプリミティブを作る。プリミティブは、頂点シェーダによって出力され、グラフィックスパイプラインの次のステージに送達される。ライティング及びシャドーイング、計算、クリッピング、及び／またはカリング等の追加動作は、頂点シェーダによって行われ得る。
【００９２】
一実施形態では、タイル生成部４６０は、最終的にプリミティブがディスプレイのタイル上に表示される場所を判定するように構成される。ディスプレイは複数のタイル内に分割され、各タイルは一意の画素の対応する数に関連付けられる。具体的には、タイル生成部４６０は、どのプリミティブが対応するタイルと重なり、またはそのタイルに関連付けられるかを判定するために、プリミティブをソートするように構成される。いったんプリミティブをソートすると、グラフィックスパイプライン４００Ｂによって、タイル毎に基づいて、プリミティブを処理することができる。
【００９３】
次に、プリミティブはラスタライザ４２０にフィードされ、ラスタライザ４２０は、シーン内のオブジェクトを、ゲーム世界内の視点によって定義される２Ｄ画像平面に投影するように構成される。プリミティブがタイルによってソートされている場合、ラスタライザ４２０はオブジェクトを画像平面の２Ｄのタイル上に投影している。前述に紹介したように、ラスタライザ４２０はプリミティブを画素サイズフラグメントに分割し、各フラグメントはディスプレイ内の画素に対応し、１つ以上のフラグメントは画素の色に寄与する。また、クリッピング及びカリング等の追加動作は、ラスタライザ４２０によって行われ得る。
【００９４】
別の実施形態では、タイル生成部４６０’は、ラスタライザ４２０によって判定される情報に基づいて、最終的にフラグメントがディスプレイのタイル上に表示される場所を判定するように構成される。したがって、タイル生成部４６０’は、どのフラグメントが対応するタイルと重なり、またはそのタイルに関連付けられるかを判定するために、フラグメントをソートするように構成される。いったんフラグメントをソートすると、グラフィックスパイプライン４００Ｂによって、タイル毎に基づいて、フラグメントを処理することができる。
【００９５】
タイリング済み中心窩フラグメントシェーダ４３０’は、そのコアにおいて、タイル毎に基づいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントシェーダ４３０’は、対応するタイルのフラグメント毎に、深度、色、法線、及びテクスチャ座標（例えば、テクスチャ細部）を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントシェーダ４３０’は、色及び他の属性（例えば、視点からの距離に関するｚ深度、及び透明度に関するアルファ値）を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ４３０’は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、フラグメントシェーダ４３０’は、フラグメント毎に、シャドーイング効果を適用し得る。説明の目的のために、ゲーム世界内の明確な位置を有する点光のような、光を全方向に放射する光源だけが説明されている。指向性ライティング等の他のライティングが利用可能である。
【００９６】
より具体的には、中心窩フラグメントシェーダ４３０’は、フラグメントが中心窩領域または周辺領域の内部にあるかどうかに基づいて、上記に説明したようなシェーディング動作を行う。これは、フラグメントに関連付けられるタイルが中心窩領域または周辺領域内部かどうかを判定することによって、最初に判定され得る。表示される画像の中心窩領域内部に位置するフラグメントは、高解像度におけるシェーディング動作を使用して処理される。他方では、中心窩フラグメントシェーダ４３０’は、移動及び十分なコントラスト等を提供する最小の動作で十分に詳細にフラグメントを処理するために処理効率に着目し、周辺領域内部に位置するフラグメント上でシェーディング動作を行う。例えば、本発明の実施形態では、周辺領域内に位置する特定のタイルのフラグメントに影響を及ぼす光源は、１つ以上のクラスタにグループ化され得、クラスタ内の光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する単一の光源に集合し、画像全体をレンダリングするとき算出処理を減らす。フラグメントシェーダ４３０’の出力は、処理されたフラグメント（例えば、テクスチャ及びシェーディング情報）を含み、グラフィックスパイプライン４００Ｂの次のステージに送達される。
【００９７】
タイリング済み出力統合コンポーネント４４０’は、処理されている対応するタイルの対応する画素のそれぞれに寄与する及び／またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、３Ｄゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイのタイルの２Ｄ色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン４００Ｂの次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント４４０’は、フラグメント間の値及び／またはフラグメントシェーダ４３０’から判定された画素の選定的混合を行い得る。
【００９８】
ディスプレイのタイル内の画素毎の明度は、フレームバッファ４５０’内に記憶される。これらの値は、シーンのタイルに対応する、対応するサブ画像を表示するとき、対応する画素に対して走査される。一実施態様では、フレームバッファ４５０’は、ディスプレイ上で画像を描く前に、全てのタイルからの情報で満たされる。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、上から下に、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
【００９９】
ネットワークを通して通信するゲームサーバ及びクライアントデバイスの様々なモジュールの詳細の説明から、図５Ａのフロー図５００Ａは、中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施するための方法を開示し、本開示の一実施形態に従って、中心窩の外側にある画像部分は、１つ以上の集合光源でレンダリングされる。前述に説明したように、フロー図５００Ａは、画像をレンダリングするとき、クライアントデバイスまたはクラウドベースゲームシステムの内部で実施される。一実施態様では、クライアントデバイスはゲーム機（また、ゲームコンソールと称される）である。
【０１００】
５１０において、本方法は、仮想シーンに影響を及ぼす複数の光源を判定することを含む。光源は、グラフィックスプロセッサによって処理されるようなシーン内でオブジェクトに影響を及ぼす。光源からの照明は、視点から視認されるようなシーン内の対応するオブジェクトを表示するとき、対応する画素の最終色を判定する。
【０１０１】
５１５において、本方法は、シーンの画像のオブジェクトのジオメトリを、第１の視点からディスプレイの複数の画素上に投影することを含む。前述に紹介したように、ラスタライザ及び／または頂点シェーダは、プリミティブ及び／またはプリミティブのフラグメントを対応する画素に関連付けるように構成される。具体的には、頂点シェーダはプリミティブを対応する画素に関連付けるように構成され得、ラスタ化前に、プリミティブによるシーンはタイルに分割される。加えて、ラスタライザはプリミティブのフラグメントを対応する画素に関連付けるように構成され得、フラグメントによるシーンはタイルに分割され得る。
【０１０２】
５２０において、本方法は、ディスプレイの複数の画素を複数のタイルに分割することを含む。当該方式では、グラフィックスプロセッサは、画像を処理するとき、タイルレンダリングまたは遅延タイルレンダリングを行うことが可能である。さらに、視点から対応するタイルを視認できるように重なるプリミティブのリストは、タイル毎に作成され得る。加えて、視点から対応するタイルを視認できるように重なるプリミティブのリストは、タイル毎に作成され得る。当該方式では、タイル毎のレンダリングを行うことができる。
【０１０３】
５２５において、本方法は、表示される画像に関する最高解像度の中心窩領域を画定することを含む。すなわち、画像は、想定（例えば、概して、ディスプレイの静的エリアを覆うディスプレイの中心において）によって、または眼の追跡（例えば、視線の方向を判定するため）のいずれかによって、ユーザの注目が集まる領域内で分割される。ユーザの注目が集まる領域が中心窩領域内にあり、中心窩領域内の画像の一部（例えば、プリミティブ及び／またはフラグメント）は、高解像度におけるグラフィックスプロセッサによってレンダリングされる。他方では、周辺領域がユーザに注目されず、中心窩領域内の画像の一部（例えば、プリミティブ及び／またはフラグメント）は、より低解像度におけるグラフィックスプロセッサによってレンダリングされる。より具体的には、画素の第１のサブセットは中心窩領域に割り当てられ、第１のサブセットに関連付けられるプリミティブ及び／またはフラグメントは高解像度で処理される。画素の第２のサブセットは中心窩領域の外側にある周辺領域に割り当てられ、第２のサブセットに関連付けられるプリミティブ及び／またはフラグメントはより低解像度（例えば、中心窩領域に関連付けられる解像度よりも低いもの）で処理される。
【０１０４】
タイルレンダリングまたは遅延タイルレンダリングを行うとき、５３０において、本方法は、周辺領域内にある第１のタイル内に表示される１つ以上のオブジェクトに影響を及ぼす複数の光源から光源の第１のセットを判定することを含む。タイルレンダリングを行うとき、画像に関連して各タイルに影響を及ぼす光源を判定する。光源は、シーンに影響を及ぼす複数の光源から取られたものである。これは、タイル内でオブジェクトに影響を及ばさない光源がタイルに関連付けられるサブ画像をレンダリングするときに考慮されないので、処理を減らす。すなわち、タイル毎に、対応するタイルに描かれるオブジェクトに影響を及ぼす光源のリストが作成される。したがって、所与のタイル（例えば、第１のタイル）に関して、光源の第１のセットは第１のタイルに関連付けられるリスト内に含まれ、第１のタイルは周辺領域内にある。すなわち、第１のタイル内に表示されるオブジェクトは周辺領域内にあり、したがって、より低解像度でレンダリングされ得る。例えば、より低解像度におけるレンダリングは、下記に説明されるような光源を集合させることを含み得る。
【０１０５】
５３５において、本方法は、第１のタイルの画素内の画像をレンダリングするとき、第１のセットからの少なくとも２つの光源を、第１のタイルに影響を及ぼす第１の集合光源にクラスタリングすることを含む。すなわち、中心窩レンダリングを行うとき、第１のタイル内のオブジェクトは周辺領域内にあることが判定され、これらのオブジェクトは、光源を集合させることを含むように、より低解像度でレンダリングされ得る。光源の第１のセットは、第１のタイルに関連付けられる、または第１のタイル内に表示されるオブジェクトに影響を及ぼすことが事前に判定されている。これらの光源はより少ないサブセットの光源に集合し得、それにより、個別に、第１のセットの光源のそれぞれを考慮することによってタイル内のオブジェクトをレンダリングするのではなく、集合光源だけが考慮される。集合光源のそれぞれは、個別に、光源の第１のセットによって生じる総合効果と密に近似する。当該方式では、タイルのオブジェクトをレンダリングする処理を行うことが少なくなる。
【０１０６】
図５Ｂは、本開示の一実施形態による、タイル遅延レンダリングによって実施される中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施し、中心窩領域の外側のタイルの光源が集合する方法のステップを示すフロー図５００Ｂを示す。具体的には、フロー図５００Ｂは、タイル毎に基づいて、クラスタ光源に対して行われ、集合光源は、対応するタイルのオブジェクトをレンダリングする目的のために、光源の対応するクラスタを表す。前述に説明したように、フロー図５００Ｂは、画像をレンダリングするとき、クライアントデバイスまたはクラウドベースゲームシステムの内部で実施される。一実施態様では、クライアントデバイスはゲーム機（また、ゲームコンソールと称される）である。
【０１０７】
５５０において、本方法は、所与のタイルに関する光源の標的数を判定することを含む。標的数は、そのタイルに関連付けられるオブジェクトをレンダリングするときに処理される集合光源及び／または非集合光源の合計数に対応する。例えば、周辺領域の平均光の最大数は、クラスタ出力を抑制するために指定される。すなわち、本方法は、第１のタイルに影響を及ぼす集合光源の数を標的数に抑制することを含む。
【０１０８】
５５５において、本方法は、所与のタイルに影響を及ぼす光源のセットを判定することを含み、当該セットは、シーンに影響を及ぼす複数の光源から取られたものである。光源の標的数は、タイルに影響を及ぼす光源のセットから判定され、標的数はセットの数以下になる。標的数は、レンダリングを行うときにタイルに関する光源のクラスタの最大数を判定するものである。
【０１０９】
５６０において、本方法は、光源の標的数及びセットに基づいて、クラスタのそれぞれの光源の数を判定することを含む。一実施態様では、クラスタ内の光源の数は、光源のセットを標的数で除算することによって判定される。例えば、タイルに影響を及ぼす光源のセットに３０個の光源があり（例えば、Ｍ＝３０）、タイルに関する標的数が５である場合、各クラスタの光源の数は６である（例えば、Ｍ／［光の標的数］＝６）。
【０１１０】
操作５７０は、光源間の関連距離に基づいて、Ｍ個の光を小さい数の平均光源にクラスタリングするために行われる。複数の実施形態では、集合（例えば、クラスタリング）に基づいて、この距離を達成するために、光源の最適なクラスタリングを選ぶために最近隣検索またはＫ平均法クラスタリング技術を使用してクラスタを生成させ、光源の各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも１つの光源を含む。
【０１１１】
一実施形態では、閾値は平均化された光に関する最長距離に設定される。すなわち、クラスタ内の２つの光源間の最長距離を、最長距離に抑制する。これは、新しい平均の光位置が元の光位置と大幅に異なり得る、かなり離れている光を平均化することを防止する。
【０１１２】
具体的には、ループプロセスは、タイルに影響を及ぼす光源（Ｍ）のセットにおける光源（Ｌ＿ｉ）のそれぞれに行われる。例えば、５７２において、本方法は、現在の光源（Ｌ＿ｉ）に関して、現在の光源（Ｌ＿ｉ）と、タイルに影響を及ぼすべての光源（Ｍ）との間の距離を算出することを含む。５７４において、本方法は、セット（Ｍ）における現在の光源（Ｌ＿ｉ）に関して、現在の光源（Ｌ＿ｉ）と、現在の光源に対して最小距離を有する他の５つの光源とを含む光の現在のクラスタ（Ｃｌｕｓｔｅｒ＿ｉ）を判定することを含む。５７６において、本方法は、光源の現在のクラスタ（Ｃｌｕｓｔｅｒ＿ｉ）に関するクラスタエラー（Ｃｌｕｓｔｅｒ＿ｅｒｒｏｒ＿ｉ）を判定することを含む。一実施態様では、クラスタエラー（Ｃｌｕｓｔｅｒ＿ｅｒｒｏｒ＿ｉ）は、現在の光源（Ｌ＿ｉ）と現在のクラスタ（Ｃｌｕｓｔｅｒ＿ｉ）における互いの光との間の距離の合計によって判定される。このプロセスは、決定ステップ５７８によって判定されるように、Ｍ個の光における光（Ｌ＿ｉ）毎に行われる。
【０１１３】
５８０において、本方法は、最小量のクラスタエラーを有するクラスタを選ぶことを含む。すなわち、本方法は、光源の複数のクラスタに関する複数のクラスタエラーを最小にすることを含む。Ｍ＝３０の光クラスタである例を続けて説明すると、６の最小クラスタエラーを有する６のクラスタが選ばれる（また、クラスタエラーのいずれかの矛盾を考慮する）。すなわち、光源のクラスタ（Ｃｌｕｓｔｅｒ＿ｉ）のそれぞれに、新しい集合光源を作成し、集合光源は、クラスタの個別の光源のそれぞれから生じる総合効果と密に近似する。
【０１１４】
一実施形態では、クラスタエラーをさらに定義するために、光源の複数のクラスタにおける各クラスタに対応するクラスタエラーは、現在の光源と他の光源のそれぞれとの間の距離の繰り返し合計を含み、現在の光源は、繰り返し毎に、クラスタ内に異なる光源を含む。
【０１１５】
一実施形態では、集合光源は、クラスタ内の光源に関する特徴の平均である特徴がある。例えば、集合光源は、距離、色等の平均である特徴がある。集合光源の新しい彩度は、クラスタ内の彩度毎の明度の合計であり得る。明度は平均ではない場合があり、これはシーンに影響を及ぼすエネルギー損失をもたらし得るようになる。具体的には、集合光源は、クラスタ内の光源の平均場所である新しい場所を含み得る。集合光源の新しい色は、クラスタ内の光源毎の色の平均であり得る。
【０１１６】
別の実施態様では、新しい色は、クラスタ内の光源毎の色の加重和である。光源（Ｌ＿ｉ）毎の加重は、集合光源の新しい彩度で除算される現在の光源（Ｌ＿ｉ）の彩度（例えば、［Ｉｎｔｅｎｓｉｔｙ＿Ｌ＿ｉ］／［［Ｎｅｗ  Ｉｎｔｅｎｓｉｔｙ］）に基づいて判定される。したがって、新しい色は以下のとおり判定される［（Ｉｎｔｅｎｓｉｔｙ＿Ｌ＿ｉ／Ｎｅｗ  Ｉｎｔｅｎｓｉｔｙ）＊（ｃｏｌｏｒ＿Ｌ＿ｉ）］。したがって、集合光源は、光のそれぞれの元の彩度を大まかに維持する特徴があり、合計彩度に対して色を加重することによって、光の平均色を保存する。
【０１１７】
一実施形態では、タイルサイズは、クラスタの標的数に一致するように動的に調節される。具体的には、所与のタイルに影響を及ぼす集合光源の数を標的数に抑制する。タイルに影響を及ぼす光源のセットが標的数未満であることを判定したとき、所与のタイルのサイズは標的数に適応するように拡大する。
【０１１８】
図６Ａは、本開示の一実施形態による、ゲーム世界のシーン６００Ａに影響を及ぼす複数の光源と、集合光源を形成する光源の少なくとも１つのクラスタとの図である。示されるように、ゲーム世界６００は３次元の座標系６０１によって画定される。単純及び明確にする目的のために、１つのオブジェクト６２０はゲーム世界のシーン６００Ａに示され、オブジェクト６２０はゲーム世界内にある。シーン６００Ａはユーザの眼６３０の視点からレンダリングされ得、視点は、眼６３０によって見られる仮想ディスプレイに対応する画像平面内でレンダリングされ得る。
【０１１９】
シーン６００Ａに影響を及ぼす光源の２つのクラスタを示す。第１のクラスタ６１５ａは複数の光源を含む。第１のクラスタ６１５ａ内の光源は、集合光源６１０ａに、前述に説明した技術を使用して集合する。集合光源６１０ａは、クラスタ６１５ａ内の個別の光源のそれぞれから生じる総合効果と密に近似する特徴がある。示されるように、集合光源６１０ａは、座標系６０１内に含有する格子６４０ａによって画定されるゲーム世界内にある。加えて、第２のクラスタ６１５ｂは複数の光源を含む。第２のクラスタ６１５ｂ内の光源は、集合光源６１０ｂに、前述に説明した技術を使用して集合する。集合光源６１０ｂは、クラスタ６１５ｂ内の個別の光源のそれぞれから生じる総合効果と密に近似する特徴がある。示されるように、集合光源６１０ｂは、座標系６０１内に含有する格子６４０ｂによって画定されるゲーム世界内にある。
【０１２０】
図６Ｂは、本開示の一実施形態による、複数のタイル６６０に分割され、グラフィックスパイプラインの遅延レンダリングシステムにおいて、タイル毎に基づいてレンダリングが行われる、ディスプレイ６５０の例証図である。具体的には、ディスプレイ６５０内の複数のタイルは、（タイルの行列によって識別されるような）長方形パターンによって画定され得る。タイルは長方形の形状であるが、任意の形状が、任意の配列（例えば、２Ｄ、３Ｄ、またはそれよりも大きい次元の範囲内の長方形、円、球状）で使用され得る。
【０１２１】
示されるように、ディスプレイ６５０は、より高解像度でレンダリングされる画像の部分を表示する中心窩領域６７０を含む。中心窩領域６７０内のタイルのそれぞれは、対応するタイルに影響を及ぼす光源のリストを含む。例えば、中心窩領域６７０内のタイルは、１０から３５の光源の範囲にわたって光源の数を変えることによって影響を受け得、シーンに影響を及ぼす複数の光源は、３５以上であり得る。例えば、タイル６６０ｐ内に表示されるオブジェクト（例えば、行３及び列５）は１０個の光源によって影響を受け、タイル６６０ｑ（例えば、行４及び列５）内に表示されるオブジェクトは１４個の光源によって影響を受け、タイル６６０ｒ（例えば、行３及び行７）内に表示されるオブジェクトは３５個の光源によって影響を受ける。タイルが中心窩領域６７０内にあるため、所与のタイルに影響を及ぼす光源は、当該タイル内で、オブジェクト（例えば、関連のプリミティブ及び／またはフラグメント）をレンダリングするとき、完全に処理される（例えば、個別に、グラフィックスパイプラインによって考慮される）。
【０１２２】
加えて、ディスプレイ６５０は、より低解像度（例えば、中心窩領域６７０内にレンダリングされる画像の部分よりも低い解像度）でレンダリングされる画像の部分を表示する中心窩領域６７５を含む。周辺領域６７５内のタイルのそれぞれは、対応するタイルに影響を及ぼす光源のリストを含む。さらに、周辺領域６７５内のタイルは、タイル毎に、集合光源を使用することを含むように、より低解像度でレンダリングされる。例えば、タイル６６０ｎは、当該タイル内に描かれるオブジェクトに影響を及ぼす２５個の光源を有し、２５個の光源は、それぞれがそれ自体の集合光源を有する５つのクラスタにグループ化される。したがって、タイル６６０ｎは、当該タイル内のオブジェクトをレンダリングするために使用される５つの集合光源を有する。別の例では、タイル６６０ｍはより詳細に示される。例えば、タイル６６０ｍは、３２×３２画素の格子を含むように画定され得る。前述に紹介したように、タイルは様々な形状及びサイズであり得る。示されるように、タイル６６０ｍは、当該タイル内に描かれるオブジェクトに影響を及ぼす３０個の光源を有し、３０個の光源は、それぞれがそれ自体の集合光源を有する５つのクラスタにグループ化される。したがって、タイル６６０ｍは、また、当該タイル内のオブジェクトをレンダリングするために使用される５つの集合光源を有する。
【０１２３】
一実施形態では、コンピュータシステムはプロセッサ及びメモリを含み、メモリは、プロセッサに結合され、コンピュータシステムによって実行される場合、コンピュータシステムに、グラフィックスパイプラインを実施するための方法を実行させる命令をメモリ内に記憶する。本方法は、仮想シーンに影響を及ぼす複数の光源を判定することを含む。本方法は、さらに、シーンの画像のオブジェクトのジオメトリを、第１の視点からディスプレイの複数の画素上に投影することを含む。本方法は、さらに、ディスプレイの複数の画素を複数のタイルに分割することを含む。本方法は、さらに、表示される画像に関する最高解像度の中心窩領域を画定することを含み、画素の第１のサブセットは中心窩領域に割り当てられ、画素の第２のサブセットは中心窩領域の外側にある周辺領域に割り当てられる。本方法は、さらに、周辺領域内にある第１のタイル内に表示される１つ以上のオブジェクトに影響を及ぼす複数の光源から光源の第１のセットを判定することを含む。本方法は、さらに、第１のタイルの画素内の画像をレンダリングするとき、第１のセットからの少なくとも２つの光源を、第１のタイルに影響を及ぼす第１の集合光源にクラスタリングすることを含む。
【０１２４】
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、最近隣検索またはＫ平均法クラスタリング技術を使用して、光源の複数のクラスタを複数の光源から生成することを含み、光源の各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも１つの光源を含む。
【０１２５】
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、第１のタイルに影響を及ぼす集合光源の数を標的数に抑制することを含む。本方法は、さらに、クラスタ内の２つの光源間の最長距離を、長距離に抑制することを含む。本方法は、さらに、光源の複数のクラスタに関する複数のクラスタエラーを最小にすることを含む。本方法は、さらに、光源のクラスタ毎に、対応する集合光源を生成することを含む。
【０１２６】
別の実施形態では、コンピュータシステムによって実行される方法では、対応する集合光源を生成することは、さらに、光源の対応するクラスタ内の光源の場所を平均化することによって、対応する集合光源の集合場所を判定することを含む。本方法の対応する集合光源を生成することは、さらに、光源の対応するクラスタ内の光源の彩度を合計することによって、対応する集合光源の集合彩度を判定することを含む。本方法の対応する集合光源を生成することは、さらに、光源の対応するクラスタ内の光源の色の加重和を行うことによって、対応する集合光源の色の集合を判定することを含む。
【０１２７】
別の実施形態では、コンピュータシステムによって実行される方法では、光源の複数のクラスタ内の各クラスタに対応するクラスタエラーは、現在の光源と、他の光源のそれぞれとの間の距離の繰り返し合計を含み、現在の光源は、繰り返し毎にクラスタ内の異なる光源を含む。
【０１２８】
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、第１のタイルに影響を及ぼす集合光源の数を標的数に抑制することを含む。本方法は、さらに、光源の第１のセットが標的数未満であることを判定することを含む。本方法は、さらに、標的数を満たすために、第１のタイルのサイズを拡大することを含む。
【０１２９】
別の実施形態では、コンピュータシステムによって実行される方法では、ディスプレイはヘッドマウントディスプレイ（ＨＭＤ）を含む。
【０１３０】
一実施形態では、非一時的なコンピュータ可読媒体は、グラフィックスパイプラインを実施するためのコンピュータプログラムを記憶する。コンピュータ可読媒体は、仮想シーンに影響を及ぼす複数の光源を判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、シーンの画像のオブジェクトのジオメトリを、第１の視点からディスプレイの複数の画素上に投影するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、ディスプレイの複数の画素を複数のタイルに分割するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、表示される画像に関する最高解像度の中心窩領域を画定するためのプログラム命令を含み、画素の第１のサブセットは中心窩領域に割り当てられ、画素の第２のサブセットは中心窩領域の外側にある周辺領域に割り当てられる。コンピュータ可読媒体は、さらに、周辺領域内にある第１のタイル内に表示される１つ以上のオブジェクトに影響を及ぼす複数の光源から光源の第１のセットを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、第１のタイルの画素内の画像をレンダリングするとき、第１のセットからの少なくとも２つの光源を、第１のタイルに影響を及ぼす第１の集合光源にクラスタリングするためのプログラム命令を含む。
【０１３１】
別の実施形態では、非一時的なコンピュータ可読媒体は、さらに、最近隣検索またはＫ平均法クラスタリング技術を使用して、光源の複数のクラスタを複数の光源から生成するためのプログラム命令を含み、光源の各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも１つの光源を含む。
【０１３２】
別の実施形態では、非一時的なコンピュータ可読媒体は、さらに、第１のタイルに影響を及ぼす集合光源の数を標的数に抑制するためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、クラスタ内の２つの光源間の最長距離を、最長距離に抑制するためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、光源の複数のクラスタに関する複数のクラスタエラーを最小にするためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、光源のクラスタ毎に、対応する集合光源を生成するためのプログラム命令を含む。
【０１３３】
別の実施形態では、非一時的なコンピュータ可読媒体内の対応する集合光源を生成するためのプログラム命令は、さらに、光源の対応するクラスタ内の光源の場所を平均化することによって、対応する集合光源の集合場所を判定するためのプログラム命令を含む。対応する集合光源を生成するためのプログラム命令は、さらに、光源の対応するクラスタ内の光源の彩度を合計することによって、対応する集合光源の集合彩度を判定するためのプログラム命令を含む。対応する集合光源を生成するためのプログラム命令は、さらに、光源の対応するクラスタ内の光源の色の加重和を行うことによって、対応する集合光源の色の集合を判定するためのプログラム命令を含む。
【０１３４】
別の実施形態では、非一時的なコンピュータ可読媒体内に記憶されるプログラム命令では、光源の複数のクラスタ内の各クラスタに対応するクラスタエラーは、現在の光源と、他の光源のそれぞれとの間の距離の繰り返し合計を含み、現在の光源は、繰り返し毎にクラスタ内の異なる光源を含む。
【０１３５】
パーティクルの中心窩適応及びシミュレーションモデル
本開示の様々な実施形態は、高解像度を有する中心窩領域内の画像の部分と、より低解像度を有する中心窩領域の外側の部分とを表示するように構成される、中心窩レンダリングに関する。具体的には、シミュレーションモデルによって、パーティクルシステムは、火、煙、布、及び水等の物理的効果を生じさせるために広く使用される。また、パーティクルシステムは、魔法等の多くの非物理的効果において使用される。これらのパーティクルシステムは、所望の効果に応じて、１０パーティクル〜１００，０００以上のパーティクルの複雑度の範囲であり得る。パーティクルをシミュレート及びレンダリングするための算出はかなり高価であり得る。ユーザがパーティクルシステムを積極的に見ていない場合（すなわち、パーティクルシステム効果が、周辺領域内に、または周辺領域内に描かれる場合）、パーティクルシステムは、潜在的に、同様の知覚効果を達成するために、スケーリングされる（例えば、より大きくする）及び暗くなる（例えば、アルファ値を修正する）ように、レンダリングされるときの少数のパーティクルによって表され得る。当該方式では、例えば、複雑度が少ない画像に部分的に起因して、表示される一連のビデオフレームに関する全帯域幅は小さくなる。さらに、一連のビデオフレームは、算出複雑度が少なくなるため、最小のレイテンシで、またはレイテンシがなく、リアルタイムで、（例えば、有線または無線接続を通して）送達されることができる。いくつかの実施形態では、パーティクルの中心窩適応及びシミュレーションモデルは、図１〜図６に事前に説明された状況の範囲内で実施され得る。
【０１３６】
図７Ａは、本開示の一実施形態による、中央処理装置（ＣＰＵ）またはグラフィックス処理ユニット（ＧＰＵ）を使用する制限された量のパーティクル（例えば、１０００未満）のパーティクルシステムシミュレーションを含む中心窩レンダリングと、パーティクルシステムの描画効果が中心窩領域または周辺領域の内部に位置するかどうかに応じて、サンプリング（例えば、ランダム、最近隣、類似性等）によって生成されるパーティクルの全システムまたはパーティクルのサブシステムを使用してＧＰＵにおけるパーティクルシステムのレンダリングとを行うように構成される、グラフィックスパイプラインを実施するシステム９４００Ａを示す。グラフィックスパイプライン９４００Ａは、３Ｄ（３次元）多角形レンダリングプロセスを使用して画像をレンダリングするための全体的プロセスを示しているが、中心窩レンダリングを行うパイプライン内部の追加プログラマブル素子を機能させるように修正され、対応する画像の中心窩領域に対するパーティクルシステムによって発生する効果の場所に応じて、パーティクルのフルコンポーネントまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーション及び／またはレンダリングする等の中心窩レンダリングを行う。レンダリング画像のためのグラフィックスパイプライン９４００Ａは、ディスプレイ内の画素毎に対応する色情報を出力し、色情報は、テクスチャ及びシェーディング（例えば、色、シャドーイング等）を表し得る。グラフィックスパイプライン９４００Ａは、図１Ａのゲームコンソール１０６、図１ＢのＶＲコンテンツエンジン１２０、図２Ａ及び図２Ｂのクライアントデバイス１０６、及び／または図２Ｂのゲームタイトル処理エンジン２１１の内部で実施可能である。
【０１３７】
パーティクルシミュレーションはＣＰＵまたはＧＰＵ上で行われ得る。ほとんどの単純または小さなパーティクルシステムは、ＣＰＵ上で実行する。他方では、多数のパーティクルでのシミュレーションは、ＧＰＵ上で行われ得、その場合、ＧＰＵ上で行われるシミュレーションは、レンダリングが行われる前に、コンピュートシェーダまたはジオメトリシェーダにおいて行われる可能性が高い算出を含む。システム９４００Ａは、制限された量のパーティクルを有するパーティクルシステム（例えば、１０００未満のパーティクルを有する小さなパーティクルシステム）上でパーティクルシミュレーションを行うように構成される。システム９４００は、頂点データを処理することを含む中心窩レンダリングを行い、頂点をプリミティブ（例えば、多角形）に集め、ラスタ化を行い、ディスプレイに対してプリミティブからフラグメントを生成させ、次に、フラグメント毎に色及び深度値を算出し、表示するために、フレームバッファに記憶するための画素毎にフラグメントを混ぜるように構成される、プログラムプロセッサ９４０１及びプログラムプロセッサ９４０２を含む。プロセッサ９４０１によって行われる動作は、ＣＰＵまたはＧＰＵのいずれかで行われ得る。プログラムシェーダ９４０２によって行われる動作は、概して、良好な性能及び効率になるように、ＧＰＵ内での実行により適している。
【０１３８】
示されるように、システム９４００Ａのグラフィックスパイプラインは、入力ジオメトリ９４０５を受信する。例えば、入力ジオメトリ９４０５は、３Ｄゲーム世界内の頂点と、頂点のそれぞれに対応する情報とを含み得る。頂点によって画定される多角形（例えば、三角形）を使用してゲーム世界内の所与のオブジェクトを表すことができ、次に、対応する多角形の表面は、グラフィックスパイプライン９４００Ａによって処理され、最終効果（例えば、色、テクスチャ等）を達成する。頂点属性は、法線（例えば、その方向は頂点に対して直角である）、色（例えば、ＲＧＢ―赤、緑、及び青の３色の組等）、及びテクスチャ座標／マッピング情報を含み得る。説明しやすくするために、３Ｄゲーム世界に関する入力ジオメトリはプロセッサ９４０１に入力されるように示されるが、また、ジオメトリは、パーティクルシステムに関するジオメトリがプロセッサ９４０１に入力されるように、及び残りのジオメトリがプロセッサ９４０２の頂点シェーダ９４１０に入力されるように分割され得る。例えば、入力ジオメトリは、プロセッサ９４０１とプロセッサ９４０２との間で共有されることができる頂点バッファに入力され得る。
【０１３９】
具体的には、プログラムプロセッサ９４０１は、位置、質量、及びパーティクルの速さ、ならびにパーティクルに印加される様々な力（例えば、重力等の外力、パーティクル間の相互作用を表す内力）に応じてフレーム毎に、パーティクルシミュレーションを行う（例えば、パーティクル運動を計算する等）。概して、第１のフレームから後続のフレームまで、プロセッサ９４０１は、パーティクル位置を初期化し、パーティクル位置を更新するような動作を行う。具体的には、レンダリングされたフレーム毎に、各パーティクルのシミュレーションは、別々の時間ステップで（例えば、フレーム毎に）更新される（例えば、位置、配向、速さ等が更新される）。図７Ａに示されるように、プロセッサ９４０１は、ＧＰＵ構成内部で実装され、パーティクルシステムシミュレーションを行うようにプログラムされ得る。具体的には、パーティクルシミュレーションは、ＧＰＵのコンピュートシェーダまたはジオメトリシェーダによって行われ得る。例えば、コンピュートシェーダまたはジオメトリシェーダ９４０６は、パーティクルシミュレーションを行うパーティクルシミュレーションモジュール９４０７を含み得る。シェーダ９４０６の出力は、パーティクルシステムのプリミティブ（例えば、多角形）を含み得る。ＧＰＵ構成の内部で実施されるものとして、残りのコンポーネント（例えば、出力統合及びフレームバッファを含むラスタライザ、フラグメントシェーダ、及びレンダリング）は使用されていなく、それにより、次に、シェーダ９４０６からの出力は、送達され及び／またはプロセッサ９４０２と共有され、レンダリングを含むより従来的なＧＰＵ動作を行う。当然ながら、ＣＰＵ実施態様では、プロセッサ９４０１は、シェーダ９４０６及びパーティクルシミュレーションモジュール９４０７だけを含むように、簡略化され得る。
【０１４０】
パーティクルは、ＧＰＵ構成の内部で実施されるように、プロセッサ９４０２を使用して描かれる。具体的には、シミュレーション結果が頂点バッファに記憶され、次に、シミュレーション結果がプロセッサ９４０２（例えば、頂点シェーダ）に入力される。頂点バッファの値は、図７Ａに示されるシステム９４００Ａのグラフィックスパイプラインのステージ間で共有されることができる。より具体的には、前述に説明したように、頂点シェーダ９４１０は、入力ジオメトリ９４０５を直接且つプロセッサ９４０１から受信し、３Ｄシーン内でオブジェクトを構成する多角形またはプリミティブを作る。頂点シェーダ９４１０は、さらに、プロセッサ９４０１によって完了されない場合、シミュレート済みのパーティクルシステムにプリミティブを作り得る。すなわち、頂点シェーダ９４１０は、オブジェクトがゲーム世界内にセットされるとき、プリミティブを使用してオブジェクトを作り上げる。例えば、頂点シェーダ９４１０は、シーンのライティングに応じて、多角形に関するライティング計算及びシャドーイング計算を行うように構成され得る。プリミティブは、頂点シェーダ９４１０によって出力され、グラフィックスパイプライン９４００Ａの次のステージに送達される。また、クリッピング（例えば、ゲーム世界内の視点によって定義されるようなビューフラスタムの外側にあるプリミティブを識別及び無視する）等の追加動作は、頂点シェーダ９４１０によって行われ得る。
【０１４１】
本発明の実施形態では、プロセッサ９４０２は、パーティクルシステムによって発生する効果が中心窩領域内に表示されるとき、パーティクルのサブシステムをレンダリングすることを含む、効率的な方式でパーティクルシステムをレンダリングすることを含む、中心窩レンダリングを行うように構成される。具体的には、頂点シェーダ９４１０の中心窩頂点判定部９４１２は、パーティクル、すなわちパーティクルの頂点が中心窩領域の内側または外側にあるかを判定するように構成され得る。
【０１４２】
パーティクルまたはそのコンポーネントが周辺領域内にあるとき、頂点シェーダ９４１０は、頂点を破棄するかどうかを判定する、または、頂点が、グラフィックスパイプラインによって（ラスタライザ／フラグメントシェーダ等によって）前進することを可能にするように構成される。様々な技術は、パーティクルのシステムからどのパーティクルを破棄することを判定するために実施され得る。概して、頂点シェーダ９４１０は、レンダリングするためのパーティクルシステム内部のパーティクルを選択し得る。例えば、ランダム選択、最近隣選択、類似度選択等を含む選択は、様々な技術によって行われ得る。一実施形態では、インデックス化リスト９４１５は、パーティクルまたはパーティクルのコンポーネントはレンダリングまたは破棄されるかどうかを判定するために使用される。インデックスでオブジェクトを描くことは周知の当技術分野であり、算出複雑度を減らす（例えば、オブジェクト内の同じ頂点の重複を減らす）ために使用される。簡潔に説明するために、インデックス生成部９４１３は、（例えば、インデックスバッファを使用して）インデックスを作成するように構成され、パーティクル及びそのコンポーネント（例えば、プリミティブ、頂点等）は、インデックス内の１つ以上のインデックスに関連付けられる。例えば、インデックスバッファはインデックスの配列を含み、インデックスは、頂点バッファの頂点の場所に一致する。したがって、その関連の多角形毎に同じ頂点を重複させる代わりに、頂点バッファの１つ場所にマッピングする単一のインデックスを使用することができる。さらに、パーティクルセレクタ９４１４は、様々な選択技術（例えば、ランダム選択、最近隣選択、類似度選択等）によって、選択されたインデックスのリスト９４１５を生成すること等によって、パーティクルを選択するように構成される。パーティクルの選択されたインデックス及び／またはコンポーネントは、リスト内に記憶される、減らされたセット（例えば、パーティクルのサブシステム）を形成する選択されたサンプルである。したがって、頂点が中心窩の外側にあるとき、当該頂点は、その関連インデックスが「描画リスト」（例えば、リスト９４１５内に含まれる）に含有されるかを見るために確認され得る。頂点が、（例えば、リスト９４１５内に記憶されたような）選択されたインデックスに関連付けられない場合、当該頂点を破棄し、パイプライン内の残りのシェーダによってレンダリングされない。他方では、頂点がリスト９４１５内のインデックスに関連付けられる場合（例えば、リスト内に含まれるように選択される場合）、当該頂点は、レンダリングするために、パイプラインによって前進する。その後、パーティクルシステムに関連する頂点シェーダ９４１０によって出力されるパーティクルのフルコンポーネントまたはパーティクルのサブシステムであろうとなかろうと、残りの動作は一般的な様式で動作する。
【０１４３】
パーティクルの視覚特性を修正し、所望の知覚継続性を維持する。例えば、暗化及びスケーリングモジュール９４１６は、パーティクルシステムのコンポーネントの属性を修正するように構成される。具体的には、暗化及びスケーリングは頂点シェーダで行われ、それにより、フラグメントシェーダへの入力は、パーティクルシステムの非中心窩レンダリング（例えば、パーティクルのサブシステムのレンダリング）に合わせて調節される。当該方式では、中心窩フラグメントシェーダ９４３０の出力に対するさらなる調節は、周辺領域内におけるパーティクルシステムに対する適切なレンダリングに必要ではない。他の視覚特性は、同様に、色、アルファ値、材料等の所望の知覚継続性を維持するために修正され得る。
【０１４４】
具体的には、スケーリング属性に関して、頂点シェーダ９４１０からの出力は、より大きいサイズに修正され得る。例えば、点スプライトを使用する場合、出力点サイズをある倍数だけ大きくなるようにスケーリングされ得る。倍数はいくつかの方法で判定され得る。例えば、倍数は、パーティクルの合計数と比較して、サブシステムにおけるパーティクルの数に関連する縮小率であり得る。別の実施態様では、パーティクルシステムが、インスタンス化されたジオメトリを使用して（例えば、繰り返しのジオメトリ、プリミティブ等を使用して作られたオブジェクトを作成するために、メッシュのコピーのパラメータ変動がある単一のメッシュの複数のコピーをレンダリングする）説明される場合、インスタンス化されたメッシュは、ある倍数だけ、より大きくスケーリングされる。スケーリングは、パーティクルシステムのパーティクルのフルコンポーネントをレンダリングするときのように、パーティクルのサブシステムを処理するとき、同様に寸法効果を生じさせるために行われる。
【０１４５】
パーティクル及びパーティクルのコンポーネントの暗化は、パーティクルシステムのパーティクルのフルコンポーネントをレンダリングするときのように、パーティクルのサブシステムを処理するとき、同様に色彩効果を生じさせる（すなわち、所望の知覚継続性を維持する）ために行われる。一実施態様では、パーティクルのコンポーネントのアルファ値は、パーティクルのサブシステムの各パーティクルを暗くするために調節される。例えば、アルファ値は、パーティクルをより大きくさせる（例えば、スケーリングさせる）とき、効果（例えば、煙）の不透明度を増加させるために調節される。さらに他の視覚特性（例えば、材料等）は、同様に、所望の知覚継続性を維持するために修正され得る。
【０１４６】
頂点プロセッサ９４１０によって出力されるプリミティブはラスタライザ９４２０にフィードされ、ラスタライザ９４２０は、シーン内のオブジェクトを、３Ｄゲーム世界内の視点（例えば、カメラ場所、ユーザの眼の位置等）によって定義される２次元（２Ｄ）の画像平面に投影するように構成される。これらのプリミティブは、パーティクルシステムによって発生する効果が周辺領域内にあるとき、（例えば、パーティクルのフルコンポーネントの代わりに）パーティクルのサブシステムを含む。一実施形態では、効果の少なくとも一部が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングする。別の実施形態では、パーティクルシステムをより低解像度でレンダリングするために、効果全体が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングする。また、プリミティブは、パーティクルシステムをより高解像度でレンダリングするために、パーティクルシステムによって発生する効果が中心窩領域内にあるとき、パーティクルのフルシステムを含み得る。
【０１４７】
単純化レベルにおいて、ラスタライザ９４２０は各プリミティブを確認して、対応するプリミティブによってどの画素が影響を受けるかを判定する。具体的には、ラスタライザ９４２０はプリミティブを画素サイズフラグメントに分割し、各フラグメントは、ディスプレイの内部、及び／または視点（例えば、カメラビュー）をレンダリングすることに関連付けられる基準面の内部の画素に対応する。１つ以上のフラグメントが、画像を表示するとき、対応する画素の色に寄与し得ることに留意することが重要である。また、視点に対する、クリッピング（ビューフラスタムの外側にあるフラグメントを識別及び無視する）と、カリング（より近いオブジェクトによって塞がれたフラグメントを無視する）等の追加動作は、ラスタライザ９４２０によって行われ得る。
【０１４８】
中心窩フラグメントプロセッサ９４３０は、そのコアにおいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントプロセッサ９４３０は、フラグメント毎に、深度、色、法線、及びテクスチャ座標（例えば、テクスチャ細部）を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントプロセッサ９４３０は、色及び他の属性（例えば、視点からの距離に関するｚ深度、及び透明度に関するアルファ値）を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ９４３０は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、フラグメントプロセッサ９４３０は、フラグメント毎に、シャドーイング効果を適用し得る。
【０１４９】
より具体的には、中心窩フラグメントシェーダ９４３０は、フラグメントが中心窩領域または周辺領域の内部にあるかどうかに基づいて、上記に説明したようなシェーディング動作を行う。表示される画像の中心窩領域内部に位置するフラグメントは、中心窩領域内部のフラグメントに関する詳細なテクスチャ及び明度を達成するために処理効率を考慮せず、高解像度におけるシェーディング動作を使用して処理される。他方では、中心窩フラグメントプロセッサ９４３０は、移動及び十分なコントラスト等を提供する最小の動作で十分に詳細にフラグメントを処理するために処理効率に着目し、周辺領域内部に位置するフラグメント上でシェーディング動作を行う。
【０１５０】
例えば、本発明の実施形態では、パーティクルシステムのフラグメントは、フラグメントが中心窩領域の内側または外側にある（例えば、中心窩領域の内側または外側の画素に寄与する）かどうかに応じて、異なるようにレンダリングされる。頂点シェーダ９４１０が、事前に、パーティクル及び／またはそのコンポーネントジオメトリが、中心窩領域の内側または外側に位置するかどうかを判定し、適宜、そのコンポーネントジオメトリをフィルタリング（例えば、パーティクルシステムによって発生する効果が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングするために、インデックス化された頂点を算出する）したため、頂点シェーダ９４１０の出力は、適切なプリミティブをグラフィックスパイプラインの残りのコンポーネント（例えば、ラスタライザ９４２０及び中心窩フラグメントシェーダ９４３０等を含む）に提供するために既に位置付けられている。プログラマブルシェーダ９４０２のグラフィックスパイプラインの残りのコンポーネントは、パーティクルシステムによって発生する効果が中心窩領域内にあるとき、パーティクルシステムにおけるパーティクルのフルコンポーネントをレンダリングするように構成される。また、プログラマブルシェーダ９４０２のグラフィックスパイプラインの残りのコンポーネントは、効果が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングするように構成される。
【０１５１】
フラグメントシェーダ９４３０の出力は、処理されたフラグメント（例えば、テクスチャ及びシェーディング情報）を含み、グラフィックスパイプライン９４００Ａの次のステージに送達される。
【０１５２】
出力統合コンポーネント９４４０は、対応する画素のそれぞれに寄与する及び／またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、３Ｄゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイの２Ｄ色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン９４００Ａの次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント９４４０は、フラグメント間の値及び／またはフラグメントシェーダ９４３０から判定された画素の選定的混合を行い得る。
【０１５３】
ディスプレイ９４５５内の画素毎の明度は、フレームバッファ９４５０内に記憶される。これらの値は、シーンの対応する画像を表示するとき、対応する画素に対して走査される。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、もしくは右から左に、上から下に、もしくは下から上に、または任意の他のパターンで、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
【０１５４】
図７Ｂは、本開示の一実施形態による、大量のパーティクル（例えば、１０００を超えるもの）のパーティクルシステムシミュレーションを含む中心窩レンダリングを行うように構成され、パーティクルシステムの描画効果が中心窩領域または周辺領域の内部に位置するかどうかに応じて、パーティクルクラスタリング及びパーティクル集合によって生成されるパーティクルの全システムまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーションし、次に、レンダリングすることの両方を行う、グラフィックスパイプラインを実施するグラフィックスプロセッサを示す。グラフィックスパイプライン９４００Ｂは、３Ｄ（３次元）多角形レンダリングプロセスを使用して画像をレンダリングするための全体的プロセスを示しているが、中心窩レンダリングを行うパイプライン内部の追加プログラマブル素子を機能させるように修正され、対応する画像の中心窩領域に対するパーティクルシステムによって発生する効果の場所に応じて、パーティクルのフルコンポーネントまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーション及び／またはレンダリングする等の中心窩レンダリングを行う。レンダリング画像のためのグラフィックスパイプライン９４００Ｂは、ディスプレイ内の画素毎に対応する色情報を出力し、色情報は、テクスチャ及びシェーディング（例えば、色、シャドーイング等）を表し得る。グラフィックスパイプライン９４００Ｂは、図１Ａのゲームコンソール１０６、図１ＢのＶＲコンテンツエンジン１２０、図２Ａ及び図２Ｂのクライアントデバイス１０６、及び／または図２Ｂのゲームタイトル処理エンジン２１１の内部で実施可能である。グラフィックスパイプライン９４００Ｂは、図７Ａのパイプライン９４００Ａと同様のコンポーネントを含有し得、同様の参照番号は同一の部分または対応する部分を指す。
【０１５５】
図７Ｂに示されるように、パーティクルシミュレーションがＣＰＵまたはＧＰＵ上で行われ得るが、一実施形態では、パーティクルシステムにおけるより大きい数のパーティクルに起因して大量の並行処理が行われるため、パーティクルシミュレーションはＧＰＵ上で行われる。パイプライン９４００Ｂは、大量のパーティクル（例えば、１０００よりも大きいパーティクル）を有するパーティクルシステム上のパーティクルシミュレーションを行うように構成され、頂点データを処理すること等の従来のレンダリング処理を行い、頂点をプリミティブ（例えば、多角形）に集め、ラスタ化を行い、ディスプレイに対してプリミティブからフラグメントを生成させ、次に、フラグメント毎に色及び深度値を算出し、表示するために、フレームバッファに記憶するための画素毎にフラグメントを混ぜるように構成される、プログラムプロセッサ９４０３及びプログラムプロセッサ９４０４を含む。
【０１５６】
示されるように、グラフィックスパイプライン９４００Ｂは、前述に紹介したように、３Ｄゲーム世界内の頂点と、頂点のそれぞれに対応する情報とを含む入力ジオメトリ９４０５を受信する。頂点によって画定される多角形（例えば、三角形）を使用して３Ｄ世界内のオブジェクトを表し、次に、対応する多角形の表面は、グラフィックスパイプライン９４００Ｂによって処理され、最終効果（例えば、色、テクスチャ等）を達成する。一実施形態では、入力ジオメトリ９４０５は、パーティクルのシステムを含む。他の実施形態では、パーティクルシステムは、パーティクルシステム生成部９４６１等を使用して、グラフィックスパイプライン９４００Ｂ内の内部に生成される。頂点属性は、法線（例えば、その方向は頂点に対して直角である）、色（例えば、ＲＧＢ―赤、緑、及び青の３色の組等）、及びテクスチャ座標／マッピング情報を含み得る。入力ジオメトリはプログラムプロセッサ９４０３に入力され、より具体的には、パーティクル減少及びパーティクルシミュレーションを行うように構成されるシェーダ９４６０（例えば、コンピュートシェーダまたはジオメトリシェーダ）に入力される。概して、入力ジオメトリは、プロセッサ９４０３とプロセッサ９４０４との間で共有されることができる頂点バッファ内に置かれ得る。
【０１５７】
レンダリングする前にシミュレーションが行われるため、パーティクルカウントは、シミュレーションのために減り得る。パーティクルカウント及びパーティクルシミュレーションの減少は、コンピュートシェーダまたはジオメトリシェーダ９４６０によって行われ得る。一実施形態では、（例えば、パーティクルのサブシステムを生成するための）パーティクルカウントの減少は、パーティクルシステム全体が中心窩の外側にあるとき（例えば、周辺領域内に表示されるとき）に行われる。頂点シェーダ９４６０の内部でのシミュレーション前に、減少を行う。具体的には、中心窩頂点判定部９４６２は、パーティクルシステムが中心窩領域の内側または外側にあるかを判定するように構成される。これは、パーティクルシステム全体が中心窩の外側にあるかを確認するために、パーティクルシステムに関する境界ボックスを画定することによって行われ得る。例えば、境界ボックスコンパレータ９４６３は、パーティクルシステムが周辺領域内に位置するかを判定するように構成される。
【０１５８】
パーティクルシステムが中心窩領域の外側にあるとき、サブシステムパーティクル生成部９４７０は、シミュレーション前に、パーティクルカウントを減らすように構成される。具体的には、クラスタモジュール９４７２は、パーティクルをパーティクルの複数のクラスタにグループ化するように構成される。パーティクルのクラスタ毎に、アグリゲータモジュール９４７４はクラスタ内の全てのパーティクルを１つの集合パーティクルに集合させ、その状態では、ここで、パーティクルのクラスタは単一の集合パーティクルによって表される。したがって、クラスタの複数の集合パーティクルを含むパーティクルのサブシステムを生成する。クラスタ内のパーティクルの数は、パーティクルシステムにおけるパーティクルの合計数を標的数で除算することによって判定され得る。
【０１５９】
クラスタモジュール９４７２は、パーティクルシステムにおけるクラスタの標的数に対応する集合パーティクルの標的数を判定するように構成され得る。標的数は、パーティクルシステムをレンダリングするときに処理される集合パーティクルの合計数に対応する。パーティクルのサブシステム（例えば、集合パーティクル）に含まれるパーティクルシステムから選択されたパーティクルは、パーティクルシステムをクラスタリングすることから（例えば、クラスタの標的数から）判定され得る。一実施形態では、クラスタリングはパーティクル間の関連距離に基づいて行われる。例えば、集合（例えば、クラスタリング）に基づいて、この距離を達成するために、パーティクルの最適なクラスタリングを選ぶために最近隣検索またはＫ平均法クラスタリング技術を使用してクラスタを生成し、パーティクルの各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも１つの光源を含む。一実施形態では、閾値は、クラスタ内部のパーティクルの最長距離に設定される。クラスタエラーはクラスタ毎に判定され得、エラーはクラスタ内のパーティクル間の距離に基づくものである。選択されたクラスタは、最小量のクラスタエラーを有することによって、または、むしろ、複数のクラスタに関する複数のクラスタエラーを最小にすることによって判定される。
【０１６０】
アグリゲータモジュール９４７４は、パーティクルの各クラスタを取り、対応する集合パーティクルを生成する。集合パーティクルは、対応するクラスタ内のパーティクルに関する特徴の平均である特徴がある。例えば、集合パーティクルは、距離、色等の平均である特徴がある。具体的には、集合パーティクルは、クラスタ内のパーティクルの平均場所である新しい場所を含み得る。集合パーティクルは、対応するクラスタ内のパーティクルの質量を合計することによって判定される集合質量を有し得る。集合光源の新しい色は、クラスタ内のパーティクル毎の色の平均または加重和であり得る。限定ではないが、色、アルファ値、材料等を含む、さらに他の視覚特性が集合する。
【０１６１】
暗化及びスケーリングモジュール９４７５は、パーティクルシステムのコンポーネントの属性を修正するように構成される。暗化及びスケーリングはコンピュートシェーダまたはジオメトリシェーダ９４６０で行われ、それにより、非中心窩レンダリングを行うとき（例えば、パーティクルのサブシステムをレンダリングするとき）、パーティクルシステムに対するさらなる調整を行う必要はない。すなわち、パーティクルシステムに対する全ての調節は、シミュレーションステージの前に、パーティクルシステムの非中心窩処理のためにシェーダ９４６０において行われる。
【０１６２】
具体的には、スケーリング属性に関して、暗化及びスケーリングモジュール９４７５は、パーティクルのサブシステムにおける集合パーティクルのサイズを修正する（例えば、サイズを増加させる）。例えば、点スプライトを使用する場合、出力点サイズをある倍数だけ大きくなるようにスケーリングされ得る。倍数はいくつかの方法で判定され得る。例えば、前述に説明したように、倍数は、パーティクルの合計数と比較して、サブシステムにおけるパーティクルの数に関連する縮小率であり得る。別の実施態様では、パーティクルシステムが、インスタンス化されたジオメトリを使用して（例えば、メッシュのコピーのパラメータ変動がある単一のメッシュの複数のコピーをレンダリングする）説明される場合、インスタンス化されたメッシュは、ある倍数だけ大きくなるようにスケーリングされることができる。スケーリングは、パーティクルシステムのパーティクルのフルコンポーネントをレンダリングするときのように、パーティクルのサブシステムを処理するとき、同様に寸法効果を生じさせるために行われる。
【０１６３】
パーティクル及びパーティクルのコンポーネントの暗化は、パーティクルシステムのパーティクルのフルコンポーネントをレンダリングするときのように、パーティクルのサブシステムを処理するとき、同様に色彩効果を生じさせるために行われる。一実施態様では、集合パーティクルのコンポーネントのアルファ値は、パーティクルのサブシステムの各パーティクルを暗くするために調節される。例えば、アルファ値は、パーティクルをより大きくさせる（例えば、スケーリングさせる）とき、効果（例えば、煙）の不透明度を増加させるために調節される。さらに他の視覚特性（例えば、材料等）は、同様に、所望の知覚継続性を維持するために修正され得る。
【０１６４】
暗化及びスケーリングモジュール９４７５の出力は、既に、パーティクルシステムの非中心窩処理に合わせて調節される。パーティクルシステムに対するさらなる減少またはパーティクルシステムに対する調節は、周辺領域内にあるパーティクルシステムをレンダリングするような必要はない。
【０１６５】
パーティクルシミュレーションモジュール９４７７は、位置、質量、及びパーティクルの速さ、ならびにパーティクルに印加される様々な力（例えば、重力等の外力、静電気等、及びパーティクル間の相互作用を表す内力）に応じてフレーム毎に、パーティクルシミュレーションを行う（例えば、パーティクル運動を計算する等）。概して、第１のフレームから後続のフレームまで、パーティクル位置を初期化し、パーティクル位置を更新するような動作を行う。
【０１６６】
コンピュートシェーダまたはジオメトリシェーダ９４６０の出力は、パーティクルシステムの非中心窩処理に合わせて調節される。パーティクルシステムに対するさらなる減少またはパーティクルシステムに対する調節は、周辺領域内にあるパーティクルシステムをレンダリングするような必要はない。シェーダ９４６０の出力は、パーティクルシステムのプリミティブ（例えば、多角形）を含み得る。例えば、出力が頂点バッファ内に記憶され得、次に、その出力がプログラマブルプロセッサ９４０４（例えば、頂点シェーダ９４１０’）に入力される。すなわち、頂点バッファの値は、図７Ｂに示されるようなグラフィックスパイプライン９４００Ｂのステージ間で共有され得る。ＧＰＵ構成の内部で実施されるものとして、残りのコンポーネント（例えば、出力統合及びフレームバッファを含むラスタライザ、フラグメントシェーダ、及びレンダリング）は使用されていなく、それにより、次に、シェーダ９４６０からの出力は、送達され及び／またはプロセッサ９４０４と共有され、レンダリングを含むより従来的なＧＰＵ動作を行う。
【０１６７】
より具体的には、前述に説明したように、頂点シェーダ９４１０’は、入力ジオメトリ９４０５を直接及び／またはプロセッサ９４０３から受信し、３Ｄシーン内でオブジェクトを構成する多角形またはプリミティブを作る。頂点シェーダ９４１０’は、さらに、プロセッサ９４０３によって完了されない場合、シミュレート済みのパーティクルシステムにプリミティブを作り得る。すなわち、頂点シェーダ９４１０’は、オブジェクトがゲーム世界内にセットされるとき、プリミティブを使用してオブジェクトを作り上げる。例えば、頂点シェーダ９４１０’は、シーンのライティングに応じて、多角形に関するライティング計算及びシャドーイング計算を行うように構成され得る。プリミティブは、頂点シェーダ９４１０’によって出力され、グラフィックスパイプライン９４００Ｂの次のステージに送達される。また、クリッピング（例えば、ゲーム世界内の視点によって定義されるようなビューフラスタムの外側にあるプリミティブを識別及び無視する）等の追加動作は、頂点シェーダ９４１０’によって行われ得る。
【０１６８】
頂点プロセッサ９４１０’によって出力されるプリミティブはラスタライザ９４２０にフィードされ、ラスタライザ９４２０は、シーン内のオブジェクトを、３Ｄゲーム世界内の視点（例えば、カメラ場所、ユーザの眼の位置等）によって定義される２次元（２Ｄ）の画像平面に投影するように構成される。これらのプリミティブは、コンピュートシェーダ９４０３によって前述に行われたように、パーティクルシステムによって発生する効果が周辺領域内にあるとき、（例えば、パーティクルのフルコンポーネントの代わりに）パーティクルのサブシステムを含む。また、プリミティブは、パーティクルシステムをより高解像度でレンダリングするために、パーティクルシステムによって発生する効果が中心窩領域内にあるとき、パーティクルのフルシステムを含み得る。
【０１６９】
前述に説明したように、ラスタライザ９４２０は各プリミティブを確認して、対応するプリミティブによってどの画素が影響を受けるかを判定する。具体的には、ラスタライザ９４２０はプリミティブを画素サイズフラグメントに分割し、各フラグメントは、ディスプレイの内部、及び／または視点（例えば、カメラビュー）をレンダリングすることに関連付けられる基準面の内部の画素に対応する。１つ以上のフラグメントが、画像を表示するとき、対応する画素の色に寄与し得る。
【０１７０】
中心窩フラグメントシェーダ９４３０は、そのコアにおいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントシェーダ９４３０は、フラグメント毎に、深度、色、法線、及びテクスチャ座標（例えば、テクスチャ細部）を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントシェーダ９４３０は、色及び他の属性（例えば、視点からの距離に関するｚ深度、及び透明度に関するアルファ値）を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ９４３０は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、フラグメントシェーダ９４３０は、フラグメント毎に、シャドーイング効果を適用し得る。フラグメントシェーダ９４３０の出力は、処理されたフラグメント（例えば、テクスチャ及びシェーディング情報）を含み、グラフィックスパイプライン９４００の次のステージに送達される。パーティクルシステムを小さくするべきであるとき、頂点シェーダ９４６０が事前に判定されたので、中心窩フラグメントシェーダ９４３０への入力は既に、パーティクルシステムが周辺領域内にあるとき、適切にクラスタリング及び集合している。すなわち、パーティクルシステムのフラグメントは、フラグメントが中心窩領域の内側または外側にあるかどうかに応じて、異なるようにレンダリングされる。したがって、プログラマブルシェーダ９４０４のグラフィックスパイプラインの残りのコンポーネントは、パーティクルシステムによって発生する効果が中心窩領域内にあるとき、パーティクルシステムにおけるパーティクルのフルコンポーネントをレンダリングするように構成される。また、プログラマブルシェーダ９４０４のグラフィックスパイプラインの残りのコンポーネントは、効果が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングするように構成される。
【０１７１】
出力統合コンポーネント９４４０は、対応する画素のそれぞれに寄与する及び／またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、３Ｄゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイの２Ｄ色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン９４００Ｂの次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント９４４０は、フラグメント間の値及び／またはフラグメントシェーダ９４３０から判定された画素の選定的混合を行い得る。
【０１７２】
ディスプレイ９４５５内の画素毎の明度は、フレームバッファ９４５０内に記憶される。これらの値は、シーンの対応する画像を表示するとき、対応する画素に対して走査される。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、もしくは右から左に、上から下に、もしくは下から上に、または任意の他のパターンで、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
【０１７３】
加えて、図７Ａ及び図７Ｂのシステム及びグラフパイプラインに関して、非中心窩レンダリングのために、追加方法を実施し得る。一実施形態では、周辺領域内に位置するパーティクルシステムは、本システムが中心窩領域内に位置する場合よりも少ない頻度で更新され得る。例えば、パーティクルシステムシミュレーションによってシミュレートされたクロスアニメーションは、より小さいフレーム毎秒で実行され得る。別の実施形態では、メッシュによって表されるパーティクルシステムは、周辺領域内に位置するとき、低密度のメッシュを使用して生成及び／またはレンダリングされ得る。例えば、中心窩領域の外側に位置するとき、低密度メッシュを使用して水を表し得る。
【０１７４】
ネットワークを通して通信するゲームサーバ及びクライアントデバイスの様々なモジュールの詳細な説明によって、図８のフロー図９５００は、本開示の一実施形態による、大量のパーティクル（例えば、１０００を超えるもの）のシミュレーションを含む中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施し、パーティクルシステムの描画効果が中心窩領域または周辺領域の内部に位置するかどうかに応じて、パーティクルクラスタリング及びパーティクル集合によって生成されるパーティクルの全システムまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーションし、次に、レンダリングすることの両方を行うような方法を開示している。図８の方法が、特に、多数のパーティクルでのパーティクルシミュレーションに適しているが、一実施形態では、本方法は、また、パーティクルのより小さい数（例えば、１０００未満）で、パーティクルシミュレーションに適切である。前述に説明したように、フロー図９５００は、画像をレンダリングするとき、クライアントデバイスまたはクラウドベースゲームシステムの内部で実施される。一実施態様では、クライアントデバイスはゲーム機（また、ゲームコンソールと称される）である。
【０１７５】
９５１０において、本方法はパーティクルのシステムを生成することを含み、パーティクルのシステムは、仮想シーンで効果（例えば、表示される３Ｄゲーム世界の画像）を発生させる。パーティクルのシステムは、複数のパーティクルジオメトリ（例えば、頂点、多角形、三角形等）を含む。具体的には、パーティクルに関する複数の頂点は、グラフィックスパイプラインに対する入力である。複数のパーティクルジオメトリ（例えば、多角形）は、ジオメトリから生成する。パーティクルのシステムが制限されるため、パーティクルのフルコンポーネントを使用して、シミュレーションを行う。すなわち、パーティクルジオメトリを使用して、効果をシミュレートする。
【０１７６】
しかしながら、効果が周辺領域内に位置するとき、パーティクルのシステムはレンダリングされる。具体的には、９５３０において、本方法は、仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く（例えば、想定または追跡される）場所に対応し得る。中心窩領域は、最高解像度で表面をレンダリングすることに関連付けられ得る（パーティクルのフルコンポーネントを使用して、及び周辺領域内にあるときパーティクルのサブシステムを使用して、パーティクルシステムをレンダリングすることに関連付けられる）。例えば、図４Ｂの中心窩判定部４６２は、９５３０の動作を行うように構成され得る。
【０１７７】
９５４０において、本方法は、効果の少なくとも一部が、画像の周辺領域内に位置していることを判定することを含む。例えば、少なくとも１つのパーティクルまたはパーティクルジオメトリ（例えば、多角形、フラグメント等）は、周辺領域内にあるように判定され得る。具体的には、９５４２において、本方法は、パーティクルのシステムの境界ボックスを画定することを含む。９５４４において、本方法は、境界ボックスが中心窩領域の外側にあるとき（すなわち、周辺領域の内側にあるとき）、パーティクルのシステムが周辺領域内にあることを判定することを含む。
【０１７８】
その場合、本方法は、９５２０において、パーティクルのシステムからパーティクルのサブシステムを判定することを含む。パーティクルのサブシステムは、パーティクルのシステムに関する複数のパーティクルジオメトリに基づくパーティクルジオメトリのサブセットを含む。例えば、図４Ｂのサブシステムパーティクル生成部４７０は、パーティクルの減少を行うように構成される。具体的には、図４Ｂに関して前述に説明したように、９５２５において、パーティクルの複数のクラスタを生成することによって、減少を行う。具体的には、９５２６において、クラスタのそれぞれは、対応する集合パーティクルによって表され、パーティクルのサブシステムは集合パーティクルを含み、集合パーティクルを使用して作られる。例えば、集合パーティクルは、対応するクラスタ内のパーティクルに関する特徴の平均である特徴がある。すなわち、集合パーティクルは、距離、色等の平均である特徴がある。具体的には、集合パーティクルは、クラスタ内のパーティクルの平均場所である新しい場所を含み得る。集合パーティクルは、対応するクラスタ内のパーティクルの質量を合計することによって判定される集合質量を有し得る。集合光源の新しい色は、クラスタ内のパーティクル毎の色の平均または加重和であり得る。限定ではないが、色、アルファ値、材料等を含む、さらに他の視覚特性が集合する。
【０１７９】
加えて、本方法は、前述に説明したように、パーティクルのサブシステムに対応する縮小率に基づいて、パーティクルのサブシステムのそれぞれのサイズを拡大することを含み得る。さらに、前述に説明したように、パーティクルのサブシステム毎の色は、例えば、修正されたアルファ値を適用することによって、縮小率に基づいて暗くなり得る。さらに他の視覚特性（例えば、材料等）は、所望の知覚継続性を維持するために修正され得る。
【０１８０】
この時点では、パーティクルのシステムは、シミュレーション及びレンダリングのために減少する。さらなる減少は周辺領域内のパーティクルシステムに適応する必要はない。したがって、中心窩領域内のパーティクルシステムは、パーティクルのフルコンポーネントを使用して、シミュレート及びレンダリングされる。また、効果の少なくとも一部が周辺領域内にあることが判定されたとき、９５５０において、本方法は、グラフィックスパイプラインの残りのステージによって、パーティクルのサブシステムに対応するパーティクルジオメトリのサブセットをレンダリングすることを含む。
【０１８１】
図９は、本開示の一実施形態による、画像の効果をシミュレートするために使用されるパーティクルのシステム９６１０からパーティクルのサブシステム９６２０を生成する例証図である。パーティクルシステムは、火、煙、ロケット排気、水、魔法等のいくつかの種類の物理的効果及び非物理的効果を生じるために使用されることができる。示されるように、パーティクルのシステム９６１０は、複数のパーティクルを含む。例えば、小型システムは最大約１０００パーティクルを含み得る一方、大型システムは１０００を超えるパーティクル（例えば、数百万）を含み得る。前述に説明したように、パーティクルのシステムは、パーティクルシステムによって発生する効果が画像の中心窩領域の内側または外側に表示されるかどうかに応じて、異なるようにシミュレート及び／またはレンダリングされる。具体的には、効果が周辺領域内にあるとき、パーティクルのサブシステム９６１０はシミュレート及び／またはレンダリングされる。示されるように、パーティクルのサブシステム９６１０は、減少した数のパーティクルを有する。例えば、パーティクルのサブシステム９６１０は、ランダム選択（例えば、インデックスのランダム選択）によって、またはクラスタリング及び集合によって減少し得る。したがって、パーティクルのサブシステムをシミュレート及び／またはレンダリングすることによって、対応する画像の周辺領域内のパーティクルシステムによって生じる効果をレンダリングするために必要な算出を少なくする。
【０１８２】
一実施形態では、コンピュータシステムはプロセッサ及びメモリを含み、メモリは、プロセッサに結合され、コンピュータシステムによって実行される場合、コンピュータシステムに、グラフィックスパイプラインを実施するための方法を実行させる命令をメモリ内に記憶する。本方法は、仮想シーンで効果を生じるパーティクルのシステムを生成することを含み、パーティクルのシステムは複数のパーティクルジオメトリを含む。本方法は、さらに、パーティクルのシステムからパーティクルのサブシステムを判定することを含み、パーティクルのサブシステムは複数のパーティクルジオメトリから取られたパーティクルジオメトリのサブセットを含む。本方法は、さらに、仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く場所に対応する。本方法は、さらに、効果の少なくとも一部が、画像の周辺領域内に位置していることを判定することを含む。本方法は、さらに、パーティクルのサブシステムをレンダリングし、効果を生じさせることを含む。
【０１８３】
別の実施形態では、コンピュータシステムによって実行される方法においてパーティクルのサブシステムを判定することは、複数のパーティクル頂点をグラフィックスパイプラインに入力することを含む。本方法でパーティクルのサブシステムを判定することは、さらに、複数のパーティクルジオメトリを複数のパーティクル頂点から生成することを含む。本方法でパーティクルのサブシステムを判定することは、さらに、複数のパーティクルジオメトリを使用して、効果をシミュレートすることを含む。本方法でパーティクルのサブシステムを判定することは、さらに、複数のパーティクルをサンプリングし、パーティクルのサブシステムを生成することを含む。本方法でパーティクルのサブシステムを判定することは、さらに、パーティクルのサブシステムに対応するパーティクルジオメトリのサブセットをレンダリングすることを含む。
【０１８４】
別の実施形態では、本方法は、さらに、複数のパーティクルジオメトリの頂点をインデックス化することを含む。本方法では、複数のパーティクルをサンプリングすることは、さらに、レンダリングされるパーティクルジオメトリのサブセットを含む描画リストを生成することを含む。本方法では、パーティクルジオメトリのサブセットをレンダリングすることは、さらに、頂点が描画リストのインデックスに関連付けられるとき、第１のパーティクルジオメトリの頂点をレンダリングすることを含む。
【０１８５】
別の実施形態では、本方法は、さらに、サブセットに対応する縮小率に基づいて、パーティクルのサブシステムのそれぞれのサイズを拡大することを含む。本方法は、さらに、パーティクルの視覚特性を修正し、所望の知覚継続性を維持することを含む。
【０１８６】
別の実施形態では、本方法でパーティクルのサブシステムを判定することは、さらに、パーティクルのシステムの少なくとも１つのパーティクルが周辺領域内にあることを判定することを含む。本方法でパーティクルのサブシステムを判定することは、さらに、パーティクルの複数のクラスタをパーティクルのシステムから生成することを含み、クラスタのそれぞれは、対応する集合パーティクルによって表され、パーティクルのサブシステムは集合パーティクルを含む。本方法でパーティクルのサブシステムを判定することは、さらに、パーティクルのサブシステムを使用して、効果をシミュレートすることを含む。
【０１８７】
別の実施形態では、本方法は、さらに、パーティクルのシステムに関する境界ボックスを画定することを含む。本方法は、さらに、境界ボックスが周辺領域内にあることを判定することを含む。
【０１８８】
別の実施形態では、本方法は、さらに、最近隣検索またはＫ平均法クラスタリング技術を使用して、パーティクルの複数のクラスタを生成することを含む。
【０１８９】
別の実施形態では、本方法は、さらに、パーティクルの対応するクラスタ内のパーティクルの場所を平均化することによって、対応する集合パーティクルの集合場所を判定することを含む。本方法は、さらに、パーティクルの対応するクラスタ内のパーティクルの質量を合計することによって、対応する集合パーティクルの集合質量を判定することを含む。本方法は、さらに、パーティクルのサブシステムに対応する縮小率に基づいて、対応する集合パーティクルのサイズをスケーリングすることを含む。本方法は、さらに、対応する集合パーティクルの集合視覚特性を判定することを含む。
【０１９０】
別の実施形態では、非一時的なコンピュータ可読媒体は、グラフィックスパイプラインを実施するためのコンピュータプログラムを記憶する。コンピュータ可読媒体は、仮想シーンで効果を生じるパーティクルのシステムを生成するためのプログラム命令を含み、パーティクルのシステムは複数のパーティクルジオメトリを含む。コンピュータ可読媒体は、さらに、パーティクルのシステムからパーティクルのサブシステムを判定するためのプログラム命令を含み、パーティクルのサブシステムは複数のパーティクルジオメトリから取られたパーティクルジオメトリのサブセットを含む。コンピュータ可読媒体は、さらに、仮想シーンの画像をレンダリングするとき、中心窩領域を判定するためのプログラム命令を含み、中心窩領域はユーザの注目が向く場所に対応する。コンピュータ可読媒体は、さらに、効果の少なくとも一部が、画像の周辺領域内に位置していることを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、パーティクルのサブシステムをレンダリングし、効果を生じさせるためのプログラム命令を含む。
【０１９１】
別の実施形態では、非一時的なコンピュータ可読媒体内に、パーティクルのサブシステムを判定するためのプログラム命令は、さらに、複数のパーティクル頂点をグラフィックスパイプラインに入力するためのプログラム命令を含む。パーティクルのサブシステムを判定するためのプログラム命令は、さらに、複数のパーティクルジオメトリを複数のパーティクル頂点から生成するためのプログラム命令を含む。パーティクルのサブシステムを判定するためのプログラム命令は、さらに、複数のパーティクルジオメトリを使用して、効果をシミュレートするためのプログラム命令を含む。パーティクルのサブシステムを判定するためのプログラム命令は、さらに、パーティクルのサブシステムを生成するために、複数のパーティクルをサンプリングするためのプログラム命令を含む。パーティクルのサブシステムを判定するためのプログラム命令は、さらに、パーティクルのサブシステムに対応するパーティクルジオメトリのサブセットをレンダリングするためのプログラム命令を含み得る。
【０１９２】
別の実施形態では、非一時的なコンピュータ可読媒体は、さらに、複数のパーティクルジオメトリの頂点をインデックス化するためのプログラム命令を含む。非一時的なコンピュータ可読媒体内では、複数のパーティクルをサンプリングするためのプログラム命令は、さらに、レンダリングされるパーティクルジオメトリのサブセットを含む描画リストを生成するためのプログラム命令を含む。非一時的なコンピュータ可読媒体では、パーティクルジオメトリのサブセットをレンダリングするためのプログラム命令は、さらに、頂点が描画リストのインデックスに関連付けられるとき、第１のパーティクルジオメトリの頂点をレンダリングするためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、サブセットに対応する縮小率に基づいて、パーティクルのサブシステムのそれぞれのサイズを拡大するためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、パーティクルの視覚特性を修正し、所望の知覚継続性を維持するためのプログラム命令を含む。
【０１９３】
別の実施形態では、コンピュータ可読媒体内では、パーティクルのサブシステムを判定するためのプログラム命令は、パーティクルのシステムの少なくとも１つのパーティクルが周辺領域内にあることを判定するためのプログラム命令を含む。コンピュータ可読媒体内では、パーティクルのサブシステムを判定するためのプログラム命令は、パーティクルの複数のクラスタをパーティクルのシステムから生成するためのプログラム命令を含み、クラスタのそれぞれは、対応する集合パーティクルによって表され、パーティクルのサブシステムは集合パーティクルを含む。コンピュータ可読媒体内では、パーティクルのサブシステムを判定するためのプログラム命令は、パーティクルのサブシステムを使用して、効果をシミュレートするためのプログラム命令を含む。
【０１９４】
別の実施形態では、コンピュータ可読媒体は、さらに、パーティクルのシステムに関する境界ボックスを画定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、境界ボックスが周辺領域内にあることを判定するためのプログラム命令を含む。
【０１９５】
別の実施形態では、コンピュータ可読媒体は、さらに、最近隣検索またはＫ平均法クラスタリング技術を使用して、パーティクルの複数のクラスタを生成するためのプログラム命令を含む。
【０１９６】
別の実施形態では、コンピュータ可読媒体は、さらに、パーティクルの対応するクラスタ内のパーティクルの場所を平均化することによって、対応する集合パーティクルの集合場所を判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、パーティクルの対応するクラスタ内のパーティクルの質量を合計することによって、対応する集合パーティクルの集合質量を判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、パーティクルのサブシステムに対応する縮小率に基づいて、対応する集合パーティクルのサイズをスケーリングするためのプログラム命令を含む。コンピュータ可読媒体は、さらに、対応する集合パーティクルの集合視覚特性を判定するためのプログラム命令を含む。
【０１９７】
特定の実施形態が中心窩レンダリングを行うように構成されるビデオレンダリングシステムのグラフィックスプロセッサの実施を説明するように提供されているが、中心窩領域内の画像の部分は高解像度でレンダリングされ、中心窩領域内の部分はより低解像度でレンダリングされ（例えば、同じ効果を達成するためのシミュレーションにおいて、集合光源を使用して、または小さい数のパーティクルを使用してレンダリングする）、これらは、例として説明され、限定的なものとして説明されない。本開示を読んでいる当業者は、本開示の主旨及び範囲の中に収まる追加実施形態を理解する。
【０１９８】
広範な地理的エリアにわたって送達される本実施形態のゲームへのアクセス等を提供するアクセスサービスが、多くの場合、クラウドコンピューティングを使用することを留意されたい。クラウドコンピューティングは、動的に拡張可能であり、多くの場合、仮想化されたリソースがインターネットを通したサービスとして提供される、コンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」の技術インフラストラクチャに関する専門家である必要はない。クラウドコンピューティングは、サービスとしてのインフラストラクチャ（「ＩａａＳ」）、サービスとしてのプラットフォーム（「ＰａａＳ」）、及びサービスとしてのソフトウェア（「ＳａａＳ」）等の異なるサービスに分けられることができる。クラウドコンピューティングサービスは、多くの場合、ウェブブラウザからアクセスされるオンラインのビデオゲーム等の一般的アプリケーションを提供する一方で、ソフトウェア及びデータはクラウド内のサーバ上に記憶される。用語「クラウド」は、どのようにインターネットがコンピュータネットワーク図に示されるかに基づいてインターネットに関する例えとして使用され、それを隠す複雑なインフラストラクチャに関する抽象的概念である。
【０１９９】
ゲーム処理サーバ（ＧＰＳ）（または、単に「ゲームサーバ」）は、シングルプレイヤーの及びマルチプレイヤーのビデオゲームをプレイするために、ゲームクライアントによって使用される。インターネットを通してプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。一般的に、ゲームは、データをプレイヤーから集める専用サーバアプリケーションを使用し、そのデータを他のプレイヤーに分配する。これは、ピアツーピア配列よりも効率的及び効果的であるが、別個のサーバにサーバアプリケーションをホストすることを要求する。別の実施形態では、ＧＰＳは、プレイヤーとそれらの各々のゲームプレイ用デバイスとの間に通信を確立し、集中型ＧＰＳに依存することなく情報を交換する。
【０２００】
専用ＧＰＳは、クライアントから独立して起動するサーバである。係るサーバは、通常、データセンター内に位置する専用ハードウェア上で起動し、より広い帯域幅及びより多くの専用処理電力を提供する。専用サーバが、ほとんどのＰＣベースのマルチプレイヤーゲームのためのゲームサーバをホストする好ましい方法である。大規模マルチプレイヤーオンラインゲームは、通常、ゲームタイトルを所有するソフトウェア会社によってホストされる専用サーバ上で起動し、そのゲームが、コンテンツを制御及び更新することを可能にする。
【０２０１】
ユーザは、少なくともＣＰＵ、ディスプレイ、及びＩ／Ｏ（入出力）を含むクライアントデバイスを用いて、リモートサービスにアクセスする。クライアントデバイスは、ＰＣ、携帯電話、ネットブック、ＰＤＡ等であり得る。一実施形態では、ゲームサーバ上で実行するネットワークは、クライアントによって使用されるデバイスの種類を認識し、使用される通信方法を調節する。他の場合、クライアントデバイスは、ｈｔｍｌ等の標準的通信方法を使用して、インターネットを通してゲームサーバ上でアプリケーションにアクセスする。
【０２０２】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベース電子機器またはプログラム可能家庭用電子機器、ミニコンピュータ、メーンフレームコンピュータ等を含む様々なコンピュータシステム構成で実践され得る。本開示は、また、タスクが有線ベースネットワークまたは無線ネットワークを経由してリンクされるリモート処理デバイスによって行われる分散コンピューティング環境で実践されることができる。
【０２０３】
所与のビデオゲームが特定のプラットフォーム及び特定の関連のコントローラデバイス用に開発され得ることを認識されたい。しかしながら、係るゲームが本明細書に提示されるようなゲームクラウドシステムを介して利用可能にされるとき、ユーザは、異なるコントローラデバイスでビデオゲームにアクセスし得る。例えば、ゲームは、ゲームコンソール及びその関連のコントローラ用に開発されている場合がある一方で、ユーザは、キーボード及びマウスを利用するパーソナルコンピュータからゲームのクラウドベースバージョンにアクセスする場合がある。係るシナリオでは、入力パラメータ構成は、ユーザの利用可能であるコントローラデバイス（この場合、キーボード及びマウス）によって生成されることができる入力から、ビデオゲームを実行するために受容可能である入力までのマッピングを定義することができる。
【０２０４】
別の例では、ユーザは、タブレットコンピューティングデバイス、タッチスクリーンスマートフォン、または他のタッチスクリーン駆動デバイスを介して、クラウドゲームシステムにアクセスし得る。この場合、クライアントデバイス及びコントローラデバイスは、同じデバイスになるように一緒に一体化され、入力が検出済タッチスクリーンの入力／ジェスチャを用いて提供される。係るデバイスに関して、入力パラメータ構成は、ビデオゲームに関するゲーム入力に対応する特定のタッチスクリーン入力を定義し得る。例えば、ボタン、指向性パッド、または他の種類の入力要素は、ユーザがゲーム入力を生成するために触れることができるタッチスクリーン上の場所を示すビデオゲームの起動中、表示される、または重なる場合がある。特定の方向または特有のタッチ動作のスワイプ等のジェスチャは、また、ゲーム入力として検出され得る。一実施形態では、指導書は、ユーザに、タッチスクリーン上での制御の動作に慣れさせるように、（例えば、ビデオゲームのゲームプレイが始まる前に）ゲームプレイ用のタッチスクリーンを介して入力を提供する方法を示すように、ユーザに提供されることができる。
【０２０５】
いくつかの実施形態では、クライアントデバイスは、コントローラデバイスに関する接続点の役割を果たす。すなわち、コントローラデバイスは、クライアントデバイスと無線接続または有線接続を介して通信し、入力をコントローラデバイスからクライアントデバイスに伝送する。クライアントデバイスは、順に、これらの入力を処理し、次に、ネットワーク（例えば、ルータ等のローカルネットワークデバイスを介してアクセスされる）を介して、入力データをクラウドゲームサーバに伝送し得る。しかしながら、他の実施形態では、コントローラ自体は、最初にクライアントデバイスを経由して係る入力を通信させることを要求されることなく、クラウドゲームサーバに対するネットワークを介して直接入力を通信させる能力があるネットワークデバイスであり得る。例えば、コントローラは、ローカルネットワークデバイス（前述のルータ等）に接続し、データをクラウドゲームサーバに送信し、及びクラウドゲームサーバから受信する場合がある。したがって、クライアントデバイスが依然としてクラウドベースビデオゲームから出力されるビデオを受信し、それをローカルディスプレイ上にレンダリングすることが要求され得るが、クライアントデバイスをバイパスするように、クラウドゲームサーバに対するネットワークを通して直接コントローラが入力を送信することを可能にすることによって、入力レイテンシを短縮することができる。
【０２０６】
一実施形態では、ネットワークコントローラ及びクライアントデバイスは、ある種類の入力をコントローラから直接クラウドゲームサーバに送信し、クライアントデバイスを介して他の種類の入力を送信するように構成されることができる。例えば、入力（その入力の検出がコントローラ自体とは別の任意の追加ハードウェアまたは処理に依存しない）は、クライアントデバイスをバイパスするように、ネットワークを介して、コントローラから直接クラウドゲームサーバに送信されることができる。係る入力は、ボタン入力、ジョイスティック入力、内蔵式動き検出入力部（例えば、加速度計、磁気計、ジャイロスコープ）等を含み得る。しかしながら、追加ハードウェアを利用する、またはクライアントデバイスによる処理を要求する入力は、クライアントデバイスによって、クラウドゲームサーバに送信されることができる。これらは、クラウドゲームサーバに送信する前に、クライアントデバイスによって処理され得るゲーム環境からキャプチャされたビデオまたは音声を含む場合がある。加えて、コントローラの動き検出ハードウェアからの入力は、コントローラの位置及び動きを検出するように、キャプチャされたビデオと併せてクライアントデバイスによって処理される場合があり、コントローラは、その後、クライアントデバイスによって、クラウドゲームサーバに通信する。様々な実施形態に従ってコントローラデバイスがまた、データ（例えば、フィードバックデータ）をクライアントデバイスから、またはクラウドゲームサーバから直接受信し得ることを認識されたい。
【０２０７】
本明細書に説明される実施形態が任意の種類のクライアントデバイス上で実行され得ることを理解されたい。いくつかの実施形態では、クライアントデバイスは、ヘッドマウントディスプレイ（ＨＭＤ）である。
【０２０８】
図１０は、本開示の実施形態による、示されるヘッドマウントディスプレイ１０２のコンポーネントを示す図である。ヘッドマウントディスプレイ１０２は、プログラム命令を実行するためのプロセッサ１０００を含む。メモリ１００２は、記憶する目的のために提供され、揮発性メモリ及び不揮発性メモリの両方を含み得る。ユーザが視認し得る視覚インターフェースを提供するディスプレイ１００４が含まれる。バッテリ１００６は、ヘッドマウントディスプレイ１０２用の電源として提供される。動き検出モジュール１００８は、磁気計１０１０Ａ、加速度計１０１２、及びジャイロスコープ１０１４等の任意の様々な種類の動き感知ハードウェアを含み得る。
【０２０９】
加速度計は、加速度及び重力誘導反動力を測定するためのデバイスである。単一及び複数の軸モデルは、異なる方向で、加速度の大きさ及び方向を検出することに利用可能である。加速度計は、傾斜、振動、及び衝撃を感知するために使用される。一実施形態では、３つの加速度計１０１２は、重力の方向を提供するために使用され、その重力は、２つの角度に関する絶対参照（世界空間ピッチ及び世界空間ロール）を与える。
【０２１０】
磁気計は、ヘッドマウントディスプレイの付近における磁場の強度及び方向を測定する。一実施形態では、３つの磁気計１０１０Ａは、ヘッドマウントディスプレイの内部で使用され、世界空間のヨー角に関する絶対参照を確実にする。一実施形態では、磁気計は、地磁場が±８０マイクロテスラの範囲にわたるように設計されている。磁気計は、金属による影響を受け、実際のヨーで単調であるヨー測定を提供する。磁場は、ヨー測定において歪みを生じる環境の金属に起因して歪み得る。必要に応じて、この歪みは、ジャイロスコープまたはカメラ等の他のセンサからの情報を使用して較正されることができる。一実施形態では、加速度計１０１２は、磁気計１０１０Ａと一緒に使用され、ヘッドマウントディスプレイ１０２の傾角及び方位角を取得する。
【０２１１】
ジャイロスコープは、角度のモーメントの原理に基づいて、配向を測定または維持するためのデバイスである。一実施形態では、３つのジャイロスコープ１０１４は、慣性感知に基づいて、各々の軸（ｘ、ｙ、及びｚ）にわたる運動に関する情報を提供する。ジャイロスコープは高速回転を検出する際に役立つ。しかしながら、ジャイロスコープは、絶対参照の存在なしで、時間超過してドリフトする可能性がある。これは、定期的にジャイロスコープをリセットすることを要求し、オブジェクト、加速度計、磁気計等の視覚的追跡に基づいて位置／配向の判定等の他の利用可能である情報を使用して行うことができる。
【０２１２】
カメラ１０１６は、実環境の画像及び画像ストリームをキャプチャするために提供される。２つ以上のカメラは、ヘッドマウントディスプレイ１０２内に含まれ得、ヘッドマウントディスプレイ１０２は、後ろ向きのカメラ（ユーザがヘッドマウントディスプレイ１０２のディスプレイを視認するとき、ユーザから離れるように向いている）と、前向きのカメラ（ユーザがヘッドマウントディスプレイ１０２のディスプレイを視認するとき、ユーザに向かう向きになる）とを含む。加えて、深度カメラ１０１８は、実環境におけるオブジェクトの深度情報を感知するためのヘッドマウントディスプレイ１０２内に含まれ得る。
【０２１３】
一実施形態では、ＨＭＤの前面に一体化されるカメラは、安全に関する警報を提供するために使用され得る。例えば、ユーザが壁またはオブジェクトに近づいている場合、ユーザは警告され得る。一実施形態では、物理的オブジェクトの存在をユーザに警告するために、部屋内の物理的オブジェクトの外観図を用いて使用を提供し得る。例えば、外観図は、仮想環境におけるオーバーレイであり得る。いくつかの実施形態では、ＨＭＤユーザは、例えば、フロア内で重なる参照マーカを視野に入れて提供され得る。例えば、マーカは、ユーザがゲームプレイしている部屋の中心の場所の参照をユーザに提供し得る。これは、例えば、部屋内の壁または他のオブジェクトに衝突することを回避するために、ユーザが移動するべき場所にいるユーザに視覚情報を提供し得る。また、ユーザがＨＭＤを装着する、ＨＭＤでゲームをプレイする、またはコンテンツを閲覧するときに、さらなる安全性を提供するために、ユーザに触知性警報及び／または音声警報を提供することができる。
【０２１４】
ヘッドマウントディスプレイ１０２は、音声出力を提供するためのスピーカ１０２０を含む。また、マイクロホン１０２２は、周囲環境からの音、ユーザによって行われるスピーチ等を含む実環境からの音声をキャプチャするために含まれ得る。ヘッドマウントディスプレイ１０２は、触覚フィードバックをユーザに提供するための触覚フィードバックモジュール１０２４を含む。一実施形態では、触覚フィードバックモジュール１０２４は、触覚フィードバックをユーザに提供するように、ヘッドマウントディスプレイ１０２の移動及び／または振動を生じさせることが可能である。
【０２１５】
ＬＥＤ１０２６は、ヘッドマウントディスプレイ１０２の状態の可視的インジケータとして提供される。例えば、ＬＥＤは、バッテリレベル、電源オン等を示し得る。カードリーダ１０２８は、ヘッドマウントディスプレイ１０２が、情報をメモリカードから読み取り、及び情報をメモリカードに書き込むことを可能にするように提供される。ＵＳＢインターフェース１０３０は、周辺デバイスの接続、または他のポータブルデバイス、コンピュータ等の他のデバイスへの接続を可能にするためのインターフェースの一例として含まれる。ヘッドマウントディスプレイ１０２の様々な実施形態では、任意の様々な種類のインターフェースは、ヘッドマウントディスプレイ１０２の良好な接続性を可能にするように含まれ得る。
【０２１６】
Ｗｉ‐Ｆｉモジュール１０３２は、無線ネットワーク技術を介して、インターネットへの接続を可能にするために含まれる。また、ヘッドマウントディスプレイ１０２は、他のデバイスへの無線接続を可能にするためのＢｌｕｅｔｏｏｔｈ（登録商標）モジュール１０３４を含む。通信リンク１０３６は、また、他のデバイスに接続するために含まれ得る。一実施形態では、通信リンク１０３６は、無線通信に関する赤外線伝送を利用する。他の実施形態では、通信リンク１０３６は、他のデバイスで通信するために、様々な無線または有線伝送プロトコルのいずれかを利用し得る。
【０２１７】
入力ボタン／センサ１０３８は、ユーザに関する入力インターフェースを提供するために含まれる。ボタン、タッチパッド、ジョイスティック、トラックボール等の様々な種類の入力インターフェースのいずれかが含まれ得る。超音波通信モジュール１０４０は、超音波技術を用いて他のデバイスとの通信を容易にするために、ヘッドマウントディスプレイ１０２内に含まれ得る。
【０２１８】
生物学的センサ１０４２は、ユーザからの生理学的データの検出を可能にするために含まれる。一実施形態では、生物学的センサ１０４２は、ユーザの皮膚を通るユーザの生体電気信号を検出するための１つ以上のドライ電極を含む。
【０２１９】
光検出器１０４４は、３次元物理的環境にセットされるエミッタ（例えば、赤外線ベースステーション）からの信号に反応するために含まれる。ゲーム機は、情報を光センサ１０４４及びエミッタから分析し、ヘッドマウントディスプレイ１０２に関連する位置情報及び配向情報を判定する。
【０２２０】
前述のヘッドマウントディスプレイ１０２のコンポーネントは、ヘッドマウントディスプレイ１０２内に含まれ得る単なる例示的コンポーネントとして説明されている。本開示の様々な実施形態では、ヘッドマウントディスプレイ１０２は、様々な前述のコンポーネントの一部を含む場合がある、または含まない場合がある。ヘッドマウントディスプレイ１０２の実施形態は、加えて、本明細書に説明されるような本開示の態様を容易にする目的のために、ここでは説明されていないが当技術分野で既知である他のコンポーネントを含み得る。
【０２２１】
本開示の様々な実施形態では、前述のハンドヘルドデバイスは、様々な対話機能を提供するためにディスプレイ上に表示される対話型アプリケーションと併せて利用され得ることが当業者によって認識される。本明細書に説明される例示的実施形態は、単なる例として提供され、限定的なものとして提供されない。
【０２２２】
図１１は、本開示の様々な実施形態による、ゲームシステム１１００のブロック図である。ゲームシステム１１００は、ネットワーク１１１５を介して、ビデオストリームを１つ以上のクライアント１１１０に提供するように構成される。ゲームシステム１１００は、一般的に、ビデオサーバシステム１１２０と、選択式ゲームサーバ１１２５とを含む。ビデオサーバシステム１１２０は、最低限の品質のサービスで、ビデオストリームを１つ以上のクライアント１１１０に提供するように構成される。例えば、ビデオサーバシステム１１２０は、ビデオゲーム内の視界の状態または視点を変更するゲームコマンドを受信し、クライアント１１１０に、最小のレイテンシでこの変化を反映しているビデオストリームの更新を提供し得る。ビデオサーバシステム１１２０は、まだ定義されていないフォーマットを含む、多種多様な代替ビデオフォーマットのビデオストリームを提供するように構成され得る。さらに、ビデオストリームは、多種多様なフレームレートにおいて、ユーザに提示されるように構成されるビデオフレームを含み得る。一般的なフレームレートは、３０フレーム／秒、８０フレーム／秒、及び８２０フレーム／秒である。しかし、より高い、またはより低いフレームレートが、本開示の代替実施形態に含まれる。
【０２２３】
クライアント１１１０（本明細書に個別に１１１０Ａ、１１１０Ｂ等として言及される）は、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話器、セットトップボックス、公衆電話ボックス、無線デバイス、デジタルパッド、独立型デバイス、ハンドヘルドゲームプレイ用デバイス、及び／または同等物を含み得る。一般的に、クライアント１１１０は、エンコードされたビデオストリーム（すなわち、圧縮されている）を受信し、ビデオストリームをデコードし、結果として生じるビデオをユーザ（例えば、ゲームのプレイヤー）に提示するように構成される。エンコードされたビデオストリームを受信する及び／またはビデオストリームをデコードするプロセスは、一般的に、クライアントの受信バッファ内に個別のビデオフレームを記憶することを含む。ビデオストリームは、クライアント１１１０に不可欠なディスプレイ上で、またはモニタもしくはテレビ等の別個のデバイス上で、ユーザに提示され得る。クライアント１１１０は、随意に、２人以上のゲームプレイヤーをサポートするように構成される。例えば、ゲームコンソールは、２人、３人、４人以上の同時参加プレイヤーをサポートするように構成され得る。これらのプレイヤーのそれぞれは、別個のビデオストリームを受信し得る、または単一のビデオストリームは、特にプレイヤー毎に生成される（例えば、各プレイヤーの視点に基づいて生成される）フレームの領域を含み得る。クライアント１１１０は、随意に、地理的に分散される。ゲームシステム１１００内に含まれるクライアント数は、１人または２人から、数千人、数万人、それ以上の人数まで、広範囲に変わり得る。本明細書に使用されるような用語「ゲームプレイヤー」は、ゲームをプレイする人を指すように使用され、用語「ゲームプレイ用デバイス」は、ゲームをプレイするために使用されるデバイスを指すように使用される。いくつかの実施形態では、ゲームプレイ用デバイスは、ゲーム経験をユーザに送達するように連係する複数のコンピューティングデバイスを指し得る。例えば、ゲームコンソール及びＨＭＤは、ビデオサーバシステム１１２０と連係し、ＨＭＤによって視認されるゲームを送達し得る。一実施形態では、ゲームコンソールは、ビデオストリームをビデオサーバシステム１１２０から受信し、ゲームコンソールは、レンダリングするためにＨＭＤに、ビデオストリームを転送する、またはビデオストリームを更新する。
【０２２４】
クライアント１１１０は、ネットワーク１１１５を介して、ビデオストリームを受信するように構成される。ネットワーク１１１５は、電話回線、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、プライベートネットワーク、及び／または同等物を含む、任意の種類の通信ネットワークであり得る。一般的な実施形態では、ビデオストリームは、ＴＣＰ／ＩＰまたはＵＤＰ／ＩＰ等の標準プロトコルを用いて通信する。代替として、ビデオストリームは、プロプリエタリ標準を用いて通信する。
【０２２５】
クライアント１１１０の一般的な例は、プロセッサ、不揮発性メモリ、ディスプレイ、デコードロジック、ネットワーク通信能力、及び入力デバイスを備える、パーソナルコンピュータである。デコードロジックは、コンピュータ可読媒体上に記憶されるハードウェア、ファームウェア、及び／またはソフトウェアを含み得る。ビデオストリームをデコード（及びエンコード）するためのシステムは、当技術分野で周知であり、使用される特定のエンコードスキームに応じて変わり得る。
【０２２６】
クライアント１１１０は、必須ではないが、さらに、受信されたビデオを修正するように構成されるシステムを含み得る。例えば、クライアントは、さらに、レンダリングを行い、１つのビデオ画像を別のビデオ画像上に重ね、ビデオ画像を切り取り、及び／または同様のことを行うように構成され得る。例えば、クライアント１１１０は、Ｉフレーム、Ｐフレーム、及びＢフレーム等の様々な種類のビデオフレームを受信し、ユーザに表示するために、これらのフレームを画像内で処理するように構成され得る。いくつかの実施形態では、クライアント１１１０のメンバーは、さらに、レンダリング、シェーディング、３Ｄへの変換、またはビデオストリーム上の同様の動作を行うように構成される。クライアント１１１０のメンバーは、随意に、２つ以上の音声またはビデオストリームを受信するように構成される。クライアント１１１０の入力デバイスは、例えば、片手式ゲームコントローラ、両手式ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバックデバイス、動き及び／または場所感知デバイス、マウス、タッチスクリーン、神経インターフェース、カメラ、まだ開発中の入力デバイス、及び／または同等物を含み得る。
【０２２７】
クライアント１１１０によって受信されるビデオストリーム（及び選択式オーディオストリーム）は、ビデオサーバシステム１１２０によって生成及び提供される。さらに本明細書の他の箇所で説明されるように、このビデオストリームは、ビデオフレームを含む（オーディオストリームはオーディオフレームを含む）。ビデオフレームは、ユーザに表示される画像に有意義に寄与するように構成される（例えば、それらは、適切なデータ構造の画素情報を含む）。本明細書に使用されるような用語「ビデオフレーム」は、ユーザに示される画像に寄与する（例えば、画像を生じさせる）ように構成される情報を主に含むフレームを指すように使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、また、「オーディオフレーム」に適用されることができる。
【０２２８】
クライアント１１１０は、一般的に、入力をユーザから受信するように構成される。これらの入力は、ビデオゲームの状態を変化させる、またはそうでなければゲームプレイに影響を及ぼすように構成されるゲームコマンドを含み得る。ゲームコマンドは、入力デバイスを使用して受信することができる、及び／または、クライアント１１１０上で実行するコンピューティング命令によって、自動的に生成され得る。受信ゲームコマンドは、ビデオサーバシステム１１２０及び／またはゲームサーバ１１２５に対するネットワーク１１１５を介して、クライアント１１１０から通信する。例えば、いくつかの実施形態では、ゲームコマンドは、ビデオサーバシステム１１２０を介して、ゲームサーバ１１２５に対して通信する。いくつかの実施形態では、ゲームコマンドの別個のコピーは、クライアント１１１０から、ゲームサーバ１１２５及びビデオサーバシステム１１２０に通信する。ゲームコマンドの通信は、随意に、コマンドの識別情報に依存している。ゲームコマンドは、随意に、オーディオストリームまたはビデオストリームをクライアント１１１０Ａに提供するために使用される異なるルートまたは通信チャネルを経由して、クライアント１１１０Ａから通信する。
【０２２９】
ゲームサーバ１１２５は、随意に、ビデオサーバシステム１１２０と異なるエンティティによって動作する。例えば、ゲームサーバ１１２５は、マルチプレイヤーゲームの発行者によって動作し得る。この例では、ビデオサーバシステム１１２０は、随意に、ゲームサーバ１１２５によって、クライアントとして見なされ、随意に、先行技術のゲームエンジンを実行する先行技術のクライアントであるゲームサーバ１１２５の視点から現れるように構成される。ビデオサーバシステム１１２０とゲームサーバ１１２５との間の通信は、随意に、ネットワーク１１１５を介して発生する。したがって、ゲームサーバ１１２５は、ゲーム状態情報を複数のクライアント（それらの１つがゲームサーバシステム１１２０である）に送信する先行技術のマルチプレイヤーゲームサーバであり得る。ビデオサーバシステム１１２０は、同時に、ゲームサーバ１１２５の複数のインスタンスと通信するように構成され得る。例えば、ビデオサーバシステム１１２０は、複数の異なるビデオゲームを異なるユーザに提供するように構成されることができる。これらの異なるビデオゲームのそれぞれは、異なるゲームサーバ１１２５によってサポートされ得る、及び／または異なるエンティティによって発行され得る。いくつかの実施形態では、ビデオサーバシステム１１２０のいくつかの地理的に分散されたインスタンスは、ゲームビデオを複数の異なるユーザに提供するように構成される。ビデオサーバシステム１１２０のこれらのインスタンスのそれぞれは、ゲームサーバ１１２５の同じインスタンスと通信し得る。ビデオサーバシステム１１２０と１つ以上のゲームサーバ１１２５との間の通信は、随意に、専用通信チャネルを介して発生する。例えば、ビデオサーバシステム１１２０は、これらの２つのシステム間の通信に専用である高帯域チャネルを介して、ゲームサーバ１１２５に接続され得る。
【０２３０】
ビデオサーバシステム１１２０は、少なくとも、ビデオソース１１３０、入出力デバイス１１４５、プロセッサ１１５０、及び非一過性ストレージ１１５５を備える。ビデオサーバシステム１１２０は、１つのコンピューティングデバイスを含み得る、または複数のコンピューティングデバイス間で分散され得る。これらのコンピューティングデバイスは、随意に、ローカルエリアネットワーク等の通信システムを介して接続される。
【０２３１】
ビデオソース１１３０は、ビデオストリーム（例えば、動画を形成するストリーミングビデオまたは一連のビデオフレーム）を提供するように構成される。いくつかの実施形態では、ビデオソース１１３０は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、ゲームコマンドをプレイヤーから受信するように、受信コマンドに基づいて、ビデオゲームの状態のコピーを維持するように構成される。このゲーム状態は、ゲーム環境のオブジェクトの位置と、一般的に視点とを含む。ゲーム状態は、また、オブジェクトの特性、画像、色、及び／またはテクスチャを含み得る。
【０２３２】
ゲーム状態は、一般的に、ゲームルール、ならびに移動、回転、攻撃、焦点の設定、相互作用、使用、及び／または同様なこと等のゲームコマンドに基づいて維持される。ゲームエンジンの一部は、随意に、ゲームサーバ１１２５内に配置される。ゲームサーバ１１２５は、地理的に分散したクライアントを使用して、マルチプレイヤーから受信されたゲームコマンドに基づいてゲームの状態のコピーを維持し得る。これらの場合、ゲーム状態は、ゲームサーバ１１２５によって、ビデオソース１１３０に提供され、ゲーム状態のコピーは記憶され、レンダリングが行われる。ゲームサーバ１１２５は、ネットワーク１１１５を介して、クライアント１１１０から直接ゲームコマンドを受信し得る、及び／またはビデオサーバシステム１１２０を介してゲームコマンドを受信し得る。
【０２３３】
ビデオソース１１３０は、一般的に、レンダリングロジック（例えば、ストレージ１１５５等のコンピュータ可読媒体上に記憶されるハードウェア、ファームウェア、及び／またはソフトウェア）を含む。このレンダリングロジックは、ゲーム状態に基づいて、ビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全てまたは一部は、随意に、グラフィック処理ユニット（ＧＰＵ）内に配置される。レンダリングロジックは、一般的に、ゲーム状態及び視点に基づいて、オブジェクト間の３次元空間関係を判定するように、及び／または適切なテクスチャを適用するよう等に構成される処理段階を含む。レンダリングロジックは、未加工のビデオを作り出し、次に、未加工のビデオは、通常、クライアント１１１０に通信する前にエンコードされる。例えば、未加工のビデオは、Ａｄｏｂｅ  Ｆｌａｓｈ（登録商標）規格、．ｗａｖ、Ｈ．２６４、Ｈ．２６３、Ｏｎ２、ＶＰ６、ＶＣ−１、ＷＭＡ、Ｈｕｆｆｙｕｖ、Ｌａｇａｒｉｔｈ、ＭＰＧ−ｘ．、Ｘｖｉｄ．、ＦＦｍｐｅｇ、ｘ２６４、ＶＰ６−８、ｒｅａｌｖｉｄｅｏ、ｍｐ３等に従ってエンコードされ得る。エンコードプロセスは、リモートデバイス上のデコーダに送達するために随意にパッケージ化されたビデオストリームを作り出す。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。一般的なフレームサイズは、８００×６００、１２８０×７２０（例えば、７２０ｐ）、１０２４ｘ７６８を含むが、任意の他のフレームサイズを使用し得る。フレームレートは、１秒当たりのビデオフレーム数である。ビデオストリームは、異なる種類のビデオフレームを含み得る。例えば、Ｈ．２６４規格は「Ｐ」フレーム及び「Ｉ」フレームを含む。Ｉフレームは表示デバイス上で全てのマクロブロック／画素をリフレッシュする情報を含む一方で、Ｐフレームはそれらのサブセットをリフレッシュする情報を含む。Ｐフレームは、一般的に、Ｉフレームよりも小さいデータサイズである。本明細書に使用されるような用語「フレームサイズ」は、フレーム内の画素数を指すことを意味する。用語「フレームデータサイズ」は、フレームを記憶するために必要なバイト数を指すように使用される。
【０２３４】
代替実施形態では、ビデオソース１１３０は、カメラ等のビデオ記録デバイスを含む。このカメラは、コンピュータゲームのビデオストリームに含まれる可能性がある遅延ビデオまたはライブビデオを生成するために使用され得る。結果として生じるビデオストリームは、随意に、レンダリング画像、及び静止画またはビデオカメラを使用して記録された画像の両方を含む。ビデオソース１１３０は、また、ビデオストリームに含まれる事前に記録されたビデオを記憶するように構成されるストレージデバイスを含み得る。ビデオソース１１３０は、また、オブジェクト（例えば、人）の動きまたは位置を検出するように構成される動きまたは位置感知デバイスと、ゲーム状態を判定するように、または検出された動き及び／または位置に基づくビデオを作り出すように構成されるロジックとを含み得る。
【０２３５】
ビデオソース１１３０は、随意に、他のビデオ上でセットされるように構成されるオーバーレイを提供するように構成される。例えば、これらのオーバーレイは、コマンドインターフェース、命令のログ、ゲームプレイヤーへのメッセージ、他のゲームプレイヤーの画像、他のゲームプレイヤーのビデオフィード（例えば、ウェブ画像ビデオ）を含み得る。タッチスクリーンインターフェースまたは視線検出インターフェースを含むクライアント１１１０Ａの実施形態では、オーバーレイは、仮想キーボード、ジョイスティック、タッチパッド、及び／または同等物を含み得る。オーバーレイの一例では、プレイヤーの声は、オーディオストリームにオーバーレイされる。ビデオソース１１３０は、随意に、１つ以上の音源をさらに含む。
【０２３６】
ビデオサーバシステム１１２０が２人以上のプレイヤーからの入力に基づいてゲーム状態を維持するように構成される実施形態では、各プレイヤーは、視野の位置及び方向を含む異なる視点を有し得る。ビデオソース１１３０は、随意に、その視点に基づいて、プレイヤー毎に別個のビデオストリームを提供するように構成される。さらに、ビデオソース１１３０は、クライアント１１１０のそれぞれと異なるフレームサイズ、フレームデータサイズ、及び／またはエンコードを提供するように構成され得る。ビデオソース１１３０は、随意に、３次元ビデオを提供するように構成される。
【０２３７】
入出力デバイス１１４５は、ビデオサーバシステム１１２０が、ビデオ、コマンド、情報に関する要求、ゲーム状態、視線情報、デバイスの動き、デバイスの場所、ユーザ運動、クライアント識別情報、プレイヤー識別情報、ゲームコマンド、セキュリティ情報、音声、及び／または同等物等の情報を送信及び／または受信するように構成される。入出力デバイス１１４５は、一般的に、ネットワークカードまたはモデム等の通信ハードウェアを含む。入出力デバイス１１４５は、ゲームサーバ１１２５、ネットワーク１１１５、及び／またはクライアント１１１０と通信するように構成される。
【０２３８】
プロセッサ１１５０は、ロジック（例えば、本明細書に説明されるビデオサーバシステム１１２０の様々なコンポーネント内に含まれるソフトウェア）を実行するように構成される。例えば、プロセッサ１１５０は、ビデオソース１１３０、ゲームサーバ１１２５、及び／またはクライアント修飾子１１６０の機能を行うために、ソフトウェア命令でプログラムされ得る。ビデオサーバシステム１１２０は、随意に、プロセッサ１１５０の２つ以上のインスタンスを含む。プロセッサ１１５０は、また、ビデオサーバシステム１１２０によって受信されたコマンドを実行するために、または、本明細書に説明されるゲームシステム１１００の様々な要素の動作を調整するために、ソフトウェア命令でプログラムされ得る。プロセッサ１１５０は１つ以上のハードウェアデバイスを含み得る。プロセッサ１１５０は電子プロセッサである。
【０２３９】
ストレージ１１５５は、非一過性アナログストレージデバイス及び／または非一過性デジタルストレージデバイスを含む。例えば、ストレージ１１５５は、ビデオフレームを記憶するように構成されるアナログストレージデバイスを含み得る。ストレージ１１５５は、コンピュータ可読デジタルストレージ（例えば、ハードドライブ、光学式ドライブ、またはソリッドステートストレージ）を含み得る。ストレージ１１５５は、（例えば、適切なデータ構造またはファイルシステムを用いて）ビデオフレーム、人工フレーム、ビデオフレーム及び人工フレームと両方を含むビデオストリーム、オーディオフレーム、オーディオストリーム、及び／または同等物を記憶するように構成される。ストレージ１１５５は、随意に、複数のデバイス間で分散される。いくつかの実施形態では、ストレージ１１５５は、本明細書の他の箇所で説明されるビデオソース１１３０のソフトウェアコンポーネントを記憶するように構成される。これらのコンポーネントは、必要なときに、セットアップする準備ができているフォーマットで記憶され得る。
【０２４０】
ビデオサーバシステム１１２０は、随意に、クライアント修飾子１１６０をさらに備える。クライアント修飾子１１６０は、クライアント１１１０Ａまたは１１１０Ｂ等のクライアントの能力をリモートで判定するように構成される。これらの能力は、クライアント１１１０Ａ自体の能力、及びクライアント１１１０Ａとビデオサーバシステム１１２０との間の１つ以上の通信チャネルの能力の両方を含み得る。例えば、クライアント修飾子１１６０は、ネットワーク１１１５を経由して、通信チャネルをテストするように構成され得る。
【０２４１】
クライアント修飾子１１６０は、手動で、または自動的に、クライアント１１１０Ａの能力を判定（例えば、発見）することができる。手動判定は、能力を提供するために、クライアント１１１０Ａのユーザと通信することと、ユーザに質問することとを含む。例えば、いくつかの実施形態では、クライアント修飾子１１６０は、クライアント１１１０Ａのブラウザ内で、画像、テキスト、及び／または同等物を表示するように構成される。一実施形態では、クライアント１１１０Ａは、ブラウザを含むＨＭＤである。別の実施形態では、クライアント１１１０Ａは、ＨＭＤ上に表示され得るブラウザを有するゲームコンソールである。表示されるオブジェクトは、ユーザに、クライアント１１１０Ａのオペレーティングシステム、プロセッサ、ビデオデコーダ種類、ネットワーク接続の種類、ディスプレイ解像度等の情報を入力することを要求する。ユーザによって入力された情報は、クライアント修飾子１１６０に戻るように通信する。
【０２４２】
自動判定は、例えば、クライアント１１１０Ａ上のエージェントの実行によって、及び／またはテストビデオをクライアント１１１０Ａに送信することによって、発生し得る。エージェントは、ウェブページに組み込まれる、またはアドオンとしてインストールされるｊａｖａ（登録商標）スクリプト等のコンピューティング命令を含み得る。エージェントは、随意に、クライアント修飾子１１６０によって提供される。様々な実施形態では、エージェントは、クライアント１１１０Ａの処理電力、クライアント１１１０Ａのデコード能力及び表示能力、遅延時間の信頼性、ならびにクライアント１１１０Ａとビデオサーバシステム１１２０との間の通信チャネルの帯域幅、クライアント１１１０Ａのディスプレイ種類、クライアント１１１０Ａ上に存在するファイアウォール、クライアント１１１０Ａのハードウェア、クライアント１１１０Ａ上で実行するソフトウェア、クライアント１１１０Ａ内のレジストリ項目、及び／または同等物を見つけることができる。
【０２４３】
クライアント修飾子１１６０は、コンピュータ可読媒体上に記憶されるハードウェア、ファームウェア、及び／またはソフトウェアを含む。クライアント修飾子１１６０は、随意に、ビデオサーバシステム１１２０の１つ以上の他の要素から分離しているコンピューティングデバイス上に配置される。例えば、いくつかの実施形態では、クライアント修飾子１１６０は、クライアント１１１０と、ビデオサーバシステム１１２０の２つ以上のインスタンスとの間の通信チャネルの特徴を判定するように構成される。これらの実施形態では、クライアント修飾子によって発見された情報は、ビデオサーバシステム１１２０のどのインスタンスがストリーミングビデオをクライアント１１１０の１つに送達することに最良に適しているかを判定するために使用されることができる。
【０２４４】
本明細書に定義される様々な実施形態は、本明細書に開示される様々な特徴を使用して、特定の実施態様に組み合わされ得る、または組み立てられ得ることを理解されたい。したがって、提供される例は、単なるいくつかの可能である例であり、より多くの実施態様を定義する様々な要素を組み合わせることによって可能である様々な実施態様に限定されない。いくつかの例では、いくつかの実施態様は、開示されるまたは同等の実施態様の主旨から逸脱することなく、より少ない要素を含み得る。
【０２４５】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベース電子機器またはプログラム可能家庭用電子機器、ミニコンピュータ、メーンフレームコンピュータ等を含む様々なコンピュータシステム構成で実践され得る。本開示の実施形態は、また、タスクが有線ベースネットワークまたは無線ネットワークを経由してリンクされるリモート処理デバイスによって行われる分散コンピューティング環境で実践されることができる。
【０２４６】
上記の実施形態を留意して、本開示の実施形態が、コンピュータシステム内に記憶されるデータを含有する様々なコンピュータ実施動作を使用することができることを理解されたい。これらの動作は、物理量の物理的処置を要求するものである。本開示の実施形態の一部を形成する本明細書に説明される動作のいずれかは、有用な機械動作である。本発明の実施形態は、また、これらの動作を行うためのデバイスまたは装置に関する。本装置は、要求された目的のために特別に構成されることができる、または、本装置は、コンピュータ内に記憶されるコンピュータプログラムによって選択的にアクティブになる、または構成される汎用コンピュータであり得る。具体的には、様々な汎用マシンは、本明細書の教示に従って書き込まれたコンピュータプログラムで使用されることができる、または、様々な汎用マシンは、より特殊な装置を構成し、要求動作を行うのにより便利であり得る。
【０２４７】
本開示は、また、コンピュータ可読媒体上のコンピュータ可読コードとして、具体化されることができる。コンピュータ可読媒体は、データを記憶することができる任意のデータストレージデバイスであり、当該データは、その後、コンピュータシステムによって読み取られることができる。コンピュータ可読媒体の例は、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読取専用メモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、ならびに他の光学データストレージデバイス及び非光学データストレージデバイスを含む。コンピュータ可読媒体は、ネットワーク連結コンピュータシステムを通して分散されるコンピュータ可読有形媒体を含み得、これにより、コンピュータ可読コードは、分散様式で記憶及び実行される。
【０２４８】
本方法の動作が特定の順序で説明されたが、オーバーレイ動作の処理が所望の方法で行われる限り、他のハウスキーピング動作は動作間に行われ得る、または動作は、わずかに異なる時間で発生するように調節され得る、もしくは、処理に関連付けられる様々な間隔における処理動作の発生を可能にするシステム内で分散され得ることを理解されたい。
【０２４９】
理解の明確性の目的のために、前述の開示がいくつか詳細に説明されているが、ある変更及び修正が添付の「特許請求の範囲」の範囲内で実践できることが明白である。したがって、本実施形態は、例証であり制限するものではないとして考慮され、本開示の実施形態は、本明細書に与えられた詳細に限定されないが、添付の「特許請求の範囲」の範囲内及びその均等物の範囲内で修正され得る。
【図１Ａ】
0006802393.tif 000002
【図１Ｂ】
0006802393.tif 000003
【図１Ｃ】
0006802393.tif 000004
【図２Ａ】
0006802393.tif 000005
【図２Ｂ】
0006802393.tif 000006
【図３Ａ】
0006802393.tif 000007
【図３Ｂ】
0006802393.tif 000008
【図４Ａ】
0006802393.tif 000009
【図４Ｂ】
0006802393.tif 000010
【図５Ａ】
0006802393.tif 000011
【図５Ｂ】
0006802393.tif 000012
【図６Ａ】
0006802393.tif 000013
【図６Ｂ】
0006802393.tif 000014
【図７Ａ】
0006802393.tif 000015
【図７Ｂ】
0006802393.tif 000016
【図８】
0006802393.tif 000017
【図９】
0006802393.tif 000018
【図１０】
0006802393.tif 000019
【図１１】
0006802393.tif 000020