以下の詳細な説明が例証の目的のために多くの具体的な詳細を含有するが、当業者は、以下の詳細に対する多くの変形及び改変が本開示の範囲内にあることを認識する。したがって、下記に説明される本開示の態様は、一般概念のいかなる損失を生じさせることなく、この説明に続く「特許請求の範囲」に制限を課すことなく記述される。
概して、本開示の様々な実施形態は、中心窩レンダリングを行うように構成されるビデオレンダリングシステムのグラフィックスプロセッサを説明し、中心窩領域内の画像の部分は高解像度でレンダリングされ得、中心窩領域の外側の部分はより低解像度でレンダリングされ得る。具体的には、中心窩領域の外側にある画像部分は、画像をレンダリングするための算出を減らすために、集合光源でレンダリングされ、集合光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する。また、パーティクルシステムは、パーティクルシステムの効果が表示される画像の中心窩領域または周辺領域の内部に位置するかどうかに応じて、パーティクルのフルコンポーネントまたはパーティクルのサブシステムを使用してレンダリングされる。いくつかの実施形態では、中心窩レンダリングは、ヘッドマウントディスプレイ(HMD)の内部に画像を表示する目的の範囲内、または、その目的のために行われる。
様々な実施形態の上記の一般的理解によって、ここで、実施形態の例示的詳細は、様々な図面を参照して説明される。
本明細書の全体を通して、「ビデオゲーム」または「ゲームアプリケーション」への言及は、入力コマンドの実行によって指示される任意の種類の対話型アプリケーションを表すことを意味する。例証の目的だけのために、対話型アプリケーションは、ゲーム用アプリケーション、ワード処理、ビデオ処理、ビデオゲーム処理等を含む。さらに、用語「ビデオゲーム」及び「ゲームアプリケーション」は交換可能である。
図1Aは、本発明の実施形態による、ビデオゲームの対話型ゲームプレイ用のシステムを示す。ユーザ100がヘッドマウントディスプレイ(HMD)102を装着するように示されている。HMD102は、眼鏡、ゴーグル、またはヘルメットと同様の様式で装着され、ビデオゲームを対話型ビデオゲームから、または他のコンテンツを対話型アプリケーションから、ユーザ100に表示するように構成される。HMD102は、ユーザの眼に密接する表示機構のその準備によって、超没入体験をユーザに提供する。したがって、HMD102は、表示領域を、ユーザの視野の大部分またはさらに全体を占めるユーザの眼のそれぞれに提供することができる。図1A〜図1B及び他の図によって、レンダリング画像を表示するために、HMDを使用して示されているが、本発明の実施形態は任意の表示デバイス内の中心窩レンダリングを行うために適切であり、中心窩レンダリングは、周辺領域内に表示されるオブジェクトをレンダリングするための光源の集合を含み、レンダリング画像を任意のディスプレイ上に表示する。
一実施形態では、HMD102は、中心窩レンダリングで構成される画像を表示するように構成可能であり、中心窩領域内の画像の部分が高解像度で表示され、中心窩領域の外側の部分がより低解像度で表示される。具体的には、中心窩領域の外側にある画像部分は集合光源でレンダリングされ、集合光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する。したがって、クラスタの個別の光源のそれぞれの個別の効果を算出する代わりに、クラスタの集合光源の効果だけを算出する。当該方式では、例えば、表示される一連のビデオフレームに関する全帯域幅は制限される。
一実施形態では、HMD102は、コンピュータまたはゲーム機106に接続されることができる。コンピュータ106への接続は、有線または無線であり得る。コンピュータ106は、限定ではないが、ゲーム機、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、モバイルデバイス、携帯電話、タブレット、シンクライアント、セットトップボックス、メディアストリーミングデバイス等を含む、当技術分野で既知である任意の汎用または専用コンピュータであり得る。一実施形態では、コンピュータ106は、ビデオゲームを実行し、HMD102によってレンダリングするために、ビデオ及び音声をビデオゲームから出力するように構成され得る。コンピュータ106は、ビデオゲームを実行することが制限されていないが、また、HMD102によってレンダリングするために、VRコンテンツ191を出力する対話型アプリケーションを実行するように構成され得る。一実施形態では、コンピュータ106は、中心窩領域の外側の画像の部分をレンダリングするとき、光源を集合させることを行う。
ユーザ100は、コントローラ104を動作させ、ビデオゲームに入力を提供し得る。加えて、カメラ108は、ユーザ100が位置する対話環境の1つ以上の画像をキャプチャするように構成され得る。これらのキャプチャ画像は、ユーザ100、HMD102、及びコントローラ104の場所及び移動を判定するために分析されることができる。一実施形態では、コントローラ104は、その場所及び配向を判定するために追跡することができる、光または他のマーカ要素を含む。カメラ108は、音を対話環境からキャプチャする1つ以上のマイクロホンを含み得る。マイクロホン配列によってキャプチャされる音は、音源の場所を識別するために処理され得る。識別された場所からの音は、識別された場所からではない他の音を排除するために、選択的に利用または処理されることができる。さらに、カメラ108は、複数の画像キャプチャデバイス(例えば、立体カメラ対)、IRカメラ、深度カメラ、及びそれらの組み合わせを含むように定義されることができる。
別の実施形態では、コンピュータ106は、クラウドゲームプロバイダ112で、ネットワークを通して通信して、シンクライアントとして機能する。クラウドゲームプロバイダ112は、ユーザ102によってプレイされるビデオゲームを維持及び実行する。コンピュータ106は、HMD102、コントローラ104、及びカメラ108からの入力をクラウドゲームプロバイダに伝送し、クラウドゲームプロバイダは、実行するビデオゲームのゲーム状態に影響を及ぼす入力を処理する。ビデオデータ、音声データ、及び触覚フィードバックデータ等の実行するビデオゲームからの出力は、コンピュータ106に伝送される。コンピュータ106は、さらに、伝送前にデータを処理し得る、または、データを関連デバイスに直接伝送し得る。例えば、ビデオ及び音声ストリームはHMD102に提供される一方、触覚フィードバックデータは、コントローラ104に提供される振動フィードバックコマンドを生成するために使用される。
一実施形態では、HMD102、コントローラ104、及びカメラ108は、それら自体が、ネットワーク110に接続し、クラウドゲームプロバイダ112と通信する、ネットワークデバイスであり得る。例えば、コンピュータ106は、別にビデオゲーム処理を行わないが、通過ネットワークトラフィックを容易にする、ルータ等のローカルネットワークデバイスであり得る。HMD102、コントローラ104、及びカメラ108(すなわち、画像キャプチャデバイス)によるネットワークへの接続は、有線または無線であり得る。
さらに別の実施形態では、コンピュータ106はビデオゲームの一部を実行し得る一方、ビデオゲームの残りの部分は、クラウドゲームプロバイダ112上で実行され得る。他の実施形態では、ビデオゲームの一部は、また、HMD102で実行され得る。例えば、ビデオゲームをコンピュータ106からダウンロードするための要求は、クラウドゲームプロバイダ112によってサービスされ得る。要求がサービスされている間に、クラウドゲームプロバイダ112はビデオゲームの一部を実行し、HMD102上にレンダリングするために、ゲームコンテンツをコンピュータ106に提供し得る。コンピュータ106は、ネットワーク110を通して、クラウドゲームプロバイダ112と通信し得る。HMD102、コントローラ104、及びカメラ108から受信した入力がクラウドゲームプロバイダ112に伝送され、その間に、ビデオゲームは、コンピュータ106上にダウンロードしている。クラウドゲームプロバイダ112は、実行するビデオゲームのゲーム状態に影響を及ぼす入力を処理する。ビデオデータ、音声データ、及び触覚フィードバックデータ等の実行するビデオゲームからの出力は、各々のデバイスへの前方伝送のために、コンピュータ106に伝送される。
いったんビデオゲームがコンピュータ106に完全にダウンロードされると、コンピュータ106は、ビデオゲームを実行し、クラウドゲームプロバイダ112上に中止した場所からビデオゲームのゲームプレイを再開し得る。HMD102、コントローラ104、及びカメラ108からの入力はコンピュータ106によって処理され、HMD102、コントローラ104、及びカメラ108から受信された入力に応答して、ビデオゲームのゲーム状態を調節する。係る実施形態では、コンピュータ106におけるビデオゲームのゲーム状態は、クラウドゲームプロバイダ112におけるゲーム状態と同期する。同期化は、コンピュータ106及びクラウドゲームプロバイダ112の両方において、ビデオゲームの現在の状態を継続することが定期的に行われ得る。コンピュータ106は、出力データを関連デバイスに直接伝送し得る。例えば、ビデオ及び音声ストリームはHMD102に提供される一方、触覚フィードバックデータは、コントローラ104に提供される振動フィードバックコマンドを生成するために使用される。
図1Bは、本発明の実施形態による、VRコンテンツ191の生成と併せたHMD102の機能(例えば、アプリケーション及び/またはビデオゲームの実行等)を概念的に示す。いくつかの実施態様では、VRコンテンツエンジン120は、HMD102に通信するように結合されるコンピュータ106(図示されない)で実行される。コンピュータは、HMDに対してローカルであり得る(例えば、ローカルエリアネットワークの一部)、または、リモートに位置し(例えば、広域ネットワーク、クラウドネットワーク等の一部)、ネットワークを介してアクセスされ得る。HMD102とコンピュータ106との間の通信は、有線接続プロトコルまたは無線接続プロトコルに従い得る。例えば、アプリケーションを実行するVRコンテンツエンジン120は、ビデオゲームを実行するビデオゲームエンジンであり得、ビデオゲームのゲーム状態を更新するために入力を受信するように構成される。図1Bの以下の説明は、簡潔及び明確にする目的のために、ビデオゲームを実行するVRコンテンツエンジン120の状況の範囲内で説明され、VRコンテンツ191を生成することが可能である任意のアプリケーションの実行を表すことが意図される。オブジェクトの存在及び場所、仮想環境の状態、イベントのトリガ、ユーザプロフィール、視点等の様々な態様の現在のゲームプレイを定義するビデオゲームの様々なパラメータの値によって、少なくとも部分的に、ビデオゲームのゲーム状態を定義することができる。
示される実施形態では、ゲームエンジン120は、例として、コントローラ入力161、音声入力162、及び運動入力163を受信する。コントローラ入力161は、ハンドヘルドゲームコントローラ104(例えば、Sony DUALSHOCK(登録商標)4 無線コントローラ、Sony PlayStation(登録商標)Move モーションコントローラ)、または装着可能グローブインターフェースコントローラ等の装着可能コントローラ等の、HMD102から分離しているゲームコントローラの動作から定義され得る。例として、コントローラ入力161は、方向入力、ボタン押し、トリガアクティベーション、運動、ジェスチャ、またはゲームコントローラの動作から処理される他の種類の入力を含み得る。音声入力162は、HMD102のマイクロホン151から、または画像キャプチャデバイス108内に含まれるマイクロホンから、またはローカルシステム環境内の他の場所で処理されることができる。運動入力163は、HMD102内に含まれる運動センサ159から、またはHMD102の画像をキャプチャするときに画像キャプチャデバイス108から処理されることができる。VRコンテンツエンジン120(例えば、ゲームアプリケーションを実行するエンジン)は、ビデオゲームのゲーム状態を更新するゲームエンジンの構成に従って処理される入力を受信する。エンジン120は、ゲーム状態データを様々なレンダリングモジュールに出力し、レンダリングモジュールは、ゲーム状態データを処理し、ユーザに提示されるコンテンツを定義する。
示される実施形態では、ビデオレンダリングモジュール183は、HMD102上に提示するために、ビデオストリームをレンダリングすることが定義される。中心窩ビューレンダラ190は、ビデオレンダリングモジュール183と一体となっている及び/またはビデオレンダリングモジュール183から独立している中心窩画像をレンダリングするように構成される。加えて、複数の実施形態では、中心窩ビューレンダラ190によって提供される機能は、ビデオレンダリングモジュール183の内部に組み込まれ得る。具体的には、中心窩ビューレンダラ190は、中心窩ビューレンダリングを行うように構成され、中心窩領域内の画像の部分は高解像度を有し、中心窩領域の外側の部分はより低解像度を有する。具体的には、中心窩領域の外側にある画像部分は、画像をレンダリングするための算出を減らすために、集合光源でレンダリングされ、集合光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する。クラスタ生成部192は、中心窩レンダリングの目的のために、光源のクラスタ内に、光源を集合させるように構成される。より具体的には、遅延タイルレンダラ194は、ディスプレイの画素の個別のタイル部分内のオブジェクトをレンダリングすることによって、遅延タイルレンダリングを行うように構成され、中心窩領域の外側に位置するオブジェクトを表示するタイルに関して、中心窩レンダリングを行うとき、光源はクラスタ生成部192によって集合する。
HMD102内の光学部170のレンズは、VRコンテンツ191を視認するように構成される。ディスプレイスクリーン175は、光学部170のレンズの後ろに配置され、その状態では、光学部170のレンズは、HMD102がユーザによって装着されるとき、ディスプレイスクリーン175とユーザの眼160との間にある。当該方式では、ビデオストリームは、ディスプレイスクリーン/プロジェクタ機構175によって提示され、ユーザの眼160によって光学部170を通して視認され得る。HMDユーザは、例えば、HMDを装着し、ゲームプレイ用のビデオゲームを選択することによって、対話型VRコンテンツ191(例えば、VRビデオソース、ビデオゲームコンテンツ等)と対話することを選び得る。ビデオゲームから生じる対話型仮想現実(VR)シーンは、HMDのディスプレイスクリーン175上でレンダリングされる。当該方式では、HMDは、ユーザの眼に密接するHMDの表示機構を準備することによって、ユーザがゲームプレイに完全に没入することを可能にする。コンテンツをレンダリングするためのHMDのディスプレイスクリーン内に画定される表示領域は、ユーザの視野の大部分またはさらに全体を占め得る。一般的に、各眼は、1つ以上のディスプレイスクリーンを視認している光学部170の関連レンズによって支えられる。
音声レンダリングモジュール182は、ユーザによって聞くために、音声ストリームをレンダリングするように構成される。一実施形態では、音声ストリームは、HMD102に関連付けられるスピーカ152を通して出力される。スピーカ152は、オープンエアスピーカ、ヘッドホン、または音声を提示することが可能である任意の他の種類のスピーカの形態を取り得ることを認識されたい。
一実施形態では、視線追跡カメラ165は、HMD102内に含まれ、ユーザの視線の追跡を可能にする。1つだけの視線追跡カメラ165が含まれるが、2つ以上の視線追跡カメラが、ユーザの視線を追跡するために使用され得ることに留意されたい。視線追跡カメラは、ユーザの眼の画像をキャプチャし、画像はユーザの視線方向を判定するために分析される。一実施形態では、ユーザの視線方向についての情報は、ビデオレンダリングに影響を及ぼすために利用されることができる。例えば、ユーザの眼が特定の方向に見ていることが判定された場合、中心窩ビューレンダラ190によって提供される中心窩レンダリングによってより詳細な高解像度、またはユーザが見ている領域のより高速な更新等を提供することによって、その方向に対するビデオレンダリングを優先または強調することができる。ユーザの視線方向は、ヘッドマウントディスプレイに対して、ユーザが位置する実環境に対して、及び/またはヘッドマウントディスプレイ上にレンダリングされる仮想環境に対して定義できることを認識されたい。
大まかに言って、視線追跡カメラ165によってキャプチャされた画像の分析は、単独で考慮されるとき、HMD102に対するユーザの視線方向を提供する。しかしながら、HMD102の追跡された場所及び配向と組み合わせて考慮されるとき、HMD102の場所及び配向がユーザの頭部の場所及び配向と同じであるように、ユーザの現実世界の視線方向を判定することができる。すなわち、ユーザの眼の位置移動を追跡することと、HMD102の場所及び配向を追跡することとから、ユーザの現実世界視線方向を判定することができる。仮想環境のビューがHMD102上でレンダリングされるとき、ユーザの現実世界の視線方向は、仮想環境におけるユーザの仮想世界の視線方向を判定するために適合されることができる。
加えて、触覚フィードバックモジュール181は、コントローラ104等のHMDユーザによって動作するHMD102または別のデバイスのいずれかに含まれる触覚フィードバックハードウェアに、信号を提供するように構成される。触覚フィードバックは、振動フィードバック、温度フィードバック、圧力フィードバック等の様々な種類の触感の形態を取り得る。
図1Cは、本発明の実施形態による、VRコンテンツ191の生成と併せたHMD102の機能(例えば、アプリケーション及び/またはビデオゲームの実行等)を概念的に示す。図1Cは、図1CのHMD102がパーティクル及びシミュレーションモデルを中心窩に適応するように構成される中心窩ビューレンダラ9190を含むことを除いて、図1Bと同様であり、図1BのHMD102は、遅延ライティングを最適化するように構成される中心窩ビューレンダラ190を含む。同様に、図1B及び図1Cで、(ならびに、本明細書全体を通して)番号付けされたコンポーネントは、同一であり、同じ機能を行う。
示される実施形態では、ビデオレンダリングモジュール183は、HMD102上に提示するために、ビデオストリームをレンダリングすることが定義される。中心窩ビューレンダラ9190は、ビデオレンダリングモジュール183と一体となっている及び/またはビデオレンダリングモジュール183から独立している中心窩画像をレンダリングするように構成される。加えて、複数の実施形態では、中心窩ビューレンダラ9190によって提供される機能は、ビデオレンダリングモジュール183の内部に組み込まれ得る。具体的には、中心窩ビューレンダラ9190は、中心窩ビューレンダリングを行うように構成され、中心窩領域内の画像の部分は高解像度を有し、中心窩領域の外側の部分はより低解像度を有する。より具体的には、パーティクルシステムは、画像の中心窩領域に対して、対応する効果の表示場所に応じて異なるようにシミュレート及び/またはレンダリングされる。例えば、中心窩領域の内側に表示されるパーティクルシステムは、パーティクルシステムのパーティクルのフルコンポーネントを使用して、シミュレート及び/またはレンダリングされる。周辺領域内に表示されるパーティクルシステムは、パーティクルのサブシステムを使用して、シミュレート及び/またはレンダリングされる。中心窩パーティクル及び/またはフラグメント判定部9192は、レンダリングされたパーティクル及び/またはパーティクルシステムが中心窩領域の内側または外側に表示されたかどうかを判定するように構成される。パーティクルシステム及び/またはサブシステムシミュレータ9195は、様々な実施形態では、パーティクルシステムにおけるパーティクルのフルコンポーネントを使用して効果をシミュレートするように、または、パーティクルのサブシステムを使用して効果をシミュレートするように構成される。例えば、制限されたパーティクル(例えば、1000未満)を有するパーティクルシステムに関して、効果が中心窩または周辺領域の内部で発生するかどうかにかかわらず、パーティクルシステムにおけるパーティクルのフルコンポーネントをシミュレートする。しかしながら、パーティクルシステムによって発生する効果が周辺領域内に表示されるとき、パーティクルのサブシステムはレンダリングされる。この場合、パーティクルのサブシステムは、ランダムパーティクルセレクタ9196によって生成され得る。また、大量のパーティクル(例えば、1000を超えるもの)を有するパーティクルシステムに関して、パーティクルシステムによって発生する効果が周辺領域内に表示されるとき、パーティクルのサブシステムはシミュレートされ、その後、パーティクルの同じサブシステムからの出力を使用してレンダリングされる。この場合のパーティクルのサブシステムは、パーティクルクラスタラ及びアグリゲータ9198によって判定され得る。パーティクルシステム及びサブシステムレンダリング9194は、パーティクルシステムによって発生する効果が中心窩領域内に表示されるとき、パーティクルシステムにおけるパーティクルのフルコンポーネントをレンダリングし、効果が周辺領域内に表示されるとき、パーティクルのサブシステムをレンダリングするように構成される。パーティクルスケーラ及びカラーモディファイア9199は、パーティクルのサブシステムにおけるパーティクルをスケーリングし、パーティクルの色を修正し、パーティクルシステムのユーザによって同じまたは同様の感知できる効果を達成するように構成される。例えば、サブシステムにおける各パーティクルは、(例えば、縮小率に基づいて)より大きいサイズスケーリングされ、暗くなる(例えば、縮小率に基づいてアルファ値を修正する)。中心窩ビューレンダラ9190のコンポーネント及び/または機能は、CPUもしくはGPU、またはそれらの組み合わせの内部で行われ得る。
一実施形態では、視線追跡カメラ165は、HMD102内に含まれ、ユーザの視線の追跡を可能にする。1つだけの視線追跡カメラ165が含まれるが、2つ以上の視線追跡カメラが、ユーザの視線を追跡するために使用され得ることに留意されたい。視線追跡カメラは、ユーザの眼の画像をキャプチャし、画像はユーザの視線方向を判定するために分析される。一実施形態では、ユーザの視線方向についての情報は、ビデオレンダリングに影響を及ぼすために利用されることができる。例えば、ユーザの眼が特定の方向に見ていることが判定された場合、中心窩ビューレンダラ9190によって提供される中心窩レンダリングによってより詳細な高解像度、中心窩内に表示されるパーティクルシステム効果のより高解像度、中心窩の外側に表示されるパーティクルシステム効果のより低解像度、またはユーザが見ている領域のより高速な更新等を提供することによって、その方向に対するビデオレンダリングを優先または強調することができる。ユーザの視線方向は、ヘッドマウントディスプレイに対して、ユーザが位置する実環境に対して、及び/またはヘッドマウントディスプレイ上にレンダリングされる仮想環境に対して定義できることを認識されたい。
図2Aは、対応するユーザに対してローカルで実行する1つ以上のゲームアプリケーションをプレイする1人以上のユーザにゲーム制御を提供するシステム200Aを示し、バックエンドサーバサポート(例えば、ゲームサーバ205を経由してアクセス可能である)が複数のユーザをサポートする複数のローカルコンピューティングデバイスをサポートするように構成され得、各ローカルコンピューティングデバイスは、シングルプレイヤーまたはマルチプレイヤービデオゲーム等のビデオゲームのインスタンスを実行し得る。例えば、マルチプレイヤーモードでは、ビデオゲームがローカルで実行している間、クラウドゲームネットワークは、同時に、情報(例えば、ゲーム状態データ)を各ローカルコンピューティングデバイスから受信し、1つ以上のローカルコンピューティングデバイスの全体を通して、適宜、当該情報を分散し、これにより、各ユーザは、マルチプレイヤービデオゲームのゲーム環境において、(例えば、ビデオゲームの対応するキャラクタによって)他のユーザと対話することが可能である。当該方式では、クラウドゲームネットワークは、マルチプレイヤーゲーム環境内でユーザ毎に、ゲームプレイを調整及び組み合わせる。ここで図面を参照すると、同様の参照番号は同一の部分または対応する部分を示す。
図2Aに示されるように、複数のユーザ215(例えば、ユーザ100A、ユーザ100B・・・ユーザ100N)は、複数のゲームアプリケーションをプレイし、ゲームアプリケーションのそれぞれは、対応するユーザの対応するクライアントデバイス106(例えば、ゲームコンソール)上で、ローカルで実行される。クライアントデバイス106のそれぞれは、対応するゲームアプリケーションのローカルでの実行が行われる点で、同様に構成され得る。例えば、ユーザ100Aは、対応するクライアントデバイス106上の第1のゲームアプリケーションをプレイし得、第1のゲームアプリケーションのインスタンスは、対応するゲームタイトル実行エンジン211によって実行される。第1のゲームアプリケーションを実施するゲームロジック226A(例えば、実行可能コード)は、対応するクライアントデバイス106上に記憶され、第1のゲームアプリケーションを実行するために使用される。例証の目的のために、ゲームロジックは、携帯用媒体(例えば、フラッシュドライブ、コンパクトディスク等)によって、またはネットワークを経由して(例えば、ゲームプロバイダからインターネット250を経由してダウンロードされる)、対応するクライアントデバイス106に送達され得る。加えて、ユーザ100Bは、対応するクライアントデバイス106上の第2のゲームアプリケーションをプレイし、第2のゲームアプリケーションのインスタンスは、対応するゲームタイトル実行エンジン211によって実行される。第2のゲームアプリケーションは、ユーザ100Aのために実行する第1のゲームアプリケーションに同一であり得る、または異なるゲームアプリケーションであり得る。第2のゲームアプリケーションを実施するゲームロジック226B(例えば、実行可能コード)は、前述に説明したような対応するクライアントデバイス106上に記憶され、第2のゲームアプリケーションを実行するために使用される。さらに、ユーザ100Nは、対応するクライアントデバイス106上のN番目のゲームアプリケーションをプレイし、N番目のゲームアプリケーションのインスタンスは、対応するゲームタイトル実行エンジン211によって実行される。N番目のゲームアプリケーションは、第1もしくは第2のゲームアプリケーションに同一であり得る、または完全に異なるゲームアプリケーションであり得る。第3のゲームアプリケーションを実施するゲームロジック226N(例えば、実行可能コード)は、前述に説明したような対応するクライアントデバイス106上に記憶され、N番目のゲームアプリケーションを実行するために使用される。
前述に説明しように、クライアントデバイス106は、ゲームコントローラ、タブレットコンピュータ、キーボード等の様々な種類の入力デバイスからの入力と、ビデオカメラ、マウス、タッチパッド等によってキャプチャされるジェスチャとを受信し得る。クライアントデバイス106は、ネットワーク150を通してゲームサーバ205に接続することが可能である、少なくともメモリ及びプロセッサモジュールを有する任意の種類のコンピューティングデバイスであり得る。また、対応するユーザのクライアントデバイス106は、ローカルまたはリモートで実行するゲームタイトル実行エンジン211によって実行されるレンダリング画像を生成するように、及びレンダリング画像をディスプレイ(例えば、ディスプレイ11、HMD102等)上に表示するように構成される。例えば、レンダリング画像は、ユーザ100Aのクライアントデバイス106上で実行する第1のゲームアプリケーションのインスタンスに関連付けられ得る。例えば、対応するクライアントデバイス106は、ゲームプレイを駆動するために使用される入力コマンド等によって、対応するユーザのゲームプレイを実施するために、ローカルまたはリモートで実行される対応するゲームアプリケーションのインスタンスと相互作用するように構成される。クライアントデバイス106のいくつかの例は、パーソナルコンピュータ(PC)、ゲームコンソール、ホームシアターデバイス、汎用コンピュータ、モバイルコンピューティングデバイス、タブレット、電話機、またはゲームサーバ205と相互作用し、ビデオゲームのインスタンスを実行することができる任意の他の種類のコンピューティングデバイスを含む。
一実施形態では、クライアントデバイス106は、ゲームアプリケーションをプレイする対応するユーザのためのシングルプレイヤーモードで動作している。別の実施形態では、複数のクライアントデバイス106は、それぞれのユーザが特定のゲームアプリケーションをプレイする対応するユーザのためのマルチプレイヤーモードで動作している。その場合、ゲームサーバを介するバックエンドサーバサポートは、マルチプレイヤー処理エンジン219等によってマルチプレイヤー機能を提供し得る。具体的には、マルチプレイヤー処理エンジン219は、特定のゲームアプリケーション用のマルチプレイヤーゲームセッションを制御するように構成される。例えば、マルチプレイヤー処理エンジン219は、マルチプレイヤーセッションコントローラ216と通信し、マルチプレイヤーセッションコントローラ216は、マルチプレイヤーゲームセッションに参加するユーザ及び/またはプレイヤーのそれぞれとの通信セッションを確立及び維持するように構成される。当該方式では、当該セッションにおいてユーザは、マルチプレイヤーセッションコントローラ216によって制御され、相互に通信することができる。
さらに、マルチプレイヤー処理エンジン219は、各ユーザの対応するゲーム環境内でユーザ間の対話を可能にするために、マルチプレイヤーロジック218と通信する。具体的には、状態共有モジュール217は、マルチプレイヤーゲームセッションにおけるユーザのそれぞれに関する状態を管理するように構成される。例えば、状態データは、特定地点における、対応するユーザに関する(ゲームアプリケーションの)ゲームプレイの状態を定義するゲーム状態データを含み得る。例えば、ゲーム状態データは、ゲームキャラクタ、ゲームオブジェクト、ゲームオブジェクト属性、ゲーム属性、ゲームオブジェクト状態、グラフオーバーレイ等を含み得る。当該方式では、ゲーム状態データは、ゲームアプリケーションの対応する地点において存在するゲーム環境の生成を可能にする。ゲーム状態データは、また、CPU、GPU、メモリ、登録値、プログラムカウンタ値、プログラム可能DMA状態、DMAに関するバッファデータ、オーディオチップ状態、CD−ROM状態等の状態など、ゲームプレイをレンダリングするために使用されるすべてのデバイスの状態を含み得る。ゲーム状態データは、また、どの実行可能コードの一部が当該地点からビデオゲームを実行するためにロードされる必要があるかを識別し得る。ゲーム状態データは、データベース(図示されない)内に記憶され得、状態共有モジュール217によってアクセス可能である。
さらに、状態データは、対応するプレイヤーに関するビデオゲームを個人用にする情報を含むユーザ保存データを含み得る。これは、ユーザによってプレイされるキャラクタに関連付けられる情報を含み、これにより、ビデオゲームは、ユーザに一意であり得るキャラクタ(例えば、場所、姿、見た目、衣類、武器等)でレンダリングされる。当該方式では、ユーザ保存データは、対応するユーザのゲームプレイのキャラクタの生成を可能にし、当該キャラクタは、対応するユーザによって現在経験しているゲームアプリケーションの地点に対応する状態を有する。例えば、ユーザ保存データは、ゲームをプレイするときユーザ100Aによって選択されたゲーム難易度、ゲームレベル、キャラクタ属性、キャラクタの場所、残された寿命の数値、利用可能である寿命に関する可能である合計数、鎧、戦利品、時間カウンタ値等を含み得る。例えば、ユーザ保存データは、また、対応するユーザ100Aを識別するユーザプロフィールデータを含み得る。ユーザ保存データは、ストレージ(図示されない)内に記憶され得る。
当該方式では、状態共有データ217及びマルチプレイヤーロジック218を使用するマルチプレイヤー処理エンジン219は、オブジェクト及びキャラクタを、マルチプレイヤーゲームセッションに参加するユーザのゲーム環境のそれぞれにオーバーレイ/挿入することが可能である。例えば、第1のユーザのキャラクタは、第2のユーザのゲーム環境にオーバーレイ/挿入される。これは、それらの各々のゲーム環境のそれぞれ(例えば、スクリーン上に表示されるようなもの)を介して、マルチプレイヤーゲームセッションにおけるユーザ間の対話を可能にする。
図2Bは、本開示の一実施形態による、クラウドゲームネットワークを通して実行される各々のVR視聴環境においてゲームアプリケーションをプレイする1人以上のユーザ215(例えば、ユーザ100L、100M・・・100Z)にゲーム制御を提供するシステム200Bを示す。いくつかの実施形態では、クラウドゲームネットワークは、ホストマシンのハイパーバイザ上で起動する複数の仮想マシン(VM)を含むゲームクラウドシステム210であり得、1つ以上の仮想マシンは、ホストのハイパーバイザに利用可能であるハードウェアリソースを利用するゲームプロセッサモジュールを実行するように構成される。ここで図面を参照すると、同様の参照番号は同一の部分または対応する部分を示す。
示されるように、ゲームクラウドシステム210は、複数の対話型ビデオゲームまたはゲームアプリケーションへのアクセスを提供するゲームサーバ205を含む。ゲームサーバ205は、クラウド内で利用可能である任意の種類のサーバコンピューティングデバイスであり得、1つ以上のホスト上で実行する1つ以上の仮想マシンとして構成され得る。例えば、ゲームサーバ205は、ユーザのゲームアプリケーションのインスタンスをインスタンス化するゲームプロセッサをサポートする仮想マシンを管理し得る。したがって、複数の仮想マシンに関連付けられるゲームサーバ205の複数のゲームプロセッサは、複数のユーザ215のゲームプレイに関連付けられるゲームアプリケーションの複数のインスタンスを実行するように構成される。当該方式では、バックエンドサーバサポートは、複数のゲームアプリケーションのゲームプレイのメディア(例えば、ビデオ、音声等)のストリーミングを、複数の対応するユーザに提供する。
複数のユーザ215は、ネットワーク250を介してゲームクラウドシステム210にアクセスし、ユーザ(例えば、ユーザ100L、100M・・・100Z)は、対応するクライアントデバイス106’を介してネットワーク250にアクセスし、クライアントデバイス106’は、図2Aのクライアントデバイス106(例えば、ゲーム実行エンジン211等を含む)と同様に構成され得る、または算出機能を提供するバックエンドサーバ(例えば、ゲーム実行エンジン211を含む)とのインターフェースを提供するシンクライアントとして構成され得る。
具体的には、対応するユーザ100Lのクライアントデバイス106’は、インターネット等のネットワーク250を通して、ゲームアプリケーションへのアクセスを要求するように、ならびにゲームサーバ205によって実行され及び対応するユーザ100Lに関連付けられる表示デバイスに送達されるゲームアプリケーション(例えば、ビデオゲーム)のインスタンスをレンダリングするように構成される。例えば、ユーザ100Lは、ゲームサーバ205のゲームプロセッサ上で実行するゲームアプリケーションのインスタンスで、クライアントデバイス106’を経由して対話し得る。より具体的には、ゲームアプリケーションのインスタンスは、ゲームタイトル実行エンジン211によって実行される。ゲームアプリケーションを実施するゲームロジック(例えば、実行可能コード)は、データストア(図示されない)によって記憶され及びアクセス可能であり、ゲームアプリケーションを実行するために使用される。示されるように、ゲームタイトル処理エンジン211は、複数のゲームロジック277を使用して、複数のゲームアプリケーションをサポートすることが可能である。
前述に説明したように、クライアントデバイス106’は、ゲームコントローラ、タブレットコンピュータ、キーボード等の様々な種類の入力デバイスからの入力と、ビデオカメラ、マウス、タッチパッド等によってキャプチャされるジェスチャとを受信し得る。クライアントデバイス106’は、ネットワーク250を通してゲームサーバ205に接続することが可能である、少なくともメモリ及びプロセッサモジュールを有する任意の種類のコンピューティングデバイスであり得る。また、対応するユーザのクライアントデバイス106’は、ローカルまたはリモートで実行するゲームタイトル実行エンジン211によって実行されるレンダリング画像を生成するように、及びレンダリング画像をディスプレイ上に表示するように構成される。例えば、レンダリング画像は、ユーザ100Lのクライアントデバイス106’上で実行する第1のゲームアプリケーションのインスタンスに関連付けられ得る。例えば、対応するクライアントデバイス106’は、ゲームプレイを駆動するために使用される入力コマンド等によって、対応するユーザのゲームプレイを実施するために、ローカルまたはリモートで実行される対応するゲームアプリケーションのインスタンスと相互作用するように構成される。
クライアントデバイス106’は、レンダリング画像を受信するように、及びレンダリング画像をディスプレイ11またはHMD102上に表示する(例えば、VRコンテンツを表示する)ように構成される。例えば、クラウドベースサービスによって、レンダリング画像は、ユーザ100に関連して、ゲームサーバ205のゲーム実行エンジン211上で実行するゲームアプリケーションのインスタンスによって送達され得る。別の例では、ローカルゲーム処理によって、レンダリング画像は、ローカルゲーム実行エンジン211によって送達され得る。いずれの場合、クライアントデバイス106は、ゲームプレイを駆動するために使用される入力コマンド等によって、対応するユーザ100のゲームプレイに関連して、ローカルまたはリモートの実行エンジン211と相互作用するように構成される。別の実施態様では、レンダリング画像は、クラウドベースサービスから、または、クライアントデバイス106(例えば、PlayStation(登録商標)リモートプレイ)を介して直接、無線または有線で、スマートフォンまたはタブレットにストリームされ得る。
別の実施形態では、前述に説明したようなマルチプレイヤー処理エンジン219は、ゲームアプリケーション用のマルチプレイヤーゲームセッションを制御するために提供する。具体的には、マルチプレイヤー処理エンジン219がマルチプレイヤーゲームセッションを管理しているとき、マルチプレイヤーセッションコントローラ216は、マルチプレイヤーゲームセッションのユーザ及び/またはプレイヤーのそれぞれとの通信セッションを確立及び維持するように構成される。当該方式では、当該セッションにおいてユーザは、マルチプレイヤーセッションコントローラ216によって制御され、相互に通信することができる。
さらに、マルチプレイヤー処理エンジン219は、各ユーザの対応するゲーム環境内でユーザ間の対話を可能にするために、マルチプレイヤーロジック218と通信する。具体的には、状態共有モジュール217は、マルチプレイヤーゲームセッションにおけるユーザのそれぞれに関する状態を管理するように構成される。例えば、前述に説明したように、状態データは、特定地点における、対応するユーザ100に関する(ゲームアプリケーションの)ゲームプレイの状態を定義するゲーム状態データを含み得る。さらに、前述に説明したように、状態データは、対応するプレイヤーに関するビデオゲームを個人用にする情報を含むユーザ保存データを含み得る。例えば、状態データはユーザのキャラクタに関連付けられる情報を含み、これにより、ビデオゲームは、ユーザに一意であり得るキャラクタ(例えば、姿、見た目、衣類、武器等)でレンダリングされる。当該方式では、状態共有データ217及びマルチプレイヤーロジック218を使用するマルチプレイヤー処理エンジン219は、オブジェクト及びキャラクタを、マルチプレイヤーゲームセッションに参加するユーザのゲーム環境のそれぞれにオーバーレイ/挿入することが可能である。これは、それらの各々のゲーム環境のそれぞれ(例えば、スクリーン上に表示されるようなもの)を介して、マルチプレイヤーゲームセッションにおけるユーザ間の対話を可能にする。
図3Aは、本開示の一実施形態による、ディスプレイ300上に示される画像310を示し、当該画像は高解像度の中心窩領域310Aを含み、中心窩領域がディスプレイの中心に対応する。具体的には、単純及び明確にするために、画像310は、文字「E」の行列を含む。画像310は、中心窩領域310A及び周辺領域310Bを含む複数の領域に分割される。
示されるように、中心窩領域310Aは静止しており、ディスプレイ300の中心に対応する。中心窩領域310Aは、ビデオゲームのグラフィックスを視認するとき等に、ほとんど、ユーザが(例えば、眼の窩を使用して)視線を向ける領域と想定される。時々、ユーザの視線は中心から外れるように向き得るが、視線は、ほとんど、(メインコンテンツを視認するために)中心に向いている。いくつかの場合、画像は、最初に、(例えば、着目オブジェクトを視認するために)ユーザの視線を中心から外れるようにし、次に、(例えば、中心窩領域310Aに向かってオブジェクトを移動させることによって)視線を中心に戻すように設計されている。
具体的には、中心窩領域310Aの内部に表示される及び位置する画像310等の任意の画像の部分(複数可)は、より高解像度においてレンダリングされる。例えば、グラフィックスパイプラインは、算出複雑度を減らすために使用される任意の技術の使用を最小にしながら、中心窩領域310A内で画像の部分をレンダリングする。具体的には、本発明の実施形態に関して、中心窩領域310Aに対応する画素を使用して表示されるオブジェクトに影響を及ぼす光源は、オブジェクト上のその効果のそれぞれ(例えば、オブジェクトの多角形上の色、テクスチャ、シャドーイング等)を判定するために、グラフィックスパイプライン内で個別に算出される。より高解像度を表すものとして、中心窩領域310Aの内部で表示される文字「E」のオブジェクトは、明瞭に、鮮やかな色、及び最小のぼやけで示される。これは、ディスプレイ300上で中心窩領域310Aに向かうユーザの視線と一致し、それを利用している。
加えて、中心窩領域310B内に配置される及び位置する画像310等の画像の部分(複数可)は、より低解像度(例えば、中心窩領域310A内に位置する画像及び/またはオブジェクトの部分の解像度よりも低い)においてレンダリングされる。一般的に、ユーザの視線は、その視線の主な焦点が中心窩領域310A内のオブジェクトに向いているとき、周辺領域310B内に位置する及び/または表示されるオブジェクトに向いていない。シーン内の現実のビューと一致するように、周辺領域310B内のオブジェクトは、より低解像度でレンダリングされ、例えば、ユーザが移動オブジェクト(例えば、膝の屈伸運動の代わりに脚を伸ばして歩行している人間)を知覚することが可能であるように十分に細部にわたって、周辺領域310B内の単数のオブジェクト内の、または複数のオブジェクト間で十分なコントラストでレンダリングされる。より低解像度でレンダリングを達成するために、グラフィックスパイプラインは、算出複雑度を減らす計算効率の良い技術を使用して、周辺領域310B内で画像の部分をレンダリングし得る。具体的には、本発明の実施形態に関して、周辺領域310B内の画素に対応する画素を使用して表示されるオブジェクトに影響を及ぼす光源は、1つ以上のクラスタにグループ化され得、クラスタ内の光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する単一の光源に集合する。したがって、クラスタの個別の光源のそれぞれの個別の効果を算出する代わりに、クラスタの集合光源の効果だけを算出する。これは、画像全体をレンダリングするときに算出処理を減らし、特に、周辺領域310B内でレンダリングされたオブジェクトに関する算出処理を減らす。
また、シーン内の現実のビューと一致するように、周辺領域310B内のオブジェクトは、より低解像度でレンダリングされ、例えば、ユーザが移動オブジェクト(例えば、膝の屈伸運動の代わりに脚を伸ばして歩行している人間)を知覚することが可能であるように十分に細部にわたって、周辺領域310B内の単数のオブジェクト内の、または複数のオブジェクト間で十分なコントラストでレンダリングされる。より低解像度でレンダリングを達成するために、グラフィックスパイプラインは、算出複雑度を減らす計算効率の良い技術を使用して、周辺領域310B内で画像の部分をレンダリングし得る。具体的には、本発明の実施形態に関して、パーティクルシステムは、パーティクルシステムによって発生する効果が表示される画像の中心窩領域の内側または外側に表示されるかどうかに応じて、異なるようにシミュレート及び/またはレンダリングされる。例えば、中心窩領域の内側にあるパーティクルシステムは、パーティクルシステムのパーティクルのフルコンポーネントを使用して、シミュレート及び/またはレンダリングされる。中心窩領域の外側にある(例えば、周辺領域内の)パーティクルシステムは、パーティクルのサブシステムを使用して、シミュレート及び/またはレンダリングされる。したがって、周辺領域内に位置するパーティクルシステムの全てのパーティクルを算出する代わりに、パーティクルのサブシステムだけがシミュレート及び/またはレンダリングされ、それによって、対応する画像内のパーティクルシステムによって生じる効果をレンダリングするために必要な算出を少なくする。これは、(例えば、パーティクルシステムのシミュレーション及び/またはレンダリングによって)画像全体をレンダリングするときに算出処理を減らし、特に、周辺領域310B内でレンダリングされたパーティクルシステムに関する算出処理を減らす。また、パーティクルのサブシステムを使用してレンダリングされ、中心窩領域の外側に表示されるパーティクルシステムを含む各画像は、パーティクルシステムのパーティクルのフルコンポーネントを使用して、シミュレート及び/またはレンダリングされるパーティクルシステムを含む画像よりも少なくデータを定義することを必要とする。したがって、一連のビデオフレームは、転送されるデータが少ないため、最小のレイテンシで、またはレイテンシがなく、リアルタイムで、(例えば、有線または無線接続を通して)送達されることができる。
図3Bは、本開示の一実施形態による、ディスプレイ300上に示され、高解像度の中心窩領域310A’を含み、中心窩領域が、ユーザの視線が向いているディスプレイの場所に対応する、画像310’を示す。具体的には、画像310’は、図3Aに示される画像310と同様であり、単純及び明確にするために、文字「E」の行列を含む。画像310は、中心窩領域310A’及び周辺領域310B’を含む複数の領域に分割される。
示されるように、中心窩領域310A’は、ユーザの視線がどの方向に向いているかに応じて、ディスプレイ300の全体にわたって動的に移動する。前述に説明したように、例えば、HMD102の視線追跡カメラ165を使用して、視線を追跡し得る。したがって、中心窩領域310A’は必ずしも、ディスプレイ300の中心に対応しない場合があるが、代わりに、画像310’の内部のユーザの実際の方向及び注目の焦点に相関する。すなわち、中心窩領域310A’はユーザの片眼及び/または両眼の移動と一緒に動的に移動する。
前述に紹介したように、中心窩領域310A’の内部に表示される及び位置する画像310’等の任意の画像の部分(複数可)は、中心窩領域310A’内に位置するオブジェクトをレンダリングするときに算出複雑度を減らすために使用される任意のレンダリング技術の使用を最小にすることによって、より高解像度においてレンダリングされる。具体的には、本発明の実施形態に関して、中心窩領域310A’に対応する画素を使用して表示されるオブジェクトに影響を及ぼす光源は、オブジェクト上のその効果のそれぞれ(例えば、オブジェクトの多角形上の色、テクスチャ、シャドーイング等)を判定するために、グラフィックスパイプライン内で個別に算出される。より高解像度を表すものとして、中心窩領域310A’の内部で表示される文字「E」のオブジェクトは、明瞭に、鮮やかな色、及び最小のぼやけで示される。
加えて、中心窩領域310B’内に配置される及び位置する画像310’等の画像の部分(複数可)は、より低解像度(例えば、中心窩領域310A内に位置する画像及び/またはオブジェクトの部分の解像度よりも低い)においてレンダリングされる。前述に紹介したように、一般的に、ユーザの視線は、その視線の主な焦点が中心窩領域310A’内のオブジェクトに向いているとき、周辺領域310B’内に位置する及び/または表示されるオブジェクトに向いていない。したがって、周辺領域310B’内のオブジェクトは、より低解像度でレンダリングされ、例えば、ユーザが移動オブジェクト(例えば、膝の屈伸運動の代わりに脚を伸ばして歩行している人間)を知覚することが可能であるように十分に細部にわたって、周辺領域310B’内の単数のオブジェクト内の、または複数のオブジェクト間で十分なコントラストでレンダリングされる。より低解像度でレンダリングを達成するために、グラフィックスパイプラインは、算出複雑度を減らす計算効率の良い技術を使用して、周辺領域310B’内で画像の部分をレンダリングし得る。具体的には、本発明の実施形態に関して、周辺領域310B’内の画素に対応する画素を使用して表示されるオブジェクトに影響を及ぼす光源は、1つ以上のクラスタにグループ化され得、クラスタ内の光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する単一の光源に集合し、画像全体をレンダリングするとき算出処理を減らし、特に、周辺領域310B’内のオブジェクトに関する算出処理を減らす。さらに、より低解像度でレンダリングを達成するために、グラフィックスパイプラインは、算出複雑度を減らす計算効率の良い技術を使用して、周辺領域310B’内で画像の部分をレンダリングし得る。具体的には、本発明の実施形態に関して前述に説明したように、パーティクルシステムのシミュレーション及び/またはレンダリングは、パーティクルシステムの効果が画像の周辺領域内に表示されるとき、パーティクルのサブシステムを使用して行われる。
遅延ライティングの最適化
図4Aは、本開示の一実施形態による、中心窩レンダリングを行うように構成されるグラフィックスパイプライン400Aを実施する、グラフィックスプロセッサを示す。グラフィックスパイプライン400Aは、3D(3次元)多角形レンダリングプロセスを使用して画像をレンダリングするための全体的プロセスを示しているが、中心窩レンダリングを行うパイプライン内部の追加プログラマブル素子を含む。レンダリング画像のためのグラフィックスパイプライン400Aは、ディスプレイ内の画素毎に対応する色情報を出力し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドーイング等)を表し得る。グラフィックスパイプライン400Aは、図1Aのゲームコンソール106、図1BのVRコンテンツエンジン120、図2A及び図2Bのクライアントデバイス106、及び/または図2Bのゲームタイトル処理エンジン211の内部で実施可能である。
示されるように、グラフィックスパイプラインは、入力ジオメトリ405を受信する。例えば、入力ジオメトリ405は、3Dゲーム世界内の頂点と、頂点のそれぞれに対応する情報とを含み得る。頂点によって画定される多角形(例えば、三角形)を使用してゲーム世界内の所与のオブジェクトを表すことができ、次に、対応する多角形の表面は、グラフィックスパイプライン400Aによって処理され、最終効果(例えば、色、テクスチャ等)を達成する。頂点属性は、法線(例えば、その方向は頂点に対して直角である)、色(例えば、RGB―赤、緑、及び青の3色の組等)、及びテクスチャ座標/マッピング情報を含み得る。
頂点シェーダ及び/またはプログラム410は、入力ジオメトリ405を受信し、3Dシーン内でオブジェクトを構成する多角形またはプリミティブを作る。すなわち、頂点シェーダ410は、オブジェクトがゲーム世界内にセットされるとき、プリミティブを使用してオブジェクトを作り上げる。頂点シェーダ410は、シーンのライティングに応じて、多角形に関するライティング計算及びシャドーイング計算を行うように構成され得る。プリミティブは、頂点シェーダ410によって出力され、グラフィックスパイプライン400Aの次のステージに送達される。また、クリッピング(例えば、ゲーム世界内の視点によって定義されるようなビューフラスタムの外側にあるプリミティブを識別及び無視する)等の追加動作は、頂点シェーダ410によって行われ得る。
プリミティブはラスタライザ420にフィードされ、ラスタライザ420は、シーン内のオブジェクトを、3Dゲーム世界内の視点(例えば、カメラ場所、ユーザの眼の位置等)によって定義される2次元(2D)の画像平面に投影するように構成される。単純化レベルにおいて、ラスタライザ420は各プリミティブを確認して、対応するプリミティブによってどの画素が影響を受けるかを判定する。具体的には、ラスタライザ420はプリミティブを画素サイズフラグメントに分割し、各フラグメントはディスプレイ内の画素に対応する。1つ以上のフラグメントが、画像を表示するとき、対応する画素の色に寄与し得ることに留意することが重要である。また、視点に対する、クリッピング(ビューフラスタムの外側にあるフラグメントを識別及び無視する)と、カリング(より近いオブジェクトによって塞がれたフラグメントを無視する)等の追加動作は、ラスタライザ420によって行われ得る。
中心窩フラグメントシェーダ及び/またはプログラム430は、そのコアにおいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントシェーダ430は、フラグメント毎に、深度、色、法線、及びテクスチャ座標(例えば、テクスチャ細部)を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントシェーダ430は、色及び他の属性(例えば、視点からの距離に関するz深度、及び透明度に関するアルファ値)を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ430は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、フラグメントシェーダ430は、フラグメント毎に、シャドーイング効果を適用し得る。説明の目的のために、ゲーム世界内の明確な位置を有する点光のような、光を全方向に放射する光源だけが説明されている。指向性ライティング等の他のライティングが利用可能である。
より具体的には、中心窩フラグメントシェーダ430は、フラグメントが中心窩領域または周辺領域の内部にあるかどうかに基づいて、上記に説明したようなシェーディング動作を行う。表示される画像の中心窩領域内部に位置するフラグメントは、中心窩領域内部のフラグメントに関する詳細なテクスチャ及び明度を達成するために処理効率を考慮せず、高解像度におけるシェーディング動作を使用して処理される。他方では、中心窩フラグメントシェーダ430は、移動及び十分なコントラスト等を提供する最小の動作で十分に詳細にフラグメントを処理するために処理効率に着目し、周辺領域内部に位置するフラグメント上でシェーディング動作を行う。例えば、本発明の実施形態では、周辺領域内の画素内に表示されるフラグメントに影響を及ぼす光源は、1つ以上のクラスタにグループ化され得、クラスタ内の光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する単一の光源に集合し、画像全体をレンダリングするとき算出処理を減らす。フラグメントシェーダ430の出力は、処理されたフラグメント(例えば、テクスチャ及びシェーディング情報)を含み、グラフィックスパイプライン400Aの次のステージに送達される。
出力統合コンポーネント440は、対応する画素のそれぞれに寄与する及び/またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、3Dゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイの2D色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン400Aの次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント440は、フラグメント間の値及び/またはフラグメントシェーダ430から判定された画素の選定的混合を行い得る。
ディスプレイ内の画素毎の明度は、フレームバッファ455内に記憶される。これらの値は、シーンの対応する画像を表示するとき、対応する画素に対して走査される。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、もしくは右から左に、上から下に、もしくは下から上に、または任意の他のパターンで、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
図4Bは、本開示の一実施形態による、遅延タイルレンダリングによって実施される中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施する、グラフィックスプロセッサを示す。レンダリング画像のためのグラフィックスパイプライン400Bは、ディスプレイ内の画素毎に対応する色情報を出力し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドーイング等)を表し得る。グラフィックスパイプライン400Bは、図1Aのゲームコンソール106、図1BのVRコンテンツエンジン120、図2A及び図2Bのクライアントデバイス106、及び/または図2Bのゲームタイトル処理エンジン211の内部で実施可能である。
遅延レンダリングは、いくつかの方法で行われ得、グラフィックスパイプライン400Bによって実施されるように、大まかに説明される。概して、遅延タイルレンダリングは、複数のサブ画像として、ゲーム世界のシーンの各画像を処理する。生成される各サブ画像はディスプレイのタイルに対応し、ディスプレイは複数のタイル内で分割される。すなわち、各タイルは別個にレンダリングされ、様々なタイルに関連付けられる全てのサブ画像をレンダリングしているとき、画像を完全にレンダリングする。特定のタイルに関連するオブジェクトは、グラフィックスパイプライン400Bの1つ以上のステージで行われ得る。示されるように、一実施形態では、タイル生成部460は、頂点シェーダ410とラスタライザ420との間で、画像のタイリングを行い得る。別の実施形態では、タイル生成部460’は、ラスタライザ420とフラグメントシェーダ430’との間で、画像のタイリングを行い得る。
パイプライン400Bはパイプライン400Aと同様であり、同様の参照番号は同一の部分または対応する部分を指し、3D多角形レンダリング処理を使用して画像をレンダリングするために使用され、中心窩レンダリングを行う追加プログラマブル素子を含む。具体的には、パイプライン400Bは、画像をレンダリングするとき、また遅延タイルレンダリングとしても既知であるタイルレンダリングを行うように構成される。タイルのそれぞれは、より低解像度を有する中心窩領域の外側にある画像部分をレンダリングすることを含む、中心窩レンダリングプロセスで画像のその一部をレンダリングする。例えば、中心窩領域内の画像部分は、光源の対応するクラスタの個別の光源から生じる総合効果と密に近似する集合光源を使用してレンダリングされる。
前述に紹介したように、グラフィックスパイプライン400Bは、ゲーム世界内の頂点と、頂点のそれぞれに対応する情報とを含み得る入力ジオメトリ405を受信する。頂点属性は、法線、色、及びテクスチャ座標/マッピング情報を含み得る。頂点は、ゲーム世界内のオブジェクトを画定し、より具体的には、ゲーム世界内のオブジェクトの表面を形成する多角形(例えば、三角形)を画定する。多角形は、グラフィックスパイプライン400Bによって処理され、最終効果(例えば、色、テクスチャ等)を達成する。
頂点シェーダ410は、入力ジオメトリ405を受信し、3Dゲーム世界内でオブジェクトを構成する多角形またはプリミティブを作る。プリミティブは、頂点シェーダによって出力され、グラフィックスパイプラインの次のステージに送達される。ライティング及びシャドーイング、計算、クリッピング、及び/またはカリング等の追加動作は、頂点シェーダによって行われ得る。
一実施形態では、タイル生成部460は、最終的にプリミティブがディスプレイのタイル上に表示される場所を判定するように構成される。ディスプレイは複数のタイル内に分割され、各タイルは一意の画素の対応する数に関連付けられる。具体的には、タイル生成部460は、どのプリミティブが対応するタイルと重なり、またはそのタイルに関連付けられるかを判定するために、プリミティブをソートするように構成される。いったんプリミティブをソートすると、グラフィックスパイプライン400Bによって、タイル毎に基づいて、プリミティブを処理することができる。
次に、プリミティブはラスタライザ420にフィードされ、ラスタライザ420は、シーン内のオブジェクトを、ゲーム世界内の視点によって定義される2D画像平面に投影するように構成される。プリミティブがタイルによってソートされている場合、ラスタライザ420はオブジェクトを画像平面の2Dのタイル上に投影している。前述に紹介したように、ラスタライザ420はプリミティブを画素サイズフラグメントに分割し、各フラグメントはディスプレイ内の画素に対応し、1つ以上のフラグメントは画素の色に寄与する。また、クリッピング及びカリング等の追加動作は、ラスタライザ420によって行われ得る。
別の実施形態では、タイル生成部460’は、ラスタライザ420によって判定される情報に基づいて、最終的にフラグメントがディスプレイのタイル上に表示される場所を判定するように構成される。したがって、タイル生成部460’は、どのフラグメントが対応するタイルと重なり、またはそのタイルに関連付けられるかを判定するために、フラグメントをソートするように構成される。いったんフラグメントをソートすると、グラフィックスパイプライン400Bによって、タイル毎に基づいて、フラグメントを処理することができる。
タイリング済み中心窩フラグメントシェーダ430’は、そのコアにおいて、タイル毎に基づいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントシェーダ430’は、対応するタイルのフラグメント毎に、深度、色、法線、及びテクスチャ座標(例えば、テクスチャ細部)を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントシェーダ430’は、色及び他の属性(例えば、視点からの距離に関するz深度、及び透明度に関するアルファ値)を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ430’は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、フラグメントシェーダ430’は、フラグメント毎に、シャドーイング効果を適用し得る。説明の目的のために、ゲーム世界内の明確な位置を有する点光のような、光を全方向に放射する光源だけが説明されている。指向性ライティング等の他のライティングが利用可能である。
より具体的には、中心窩フラグメントシェーダ430’は、フラグメントが中心窩領域または周辺領域の内部にあるかどうかに基づいて、上記に説明したようなシェーディング動作を行う。これは、フラグメントに関連付けられるタイルが中心窩領域または周辺領域内部かどうかを判定することによって、最初に判定され得る。表示される画像の中心窩領域内部に位置するフラグメントは、高解像度におけるシェーディング動作を使用して処理される。他方では、中心窩フラグメントシェーダ430’は、移動及び十分なコントラスト等を提供する最小の動作で十分に詳細にフラグメントを処理するために処理効率に着目し、周辺領域内部に位置するフラグメント上でシェーディング動作を行う。例えば、本発明の実施形態では、周辺領域内に位置する特定のタイルのフラグメントに影響を及ぼす光源は、1つ以上のクラスタにグループ化され得、クラスタ内の光源は、光源の対応するクラスタの個別の光源のそれぞれから生じる総合効果と密に近似する単一の光源に集合し、画像全体をレンダリングするとき算出処理を減らす。フラグメントシェーダ430’の出力は、処理されたフラグメント(例えば、テクスチャ及びシェーディング情報)を含み、グラフィックスパイプライン400Bの次のステージに送達される。
タイリング済み出力統合コンポーネント440’は、処理されている対応するタイルの対応する画素のそれぞれに寄与する及び/またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、3Dゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイのタイルの2D色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン400Bの次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント440’は、フラグメント間の値及び/またはフラグメントシェーダ430’から判定された画素の選定的混合を行い得る。
ディスプレイのタイル内の画素毎の明度は、フレームバッファ450’内に記憶される。これらの値は、シーンのタイルに対応する、対応するサブ画像を表示するとき、対応する画素に対して走査される。一実施態様では、フレームバッファ450’は、ディスプレイ上で画像を描く前に、全てのタイルからの情報で満たされる。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、上から下に、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
ネットワークを通して通信するゲームサーバ及びクライアントデバイスの様々なモジュールの詳細の説明から、図5Aのフロー図500Aは、中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施するための方法を開示し、本開示の一実施形態に従って、中心窩の外側にある画像部分は、1つ以上の集合光源でレンダリングされる。前述に説明したように、フロー図500Aは、画像をレンダリングするとき、クライアントデバイスまたはクラウドベースゲームシステムの内部で実施される。一実施態様では、クライアントデバイスはゲーム機(また、ゲームコンソールと称される)である。
510において、本方法は、仮想シーンに影響を及ぼす複数の光源を判定することを含む。光源は、グラフィックスプロセッサによって処理されるようなシーン内でオブジェクトに影響を及ぼす。光源からの照明は、視点から視認されるようなシーン内の対応するオブジェクトを表示するとき、対応する画素の最終色を判定する。
515において、本方法は、シーンの画像のオブジェクトのジオメトリを、第1の視点からディスプレイの複数の画素上に投影することを含む。前述に紹介したように、ラスタライザ及び/または頂点シェーダは、プリミティブ及び/またはプリミティブのフラグメントを対応する画素に関連付けるように構成される。具体的には、頂点シェーダはプリミティブを対応する画素に関連付けるように構成され得、ラスタ化前に、プリミティブによるシーンはタイルに分割される。加えて、ラスタライザはプリミティブのフラグメントを対応する画素に関連付けるように構成され得、フラグメントによるシーンはタイルに分割され得る。
520において、本方法は、ディスプレイの複数の画素を複数のタイルに分割することを含む。当該方式では、グラフィックスプロセッサは、画像を処理するとき、タイルレンダリングまたは遅延タイルレンダリングを行うことが可能である。さらに、視点から対応するタイルを視認できるように重なるプリミティブのリストは、タイル毎に作成され得る。加えて、視点から対応するタイルを視認できるように重なるプリミティブのリストは、タイル毎に作成され得る。当該方式では、タイル毎のレンダリングを行うことができる。
525において、本方法は、表示される画像に関する最高解像度の中心窩領域を画定することを含む。すなわち、画像は、想定(例えば、概して、ディスプレイの静的エリアを覆うディスプレイの中心において)によって、または眼の追跡(例えば、視線の方向を判定するため)のいずれかによって、ユーザの注目が集まる領域内で分割される。ユーザの注目が集まる領域が中心窩領域内にあり、中心窩領域内の画像の一部(例えば、プリミティブ及び/またはフラグメント)は、高解像度におけるグラフィックスプロセッサによってレンダリングされる。他方では、周辺領域がユーザに注目されず、中心窩領域内の画像の一部(例えば、プリミティブ及び/またはフラグメント)は、より低解像度におけるグラフィックスプロセッサによってレンダリングされる。より具体的には、画素の第1のサブセットは中心窩領域に割り当てられ、第1のサブセットに関連付けられるプリミティブ及び/またはフラグメントは高解像度で処理される。画素の第2のサブセットは中心窩領域の外側にある周辺領域に割り当てられ、第2のサブセットに関連付けられるプリミティブ及び/またはフラグメントはより低解像度(例えば、中心窩領域に関連付けられる解像度よりも低いもの)で処理される。
タイルレンダリングまたは遅延タイルレンダリングを行うとき、530において、本方法は、周辺領域内にある第1のタイル内に表示される1つ以上のオブジェクトに影響を及ぼす複数の光源から光源の第1のセットを判定することを含む。タイルレンダリングを行うとき、画像に関連して各タイルに影響を及ぼす光源を判定する。光源は、シーンに影響を及ぼす複数の光源から取られたものである。これは、タイル内でオブジェクトに影響を及ばさない光源がタイルに関連付けられるサブ画像をレンダリングするときに考慮されないので、処理を減らす。すなわち、タイル毎に、対応するタイルに描かれるオブジェクトに影響を及ぼす光源のリストが作成される。したがって、所与のタイル(例えば、第1のタイル)に関して、光源の第1のセットは第1のタイルに関連付けられるリスト内に含まれ、第1のタイルは周辺領域内にある。すなわち、第1のタイル内に表示されるオブジェクトは周辺領域内にあり、したがって、より低解像度でレンダリングされ得る。例えば、より低解像度におけるレンダリングは、下記に説明されるような光源を集合させることを含み得る。
535において、本方法は、第1のタイルの画素内の画像をレンダリングするとき、第1のセットからの少なくとも2つの光源を、第1のタイルに影響を及ぼす第1の集合光源にクラスタリングすることを含む。すなわち、中心窩レンダリングを行うとき、第1のタイル内のオブジェクトは周辺領域内にあることが判定され、これらのオブジェクトは、光源を集合させることを含むように、より低解像度でレンダリングされ得る。光源の第1のセットは、第1のタイルに関連付けられる、または第1のタイル内に表示されるオブジェクトに影響を及ぼすことが事前に判定されている。これらの光源はより少ないサブセットの光源に集合し得、それにより、個別に、第1のセットの光源のそれぞれを考慮することによってタイル内のオブジェクトをレンダリングするのではなく、集合光源だけが考慮される。集合光源のそれぞれは、個別に、光源の第1のセットによって生じる総合効果と密に近似する。当該方式では、タイルのオブジェクトをレンダリングする処理を行うことが少なくなる。
図5Bは、本開示の一実施形態による、タイル遅延レンダリングによって実施される中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施し、中心窩領域の外側のタイルの光源が集合する方法のステップを示すフロー図500Bを示す。具体的には、フロー図500Bは、タイル毎に基づいて、クラスタ光源に対して行われ、集合光源は、対応するタイルのオブジェクトをレンダリングする目的のために、光源の対応するクラスタを表す。前述に説明したように、フロー図500Bは、画像をレンダリングするとき、クライアントデバイスまたはクラウドベースゲームシステムの内部で実施される。一実施態様では、クライアントデバイスはゲーム機(また、ゲームコンソールと称される)である。
550において、本方法は、所与のタイルに関する光源の標的数を判定することを含む。標的数は、そのタイルに関連付けられるオブジェクトをレンダリングするときに処理される集合光源及び/または非集合光源の合計数に対応する。例えば、周辺領域の平均光の最大数は、クラスタ出力を抑制するために指定される。すなわち、本方法は、第1のタイルに影響を及ぼす集合光源の数を標的数に抑制することを含む。
555において、本方法は、所与のタイルに影響を及ぼす光源のセットを判定することを含み、当該セットは、シーンに影響を及ぼす複数の光源から取られたものである。光源の標的数は、タイルに影響を及ぼす光源のセットから判定され、標的数はセットの数以下になる。標的数は、レンダリングを行うときにタイルに関する光源のクラスタの最大数を判定するものである。
560において、本方法は、光源の標的数及びセットに基づいて、クラスタのそれぞれの光源の数を判定することを含む。一実施態様では、クラスタ内の光源の数は、光源のセットを標的数で除算することによって判定される。例えば、タイルに影響を及ぼす光源のセットに30個の光源があり(例えば、M=30)、タイルに関する標的数が5である場合、各クラスタの光源の数は6である(例えば、M/[光の標的数]=6)。
操作570は、光源間の関連距離に基づいて、M個の光を小さい数の平均光源にクラスタリングするために行われる。複数の実施形態では、集合(例えば、クラスタリング)に基づいて、この距離を達成するために、光源の最適なクラスタリングを選ぶために最近隣検索またはK平均法クラスタリング技術を使用してクラスタを生成させ、光源の各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも1つの光源を含む。
一実施形態では、閾値は平均化された光に関する最長距離に設定される。すなわち、クラスタ内の2つの光源間の最長距離を、最長距離に抑制する。これは、新しい平均の光位置が元の光位置と大幅に異なり得る、かなり離れている光を平均化することを防止する。
具体的には、ループプロセスは、タイルに影響を及ぼす光源(M)のセットにおける光源(L_i)のそれぞれに行われる。例えば、572において、本方法は、現在の光源(L_i)に関して、現在の光源(L_i)と、タイルに影響を及ぼすべての光源(M)との間の距離を算出することを含む。574において、本方法は、セット(M)における現在の光源(L_i)に関して、現在の光源(L_i)と、現在の光源に対して最小距離を有する他の5つの光源とを含む光の現在のクラスタ(Cluster_i)を判定することを含む。576において、本方法は、光源の現在のクラスタ(Cluster_i)に関するクラスタエラー(Cluster_error_i)を判定することを含む。一実施態様では、クラスタエラー(Cluster_error_i)は、現在の光源(L_i)と現在のクラスタ(Cluster_i)における互いの光との間の距離の合計によって判定される。このプロセスは、決定ステップ578によって判定されるように、M個の光における光(L_i)毎に行われる。
580において、本方法は、最小量のクラスタエラーを有するクラスタを選ぶことを含む。すなわち、本方法は、光源の複数のクラスタに関する複数のクラスタエラーを最小にすることを含む。M=30の光クラスタである例を続けて説明すると、6の最小クラスタエラーを有する6のクラスタが選ばれる(また、クラスタエラーのいずれかの矛盾を考慮する)。すなわち、光源のクラスタ(Cluster_i)のそれぞれに、新しい集合光源を作成し、集合光源は、クラスタの個別の光源のそれぞれから生じる総合効果と密に近似する。
一実施形態では、クラスタエラーをさらに定義するために、光源の複数のクラスタにおける各クラスタに対応するクラスタエラーは、現在の光源と他の光源のそれぞれとの間の距離の繰り返し合計を含み、現在の光源は、繰り返し毎に、クラスタ内に異なる光源を含む。
一実施形態では、集合光源は、クラスタ内の光源に関する特徴の平均である特徴がある。例えば、集合光源は、距離、色等の平均である特徴がある。集合光源の新しい彩度は、クラスタ内の彩度毎の明度の合計であり得る。明度は平均ではない場合があり、これはシーンに影響を及ぼすエネルギー損失をもたらし得るようになる。具体的には、集合光源は、クラスタ内の光源の平均場所である新しい場所を含み得る。集合光源の新しい色は、クラスタ内の光源毎の色の平均であり得る。
別の実施態様では、新しい色は、クラスタ内の光源毎の色の加重和である。光源(L_i)毎の加重は、集合光源の新しい彩度で除算される現在の光源(L_i)の彩度(例えば、[Intensity_L_i]/[[New Intensity])に基づいて判定される。したがって、新しい色は以下のとおり判定される[(Intensity_L_i/New Intensity)*(color_L_i)]。したがって、集合光源は、光のそれぞれの元の彩度を大まかに維持する特徴があり、合計彩度に対して色を加重することによって、光の平均色を保存する。
一実施形態では、タイルサイズは、クラスタの標的数に一致するように動的に調節される。具体的には、所与のタイルに影響を及ぼす集合光源の数を標的数に抑制する。タイルに影響を及ぼす光源のセットが標的数未満であることを判定したとき、所与のタイルのサイズは標的数に適応するように拡大する。
図6Aは、本開示の一実施形態による、ゲーム世界のシーン600Aに影響を及ぼす複数の光源と、集合光源を形成する光源の少なくとも1つのクラスタとの図である。示されるように、ゲーム世界600は3次元の座標系601によって画定される。単純及び明確にする目的のために、1つのオブジェクト620はゲーム世界のシーン600Aに示され、オブジェクト620はゲーム世界内にある。シーン600Aはユーザの眼630の視点からレンダリングされ得、視点は、眼630によって見られる仮想ディスプレイに対応する画像平面内でレンダリングされ得る。
シーン600Aに影響を及ぼす光源の2つのクラスタを示す。第1のクラスタ615aは複数の光源を含む。第1のクラスタ615a内の光源は、集合光源610aに、前述に説明した技術を使用して集合する。集合光源610aは、クラスタ615a内の個別の光源のそれぞれから生じる総合効果と密に近似する特徴がある。示されるように、集合光源610aは、座標系601内に含有する格子640aによって画定されるゲーム世界内にある。加えて、第2のクラスタ615bは複数の光源を含む。第2のクラスタ615b内の光源は、集合光源610bに、前述に説明した技術を使用して集合する。集合光源610bは、クラスタ615b内の個別の光源のそれぞれから生じる総合効果と密に近似する特徴がある。示されるように、集合光源610bは、座標系601内に含有する格子640bによって画定されるゲーム世界内にある。
図6Bは、本開示の一実施形態による、複数のタイル660に分割され、グラフィックスパイプラインの遅延レンダリングシステムにおいて、タイル毎に基づいてレンダリングが行われる、ディスプレイ650の例証図である。具体的には、ディスプレイ650内の複数のタイルは、(タイルの行列によって識別されるような)長方形パターンによって画定され得る。タイルは長方形の形状であるが、任意の形状が、任意の配列(例えば、2D、3D、またはそれよりも大きい次元の範囲内の長方形、円、球状)で使用され得る。
示されるように、ディスプレイ650は、より高解像度でレンダリングされる画像の部分を表示する中心窩領域670を含む。中心窩領域670内のタイルのそれぞれは、対応するタイルに影響を及ぼす光源のリストを含む。例えば、中心窩領域670内のタイルは、10から35の光源の範囲にわたって光源の数を変えることによって影響を受け得、シーンに影響を及ぼす複数の光源は、35以上であり得る。例えば、タイル660p内に表示されるオブジェクト(例えば、行3及び列5)は10個の光源によって影響を受け、タイル660q(例えば、行4及び列5)内に表示されるオブジェクトは14個の光源によって影響を受け、タイル660r(例えば、行3及び行7)内に表示されるオブジェクトは35個の光源によって影響を受ける。タイルが中心窩領域670内にあるため、所与のタイルに影響を及ぼす光源は、当該タイル内で、オブジェクト(例えば、関連のプリミティブ及び/またはフラグメント)をレンダリングするとき、完全に処理される(例えば、個別に、グラフィックスパイプラインによって考慮される)。
加えて、ディスプレイ650は、より低解像度(例えば、中心窩領域670内にレンダリングされる画像の部分よりも低い解像度)でレンダリングされる画像の部分を表示する中心窩領域675を含む。周辺領域675内のタイルのそれぞれは、対応するタイルに影響を及ぼす光源のリストを含む。さらに、周辺領域675内のタイルは、タイル毎に、集合光源を使用することを含むように、より低解像度でレンダリングされる。例えば、タイル660nは、当該タイル内に描かれるオブジェクトに影響を及ぼす25個の光源を有し、25個の光源は、それぞれがそれ自体の集合光源を有する5つのクラスタにグループ化される。したがって、タイル660nは、当該タイル内のオブジェクトをレンダリングするために使用される5つの集合光源を有する。別の例では、タイル660mはより詳細に示される。例えば、タイル660mは、32×32画素の格子を含むように画定され得る。前述に紹介したように、タイルは様々な形状及びサイズであり得る。示されるように、タイル660mは、当該タイル内に描かれるオブジェクトに影響を及ぼす30個の光源を有し、30個の光源は、それぞれがそれ自体の集合光源を有する5つのクラスタにグループ化される。したがって、タイル660mは、また、当該タイル内のオブジェクトをレンダリングするために使用される5つの集合光源を有する。
一実施形態では、コンピュータシステムはプロセッサ及びメモリを含み、メモリは、プロセッサに結合され、コンピュータシステムによって実行される場合、コンピュータシステムに、グラフィックスパイプラインを実施するための方法を実行させる命令をメモリ内に記憶する。本方法は、仮想シーンに影響を及ぼす複数の光源を判定することを含む。本方法は、さらに、シーンの画像のオブジェクトのジオメトリを、第1の視点からディスプレイの複数の画素上に投影することを含む。本方法は、さらに、ディスプレイの複数の画素を複数のタイルに分割することを含む。本方法は、さらに、表示される画像に関する最高解像度の中心窩領域を画定することを含み、画素の第1のサブセットは中心窩領域に割り当てられ、画素の第2のサブセットは中心窩領域の外側にある周辺領域に割り当てられる。本方法は、さらに、周辺領域内にある第1のタイル内に表示される1つ以上のオブジェクトに影響を及ぼす複数の光源から光源の第1のセットを判定することを含む。本方法は、さらに、第1のタイルの画素内の画像をレンダリングするとき、第1のセットからの少なくとも2つの光源を、第1のタイルに影響を及ぼす第1の集合光源にクラスタリングすることを含む。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、最近隣検索またはK平均法クラスタリング技術を使用して、光源の複数のクラスタを複数の光源から生成することを含み、光源の各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも1つの光源を含む。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、第1のタイルに影響を及ぼす集合光源の数を標的数に抑制することを含む。本方法は、さらに、クラスタ内の2つの光源間の最長距離を、長距離に抑制することを含む。本方法は、さらに、光源の複数のクラスタに関する複数のクラスタエラーを最小にすることを含む。本方法は、さらに、光源のクラスタ毎に、対応する集合光源を生成することを含む。
別の実施形態では、コンピュータシステムによって実行される方法では、対応する集合光源を生成することは、さらに、光源の対応するクラスタ内の光源の場所を平均化することによって、対応する集合光源の集合場所を判定することを含む。本方法の対応する集合光源を生成することは、さらに、光源の対応するクラスタ内の光源の彩度を合計することによって、対応する集合光源の集合彩度を判定することを含む。本方法の対応する集合光源を生成することは、さらに、光源の対応するクラスタ内の光源の色の加重和を行うことによって、対応する集合光源の色の集合を判定することを含む。
別の実施形態では、コンピュータシステムによって実行される方法では、光源の複数のクラスタ内の各クラスタに対応するクラスタエラーは、現在の光源と、他の光源のそれぞれとの間の距離の繰り返し合計を含み、現在の光源は、繰り返し毎にクラスタ内の異なる光源を含む。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、第1のタイルに影響を及ぼす集合光源の数を標的数に抑制することを含む。本方法は、さらに、光源の第1のセットが標的数未満であることを判定することを含む。本方法は、さらに、標的数を満たすために、第1のタイルのサイズを拡大することを含む。
別の実施形態では、コンピュータシステムによって実行される方法では、ディスプレイはヘッドマウントディスプレイ(HMD)を含む。
一実施形態では、非一時的なコンピュータ可読媒体は、グラフィックスパイプラインを実施するためのコンピュータプログラムを記憶する。コンピュータ可読媒体は、仮想シーンに影響を及ぼす複数の光源を判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、シーンの画像のオブジェクトのジオメトリを、第1の視点からディスプレイの複数の画素上に投影するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、ディスプレイの複数の画素を複数のタイルに分割するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、表示される画像に関する最高解像度の中心窩領域を画定するためのプログラム命令を含み、画素の第1のサブセットは中心窩領域に割り当てられ、画素の第2のサブセットは中心窩領域の外側にある周辺領域に割り当てられる。コンピュータ可読媒体は、さらに、周辺領域内にある第1のタイル内に表示される1つ以上のオブジェクトに影響を及ぼす複数の光源から光源の第1のセットを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、第1のタイルの画素内の画像をレンダリングするとき、第1のセットからの少なくとも2つの光源を、第1のタイルに影響を及ぼす第1の集合光源にクラスタリングするためのプログラム命令を含む。
別の実施形態では、非一時的なコンピュータ可読媒体は、さらに、最近隣検索またはK平均法クラスタリング技術を使用して、光源の複数のクラスタを複数の光源から生成するためのプログラム命令を含み、光源の各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも1つの光源を含む。
別の実施形態では、非一時的なコンピュータ可読媒体は、さらに、第1のタイルに影響を及ぼす集合光源の数を標的数に抑制するためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、クラスタ内の2つの光源間の最長距離を、最長距離に抑制するためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、光源の複数のクラスタに関する複数のクラスタエラーを最小にするためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、光源のクラスタ毎に、対応する集合光源を生成するためのプログラム命令を含む。
別の実施形態では、非一時的なコンピュータ可読媒体内の対応する集合光源を生成するためのプログラム命令は、さらに、光源の対応するクラスタ内の光源の場所を平均化することによって、対応する集合光源の集合場所を判定するためのプログラム命令を含む。対応する集合光源を生成するためのプログラム命令は、さらに、光源の対応するクラスタ内の光源の彩度を合計することによって、対応する集合光源の集合彩度を判定するためのプログラム命令を含む。対応する集合光源を生成するためのプログラム命令は、さらに、光源の対応するクラスタ内の光源の色の加重和を行うことによって、対応する集合光源の色の集合を判定するためのプログラム命令を含む。
別の実施形態では、非一時的なコンピュータ可読媒体内に記憶されるプログラム命令では、光源の複数のクラスタ内の各クラスタに対応するクラスタエラーは、現在の光源と、他の光源のそれぞれとの間の距離の繰り返し合計を含み、現在の光源は、繰り返し毎にクラスタ内の異なる光源を含む。
パーティクルの中心窩適応及びシミュレーションモデル
本開示の様々な実施形態は、高解像度を有する中心窩領域内の画像の部分と、より低解像度を有する中心窩領域の外側の部分とを表示するように構成される、中心窩レンダリングに関する。具体的には、シミュレーションモデルによって、パーティクルシステムは、火、煙、布、及び水等の物理的効果を生じさせるために広く使用される。また、パーティクルシステムは、魔法等の多くの非物理的効果において使用される。これらのパーティクルシステムは、所望の効果に応じて、10パーティクル〜100,000以上のパーティクルの複雑度の範囲であり得る。パーティクルをシミュレート及びレンダリングするための算出はかなり高価であり得る。ユーザがパーティクルシステムを積極的に見ていない場合(すなわち、パーティクルシステム効果が、周辺領域内に、または周辺領域内に描かれる場合)、パーティクルシステムは、潜在的に、同様の知覚効果を達成するために、スケーリングされる(例えば、より大きくする)及び暗くなる(例えば、アルファ値を修正する)ように、レンダリングされるときの少数のパーティクルによって表され得る。当該方式では、例えば、複雑度が少ない画像に部分的に起因して、表示される一連のビデオフレームに関する全帯域幅は小さくなる。さらに、一連のビデオフレームは、算出複雑度が少なくなるため、最小のレイテンシで、またはレイテンシがなく、リアルタイムで、(例えば、有線または無線接続を通して)送達されることができる。いくつかの実施形態では、パーティクルの中心窩適応及びシミュレーションモデルは、図1〜図6に事前に説明された状況の範囲内で実施され得る。
図7Aは、本開示の一実施形態による、中央処理装置(CPU)またはグラフィックス処理ユニット(GPU)を使用する制限された量のパーティクル(例えば、1000未満)のパーティクルシステムシミュレーションを含む中心窩レンダリングと、パーティクルシステムの描画効果が中心窩領域または周辺領域の内部に位置するかどうかに応じて、サンプリング(例えば、ランダム、最近隣、類似性等)によって生成されるパーティクルの全システムまたはパーティクルのサブシステムを使用してGPUにおけるパーティクルシステムのレンダリングとを行うように構成される、グラフィックスパイプラインを実施するシステム9400Aを示す。グラフィックスパイプライン9400Aは、3D(3次元)多角形レンダリングプロセスを使用して画像をレンダリングするための全体的プロセスを示しているが、中心窩レンダリングを行うパイプライン内部の追加プログラマブル素子を機能させるように修正され、対応する画像の中心窩領域に対するパーティクルシステムによって発生する効果の場所に応じて、パーティクルのフルコンポーネントまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーション及び/またはレンダリングする等の中心窩レンダリングを行う。レンダリング画像のためのグラフィックスパイプライン9400Aは、ディスプレイ内の画素毎に対応する色情報を出力し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドーイング等)を表し得る。グラフィックスパイプライン9400Aは、図1Aのゲームコンソール106、図1BのVRコンテンツエンジン120、図2A及び図2Bのクライアントデバイス106、及び/または図2Bのゲームタイトル処理エンジン211の内部で実施可能である。
パーティクルシミュレーションはCPUまたはGPU上で行われ得る。ほとんどの単純または小さなパーティクルシステムは、CPU上で実行する。他方では、多数のパーティクルでのシミュレーションは、GPU上で行われ得、その場合、GPU上で行われるシミュレーションは、レンダリングが行われる前に、コンピュートシェーダまたはジオメトリシェーダにおいて行われる可能性が高い算出を含む。システム9400Aは、制限された量のパーティクルを有するパーティクルシステム(例えば、1000未満のパーティクルを有する小さなパーティクルシステム)上でパーティクルシミュレーションを行うように構成される。システム9400は、頂点データを処理することを含む中心窩レンダリングを行い、頂点をプリミティブ(例えば、多角形)に集め、ラスタ化を行い、ディスプレイに対してプリミティブからフラグメントを生成させ、次に、フラグメント毎に色及び深度値を算出し、表示するために、フレームバッファに記憶するための画素毎にフラグメントを混ぜるように構成される、プログラムプロセッサ9401及びプログラムプロセッサ9402を含む。プロセッサ9401によって行われる動作は、CPUまたはGPUのいずれかで行われ得る。プログラムシェーダ9402によって行われる動作は、概して、良好な性能及び効率になるように、GPU内での実行により適している。
示されるように、システム9400Aのグラフィックスパイプラインは、入力ジオメトリ9405を受信する。例えば、入力ジオメトリ9405は、3Dゲーム世界内の頂点と、頂点のそれぞれに対応する情報とを含み得る。頂点によって画定される多角形(例えば、三角形)を使用してゲーム世界内の所与のオブジェクトを表すことができ、次に、対応する多角形の表面は、グラフィックスパイプライン9400Aによって処理され、最終効果(例えば、色、テクスチャ等)を達成する。頂点属性は、法線(例えば、その方向は頂点に対して直角である)、色(例えば、RGB―赤、緑、及び青の3色の組等)、及びテクスチャ座標/マッピング情報を含み得る。説明しやすくするために、3Dゲーム世界に関する入力ジオメトリはプロセッサ9401に入力されるように示されるが、また、ジオメトリは、パーティクルシステムに関するジオメトリがプロセッサ9401に入力されるように、及び残りのジオメトリがプロセッサ9402の頂点シェーダ9410に入力されるように分割され得る。例えば、入力ジオメトリは、プロセッサ9401とプロセッサ9402との間で共有されることができる頂点バッファに入力され得る。
具体的には、プログラムプロセッサ9401は、位置、質量、及びパーティクルの速さ、ならびにパーティクルに印加される様々な力(例えば、重力等の外力、パーティクル間の相互作用を表す内力)に応じてフレーム毎に、パーティクルシミュレーションを行う(例えば、パーティクル運動を計算する等)。概して、第1のフレームから後続のフレームまで、プロセッサ9401は、パーティクル位置を初期化し、パーティクル位置を更新するような動作を行う。具体的には、レンダリングされたフレーム毎に、各パーティクルのシミュレーションは、別々の時間ステップで(例えば、フレーム毎に)更新される(例えば、位置、配向、速さ等が更新される)。図7Aに示されるように、プロセッサ9401は、GPU構成内部で実装され、パーティクルシステムシミュレーションを行うようにプログラムされ得る。具体的には、パーティクルシミュレーションは、GPUのコンピュートシェーダまたはジオメトリシェーダによって行われ得る。例えば、コンピュートシェーダまたはジオメトリシェーダ9406は、パーティクルシミュレーションを行うパーティクルシミュレーションモジュール9407を含み得る。シェーダ9406の出力は、パーティクルシステムのプリミティブ(例えば、多角形)を含み得る。GPU構成の内部で実施されるものとして、残りのコンポーネント(例えば、出力統合及びフレームバッファを含むラスタライザ、フラグメントシェーダ、及びレンダリング)は使用されていなく、それにより、次に、シェーダ9406からの出力は、送達され及び/またはプロセッサ9402と共有され、レンダリングを含むより従来的なGPU動作を行う。当然ながら、CPU実施態様では、プロセッサ9401は、シェーダ9406及びパーティクルシミュレーションモジュール9407だけを含むように、簡略化され得る。
パーティクルは、GPU構成の内部で実施されるように、プロセッサ9402を使用して描かれる。具体的には、シミュレーション結果が頂点バッファに記憶され、次に、シミュレーション結果がプロセッサ9402(例えば、頂点シェーダ)に入力される。頂点バッファの値は、図7Aに示されるシステム9400Aのグラフィックスパイプラインのステージ間で共有されることができる。より具体的には、前述に説明したように、頂点シェーダ9410は、入力ジオメトリ9405を直接且つプロセッサ9401から受信し、3Dシーン内でオブジェクトを構成する多角形またはプリミティブを作る。頂点シェーダ9410は、さらに、プロセッサ9401によって完了されない場合、シミュレート済みのパーティクルシステムにプリミティブを作り得る。すなわち、頂点シェーダ9410は、オブジェクトがゲーム世界内にセットされるとき、プリミティブを使用してオブジェクトを作り上げる。例えば、頂点シェーダ9410は、シーンのライティングに応じて、多角形に関するライティング計算及びシャドーイング計算を行うように構成され得る。プリミティブは、頂点シェーダ9410によって出力され、グラフィックスパイプライン9400Aの次のステージに送達される。また、クリッピング(例えば、ゲーム世界内の視点によって定義されるようなビューフラスタムの外側にあるプリミティブを識別及び無視する)等の追加動作は、頂点シェーダ9410によって行われ得る。
本発明の実施形態では、プロセッサ9402は、パーティクルシステムによって発生する効果が中心窩領域内に表示されるとき、パーティクルのサブシステムをレンダリングすることを含む、効率的な方式でパーティクルシステムをレンダリングすることを含む、中心窩レンダリングを行うように構成される。具体的には、頂点シェーダ9410の中心窩頂点判定部9412は、パーティクル、すなわちパーティクルの頂点が中心窩領域の内側または外側にあるかを判定するように構成され得る。
パーティクルまたはそのコンポーネントが周辺領域内にあるとき、頂点シェーダ9410は、頂点を破棄するかどうかを判定する、または、頂点が、グラフィックスパイプラインによって(ラスタライザ/フラグメントシェーダ等によって)前進することを可能にするように構成される。様々な技術は、パーティクルのシステムからどのパーティクルを破棄することを判定するために実施され得る。概して、頂点シェーダ9410は、レンダリングするためのパーティクルシステム内部のパーティクルを選択し得る。例えば、ランダム選択、最近隣選択、類似度選択等を含む選択は、様々な技術によって行われ得る。一実施形態では、インデックス化リスト9415は、パーティクルまたはパーティクルのコンポーネントはレンダリングまたは破棄されるかどうかを判定するために使用される。インデックスでオブジェクトを描くことは周知の当技術分野であり、算出複雑度を減らす(例えば、オブジェクト内の同じ頂点の重複を減らす)ために使用される。簡潔に説明するために、インデックス生成部9413は、(例えば、インデックスバッファを使用して)インデックスを作成するように構成され、パーティクル及びそのコンポーネント(例えば、プリミティブ、頂点等)は、インデックス内の1つ以上のインデックスに関連付けられる。例えば、インデックスバッファはインデックスの配列を含み、インデックスは、頂点バッファの頂点の場所に一致する。したがって、その関連の多角形毎に同じ頂点を重複させる代わりに、頂点バッファの1つ場所にマッピングする単一のインデックスを使用することができる。さらに、パーティクルセレクタ9414は、様々な選択技術(例えば、ランダム選択、最近隣選択、類似度選択等)によって、選択されたインデックスのリスト9415を生成すること等によって、パーティクルを選択するように構成される。パーティクルの選択されたインデックス及び/またはコンポーネントは、リスト内に記憶される、減らされたセット(例えば、パーティクルのサブシステム)を形成する選択されたサンプルである。したがって、頂点が中心窩の外側にあるとき、当該頂点は、その関連インデックスが「描画リスト」(例えば、リスト9415内に含まれる)に含有されるかを見るために確認され得る。頂点が、(例えば、リスト9415内に記憶されたような)選択されたインデックスに関連付けられない場合、当該頂点を破棄し、パイプライン内の残りのシェーダによってレンダリングされない。他方では、頂点がリスト9415内のインデックスに関連付けられる場合(例えば、リスト内に含まれるように選択される場合)、当該頂点は、レンダリングするために、パイプラインによって前進する。その後、パーティクルシステムに関連する頂点シェーダ9410によって出力されるパーティクルのフルコンポーネントまたはパーティクルのサブシステムであろうとなかろうと、残りの動作は一般的な様式で動作する。
パーティクルの視覚特性を修正し、所望の知覚継続性を維持する。例えば、暗化及びスケーリングモジュール9416は、パーティクルシステムのコンポーネントの属性を修正するように構成される。具体的には、暗化及びスケーリングは頂点シェーダで行われ、それにより、フラグメントシェーダへの入力は、パーティクルシステムの非中心窩レンダリング(例えば、パーティクルのサブシステムのレンダリング)に合わせて調節される。当該方式では、中心窩フラグメントシェーダ9430の出力に対するさらなる調節は、周辺領域内におけるパーティクルシステムに対する適切なレンダリングに必要ではない。他の視覚特性は、同様に、色、アルファ値、材料等の所望の知覚継続性を維持するために修正され得る。
具体的には、スケーリング属性に関して、頂点シェーダ9410からの出力は、より大きいサイズに修正され得る。例えば、点スプライトを使用する場合、出力点サイズをある倍数だけ大きくなるようにスケーリングされ得る。倍数はいくつかの方法で判定され得る。例えば、倍数は、パーティクルの合計数と比較して、サブシステムにおけるパーティクルの数に関連する縮小率であり得る。別の実施態様では、パーティクルシステムが、インスタンス化されたジオメトリを使用して(例えば、繰り返しのジオメトリ、プリミティブ等を使用して作られたオブジェクトを作成するために、メッシュのコピーのパラメータ変動がある単一のメッシュの複数のコピーをレンダリングする)説明される場合、インスタンス化されたメッシュは、ある倍数だけ、より大きくスケーリングされる。スケーリングは、パーティクルシステムのパーティクルのフルコンポーネントをレンダリングするときのように、パーティクルのサブシステムを処理するとき、同様に寸法効果を生じさせるために行われる。
パーティクル及びパーティクルのコンポーネントの暗化は、パーティクルシステムのパーティクルのフルコンポーネントをレンダリングするときのように、パーティクルのサブシステムを処理するとき、同様に色彩効果を生じさせる(すなわち、所望の知覚継続性を維持する)ために行われる。一実施態様では、パーティクルのコンポーネントのアルファ値は、パーティクルのサブシステムの各パーティクルを暗くするために調節される。例えば、アルファ値は、パーティクルをより大きくさせる(例えば、スケーリングさせる)とき、効果(例えば、煙)の不透明度を増加させるために調節される。さらに他の視覚特性(例えば、材料等)は、同様に、所望の知覚継続性を維持するために修正され得る。
頂点プロセッサ9410によって出力されるプリミティブはラスタライザ9420にフィードされ、ラスタライザ9420は、シーン内のオブジェクトを、3Dゲーム世界内の視点(例えば、カメラ場所、ユーザの眼の位置等)によって定義される2次元(2D)の画像平面に投影するように構成される。これらのプリミティブは、パーティクルシステムによって発生する効果が周辺領域内にあるとき、(例えば、パーティクルのフルコンポーネントの代わりに)パーティクルのサブシステムを含む。一実施形態では、効果の少なくとも一部が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングする。別の実施形態では、パーティクルシステムをより低解像度でレンダリングするために、効果全体が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングする。また、プリミティブは、パーティクルシステムをより高解像度でレンダリングするために、パーティクルシステムによって発生する効果が中心窩領域内にあるとき、パーティクルのフルシステムを含み得る。
単純化レベルにおいて、ラスタライザ9420は各プリミティブを確認して、対応するプリミティブによってどの画素が影響を受けるかを判定する。具体的には、ラスタライザ9420はプリミティブを画素サイズフラグメントに分割し、各フラグメントは、ディスプレイの内部、及び/または視点(例えば、カメラビュー)をレンダリングすることに関連付けられる基準面の内部の画素に対応する。1つ以上のフラグメントが、画像を表示するとき、対応する画素の色に寄与し得ることに留意することが重要である。また、視点に対する、クリッピング(ビューフラスタムの外側にあるフラグメントを識別及び無視する)と、カリング(より近いオブジェクトによって塞がれたフラグメントを無視する)等の追加動作は、ラスタライザ9420によって行われ得る。
中心窩フラグメントプロセッサ9430は、そのコアにおいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントプロセッサ9430は、フラグメント毎に、深度、色、法線、及びテクスチャ座標(例えば、テクスチャ細部)を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントプロセッサ9430は、色及び他の属性(例えば、視点からの距離に関するz深度、及び透明度に関するアルファ値)を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ9430は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、フラグメントプロセッサ9430は、フラグメント毎に、シャドーイング効果を適用し得る。
より具体的には、中心窩フラグメントシェーダ9430は、フラグメントが中心窩領域または周辺領域の内部にあるかどうかに基づいて、上記に説明したようなシェーディング動作を行う。表示される画像の中心窩領域内部に位置するフラグメントは、中心窩領域内部のフラグメントに関する詳細なテクスチャ及び明度を達成するために処理効率を考慮せず、高解像度におけるシェーディング動作を使用して処理される。他方では、中心窩フラグメントプロセッサ9430は、移動及び十分なコントラスト等を提供する最小の動作で十分に詳細にフラグメントを処理するために処理効率に着目し、周辺領域内部に位置するフラグメント上でシェーディング動作を行う。
例えば、本発明の実施形態では、パーティクルシステムのフラグメントは、フラグメントが中心窩領域の内側または外側にある(例えば、中心窩領域の内側または外側の画素に寄与する)かどうかに応じて、異なるようにレンダリングされる。頂点シェーダ9410が、事前に、パーティクル及び/またはそのコンポーネントジオメトリが、中心窩領域の内側または外側に位置するかどうかを判定し、適宜、そのコンポーネントジオメトリをフィルタリング(例えば、パーティクルシステムによって発生する効果が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングするために、インデックス化された頂点を算出する)したため、頂点シェーダ9410の出力は、適切なプリミティブをグラフィックスパイプラインの残りのコンポーネント(例えば、ラスタライザ9420及び中心窩フラグメントシェーダ9430等を含む)に提供するために既に位置付けられている。プログラマブルシェーダ9402のグラフィックスパイプラインの残りのコンポーネントは、パーティクルシステムによって発生する効果が中心窩領域内にあるとき、パーティクルシステムにおけるパーティクルのフルコンポーネントをレンダリングするように構成される。また、プログラマブルシェーダ9402のグラフィックスパイプラインの残りのコンポーネントは、効果が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングするように構成される。
フラグメントシェーダ9430の出力は、処理されたフラグメント(例えば、テクスチャ及びシェーディング情報)を含み、グラフィックスパイプライン9400Aの次のステージに送達される。
出力統合コンポーネント9440は、対応する画素のそれぞれに寄与する及び/またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、3Dゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイの2D色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン9400Aの次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント9440は、フラグメント間の値及び/またはフラグメントシェーダ9430から判定された画素の選定的混合を行い得る。
ディスプレイ9455内の画素毎の明度は、フレームバッファ9450内に記憶される。これらの値は、シーンの対応する画像を表示するとき、対応する画素に対して走査される。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、もしくは右から左に、上から下に、もしくは下から上に、または任意の他のパターンで、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
図7Bは、本開示の一実施形態による、大量のパーティクル(例えば、1000を超えるもの)のパーティクルシステムシミュレーションを含む中心窩レンダリングを行うように構成され、パーティクルシステムの描画効果が中心窩領域または周辺領域の内部に位置するかどうかに応じて、パーティクルクラスタリング及びパーティクル集合によって生成されるパーティクルの全システムまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーションし、次に、レンダリングすることの両方を行う、グラフィックスパイプラインを実施するグラフィックスプロセッサを示す。グラフィックスパイプライン9400Bは、3D(3次元)多角形レンダリングプロセスを使用して画像をレンダリングするための全体的プロセスを示しているが、中心窩レンダリングを行うパイプライン内部の追加プログラマブル素子を機能させるように修正され、対応する画像の中心窩領域に対するパーティクルシステムによって発生する効果の場所に応じて、パーティクルのフルコンポーネントまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーション及び/またはレンダリングする等の中心窩レンダリングを行う。レンダリング画像のためのグラフィックスパイプライン9400Bは、ディスプレイ内の画素毎に対応する色情報を出力し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドーイング等)を表し得る。グラフィックスパイプライン9400Bは、図1Aのゲームコンソール106、図1BのVRコンテンツエンジン120、図2A及び図2Bのクライアントデバイス106、及び/または図2Bのゲームタイトル処理エンジン211の内部で実施可能である。グラフィックスパイプライン9400Bは、図7Aのパイプライン9400Aと同様のコンポーネントを含有し得、同様の参照番号は同一の部分または対応する部分を指す。
図7Bに示されるように、パーティクルシミュレーションがCPUまたはGPU上で行われ得るが、一実施形態では、パーティクルシステムにおけるより大きい数のパーティクルに起因して大量の並行処理が行われるため、パーティクルシミュレーションはGPU上で行われる。パイプライン9400Bは、大量のパーティクル(例えば、1000よりも大きいパーティクル)を有するパーティクルシステム上のパーティクルシミュレーションを行うように構成され、頂点データを処理すること等の従来のレンダリング処理を行い、頂点をプリミティブ(例えば、多角形)に集め、ラスタ化を行い、ディスプレイに対してプリミティブからフラグメントを生成させ、次に、フラグメント毎に色及び深度値を算出し、表示するために、フレームバッファに記憶するための画素毎にフラグメントを混ぜるように構成される、プログラムプロセッサ9403及びプログラムプロセッサ9404を含む。
示されるように、グラフィックスパイプライン9400Bは、前述に紹介したように、3Dゲーム世界内の頂点と、頂点のそれぞれに対応する情報とを含む入力ジオメトリ9405を受信する。頂点によって画定される多角形(例えば、三角形)を使用して3D世界内のオブジェクトを表し、次に、対応する多角形の表面は、グラフィックスパイプライン9400Bによって処理され、最終効果(例えば、色、テクスチャ等)を達成する。一実施形態では、入力ジオメトリ9405は、パーティクルのシステムを含む。他の実施形態では、パーティクルシステムは、パーティクルシステム生成部9461等を使用して、グラフィックスパイプライン9400B内の内部に生成される。頂点属性は、法線(例えば、その方向は頂点に対して直角である)、色(例えば、RGB―赤、緑、及び青の3色の組等)、及びテクスチャ座標/マッピング情報を含み得る。入力ジオメトリはプログラムプロセッサ9403に入力され、より具体的には、パーティクル減少及びパーティクルシミュレーションを行うように構成されるシェーダ9460(例えば、コンピュートシェーダまたはジオメトリシェーダ)に入力される。概して、入力ジオメトリは、プロセッサ9403とプロセッサ9404との間で共有されることができる頂点バッファ内に置かれ得る。
レンダリングする前にシミュレーションが行われるため、パーティクルカウントは、シミュレーションのために減り得る。パーティクルカウント及びパーティクルシミュレーションの減少は、コンピュートシェーダまたはジオメトリシェーダ9460によって行われ得る。一実施形態では、(例えば、パーティクルのサブシステムを生成するための)パーティクルカウントの減少は、パーティクルシステム全体が中心窩の外側にあるとき(例えば、周辺領域内に表示されるとき)に行われる。頂点シェーダ9460の内部でのシミュレーション前に、減少を行う。具体的には、中心窩頂点判定部9462は、パーティクルシステムが中心窩領域の内側または外側にあるかを判定するように構成される。これは、パーティクルシステム全体が中心窩の外側にあるかを確認するために、パーティクルシステムに関する境界ボックスを画定することによって行われ得る。例えば、境界ボックスコンパレータ9463は、パーティクルシステムが周辺領域内に位置するかを判定するように構成される。
パーティクルシステムが中心窩領域の外側にあるとき、サブシステムパーティクル生成部9470は、シミュレーション前に、パーティクルカウントを減らすように構成される。具体的には、クラスタモジュール9472は、パーティクルをパーティクルの複数のクラスタにグループ化するように構成される。パーティクルのクラスタ毎に、アグリゲータモジュール9474はクラスタ内の全てのパーティクルを1つの集合パーティクルに集合させ、その状態では、ここで、パーティクルのクラスタは単一の集合パーティクルによって表される。したがって、クラスタの複数の集合パーティクルを含むパーティクルのサブシステムを生成する。クラスタ内のパーティクルの数は、パーティクルシステムにおけるパーティクルの合計数を標的数で除算することによって判定され得る。
クラスタモジュール9472は、パーティクルシステムにおけるクラスタの標的数に対応する集合パーティクルの標的数を判定するように構成され得る。標的数は、パーティクルシステムをレンダリングするときに処理される集合パーティクルの合計数に対応する。パーティクルのサブシステム(例えば、集合パーティクル)に含まれるパーティクルシステムから選択されたパーティクルは、パーティクルシステムをクラスタリングすることから(例えば、クラスタの標的数から)判定され得る。一実施形態では、クラスタリングはパーティクル間の関連距離に基づいて行われる。例えば、集合(例えば、クラスタリング)に基づいて、この距離を達成するために、パーティクルの最適なクラスタリングを選ぶために最近隣検索またはK平均法クラスタリング技術を使用してクラスタを生成し、パーティクルの各クラスタは対応する集合光源に関連付けられ、光源の各クラスタは少なくとも1つの光源を含む。一実施形態では、閾値は、クラスタ内部のパーティクルの最長距離に設定される。クラスタエラーはクラスタ毎に判定され得、エラーはクラスタ内のパーティクル間の距離に基づくものである。選択されたクラスタは、最小量のクラスタエラーを有することによって、または、むしろ、複数のクラスタに関する複数のクラスタエラーを最小にすることによって判定される。
アグリゲータモジュール9474は、パーティクルの各クラスタを取り、対応する集合パーティクルを生成する。集合パーティクルは、対応するクラスタ内のパーティクルに関する特徴の平均である特徴がある。例えば、集合パーティクルは、距離、色等の平均である特徴がある。具体的には、集合パーティクルは、クラスタ内のパーティクルの平均場所である新しい場所を含み得る。集合パーティクルは、対応するクラスタ内のパーティクルの質量を合計することによって判定される集合質量を有し得る。集合光源の新しい色は、クラスタ内のパーティクル毎の色の平均または加重和であり得る。限定ではないが、色、アルファ値、材料等を含む、さらに他の視覚特性が集合する。
暗化及びスケーリングモジュール9475は、パーティクルシステムのコンポーネントの属性を修正するように構成される。暗化及びスケーリングはコンピュートシェーダまたはジオメトリシェーダ9460で行われ、それにより、非中心窩レンダリングを行うとき(例えば、パーティクルのサブシステムをレンダリングするとき)、パーティクルシステムに対するさらなる調整を行う必要はない。すなわち、パーティクルシステムに対する全ての調節は、シミュレーションステージの前に、パーティクルシステムの非中心窩処理のためにシェーダ9460において行われる。
具体的には、スケーリング属性に関して、暗化及びスケーリングモジュール9475は、パーティクルのサブシステムにおける集合パーティクルのサイズを修正する(例えば、サイズを増加させる)。例えば、点スプライトを使用する場合、出力点サイズをある倍数だけ大きくなるようにスケーリングされ得る。倍数はいくつかの方法で判定され得る。例えば、前述に説明したように、倍数は、パーティクルの合計数と比較して、サブシステムにおけるパーティクルの数に関連する縮小率であり得る。別の実施態様では、パーティクルシステムが、インスタンス化されたジオメトリを使用して(例えば、メッシュのコピーのパラメータ変動がある単一のメッシュの複数のコピーをレンダリングする)説明される場合、インスタンス化されたメッシュは、ある倍数だけ大きくなるようにスケーリングされることができる。スケーリングは、パーティクルシステムのパーティクルのフルコンポーネントをレンダリングするときのように、パーティクルのサブシステムを処理するとき、同様に寸法効果を生じさせるために行われる。
パーティクル及びパーティクルのコンポーネントの暗化は、パーティクルシステムのパーティクルのフルコンポーネントをレンダリングするときのように、パーティクルのサブシステムを処理するとき、同様に色彩効果を生じさせるために行われる。一実施態様では、集合パーティクルのコンポーネントのアルファ値は、パーティクルのサブシステムの各パーティクルを暗くするために調節される。例えば、アルファ値は、パーティクルをより大きくさせる(例えば、スケーリングさせる)とき、効果(例えば、煙)の不透明度を増加させるために調節される。さらに他の視覚特性(例えば、材料等)は、同様に、所望の知覚継続性を維持するために修正され得る。
暗化及びスケーリングモジュール9475の出力は、既に、パーティクルシステムの非中心窩処理に合わせて調節される。パーティクルシステムに対するさらなる減少またはパーティクルシステムに対する調節は、周辺領域内にあるパーティクルシステムをレンダリングするような必要はない。
パーティクルシミュレーションモジュール9477は、位置、質量、及びパーティクルの速さ、ならびにパーティクルに印加される様々な力(例えば、重力等の外力、静電気等、及びパーティクル間の相互作用を表す内力)に応じてフレーム毎に、パーティクルシミュレーションを行う(例えば、パーティクル運動を計算する等)。概して、第1のフレームから後続のフレームまで、パーティクル位置を初期化し、パーティクル位置を更新するような動作を行う。
コンピュートシェーダまたはジオメトリシェーダ9460の出力は、パーティクルシステムの非中心窩処理に合わせて調節される。パーティクルシステムに対するさらなる減少またはパーティクルシステムに対する調節は、周辺領域内にあるパーティクルシステムをレンダリングするような必要はない。シェーダ9460の出力は、パーティクルシステムのプリミティブ(例えば、多角形)を含み得る。例えば、出力が頂点バッファ内に記憶され得、次に、その出力がプログラマブルプロセッサ9404(例えば、頂点シェーダ9410’)に入力される。すなわち、頂点バッファの値は、図7Bに示されるようなグラフィックスパイプライン9400Bのステージ間で共有され得る。GPU構成の内部で実施されるものとして、残りのコンポーネント(例えば、出力統合及びフレームバッファを含むラスタライザ、フラグメントシェーダ、及びレンダリング)は使用されていなく、それにより、次に、シェーダ9460からの出力は、送達され及び/またはプロセッサ9404と共有され、レンダリングを含むより従来的なGPU動作を行う。
より具体的には、前述に説明したように、頂点シェーダ9410’は、入力ジオメトリ9405を直接及び/またはプロセッサ9403から受信し、3Dシーン内でオブジェクトを構成する多角形またはプリミティブを作る。頂点シェーダ9410’は、さらに、プロセッサ9403によって完了されない場合、シミュレート済みのパーティクルシステムにプリミティブを作り得る。すなわち、頂点シェーダ9410’は、オブジェクトがゲーム世界内にセットされるとき、プリミティブを使用してオブジェクトを作り上げる。例えば、頂点シェーダ9410’は、シーンのライティングに応じて、多角形に関するライティング計算及びシャドーイング計算を行うように構成され得る。プリミティブは、頂点シェーダ9410’によって出力され、グラフィックスパイプライン9400Bの次のステージに送達される。また、クリッピング(例えば、ゲーム世界内の視点によって定義されるようなビューフラスタムの外側にあるプリミティブを識別及び無視する)等の追加動作は、頂点シェーダ9410’によって行われ得る。
頂点プロセッサ9410’によって出力されるプリミティブはラスタライザ9420にフィードされ、ラスタライザ9420は、シーン内のオブジェクトを、3Dゲーム世界内の視点(例えば、カメラ場所、ユーザの眼の位置等)によって定義される2次元(2D)の画像平面に投影するように構成される。これらのプリミティブは、コンピュートシェーダ9403によって前述に行われたように、パーティクルシステムによって発生する効果が周辺領域内にあるとき、(例えば、パーティクルのフルコンポーネントの代わりに)パーティクルのサブシステムを含む。また、プリミティブは、パーティクルシステムをより高解像度でレンダリングするために、パーティクルシステムによって発生する効果が中心窩領域内にあるとき、パーティクルのフルシステムを含み得る。
前述に説明したように、ラスタライザ9420は各プリミティブを確認して、対応するプリミティブによってどの画素が影響を受けるかを判定する。具体的には、ラスタライザ9420はプリミティブを画素サイズフラグメントに分割し、各フラグメントは、ディスプレイの内部、及び/または視点(例えば、カメラビュー)をレンダリングすることに関連付けられる基準面の内部の画素に対応する。1つ以上のフラグメントが、画像を表示するとき、対応する画素の色に寄与し得る。
中心窩フラグメントシェーダ9430は、そのコアにおいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントシェーダ9430は、フラグメント毎に、深度、色、法線、及びテクスチャ座標(例えば、テクスチャ細部)を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントシェーダ9430は、色及び他の属性(例えば、視点からの距離に関するz深度、及び透明度に関するアルファ値)を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ9430は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、フラグメントシェーダ9430は、フラグメント毎に、シャドーイング効果を適用し得る。フラグメントシェーダ9430の出力は、処理されたフラグメント(例えば、テクスチャ及びシェーディング情報)を含み、グラフィックスパイプライン9400の次のステージに送達される。パーティクルシステムを小さくするべきであるとき、頂点シェーダ9460が事前に判定されたので、中心窩フラグメントシェーダ9430への入力は既に、パーティクルシステムが周辺領域内にあるとき、適切にクラスタリング及び集合している。すなわち、パーティクルシステムのフラグメントは、フラグメントが中心窩領域の内側または外側にあるかどうかに応じて、異なるようにレンダリングされる。したがって、プログラマブルシェーダ9404のグラフィックスパイプラインの残りのコンポーネントは、パーティクルシステムによって発生する効果が中心窩領域内にあるとき、パーティクルシステムにおけるパーティクルのフルコンポーネントをレンダリングするように構成される。また、プログラマブルシェーダ9404のグラフィックスパイプラインの残りのコンポーネントは、効果が周辺領域内にあるとき、パーティクルのサブシステムをレンダリングするように構成される。
出力統合コンポーネント9440は、対応する画素のそれぞれに寄与する及び/またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、3Dゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイの2D色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン9400Bの次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント9440は、フラグメント間の値及び/またはフラグメントシェーダ9430から判定された画素の選定的混合を行い得る。
ディスプレイ9455内の画素毎の明度は、フレームバッファ9450内に記憶される。これらの値は、シーンの対応する画像を表示するとき、対応する画素に対して走査される。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、もしくは右から左に、上から下に、もしくは下から上に、または任意の他のパターンで、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
加えて、図7A及び図7Bのシステム及びグラフパイプラインに関して、非中心窩レンダリングのために、追加方法を実施し得る。一実施形態では、周辺領域内に位置するパーティクルシステムは、本システムが中心窩領域内に位置する場合よりも少ない頻度で更新され得る。例えば、パーティクルシステムシミュレーションによってシミュレートされたクロスアニメーションは、より小さいフレーム毎秒で実行され得る。別の実施形態では、メッシュによって表されるパーティクルシステムは、周辺領域内に位置するとき、低密度のメッシュを使用して生成及び/またはレンダリングされ得る。例えば、中心窩領域の外側に位置するとき、低密度メッシュを使用して水を表し得る。
ネットワークを通して通信するゲームサーバ及びクライアントデバイスの様々なモジュールの詳細な説明によって、図8のフロー図9500は、本開示の一実施形態による、大量のパーティクル(例えば、1000を超えるもの)のシミュレーションを含む中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施し、パーティクルシステムの描画効果が中心窩領域または周辺領域の内部に位置するかどうかに応じて、パーティクルクラスタリング及びパーティクル集合によって生成されるパーティクルの全システムまたはパーティクルのサブシステムを使用して、パーティクルシステムをシミュレーションし、次に、レンダリングすることの両方を行うような方法を開示している。図8の方法が、特に、多数のパーティクルでのパーティクルシミュレーションに適しているが、一実施形態では、本方法は、また、パーティクルのより小さい数(例えば、1000未満)で、パーティクルシミュレーションに適切である。前述に説明したように、フロー図9500は、画像をレンダリングするとき、クライアントデバイスまたはクラウドベースゲームシステムの内部で実施される。一実施態様では、クライアントデバイスはゲーム機(また、ゲームコンソールと称される)である。
9510において、本方法はパーティクルのシステムを生成することを含み、パーティクルのシステムは、仮想シーンで効果(例えば、表示される3Dゲーム世界の画像)を発生させる。パーティクルのシステムは、複数のパーティクルジオメトリ(例えば、頂点、多角形、三角形等)を含む。具体的には、パーティクルに関する複数の頂点は、グラフィックスパイプラインに対する入力である。複数のパーティクルジオメトリ(例えば、多角形)は、ジオメトリから生成する。パーティクルのシステムが制限されるため、パーティクルのフルコンポーネントを使用して、シミュレーションを行う。すなわち、パーティクルジオメトリを使用して、効果をシミュレートする。
しかしながら、効果が周辺領域内に位置するとき、パーティクルのシステムはレンダリングされる。具体的には、9530において、本方法は、仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く(例えば、想定または追跡される)場所に対応し得る。中心窩領域は、最高解像度で表面をレンダリングすることに関連付けられ得る(パーティクルのフルコンポーネントを使用して、及び周辺領域内にあるときパーティクルのサブシステムを使用して、パーティクルシステムをレンダリングすることに関連付けられる)。例えば、図4Bの中心窩判定部462は、9530の動作を行うように構成され得る。
9540において、本方法は、効果の少なくとも一部が、画像の周辺領域内に位置していることを判定することを含む。例えば、少なくとも1つのパーティクルまたはパーティクルジオメトリ(例えば、多角形、フラグメント等)は、周辺領域内にあるように判定され得る。具体的には、9542において、本方法は、パーティクルのシステムの境界ボックスを画定することを含む。9544において、本方法は、境界ボックスが中心窩領域の外側にあるとき(すなわち、周辺領域の内側にあるとき)、パーティクルのシステムが周辺領域内にあることを判定することを含む。
その場合、本方法は、9520において、パーティクルのシステムからパーティクルのサブシステムを判定することを含む。パーティクルのサブシステムは、パーティクルのシステムに関する複数のパーティクルジオメトリに基づくパーティクルジオメトリのサブセットを含む。例えば、図4Bのサブシステムパーティクル生成部470は、パーティクルの減少を行うように構成される。具体的には、図4Bに関して前述に説明したように、9525において、パーティクルの複数のクラスタを生成することによって、減少を行う。具体的には、9526において、クラスタのそれぞれは、対応する集合パーティクルによって表され、パーティクルのサブシステムは集合パーティクルを含み、集合パーティクルを使用して作られる。例えば、集合パーティクルは、対応するクラスタ内のパーティクルに関する特徴の平均である特徴がある。すなわち、集合パーティクルは、距離、色等の平均である特徴がある。具体的には、集合パーティクルは、クラスタ内のパーティクルの平均場所である新しい場所を含み得る。集合パーティクルは、対応するクラスタ内のパーティクルの質量を合計することによって判定される集合質量を有し得る。集合光源の新しい色は、クラスタ内のパーティクル毎の色の平均または加重和であり得る。限定ではないが、色、アルファ値、材料等を含む、さらに他の視覚特性が集合する。
加えて、本方法は、前述に説明したように、パーティクルのサブシステムに対応する縮小率に基づいて、パーティクルのサブシステムのそれぞれのサイズを拡大することを含み得る。さらに、前述に説明したように、パーティクルのサブシステム毎の色は、例えば、修正されたアルファ値を適用することによって、縮小率に基づいて暗くなり得る。さらに他の視覚特性(例えば、材料等)は、所望の知覚継続性を維持するために修正され得る。
この時点では、パーティクルのシステムは、シミュレーション及びレンダリングのために減少する。さらなる減少は周辺領域内のパーティクルシステムに適応する必要はない。したがって、中心窩領域内のパーティクルシステムは、パーティクルのフルコンポーネントを使用して、シミュレート及びレンダリングされる。また、効果の少なくとも一部が周辺領域内にあることが判定されたとき、9550において、本方法は、グラフィックスパイプラインの残りのステージによって、パーティクルのサブシステムに対応するパーティクルジオメトリのサブセットをレンダリングすることを含む。
図9は、本開示の一実施形態による、画像の効果をシミュレートするために使用されるパーティクルのシステム9610からパーティクルのサブシステム9620を生成する例証図である。パーティクルシステムは、火、煙、ロケット排気、水、魔法等のいくつかの種類の物理的効果及び非物理的効果を生じるために使用されることができる。示されるように、パーティクルのシステム9610は、複数のパーティクルを含む。例えば、小型システムは最大約1000パーティクルを含み得る一方、大型システムは1000を超えるパーティクル(例えば、数百万)を含み得る。前述に説明したように、パーティクルのシステムは、パーティクルシステムによって発生する効果が画像の中心窩領域の内側または外側に表示されるかどうかに応じて、異なるようにシミュレート及び/またはレンダリングされる。具体的には、効果が周辺領域内にあるとき、パーティクルのサブシステム9610はシミュレート及び/またはレンダリングされる。示されるように、パーティクルのサブシステム9610は、減少した数のパーティクルを有する。例えば、パーティクルのサブシステム9610は、ランダム選択(例えば、インデックスのランダム選択)によって、またはクラスタリング及び集合によって減少し得る。したがって、パーティクルのサブシステムをシミュレート及び/またはレンダリングすることによって、対応する画像の周辺領域内のパーティクルシステムによって生じる効果をレンダリングするために必要な算出を少なくする。
一実施形態では、コンピュータシステムはプロセッサ及びメモリを含み、メモリは、プロセッサに結合され、コンピュータシステムによって実行される場合、コンピュータシステムに、グラフィックスパイプラインを実施するための方法を実行させる命令をメモリ内に記憶する。本方法は、仮想シーンで効果を生じるパーティクルのシステムを生成することを含み、パーティクルのシステムは複数のパーティクルジオメトリを含む。本方法は、さらに、パーティクルのシステムからパーティクルのサブシステムを判定することを含み、パーティクルのサブシステムは複数のパーティクルジオメトリから取られたパーティクルジオメトリのサブセットを含む。本方法は、さらに、仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く場所に対応する。本方法は、さらに、効果の少なくとも一部が、画像の周辺領域内に位置していることを判定することを含む。本方法は、さらに、パーティクルのサブシステムをレンダリングし、効果を生じさせることを含む。
別の実施形態では、コンピュータシステムによって実行される方法においてパーティクルのサブシステムを判定することは、複数のパーティクル頂点をグラフィックスパイプラインに入力することを含む。本方法でパーティクルのサブシステムを判定することは、さらに、複数のパーティクルジオメトリを複数のパーティクル頂点から生成することを含む。本方法でパーティクルのサブシステムを判定することは、さらに、複数のパーティクルジオメトリを使用して、効果をシミュレートすることを含む。本方法でパーティクルのサブシステムを判定することは、さらに、複数のパーティクルをサンプリングし、パーティクルのサブシステムを生成することを含む。本方法でパーティクルのサブシステムを判定することは、さらに、パーティクルのサブシステムに対応するパーティクルジオメトリのサブセットをレンダリングすることを含む。
別の実施形態では、本方法は、さらに、複数のパーティクルジオメトリの頂点をインデックス化することを含む。本方法では、複数のパーティクルをサンプリングすることは、さらに、レンダリングされるパーティクルジオメトリのサブセットを含む描画リストを生成することを含む。本方法では、パーティクルジオメトリのサブセットをレンダリングすることは、さらに、頂点が描画リストのインデックスに関連付けられるとき、第1のパーティクルジオメトリの頂点をレンダリングすることを含む。
別の実施形態では、本方法は、さらに、サブセットに対応する縮小率に基づいて、パーティクルのサブシステムのそれぞれのサイズを拡大することを含む。本方法は、さらに、パーティクルの視覚特性を修正し、所望の知覚継続性を維持することを含む。
別の実施形態では、本方法でパーティクルのサブシステムを判定することは、さらに、パーティクルのシステムの少なくとも1つのパーティクルが周辺領域内にあることを判定することを含む。本方法でパーティクルのサブシステムを判定することは、さらに、パーティクルの複数のクラスタをパーティクルのシステムから生成することを含み、クラスタのそれぞれは、対応する集合パーティクルによって表され、パーティクルのサブシステムは集合パーティクルを含む。本方法でパーティクルのサブシステムを判定することは、さらに、パーティクルのサブシステムを使用して、効果をシミュレートすることを含む。
別の実施形態では、本方法は、さらに、パーティクルのシステムに関する境界ボックスを画定することを含む。本方法は、さらに、境界ボックスが周辺領域内にあることを判定することを含む。
別の実施形態では、本方法は、さらに、最近隣検索またはK平均法クラスタリング技術を使用して、パーティクルの複数のクラスタを生成することを含む。
別の実施形態では、本方法は、さらに、パーティクルの対応するクラスタ内のパーティクルの場所を平均化することによって、対応する集合パーティクルの集合場所を判定することを含む。本方法は、さらに、パーティクルの対応するクラスタ内のパーティクルの質量を合計することによって、対応する集合パーティクルの集合質量を判定することを含む。本方法は、さらに、パーティクルのサブシステムに対応する縮小率に基づいて、対応する集合パーティクルのサイズをスケーリングすることを含む。本方法は、さらに、対応する集合パーティクルの集合視覚特性を判定することを含む。
別の実施形態では、非一時的なコンピュータ可読媒体は、グラフィックスパイプラインを実施するためのコンピュータプログラムを記憶する。コンピュータ可読媒体は、仮想シーンで効果を生じるパーティクルのシステムを生成するためのプログラム命令を含み、パーティクルのシステムは複数のパーティクルジオメトリを含む。コンピュータ可読媒体は、さらに、パーティクルのシステムからパーティクルのサブシステムを判定するためのプログラム命令を含み、パーティクルのサブシステムは複数のパーティクルジオメトリから取られたパーティクルジオメトリのサブセットを含む。コンピュータ可読媒体は、さらに、仮想シーンの画像をレンダリングするとき、中心窩領域を判定するためのプログラム命令を含み、中心窩領域はユーザの注目が向く場所に対応する。コンピュータ可読媒体は、さらに、効果の少なくとも一部が、画像の周辺領域内に位置していることを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、パーティクルのサブシステムをレンダリングし、効果を生じさせるためのプログラム命令を含む。
別の実施形態では、非一時的なコンピュータ可読媒体内に、パーティクルのサブシステムを判定するためのプログラム命令は、さらに、複数のパーティクル頂点をグラフィックスパイプラインに入力するためのプログラム命令を含む。パーティクルのサブシステムを判定するためのプログラム命令は、さらに、複数のパーティクルジオメトリを複数のパーティクル頂点から生成するためのプログラム命令を含む。パーティクルのサブシステムを判定するためのプログラム命令は、さらに、複数のパーティクルジオメトリを使用して、効果をシミュレートするためのプログラム命令を含む。パーティクルのサブシステムを判定するためのプログラム命令は、さらに、パーティクルのサブシステムを生成するために、複数のパーティクルをサンプリングするためのプログラム命令を含む。パーティクルのサブシステムを判定するためのプログラム命令は、さらに、パーティクルのサブシステムに対応するパーティクルジオメトリのサブセットをレンダリングするためのプログラム命令を含み得る。
別の実施形態では、非一時的なコンピュータ可読媒体は、さらに、複数のパーティクルジオメトリの頂点をインデックス化するためのプログラム命令を含む。非一時的なコンピュータ可読媒体内では、複数のパーティクルをサンプリングするためのプログラム命令は、さらに、レンダリングされるパーティクルジオメトリのサブセットを含む描画リストを生成するためのプログラム命令を含む。非一時的なコンピュータ可読媒体では、パーティクルジオメトリのサブセットをレンダリングするためのプログラム命令は、さらに、頂点が描画リストのインデックスに関連付けられるとき、第1のパーティクルジオメトリの頂点をレンダリングするためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、サブセットに対応する縮小率に基づいて、パーティクルのサブシステムのそれぞれのサイズを拡大するためのプログラム命令を含む。非一時的なコンピュータ可読媒体は、さらに、パーティクルの視覚特性を修正し、所望の知覚継続性を維持するためのプログラム命令を含む。
別の実施形態では、コンピュータ可読媒体内では、パーティクルのサブシステムを判定するためのプログラム命令は、パーティクルのシステムの少なくとも1つのパーティクルが周辺領域内にあることを判定するためのプログラム命令を含む。コンピュータ可読媒体内では、パーティクルのサブシステムを判定するためのプログラム命令は、パーティクルの複数のクラスタをパーティクルのシステムから生成するためのプログラム命令を含み、クラスタのそれぞれは、対応する集合パーティクルによって表され、パーティクルのサブシステムは集合パーティクルを含む。コンピュータ可読媒体内では、パーティクルのサブシステムを判定するためのプログラム命令は、パーティクルのサブシステムを使用して、効果をシミュレートするためのプログラム命令を含む。
別の実施形態では、コンピュータ可読媒体は、さらに、パーティクルのシステムに関する境界ボックスを画定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、境界ボックスが周辺領域内にあることを判定するためのプログラム命令を含む。
別の実施形態では、コンピュータ可読媒体は、さらに、最近隣検索またはK平均法クラスタリング技術を使用して、パーティクルの複数のクラスタを生成するためのプログラム命令を含む。
別の実施形態では、コンピュータ可読媒体は、さらに、パーティクルの対応するクラスタ内のパーティクルの場所を平均化することによって、対応する集合パーティクルの集合場所を判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、パーティクルの対応するクラスタ内のパーティクルの質量を合計することによって、対応する集合パーティクルの集合質量を判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、パーティクルのサブシステムに対応する縮小率に基づいて、対応する集合パーティクルのサイズをスケーリングするためのプログラム命令を含む。コンピュータ可読媒体は、さらに、対応する集合パーティクルの集合視覚特性を判定するためのプログラム命令を含む。
特定の実施形態が中心窩レンダリングを行うように構成されるビデオレンダリングシステムのグラフィックスプロセッサの実施を説明するように提供されているが、中心窩領域内の画像の部分は高解像度でレンダリングされ、中心窩領域内の部分はより低解像度でレンダリングされ(例えば、同じ効果を達成するためのシミュレーションにおいて、集合光源を使用して、または小さい数のパーティクルを使用してレンダリングする)、これらは、例として説明され、限定的なものとして説明されない。本開示を読んでいる当業者は、本開示の主旨及び範囲の中に収まる追加実施形態を理解する。
広範な地理的エリアにわたって送達される本実施形態のゲームへのアクセス等を提供するアクセスサービスが、多くの場合、クラウドコンピューティングを使用することを留意されたい。クラウドコンピューティングは、動的に拡張可能であり、多くの場合、仮想化されたリソースがインターネットを通したサービスとして提供される、コンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」の技術インフラストラクチャに関する専門家である必要はない。クラウドコンピューティングは、サービスとしてのインフラストラクチャ(「IaaS」)、サービスとしてのプラットフォーム(「PaaS」)、及びサービスとしてのソフトウェア(「SaaS」)等の異なるサービスに分けられることができる。クラウドコンピューティングサービスは、多くの場合、ウェブブラウザからアクセスされるオンラインのビデオゲーム等の一般的アプリケーションを提供する一方で、ソフトウェア及びデータはクラウド内のサーバ上に記憶される。用語「クラウド」は、どのようにインターネットがコンピュータネットワーク図に示されるかに基づいてインターネットに関する例えとして使用され、それを隠す複雑なインフラストラクチャに関する抽象的概念である。
ゲーム処理サーバ(GPS)(または、単に「ゲームサーバ」)は、シングルプレイヤーの及びマルチプレイヤーのビデオゲームをプレイするために、ゲームクライアントによって使用される。インターネットを通してプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。一般的に、ゲームは、データをプレイヤーから集める専用サーバアプリケーションを使用し、そのデータを他のプレイヤーに分配する。これは、ピアツーピア配列よりも効率的及び効果的であるが、別個のサーバにサーバアプリケーションをホストすることを要求する。別の実施形態では、GPSは、プレイヤーとそれらの各々のゲームプレイ用デバイスとの間に通信を確立し、集中型GPSに依存することなく情報を交換する。
専用GPSは、クライアントから独立して起動するサーバである。係るサーバは、通常、データセンター内に位置する専用ハードウェア上で起動し、より広い帯域幅及びより多くの専用処理電力を提供する。専用サーバが、ほとんどのPCベースのマルチプレイヤーゲームのためのゲームサーバをホストする好ましい方法である。大規模マルチプレイヤーオンラインゲームは、通常、ゲームタイトルを所有するソフトウェア会社によってホストされる専用サーバ上で起動し、そのゲームが、コンテンツを制御及び更新することを可能にする。
ユーザは、少なくともCPU、ディスプレイ、及びI/O(入出力)を含むクライアントデバイスを用いて、リモートサービスにアクセスする。クライアントデバイスは、PC、携帯電話、ネットブック、PDA等であり得る。一実施形態では、ゲームサーバ上で実行するネットワークは、クライアントによって使用されるデバイスの種類を認識し、使用される通信方法を調節する。他の場合、クライアントデバイスは、html等の標準的通信方法を使用して、インターネットを通してゲームサーバ上でアプリケーションにアクセスする。
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベース電子機器またはプログラム可能家庭用電子機器、ミニコンピュータ、メーンフレームコンピュータ等を含む様々なコンピュータシステム構成で実践され得る。本開示は、また、タスクが有線ベースネットワークまたは無線ネットワークを経由してリンクされるリモート処理デバイスによって行われる分散コンピューティング環境で実践されることができる。
所与のビデオゲームが特定のプラットフォーム及び特定の関連のコントローラデバイス用に開発され得ることを認識されたい。しかしながら、係るゲームが本明細書に提示されるようなゲームクラウドシステムを介して利用可能にされるとき、ユーザは、異なるコントローラデバイスでビデオゲームにアクセスし得る。例えば、ゲームは、ゲームコンソール及びその関連のコントローラ用に開発されている場合がある一方で、ユーザは、キーボード及びマウスを利用するパーソナルコンピュータからゲームのクラウドベースバージョンにアクセスする場合がある。係るシナリオでは、入力パラメータ構成は、ユーザの利用可能であるコントローラデバイス(この場合、キーボード及びマウス)によって生成されることができる入力から、ビデオゲームを実行するために受容可能である入力までのマッピングを定義することができる。
別の例では、ユーザは、タブレットコンピューティングデバイス、タッチスクリーンスマートフォン、または他のタッチスクリーン駆動デバイスを介して、クラウドゲームシステムにアクセスし得る。この場合、クライアントデバイス及びコントローラデバイスは、同じデバイスになるように一緒に一体化され、入力が検出済タッチスクリーンの入力/ジェスチャを用いて提供される。係るデバイスに関して、入力パラメータ構成は、ビデオゲームに関するゲーム入力に対応する特定のタッチスクリーン入力を定義し得る。例えば、ボタン、指向性パッド、または他の種類の入力要素は、ユーザがゲーム入力を生成するために触れることができるタッチスクリーン上の場所を示すビデオゲームの起動中、表示される、または重なる場合がある。特定の方向または特有のタッチ動作のスワイプ等のジェスチャは、また、ゲーム入力として検出され得る。一実施形態では、指導書は、ユーザに、タッチスクリーン上での制御の動作に慣れさせるように、(例えば、ビデオゲームのゲームプレイが始まる前に)ゲームプレイ用のタッチスクリーンを介して入力を提供する方法を示すように、ユーザに提供されることができる。
いくつかの実施形態では、クライアントデバイスは、コントローラデバイスに関する接続点の役割を果たす。すなわち、コントローラデバイスは、クライアントデバイスと無線接続または有線接続を介して通信し、入力をコントローラデバイスからクライアントデバイスに伝送する。クライアントデバイスは、順に、これらの入力を処理し、次に、ネットワーク(例えば、ルータ等のローカルネットワークデバイスを介してアクセスされる)を介して、入力データをクラウドゲームサーバに伝送し得る。しかしながら、他の実施形態では、コントローラ自体は、最初にクライアントデバイスを経由して係る入力を通信させることを要求されることなく、クラウドゲームサーバに対するネットワークを介して直接入力を通信させる能力があるネットワークデバイスであり得る。例えば、コントローラは、ローカルネットワークデバイス(前述のルータ等)に接続し、データをクラウドゲームサーバに送信し、及びクラウドゲームサーバから受信する場合がある。したがって、クライアントデバイスが依然としてクラウドベースビデオゲームから出力されるビデオを受信し、それをローカルディスプレイ上にレンダリングすることが要求され得るが、クライアントデバイスをバイパスするように、クラウドゲームサーバに対するネットワークを通して直接コントローラが入力を送信することを可能にすることによって、入力レイテンシを短縮することができる。
一実施形態では、ネットワークコントローラ及びクライアントデバイスは、ある種類の入力をコントローラから直接クラウドゲームサーバに送信し、クライアントデバイスを介して他の種類の入力を送信するように構成されることができる。例えば、入力(その入力の検出がコントローラ自体とは別の任意の追加ハードウェアまたは処理に依存しない)は、クライアントデバイスをバイパスするように、ネットワークを介して、コントローラから直接クラウドゲームサーバに送信されることができる。係る入力は、ボタン入力、ジョイスティック入力、内蔵式動き検出入力部(例えば、加速度計、磁気計、ジャイロスコープ)等を含み得る。しかしながら、追加ハードウェアを利用する、またはクライアントデバイスによる処理を要求する入力は、クライアントデバイスによって、クラウドゲームサーバに送信されることができる。これらは、クラウドゲームサーバに送信する前に、クライアントデバイスによって処理され得るゲーム環境からキャプチャされたビデオまたは音声を含む場合がある。加えて、コントローラの動き検出ハードウェアからの入力は、コントローラの位置及び動きを検出するように、キャプチャされたビデオと併せてクライアントデバイスによって処理される場合があり、コントローラは、その後、クライアントデバイスによって、クラウドゲームサーバに通信する。様々な実施形態に従ってコントローラデバイスがまた、データ(例えば、フィードバックデータ)をクライアントデバイスから、またはクラウドゲームサーバから直接受信し得ることを認識されたい。
本明細書に説明される実施形態が任意の種類のクライアントデバイス上で実行され得ることを理解されたい。いくつかの実施形態では、クライアントデバイスは、ヘッドマウントディスプレイ(HMD)である。
図10は、本開示の実施形態による、示されるヘッドマウントディスプレイ102のコンポーネントを示す図である。ヘッドマウントディスプレイ102は、プログラム命令を実行するためのプロセッサ1000を含む。メモリ1002は、記憶する目的のために提供され、揮発性メモリ及び不揮発性メモリの両方を含み得る。ユーザが視認し得る視覚インターフェースを提供するディスプレイ1004が含まれる。バッテリ1006は、ヘッドマウントディスプレイ102用の電源として提供される。動き検出モジュール1008は、磁気計1010A、加速度計1012、及びジャイロスコープ1014等の任意の様々な種類の動き感知ハードウェアを含み得る。
加速度計は、加速度及び重力誘導反動力を測定するためのデバイスである。単一及び複数の軸モデルは、異なる方向で、加速度の大きさ及び方向を検出することに利用可能である。加速度計は、傾斜、振動、及び衝撃を感知するために使用される。一実施形態では、3つの加速度計1012は、重力の方向を提供するために使用され、その重力は、2つの角度に関する絶対参照(世界空間ピッチ及び世界空間ロール)を与える。
磁気計は、ヘッドマウントディスプレイの付近における磁場の強度及び方向を測定する。一実施形態では、3つの磁気計1010Aは、ヘッドマウントディスプレイの内部で使用され、世界空間のヨー角に関する絶対参照を確実にする。一実施形態では、磁気計は、地磁場が±80マイクロテスラの範囲にわたるように設計されている。磁気計は、金属による影響を受け、実際のヨーで単調であるヨー測定を提供する。磁場は、ヨー測定において歪みを生じる環境の金属に起因して歪み得る。必要に応じて、この歪みは、ジャイロスコープまたはカメラ等の他のセンサからの情報を使用して較正されることができる。一実施形態では、加速度計1012は、磁気計1010Aと一緒に使用され、ヘッドマウントディスプレイ102の傾角及び方位角を取得する。
ジャイロスコープは、角度のモーメントの原理に基づいて、配向を測定または維持するためのデバイスである。一実施形態では、3つのジャイロスコープ1014は、慣性感知に基づいて、各々の軸(x、y、及びz)にわたる運動に関する情報を提供する。ジャイロスコープは高速回転を検出する際に役立つ。しかしながら、ジャイロスコープは、絶対参照の存在なしで、時間超過してドリフトする可能性がある。これは、定期的にジャイロスコープをリセットすることを要求し、オブジェクト、加速度計、磁気計等の視覚的追跡に基づいて位置/配向の判定等の他の利用可能である情報を使用して行うことができる。
カメラ1016は、実環境の画像及び画像ストリームをキャプチャするために提供される。2つ以上のカメラは、ヘッドマウントディスプレイ102内に含まれ得、ヘッドマウントディスプレイ102は、後ろ向きのカメラ(ユーザがヘッドマウントディスプレイ102のディスプレイを視認するとき、ユーザから離れるように向いている)と、前向きのカメラ(ユーザがヘッドマウントディスプレイ102のディスプレイを視認するとき、ユーザに向かう向きになる)とを含む。加えて、深度カメラ1018は、実環境におけるオブジェクトの深度情報を感知するためのヘッドマウントディスプレイ102内に含まれ得る。
一実施形態では、HMDの前面に一体化されるカメラは、安全に関する警報を提供するために使用され得る。例えば、ユーザが壁またはオブジェクトに近づいている場合、ユーザは警告され得る。一実施形態では、物理的オブジェクトの存在をユーザに警告するために、部屋内の物理的オブジェクトの外観図を用いて使用を提供し得る。例えば、外観図は、仮想環境におけるオーバーレイであり得る。いくつかの実施形態では、HMDユーザは、例えば、フロア内で重なる参照マーカを視野に入れて提供され得る。例えば、マーカは、ユーザがゲームプレイしている部屋の中心の場所の参照をユーザに提供し得る。これは、例えば、部屋内の壁または他のオブジェクトに衝突することを回避するために、ユーザが移動するべき場所にいるユーザに視覚情報を提供し得る。また、ユーザがHMDを装着する、HMDでゲームをプレイする、またはコンテンツを閲覧するときに、さらなる安全性を提供するために、ユーザに触知性警報及び/または音声警報を提供することができる。
ヘッドマウントディスプレイ102は、音声出力を提供するためのスピーカ1020を含む。また、マイクロホン1022は、周囲環境からの音、ユーザによって行われるスピーチ等を含む実環境からの音声をキャプチャするために含まれ得る。ヘッドマウントディスプレイ102は、触覚フィードバックをユーザに提供するための触覚フィードバックモジュール1024を含む。一実施形態では、触覚フィードバックモジュール1024は、触覚フィードバックをユーザに提供するように、ヘッドマウントディスプレイ102の移動及び/または振動を生じさせることが可能である。
LED1026は、ヘッドマウントディスプレイ102の状態の可視的インジケータとして提供される。例えば、LEDは、バッテリレベル、電源オン等を示し得る。カードリーダ1028は、ヘッドマウントディスプレイ102が、情報をメモリカードから読み取り、及び情報をメモリカードに書き込むことを可能にするように提供される。USBインターフェース1030は、周辺デバイスの接続、または他のポータブルデバイス、コンピュータ等の他のデバイスへの接続を可能にするためのインターフェースの一例として含まれる。ヘッドマウントディスプレイ102の様々な実施形態では、任意の様々な種類のインターフェースは、ヘッドマウントディスプレイ102の良好な接続性を可能にするように含まれ得る。
Wi‐Fiモジュール1032は、無線ネットワーク技術を介して、インターネットへの接続を可能にするために含まれる。また、ヘッドマウントディスプレイ102は、他のデバイスへの無線接続を可能にするためのBluetooth(登録商標)モジュール1034を含む。通信リンク1036は、また、他のデバイスに接続するために含まれ得る。一実施形態では、通信リンク1036は、無線通信に関する赤外線伝送を利用する。他の実施形態では、通信リンク1036は、他のデバイスで通信するために、様々な無線または有線伝送プロトコルのいずれかを利用し得る。
入力ボタン/センサ1038は、ユーザに関する入力インターフェースを提供するために含まれる。ボタン、タッチパッド、ジョイスティック、トラックボール等の様々な種類の入力インターフェースのいずれかが含まれ得る。超音波通信モジュール1040は、超音波技術を用いて他のデバイスとの通信を容易にするために、ヘッドマウントディスプレイ102内に含まれ得る。
生物学的センサ1042は、ユーザからの生理学的データの検出を可能にするために含まれる。一実施形態では、生物学的センサ1042は、ユーザの皮膚を通るユーザの生体電気信号を検出するための1つ以上のドライ電極を含む。
光検出器1044は、3次元物理的環境にセットされるエミッタ(例えば、赤外線ベースステーション)からの信号に反応するために含まれる。ゲーム機は、情報を光センサ1044及びエミッタから分析し、ヘッドマウントディスプレイ102に関連する位置情報及び配向情報を判定する。
前述のヘッドマウントディスプレイ102のコンポーネントは、ヘッドマウントディスプレイ102内に含まれ得る単なる例示的コンポーネントとして説明されている。本開示の様々な実施形態では、ヘッドマウントディスプレイ102は、様々な前述のコンポーネントの一部を含む場合がある、または含まない場合がある。ヘッドマウントディスプレイ102の実施形態は、加えて、本明細書に説明されるような本開示の態様を容易にする目的のために、ここでは説明されていないが当技術分野で既知である他のコンポーネントを含み得る。
本開示の様々な実施形態では、前述のハンドヘルドデバイスは、様々な対話機能を提供するためにディスプレイ上に表示される対話型アプリケーションと併せて利用され得ることが当業者によって認識される。本明細書に説明される例示的実施形態は、単なる例として提供され、限定的なものとして提供されない。
図11は、本開示の様々な実施形態による、ゲームシステム1100のブロック図である。ゲームシステム1100は、ネットワーク1115を介して、ビデオストリームを1つ以上のクライアント1110に提供するように構成される。ゲームシステム1100は、一般的に、ビデオサーバシステム1120と、選択式ゲームサーバ1125とを含む。ビデオサーバシステム1120は、最低限の品質のサービスで、ビデオストリームを1つ以上のクライアント1110に提供するように構成される。例えば、ビデオサーバシステム1120は、ビデオゲーム内の視界の状態または視点を変更するゲームコマンドを受信し、クライアント1110に、最小のレイテンシでこの変化を反映しているビデオストリームの更新を提供し得る。ビデオサーバシステム1120は、まだ定義されていないフォーマットを含む、多種多様な代替ビデオフォーマットのビデオストリームを提供するように構成され得る。さらに、ビデオストリームは、多種多様なフレームレートにおいて、ユーザに提示されるように構成されるビデオフレームを含み得る。一般的なフレームレートは、30フレーム/秒、80フレーム/秒、及び820フレーム/秒である。しかし、より高い、またはより低いフレームレートが、本開示の代替実施形態に含まれる。
クライアント1110(本明細書に個別に1110A、1110B等として言及される)は、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話器、セットトップボックス、公衆電話ボックス、無線デバイス、デジタルパッド、独立型デバイス、ハンドヘルドゲームプレイ用デバイス、及び/または同等物を含み得る。一般的に、クライアント1110は、エンコードされたビデオストリーム(すなわち、圧縮されている)を受信し、ビデオストリームをデコードし、結果として生じるビデオをユーザ(例えば、ゲームのプレイヤー)に提示するように構成される。エンコードされたビデオストリームを受信する及び/またはビデオストリームをデコードするプロセスは、一般的に、クライアントの受信バッファ内に個別のビデオフレームを記憶することを含む。ビデオストリームは、クライアント1110に不可欠なディスプレイ上で、またはモニタもしくはテレビ等の別個のデバイス上で、ユーザに提示され得る。クライアント1110は、随意に、2人以上のゲームプレイヤーをサポートするように構成される。例えば、ゲームコンソールは、2人、3人、4人以上の同時参加プレイヤーをサポートするように構成され得る。これらのプレイヤーのそれぞれは、別個のビデオストリームを受信し得る、または単一のビデオストリームは、特にプレイヤー毎に生成される(例えば、各プレイヤーの視点に基づいて生成される)フレームの領域を含み得る。クライアント1110は、随意に、地理的に分散される。ゲームシステム1100内に含まれるクライアント数は、1人または2人から、数千人、数万人、それ以上の人数まで、広範囲に変わり得る。本明細書に使用されるような用語「ゲームプレイヤー」は、ゲームをプレイする人を指すように使用され、用語「ゲームプレイ用デバイス」は、ゲームをプレイするために使用されるデバイスを指すように使用される。いくつかの実施形態では、ゲームプレイ用デバイスは、ゲーム経験をユーザに送達するように連係する複数のコンピューティングデバイスを指し得る。例えば、ゲームコンソール及びHMDは、ビデオサーバシステム1120と連係し、HMDによって視認されるゲームを送達し得る。一実施形態では、ゲームコンソールは、ビデオストリームをビデオサーバシステム1120から受信し、ゲームコンソールは、レンダリングするためにHMDに、ビデオストリームを転送する、またはビデオストリームを更新する。
クライアント1110は、ネットワーク1115を介して、ビデオストリームを受信するように構成される。ネットワーク1115は、電話回線、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、プライベートネットワーク、及び/または同等物を含む、任意の種類の通信ネットワークであり得る。一般的な実施形態では、ビデオストリームは、TCP/IPまたはUDP/IP等の標準プロトコルを用いて通信する。代替として、ビデオストリームは、プロプリエタリ標準を用いて通信する。
クライアント1110の一般的な例は、プロセッサ、不揮発性メモリ、ディスプレイ、デコードロジック、ネットワーク通信能力、及び入力デバイスを備える、パーソナルコンピュータである。デコードロジックは、コンピュータ可読媒体上に記憶されるハードウェア、ファームウェア、及び/またはソフトウェアを含み得る。ビデオストリームをデコード(及びエンコード)するためのシステムは、当技術分野で周知であり、使用される特定のエンコードスキームに応じて変わり得る。
クライアント1110は、必須ではないが、さらに、受信されたビデオを修正するように構成されるシステムを含み得る。例えば、クライアントは、さらに、レンダリングを行い、1つのビデオ画像を別のビデオ画像上に重ね、ビデオ画像を切り取り、及び/または同様のことを行うように構成され得る。例えば、クライアント1110は、Iフレーム、Pフレーム、及びBフレーム等の様々な種類のビデオフレームを受信し、ユーザに表示するために、これらのフレームを画像内で処理するように構成され得る。いくつかの実施形態では、クライアント1110のメンバーは、さらに、レンダリング、シェーディング、3Dへの変換、またはビデオストリーム上の同様の動作を行うように構成される。クライアント1110のメンバーは、随意に、2つ以上の音声またはビデオストリームを受信するように構成される。クライアント1110の入力デバイスは、例えば、片手式ゲームコントローラ、両手式ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバックデバイス、動き及び/または場所感知デバイス、マウス、タッチスクリーン、神経インターフェース、カメラ、まだ開発中の入力デバイス、及び/または同等物を含み得る。
クライアント1110によって受信されるビデオストリーム(及び選択式オーディオストリーム)は、ビデオサーバシステム1120によって生成及び提供される。さらに本明細書の他の箇所で説明されるように、このビデオストリームは、ビデオフレームを含む(オーディオストリームはオーディオフレームを含む)。ビデオフレームは、ユーザに表示される画像に有意義に寄与するように構成される(例えば、それらは、適切なデータ構造の画素情報を含む)。本明細書に使用されるような用語「ビデオフレーム」は、ユーザに示される画像に寄与する(例えば、画像を生じさせる)ように構成される情報を主に含むフレームを指すように使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、また、「オーディオフレーム」に適用されることができる。
クライアント1110は、一般的に、入力をユーザから受信するように構成される。これらの入力は、ビデオゲームの状態を変化させる、またはそうでなければゲームプレイに影響を及ぼすように構成されるゲームコマンドを含み得る。ゲームコマンドは、入力デバイスを使用して受信することができる、及び/または、クライアント1110上で実行するコンピューティング命令によって、自動的に生成され得る。受信ゲームコマンドは、ビデオサーバシステム1120及び/またはゲームサーバ1125に対するネットワーク1115を介して、クライアント1110から通信する。例えば、いくつかの実施形態では、ゲームコマンドは、ビデオサーバシステム1120を介して、ゲームサーバ1125に対して通信する。いくつかの実施形態では、ゲームコマンドの別個のコピーは、クライアント1110から、ゲームサーバ1125及びビデオサーバシステム1120に通信する。ゲームコマンドの通信は、随意に、コマンドの識別情報に依存している。ゲームコマンドは、随意に、オーディオストリームまたはビデオストリームをクライアント1110Aに提供するために使用される異なるルートまたは通信チャネルを経由して、クライアント1110Aから通信する。
ゲームサーバ1125は、随意に、ビデオサーバシステム1120と異なるエンティティによって動作する。例えば、ゲームサーバ1125は、マルチプレイヤーゲームの発行者によって動作し得る。この例では、ビデオサーバシステム1120は、随意に、ゲームサーバ1125によって、クライアントとして見なされ、随意に、先行技術のゲームエンジンを実行する先行技術のクライアントであるゲームサーバ1125の視点から現れるように構成される。ビデオサーバシステム1120とゲームサーバ1125との間の通信は、随意に、ネットワーク1115を介して発生する。したがって、ゲームサーバ1125は、ゲーム状態情報を複数のクライアント(それらの1つがゲームサーバシステム1120である)に送信する先行技術のマルチプレイヤーゲームサーバであり得る。ビデオサーバシステム1120は、同時に、ゲームサーバ1125の複数のインスタンスと通信するように構成され得る。例えば、ビデオサーバシステム1120は、複数の異なるビデオゲームを異なるユーザに提供するように構成されることができる。これらの異なるビデオゲームのそれぞれは、異なるゲームサーバ1125によってサポートされ得る、及び/または異なるエンティティによって発行され得る。いくつかの実施形態では、ビデオサーバシステム1120のいくつかの地理的に分散されたインスタンスは、ゲームビデオを複数の異なるユーザに提供するように構成される。ビデオサーバシステム1120のこれらのインスタンスのそれぞれは、ゲームサーバ1125の同じインスタンスと通信し得る。ビデオサーバシステム1120と1つ以上のゲームサーバ1125との間の通信は、随意に、専用通信チャネルを介して発生する。例えば、ビデオサーバシステム1120は、これらの2つのシステム間の通信に専用である高帯域チャネルを介して、ゲームサーバ1125に接続され得る。
ビデオサーバシステム1120は、少なくとも、ビデオソース1130、入出力デバイス1145、プロセッサ1150、及び非一過性ストレージ1155を備える。ビデオサーバシステム1120は、1つのコンピューティングデバイスを含み得る、または複数のコンピューティングデバイス間で分散され得る。これらのコンピューティングデバイスは、随意に、ローカルエリアネットワーク等の通信システムを介して接続される。
ビデオソース1130は、ビデオストリーム(例えば、動画を形成するストリーミングビデオまたは一連のビデオフレーム)を提供するように構成される。いくつかの実施形態では、ビデオソース1130は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、ゲームコマンドをプレイヤーから受信するように、受信コマンドに基づいて、ビデオゲームの状態のコピーを維持するように構成される。このゲーム状態は、ゲーム環境のオブジェクトの位置と、一般的に視点とを含む。ゲーム状態は、また、オブジェクトの特性、画像、色、及び/またはテクスチャを含み得る。
ゲーム状態は、一般的に、ゲームルール、ならびに移動、回転、攻撃、焦点の設定、相互作用、使用、及び/または同様なこと等のゲームコマンドに基づいて維持される。ゲームエンジンの一部は、随意に、ゲームサーバ1125内に配置される。ゲームサーバ1125は、地理的に分散したクライアントを使用して、マルチプレイヤーから受信されたゲームコマンドに基づいてゲームの状態のコピーを維持し得る。これらの場合、ゲーム状態は、ゲームサーバ1125によって、ビデオソース1130に提供され、ゲーム状態のコピーは記憶され、レンダリングが行われる。ゲームサーバ1125は、ネットワーク1115を介して、クライアント1110から直接ゲームコマンドを受信し得る、及び/またはビデオサーバシステム1120を介してゲームコマンドを受信し得る。
ビデオソース1130は、一般的に、レンダリングロジック(例えば、ストレージ1155等のコンピュータ可読媒体上に記憶されるハードウェア、ファームウェア、及び/またはソフトウェア)を含む。このレンダリングロジックは、ゲーム状態に基づいて、ビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全てまたは一部は、随意に、グラフィック処理ユニット(GPU)内に配置される。レンダリングロジックは、一般的に、ゲーム状態及び視点に基づいて、オブジェクト間の3次元空間関係を判定するように、及び/または適切なテクスチャを適用するよう等に構成される処理段階を含む。レンダリングロジックは、未加工のビデオを作り出し、次に、未加工のビデオは、通常、クライアント1110に通信する前にエンコードされる。例えば、未加工のビデオは、Adobe Flash(登録商標)規格、.wav、H.264、H.263、On2、VP6、VC−1、WMA、Huffyuv、Lagarith、MPG−x.、Xvid.、FFmpeg、x264、VP6−8、realvideo、mp3等に従ってエンコードされ得る。エンコードプロセスは、リモートデバイス上のデコーダに送達するために随意にパッケージ化されたビデオストリームを作り出す。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。一般的なフレームサイズは、800×600、1280×720(例えば、720p)、1024x768を含むが、任意の他のフレームサイズを使用し得る。フレームレートは、1秒当たりのビデオフレーム数である。ビデオストリームは、異なる種類のビデオフレームを含み得る。例えば、H.264規格は「P」フレーム及び「I」フレームを含む。Iフレームは表示デバイス上で全てのマクロブロック/画素をリフレッシュする情報を含む一方で、Pフレームはそれらのサブセットをリフレッシュする情報を含む。Pフレームは、一般的に、Iフレームよりも小さいデータサイズである。本明細書に使用されるような用語「フレームサイズ」は、フレーム内の画素数を指すことを意味する。用語「フレームデータサイズ」は、フレームを記憶するために必要なバイト数を指すように使用される。
代替実施形態では、ビデオソース1130は、カメラ等のビデオ記録デバイスを含む。このカメラは、コンピュータゲームのビデオストリームに含まれる可能性がある遅延ビデオまたはライブビデオを生成するために使用され得る。結果として生じるビデオストリームは、随意に、レンダリング画像、及び静止画またはビデオカメラを使用して記録された画像の両方を含む。ビデオソース1130は、また、ビデオストリームに含まれる事前に記録されたビデオを記憶するように構成されるストレージデバイスを含み得る。ビデオソース1130は、また、オブジェクト(例えば、人)の動きまたは位置を検出するように構成される動きまたは位置感知デバイスと、ゲーム状態を判定するように、または検出された動き及び/または位置に基づくビデオを作り出すように構成されるロジックとを含み得る。
ビデオソース1130は、随意に、他のビデオ上でセットされるように構成されるオーバーレイを提供するように構成される。例えば、これらのオーバーレイは、コマンドインターフェース、命令のログ、ゲームプレイヤーへのメッセージ、他のゲームプレイヤーの画像、他のゲームプレイヤーのビデオフィード(例えば、ウェブ画像ビデオ)を含み得る。タッチスクリーンインターフェースまたは視線検出インターフェースを含むクライアント1110Aの実施形態では、オーバーレイは、仮想キーボード、ジョイスティック、タッチパッド、及び/または同等物を含み得る。オーバーレイの一例では、プレイヤーの声は、オーディオストリームにオーバーレイされる。ビデオソース1130は、随意に、1つ以上の音源をさらに含む。
ビデオサーバシステム1120が2人以上のプレイヤーからの入力に基づいてゲーム状態を維持するように構成される実施形態では、各プレイヤーは、視野の位置及び方向を含む異なる視点を有し得る。ビデオソース1130は、随意に、その視点に基づいて、プレイヤー毎に別個のビデオストリームを提供するように構成される。さらに、ビデオソース1130は、クライアント1110のそれぞれと異なるフレームサイズ、フレームデータサイズ、及び/またはエンコードを提供するように構成され得る。ビデオソース1130は、随意に、3次元ビデオを提供するように構成される。
入出力デバイス1145は、ビデオサーバシステム1120が、ビデオ、コマンド、情報に関する要求、ゲーム状態、視線情報、デバイスの動き、デバイスの場所、ユーザ運動、クライアント識別情報、プレイヤー識別情報、ゲームコマンド、セキュリティ情報、音声、及び/または同等物等の情報を送信及び/または受信するように構成される。入出力デバイス1145は、一般的に、ネットワークカードまたはモデム等の通信ハードウェアを含む。入出力デバイス1145は、ゲームサーバ1125、ネットワーク1115、及び/またはクライアント1110と通信するように構成される。
プロセッサ1150は、ロジック(例えば、本明細書に説明されるビデオサーバシステム1120の様々なコンポーネント内に含まれるソフトウェア)を実行するように構成される。例えば、プロセッサ1150は、ビデオソース1130、ゲームサーバ1125、及び/またはクライアント修飾子1160の機能を行うために、ソフトウェア命令でプログラムされ得る。ビデオサーバシステム1120は、随意に、プロセッサ1150の2つ以上のインスタンスを含む。プロセッサ1150は、また、ビデオサーバシステム1120によって受信されたコマンドを実行するために、または、本明細書に説明されるゲームシステム1100の様々な要素の動作を調整するために、ソフトウェア命令でプログラムされ得る。プロセッサ1150は1つ以上のハードウェアデバイスを含み得る。プロセッサ1150は電子プロセッサである。
ストレージ1155は、非一過性アナログストレージデバイス及び/または非一過性デジタルストレージデバイスを含む。例えば、ストレージ1155は、ビデオフレームを記憶するように構成されるアナログストレージデバイスを含み得る。ストレージ1155は、コンピュータ可読デジタルストレージ(例えば、ハードドライブ、光学式ドライブ、またはソリッドステートストレージ)を含み得る。ストレージ1155は、(例えば、適切なデータ構造またはファイルシステムを用いて)ビデオフレーム、人工フレーム、ビデオフレーム及び人工フレームと両方を含むビデオストリーム、オーディオフレーム、オーディオストリーム、及び/または同等物を記憶するように構成される。ストレージ1155は、随意に、複数のデバイス間で分散される。いくつかの実施形態では、ストレージ1155は、本明細書の他の箇所で説明されるビデオソース1130のソフトウェアコンポーネントを記憶するように構成される。これらのコンポーネントは、必要なときに、セットアップする準備ができているフォーマットで記憶され得る。
ビデオサーバシステム1120は、随意に、クライアント修飾子1160をさらに備える。クライアント修飾子1160は、クライアント1110Aまたは1110B等のクライアントの能力をリモートで判定するように構成される。これらの能力は、クライアント1110A自体の能力、及びクライアント1110Aとビデオサーバシステム1120との間の1つ以上の通信チャネルの能力の両方を含み得る。例えば、クライアント修飾子1160は、ネットワーク1115を経由して、通信チャネルをテストするように構成され得る。
クライアント修飾子1160は、手動で、または自動的に、クライアント1110Aの能力を判定(例えば、発見)することができる。手動判定は、能力を提供するために、クライアント1110Aのユーザと通信することと、ユーザに質問することとを含む。例えば、いくつかの実施形態では、クライアント修飾子1160は、クライアント1110Aのブラウザ内で、画像、テキスト、及び/または同等物を表示するように構成される。一実施形態では、クライアント1110Aは、ブラウザを含むHMDである。別の実施形態では、クライアント1110Aは、HMD上に表示され得るブラウザを有するゲームコンソールである。表示されるオブジェクトは、ユーザに、クライアント1110Aのオペレーティングシステム、プロセッサ、ビデオデコーダ種類、ネットワーク接続の種類、ディスプレイ解像度等の情報を入力することを要求する。ユーザによって入力された情報は、クライアント修飾子1160に戻るように通信する。
自動判定は、例えば、クライアント1110A上のエージェントの実行によって、及び/またはテストビデオをクライアント1110Aに送信することによって、発生し得る。エージェントは、ウェブページに組み込まれる、またはアドオンとしてインストールされるjava(登録商標)スクリプト等のコンピューティング命令を含み得る。エージェントは、随意に、クライアント修飾子1160によって提供される。様々な実施形態では、エージェントは、クライアント1110Aの処理電力、クライアント1110Aのデコード能力及び表示能力、遅延時間の信頼性、ならびにクライアント1110Aとビデオサーバシステム1120との間の通信チャネルの帯域幅、クライアント1110Aのディスプレイ種類、クライアント1110A上に存在するファイアウォール、クライアント1110Aのハードウェア、クライアント1110A上で実行するソフトウェア、クライアント1110A内のレジストリ項目、及び/または同等物を見つけることができる。
クライアント修飾子1160は、コンピュータ可読媒体上に記憶されるハードウェア、ファームウェア、及び/またはソフトウェアを含む。クライアント修飾子1160は、随意に、ビデオサーバシステム1120の1つ以上の他の要素から分離しているコンピューティングデバイス上に配置される。例えば、いくつかの実施形態では、クライアント修飾子1160は、クライアント1110と、ビデオサーバシステム1120の2つ以上のインスタンスとの間の通信チャネルの特徴を判定するように構成される。これらの実施形態では、クライアント修飾子によって発見された情報は、ビデオサーバシステム1120のどのインスタンスがストリーミングビデオをクライアント1110の1つに送達することに最良に適しているかを判定するために使用されることができる。
本明細書に定義される様々な実施形態は、本明細書に開示される様々な特徴を使用して、特定の実施態様に組み合わされ得る、または組み立てられ得ることを理解されたい。したがって、提供される例は、単なるいくつかの可能である例であり、より多くの実施態様を定義する様々な要素を組み合わせることによって可能である様々な実施態様に限定されない。いくつかの例では、いくつかの実施態様は、開示されるまたは同等の実施態様の主旨から逸脱することなく、より少ない要素を含み得る。
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベース電子機器またはプログラム可能家庭用電子機器、ミニコンピュータ、メーンフレームコンピュータ等を含む様々なコンピュータシステム構成で実践され得る。本開示の実施形態は、また、タスクが有線ベースネットワークまたは無線ネットワークを経由してリンクされるリモート処理デバイスによって行われる分散コンピューティング環境で実践されることができる。
上記の実施形態を留意して、本開示の実施形態が、コンピュータシステム内に記憶されるデータを含有する様々なコンピュータ実施動作を使用することができることを理解されたい。これらの動作は、物理量の物理的処置を要求するものである。本開示の実施形態の一部を形成する本明細書に説明される動作のいずれかは、有用な機械動作である。本発明の実施形態は、また、これらの動作を行うためのデバイスまたは装置に関する。本装置は、要求された目的のために特別に構成されることができる、または、本装置は、コンピュータ内に記憶されるコンピュータプログラムによって選択的にアクティブになる、または構成される汎用コンピュータであり得る。具体的には、様々な汎用マシンは、本明細書の教示に従って書き込まれたコンピュータプログラムで使用されることができる、または、様々な汎用マシンは、より特殊な装置を構成し、要求動作を行うのにより便利であり得る。
本開示は、また、コンピュータ可読媒体上のコンピュータ可読コードとして、具体化されることができる。コンピュータ可読媒体は、データを記憶することができる任意のデータストレージデバイスであり、当該データは、その後、コンピュータシステムによって読み取られることができる。コンピュータ可読媒体の例は、ハードドライブ、ネットワーク接続ストレージ(NAS)、読取専用メモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープ、ならびに他の光学データストレージデバイス及び非光学データストレージデバイスを含む。コンピュータ可読媒体は、ネットワーク連結コンピュータシステムを通して分散されるコンピュータ可読有形媒体を含み得、これにより、コンピュータ可読コードは、分散様式で記憶及び実行される。
本方法の動作が特定の順序で説明されたが、オーバーレイ動作の処理が所望の方法で行われる限り、他のハウスキーピング動作は動作間に行われ得る、または動作は、わずかに異なる時間で発生するように調節され得る、もしくは、処理に関連付けられる様々な間隔における処理動作の発生を可能にするシステム内で分散され得ることを理解されたい。
理解の明確性の目的のために、前述の開示がいくつか詳細に説明されているが、ある変更及び修正が添付の「特許請求の範囲」の範囲内で実践できることが明白である。したがって、本実施形態は、例証であり制限するものではないとして考慮され、本開示の実施形態は、本明細書に与えられた詳細に限定されないが、添付の「特許請求の範囲」の範囲内及びその均等物の範囲内で修正され得る。