以下の詳細な説明が例証の目的のために多くの具体的な詳細を含有するが、当業者は、以下の詳細に対する多くの変形及び改変が本開示の範囲内にあることを認識する。したがって、下記に説明される本開示の態様は、一般概念のいかなる損失を生じさせることなく、この説明に続く「特許請求の範囲」に制限を課すことなく記述されている。
概して、本開示の様々な実施形態は、中心窩レンダリングを行うように構成されるビデオレンダリングシステムのグラフィックスプロセッサを説明し、中心窩領域内の画像の部分は高解像度でレンダリングされ得、中心窩領域の外側の部分はより低解像度でレンダリングされ得る。具体的には、中心窩領域の内側に表示されるオブジェクトのシャドーイングはより高解像度のシャドーマップを使用してレンダリングされ、中心窩領域の外側に表示されるオブジェクトのシャドーイングはより低解像度のシャドーマップを使用してレンダリングされる。また、オブジェクトが周辺領域内にあるとき、低解像度のボーン階層を使用してオブジェクトのアニメーションを行い、それにより、また、低解像度のボーン階層に関連付けられるより低解像度のプリミティブを使用して、オブジェクトをレンダリングする。また、オブジェクトが中心窩領域内にあるとき、高解像度のボーン階層を使用してオブジェクトのアニメーションを行い、それにより、高解像度のボーン階層に関連付けられるより高解像度のプリミティブを使用して、オブジェクトをレンダリングする。いくつかの実施形態では、中心窩レンダリングは、ヘッドマウントディスプレイ(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は、対応するフラグメントをレンダリングするときに、どのシャドーマップを使用するかを判定するように構成される。例えば、フラグメントが中心窩領域の内側に表示されるとき、より高解像度のシャドーマップを選択し、フラグメントが中心窩領域の外側に表示されるとき、より低解像度のシャドーマップを選択する。さらに、表示されるように、シャドーマップセレクタ194は、対応するフラグメントの中心窩領域からの距離に基づいて、適切なシャドーマップを選択するように構成され、中心窩領域からの距離が増加するにつれて一連のシャドーマップの解像度が減少するような中心窩領域からの距離に基づいて、一連のシャドーマップを生成する。シャドーマップ生成部195は、より高解像度及びより低解像度のシャドーマップを作るように構成され、上記に説明したような一連のシャドーマップを含む。例えば、第1のシャドーマップはより高解像度で生成され得、第1のシャドーマップの他のミップマップは、第1のシャドーマップ(例えば、解像度を減少させるシャドーマップ)に基づいて生成され得る。具体的には、一連のミップマップは、それぞれが第1のシャドーマップの徐々に低解像度になる、シャドーマップを定義し得る。
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は、中心窩レンダリングを行うように構成され、中心窩領域内の画像の部分は高解像度を伴い、中心窩領域の外側の部分はより低解像度を有する。より具体的には、対応する画像をレンダリングための算出を減らすために、より低解像度のボーン階層を使用して、中心窩領域の外側にあるオブジェクトのアニメ化を行う。中心窩領域の内側にあるオブジェクトのアニメーションは、高解像度のボーン階層を使用して行われる。中心窩ビューレンダラ9190は、中心窩領域に対して対応する画像内のオブジェクトの各々の場所に応じて、オブジェクトのアニメーション及びレンダリングを行うように構成される。具体的には、中心窩ボーンシステム判定部9192は、アニメ化及び/またはレンダリングされたボーン(または、多角形または頂点を含むそのプリミティブ等)が中心窩領域の内側または外側に表示されたかどうかを判定するように構成される。ボーンシステム生成部9195は、オブジェクトをアニメ化するために使用されるボーン階層を生成するように構成され、オブジェクトが周辺領域内にあるとき、オブジェクトをアニメ化及びレンダリングするために使用されることができるより低解像度のボーン階層から取られたボーンのサブシステムを生成するように構成されるボーンシステムレデューサ9196を含む。アニメーションモジュール9199は、オブジェクトが中心窩領域内に表示されるときに高解像度のボーン階層を使用して、オブジェクトが周辺領域内に表示されるときに低解像度のボーン階層を使用して、オブジェクトのアニメーションを行うように構成される。ボーンシステム及びサブシステムレンダラ9402は、フレーム毎に基づいて、ここで、アニメ化されたオブジェクトをレンダリングするためのグラフィックスパイプラインに見られる動作を行うように構成される。
一実施形態では、視線追跡カメラ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内でレンダリングされたオブジェクトに関する算出処理を減らす。
また、シーン内の現実のビューと一致するように、周辺領域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’内にあるオブジェクトのシャドーイングは、より低解像度のシャドーマップを使用してレンダリングされる。さらに、周辺領域310B’内のオブジェクトは、より低解像度でレンダリングされ得、例えば、ユーザが移動オブジェクト(例えば、膝の屈伸運動の代わりに脚を伸ばして歩行している人間)を知覚することが可能であるように十分に詳細に、周辺領域310B’内の単数のオブジェクト内の、または複数のオブジェクト間で十分なコントラストでレンダリングされる。より低解像度でレンダリングを達成するために、グラフィックスパイプラインは、算出複雑度を減らす計算効率の良い技術を使用して、周辺領域310B’内で画像の部分をレンダリングし得る。具体的には、本発明の実施形態に関して、周辺領域310B’内にあるオブジェクトのアニメ化及びレンダリングは、より低解像度のボーン階層(ボーン階層のボーンの減少したセット)を使用して行われる。
中心窩レンダリングシステムにおけるシャドーの最適化
図4は、本開示の一実施形態による、中心窩レンダリングを行うように構成されるグラフィックスパイプライン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によって行われ得る。
本発明の実施形態では、グラフィックスプロセッサ400は、効率的な方式でシャドーをレンダリングすることを含む、中心窩レンダリングを行うように構成される。シャドーマップは、グラフィックスプロセッサ400の内部で実施され、仮想シーン内のオブジェクトのシャドーが、シャドーマップを使用してシーンの画像内でレンダリングされる。前述に説明したように、一連のシャドーマップは、最高解像度で生成される第1のシャドーマップに基づいて作成される。第1のシャドーマップを含む一連のシャドーマップは、事前に判定された一連のシャドー画像を含み、(例えば、第1のシャドーマップに基づいて)、そのシャドー画像のそれぞれは、徐々に低解像度に関連付けられる。図1Bのシャドーマップ生成部195は、第1のシャドーマップを生成するように構成される。加えて、シャドーマップ生成部195は、ミップマップ技術を使用して、低解像度の関連シャドーマップを生成するように構成される。概して、最高解像度の第1のシャドーマップは、より低解像度の第2のシャドーマップを生成するために、詳細に減少したレベルで複製される。適用される減少に応じて、解像度を減少させる複数のシャドーマップは生成され得、シャドーマップのそれぞれは第1のシャドーマップに基づくものである。画像内のシャドーをレンダリングするために使用されるテクセルの数が、より高解像度でシャドーをレンダリングするときのものよりも小さくなるため、減少した解像度のシャドーマップを使用して、画像のレンダリング速度を増加させる。
シャドーマップは、ストレージ460内に記憶され得る。具体的には、一連のシャドーマップ465は、シャドーマップ生成部195による生成後にストレージ460内に位置し、適切な解像度を有するシャドーマップを使用して、シャドーを適切にレンダリングするために、グラフィックスパイプライン400によってアクセスされ得る。一実施形態では、シャドーマップのバイナリシステムが一連のシャドーマップ465として実施され、第1のシャドーマップがより高解像度であり、第2のシャドーマップが第1のシャドーマップよりも低い解像度である。より具体的には、より高解像度の第1のシャドーマップは、表示される画像の中心窩領域内に位置するシャドーをレンダリングするために使用され、より低解像度の第2のシャドーマップは、周辺領域内に位置するシャドーをレンダリングするために使用される。別の実施形態では、中心窩領域からの距離に基づいて、一連のシャドーマップを作り、中心窩領域からの距離が増加するにつれて、一連のシャドーマップの解像度は減少する。
頂点シェーダ410は、値の深度またはzバッファ414を生成するように構成されるzバッファ生成部412を含む。具体的には、どのオブジェクト及び/または表面がシャドーをキャストするかと、どのオブジェクト及び/または表面がシャドー内にあるかとを判定するために、仮想シーンが対応する光源の視点からレンダリングされる。シーンがレンダリングされるとき、デプステクスチャは、zバッファ414でキャプチャされ、zバッファ414は、参照画像平面内の画素毎に、仮想シーン内の最も近い表面の深度を記憶する。例証のために、対応する画素を通過する光源から直線に沿って、複数のオブジェクトは、直線に沿って様々な深度においてレンダリングされ得る。zバッファ414は、その直線に沿ってシャドーをキャストする表面に対応する光源に最も近い深さを記憶する。中心窩フラグメントシェーダ及び/またはプログラム430によって、多角形をレンダリングするとき、zバッファ414を参照する。
頂点シェーダ410によって出力されるプリミティブはラスタライザ420にフィードされ、ラスタライザ420は、シーン内のオブジェクトを、3Dゲーム世界内の視点(例えば、カメラ場所、ユーザの眼の位置等)によって定義される2次元(2D)の画像平面に投影するように構成される。単純化レベルにおいて、ラスタライザ420は各プリミティブを確認して、対応するプリミティブによってどの画素が影響を受けるかを判定する。具体的には、ラスタライザ420はプリミティブを画素サイズフラグメントに分割し、各フラグメントは、ディスプレイの内部、及び/またはレンダリング視点(例えば、カメラビュー)に関連付けられる基準面の内部の画素に対応する。1つ以上のフラグメントが、画像を表示するとき、対応する画素の色に寄与し得ることに留意することが重要である。また、視点に対する、クリッピング(ビューフラスタムの外側にあるフラグメントを識別及び無視する)と、カリング(より近いオブジェクトによって塞がれたフラグメントを無視する)等の追加動作は、ラスタライザ420によって行われ得る。
中心窩フラグメントシェーダ430は、そのコアにおいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントシェーダ430は、フラグメント毎に、深度、色、法線、及びテクスチャ座標(例えば、テクスチャ細部)を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントシェーダ430は、色及び他の属性(例えば、視点からの距離に関するz深度、及び透明度に関するアルファ値)を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ430は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、下記に説明されるように、フラグメントシェーダ430は、フラグメント毎に、シャドーイング効果を適用し得る。説明の目的のために、ゲーム世界内の明確な位置を有する点光のような、光を全方向に放射する光源だけが説明されている。指向性ライティング等の他のライティングが利用可能である。
より具体的には、中心窩フラグメントシェーダ430は、フラグメントが中心窩領域または周辺領域の内部にあるかどうかに基づいて、上記に説明したようなシェーディング動作を行う。表示される画像の中心窩領域内部に位置するフラグメントは、中心窩領域内部のフラグメントに関する詳細なテクスチャ及び明度を達成するために処理効率を考慮せず、高解像度におけるシェーディング動作を使用して処理される。他方では、中心窩フラグメントシェーダ430は、移動及び十分なコントラスト等を提供する最小の動作で十分に詳細にフラグメントを処理するために処理効率に着目し、周辺領域内部に位置するフラグメント上でシェーディング動作を行う。
例えば、本発明の実施形態では、中心窩領域の内側に表示されるオブジェクトのシャドーイングはより高解像度のシャドーマップを使用してレンダリングされ、周辺領域内に表示されるオブジェクトのシャドーイングはより低解像度のシャドーマップを使用してレンダリングされる。具体的には、中心窩フラグメントシェーダは、フラグメントがシャドー内にあるかどうかを判定するように、及び/または画素の色に寄与する1つ以上のオブジェクトの複数のフラグメントがzバッファ414の値に近くなることによって、シャドー内にあるどうかを判定するように構成される。(例えば、カメラ視点または視点からの)3Dゲーム空間内及びビュー空間内におけるフラグメントの座標の相関関係は、頂点シェーダ410またはフラグメントシェーダ430によって行われ得る。具体的には、いったんフラグメントがシャドー内にあることを判定すると、シャドーマップセレクタ194は、フラグメントの場所に応じて、適切なシャドーマップを選択する。中心窩フラグメント判定部192は、フラグメントが中心窩領域内または周辺領域内に表示されたかどうかを判定するように構成される。例えば、フラグメントが中心窩領域内に表示されるとき、シャドーマップセレクタ194は、フラグメントをレンダリングするために、最高解像度の第1のシャドーマップを一連のシャドーマップ465から選ぶ。また、フラグメントが非中心窩領域内に表示されるとき、シャドーマップセレクタ194は、フラグメントをレンダリングするために、より低解像度の第2のシャドーマップを一連のシャドーマップ465から選ぶ。これは、一連のものをマッピングするバイナリシャドー(465)の例証図であり得る。加えて、シャドーマップセレクタ194は、フラグメントがレンダリング及び表示される中心窩領域からの距離に基づく、適切な解像度を有する一連のシャドーマップ465から、シャドーマップを選び得る。距離が増加し及び中心窩領域からさらに離れるように進むにつれて、より低解像度のシャドーマップを選ぶ。
フラグメントシェーダ430の出力は、処理されたフラグメント(例えば、シャドーイングを含むテクスチャ情報及びシェーディング情報)を含み、グラフィックスパイプライン400Aの次のステージに送達される。
出力統合コンポーネント440は、対応する画素のそれぞれに寄与する及び/またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、3Dゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイの2D色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ情報及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン400Aの次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント440は、フラグメント間の値及び/またはフラグメントシェーダ430から判定された画素の選定的混合を行い得る。
ディスプレイ内の画素毎の明度は、フレームバッファ455内に記憶される。これらの値は、シーンの対応する画像を表示するとき、対応する画素に対して走査される。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、もしくは右から左に、上から下に、もしくは下から上に、または任意の他のパターンで、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
ネットワークを通して通信するゲームサーバ及びクライアントデバイスの様々なモジュールの詳細な説明から、本開示の一実施形態に従って、図5のフロー図500は、中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施するための方法を開示し、中心窩領域の内側に表示されるシャドーはより高解像度のシャドーマップを使用してレンダリングされ、非中心窩領域内に表示されるシャドーは低解像度のシャドーマップを使用してレンダリングされる。前述に説明したように、フロー図500は、画像をレンダリングするとき、クライアントデバイスまたはクラウドベースゲームシステムの内部で実施される。一実施態様では、クライアントデバイスはゲーム機(また、ゲームコンソールと称される)である。
510において、本方法は、高解像度の第1のシャドーマップを作ること及び/または生成することを含む。これは、より低解像度のシャドーマップを生成する(例えば、ミップマッピングする)ために使用される最高解像度のシャドーマップであり得る。すなわち、520において、本方法は、第1のシャドーマップに基づいて、第2のシャドーマップを作る及び/または生成することを含み、第2のシャドーマップは第1のシャドーマップよりも低解像度を有する。これは、シャドーマップのバイナリシステムの例証であり得る。さらに、一連のシャドーマップは第1のシャドーマップに基づいて生成され得、一連のものは徐々に低解像度になるシャドーマップを含む。
530において、本方法は、仮想シーンに影響を及ぼす光源を判定することを含む。光源は複数の光源のうちの1つであり得、複数の光源のそれぞれは仮想シーンに影響を及ぼす。光源からの照明は、視点から視認されるシーン内の対応するオブジェクトを表示するとき、対応する画素の最終色を判定する。シャドーイングを判定するとき、光源のそれぞれは、画像内に含有されるシャドーイングを完全にレンダリングするために考慮される必要がある。例証のために、単一の光源は、本発明の実施形態を開示するために使用される。一実施形態では、シャドーイングを判定するために使用される同じプロセスは複数の光源毎に行われ、ディスプレイ内の画素の最終色を形成するために組み合わせられる及び/または統合される。
540において、本方法は、シーンの画像のオブジェクトのジオメトリを、第1の視点(例えば、視点)からディスプレイの複数の画素上に投影することを含む。前述に紹介したように、ラスタライザ及び/または頂点シェーダは、プリミティブ及び/またはプリミティブのフラグメントを対応する画素に関連付けるように構成される。具体的には、頂点シェーダはプリミティブを対応する画素に関連付けるように構成され得、ラスタ化前に、プリミティブによるシーンはタイルに分割される。加えて、ラスタライザはプリミティブのフラグメントを対応する画素に関連付けるように構成され得、フラグメントによるシーンはタイルに分割され得る。
550において、本方法は、ジオメトリの第1のセットが第1の画素に描かれたことを判定することを含む。ジオメトリのセットは、1つ以上のオブジェクトの1つ以上のフラグメントを含み得る。例えば、前述に説明したように、頂点シェーダは、どの画素がセット内のフラグメントによって影響を受ける、またはそのフラグメントによって描かれるかを判定するように構成され得る。
560において、本方法は、光源に基づいて、ジオメトリの第1のセットがシャドー内にあることを判定することを含む。前述に説明したように、深度テストは、光源からどのフラグメントがシャドー内にあるかを判定するために、フラグメントシェーダによって行われる。深度テストは、画素に関連付けられるジオメトリのセットのそれぞれに適用される。例えば、シャドー内にあるとき、セット内のジオメトリは、zバッファ内に記憶される深度(画素に寄与するフラグメントに関する光源に最も近いオブジェクトの深度)よりも大きい深度を有する。したがって、ジオメトリのセットのそれぞれはシャドー内にある。
570において、本方法は、仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く場所に対応する。中心窩領域は、最高解像度で表面をレンダリングすることに関連付けられ得る。中心窩領域は、想定(例えば、概して、ディスプレイの静的エリアを覆うディスプレイの中心における想定)によって、または眼の追跡(例えば、視線の方向を判定するための追跡)によってのいずれかで、ユーザの注目が集まる場所であり得る。静的中心窩領域に関して、中心窩領域はディスプレイの中心にセンタリングする。眼の追跡を行うとき、仮想シーンを視認するユーザの視線を追跡し、視線はユーザの注目が向いている仮想シーンへの方向を示す。この場合、視線の方向に基づいて、中心窩領域を画像内でセンタリングし得る。加えて、中心窩領域内の画像の一部(例えば、プリミティブ及び/またはフラグメント)は、高解像度におけるグラフィックスプロセッサによってレンダリングされる。例えば、中心窩領域内のシャドーイングは、より高解像度及び/または最高解像度のシャドーマップを使用してレンダリングされる。他方では、周辺領域がユーザに注目されず、中心窩領域内の画像の一部(例えば、プリミティブ及び/またはフラグメント)は、より低解像度におけるグラフィックスプロセッサによってレンダリングされる。例えば、周辺領域内のシャドーイングは、より低解像度のシャドーマップを使用してレンダリングされる。より具体的には、画素の第1のサブセットは中心窩領域に割り当てられ、第1のサブセットに関連付けられるプリミティブ及び/またはフラグメントは高解像度で処理される。画素の第2のサブセットは中心窩領域の外側にある周辺領域に割り当てられ、第2のサブセットに関連付けられるプリミティブ及び/またはフラグメントはより低解像度(例えば、中心窩領域に関連付けられる解像度よりも低いもの)で処理される。
加えて、580において、本方法は、ジオメトリの第1のセットが中心窩領域の外側にあることを判定することを含む。すなわち、ジオメトリの第1のセットは、周辺領域内にあるディスプレイの画素に影響を及ぼす。この場合、高効率のレンダリングのために、590において、本方法は、より低解像度の第2のシャドーマップを使用して、第1の画素に関するジオメトリの第1のセットをレンダリングすることを含む。当該方式では、より少数の算出は、ジオメトリの第1のセットによって投影されるシャドーイングをレンダリングするために要求される。
さらに、中心窩領域の内側にあるジオメトリに関して、シャドーイングはより高解像度のシャドーマップを使用してレンダリングされる。例えば、ジオメトリの第2のセットが第2の画素に描かれたことを判定され得る。さらに、ジオメトリの第2のセットが、ユーザの注目が向いている中心窩領域の内側にあることを判定される。したがって、第2の画素に関するジオメトリの第2のセットは、より高解像度の第1のシャドーマップを使用して、第2の画素に対してレンダリングされ得る。
加えて、第1の画素に関するジオメトリの第1のセットをレンダリングするとき、別のシャドー効果を無効にし得る。すなわち、計算コストを減らすために、周辺領域内のシャドーイングは、より低解像度の第2のシャドーマップを使用してレンダリングすることに制限がある。第2のシャドーマップの使用の範囲を超えて、グラフィックスパイプラインの内部で、さらなるシャドー効果を算出しない、または最小のシャドー効果を算出する。
さらに別の実施形態では、一連のシャドーマップが生成され、シャドーマップは最高解像度のシャドーマップに基づくものであり、一連のシャドーマップの解像度は徐々に減少する。フラグメントをレンダリングするとき、表示される対応するフラグメントと中心窩領域との間の距離に基づいて、一連のシャドーマップを適用する。例えば、ジオメトリの第3のセットは、第3の画素に描かれたことを判定され得る。第3の画素は中心窩領域の外側にあると判定される。加えて、前述に説明したように、ジオメトリの第3のセットは、zバッファテストに基づいて、光源からシャドー内にあると判定され得る。第3の画素内に描かれたジオメトリの第3のセットと、中心窩領域との間の距離を判定する。判定された距離に基づいて、第3のシャドーマップを一連のシャドーマップから選択する。基本的に、中心窩領域からジオメトリの第3のセットをレンダリングするとき、画素が大きくなるにつれて、選択されるシャドーマップの解像度は低くなる。選択後、ジオメトリの第3のセットは、最高解像度の第1のシャドーマップよりも低解像度を有する第3のシャドーマップを使用して、第3の画素に対してレンダリングされ、第2のシャドーマップよりも低い低解像度を有し得る。
図6Aは、本開示の一実施形態による、画像が中心窩領域内に表示されるシャドーのレンダリングを示す、ゲーム世界の仮想シーンの画像600Aの例証図である。画像600Aは、壁601、602、及び床603を有する部屋を示す。2つのオブジェクトは、床603の上に存在するオブジェクト(テーブル)670と、壁602に掛けられたクロック610とを含む部屋内に示される。
簡潔及び明確にする目的のために、光源640は仮想シーンに影響を及ぼす画像600A内に示される。示されるように、光源640は、ゲーム世界(例えば、部屋)における場所を有する。場所は、座標系(図示されない)によって定義され得る。光源640は、方向性があり得、または全方向性があり得、いずれの場合、シャドー675をキャストする。示されるように、光源640は、少なくとも1つの方向645に沿ってテーブル670のシャドー675をキャストする(方向645が画像600A上で重ね合わさる)。
画像600Aは、ゲーム世界の特定の視点内からレンダリングされ、表示され得る。例えば、画像は、ゲーム世界の視点に関連付けられる仮想画像平面からレンダリングされ得る。例えば、眼630は、方向635に沿って、ユーザの視線を示す画像600A上で重ね合わさる。画像600Aは、方向635にセンタリングする画像平面650の内部に投影され得る。図6Aに示されるように、ユーザの視線は、画像600A内で、方向635に沿ってテーブル670に向いている。
加えて、ユーザの注目は方向635に沿って集まる。したがって、表示される画像の中心窩領域620は、(例えば、想定及び/または追跡される)ユーザの視線の方向に基づいて定義される。前述に説明したように、中心窩領域620内のオブジェクトは、高解像度でレンダリングされる。加えて、本発明の実施形態では、中心窩領域620の内側でのシャドーイングは、より高解像度のシャドーマップ(例えば、ミップマップ等を使用して他のシャドーマップが生成される最高解像度の第1のシャドーマップ)を使用してレンダリングされる。例えば、テーブル670上で光っている光源640によって生じるシャドー675は、高解像度シャドーマップを使用してレンダリングされる。
示されるように、中心窩領域の外側のオブジェクトは、前述に説明したように、より低解像度でレンダリングされる。例えば、クロック610は中心窩領域620の外側に表示され、より低解像度でレンダリングされる。例証のために、クロック610は、より低解像度でレンダリングすることを表すようにかすかに示される。すなわち、クロック610が周辺領域内にあるため、画像600A内でクロック610をレンダリングするために必要になる詳細度が少なくなる。
図6Bは、本開示の一実施形態による、画像600B内でレンダリングされる、周辺領域内に表示されるシャドーのレンダリングを示す、図6Aに導入される仮想シーンの例証図である。
画像600Bは、ユーザの注目が異なるオブジェクトに向くことを除いて、画像600Aと同様である。前述に紹介したように、画像600Bは、壁601、602、及び床603を有する部屋を示す。2つのオブジェクトは、床603の上に存在するオブジェクト(テーブル)670と、壁602に掛けられたクロック610とを含む部屋内に示される。示されるように、光源640は、画像600A内で示され、少なくとも1つの方向645に沿ってテーブル670のシャドー675’をキャストする(方向645が画像600B上で重ね合わさる)。
加えて、ここで、ユーザの注目は方向635’に沿って集まる。したがって、表示される画像600Bの中心窩領域620’は、(例えば、想定及び/または追跡される)ユーザの視線の方向に基づいて定義される。前述に説明したように、中心窩領域620’内のオブジェクトは、高解像度でレンダリングされる。したがって、図6Bでは、ここで、クロック610は高解像度でレンダリングされ、図6Bで明確に及びはっきりと示される。
示されるように、中心窩領域620’の外側のオブジェクトは、前述に説明したように、より低解像度でレンダリングされる。図6Bでは、テーブル670は、ここで、より低解像度でレンダリングすることを表すようにかすかに示される。テーブル670が周辺領域内にあるため、画像600B内でテーブル670をレンダリングするために必要になる詳細度が少なくなる。
加えて、本発明の実施形態では、中心窩領域620’の外側でのシャドーイングは、より低解像度のシャドーマップ(例えば、低解像度の第2のシャドーマップまたは後続のシャドーマップ)を使用してレンダリングされる。例えば、テーブル670上で光っている光源640によって生じるシャドー675’は、より低解像度のシャドーマップを使用してレンダリングされる。シャドー675’は図6Aのシャドー675よりも詳細ではないように示され、周辺領域内に位置するので、シャドー675’は十分に詳細であることを必要としない。
図6Cは、本開示の一実施形態による、図6Aに導入される仮想シーンに適用される徐々に低解像度になる一連のシャドーマップの例証図である。前述に説明したように、一連のシャドーマップは、最高解像度のシャドーマップに基づいて生成され、一連のシャドーマップの解像度は徐々に減少する。一実施形態では、フラグメントをレンダリングするとき、表示される対応するフラグメントと中心窩領域との間の距離に基づいて、一連のシャドーマップを適用する。図6Cに示されるように、中心窩領域620は、高解像度でレンダリングされるオブジェクトを含む。また、中心窩領域620は、図6Cでゾーン1と称される。テーブル670がゾーン1(中心窩領域)内に位置するため、テーブル670は、高解像度でより詳細にレンダリングされる。加えて、シャドー675がゾーン1内に位置するため、シャドー675は、一連のシャドーマップにおける最高解像度のシャドーマップ1を使用してレンダリングされる。中心窩領域620内に示されるオブジェクトは、中心窩領域620から最小距離またはゼロの距離を有し、したがって、最高解像度のシャドーマップは、シャドーをレンダリングするために選択される。
加えて、点境界線621及び中心窩領域620の外側境界線は、中心窩領域620の外側の最も近いゾーンであるゾーン2を画定する。ゾーン2内のシャドーは、シャドーマップ1のものよりも低解像度であるシャドーマップ2を使用してレンダリングされる。さらに、点境界線621及び点境界線622は、また中心窩領域620の外側にあるゾーン3を画定する。ゾーン3は、ゾーン2よりも、中心窩領域620からさらに遠い。したがって、ゾーン3内のシャドーは、シャドーマップ2のものよりも低解像度であるシャドーマップ3を使用してレンダリングされる。一連のシャドーマップ3では、最低解像度を有し、中心窩領域から最も遠いゾーン3に関連付けられる。
一実施形態では、コンピュータシステムはプロセッサ及びメモリを含み、メモリは、プロセッサに結合され、コンピュータシステムによって実行される場合、コンピュータシステムに、グラフィックスパイプラインを実施するための方法を実行させる命令をメモリ内に記憶する。本方法は、高解像度の第1のシャドーマップを作ることを含む。本方法は、第1のシャドーマップに基づいて、第2のシャドーマップを作ることを含み、第2のシャドーマップは第1のシャドーマップよりも低解像度を有する。本方法は、仮想シーンに影響を及ぼす光源を判定することを含む。本方法は、仮想シーンの画像のオブジェクトのジオメトリを、第1の視点からディスプレイの複数の画素上に投影することを含む。本方法は、ジオメトリの第1のセットが第1の画素に描かれたことを判定することを含む。本方法は、光源に基づいて、ジオメトリの第1のセットがシャドー内にあることを判定することを含む。本方法は、仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く場所に対応する。本方法は、ジオメトリの第1のセットが中心窩領域の外側にあることを判定することを含む。本方法は、第2のシャドーマップを使用して、第1の画素に関するジオメトリの第1のセットをレンダリングすることを含む。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、ジオメトリの第2のセットが第2の画素に描かれたことを判定することを含む。本方法は、さらに、ジオメトリの第2のセットが中心窩領域の内側にあることを判定することを含む。本方法は、さらに、第1のシャドーマップを使用して、第2の画素に関するジオメトリの第2のセットをレンダリングすることを含む。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、中心窩領域からの距離に基づいて、一連のシャドーマップを作ることを含み、中心窩領域からの距離が増加するにつれて、一連のシャドーマップの解像度は減少する。本方法は、さらに、ジオメトリの第3のセットが中心窩領域の外側にある第3の画素に描かれたことを判定することを含む。本方法は、さらに、光源に基づいて、第3のセットがシャドー内にあることを判定することを含む。本方法は、さらに、中心窩領域からの第3の画素内に描かれたジオメトリの第3のセットの距離を判定することを含む。本方法は、さらに、ジオメトリの第3のセットの距離に基づいて、第3のシャドーマップを一連のシャドーマップから選択することを含む。本方法は、さらに、第3のシャドーマップを使用して、第3の画素に関するジオメトリの第3のセットをレンダリングすることを含む。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、中心窩領域をディスプレイの中心にセンタリングすることを含み、中心窩領域は静止している。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、仮想シーンを視認するユーザの視線を追跡することを含み、視線はユーザの注目が向いている仮想シーンへの方向を示す。本方法は、さらに、ユーザが仮想シーンの画像を視認する第1の方向を判定することを含む。本方法は、さらに、第1の方向に基づいて、中心窩領域を画像内でセンタリングすることを含む。
別の実施形態では、コンピュータシステムによって実行される方法では、ディスプレイはヘッドマウントディスプレイを含む。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、第1の画素に関するジオメトリの第1のセットをレンダリングするとき、別のシャドー効果を無効にすることを含む。
一実施形態では、非一時的なコンピュータ可読媒体は、グラフィックスパイプラインを実施するためのコンピュータプログラムを記憶する。コンピュータ可読媒体は、高解像度の第1のシャドーマップを作るためのプログラム命令を含む。コンピュータ可読媒体は、第1のシャドーマップに基づいて、第2のシャドーマップを作るためのプログラム命令を含み、第2のシャドーマップは第1のシャドーマップよりも低解像度を有する。コンピュータ可読媒体は、仮想シーンに影響を及ぼす光源を判定するためのプログラム命令を含む。コンピュータ可読媒体は、仮想シーンの画像のオブジェクトのジオメトリを、第1の視点からディスプレイの複数の画素上に投影するためのプログラム命令を含む。コンピュータ可読媒体は、ジオメトリの第1のセットが第1の画素に描かれたことを判定するためのプログラム命令を含む。コンピュータ可読媒体は、光源に基づいて、ジオメトリの第1のセットがシャドー内にあることを判定するためのプログラム命令を含む。コンピュータ可読媒体は、仮想シーンの画像をレンダリングするとき、中心窩領域を判定するためのプログラム命令を含み、中心窩領域はユーザの注目が向く場所に対応する。コンピュータ可読媒体は、ジオメトリの第1のセットが中心窩領域の外側にあることを判定するためのプログラム命令を含む。コンピュータ可読媒体は、第2のシャドーマップを使用して、第1の画素に関するジオメトリの第1のセットをレンダリングするためのプログラム命令を含む。
別の実施形態では、コンピュータ可読媒体は、さらに、ジオメトリの第2のセットが第2の画素に描かれたことを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、ジオメトリの第2のセットが中心窩領域の内側にあることを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、第1のシャドーマップを使用して、第2の画素に関するジオメトリの第2のセットをレンダリングするためのプログラム命令を含む。
別の実施形態では、コンピュータ可読媒体は、さらに、中心窩領域からの距離に基づいて、一連のシャドーマップを作るためのプログラム命令を含み、中心窩領域からの距離が増加するにつれて、一連のシャドーマップの解像度は減少する。コンピュータ可読媒体は、さらに、ジオメトリの第3のセットが中心窩領域の外側にある第3の画素に描かれたことを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、光源に基づいて、第3のセットがシャドー内にあることを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、中心窩領域からの第3の画素内に描かれたジオメトリの第3のセットの距離を判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、ジオメトリの第3のセットの距離に基づいて、第3のシャドーマップを一連のシャドーマップから選択するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、第3のシャドーマップを使用して、第3の画素に関するジオメトリの第3のセットをレンダリングするためのプログラム命令を含む。
別の実施形態では、コンピュータ可読媒体は、さらに、中心窩領域をディスプレイの中心にセンタリングするためのプログラム命令を含み、中心窩領域は静止している。
別の実施形態では、コンピュータ可読媒体は、さらに、仮想シーンを視認するユーザの視線を追跡するためのプログラム命令を含み、視線はユーザの注目が向いている仮想シーンへの方向を示す。コンピュータ可読媒体は、さらに、ユーザが仮想シーンの画像を視認する第1の方向を判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、第1の方向に基づいて、中心窩領域を画像内でセンタリングするためのプログラム命令を含む。
別の実施形態では、コンピュータ可読媒体は、さらに、画像のオブジェクトのジオメトリを、ヘッドマウントディスプレイの画素上に投影するためのプログラム命令を含む。
中心窩レンダリングシステムにおけるメッシュスキンの適応
本開示の様々な実施形態は、中心窩レンダリングを行うように構成されるビデオレンダリングシステムのグラフィックスプロセッサを説明し、中心窩領域内の画像の部分は高解像度でレンダリングされ得、中心窩領域の外側の部分はより低解像度でレンダリングされ得る。具体的には、下記により十分に説明されるように、オブジェクトが周辺領域内にあるとき、低解像度のボーン階層を使用してオブジェクトのアニメーションを行い、それにより、また、低解像度のボーン階層に関連付けられるより低解像度のプリミティブを使用して、オブジェクトをレンダリングする。また、オブジェクトが中心窩領域内にあるとき、高解像度のボーン階層を使用してオブジェクトのアニメーションを行い、それにより、高解像度のボーン階層に関連付けられるより高解像度のプリミティブを使用して、オブジェクトをレンダリングする。いくつかの実施形態では、メッシュスキンの適応は、図1〜図6で上記に説明された状況の範囲内で実施され得る。
図7は、本開示の実施形態による、オブジェクトが中心窩領域内にあるときに高解像度のボーン階層(ボーンシステム)と、オブジェクトが周辺領域内にあるときに低解像度のボーン階層(ボーンサブシステム)とを使用して、オブジェクトアニメーション及びオブジェクトのレンダリングを含む中心窩領域レンダリングを行うように構成されるグラフィックスパイプラインを実施するシステムを示す。グラフィックスパイプライン9400は、3D(3次元)多角形レンダリングプロセスを使用して画像をレンダリングするための全体的プロセスを示しているが、中心窩レンダリングを行うパイプライン内部の追加プログラマブル素子を機能させるように修正され、対応する画像の中心窩領域に対するオブジェクトの場所に応じて、ボーン階層のボーンのフルコンポーネントまたはボーンのサブシステムを使用して、パーティクルシステムをアニメ化及び/またはレンダリングする等の中心窩レンダリングを行う。レンダリング画像のためのグラフィックスパイプライン9400は、ディスプレイ内の画素毎の対応する色情報を出力し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドーイング等)を表し得る。グラフィックスパイプライン9400は、図1Aのゲームコンソール106、図1B及び図1CのVRコンテンツエンジン120、図2A及び図2Bのクライアントデバイス106、及び/または図2Bのゲームタイトル処理エンジン211の内部で実施可能である。
アニメーションはCPUまたはGPU上で行われ得る。システム9400は、オブジェクトアニメーションを行うように構成され、頂点データを処理することを含む中心窩レンダリングを行い、頂点をプリミティブ(例えば、多角形)に集め、ラスタ化を行い、ディスプレイに対してプリミティブからフラグメントを生成させ、次に、フラグメント毎に色及び深度値を算出し、同様に、表示するために、フレームバッファに記憶するための画素毎に基づいてフラグメントを混ぜるように構成される、算出シェーダ9401及びプログラムプロセッサ9402を含む。(例えば、アニメーションのために)算出シェーダ9401によって行われる動作は、CPUまたはGPUのいずれかで行われ得る。プログラムシェーダ9402によって行われる動作は、概して、良好な性能及び効率になるように、GPU内での実行により適している。
示されるように、グラフィックスパイプラインは、入力ジオメトリ9405を受信する。例えば、入力ジオメトリ9405は、3Dゲーム世界内の頂点と、頂点のそれぞれに対応する情報とを含み得る。頂点によって定義される多角形(例えば、三角形)を使用してゲーム世界内の所与のオブジェクトを表すことができ、次に、対応する多角形の表面は、グラフィックスパイプライン9400によって処理され、最終効果(例えば、色、テクスチャ等)を達成する。頂点属性は、法線(例えば、その方向は頂点に対して直角である)、色(例えば、RGB―赤、緑、及び青の3色の組等)、及びテクスチャ座標/マッピング情報を含み得る。説明しやすくするために、3Dゲーム世界に関する入力ジオメトリは算出シェーダ9401に入力されるように示されるが、また、ジオメトリは、パーティクルシステムに関するジオメトリが算出シェーダ9401に入力されるように、及び残りのジオメトリがプログラマブルシェーダ9402の頂点シェーダ9410に入力されるように分割され得る。例えば、入力ジオメトリは、シェーダ9401とシェーダ9402との間で共有されることができる頂点バッファに入力され得る。
具体的には、算出シェーダ9401は、オブジェクトによって付与及び/または印加される力(例えば、重力等の外力、移動を含むオブジェクトの内力)に応じてフレーム間で、オブジェクトアニメーションを行う(例えば、パーティクル運動を計算する等)。概して、第1のフレームから後続のフレームまで、算出シェーダ9401は、オブジェクトをアニメ化する動作を行う、またはオブジェクトに運動を提供する。具体的には、レンダリングされたフレーム毎に、オブジェクトのアニメーションは、別々の時間ステップで(例えば、フレーム毎に)更新される(例えば、位置、配向、速さ等が更新される)。図7に示されるように、算出シェーダ9401は、GPU構成内部で実装され、オブジェクトアニメーションを行うようにプログラムされ得る。例えば、頂点シェーダ9406は、オブジェクトの頂点及び/またはプリミティブを生成する、または、それらにアクセスするように構成されるボーンシステム生成部9195を含み得る。加えて、ボーンシステム生成部9195は、ボーン階層のボーンの数を減らすように構成されるボーンシステムレデューサ9196を含み、それにより、ボーンのサブシステムがボーン階層から生成され及び取られる。サブシステムは、減少した数のボーンを有し得、ボーン間の減少した数のジョイントまたは接続部を有し得、ジョイントは、2つの相互接続されたボーン間の移動の点を定義する。頂点シェーダ9406は、また、アニメーションまたは移動、より具体的には、別々の時間ステップにおける(例えば、フレーム間の)移動を(例えば、ボーン位置またはボーンの頂点を更新することによって)オブジェクトに提供するように構成されるアニメーションモジュール9199を含み得る。中心窩ボーンシステム判定部9192は、画像の中心窩領域に関連しない、オブジェクトが位置する場所を計算するように構成され、より低解像度のボーン階層を使用して周辺領域内に位置するオブジェクトをレンダリングし、より高解像度のボーン階層を使用して中心窩領域内に位置するオブジェクトをレンダリングする。頂点シェーダ9406の出力は、中心窩領域に対するオブジェクトの場所に応じて、高解像度または低解像度のボーン階層のプリミティブを含む、オブジェクトのプリミティブ(例えば、頂点、多角形等)を含み得る。GPU構成の内部で実施されるものとして、残りのコンポーネント(例えば、出力統合及びフレームバッファを含む、ラスタライザ、フラグメントシェーダ、及びレンダリング)は使用されていなく、それにより、次に、頂点シェーダ9406からの出力は、送達され及び/またはプログラマブルシェーダ9402と共有され、レンダリングを含むより従来的なGPU動作を行う。当然ながら、CPU実施態様では、算出シェーダ9401は、シェーダ9406及びパーティクルシミュレーションモジュール9407だけを含むように、簡略化され得る。
アニメ化されたオブジェクトが、プログラマブルシェーダ9402を使用してフレーム間で描かれる。具体的には、アニメーション結果が頂点バッファに記憶され、次に、シミュレーション結果がプログラマブルシェーダ9402(例えば、頂点シェーダ)に入力される。頂点バッファの値は、図7に示されるシステム9400のグラフィックスパイプラインのステージ間で共有されることができる。より具体的には、前述に説明したように、頂点シェーダ9410は、入力ジオメトリ9405を直接且つ算出シェーダ9401から受信し、3Dシーン内でオブジェクトを構成する多角形またはプリミティブを作る。頂点シェーダ9410は、さらに、算出シェーダ9401によって完了されない場合、アニメ化されたオブジェクトに関するプリミティブを作り得る。すなわち、頂点シェーダ9410は、オブジェクトがゲーム世界内にセットされるとき、プリミティブを使用してオブジェクトを作り上げる。例えば、頂点シェーダ9410は、シーンのライティングに応じて、多角形に関するライティング計算及びシャドーイング計算を行うように構成され得る。プリミティブは、頂点シェーダ9410によって出力され、グラフィックスパイプライン9400の次のステージに送達される。また、クリッピング(例えば、ゲーム世界内の視点によって定義されるようなビューフラスタムの外側にあるプリミティブを識別及び無視する)等の追加動作は、頂点シェーダ9410によって行われ得る。
複数の実施形態では、プログラマブルシェーダ9402(例えば、頂点シェーダ9410等)による実行前に、オブジェクトプリミティブが既に算出シェーダ9401によって減っているために、さらなる判定はオブジェクトが中心窩領域内部または周辺領域内にあるかを判定する必要はない。他の実施形態では、必要に応じて、より低解像度またはより高解像度のボーン階層を使用するかの判定は頂点シェーダ9410によって行われ得る。その場合、また、頂点シェーダ9410は、さらなる処理のために、より低解像度のボーン階層のプリミティブを選択するように構成され得る。例えば、頂点シェーダ9410は、頂点が中心窩領域内部にあるかどうかに応じて、頂点を破棄または維持するかどうかを判定するように構成され得る。
頂点プロセッサ9410によって出力されるプリミティブはラスタライザ9420にフィードされ、ラスタライザ9420は、シーン内のオブジェクトを、3Dゲーム世界内の視点(例えば、カメラ場所、ユーザの眼の位置等)によって定義される2次元(2D)の画像平面に投影するように構成される。これらのプリミティブは、アニメ化されたオブジェクトが周辺領域内にあるとき、(例えば、ボーン階層のボーンのフルコンポーネントの代わりに)ボーンのサブシステムを含む。一実施形態では、オブジェクトの少なくとも一部が周辺領域内にあるとき、ボーンのサブシステムをレンダリングする。別の実施形態では、オブジェクトをより低解像度(例えば、詳細ではない動き)でレンダリングするために、オブジェクト全体が周辺領域内にあるとき、ボーンのサブシステムをレンダリングする。また、プリミティブは、オブジェクトをより詳細な動きでレンダリングするために、オブジェクトが中心窩領域内にあるとき、ボーンのフルシステムを含み得る。
単純化レベルにおいて、ラスタライザ9420は各プリミティブを確認して、対応するプリミティブによってどの画素が影響を受けるかを判定する。具体的には、ラスタライザ9420はプリミティブを画素サイズフラグメントに分割し、各フラグメントは、ディスプレイの内部、及び/またはレンダリング視点(例えば、カメラビュー)に関連付けられる基準面の内部の画素に対応する。1つ以上のフラグメントが、画像を表示するとき、対応する画素の色に寄与し得ることに留意することが重要である。また、視点に対する、クリッピング(ビューフラスタムの外側にあるフラグメントを識別及び無視する)と、カリング(より近いオブジェクトによって塞がれたフラグメントを無視する)等の追加動作は、ラスタライザ9420によって行われ得る。
中心窩フラグメントプロセッサ9430は、そのコアにおいて、フラグメント上でシェーディング動作を行い、プリミティブの色及び明るさが利用可能なライティングによりどのように変わるかを判定する。例えば、フラグメントプロセッサ9430は、フラグメント毎に、深度、色、法線、及びテクスチャ座標(例えば、テクスチャ細部)を判定し得、さらに、フラグメントに関する光、暗さ、及び色の適切なレベルを判定し得る。具体的には、フラグメントプロセッサ9430は、色及び他の属性(例えば、視点からの距離に関するz深度、及び透明度に関するアルファ値)を含む、各フラグメントの特質を計算する。加えて、フラグメントシェーダ9430は、対応するフラグメントに影響を及ぼす利用可能なライティングに基づいて、ライティング効果をフラグメントに適用する。さらに、フラグメントプロセッサ9430は、フラグメント毎に、シャドーイング効果を適用し得る。
より具体的には、中心窩フラグメントシェーダ9430は、フラグメントが中心窩領域または周辺領域の内部にあるかどうかに基づいて、上記に説明したようなシェーディング動作を行う。表示される画像の中心窩領域内部に位置するフラグメントは、中心窩領域内部のフラグメントに関する詳細なテクスチャ及び明度を達成するために処理効率を考慮せず、高解像度におけるシェーディング動作を使用して処理される。他方では、中心窩フラグメントプロセッサ9430は、移動及び十分なコントラスト等を提供する最小の動作で十分に詳細にフラグメントを処理するために処理効率に着目し、周辺領域内部に位置するフラグメント上でシェーディング動作を行う。
例えば、本発明の実施形態では、パーティクルシステムのフラグメントは、フラグメントが中心窩領域の内側または外側にある(例えば、中心窩領域の内側または外側の画素に寄与する)かどうかに応じて、異なるようにレンダリングされる。算出シェーダ9401が、事前に、パーティクル及び/またはそのコンポーネントジオメトリが、中心窩領域の内側または外側に位置するかどうかを判定し、適宜、(例えば、オブジェクトが周辺領域内にあるとき、ボーンのサブシステムを使用して)そのコンポーネントジオメトリをフィルタリングしたため、頂点シェーダ9410の出力は、適切なプリミティブをグラフィックスパイプラインの残りのコンポーネント(例えば、ラスタライザ9420及び中心窩フラグメントシェーダ9430等を含む)に提供するために既に位置付けられている。したがって、プログラマブルシェーダ9402のグラフィックスパイプラインの残りのコンポーネントは、オブジェクトが中心窩領域内にあるとき、ボーン階層におけるボーンのフルコンポーネントをレンダリングするように構成される。また、プログラマブルシェーダ9402のグラフィックスパイプラインの残りのコンポーネントは、オブジェクトが周辺領域内にあるとき、ボーン階層におけるボーンのサブシステムをレンダリングするように構成される。
フラグメントシェーダ9430の出力は、処理されたフラグメント(例えば、シャドーイングを含むテクスチャ情報及びシェーディング情報)を含み、グラフィックスパイプライン9400の次のステージに送達される。
出力統合コンポーネント9440は、対応する画素のそれぞれに寄与する及び/またはそれに影響を及ぼすフラグメントに応じて、各画素の特質を計算する。すなわち、3Dゲーム世界内の全てのプリミティブのフラグメントは、ディスプレイの2D色画素に組み合わせられる。例えば、対応する画素に関するテクスチャ情報及びシェーディング情報に寄与するフラグメントは、グラフィックスパイプライン9400の次のステージに送達される画素に関する最終明度を出力するために組み合わせられる。出力統合コンポーネント9440は、フラグメント間の値及び/またはフラグメントシェーダ9430から判定された画素の選定的混合を行い得る。
ディスプレイ内の画素毎の明度は、フレームバッファ9450内に記憶される。これらの値は、シーンの対応する画像を表示するとき、対応する画素に対して走査される。具体的には、ディスプレイは、画素毎に、列毎に、左から右に、もしくは右から左に、上から下に、もしくは下から上に、または任意の他のパターンで、明度をフレームバッファから読み取り、画像を表示するとき、その画素値を使用して、画素を明るくする。
ネットワークを通して通信するゲームサーバ及びクライアントデバイスの様々なモジュールの詳細な説明から、本開示の一実施形態に従って、図8のフロー図9500は、中心窩レンダリングを行うように構成されるグラフィックスパイプラインを実施するための方法を開示し、中心窩領域の内側に表示されるオブジェクトはより高解像度のボーン階層(ボーンのシステム)を使用してアニメ化及びレンダリングされ、非中心窩領域内に表示されるオブジェクトは低解像度のボーン階層(例えば、ボーンのシステム)を使用してレンダリングされる。前述に説明したように、フロー図9500は、画像をレンダリングするとき、クライアントデバイスまたはクラウドベースゲームシステムの内部で実施される。一実施態様では、クライアントデバイスはゲーム機(また、ゲームコンソールと称される)である。
9510において、本方法は、ボーン間の位置付け関係を定義するオブジェクトに関する複数のボーンを生成することを含む。オブジェクトをアニメ化するとき、ボーンの階層セットはオブジェクトに移動を提供するために使用され、次に、多角形メッシュは、ボーンに適用される(例えば、多角形を1つ以上のボーンの頂点に関連付ける)。各ボーンは、3Dゲーム世界内で、位置、スケール、及び配向等を含む3D変換をもたらす。したがって、ボーンがフレーム毎に再配置され及びメッシュが適用されるとき、オブジェクトの移動が影響を受ける。すなわち、ボーン階層をアニメ化するとき、ボーンは、3Dゲーム世界内にその位置付けを変化させることを含む、変換を変化させる。各ボーンは、1つ以上の頂点に関連付けられる。次に、メッシュの多角形は、1つ以上のボーンに関連付けられる。すなわち、メッシュ内の多角形の各頂点は、1つ以上のボーンに関連付けられる、または1つ以上のボーンに結び付けられる。ボーンが移動するとき、メッシュの多角形(例えば、スキニング)はボーンとともに移動し、それにより、メッシュは、フレーム間で変化し得る。すなわち、多角形メッシュは、ボーン変換に応答して変形する。多角形に適用される倍率は混合重量を提供し、それにより、2つ以上のボーンに関連付けられる多角形は、どのボーンが多角形の移動により大きい影響をもたらすかを指定する重量が与えられる。すなわち、多角形の各頂点は、関連ボーン毎に、混合重量を有し得る。
ボーン階層はボーン間に相互接続を定義し、ジョイントは2つ以上のボーン間の相互接続を定義し得る。しかしながら、ボーン階層は、ボーン間の位置関係を大まかに定義し得る。すなわち、ボーンは相互接続される(例えば、ジョイントに触れる)必要がないが、ボーン間の相対位置決めを定義するいくつかの他の関係を有し得る。
オブジェクトが周辺領域内に位置するとき、アニメーション及びレンダリング前に、ボーンのシステムは減る。具体的には、9520において、本方法は、ボーンのサブシステムを、オブジェクトに関する複数のボーンから判定することを含む。具体的には、ボーンのサブシステムは、ボーン階層のボーンのフルコンポーネントよりも少ないボーンを含み得る。オブジェクトを画定するより少ないボーンを使用することによって、オブジェクトをアニメ化するときに行われる算出の必要がより少なくなる。例えば、歩行している人間をオブジェクトとして見なす場合、ボーンのサブシステムは、人間が膝のいずれかの関節運動がなく脚が直立して歩行するようにアニメ化され得る。人間が周辺領域内に位置するとき、ボーンのサブシステムは、アニメーション及びレンダリングを行うために使用され得る。
ボーンのサブシステムを判定し得る。具体的には、頂点のシステムは、ボーンのシステムのために生成される。頂点のシステムから頂点のサブシステムを取り、頂点のサブシステムはボーンのサブシステムに割り当てられる。サブシステムは、2つのボーンの頂点を1つのボーンに組み合わせる等、頂点のシステムから取られ得る。加えて、いくつかの頂点は、組み合わせにおいて、削除され得る。他の実施態様では、新しい頂点はボーンのサブシステムを定義するために生成される。多角形メッシュを取り付けるとき、ボーンに関する複数の混合重量は、ボーンのサブシステムによって使用される混合重量のサブセットに減り得る。例えば、減少した頂点のセットは第1のボーン及び第2のボーンから形成され得る。減少した頂点のセットは第1のボーンの頂点の第1のセット及び第2のボーンの頂点の第2のセットから取られる。より具体的には、減少したセットは、頂点の第1及び第2のセットの組み合わせで見られるものよりも少ないジョイントを定義する。
9530において、本方法は、仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く場所に対応する。中心窩領域は、最高解像度で表面をレンダリングすることに関連付けられ得る。中心窩領域は、想定(例えば、概して、ディスプレイの静的エリアを覆うディスプレイの中心における想定)によって、または眼の追跡(例えば、視線の方向を判定するための追跡)によってのいずれかで、ユーザの注目が集まる場所であり得る。静的中心窩領域に関して、中心窩領域はディスプレイの中心にセンタリングする。眼の追跡を行うとき、仮想シーンを視認するユーザの視線を追跡し、視線はユーザの注目が向いている仮想シーンへの方向を示す。この場合、視線の方向に基づいて、中心窩領域を画像内でセンタリングし得る。加えて、中心窩領域内の画像の一部(例えば、プリミティブ及び/またはフラグメント)は、高解像度におけるグラフィックスプロセッサによってレンダリングされる。例えば、中心窩領域内に位置するオブジェクトのアニメーション及びレンダリングが最高解像度のボーン階層を使用して(例えば、ボーンのフルコンポーネントを使用して)行われ得る。
他方では、周辺領域がユーザに注目されず、中心窩領域内の画像の一部(例えば、プリミティブ及び/またはフラグメント)は、より低解像度におけるグラフィックスプロセッサによってレンダリングされる。例えば、周辺領域内に位置するオブジェクトのアニメーション及びレンダリングがより低解像度のボーン階層を使用して(例えば、ボーンのサブシステムを使用して)行われ得る。より具体的には、画素の第1のサブセットは中心窩領域に割り当てられ、第1のサブセットに関連付けられるプリミティブ及び/またはフラグメントは高解像度で処理される。画素の第2のサブセットは中心窩領域の外側にある周辺領域に割り当てられ、第2のサブセットに関連付けられるプリミティブ及び/またはフラグメントはより低解像度(例えば、中心窩領域に関連付けられる解像度よりも低いもの)で処理される。
9540において、本方法は、オブジェクトの少なくとも一部が、画像の周辺領域内に位置していることを判定することを含む。オブジェクトの少なくとも一部が周辺領域内にあることが判定されたとき、9550において、本方法は、変換をボーンのサブシステムに適用することによって、オブジェクトをアニメ化することと、次に、グラフィックスパイプラインの残りのステージによって結果をレンダリングすることとを含む。その後、アニメーション及びプログラマブルシェーダ402に入力されるために使用されるボーンのフルコンポーネントまたはボーンのサブシステムであろうとなかろうと、頂点シェーダ410による出力は、既に、中心窩レンダリングまたは非中心窩レンダリングの原因となり、したがって、残りの動作は一般的な様式で動作する。すなわち、オブジェクトが中心窩領域内にあるとき、頂点シェーダ410はボーンのシステム上で動作する、また、オブジェクトが周辺領域内にあるとき、頂点シェーダ410はボーンのサブシステム上で動作する。
さらに別の実施形態では、オブジェクトが周辺領域内にあるときに、ボーンの数を減らすことに加えて、アニメーション及びレンダリングを行うとき、フレームカウントは、さらに減り得る。すなわち、ボーン位置付けに対する目立たない更新は減り得、それにより、より少ない数のフレームは周辺領域内でオブジェクトの運動を生じさせるために使用され得、標準的な数のフレームは中心窩領域内でオブジェクトの運動を生じさせるために使用され得る。
図9は、本開示の一実施形態による、オブジェクトが中心窩領域内に表示されるときに高解像度のボーン階層を使用するオブジェクトのアニメーション及びレンダリングと、オブジェクトが周辺領域内に表示されるときに低解像度のボーン階層を使用するオブジェクトのアニメーション及びレンダリングとの例証図である。具体的には、9610は、高解像度でアニメ化及びレンダリングされるオブジェクト9650のフレーム毎の移動を示す。例えば、オブジェクト9650は、中心窩領域内に位置し得る。示されるように、オブジェクト9650はボーンのフルコンポーネントを有し、それにより、ジョイント(例えば、腕及び脚)の移動は、オブジェクトがフレーム間において3D空間内で移動するとき、両脚及び両腕の曲がりを示す。他方では、9620は、低解像度でアニメ化及びレンダリングされるオブジェクト9650’のフレーム毎の移動を示す。例えば、オブジェクト9650’は、周辺領域内に位置し得る。示されるように、オブジェクト9650’は減少した数のボーン(ボーンのサブシステム)を有し、それにより、ジョイントの移動は、オブジェクト9650’がフレーム間において3D空間内で移動するとき、両脚及び両腕のいずれかの曲がりを示していない。具体的には、減少したボーンのセットは、膝及び足首についての移動を示す複数のジョイントを有する2つまたは3つのボーンの代わりに、脚全体に関する1つのボーンを含み得る。
一実施形態では、コンピュータシステムはプロセッサ及びメモリを含み、メモリは、プロセッサに結合され、コンピュータシステムによって実行される場合、コンピュータシステムに、グラフィックスパイプラインを実施するための方法を実行させる命令をメモリ内に記憶する。本方法は、ボーン間の位置付け関係を定義するオブジェクトに関する複数のボーンを生成することを含む。本方法は、さらに、ボーンのサブシステムを、オブジェクトに関する複数のボーンから判定することを含む。本方法は、さらに、オブジェクトを含む仮想シーンの画像をレンダリングするとき、中心窩領域を判定することを含み、中心窩領域はユーザの注目が向く場所に対応する。本方法は、さらに、オブジェクトの少なくとも一部が画像に関する周辺領域内に位置していることを判定することを含む。本方法は、さらに、変換をボーンのサブシステムに適用することによって、オブジェクトをアニメ化することを含む。
別の実施形態では、コンピュータシステムによって実行される方法では、本方法でボーンにサブシステムを判定することは、さらに、ボーンのシステムに関連付けられる頂点のシステムを生成することを含む。本方法は、さらに、頂点のシステムから取られた頂点のサブシステムを生成することを含む。本方法は、さらに、頂点のサブシステムをボーンのサブシステムに割り当てることを含む。
別の実施形態では、コンピュータシステムによって実行される方法では、本方法で頂点のサブシステムを割り当てることは、さらに、第1のボーン及び第2のボーンの減少した頂点のセットを形成することを含み、減少した頂点のセットは第1のボーンの頂点の第1のセット及び第2のボーンの頂点の第2のセットから取られ、減少したセットは、頂点の第1及び第2のセットの組み合わせよりも少ないジョイントを定義する。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、頂点のサブシステムをレンダリングすることを含む。
別の実施形態では、コンピュータシステムによって実行される方法では、複数のボーンは相互接続されたボーンの階層セットを定義する。
別の実施形態では、コンピュータシステムによって実行される方法は、さらに、オブジェクトをアニメ化するとき、キーフレームの数を減らすことを含む。
別の実施形態では、非一時的なコンピュータ可読媒体は、グラフィックスパイプラインを実施するためのコンピュータプログラムを記憶する。コンピュータ可読媒体は、ボーン間の位置付け関係を定義するオブジェクトに関する複数のボーンを生成するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、ボーンのサブシステムを、オブジェクトに関する複数のボーンから判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、オブジェクトを含む仮想シーンの画像をレンダリングするとき、中心窩領域を判定するためのプログラム命令を含み、中心窩領域はユーザの注目が向く場所に対応する。コンピュータ可読媒体は、さらに、オブジェクトの少なくとも一部が画像に関する周辺領域内に位置していることを判定するためのプログラム命令を含む。コンピュータ可読媒体は、さらに、変換をボーンのサブシステムに適用することによって、オブジェクトをアニメ化するためのプログラム命令を含む。
別の実施形態では、ボーンのサブシステムを判定するためのプログラム命令は、さらに、ボーンのシステムに関連付けられる頂点のシステムを生成するためのプログラム命令を含む。ボーンのサブシステムを判定するためのプログラム命令は、さらに、頂点のサブシステムを頂点のシステムから生成するためのプログラム命令を含む。ボーンのサブシステムを判定するためのプログラム命令は、さらに、頂点のサブシステムをボーンのサブシステムに割り当てるためのプログラム命令を含む。
別の実施形態では、頂点のサブシステムを割り当てるためのプログラム命令は、第1のボーン及び第2のボーンの減少した頂点のセットを形成するためのプログラム命令を含み、減少した頂点のセットは第1のボーンの頂点の第1のセット及び第2のボーンの頂点の第2のセットから取られ、減少したセットは、頂点の第1及び第2のセットの組み合わせよりも少ないジョイントを定義する。
別の実施形態では、コンピュータ可読媒体は、さらに、多角形メッシュとボーンのサブシステムとの間の関連性を定義するために使用するように、複数の混合重量を混合重量のサブセットに減らすことをさらに含む。
別の実施形態では、コンピュータ可読媒体は、さらに、頂点のサブシステムをレンダリングすることを含む。
別の実施形態では、プログラム命令では、複数のボーンは相互接続されたボーンの階層セットを定義する。
別の実施形態では、コンピュータ可読媒体は、さらに、オブジェクトをアニメ化するとき、キーフレームの数を減らすことを含む。
特定の実施形態が中心窩レンダリングを行うように構成されるビデオレンダリングシステムのグラフィックスプロセッサの実施を説明するように提供されているが、中心窩領域内の画像の部分は高解像度でレンダリングされ(例えば、より高解像度のシャドーマップを使用してシャドーをレンダリングする)、周辺領域内の部分はより低解像度でレンダリングされ(例えば、より低解像度のシャドーマップを使用してシャドーをレンダリングする)、これらは、例として説明され、限定的なものとして説明されない。本開示を読んでいる当業者は、本開示の主旨及び範囲の中に収まる追加実施形態を理解する。
広範な地理的エリアにわたって送達される本実施形態のゲームへのアクセス等を提供するアクセスサービスが、多くの場合、クラウドコンピューティングを使用することを留意されたい。クラウドコンピューティングは、動的に拡張可能であり、多くの場合、仮想化されたリソースがインターネットを通したサービスとして提供される、コンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」の技術インフラストラクチャに関する専門家である必要はない。クラウドコンピューティングは、サービスとしてのインフラストラクチャ(「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、及びジャイロスコープ1012等の任意の様々な種類の動き感知ハードウェアを含み得る。
加速度計は、加速度及び重力誘導反動力を測定するためのデバイスである。単一及び複数の軸モデルは、異なる方向で、加速度の大きさ及び方向を検出することに利用可能である。加速度計は、傾斜、振動、及び衝撃を感知するために使用される。一実施形態では、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)、1024×768を含むが、任意の他のフレームサイズを使用し得る。フレームレートは、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、磁気テープ、ならびに他の光学データストレージデバイス及び非光学データストレージデバイスを含む。コンピュータ可読媒体は、ネットワーク連結コンピュータシステムを通して分散されるコンピュータ可読有形媒体を含み得、これにより、コンピュータ可読コードは、分散様式で記憶及び実行される。
本方法の動作が特定の順序で説明されたが、オーバーレイ動作の処理が所望の方法で行われる限り、他のハウスキーピング動作は動作間に行われ得る、または動作は、わずかに異なる時間で発生するように調節され得る、もしくは、処理に関連付けられる様々な間隔における処理動作の発生を可能にするシステム内で分散され得ることを理解されたい。
理解の明確性の目的のために、前述の開示がいくつか詳細に説明されているが、ある変更及び修正が添付の「特許請求の範囲」の範囲内で実践できることが明白である。したがって、本実施形態は、例証であり制限するものではないとして考慮され、本開示の実施形態は、本明細書に与えられた詳細に限定されないが、添付の「特許請求の範囲」の範囲内及びその均等物の範囲内で修正され得る。