IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソニー・インタラクティブエンタテインメント エルエルシーの特許一覧

特許7538284マルチサーバクラウド仮想現実(VR)ストリーミング
<>
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図1A
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図1B
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図1C
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図2
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図3
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図4
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図5
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図6
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図7
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図8
  • 特許-マルチサーバクラウド仮想現実(VR)ストリーミング 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-13
(45)【発行日】2024-08-21
(54)【発明の名称】マルチサーバクラウド仮想現実(VR)ストリーミング
(51)【国際特許分類】
   G06T 19/00 20110101AFI20240814BHJP
   H04N 21/234 20110101ALI20240814BHJP
   H04N 21/2668 20110101ALI20240814BHJP
   H04N 21/258 20110101ALI20240814BHJP
【FI】
G06T19/00 300B
H04N21/234
H04N21/2668
H04N21/258
【請求項の数】 20
(21)【出願番号】P 2023073069
(22)【出願日】2023-04-27
(62)【分割の表示】P 2020566269の分割
【原出願日】2019-03-22
(65)【公開番号】P2023100769
(43)【公開日】2023-07-19
【審査請求日】2023-05-18
(31)【優先権主張番号】15/993,064
(32)【優先日】2018-05-30
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】518187455
【氏名又は名称】ソニー・インタラクティブエンタテインメント エルエルシー
(74)【代理人】
【識別番号】100099324
【弁理士】
【氏名又は名称】鈴木 正剛
(72)【発明者】
【氏名】トルゲイル ハグランド
【審査官】橘 高志
(56)【参考文献】
【文献】特開2018-041331(JP,A)
【文献】米国特許出願公開第2018/0103199(US,A1)
【文献】米国特許出願公開第2013/0268573(US,A1)
【文献】特表2008-502228(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
H04N 21/234
H04N 21/2668
H04N 21/258
(57)【特許請求の範囲】
【請求項1】
クラウドシステムにおける分割階層グラフィックプロセッサシステムであって、
アプリケーションによって生成されたVR環境内への複数のビューに対する複数のプリミティブに基づいて、レンダリングを並列に実行する、サーバにおける複数のレンダリングノードを有し、前記複数のレンダリングノードのそれぞれは、高解像度のレンダリング及び低解像度のレンダリングが可能であり、前記複数のビューは、前記VR環境のグリッドマップの複数の面に対応し、前記複数のレンダリングノードのそれぞれは、対応するフレームシーケンスを、前記複数のビューのうち対応するビューを前記高解像度でレンダリングし、
複数のエンコーダを有し、前記複数のエンコーダのそれぞれは、前記複数のレンダリングノードのうち対応する前記レンダリングノードに配置され、これにより前記レンダリングノードのそれぞれには前記エンコーダが配置されており、前記複数のエンコーダのそれぞれは、前記対応するフレームシーケンスをエンコードし、かつ、エンコードされた前記対応するフレームシーケンスをクライアントデバイスへとストリーミングし、
前記グリッドマップは、前記VR環境内の配置に対してセンタリングされた前記VR環境の3次元表示を与える、
分割階層グラフィックプロセッサシステム。
【請求項2】
前記サーバに設けられて前記複数のプリミティブを生成するために前記アプリケーションを実行するマスターノードを有する、
請求項1に記載の分割階層グラフィックプロセッサシステム。
【請求項3】
前記マスターノードは、前記複数のレンダリングノードのそれぞれにより生成された前記対応するフレームシーケンス内のフレームにタイムスタンプまたはフレームナンバーを適用することによって、前記複数のレンダリングノードによって実行されるレンダリングを同期するように構成される、
請求項2に記載の分割階層グラフィックプロセッサシステム。
【請求項4】
前記グリッドマップは6つの面を含むキューブマップである、
請求項1に記載の分割階層グラフィックプロセッサシステム。
【請求項5】
前記複数のレンダリングノードのそれぞれと前記グリッドマップの対応する面との間に1対1の関係がある、
請求項1に記載の分割階層グラフィックプロセッサシステム。
【請求項6】
前記グリッドマップの複数の面のそれぞれは、前記VR環境への前記複数のビューのうちの1つに対応する、
請求項1に記載の分割階層グラフィックプロセッサシステム。
【請求項7】
前記クライアントデバイスは、前記複数のレンダリングノードのそれぞれでエンコード及びストリーミングされた前記対応するフレームシーケンスを復号及びバッファリングするように構成された1つ以上のデコーダを含み、
前記クライアントデバイスは、前記複数のビューの一つ以上のエンコードされた1つ以上の対応するフレームシーケンスのうち一つ以上を選択して復号し、前記高解像度で視点を前記VR環境内に生成して表示するように構成される、
請求項1に記載の分割階層グラフィックプロセッサシステム。
【請求項8】
クラウドシステムの分割階層グラフィックプロセッサシステムを使用してグラフィック処理を実行する方法であって、
アプリケーションによって生成されたVR環境への複数のビューに対する複数のプリミティブに基づいて、サーバの複数のレンダリングノードにおいて並列にレンダリングを行い、前記複数のレンダリングノードのそれぞれは、高解像度のレンダリング及び低解像度のレンダリングが可能であり、前記複数のビューは、前記VR環境のグリッドマップの複数の面に対応し、前記複数のレンダリングノードのそれぞれは、対応するフレームシーケンスを、前記複数のビューのうち対応するビューを前記高解像度でレンダリングし、
エンコーダがそれぞれ前記対応するフレームシーケンスをエンコードし、
前記エンコーダは、それぞれ、エンコードされた前記対応するフレームシーケンスをクライアントデバイスへとストリーミングし、前記エンコーダは、それぞれ、前記複数のレンダリングノードのうち対応する前記レンダリングノードに配置され、これにより前記レンダリングノードのそれぞれには前記エンコーダが配置されており、
前記グリッドマップは、前記VR環境内の配置に対してセンタリングされた前記VR環境の3次元表示を与える、
方法。
【請求項9】
前記サーバのマスターノードが、前記複数のプリミティブを生成するために前記アプリケーションを実行し、
前記アプリケーションは、前記クライアントデバイスからの入力に応答して実行される、
請求項8に記載の方法。
【請求項10】
前記複数のレンダリングノードのそれぞれにより生成された前記対応するフレームシーケンス内のフレームにタイムスタンプまたはフレームナンバーを適用することによって、前記複数のレンダリングノードで並列に実行されるレンダリングを同期する、
請求項8に記載の方法。
【請求項11】
前記グリッドマップは6つの面を含むキューブマップである、
請求項8に記載の方法。
【請求項12】
前記複数のレンダリングノードのそれぞれと前記グリッドマップの対応する面との間に1対1の関係がある、
請求項8に記載の方法。
【請求項13】
前記グリッドマップの複数の面のそれぞれは、前記VR環境への前記複数のビューのうちの1つに対応する、
請求項8に記載の方法。
【請求項14】
前記クライアントデバイスは、前記複数のレンダリングノードのそれぞれでエンコード及びストリーミングされた前記対応するフレームシーケンスを復号及びバッファリングするように構成された1つ以上のデコーダを含み、
前記クライアントデバイスは、前記複数のビューの一つ以上のエンコードされた1つ以上の対応するフレームシーケンスのうち一つ以上を選択して復号し、前記高解像度で視点を前記VR環境内に生成して表示するように構成される、
請求項8に記載の方法。
【請求項15】
クラウドシステムの分割階層グラフィックプロセッサシステムを使用したグラフィック処理の実行方法を実行するためのコンピュータプログラムを記憶したコンピュータ可読媒体であって、前記コンピュータ可読媒体は、
アプリケーションによって生成されたVR環境への複数のビューに対する複数のプリミティブに基づいて、サーバの複数のレンダリングノードにおいて並列にレンダリングを行うためのプログラム命令を有し、前記複数のレンダリングノードのそれぞれは、高解像度のレンダリング及び低解像度のレンダリングが可能であり、前記複数のビューは、前記VR環境のグリッドマップの複数の面に対応し、前記複数のレンダリングノードのそれぞれは、対応するフレームシーケンスを、前記複数のビューのうち対応するビューを前記高解像度でレンダリングし、
エンコーダがそれぞれ前記対応するフレームシーケンスをエンコードするためのプログラム命令を有し、
エンコードされた前記対応するフレームシーケンスを前記エンコーダがそれぞれクライアントデバイスへとストリーミングするためのプログラム命令を有し、前記エンコーダは、それぞれ、前記複数のレンダリングノードのうち対応する前記レンダリングノードに配置され、これにより前記レンダリングノードのそれぞれには前記エンコーダが配置されており、
前記グリッドマップは、前記VR環境内の配置に対してセンタリングされた前記VR環境の3次元表示を与える、
コンピュータ可読媒体。
【請求項16】
前記サーバのマスターノードで前記複数のプリミティブを生成するために前記アプリケーションを実行するためのプログラム命令を有し、
前記アプリケーションは、前記クライアントデバイスからの入力に応答して実行される、
請求項15に記載のコンピュータ可読媒体。
【請求項17】
前記複数のレンダリングノードのそれぞれにより生成された前記対応するフレームシーケンス内のフレームにタイムスタンプまたはフレームナンバーを適用することによって、前記複数のレンダリングノードによって実行されるレンダリングを同期するように構成される、
請求項15に記載のコンピュータ可読媒体。
【請求項18】
前記グリッドマップは6つの面を含むキューブマップである、
請求項15に記載のコンピュータ可読媒体。
【請求項19】
前記複数のレンダリングノードのそれぞれと前記グリッドマップの対応する面との間に1対1の関係がある、
請求項15に記載のコンピュータ可読媒体。
【請求項20】
前記クライアントデバイスは、前記複数のレンダリングノードのそれぞれでエンコード及びストリーミングされた前記対応するフレームシーケンスを復号及びバッファリングするように構成された1つ以上のデコーダを含み、
前記クライアントデバイスは、前記複数のビューの一つ以上のエンコードされた1つ以上の対応するフレームシーケンスのうち一つ以上を選択して復号し、前記高解像度で視点を前記VR環境内に生成して表示するように構成される、
請求項15に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ生成画像に関し、特に、コンピュータ生成グラフィックのリアルタイムなレンダリングに関する。
【背景技術】
【0002】
レンダリングパイプラインにおける仮想現実(VR)シーンのコンピュータレンダリングは、中央処理装置(CPU)及びグラフィックプロセシングユニット(GPU)リソースを必要とする。VRシーンは、広範囲な視覚範囲にわたってレンダリングされることがあるが、その視覚範囲のわずかな部分のみが表示される。加えて、VRシーンは、従来のシーンよりも複雑になることがあり、また、ユーザによるモーションシックネス(VR酔い、ゲーム酔い、あるいは乗物酔い)を回避するために、画像処理に対して、一層高いフレームレートを必要とすることがある。
【0003】
VRシーンは、例えば、キューブの面上の所与の位置からVRシーンを投影するために使用されるキューブマップとして生成されることがある。キューブは、そこからビューが生成される位置を取り囲む。特に、キューブマップの各々の面は、VR環境内のその位置についての対応するビューに対してVRシーンをレンダリングすることによって生成される。キューブマップビューアは、VR環境への所与のビューポイントに対して1つ以上のビューを混合する。
【0004】
典型的には、CPU及びGPUの両方を含む単一のコンピューティングリソースは、キューブマップに対してビューのレンダリングを実行するために使用される。しかしながら、コンピューティングリソースは、ユーザにおいてモーションシックネスを生じさせることなくVRシーンを処理可能とするためには、処理電力の点で何らかのコスト節約手段を実装することが必要となる場合がある。例えば、VR環境へのユーザのビューポイントの生成に用いられないキューブマップのビューは、ビューポイントの生成に用いられるそれらのビューよりも低解像度で生成され得る。すなわち、ユーザがVR環境への280~40度(前方の)の範囲の間で(例えば、キャラクタの位置に対応する)視認している場合、次いで、180度(後方の)に対応するキューブマップビューは、低解像度においてレンダリングされる。しかしながら、ユーザがVR環境の他の領域を視認するために物理的に頭の向きを変えるとき(例えば、180度に向かって後方に回転させる)、ヘッドマウントディスプレイ(HMD)上で表示されるビューは、高解像度画像から生成される。その場合、ユーザは、高解像度のビューから、より低解像度のビューに移るときにモーションシックネスの影響を大きく受けることがある。
【0005】
本開示の実施形態はこのような背景の下になされたものである。
【発明の概要】
【0006】
本開示の実施形態は、VRコンテンツのマルチサーバクラウドVRストリーミングを実行するためのクラウドシステムにおいて実装された分割階層グラフィックプロセッサシステムに関する。例えば、分割階層グラフィックプロセッサシステムは、別個のレンダリングノード/サーバ上でグリッドマップの各々の面の生成を通じて実装されるように、VRコンテンツのストリーミングを実行するように構成され、レンダリングノードは、アプリケーションロジックを実行する(例えば、ゲーミングアプリケーションを実行する)マスタノードによって制御される。いくつかの本開示の発明的実施形態が以下で説明される。
【0007】
1つの実施形態では、クラウドシステムにおいて実装された分割階層グラフィックプロセッサシステムは、ネットワークを介して受信されたユーザのクライアントデバイスからの入力に応答して、仮想現実(VR)アプリケーションを実行し、VR環境内の複数のオブジェクトに対して複数のプリミティブを生成するマスタノードを含む。グラフィックプロセッサシステムは、VR環境内の位置から取り込まれたVR環境への複数のビューに対する複数のプリミティブに基づいて、レンダリングを実行する複数のレンダリングノードを含み、複数のビューは、VR環境のグリッドマップに対応し、レンダリングノードの各々は、クライアントデバイスへの対応するビューのフレームの対応するシーケンスをレンダリングし、符号化し、及びストリーミングする。グラフィックプロセッサシステムは、VR環境を構築するために使用される複数のオブジェクトに対する入力ジオメトリを記憶するアセットライブラリを含み、アセットライブラリ内の複数のオブジェクトは、マスタノード及び複数のレンダリングノードによってアクセス可能である。
【0008】
1つの実施形態では、クラウドシステムの分割階層グラフィックプロセッサシステムを使用してグラフィック処理を実行する方法が開示される。方法は、クラウドシステムのマスタノードにおいて、ユーザのクライアントデバイスからの入力に応答して、仮想現実(VR)アプリケーションを実行し、VRアプリケーションのVR環境内の複数のオブジェクトに対して複数のプリミティブを生成することを含む。方法は、VR環境内の位置から取り込まれたVR環境への複数のビューに対する複数のプリミティブに基づいて、複数のレンダリングノードにおいてフレームの複数のシーケンスをレンダリングすることを含み、複数のビューは、VR環境のグリッドマップに対応し、フレームの対応するシーケンスは、対応するビューと関連付けられている。方法は、複数のオブジェクトに対する入力ジオメトリをアセットライブラリに記憶することを含み、複数のオブジェクトは、VR環境を構築するために使用され、アセットライブラリ内の複数のオブジェクトは、マスタノード及び複数のレンダリングノードによってアクセス可能である。方法は、各々のレンダリングノードにおいてフレームの対応するシーケンスを符号化することを含む。方法は、各々のレンダリングノードからクライアントデバイスに、フレームの対応するシーケンスをストリーミングすることを含む。
【0009】
別の実施形態では、非一時的コンピュータ可読媒体は、クラウドシステムの分割階層グラフィックプロセッサシステムを使用してグラフィック処理を実行するためのコンピュータプログラムを記憶している。コンピュータ可読媒体は、クラウドシステムのマスタノードにおいて、ユーザのクライアントデバイスからの入力に応答して、仮想現実(VR)アプリケーションを実行し、VRアプリケーションのVR環境内の複数のオブジェクトに対して複数のプリミティブを生成するためのプログラム命令を含む。コンピュータ可読媒体は、VR環境内の位置から取り込まれたVR環境への複数のビューに対する複数のプリミティブに基づいて、複数のレンダリングノードにおいてフレームの複数のシーケンスをレンダリングするためのプログラム命令を含み、複数のビューは、VR環境のグリッドマップに対応し、フレームの対応するシーケンスは、対応するビューと関連付けられている。コンピュータ可読媒体は、複数のオブジェクトに対する入力ジオメトリをアセットライブラリに記憶するためのプログラム命令を含み、複数のオブジェクトは、VR環境を構築するために使用され、アセットライブラリ内の複数のオブジェクトは、マスタノード及び複数のレンダリングノードによってアクセス可能である。コンピュータ可読媒体は、各々のレンダリングノードにおいてフレームの対応するシーケンスを符号化するためのプログラム命令を含む。コンピュータ可読媒体は、各々のレンダリングノードから、フレームの対応するシーケンスをストリーミングするためのプログラム命令を含む。
【0010】
本開示の他の態様は、本開示の原理を例として示す、添付図面を併用して以下の詳細な説明から明らかになるであろう。
【0011】
添付図面を併用して以下の説明を参照することによって、開示を最良に理解することができる。
【図面の簡単な説明】
【0012】
図1A】本開示の1つの実施形態に従った、クラウドシステムの複数のサーバ及び/または計算ノードを使用して生成されるVRコンテンツを対話型の経験(あるいはインタラクティブな経験)に提供するように構成されたシステムを示し、いくつかの入力制御がハンドヘルドコントローラを介して提供されてもよく、いくつかの入力制御がカメラを通じて実装されるように、身体部分の追跡を通じて管理されてもよい。
図1B】本開示の1つの実施形態に従った、クラウドシステムの複数のサーバ及び/または計算ノードを使用して生成されるVRコンテンツを対話型の経験に提供するように構成されたシステムを示し、編集するためのいくつかの入力制御がハンドヘルドコントローラを介して提供されてもよく、いくつかの入力制御がカメラを通じて実装されるように、身体部分の追跡を通じて管理されてもよく、カメラは、また、HMDにデータを送信するRFエミッタのビーム追跡を目的として、HMDの移動を追跡する。
図1C】本開示の1つの実施形態に従った、クラウドシステムの複数のサーバ及び/または計算ノードを使用して生成されるVRコンテンツを対話型の経験に提供するように構成されたシステムを示し、編集するためのいくつかの入力制御がハンドヘルドコントローラを介して提供されてもよく、いくつかの入力制御が磁気源を介して部分的に実装されるように、身体部分の磁気追跡を介して管理されてもよい。
図2】開示の実施形態に従った、ビデオゲームを実行し、クラウドシステムの複数のサーバ及び/または計算ノードを使用して生成されるVRコンテンツを表示することと連動したHMDの機能を概念的に示す。
図3】本開示の1つの実施形態に従った、分割階層グラフィックプロセッサシステムを実装するためにクラウドシステムの複数のサーバ及び/または計算ノードを使用した、クラウドシステムにおけるVRコンテンツの生成を示すデータフローチャートである。
図4】本開示の1つの実施形態に従った、キューブマップの6個の面に対してビューを生成する6個のレンダリングノードと、ゲーミングアプリケーションのロジックを実行し、レンダリングノードの同期を管理するためのマスタノードとを含む、クラウドシステムの複数のサーバ及び/または計算ノード使用した、クラウドシステムにおけるVRコンテンツの生成を示すデータフローチャートである。
図5】本開示の1つの実施形態に従った、グラフィックパイプラインを実装するように構成された分割階層プロセッサシステムを示し、分割階層は、中央処理装置(CPU)及び/またはグラフィックプロセシングユニット(GPU)の機能を実行して、ゲームロジックを実行し、グリッドマップの面の各々に対して画像フレームを独立してレンダリングするよう、クラウドシステムの複数のサーバ及び/または計算ノードにわたって実装される。
図6】本開示の1つの実施形態に従った、クラウドシステムの複数のサーバ及び/または計算ノードを使用してグラフィックパイプラインを実装する方法におけるステップを示すフローチャートである。
図7】本開示の1つの実施形態に従った、クラウドシステムの複数のサーバ及び/または計算ノードを使用してグラフィックパイプラインを実装するコンピュータシステム、ハイパーバイザシステムを示す。
図8】開示の実施形態に従った、本開示の様々な実施形態の態様を実行するために使用することができる実施例のデバイスの構成要素を示す。
図9】開示の様々な実施形態に従った、ゲームシステムのブロック図である。
【発明を実施するための形態】
【0013】
以下の詳細な説明は、例示を目的として多くの特定の詳細を包含するが、当業者は、以下の詳細への多くの変形及び変更が本開示の範囲内にあることを認識するであろう。したがって、以下で説明される本開示の態様は、この説明に続く特許請求の範囲への一般性を失うことなく、また限定を課すことなく示される。
【0014】
概して、本開示の様々な実施形態は、VRコンテンツのマルチサーバクラウドVRストリーミングを実行するための、クラウドシステムにおいて実装された分割階層グラフィックプロセッサシステムについてのシステム及び方法を説明する。例えば、分割階層グラフィックプロセッサシステムは、別個のレンダリングノード/サーバ上でのグリッドマップの各々の面の生成を通じて実装されるように、VRコンテンツのストリーミングを実行するように構成される。特に、分割階層グラフィックプロセッサシステムは、クラウドシステム上で複数のサーバ/計算ノードを含む。例えば、マスタノードは、ゲームロジックを稼働させるように構成される。マスタノードはまた、複数のレンダリングノードの演算を同期してもよく(例えば、同期パケットを通じて)、複数のレンダリングノードの各々は、グリッドマップの対応するビューに対してビデオフレームをレンダリングする。1つの実装形態では、マスタノード及びレンダリングノードは、通信を目的として、サーバラックに配置される。加えて、マルチサーバシステムが1つのラック内で実装されることを理由に、同期は、レンダリングノードの間に内在する。従来のVRシステムは、処理電力がグラフィック処理及び/またはレンダリングの全てを実行する単一のハードウェアシステムに制限されることを理由に、VRシーンの全ての角度を処理するために、解像度品質を犠牲にする必要がある(例えば、グリッドマップの視認されていない面を、相対的に低い解像度でレンダリングする)。すなわち、ユーザが従来のシステムを使用して空間内でHMDを回転させるにつれて、ディスプレイは、低解像度と高解像度との間で切り替えるビューを表示しており、それによって、ユーザにおいてモーションシックネスを生じさせる。一方、本開示の実施形態は、ユーザのVR環境への最新のビューポイントを生成するためにどのビューが使用されるかに関わらず、最高解像度におけるグリッドマップの各々の面のビューの生成をもたらす。すなわち、本開示の実施形態は、分割アーキテクチャがグラフィックパイプラインを実装することに起因して、クラウドシステムにおいて実行エンジン(例えば、ゲーミング及び/または対話型VRアプリケーションを実行する)に追加のCPU及び/またはGPUリソースを与えることができる。グリッドマップの面に対応する全てのビューの最高解像度におけるレンダリングを少なくとももたらすようCPU及び/またはGPUリソースが増大することにより、1つの利点は、ユーザのモーションシックネスを減少させることを含む。例えば、ユーザに提示される画像は、特に、ユーザがVR環境の異なるビューを視認するために空間内でHMDを回転させるにつれて、高解像度にあるままであり、その結果、低解像度及び高解像度のビューの間で切り替えが存在しない。本開示のいくつかの発明的実施形態が以下で説明される。
【0015】
以下、様々な実施形態の上記全体的な理解により、実施形態の実施例の詳細を様々な図面を参照して説明する。
【0016】
明細書全体を通じて、「ゲーミングアプリケーション」とは、入力コマンドの実行を通じて命令されるいずれかのタイプの対話型アプリケーション(インタラクティブアプリケーション)を表すことを意味する。例示のみを目的として、対話型アプリケーションは、ゲーミング、文書処理、ビデオゲーム処理などのためのアプリケーションを含む。更に、ビデオゲーム及びゲーミングアプリケーションという用語は、交換可能である。
【0017】
図1Aは、開示の実施形態に従った、VRシーンまたは環境(例えば、ゲーミングアプリケーションの対話型ゲームプレイ)とのユーザ対話をもたらすシステムを示す。HMD102を装着したユーザ100が示され、HMD102は、眼鏡、ゴーグル、またはヘルメットと同様の形式で装着され、対話型ゲーミングアプリケーションからのビデオゲームまたは対話型アプリケーションからの他のコンテンツをユーザ100に表示するように構成される。HMD102は、ユーザの目に近接して、表示機構を提供することにより、ユーザに非常に没入感のある体験をもたらす。よって、HMD102は、ユーザの視野の大部分または全体でさえも占有するユーザの目の各々に表示領域をもたらすことができる。
【0018】
1つの実施形態では、HMD102は、コンピュータまたはゲームコンソール106に接続されてもよい。コンピュータ106への接続は、有線または無線であってもよい。いくつかの実装形態では、HMD102はまた、HMD102及びコンピュータ106の両方が接続されるネットワーク112を介してなど、代替的な機構またはチャネルを通じてコンピュータを通信してもよい。コンピュータ106は、それらに限定されないが、ゲーミングコンソール、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、モバイルデバイス、携帯電話、タブレット、シンクライアント、セットトップボックス、メディアストリーミングデバイスなどを含む、本分野において既知のいずれかの汎用または特殊目的コンピュータであってもよい。1つの実施形態では、コンピュータ106は、ゲーミングアプリケーション及び/または対話型VRアプリケーションを実行し、HMD102によるレンダリングのためにゲーミングまたはVRアプリケーションからビデオ及び音声を出力するように構成されてもよい。コンピュータ106は、ゲーミングアプリケーションを実行することに制限されないが、HMD102によるレンダリングのためにVRコンテンツ191を出力する、対話型アプリケーションを実行するようにも構成されてもよい。
【0019】
別の実施形態では、コンピュータ106は、ネットワークを通じたクラウドシステム114またはバックエンドサーバシステムとの通信において、シンクライアントとして機能する。そのようにして、クラウドシステム114は、ユーザ102によってプレイされるゲーミングアプリケーション及び/または対話型VRアプリケーションを維持及び実行する。ローカルコンピュータ106は、HMD102、コントローラ104、及びカメラ108からクラウドシステム114に入力を送信し、クラウドシステム114は入力を処理して、実行しているゲーミング及び/またはVRアプリケーションのゲーム状態に影響を与える。ビデオデータ、音声データ、及び触覚フィードバックデータなど、実行しているアプリケーションからの出力は、コンピュータ106に送信される。コンピュータ106は更に、送信の前にデータを処理してもよく、または関連するデバイスにデータを直接送信してもよい。例えば、ビデオ及び音声ストリームは、HMD102に提供されるのに対し、触覚フィードバックデータは、コントローラ104に提供される、振動フィードバックコマンドを生成するために使用される。
【0020】
1つの実施形態では、クラウドシステムは、VRコンテンツのマルチサーバクラウドVRストリーミング実行するための分割階層グラフィックプロセッサシステムを実装するように構成される。例えば、クラウドシステム114は、マスタノード310及び複数のレンダリングノード320を含む実行エンジン300(例えば、ゲーミングエンジン)を含む。マスタノード310は、ゲーミング及び/または対話型VRアプリケーションを実行するとき、シミュレーションを実行すること、スクリプトを稼働させること、及びレンダリングを実行するために必要な入力(例えば、プリミティブ)をグラフィックエンジンに提供することなど、CPU機能を実行するように構成される。マスタノード310はまた、レンダリングノードの同期を実行してもよい。複数のレンダリングノード320は、グリッドマップの各々の面に対してフレームのレンダリングを実行するように構成される。例えば、6個の面を有するキューブマップに対し、6個のレンダリングノードは、キューブマップ面の各々に対してビューを生成するために使用され、各々のレンダリングノードは、キューブマップの対応するビューに対して画像及び/またはビデオフレームを生成する。
【0021】
ユーザ100は、ゲーミング及び/または対話型VRアプリケーションに対して入力を提供するようコントローラ104を動作させてもよい。コンピュータ106への接続は、有線または無線であってもよい。加えて、カメラ108は、ユーザ100が位置する対話型環境の1つ以上の画像を捕捉するように構成されてもよい。それらの捕捉された画像は、ユーザ100、ユーザの一部(例えば、入力コマンドについてのハンドジェスチャを追跡する)、HMD102、及びコントローラ104の位置及び移動を判定するよう分析されてもよい。1つの実施形態では、コントローラ104は、その位置及び方位を判定するために追跡することができる、ライトまたは他のマーカ要素を含む。加えて、HMD102は、HMD102の位置及び方位を判定するために追跡することができる1つ以上のライトを含んでもよい。カメラ108によって部分的に実装されるような追跡機能性は、コントローラ104及び/またはユーザ100の身体部分(例えば、手)の移動を通じて生成される入力コマンドをもたらす。カメラ108は、対話型環境からのサウンドを捕捉する1つ以上のマイクロフォンを含んでもよい。マイクロフォンアレイによって捕捉されたサウンドは、サウンド源の位置を識別するよう処理されてもよい。識別された位置からのサウンドは、識別された位置からでない他のサウンドを排除するために選択的に利用または処理されてもよい。更に、カメラ108は、複数の画像捕捉デバイス(例えば、カメラの双眼写真)、IRカメラ、奥行カメラ、及びそれらの組み合わせを含むように定義されてもよい。
【0022】
1つの実施形態では、HMD102、コントローラ104、及びカメラ108はそれ自体、クラウドシステム114と通信するようネットワーク150に接続するネットワーク化されたデバイスであってもよい。例えば、コンピュータ106は、ビデオゲーム処理を実行しないが、ネットワークトラフィックの通過を容易にする、ルータなどのローカルネットワークデバイスであってもよい。HMD102、コントローラ104、及びカメラ(すなわち、画像捕捉デバイス)108によるネットワークへの接続は、有線または無線であってもよい。
【0023】
更なる別の実施形態では、コンピュータ106は、ゲーミングアプリケーションの部分を実行してもよく、ゲーミングアプリケーションの残りの部分は、クラウドシステム114上で実行されてもよい。他の実施形態では、ゲーミングアプリケーションの部分は、HMD102上でも実行されてもよい。例えば、コンピュータ106からゲーミング及び/または対話型VRアプリケーションをダウンロードする要求は、クラウドシステム114によってサービス提供されてもよい。要求がサービス提供される間、クラウドシステム114は、ゲーミング及び/または対話型VRアプリケーションの部分を実行してもよく、HMD102上でのレンダリングのためにコンピュータ106にゲームコンテンツを提供してもよい。コンピュータ106は、ネットワーク150を介してクラウドシステム114と通信してもよい。ゲーミングアプリケーションがコンピュータ106上でダウンロードされる間、HMD102、コントローラ104、及びカメラ108から受信された入力は、クラウドシステム114に送信される。クラウドシステム114は、実行しているゲーミング及び/または対話型VRアプリケーションのゲーム状態に影響を与えるよう入力を処理する。ビデオデータ、音声データ、及び触覚フィードバックデータなど、実行しているゲーミング及び/または対話型VRアプリケーションからの出力は、それぞれのデバイスへの前方送信のためにコンピュータ106に送信される。
【0024】
ゲーミング及び/または対話型VRアプリケーションがコンピュータ106に完全にダウンロードされると、コンピュータ106は、ゲーミング及び/または対話型VRアプリケーションを実行してもよく、それからクラウドシステム114上で中断された、ゲーミング及び/または対話型VRアプリケーションのゲームプレイを再開してもよい。HMD102、コントローラ104、及びカメラ108からの入力は、コンピュータ106によって処理され、HMD102、コントローラ104、及びカメラ108から受信された入力に応答して、ゲーミングアプリケーションのゲーム状態が調節される。そのような実施形態では、コンピュータ106におけるゲーミング及び/または対話型VRアプリケーションのゲーム状態は、クラウドシステム114におけるゲーム状態と同期される。同期は、コンピュータ106及びクラウドシステム114の両方においてゲーミング及び/または対話型VRアプリケーションの状態を最新に維持するよう周期的に行われてもよい。コンピュータ106は、関連するデバイスに出力データを直接送信してもよい。例えば、ビデオ及び音声ストリームは、HMD102に提供されるのに対し、触覚フィードバックデータは、コントローラ104に提供される、振動フィードバックコマンドを生成するために使用される。
【0025】
図1Bは、本開示の1つの実施形態に従った、VRコンテンツを対話型の経験に提供するように構成されたシステムを示し、VRコンテンツは、VRコンテンツのマルチサーバクラウドVRストリーミングを実行するための分割階層グラフィックプロセッサシステムを使用して生成される。特に、システム(例えば、HMD102、コンピュータ106、及び/またはクラウド114)は、VRコンテンツのマルチサーバクラウドVRストリーミングを実行するように構成される。前に説明されたように、クラウドシステム114は、マスタノード310(例えば、シミュレーション、ゲームロジックを実行し、スクリプトを稼働させ、プリミティブを生成し、同期を実行するなど)及び複数のレンダリングノード320を含む実行エンジン300(例えば、ゲーミングエンジン)を含み、複数のレンダリングノードの各々は、グリッドマップの対応する面に対してフレームをレンダリングする(ビューを生成する)ように構成される。図1Bは、例えば、RF信号を介してHMD102にデータを配信するように構成された送信機/受信機(送受信機)110を追加しており、図1Aにおいて説明されたシステムと類似している。送受信機110は、ゲーミングアプリケーションからHMD102にビデオ及び音声を送信し、そこにレンダリングするように構成される(有線接続または無線接続によって)。1つの実施形態では、送受信機110は、データスループットを最適化する目的により(例えば、情報の効率的な送信)ビームフォーミングまたはビームステアリングに対して構成される。加えて、送受信機110は、3Dデジタルコンテンツの画像、ビデオ、及び音声を送信するように構成される。この実装形態では、任意選択のカメラ108は、本開示の1つの実施形態に従って、送受信機110がHMD102へのそのRF電力(RF放射パターンを通じて配信されるような)の大部分をビームステアリングすることができるように(データを配信することを目的として)、HMD102の移動を追跡するように構成されてもよい。すなわち、HMDの位置が送受信機110への空間内で、及び送受信機110に関連して知られると、その情報は、送受信機がHMD102の方向においてその送信電力の大部分を方向付ける(例えば、ビームステアリング)ことが可能であるように、送受信機にフィードバックされる。HMD102はまた、サイドチャネルまたはセカンダリチャネル191を介してコンピュータ106と通信し、有線または無線(例えば、Bluetooth(登録商標)、Wi-Fiなど)通信経路のいずれかを介して、HMD102との間で情報を受け渡しするように構成される。
【0026】
図1Cは、本開示の1つの実施形態に従った、VRコンテンツを対話型の経験に提供するように構成されたシステムを示し、VRコンテンツは、VRコンテンツのマルチサーバクラウドVRストリーミングを実行するために分割階層グラフィックプロセッサシステムを使用して生成される。特に、システム(例えば、HMD102、コンピュータ106、及び/またはクラウド114)は、VRコンテンツのマルチサーバクラウドVRストリーミングを実行するように構成される。前に説明されたように、クラウドシステム114は、マスタノード310(例えば、シミュレーション、ゲームロジックを実行し、スクリプトを稼働させ、プリミティブを生成し、同期を実行するなど)と、複数のレンダリングノード320とを含む実行エンジン300を含み、複数のレンダリングノード320の各々は、グリッドマップの対応する面に対してフレームをレンダリングする(ビューを生成する)ように構成される。図1Cは、HMD102、コントローラ104(例えば、インタフェースコントローラとして構成された)、または磁気センサ/アンテナにより構成されたいずれかのオブジェクト(例えば、グローブ、指などの身体部分上に位置するストライプなど)の磁気追跡(あるいはマグネットトラッキングMT:magnet tracking)を可能にするよう磁場を放射するように構成された磁気源116を追加しており、図1Aにおいて説明されたシステムと類似している。例えば、磁気センサは、誘導素子であってもよい。特に、磁気センサは、磁気源116によって放射されるような磁場(例えば、強度、方位)を検出するように構成されてもよい。磁気センサから収集された情報は、入力コマンドを提供するためになど、HMD102、コントローラ104、及び他のインタフェースオブジェクトなどの位置及び/または方位を判定及び追跡するために使用されてもよい。実施形態では、磁気追跡は、HMD102、コントローラ104、及び/または他のインタフェースオブジェクト内でカメラ108及び/またはセンサを通じて実行される追跡と組み合わされる。
【0027】
いくつかの実装形態では、インタフェースオブジェクト(例えば、コントローラ104)は、HMD102に対して追跡される。例えば、HMD102は、インタフェースオブジェクトを含む画像を捕捉した外側に面したカメラを含んでもよい。他の実施形態では、HMD102は、インタフェースオブジェクトなどの外部オブジェクトを追跡するために使用されるIRエミッタを含んでもよい。すなわち、HMD102は、信号192(例えば、IRエミッタ、磁気センサなど)を通じてコントローラ104を独立して追跡して、HMD102へのインタフェースオブジェクト(例えば、コントローラ104)の相対位置を判定するように構成される。例えば、捕捉された画像は、ローカル環境内のインタフェースオブジェクトの位置/方位及び/または移動を判定するように、HMD102に関して、かつHMD102の既知の位置/方位を使用して、インタフェースオブジェクトの位置/方位を判定するよう分析されてもよい。
【0028】
ユーザ100が、HMD102において表示された、ゲーミングアプリケーションの仮想現実シーン、または対話型VR環境の仮想現実シーンと相互作用する方式は、変化してもよく、インタフェースオブジェクト(例えば、コントローラ104)に加えて他のインタフェースデバイスが使用されてもよい。例えば、様々な種類の片手コントローラと共に両手コントローラ104が使用されてもよい。いくつかの実装形態では、コントローラ104自体が、コントローラに含まれるライトを追跡し、またはコントローラ104と関連付けられた形状、センサ、及び慣性データを追跡することによって追跡されてもよい。それらの様々なタイプのコントローラ104、または単純に、1つ以上のカメラ及び磁気センサによって行われ、及び捕捉されたハンドジェスチャさえも使用して、HMD102上で提示された仮想現実ゲーミング環境と相互作用し、それを制御し、それを操作し、それと対話し、及びそれに参加することが可能である。
【0029】
図2は、VRコンテンツ291の表示と連動「したHMD102の機能を概念的に示し、VRコンテンツは、ネットワークを介してVRコンテンツを配信するバックエンドクラウドシステムにおいて生成される。VRコンテンツは、例えば、ゲーミングアプリケーション及び/または対話型VRアプリケーションから生成されてもよい。特に、クラウドシステムは、HMD102へのVRコンテンツのマルチサーバクラウドVRストリーミングを実行するための分割階層グラフィックプロセッサシステム、及び/またはHMD102上での表示のためのローカルコンピュータ106を含んでもよい。例えば、クラウドシステムは、マスタノード(例えば、シミュレーション、ゲームロジックを実行し、スクリプトを稼働させ、プリミティブを生成し、同期を実行するなど)と、複数のレンダリングノードとを含む実行エンジン(例えば、ゲーミングエンジン)を含んでもよく、複数のレンダリングノードの各々は、グリッドマップの対応する面に対してフレームをレンダリングする(ビューを生成する)ように構成される。
【0030】
いくつかの実施形態では、HMD102は、VRコンテンツを独立して生成するように構成されてもよい。他の実施形態では、VRコンテンツエンジン220は、HMD102に通信可能に結合されたコンピュータ106(図示せず)上で、及び/またはHMD102との組み合わせで実行されている。コンピュータは、HMDに対してローカルであってもよく(例えば、ローカルエリアネットワークの一部)、またはリモートに位置してもよく(例えば、ワイドエリアネットワーク、クラウドネットワークなどの一部)、ネットワークを介してアクセスされてもよい。HMD102とコンピュータ106との間の通信は、有線または無線接続プロトコルに準拠してもよい。
【0031】
実施例では、アプリケーションを実行するVRコンテンツエンジン220は、ゲーミングアプリケーション及び/または対話型VRアプリケーションを実行するビデオゲームエンジンであってもよく、ゲーミングアプリケーションのゲーム状態を更新する入力を受信するように構成される。図2の以下の説明は、簡潔さ及び明確さを目的として、ゲーミング及び/または対話型VRアプリケーションを実行するVRコンテンツエンジン220のコンテキスト内で説明され、VRコンテンツ291を生成することが可能ないずれかのアプリケーションの実行を表すことが意図される。前に説明されたように、VRコンテンツエンジンは、ローカルゲームコンソール上で、HMD102自体の上で、またはそれらのいずれかの組み合わせで、バックエンドクラウドシステムにおいて実装されてもよい。ゲーミングアプリケーションのゲーム状態は、オブジェクトの存在及び位置、仮想環境の条件、イベントのトリガリング、ユーザプロファイル、ビュー視点など、最新のゲームプレイの様々な態様を定義するビデオゲームの様々なパラメータの値によって少なくとも部分的に定義されてもよい。
【0032】
示される実施形態では、VRコンテンツエンジン220は、例として、コントローラ入力261、音声入力262、及び動き入力263を受信する。コントローラ入力261は、ハンドヘルドゲーミングコントローラ104(例えば、Sony DUALSHOCK(登録商標)4無線コントローラ、Sony PlayStation(登録商標)Move動きコントローラ)またはウェアラブルグローブインタフェースコントローラなどのウェアラブルコントローラなど、HMD102とは別個のゲーミングコントローラの動作から定義されてもよい。例として、コントローラ入力261は、指向性入力、ボタン押下、トリガ活性化、移動、ジェスチャ、またはゲーミングコントローラの動作から処理される他の種類の入力を含んでもよい。音声入力262は、HMD102のマイクロフォン251から、または画像捕捉デバイス208もしくはそうでなければローカルシステム環境内に含まれるマイクロフォンから処理されてもよい。動き入力263は、HMD102に含まれる動きセンサ259から、またはHMD102の画像を捕捉するような画像捕捉デバイス108から処理されてもよい。例えば、ゲーミングアプリケーションを実行するケースでは、VRコンテンツエンジン220は、ビデオゲームのゲーム状態を更新するようゲームエンジンとして動作するコンテンツエンジン220の構成に従って処理される入力を受信する。エンジン220は、ユーザに提示されるコンテンツを定義するよう、ゲーム状態データを処理する様々なレンダリングモジュールにゲーム状態データを出力する。
【0033】
示される実施形態では、ビデオレンダリングモジュール283は、HMD102上で提示するためにビデオストリームをレンダリングするよう定義される。例えば、ビデオレンダリングは、グラフィックパイプラインの機能を実行してもよい。ビデオレンダリング283の構成要素及び/または機能は、CPUもしくはGPU内で、またはそれらの組み合わせで実行されてもよい。
【0034】
1つの実施形態では、1つ以上のデコーダ330は、クラウドシステム(例えば、バックエンドゲーミング及び/または対話型VRアプリケーションサーバ)によってレンダリングされた、符号化されたフレームを受信するように構成される。デコーダ330は、符号化されたフレームを、それらの元の状態及び/もしくは未処理状態、またはいくつかの同様の状態に再度復号するように構成される。前に、フレームは、ネットワーク(例えば、インターネット)を通じた効率的な送信のために符号化されており(圧縮を適用する)、符号化されたフレームのストリームは、グリッドマップ(例えば、6個の面を有するキューブマップ)の各々の面に対して生成される。デコーダの各々は、グリッドマップの対応する面に対して生成されたフレームを復号する。復号した後、復号されたフレームは、1つ以上のバッファ335に記憶される。例えば、グリッドマップの面に対応する復号されたフレームの各々のストリームは、対応するバッファに記憶されてもよい。または、グリッドマップの複数の面に対応する複数のストリームは、1つのバッファに記憶されてもよく、各々のストリームは、バッファから独立してアクセスされてもよい。キューブマップビューア450は、グリッドマップからのビューのうちの1つ以上(例えば、グリッドマップの1つ以上の面)を混合して、VRシーンへのユーザの最新の視点を生成するように構成される。
【0035】
HMD102内の光学系270のレンズは、VRコンテンツ291を視認するように構成される。ディスプレイスクリーン1304は、HMD102がユーザによって装着されるとき、光学系270のレンズがディスプレイスクリーン1304とユーザの目260との間にあるように、光学系270のレンズの背後に配置される。そのようにして、ビデオストリームは、ディスプレイスクリーン/プロジェクタ機構1304によって提示されてもよく、ユーザの目260によって光学系270を通じて視認されてもよい。HMDユーザは、HMDを装着することによって、対話型VRコンテンツ291(例えば、VRビデオソース、ビデオゲームコンテンツなど)と対話することを選択してもよい。ビデオゲームからの対話型仮想現実(VR)シーンは、HMDのディスプレイスクリーン1304上でレンダリングされてもよい。そのようにして、ゲーム開発の間、HMD102は、ユーザが対話型VRシーンを編集及びレビューすることを可能にする。また、ゲームプレイの間(編集をレビューすることを含むように)、HMDは、ユーザがユーザの目に近接してHMDの表示機構を供給することによって、ゲームプレイに完全に没入することを可能にする。コンテンツをレンダリングするためのHMDのディスプレイスクリーン内で定義された表示領域は、ユーザの視野の大部分または全体でさえも占有することがある。典型的には、各々の目は、1つ以上のディスプレイスクリーンを視認している光学系270の関連するレンズによって支持される。
【0036】
音声レンダリングモジュール282は、ユーザによって傾聴するための音声ストリームをレンダリングするように構成される。1つの実施形態では、音声ストリームは、HMD102と関連付けられたスピーカ152を通じて出力される。スピーカ152がオープンエアスピーカ、ヘッドフォン、または音声を提示することが可能ないずれかの他の種類のスピーカの形式を取ってもよいことが認識されるべきである。
【0037】
1つの実施形態では、凝視追跡センサ265は、ユーザの凝視を追跡することを可能にするようHMD102に含まれる。1つの凝視追跡センサ265のみが含まれるが、ユーザの凝視を追跡するために、1つよりも多い凝視追跡センサが採用されてもよいことに留意されるべきである。凝視追跡センサ265は、カメラ、光学センサ、赤外線センサ、EMG(筋電図検査)センサ、光学反射器センサ、距離センサ、及びオプティカルフローセンサ、ドップラセンサ、並びにマイクロフォンなどのうちの1つ以上であってもよい。概して、センサ265は、目の移動方向における変化、加速、及び速度など、急速な目の移動を検出するように構成されてもよい。例えば、凝視追跡カメラは、ユーザの凝視方向を判定するよう分析される、ユーザの目の画像を追跡する。1つの実施形態では、ユーザの凝視方向に関する情報は、ビデオレンダリングに影響を与えるために利用されてもよい。例えば、ユーザの目が特定の方向を見ていると判定される場合、次いで、その方向についてのビデオレンダリングは、優先されてもよく、または強調されてもよい。ユーザの凝視方向は、ヘッドマウントディスプレイに対して、ユーザが位置付けられる実環境に対して、及び/または仮想環境、ヘッドマウントディスプレイ上でレンダリングされる仮想環境に対して定義されてもよいことが認識されるべきである。凝視方向がHMDのスクリーンに対して定義されてもよいので、凝視方向は、スクリーン上の位置に変換されてもよい。
【0038】
広義に言うと、凝視追跡センサ265によって捕捉された画像の分析は、単独で考慮されるとき、HMD102に対するユーザの凝視方向を提供する。しかしながら、HMD102の追跡された位置及び方位との組み合わせで考慮されるとき、ユーザの現実世界の凝視方向も、HMD102の位置及び方位がユーザの頭の位置及び方位と同義であるとして判定されてもよい。すなわち、ユーザの現実世界の凝視方向は、ユーザの目の位置的な移動を追跡すること、並びにHMD102の位置と向きを追跡することから判定されてもよい。仮想環境のビューがHMD102上でレンダリングされるとき、仮想環境内でユーザの仮想世界の凝視方向を判定するよう適用して、ユーザの現実世界の凝視方向を判定してもよい。
【0039】
加えて、触知フィードバックモジュール281は、コントローラ104など、HMD102またはHMDユーザによって操作される別のデバイスのいずれかに含まれる触知フィードバックハードウェアに信号を提供するように構成される。触知フィードバックは、振動フィードバック、温度フィードバック、圧力フィードバックなど、様々な種類の触知感覚の形式を取ってもよい。
【0040】
図3は、本開示の1つの実施形態に従った、分割階層グラフィックプロセッサシステムを実装するためにクラウドシステム114の複数のサーバ及び/または計算ノードを使用した、クラウドシステムにおけるVRコンテンツの生成を示すデータフローチャートである。概して、クラウドシステム114は、グリッドマップの複数の面の各々に対してフレームをレンダリング及び符号化することを含むよう、ゲーミングアプリケーション及び/またはVR対話型アプリケーションを実行し、各々の面は、所与の位置に対するVR環境へのビューに対応する。符号化されたフレームは、復号、混合、及び表示のために、ネットワーク150を介してクライアントデバイス106にストリーミングされる。
【0041】
クラウドシステム114は、VRコンテンツのマルチサーバクラウドVRストリーミングを実行するように構成された分割階層グラフィックプロセッサシステムを含む。特に、分割階層グラフィックプロセッサシステムは、マスタノード310及び複数のレンダリングノード320など、クラウドシステム114上の複数のサーバ/計算ノードを含む。
【0042】
マスタノードは、ゲームロジック、アプリケーションロジックを稼働させること、アプリケーションにおいてスクリプトを実行すること、VRアプリケーションのVR環境/世界内で提供されるオブジェクトのシミュレーションを実行することなど、ゲーミングアプリケーション及び/または対話型VRアプリケーションを実行するように構成される。例えば、マスタノードは、オブジェクトのシミュレーションを実行するように構成されたシミュレーションモデラ301を含んでもよい。例えば、マスタノードは、入力データの所与のセットに対してオブジェクトに反して自然のまたは定義された物理的法則(例えば、自然のまたはゲーム特有法則、ルール、スクリプトなど)のシミュレーションを適用するように構成された物理シミュレーションモデラを含んでもよい。加えて、マスタノード310は、アプリケーションにおいて提供されるスクリプト(例えば、物理的法則を適用し、特定の脚色された世界についてのゲーミング物理的法則を適用するスクリプトなど)を実行するためのスクリプトエンジン302を含んでもよい。概して、マスタノード310は、図5に関連して以下で説明されるように、グラフィックパイプラインのCPU機能を実行するように構成される。例えば、マスタノードは、VRアプリケーションのVR環境/シーン内の複数のオブジェクトに対して複数のプリミティブ(図示せず)を生成するよう、ネットワーク150を介して受信されたユーザのクライアントデバイス106からの入力(例えば、制御入力303)に応答して、対話型VRアプリケーションを実行するように構成される。
【0043】
特に、クラウドシステム114は、VR環境内の位置から取り込まれたVR環境への複数のビューに対する複数のプリミティブに基づいて、レンダリングを実行するように構成された複数のレンダリングノード320を含む。例えば、各々のレンダリングノードは、クライアントデバイスへのストリーミングのためにビデオフレームのシーケンスを作成するよう、ラスタライズ、フラグメントシェーディング、出力統合、フレームバッファリングなどのレンダリング演算を実行するように構成される。
【0044】
更に、分割階層グラフィックプロセッサシステムは、VR環境を構築するために使用される複数のオブジェクトに対して入力ジオメトリ505を記憶するように構成されたアセットライブラリ350を含む。対応する入力ジオメトリによって表されるようなオブジェクトは、マスタノード310及び複数のレンダリングノード320によってアクセス可能である。特に、マスタノードは、入力ジオメトリ及び制御入力303に基づいて、オブジェクトに対してプリミティブを生成する。レンダリングノードの各々は、マスタノードの出力(例えば、物理シミュレーションの適用の後のオブジェクトの動き)に基づいて、オブジェクト(入力ジオメトリによって表されるような)のレンダリングを実行する。
【0045】
分割階層のために、ビューに対するビデオフレームのシーケンスの各々は、最高解像度(例えば、フル解像度)においてレンダリングされる。複数のビューは、その位置に対するVR環境のグリッドマップに対応する。1つの実施形態では、レンダリングノードの各々は、グリッドマップの対応するビューに対してビデオフレームをレンダリングする。例えば、レンダリングノード1(320a)は、グリッドマップの対応するビューに対してビデオフレーム323aのシーケンスを生成するように構成されたレンダラ321aを含む。同様に、レンダリングノード2(320b)は、グリッドマップの対応するビューに対してビデオフレーム323bのシーケンスを生成するように構成されたレンダラ321bを含み、レンダリングノード3(320c)は、グリッドマップの対応するビューに対してビデオフレーム323cのシーケンスを生成するように構成されたレンダラ321cを含み、...そして、レンダリングノードn(320n)は、グリッドマップの対応するビューに対してビデオフレーム323nのシーケンスを生成するように構成されたレンダラ321nを含む。
【0046】
更に、複数のレンダリングノード320の各々は、フレームのその対応するストリームを符号化する。概して、符号化は、ネットワーク150を介してストリーミングされるように、通信の効率性のためにビデオフレームのシーケンスを圧縮するよう実行される。例えば、レンダリングノード1(320a)は、符号化されたフレーム323a’のシーケンスを生成するように構成されたエンコーダ322aを含み、レンダリングノード2(320b)は、符号化されたフレーム323b’のシーケンスを生成するように構成されたエンコーダ322bを含み、レンダリングノード3(320c)は、符号化されたフレーム323c’のシーケンスを生成するように構成されたエンコーダ322cを含み、レンダリングノードn(320n)は、符号化されたフレーム323n’のシーケンスを生成するように構成されたエンコーダ322nを含む。
【0047】
符号化されたフレームのシーケンスの各々(グリッドマップのビューに対応する各々のシーケンス)は、ネットワーク150を介してクライアントデバイス106のデコーダ330にストリーミングされる。ストリーミングされるフレームの対応するシーケンス内のフレームは各々、識別子(例えば、インデックス番号)と関連付けられてもよく、フレームの1つ以上のシーケンス及びVR環境への視点に基づいて、VR環境の3Dビューとして復号され、及び組み立てられるように構成されてもよい。1つの実施形態では、符号化されたフレームのシーケンスは、単方向ブロードキャスト(例えば、UDP、ユニティUDP、マルチキャストなど)を介してクライアントデバイスにストリーミングされる。クライアントデバイスは、複数のレンダリングノードから受信された符号化されたストリームを復号及びバッファリングするように構成された1つ以上のデコーダを含む。例えば、1つの実施形態では、デコーダは、複数のデコーダに分割される。1つの実装形態では、1つのデコーダは、1対1で対応するエンコーダから配信されるフレームを復号するよう割り当てられる。もちろん、他の実施形態では、1つのデコーダは、フレームの1つ以上の符号化されたシーケンスを復号することができる。例えば、レンダリングノード1(320a)から、符号化されたフレーム323a’のシーケンスは、経路380aを通じてクライアントデバイス106のデコーダ330-aにストリーミングされる。デコーダ330-aは、VRシーンのグリッドマップの第1のビューに対応することができる、フレーム323aのシーケンスを生成するよう、符号化されたフレーム323a’を復号し、符号化されたフレーム323a’をその元の状態または未処理状態(もしくは、いくつかの同様の状態)に戻すよう動作する。同様の機能性が符号化されたフレームの他のシーケンスの各々に対して実行される。特に、レンダリングノード2(320b)から、符号化されたフレーム323b’のシーケンスは、グリッドマップの第2のビューに対応することができる、復号されたフレーム323bのシーケンスを生成するよう、経路380bを通じてデコーダ330-bにストリーミングされる。また、レンダリングノード3(320c)から、符号化されたフレーム323c’のシーケンスは、グリッドマップの第3のビューに対応することができる、復号されたフレーム323cのシーケンスを生成するよう、経路380cを通じてデコーダ330-cにストリーミングされる。処理は、レンダリングノードn(320n)からを含む、符号化されたフレームの各々のシーケンスに対して継続し、符号化されたフレーム323n’のシーケンスは、グリッドマップの第3のビューに対応することができる、復号されたフレーム323nのシーケンスを生成するよう、経路380nを通じてデコーダ330-nにストリーミングされる。
【0048】
更に、復号した後、フレームの復号されたシーケンスは、1つ以上のバッファ335に記憶される。例えば、グリッドマップの第1のビューに対応するフレーム323aの復号されたシーケンスは、第1のバッファ335-aに記憶され、グリッドマップの第2のビューに対応するフレーム323bの復号されたシーケンスは、第2のバッファ335-bに記憶され、グリッドマップの第3のビューに対応するフレーム323cの復号されたシーケンスは、第3のバッファ335-cに記憶され、...グリッドマップのn番目のビューに対応するフレーム323nの復号されたシーケンスは、n番目のバッファ335-nに記憶される。所与の位置に対するVR環境への対応するビューの符号化されたフレームの1つ以上の復号されたシーケンスに基づいて、クライアントデバイスは、VR環境を見ているユーザに対応する最新の視点を生成するように構成される。
【0049】
1つの実施形態では、マスタノードはまた、複数のレンダリングノードの演算を同期させてもよく(例えば、同期パケットを通じて)、複数のレンダリングノードの各々は、グリッドマップの対応するビューに対してビデオフレームをレンダリングする。別の実装形態では、マスタノード及びレンダリングノードが通信のためにサーバラック370に配置されるとき、ラック内の通信経路の構成により、通信の同期と共にグリッドマップの各々の面に対するフレームのレンダリングを実現することができる。例えば、マスタノードによってプリミティブを複数のレンダリングノードの各々にブロードキャストすることによってなど(例えば、UDP、ユニティUDP、マルチキャストなど)、レンダリングノードの各々への通信が同時に達成される。更なる別の実施形態では、レンダリングノードにおけるタイムスタンプの適用を通じて同期を達成することができる。特に、レンダリングノードの各々は、フレームの対応するシーケンスのフレームにタイムスタンプまたはフレーム番号を付加するように構成される。タイムスタンプは、クライアントデバイスにおけるフレームの異なるシーケンスからのフレームの同期のために利用される。例えば、クライアントデバイスは、同一または同様のタイムスタンプを有するフレームのみを混合及び/または表示してもよい。
【0050】
図4は、本開示の1つの実施形態に従った、キューブマップの6個の面に対してビューを生成する6個のレンダリングノードと、ゲーミングアプリケーションのゲームロジックを実行し、レンダリングノードの同期を管理するためのマスタノードとを含む、複数のサーバ及び/または計算ノードを使用した、クラウドシステム114におけるVRコンテンツの生成を示すデータフローチャートである。実行エンジン(例えば、ゲーミングエンジン)300内で実装されるような分割階層グラフィックプロセッサシステムの構成は、マスタノード310及び複数のレンダリングノード320など、クラウドシステム(例えば、クラウドシステム114)上の複数のサーバ/計算ノードを含む。
【0051】
具体的には、図4は、グリッドマップに基づいてVRコンテンツのマルチサーバクラウドVRストリーミングを実行するように構成された、図3の汎用分割階層グラフィックプロセッサシステムの1つの実装形態である。特に、図4は、VRコンテンツのマルチサーバクラウドVRストリーミングを実行するために、6個の面を有するキューブマップ410に対してビューをレンダリングするように構成された分割階層グラフィックプロセッサシステムを示す。分割階層グラフィックプロセッサシステムは、前に説明されたように、マスタノード310及び複数のレンダリングノード320を含む。
【0052】
特に、マスタノード310は、前に説明されたように、ゲーミングアプリケーション及び/または対話型VRアプリケーションを実行するように構成される。例えば、マスタノード310は、ゲームロジック、アプリケーションロジックを実行させ、スクリプトを実行し、オブジェクトのシミュレーションを実行する(例えば、自然のまたはユーザによって定義された物理的法則のシミュレーションをオブジェクトに適用するように構成された物理シミュレーションモデラを実行する)、などである。概して、マスタノード310は、クライアントデバイス106からの入力に応答して、グラフィックパイプラインのCPU機能を実行して、対話型VRアプリケーションを実行するように構成される。マスタノードは、VR環境内のオブジェクトに対して複数のプリミティブを生成する。
【0053】
また、複数のレンダリングノード320は、VR環境内の位置から取り込まれたVR環境への複数のビューに対するプリミティブに基づいて、レンダリングを実行するように構成される。ビューは、キューブマップ410の各々の面に対応する。特に、各々のレンダリングノードは、ラスタライズ、フラグメントシェーディング、出力統合、フレームバッファリングなど、対応するビューに対してビデオフレームのシーケンスを生成するレンダリング演算を実行するように構成される。ビデオフレームのシーケンスは、クライアントデバイスにストリーミングされる。ストリーミングする前に、複数のレンダリングノード320の各々は、ネットワーク150を介してクライアント106にストリーミングされるように、通信の効率性のために、ビデオフレームのシーケンスを圧縮するよう、フレームのその対応するストリームを符号化する。
【0054】
クライアント106上で、デコーダ330は、符号化されたフレームのシーケンスのストリームを受信する。デコーダ330は、複数のレンダリングノード320から受信された符号化されたストリームを復号及びバッファリングする(バッファ335に記憶する)ように構成される。例えば、1つの実施形態では、デコーダは、複数のデコーダに分割される。1つの実装形態では、1つのデコーダは、1対1で対応するエンコーダから配信されるフレームを復号するよう割り当てられる。例えば、デコーダ330-1は、エンコーダ320-1と対にされ、デコーダ330-2は、エンコーダ320-2と対にされ、デコーダ330-3は、エンコーダ320-3と対にされ、デコーダ330-4は、エンコーダ320-4と対にされ、デコーダ330-5は、エンコーダ320-5と対にされ、デコーダ330-6は、エンコーダ320-6と対にされる。もちろん、他の実施形態では、1つのデコーダは、フレームの1つ以上の符号化されたシーケンスを復号することができる。
【0055】
特に、図4は、キューブマップの各々の面に対する符号化及び復号処理を示す。例えば、レンダリングノード320-1は、第1のビューを生成し、第1のビュー(例えば、上方ビュー410a)を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ330-1に第1のビューを符号化及びストリーミングし、レンダリングノード320-2は、第2のビューを生成し、第2のビュー(例えば、前方ビュー410b)を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ330-2に第2のビューを符号化及びストリーミングし、レンダリングノード320-3は、第3のビューを生成し、第3のビュー(例えば、左ビュー410c)を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ330-3に第3のビューを符号化及びストリーミングし、レンダリングノード320-4は、第4のビューを生成し、第4のビュー(例えば、下方ビュー410d)を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ330-4に第4のビューを符号化及びストリーミングし、レンダリングノード320-5は、第5のビューを生成し、第5のビュー(例えば、右ビュー410e)を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ330-5に第5のビューを符号化及びストリーミングし、レンダリングノード320-6は、第6のビューを生成し、第6のビュー(例えば、後方ビュー410f)を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ330-6に第6のビューを符号化及びストリーミングする。
【0056】
示されるように、キューブマップのビューの各々に対応するフレームの復号されたストリームは、1つ以上のバッファ335にバッファリングされる。ビューは、キューブマップビューア450によって呼び出されるときに表示する準備ができている。特に、キューブマップビューア450は、VR環境内の所与の位置に対してユーザの視点に対する最新のビューを生成するように構成される。最新のビューは、キューブマップのビューの符号化されたフレームの1つ以上の復号されたシーケンスに基づいている。例えば、例として、ユーザの視点は、左ビュー410c、前方ビュー410b、及び下方ビュー410dの一部分を含んでもよい。そのようにして、ユーザの最新のビューは、それらの3つのビューの組み合わせであり、キューブマップビューア450は、視点(POV)420を生成するよう、左ビュー、前方ビュー、及び下方ビューの組み合わせ、及び/または混合するように構成される。
【0057】
図5は、本開示の1つの実施形態に従った、レンダリングパイプライン500を実装するように構成された分割階層プロセッサシステムを示す。特に、分割階層プロセッサシステムは、クラウドシステムの複数のサーバ及び/または計算ノードにわたって実装され、CPU及び/またはGPUの機能を実行し、ゲーミングアプリケーション及び/またはVRアプリケーションに対してロジックを実行し、レンダリングを実行する。グリッドマップの面の各々に対する画像フレームは、前に説明されたように、独立してレンダリングされる。レンダリングパイプライン500において示される処理は、グリッドマップの面の1つのビューと関連して実行される。レンダリングパイプライン500は、前に説明されたように、HMD102、コンピュータ106、及びクラウドゲーミングサーバ114内で単独でまたは組み合わせで実装されてもよい。
【0058】
レンダリングパイプライン500は、3D(三次元)ポリゴンレンダリング処理を使用して画像をレンダリングする一般的処理の例示である。レンダリングされた画像に対するレンダリングパイプライン500は、画素の各々に対する対応する色情報をディスプレイ(例えば、HMD)に出力し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドーイングなど)を表すことができる。レンダリングパイプライン500は、図1A図1C及び図3図4に関連して前に説明されたように、クラウドシステムにおいて分割階層プロセッサシステム内で実装可能である。
【0059】
レンダリングパイプライン500は、オブジェクトアニメーションを実行するように構成され、マスタノード310において計算シェーダ506を含み、及びレンダリングノード320の1つを表すプログラム可能シェーダを含む。プログラム可能シェーダは、頂点データを処理することを含むレンダリングを行い、頂点をプリミティブ(例えば、ポリゴン)に組み立て、ディスプレイに対してプリミティブからフラグメントを生成するようラスタライズを実行し、次いで、各々のフラグメントに対して色及び奥行値を計算すると共に、画素ごとにフラグメントを混合して表示用のフレームバッファに記憶するように構成される。マスタノード310において計算シェーダ506によって実行される演算(例えば、アニメーションのための)は、CPUまたはGPUのいずれかにおいて実行されてもよいが、例示を目的として、CPUにおいて実行されると示される。レンダリングノード320としてプログラム可能シェーダによって実行される演算は、一般に、より良好な性能及び効率性のためにGPUにおける実行に対してより良好に適合される。
【0060】
示されるように、レンダリングパイプライン500は、3D環境内のオブジェクトに対応する入力ジオメトリ505を受信する。例えば、入力ジオメトリ505は、3Dゲーミング世界内の頂点、及び頂点の各々に対応する情報を含んでもよい。ゲーミング世界内の所与のオブジェクトは、頂点によって定義されるポリゴン(例えば、三角形)を使用して表されてもよく、対応するポリゴンの表面は次いで、最終的なエフェクト(例えば、色、テクスチャなど)を達成するよう、レンダリングパイプライン500の残りの部分を通じて(例えば、レンダリングノード320を通じて)処理される。頂点属性は、法線(例えば、どの方向が頂点に関して明るいか)、色(例えば、RGB-赤、緑、及び青の三色など)、並びにテクスチャ座標/マッピング情報を含んでもよい。例示を容易にするために、3Dゲーミング世界に対する入力ジオメトリは、マスタノード310の計算シェーダ506に入力されると示されるが、ジオメトリも区分化されてもよく、その結果、パーティクルシステムに対するジオメトリが計算シェーダに入力され、残りのジオメトリがレンダリングノード320としてプログラム可能シェーダの頂点シェーダ510に入力される。例えば、入力ジオメトリは、シェーダの間で共有することができる頂点バッファに入力されてもよい。
【0061】
特に、マスタノード310における計算シェーダ506は、オブジェクトに及ぼした力及び/またはオブジェクトによって印加された力(重力など外物理力など、及び移動を生じさせるオブジェクトの内力)に応じて、フレームからフレームにオブジェクトアニメーション/シミュレーションを実行する(オブジェクト及び/またはパーティクルの動きを計算するなど)。概して、第1のフレームから後続のフレームに、マスタノード310における計算シェーダ506は、オブジェクトをアニメ化し、またはオブジェクトに動きをもたらす演算を実行する。特に、レンダリングされた各々のフレームに対し、オブジェクトのアニメーションは、離散時間ステップにおいて(例えば、フレームごとに)更新される(例えば、位置、向き、速度など)。例えば、アニメーション/シミュレーションモジュール507は、オブジェクトにアニメーションまたは移動をもたらし(例えば、物理特性の適用を通じて)、特に、離散時間ステップにおいて(例えば、フレームごとに)移動をもたらす(例えば、オブジェクトのオブジェクト位置または頂点を更新することによって)ように構成される。CPUとしての役割を果たすマスタノード310における計算シェーダ506は次いで、レンダリングノード320によって実行されるポリゴン頂点に対する描画コマンドを発行する。
【0062】
計算シェーダ506の出力は、オブジェクトのプリミティブ(例えば、頂点、ポリゴンなど)を含んでもよい。GPU構成内で実装されるように、残りの構成要素(例えば、出力マージャ及びフレームバッファを含む、ラスタライザ、フラグメントシェーダ、及びレンダラ)はアイドル状態であり、その結果、計算シェーダ506の出力は次いで、レンダリングを含むより従来のGPU演算を実行するよう、配信され、及び/またはレンダリングノード320としてのプログラム可能シェーダと共有される。もちろん、CPUの実装形態では、マスタノード310は、計算シェーダ506及びオブジェクトシミュレーションモジュール507のみを含むよう簡易化されてもよい。
【0063】
特に、計算シェーダ506によって生成されたアニメーション結果は、頂点バッファに記憶されてもよく、頂点バッファは次いで、ポリゴン頂点をレンダリングする目的として、ディスプレイ(例えば、HMDの)上でのポリゴン頂点の投影及び投影されたポリゴンのテッセレーションを実行するように構成されたレンダリングノード320によってアクセスされる。すなわち、レンダリングノード320は、レンダリングするとき、3D仮想環境内のオブジェクトを構成するポリゴン及び/またはプリミティブを更に築き上げ、シーンに対する照明に応じた、ポリゴンに対する照明、シャドーイング、及びシェーディング計算を実行することを含むように構成されてもよい。
【0064】
具体的には、アニメ化されたオブジェクトは、レンダリングノード320によって実行された演算を使用して、フレームからフレームに描かれてもよい。特に、マスタノードの計算シェーダ506からのアニメーション結果は、頂点バッファに記憶され、頂点バッファは次いで、レンダリングノード320に入力される(例えば、頂点シェーダ510によってアクセスされるように)。頂点バッファ内の値は、グラフィックパイプライン500のステージの間で共有されてもよい。特に、頂点シェーダ510は、前に説明されたように、入力ジオメトリ505を直接受信し、及び計算シェーダ506から入力ジオメトリ505を受信し、3Dシーン内のオブジェクトを構成するポリゴンまたはプリミティブを構築する。頂点シェーダ510は更に、計算シェーダ506によって完了されない場合に、アニメ化されたオブジェクトに対してプリミティブを構築してもよい。すなわち、頂点シェーダ510は、ゲーミング世界内に配置されるように、プリミティブを使用してオブジェクトを築き上げてもよい。例えば、頂点シェーダ510は、シーンに対する照明に応じた、ポリゴンに対する照明及びシャドーイング計算を実行するように構成されてもよい。プリミティブは、頂点プロセッサ510によって出力され、グラフィックパイプライン500の次のステージに配信される。クリッピングなどの追加の演算も頂点プロセッサ510によって実行されてもよい(例えば、ゲーミング世界内の視認位置によって定義されるように、視認錐台から外側にあるプリミティブを識別及び無視する)。
【0065】
頂点プロセッサ510によって出力されたプリミティブは、ラスタライザ520にフィードされ、ラスタライザ520は、3Dゲーミング世界内の視認位置(例えば、カメラ位置、ユーザの目の位置など)によって定義される二次元(2D)画像平面にシーン内のオブジェクトを投影するように構成される。単純化したレベルにおいて、ラスタライザ520は、各々のプリミティブを検査し、どの画素が対応するプリミティブによって影響を与えられるかを判定する。特に、ラスタライザ520は、プリミティブを画素のサイズにされたフラグメントに区分化し、各々のフラグメントは、ディスプレイ内の画素及び/またはレンダリング視点(例えば、カメラビュー)と関連付けられた参照平面に対応する。すなわち、プリミティブのフラグメンテーションは、プリミティブを画素のサイズにされたフラグメントに分解するために使用されてもよく、各々のフラグメントは、ディスプレイ内の画素及び/またはレンダリング視点と関連付けられた参照平面に対応する。クリッピング(視認錐台から外側にあるフラグメントを識別及び無視する)並びに参照位置へのカリング(より近いオブジェクトによって閉塞されたフラグメントを無視する)などの追加の演算もラスタライザ520によって実行されてもよい。
【0066】
そのコアにおけるフラグメントプロセッサ530は、プリミティブの色及び輝度が利用可能な照明によりどのように変化するかを判定するよう、フラグメントに対してシェーディング演算を実行する。例えば、フラグメントプロセッサ530は、各々のフラグメントに対して奥行、色、法線、及びテクスチャ座標(例えば、テクスチャ詳細)を判定してもよく、更に、フラグメントに対して適切なレベルの光、暗がり、及び色を判定してもよい。特に、フラグメントプロセッサ530は、色及び他の属性(例えば、視認位置からの距離に対するz-奥行、透過性に対するα値)を含む、各々のフラグメントの特徴を計算する。加えて、フラグメントプロセッサ530は、対応するフラグメントに影響を与える利用可能な照明に基づいて、照明効果をフラグメントに適用する。更に、フラグメントプロセッサ530は、各々のフラグメントに対してシャドーイング効果を適用してもよい。フラグメントプロセッサ530の出力は、処理されたフラグメント(例えば、シャドーイングを含むためのテクスチャ及びシェーディング情報)を含み、レンダリングパイプライン500の次のステージに配信される。
【0067】
出力統合構成要素540は、各々の対応する画素に貢献し、及び/または影響を与えるフラグメントに応じて、各々の画素の特徴を計算する。すなわち、3Dゲーミング世界内の全てのプリミティブのフラグメントは、表示のために2D色画素に組み合わされる。例えば、対応する画素に対してテクスチャ及びシェーディング情報に貢献するフラグメントは、レンダリングパイプライン500における次のステージに配信される画素に対する最終的な色値を出力するよう組み合わされる。出力統合構成要素540は、フラグメントプロセッサ530から判定されたフラグメント及び/または画素の間の値の任意選択の混合を実行してもよい。すなわち、1つ以上のフラグメントは、画像を表示するとき、対応する画素の色に貢献することがあることに留意することが重要である。例えば、所与の画素に対し、3D仮想環境内の全てのプリミティブのフラグメントは、表示のために画素に組み合わされる。そのようにして、対応する画素に対する全体的なテクスチャ及びシェーディング情報は、画素に対する最終的な色値を出力するよう組み合わされる。
【0068】
各々の画素に対するそれらの色値は、フレームバッファ550に記憶されてもよく、フレームバッファ550は、フレームごとにシーンの対応する画像を表示するとき、対応する画素への従来のGPUパイプラインにおいて走査されてもよい。しかしながら、フレームのシーケンスをディスプレイに配信するのではなく、本発明の実施形態では、レンダリングノード320は、グリッドマップ(例えば、キューブマップ)の特定のビュー/面に対してフレームをレンダリングし、そのシーケンスを符号化し(例えば、エンコーダ335を通じて)、次いで、フレームの符号化されたシーケンスをクライアントデバイスにストリーミングするように構成される。そのレンダリングノードからのレンダリングされたフレームは、ユーザに対して表示された(例えば、HMDにおいて)最新の視点に寄与することも、しないこともある。しかしながら、グリッドマップの1つ以上のビューに対応するフレームの1つ以上のシーケンスに基づいて、クライアントデバイスのキューブマップビューア(図4を参照)を通じてなど、最新の視点が生成されてもよい。
【0069】
ゲーミングコンソール、HMD、及びクラウドゲーミングサーバの様々なモジュールの詳細な説明により、ここでは、本開示の1つの実施形態に従った、クラウドシステムの分割階層グラフィックプロセッサシステムを使用してグラフィック処理を実行する方法は、図6のフローチャート600に関連して説明される。前に説明されたように、フローチャート600は、CPU及び/またはGPUの機能を実行して、ゲーミングアプリケーション及び/または対話型VRアプリケーションに対してロジックを実行し、レンダリングを実行するよう、クラウドシステムの複数のサーバ及び/または計算ノードにわたって分割階層プロセッサシステムを実装することに関与する演算の処理及びデータフローを示す。特に、フローチャート600の方法は、図1図5のマスタノード310及び複数のレンダリングノード320によって少なくとも部分的に実行されてもよい。
【0070】
610において、方法は、ユーザのクライアントデバイスからの入力に応答して、クラウドシステムのマスタノードにおいてVRアプリケーションを実行して、VRアプリケーションのVR環境内の複数のオブジェクトに対して複数のプリミティブを生成することを含む。特に、マスタノードは、前に説明されたように、ゲーミングアプリケーション及び/または対話型VRアプリケーションを実行するように構成される。例えば、マスタノード310は、ゲームロジック及び/またはアプリケーションロジックを稼働させること、スクリプトを実行すること、オブジェクトのシミュレーションを実行すること(例えば、自然のもしくはユーザにより定義された物理的法則のシミュレーションをオブジェクトに適用するように構成された物理シミュレーションモデラを実行する)などを含む、クライアントデバイスからの入力に応答してCPU機能を実行するように構成される。マスタノードは、VR環境内のオブジェクトに対して複数のプリミティブを生成する。
【0071】
620において、方法は、VR環境内の位置から取り込まれたVR環境への複数のビューに対する複数のプリミティブに基づいて、複数のレンダリングノードにおいてフレームの複数のシーケンスをレンダリングすることを含む。例えば、複数のビューは、VR環境のグリッドマップの面に対応し、対応するフレームのシーケンスは、対応するビューと関連付けられる。特に、各々のレンダリングノードは、ラスタライズ、フラグメントシェーディング、出力統合、フレームバッファリングなど、対応するビューに対してビデオフレームのシーケンスを生成するレンダリング演算を実行するように構成される。
【0072】
更なる他の実施形態では、各々のノードは、特定の機能を実行するように構成される。例えば、グリッドマップの面のレンダリングを実行する代わりに、ノードは、集中的に計算する特定のコンピュータ機能性を実行するよう割り当てられる。専用ノードにおいてコンピュータ機能性を実行することによって、残りのノード(例えば、マスタノード)は、集中的に計算する機能性を実行するためにそのリソースを費やす必要なく、他の重要な機能性を自由に実行することができる。
【0073】
630において、方法は、複数のオブジェクトに対する入力ジオメトリをアセットライブラリに記憶することを含み、アセットライブラリ内の複数のオブジェクトは、マスタノード及び複数のレンダリングノードによってアクセス可能である。対応する入力ジオメトリによって表されるような複数のオブジェクトは、VR環境を構築するために使用される。入力ジオメトリ及び制御入力に基づいて、マスタノードは、オブジェクトシミュレーションを適用した後など、オブジェクトに対してプリミティブを生成する。レンダリングノードは、マスタノードからの出力(例えば、物理シミュレーションの適用の後のオブジェクトの動き)に基づいて、オブジェクト(入力ジオメトリによって表されるような)のレンダリングを実行する。1つの実施形態では、マスタノード及びレンダリングノードは、サーバラック内で構成され、そのようにして、マスタノードからのプリミティブをレンダリングノードの各々にブロードキャストすることによって、通信空間内で同期が達成される。
【0074】
640において、方法は、各々のレンダリングノードにおいて、フレームの対応するシーケンスを符号化することを含む。符号化は、ネットワークを介してクライアントデバイスにストリーミングされるように、通信の効率性のためにビデオフレームのシーケンスを圧縮するよう実行される。650において、符号化の後、方法は、各々のレンダリングノードからクライアントデバイスにフレームの対応するシーケンスをストリーミングすることを含み、フレームの各々の対応するシーケンスは、グリッドマップの面またはビューに対応する。クライアントデバイスは、符号化されたフレームのシーケンスの各々を復号し、呼び出されるときの表示のために、符号化されたフレームの復号されたシーケンスを複数のバッファに記憶するように構成される。加えて、クライアントデバイスは、VR環境のグリッドマップのビューの符号化されたフレームの1つ以上の復号されたシーケンスに基づいて、VR環境内の所与の位置において視点を生成するように構成される。
【0075】
図7は、本開示の様々な実施形態の態様を実行するために使用することができる実施例のデバイス700の構成要素を示す。特に、図7は、本開示の1つの実施形態に従った、CPU及び/またはGPUの機能を実行して、ゲーミングアプリケーション及び/または対話型VRアプリケーションに対してロジックを実行し、レンダリングを実行するよう、クラウドシステムの複数のサーバ及び/または計算ノードにわたって分割階層プロセッサシステムを実装するコンピュータシステムを示す。1つの実装形態では、図7は、クラウドシステムの複数のサーバ及び/または計算ノードにわたって分割階層プロセッサシステムを実装するために適切な例示的なハードウェアシステムを示す。他の実施形態では、コンピュータシステムは、クラウドサービス内で仮想マシン(VM)として実装されてもよい。例えば、クラウドサービスは、計算能力及び仮想記憶を提供するため、1つ以上のVMをサポートする仮想化層を含んでもよい。仮想化層は、仮想化空間の外側でアクセス可能な、下層のハードウェア及び物理データストレージを利用する。このブロック図は、開示の1つの実施形態を実施するのに適切な、デバイス700を示し、デバイス700は、サーバコンピュータ、仮想化コンピュータ、パーソナルコンピュータ、ビデオゲームコンソール、パーソナルデジタルアシスタント、または他のデジタルデバイスをであってよく、またそれらを組み込むことができてもよい。デバイス700は、ソフトウェアアプリケーション及び任意選択でオペレーティングシステムを稼働させる中央処理装置(CPU)702を含む。CPU702は、1つ以上の同種または異種の処理コアから構成されてもよい。例えば、CPU702は、1つ以上の処理コアを有する1つ以上の汎用マイクロプロセッサである。更なる実施形態は、前に説明されたように、メディア及び対話型エンターテインメントアプリケーション、またはディスプレイを視認しているユーザと関連して定義されたサッカードの間及び/もしくはサッカードの終了時のユーザの目(複数可)の凝視方向と関連付けられたディスプレイ上のランディングポイントの予測をもたらすように構成されたアプリケーションなど、高度に並列し、及び計算集中的なアプリケーションに特に適合したマイクロプロセッサアーキテクチャを有する1つ以上のCPUを使用して実装されてもよい。
【0076】
メモリ704は、CPU702による使用のためにアプリケーション及びデータを記憶する。ストレージ706は、アプリケーション及びデータに対する不揮発性ストレージ及び他のコンピュータ可読媒体を提供し、固定ディスクドライブ、取り外し可能ディスクドライブ、フラッシュメモリデバイス、及びCD-ROM、DVD-ROM、Blu-ray(登録商標)、HD-DVD、または他の光学記憶デバイス、ならびに信号伝送及び記憶媒体を含んでもよい。ユーザ入力デバイス708は、1人以上のユーザからのユーザ入力をデバイス700に通信し、ユーザ入力デバイス708の例は、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチルレコーダ/カメラもしくはビデオレコーダ/カメラ、ジェスチャを認識する追跡デバイス、及び/またはマイクロフォンを含んでもよい。ネットワークインタフェース714は、デバイス700が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にし、ローカルエリアネットワーク、及びインターネットなどのワイドエリアネットワークにわたる有線または無線通信を含んでもよい。音声プロセッサ712は、CPU702、メモリ704、及び/またはストレージ706によって提供される命令及び/またはデータから、アナログまたはデジタル音声出力を生成するように適合される。CPU702、メモリ704、データストレージ706、ユーザ入力デバイス708、ネットワークインタフェース710、及び音声プロセッサ712を含むデバイス700の構成要素は、1つ以上のデータバス722を介して接続される。
【0077】
グラフィックサブシステム714は更に、データバス722及びデバイス700の構成要素と接続される。グラフィックサブシステム714は、グラフィックプロセシングユニット(GPU)716及びグラフィックメモリ718を含む。グラフィックメモリ718は、出力画像の各々の画素に対する画素データを記憶するために使用される表示メモリ(例えばフレームバッファ)を含む。グラフィックメモリ718は、GPU716と同一のデバイスに統合されてもよく、GPU716と別個のデバイスとして接続されてもよく、及び/またはメモリ704内で実装されてもよい。画素データは、CPU702からグラフィックメモリ718に直接提供されてもよい。代わりに、CPU702は、所望の出力画像を定義するデータ及び/または命令をGPU716に提供し、データ及び/または命令をGPU716に提供し、GPU716は、そこから1つ以上の出力画像の画素データを生成する。所望の出力画像を定義するデータ及び/または命令は、メモリ704及び/またはグラフィックメモリ718に記憶されてもよい。1つの実施形態では、GPU716は、シーンに対するジオメトリ、照明、シェーディング、テクスチャリング、動き、及び/またはカメラパラメータを定義する命令及びデータから、出力画像の画素データを生成する3Dレンダリング能力を含む。GPU716は更に、シェーダプログラムを実行することが可能な1つ以上のプログラム可能実行ユニットを含んでもよい。
【0078】
グラフィックサブシステム714は、ディスプレイデバイス710に表示され、または投影システム740によって投影されるよう、グラフィックメモリ718から画像用の画素データを周期的に出力する。ディスプレイデバイス710は、CRT、LCD、プラズマ、及びOLEDディスプレイを含む、デバイス700からの信号に応答して、視覚情報を表示することが可能な任意のデバイスであってもよい。デバイス700は、ディスプレイデバイス710に、例えば、アナログ信号またはデジタル信号を提供することができる。
【0079】
図7に示されるように。デバイス700は、VRコンテンツのマルチサーバクラウドVRストリーミングを実行するための分割階層グラフィックプロセッサシステムを実装するように構成されてもよい。例えば、デバイス700は、クラウドシステム内で構成されてもよく、マスタノード310及び複数のレンダリングノード320を更に含む実行エンジン300(例えば、ゲーミングエンジン)を含む。マスタノード310は、シミュレーションを実行すること、スクリプトを稼働させること、レンダリングを実行するためにグラフィックエンジンに必要な入力(例えば、プリミティブ)を提供することなど、ゲーミング及び/または対話型VRアプリケーションを実行するときにCPU機能を実行するように構成される。複数のレンダリングノード320は、グリッドマップの各々の面に対してフレームのレンダリングを実行するように構成される。
【0080】
本明細書で説明される実施形態は、任意のタイプのクライアントデバイス上で実行されてもよいことが理解されるべきである。いくつかの実施形態では、クライアントデバイスは、ヘッドマウントディスプレイ(HMD)、または投影システムである。図8では、開示の実施形態に従った、ヘッドマウントディスプレイ102の構成要素を例示する図が示される。HMD102は、ユーザがディスプレイを視認していること、及び後の更新動作においてGPUに予測されるランディングポイントを提供することに関連して定義されるサッカードの間、及び/またはサッカードの終了時に、ユーザの目(複数可)の凝視方向と関連付けられたHMDのディスプレイ上のランディングポイントを予測するように構成されてもよい。
【0081】
ヘッドマウントディスプレイ102は、プログラム命令を実行するプロセッサ800を含む。メモリ802は、記憶を目的として設けられ、揮発性メモリ及び不揮発性メモリの両方を含んでもよい。ユーザが視認することができる視覚的インタフェースを提供するディスプレイ804が含まれる。ヘッドマウントディスプレイ102の電源として、バッテリ806が設けられる。動き検出モジュール808は、磁力計810A、加速度計812、及びジャイロスコープ814など、様々な種類の動き検知ハードウェアのいずれかを含んでもよい。
【0082】
加速度計は、加速度及び重力誘起反力を測定するデバイスである。様々な方向の加速の大きさ及び方向を検出するために、単軸モデル及び多軸モデルが利用可能である。加速度計を使用して、傾き、振動、及び衝撃が感知される。1つの実施形態では、3つの加速度計812は、2つの角度(世界空間ピッチ及び世界空間ロール)についての絶対基準を与える、重力の方向を提供するために使用される。
【0083】
磁力計は、ヘッドマウントディスプレイ付近の磁場の強度及び方向を測定する。1つの実施形態では、3つの磁力計810Aは、ヘッドマウントディスプレイ内で使用され、世界空間のヨー角度についての絶対基準を保証する。1つの実施形態では、磁力計は、±80マイクロステラの地磁場にわたるように設計される。磁気計は金属の影響を受け、実際のヨーに対して単調なヨー測定を提供する。磁場は環境内の金属により歪むことがあり、これによりヨー測定に歪みが生じる。必要に応じて、この歪みは、ジャイロスコープまたはカメラなどの他のセンサからの情報を使用して、較正することができる。1つの実施形態では、加速度計812は、ヘッドマウントディスプレイ102の傾斜及び方位角を取得するために、磁力計810Aと共に使用される。
【0084】
ジャイロスコープは、角運動量の原理に基づいて、配向を測定または維持するためのデバイスである。1つの実施形態では、3つのジャイロスコープ814は、慣性検知に基づいて、それぞれの軸(x、y、及びz)にわたる動きに関する情報を提供する。ジャイロスコープは、高速回転の検出に役立つ。しかしながら、ジャイロスコープは、絶対基準が存在しないと、時間の経過と共にドリフトすることがある。これは、周期的にジャイロスコープを再設定することを必要とし、再設定は、オブジェクトの視覚追跡、加速度計、磁力計などに基づいた位置/方位判定など、他の利用可能な情報を使用して行われてもよい。
【0085】
カメラ816は、実環境の画像及び画像ストリームを捕捉するために設けられる。後面カメラ(ユーザがヘッドマウントディスプレイ102のディスプレイを見ている時にユーザから離れる方向を向くカメラ)と、前面カメラ(ユーザがヘッドマウントディスプレイ102のディスプレイを見ている時にユーザ側を向くカメラ)とを含む複数のカメラが、ヘッドマウントディスプレイ102に含まれてもよい。加えて、実環境内のオブジェクトの奥行情報を検知するために、奥行カメラ818がヘッドマウントディスプレイ102に含まれてもよい。
【0086】
1つの実施形態では、HMDの前面に統合されたカメラは、安全に関する警告が提供するために使用されてもよい。例えば、ユーザが壁またはオブジェクトに接近している場合、ユーザに警告が与えられ得る。1つの実施形態では、室内の物理的オブジェクトの外観をユーザに提供して、ユーザにそれらの存在を警告することができる。外観は、例えば仮想環境におけるオーバーレイであってもよい。いくつかの実施形態では、例えば床にオーバーレイされた参照マーカのビューが、HMDユーザに提供されてもよい。例えば、マーカは、ユーザがゲームをプレイしている部屋の中心の場所の基準を、ユーザに提供してもよい。これは、例えば部屋の中の壁または他のオブジェクトに衝突しないようにユーザが移動すべき場所の視覚情報を、ユーザに提供してもよい。ユーザがHMDを装着してゲームをプレイする、またはHMDでコンテンツを操縦する時、安全性を高めるために、触覚的警告、及び/または音声警告も、ユーザに提供することができる。
【0087】
ヘッドマウントディスプレイ102は、音声出力を提供するスピーカ252を含む。また、周囲環境からの音、ユーザによって行われた発話などを含む実環境からの音声を捕捉するために、マイクロフォン251が含まれてもよい。ヘッドマウントディスプレイ102は、ユーザに触知フィードバックを提供する触知フィードバックモジュール281を含む。1つの実施形態では、触知フィードバックモジュール281は、触知フィードバックをユーザに提供するように、ヘッドマウントディスプレイ102の動き及び/または振動を引き起こすことが可能である。
【0088】
LED826は、ヘッドマウントディスプレイ102の状態の視覚的インジケータとして提供される。例えば、LEDは、バッテリレベル、電源オンなどを示してもよい。ヘッドマウントディスプレイ102がメモリカードからの情報を読み出し、メモリカードに情報を書き込むことを可能にするために、カードリーダ828が提供される。周辺デバイスの接続、または他のポータブルデバイス、コンピュータなどの他のデバイスへの接続を可能にするインタフェースの1つの実施例として、USBインタフェース830が含まれる。ヘッドマウントディスプレイ102の様々な実施形態では、ヘッドマウントディスプレイ102のより良い接続性を可能にするために、様々な種類のインタフェースのいずれかが含まれてもよい。
【0089】
無線ネットワーク技術を介してインターネットへの接続を可能にするために、Wi-Fiモジュール832が含まれる。また、ヘッドマウントディスプレイ102は、他のデバイスへの無線接続を可能にするために、Bluetoothモジュール834を含む。また、他のデバイスへの接続のために通信リンク836が含まれてもよい。1つの実施形態では、通信リンク836は、無線通信のために赤外線伝送を利用する。他の実施形態では、通信リンク836は、他のデバイスとの通信のために各種の無線または有線伝送プロトコルのいずれかを利用してもよい。
【0090】
入力ボタン/センサ838は、ユーザに入力インタフェースを提供するために含まれる。ボタン、タッチパッド、ジョイスティック、トラックボールなどの様々な種類の入力インタフェースのうちのいずれかが含まれてもよい。超音波技術を介した他のデバイスとの通信を促進するために、超音波通信モジュール840が、ヘッドマウントディスプレイ102に含まれてもよい。
【0091】
バイオセンサ842は、ユーザからの生理学的データの検出を可能にするために含まれる。1つの実施形態では、生体センサ842は、ユーザの皮膚を通してユーザの生体電気信号を検出するために、1つ以上の乾電極を含む。
【0092】
3次元の物理的環境に配置されたエミッタ(例えば赤外線基地局)からの信号に応答するために、光センサ844が含まれる。ゲームコンソールは、光センサ844及びエミッタからの情報を分析して、ヘッドマウントディスプレイ102に関連する位置及び向きの情報を判定する。
【0093】
更に、凝視追跡システム820が含まれ、これは、ユーザの凝視追跡を可能にするように構成される。例えば、システム820は、ユーザの目の画像を捕捉する凝視追跡カメラ(例えば、センサ)を含んでもよく、捕捉された画像は次いで、ユーザの凝視方向を判定するために分析される。1つの実施形態では、ユーザの凝視方向に関する情報は、ビデオレンダリングに影響を与えるように、及び/またはサッカード間またはサッカードの終了時にユーザの凝視が方向付けられる方へのディスプレイ上のランディングを予測するために使用されてもよい。また、例えば、中心窩レンダリングによるより詳細な高解像度、中心窩領域に表示されるパーティクルシステム効果の高解像度、中心窩領域の外側に表示されるパーティクルシステム効果の低解像度、またはユーザが見ている領域のより高速な更新を提供することにより、凝視方向のビデオレンダリングは、優先されてもよいまたは強調されてもよい。
【0094】
ヘッドマウントディスプレイ102の前述の構成要素は、ヘッドマウントディスプレイ102に含まれてもよい単なる例示的な構成要素として説明されている。本開示の様々な実施形態では、ヘッドマウントディスプレイ102は、上記の様々な構成要素の一部を含んでもよいし、または含まなくてもよい。本明細書で説明される本開示の態様を簡易にするために、ここでは記述されていないが当技術分野では既知の他の構成要素が、ヘッドマウントディスプレイ102の実施形態には更に含まれてもよい。
【0095】
本開示の様々な実施形態では、様々な対話型機能を提供するために、前述のヘッドマウントデバイスが、ディスプレイに表示される対話型アプリケーションと併せて利用されてもよいことが、当業者には理解されよう。本明細書で説明される例示的な実施形態は、限定としてではなく、単に実施例として提供される。
【0096】
現在の実施形態のゲームへのアクセス提供など、広範囲な地域にわたり配信されるアクセスサービスは、多くの場合、クラウドコンピューティングを使用することに留意されたい。クラウドコンピューティングは、動的に拡張縮小可能で多くの場合仮想化されたリソースがインターネットを介したサービスとして提供される、コンピューティング様式である。ユーザは、ユーザをサポートする「クラウド」の技術的インフラストラクチャのエキスパートである必要はない。クラウドコンピューティングは、Infrastructure as a Service(IaaS)、Platform as a Service(PaaS)、及びSoftware as a Service(SaaS)などの異なるサービスに分類することができる。クラウドコンピューティングサービスは、多くの場合、ビデオゲームなどの共通のアプリケーションを、ウェブブラウザからアクセスするオンラインで提供するが、ソフトウェア及びデータは、クラウド内のサーバに記憶される。クラウドという用語は、コンピュータネットワーク図におけるインターネットの描かれ方に基づいたインターネットの隠喩として使われ、複雑なインフラストラクチャを隠し持つことの抽象的概念である。
【0097】
ゲーム処理サーバ(GPS)(または単純に「ゲームサーバ」)は、ゲームクライアントにより、シングルプレイヤ及びマルチプレイヤのビデオゲームをプレイするために使用される。インターネット上でプレイされる大抵のビデオゲームは、ゲームサーバへの接続を介して作動する。通常、ゲームは、プレイヤからデータを収集し、収集したデータを他のプレイヤに配信する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホストする別個のサーバが必要となる。別の実施形態では、GPSは、プレイヤ及びそれぞれのゲームプレイデバイスの間の通信を確立し、集中型GPSに依存せずに情報を交換する。
【0098】
専用GPSは、クライアントとは無関係に稼働するサーバである。このようなサーバは、通常、データセンタに配置された専用ハードウェア上で稼働し、より多くの帯域幅及び専用処理能力を提供する。専用サーバは、大抵のPCベースマルチプレイヤゲームのゲームサーバをホストするのに、好ましい方法である。大規模なマルチプレイヤオンラインゲームは、ゲームタイトルを所有するソフトウェア会社が通常ホストする専用サーバ上で作動し、専用サーバがコンテンツを制御及び更新することを可能にする。
【0099】
ユーザは、少なくともCPU、ディスプレイ、及びI/Oを含むクライアントデバイスにより、リモートサービスにアクセスする。クライアントデバイスは、PC、携帯電話、ネットブック、PDAなどであってもよい。1つの実施形態では、ゲームサーバ上で実行されるネットワークは、クライアントによって使用されるデバイスのタイプを認識し、採用される通信方法を調整する。別の事例では、クライアントデバイスは、HTMLなどの標準的な通信方法を使用して、インターネットを介してゲームサーバ上のアプリケーションにアクセスする。
【0100】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な一般消費者向け電気製品、小型コンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成により実施されてもよい。本開示はまた、有線ベースネットワークまたは無線ネットワークを介してリンクされたリモート処理デバイスによりタスクが行われる分散型コンピューティング環境においても、実施することができる。
【0101】
所与のビデオゲームまたはゲームアプリケーションは、特定のプラットフォーム及び特定の関連コントローラデバイス用に開発されてもよいことを、理解されたい。しかしながら、このようなゲームが、本明細書において提示されるようなゲームクラウドシステムを介して利用可能となる場合、ユーザは、異なるコントローラデバイスでビデオゲームにアクセスすることができる。例えば、あるゲームは、ゲームコンソール及びその関連コントローラ用に開発された可能性があるが、ユーザは、キーボード及びマウスを利用してパーソナルコンピュータから、クラウドベースバージョンのゲームにアクセスすることができる。このようなシナリオでは、入力パラメータ設定により、ユーザが利用可能なコントローラデバイス(この事例ではキーボード及びマウス)により生成されてもよい入力から、ビデオゲームの実行で受入れ可能な入力へ、マッピングが定義されてもよい。
【0102】
別の実施例では、ユーザは、タブレットコンピューティングデバイス、タッチスクリーンスマートフォン、または他のタッチスクリーン駆動デバイスを介して、クラウドゲームシステムにアクセスすることができる。この場合、クライアントデバイス及びコントローラデバイスは、同一のデバイス内に共に統合され、検出されたタッチスクリーン入力/ジェスチャにより入力が提供される。このようなデバイスでは、入力パラメータ設定により、ビデオゲームのゲーム入力に対応する特定のタッチスクリーン入力が定義されてもよい。例えば、ユーザがタッチしてゲーム入力を生成することができるタッチスクリーン上の位置を示すために、ビデオゲームの実行中に、ボタン、方向パッド、または他の種類の入力要素が、表示またはオーバーレイされてもよい。特定の方向のスワイプまたは特定のタッチ動作などのジェスチャも、ゲーム入力として検出されてもよい。1つの実施形態では、タッチスクリーン上での制御操作にユーザを慣れさせるために、例えばビデオゲームのゲームプレイを始める前に、ゲームプレイのタッチスクリーンを介して入力を提供する方法を示すチュートリアルが、ユーザに提供されてもよい。
【0103】
いくつかの実施形態では、クライアントデバイスは、コントローラデバイスの接続ポイントとして機能する。すなわち、コントローラデバイスは、無線接続または有線接続を介してクライアントデバイスと通信し、コントローラデバイスからクライアントデバイスへ入力を送信する。今度はクライアントデバイスが、これらの入力を処理し、次いで入力データを、ネットワークを介して(例えばルータなどのローカルネットワークデバイスを介してアクセスされる)、クラウドゲームサーバへ送信してもよい。しかしながら、別の実施形態では、コントローラ自体が、このような入力をまずクライアントデバイスを通して通信する必要なく、ネットワークを介して入力を直接クラウドゲームサーバに通信する能力を有するネットワークデバイスであってもよい。例えば、コントローラは、ローカルネットワークデバイス(前述のルータなど)に接続して、クラウドゲームサーバとデータを送受信することができる。従って、クライアントデバイスは依然として、クラウドベースのビデオゲームからのビデオ出力を受信して、それをローカルディスプレイにレンダリングする必要はあるが、コントローラがクライアントデバイスを迂回して、ネットワークを介して直接クラウドゲームサーバに入力を送信することを可能にすることにより、入力待機時間が削減されてもよい。
【0104】
1つの実施形態では、ネットワーク化されたコントローラ及びクライアントデバイスは、特定の種類の入力を直接コントローラからクラウドゲームサーバへ、及び他の種類の入力をクライアントデバイスを介して送信するように構成することができる。例えば、コントローラ自体とは別の任意の追加のハードウェアまたは処理に依存しない検出による入力は、クライアントデバイスを迂回して、ネットワークを介して直接コントローラからクラウドゲームサーバへ送信することができる。このような入力には、ボタン入力、ジョイスティック入力、埋込型動作検出入力(例えば加速度計、磁力計、ジャイロスコープ)などが含まれてもよい。しかしながら、追加のハードウェアを利用する、またはクライアントデバイスによる処理を要する入力は、クライアントデバイスによりクラウドゲームサーバへ送信されてもよい。これには、クラウドゲームサーバへ送信する前にクライアントデバイスにより処理されてもよい、ゲーム環境から取り込まれたビデオまたは音声が含まれてもよい。更に、コントローラの位置及び動作を検出するために、コントローラの動作検出ハードウェアからの入力が、取り込まれたビデオと併せてクライアントデバイスにより処理され、処理された入力はその後、クライアントデバイスによりクラウドゲームサーバへ通信される。様々な実施形態によるコントローラデバイスも、クライアントデバイスから、または直接クラウドゲームサーバから、データ(例えばフィードバックデータ)を受信してもよいことを理解されたい。
【0105】
図9は、本開示の様々な実施形態従った、ゲームシステム900のブロック図である。ゲームシステム900は、ネットワーク915を介して1つ以上のクライアント910に対し、シングルプレイヤモードまたはマルチプレイヤモードなどで、ビデオストリームを提供するように構成される。ゲームシステム900は典型的には、ビデオサーバシステム920及び任意選択のゲームサーバ925を含む。ビデオサーバシステム920は、最小限のサービス品質で1つ以上のクライアント910にビデオストリームを提供するように構成される。例えば、ビデオサーバシステム920は、ビデオゲームの状態またはビデオゲーム内の視点を変更するゲームコマンドを受信し、この状態変更を反映させた更新済ビデオストリームを、最小の遅延時間でクライアント910に提供してもよい。ビデオサーバシステム920は、未だ定義されていないフォーマットを含む、多種多様な代替ビデオフォーマットでビデオストリームを提供するように構成されてもよい。更に、ビデオストリームは、多種多様なフレームレートでユーザに提示されるように構成されたビデオフレームを含んでもよい。通常のフレームレートは、毎秒30フレーム、毎秒80フレーム、及び毎秒820フレームである。しかしながら、本開示の代替的実施形態には、より高いまたはより低いフレームレートが含まれる。
【0106】
本明細書で個別に910A、910Bなどと称されるクライアント910には、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、ハンドヘルドゲームプレイデバイス及び/または同様のものが含まれてもよい。通常、クライアント910は、符号化された(すなわち圧縮された)ビデオストリームを受信し、ビデオストリームを復号化し、得られたビデオをユーザ、例えばゲームのプレイヤに提示するように構成される。符号化されたビデオストリームを受信し、及び/またはビデオストリームを復号化する処理は通常、クライアントの受信バッファに個々のビデオフレームを記憶することを含む。ビデオストリームは、クライアント910に統合されたディスプレイ、またはモニタもしくはテレビなどの別個のデバイス上で、ユーザに提示されてもよい。クライアント910は、任意選択で、2人以上のゲームプレイヤをサポートするように構成される。例えば、ゲームコンソールは、2人、3人、4人以上の同時プレイヤに対応するように構成されてもよい。これらのプレイヤのそれぞれは、別個のビデオストリームを受信してもよい、または単一のビデオストリームが、各プレイヤのために特別に生成された、例えば各プレイヤの視点に基づいて生成されたフレームの領域を含んでもよい。クライアント910は、任意選択で地理的に分散される。ゲームシステム900に含まれるクライアントの数は、1つまたは2つから、数千、数万、またはそれ以上まで、幅広く異なり得る。本明細書で使用される用語「ゲームプレイヤ」は、ゲームをプレイする人を指すために用いられ、用語「ゲームプレイデバイス」は、ゲームをプレイするのに使用されるデバイスを指すために用いられる。いくつかの実施形態では、ゲームプレイデバイスは、協働してユーザにゲーム体験を届ける複数のコンピューティングデバイスを指してもよい。例えば、ゲームコンソール及びHMDは、ビデオサーバシステム920と協働して、HMDを通して見るゲームを配信してもよい。1つの実施形態では、ゲームコンソールは、ビデオサーバシステム920からビデオストリームを受信し、ゲームコンソールは、レンダリングのためにHMDに対し、ビデオストリームまたはビデオストリームの更新を転送する。
【0107】
クライアント910は、ネットワーク915を介してビデオストリームを受信するように構成される。ネットワーク915は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、広域ネットワーク、及プライベートネットワーク及び/または同様のものを含む任意の種類の通信ネットワークであってもよい。典型的な実施形態では、ビデオストリームは、TCP/IPまたはUDP/IPなどの標準プロトコルを介して通信される。あるいは、ビデオストリームは、独自の規格を介して通信される。
【0108】
クライアント910の典型的な例には、プロセッサと、不揮発性メモリと、ディスプレイと、復号化ロジックと、ネットワーク通信機能と、入力デバイスとを備えるパーソナルコンピュータが挙げられる。復号化ロジックには、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体に記憶されたソフトウェアが含まれてもよい。ビデオストリームを復号化(及び符号化)するシステムは、当技術分野において周知のものであり、使用される特定の符号化方式に応じて異なる。
【0109】
クライアント910は、必須ではないが、受信したビデオを修正するように構成されたシステムを更に含んでもよい。例えば、クライアントは、1つのビデオをもう1つのビデオ上にオーバーレイする、ビデオを切り取る及び/または同様のことなど、更なるレンダリングを実行するように構成されてもよい。例えば、クライアント910は、Iフレーム、Pフレーム、及びBフレームなどの様々な種類のビデオフレームを受信し、これらのフレームを処理して、ユーザに表示するための画像にするように構成されてもよい。いくつかの実施形態では、クライアント910のメンバは、ビデオストリームに対する更なるレンダリング、シェーディング、3Dへの変換、または同様の動作を実行するように構成される。クライアント910のメンバは任意選択で、複数の音声ストリームまたはビデオストリームを受信するように構成される。クライアント910の入力デバイスには、例えば、片手用ゲームコントローラ、両手用ゲームコントローラ、ジェスチャ認識システム、凝視認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバックデバイス、動作及び/または位置感知デバイス、マウス、タッチスクリーン、ニューラルインタフェース、カメラ、開発中の入力デバイス、及び/または同様のものが含まれてもよい。
【0110】
クライアント910によって受信されたビデオストリーム(及び任意選択でオーディオストリーム)は、ビデオサーバシステム920によって生成され、提供される。本明細書の別の箇所で更に説明されるように、このビデオストリームは、ビデオフレームを含む(及び音声ストリームは音声フレームを含む)。ビデオフレームは、ユーザに表示される画像に有意義に寄与するように構成される(例えばビデオフレームは、好適なデータ構造の画素情報を含む)。本明細書で使用される用語「ビデオフレーム」は、ユーザに示される画像に寄与する、例えば作用するように構成された情報を主に含むフレームを指すために使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、「音声フレーム」にも適用することができる。
【0111】
クライアント910は、典型的には、ユーザからの入力を受信するように構成される。これらの入力は、ビデオゲームの状態を変化させる、あるいはゲームプレイに作用するように構成されたゲームコマンドを含んでもよい。ゲームコマンドは、入力デバイスを使用して受信することができ、及び/またはクライアント910上で実行されるコンピューティング命令により自動的に生成されてもよい。受信したゲームコマンドは、クライアント910からネットワーク915を介してビデオサーバシステム920及び/またはゲームサーバ925に通信される。例えば、いくつかの実施形態では、ゲームコマンドは、ビデオサーバシステム920を介してゲームサーバ925に通信される。いくつかの実施形態では、ゲームコマンドの別個のコピーは、クライアント910からゲームサーバ925及びビデオサーバシステム920に通信される。ゲームコマンドの通信は、任意選択でコマンドの識別に依存する。ゲームコマンドは、任意選択で、クライアント910Aに音声ストリームまたはビデオストリームを提供するために使用される経路または通信チャネルとは異なる経路または通信チャネルを介して、クライアント910Aから通信される。
【0112】
ゲームサーバ925は、任意選択で、ビデオサーバシステム920とは異なるエンティティによって運営される。例えば、ゲームサーバ925は、マルチプレイヤゲームのパブリッシャによって運営されてもよい。この例では、ビデオサーバシステム920は、任意選択で、ゲームサーバ925によってクライアントとして見られ、任意選択で、ゲームサーバ925の視点からは従来技術のゲームエンジンを実行する従来技術のクライアントであると見えるように構成される。ビデオサーバシステム920とゲームサーバ925との間の通信は、任意選択で、ネットワーク915を介して行われる。このように、ゲームサーバ925は、ゲームステート情報を複数のクライアントに送信する従来技術のマルチプレイヤゲームサーバとすることができ、この複数のクライアントのうちの1つがゲームサーバシステム920である。ビデオサーバシステム920は、ゲームサーバ925の複数のインスタンスと同時に通信するように構成されてもよい。例えば、ビデオサーバシステム920は、異なるユーザに複数の異なるビデオゲームを提供するように構成されてもよい。これらの異なるビデオゲームのそれぞれは、異なるゲームサーバ925によりサポートされてもよく、及び/または異なるエンティティにより発行されてもよい。いくつかの実施形態では、ビデオサーバシステム920の地理的に分散されたいくつかのインスタンスは、複数の異なるユーザにゲームビデオを提供するように構成される。ビデオサーバシステム920のこれらのインスタンスのそれぞれは、ゲームサーバ925の同一のインスタンスと通信してもよい。ビデオサーバシステム920と1つ以上のゲームサーバ925との間の通信は、任意選択で、専用の通信チャネルを介して行われる。例えば、ビデオサーバシステム920は、これらの2つのシステム間の通信に専用の高帯域幅チャネルを介してゲームサーバ925に接続されてもよい。
【0113】
ビデオサーバシステム920は、少なくともビデオソース930、I/Oデバイス945、プロセッサ950、及び非一時的ストレージ955を含む。ビデオサーバシステム920は、1つのコンピューティングデバイスを含んでもよく、または複数のコンピューティングデバイス間に分散されてもよい。これらのコンピューティングデバイスは任意選択で、ローカルエリアネットワークなどの通信システムを介して接続される。
【0114】
ビデオソース930は、例えばストリーミングビデオ、または動画を形成する一連のビデオフレームといった、ビデオストリームを提供するように構成される。いくつかの実施形態では、ビデオソース930は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤからゲームコマンドを受信し、受信したコマンドに基づいてビデオゲームの状態の複製を維持するように構成される。このゲーム状態は、ゲーム環境内のオブジェクトの位置、並びに通常は視点を含む。ゲーム状態はまた、オブジェクトの特性、画像、色、及び/またはテクスチャリングも含んでもよい。
【0115】
ゲーム状態は通常、ゲームルールと共に、移動、方向転換、攻撃、焦点の設定、対話、使用、及び/または同種のことのゲームコマンドに基づいて、維持される。ゲームエンジンの一部は任意選択で、ゲームサーバ925内に配置される。ゲームサーバ925は、地理的に分散されたクライアントを使用する複数のプレイヤから受信したゲームコマンドに基づき、ゲームのステートのコピーを維持してもよい。これらの場合、ゲームステートは、ゲームサーバ925によってビデオソース930に提供され、そこでゲームステートのコピーが記憶され、レンダリングが実行される。ゲームサーバ925は、ネットワーク915を介してクライアント910から直接ゲームコマンドを受信してもよく、及び/またはビデオサーバシステム920を介してゲームコマンドを受信してもよい。
【0116】
ビデオソース930は、典型的には、レンダリングロジック、例えば、ハードウェア、ファームウェア、及び/またはストレージ955などのコンピュータ可読媒体上に記憶されたソフトウェアなどを含む。このレンダリングロジックは、ゲーム状態に基づいて、ビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全てまたは一部は、任意選択で、グラフィック処理ユニット(GPU)内に配置される。レンダリングロジックは通常、ゲーム状態及び視点に基づいて、オブジェクト間の3次元空間的関係を判定し、及び/または好適なテクスチャリングなどを適用するように構成された処理段階を含む。レンダリングロジックは未処理ビデオを生成し、未処理ビデオは次いで、通常、クライアント910に通信する前に符号化される。例えば、未処理ビデオは、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フレームよりデータサイズが小さい。本明細書において使用される用語「フレームサイズ」は、フレーム内の画素数を指すことを意味する。用語「フレームデータサイズ」は、フレームを記憶するのに必要なバイト数を指すために使用される。
【0117】
他の実施形態では、ビデオソース930は、カメラなどのビデオ記録デバイスを含む。このカメラを使用して、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオが生成されてもよい。結果得られるビデオストリームには、レンダリングされた画像と、スチルカメラまたはビデオカメラを使用して記録された画像との両方が、任意選択で含まれる。ビデオソース930はまた、ビデオストリームに含めるために事前に記録したビデオを記憶するように構成されたストレージデバイスも含んでもよい。ビデオソース930はまた、例えば人といったオブジェクトの動作または位置を検出するように構成された動作または位置感知デバイスと、検出された動作及び/または位置に基づいてゲーム状態を判定し、またはビデオを生成するように構成されたロジックとを含んでもよい。
【0118】
ビデオソース930は、任意選択で、他のビデオ上に配置されるように構成されたオーバーレイを提供するように構成される。例えば、これらのオーバーレイには、コマンドインタフェース、ログイン指示、ゲームプレイヤへのメッセージ、他のゲームプレイヤの画像、他のゲームプレイヤのビデオフィード(例えばウェブカメラビデオ)が含まれてもよい。クライアント910Aがタッチスクリーンインタフェースまたは凝視検出インタフェースを含む実施形態では、オーバーレイには、仮想キーボード、ジョイスティック、タッチパッド及び/または同様のものが含まれてもよい。オーバーレイの1つの実施例では、プレイヤの声が音声ストリームにオーバーレイされる。ビデオソース930は任意選択で、1つ以上の音声源を更に含む。
【0119】
ビデオサーバシステム920が複数のプレイヤからの入力に基づいてゲーム状態を維持するように構成された実施形態では、ビューの位置及び方向を含む視点は、各プレイヤで異なり得る。ビデオソース930は、任意選択で、各プレイヤの視点に基づいて、別個のビデオストリームを各プレイヤに提供するように構成される。更に、ビデオソース930は、異なるフレームサイズ、フレームデータサイズ、及び/または符号化をクライアント910のそれぞれに提供するように構成されてもよい。ビデオソース930は、任意選択で、3Dビデオを提供するように構成される。
【0120】
I/Oデバイス945は、ビデオサーバシステム920が、ビデオ、コマンド、情報の要求、ゲームステート、凝視情報、デバイスの動き、デバイスの位置、ユーザの動き、クライアント識別子、プレイヤ識別子、ゲームコマンド、セキュリティ情報、オーディオ、及び/または同様のものなどの情報を送信及び/または受信するように構成される。I/Oデバイス945は通常、ネットワークカードまたはモデムなどの通信ハードウェアを含む。I/Oデバイス945は、ゲームサーバ925、ネットワーク915、及び/またはクライアント910と通信するように構成される。
【0121】
プロセッサ950は、本明細書で論述されるビデオサーバシステム920の様々な構成要素内に含まれるロジック、例えばソフトウェアを実行するように構成される。例えば、プロセッサ950は、ビデオソース930、ゲームサーバ925及び/またはクライアントクォリファイア960の機能を実行するためにソフトウェア命令を使用してプログラムされてもよい。ビデオサーバシステム920は、任意選択で、プロセッサ950の2つ以上のインスタンスを含む。プロセッサ950はまた、ビデオサーバシステム920が受信したコマンドを実行するように、または本明細書において論述されるゲームシステム900の様々な要素の動作を調整するように、ソフトウェア命令でプログラムされてもよい。プロセッサ950は、1つ以上のハードウェアデバイスを含んでもよい。プロセッサ950は、電子プロセッサである。
【0122】
ストレージ955は、非一時的なアナログ及び/またはデジタルストレージデバイスを含む。例えば、ストレージ955は、ビデオフレームを記憶するように構成されたアナログストレージデバイスを含んでもよい。ストレージ955は、例えばハードドライブ、光学ドライブ、またはソリッドステートストレージといったコンピュータ可読デジタルストレージを含んでもよい。ストレージ955は、ビデオフレーム、人工フレーム、ビデオフレームと人工フレームの両方を含むビデオストリーム、音声フレーム、及び/または音声ストリームなどを(例えば好適なデータ構造またはファイルシステムで)記憶するように構成される。ストレージ955は、任意選択で、複数のデバイス間に分散される。いくつかの実施形態では、ストレージ955は、本明細書の他の箇所で論じられるビデオソース930のソフトウェア構成要素を記憶するように構成される。これらの構成要素は、必要に応じてプロビジョニングできるように準備された形式で記憶されてもよい。
【0123】
ビデオサーバシステム920は、任意選択で、クライアントクォリファイア960を更に含む。クライアントクォリファイア960は、クライアント910Aまたは910Bなどのクライアントの能力をリモートで判定するように構成される。これらの能力は、クライアント910A自体の能力と、クライアント910Aとビデオサーバシステム920との間の1つ以上の通信チャネルの能力との両方を含むことができる。例えば、クライアントクォリファイア960は、ネットワーク915を介して通信チャネルをテストするように構成されてもよい。
【0124】
クライアントクォリファイア960は、クライアント910Aの能力を手動または自動で判定する(例えば、発見する)ことができる。手動判定は、クライアント910Aのユーザと通信して、ユーザに能力を提供するように依頼することを含む。例えば、いくつかの実施形態では、クライアントクォリファイア960は、クライアント910Aのブラウザ内に画像、テキスト、及び/または同様のものを表示するように構成される。1つの実施形態では、クライアント910Aは、ブラウザを含むHMDである。別の実施形態では、クライアント910Aは、HMD上に表示されてもよいブラウザを有するゲームコンソールである。表示されるオブジェクトは、ユーザに、クライアント910Aのオペレーティングシステム、プロセッサ、ビデオデコーダの種類、ネットワーク接続の種類、ディスプレイの解像度などの情報を入力するように要求する。ユーザによって入力された情報は、クライアントクォリファイア960に返信される。
【0125】
自動判定は、例えば、クライアント910A上のエージェントの実行によって、及び/またはクライアント910Aへのテストビデオの送信によって行われてもよい。エージェントは、ウェブページに埋め込まれた、またはアドオンとしてインストールされたジャバスクリプトなどのコンピューティング命令を含んでもよい。エージェントは、任意選択で、クライアントクォリファイア960により提供される。様々な実施形態では、エージェントは、クライアント910Aの処理電力、クライアント910Aの復号及び表示能力、クライアント910Aとビデオサーバシステム920との間の通信チャネルの遅延時間の信頼性及び帯域幅、クライアント910Aの表示方式、クライアント910A上に存在するファイアウォール、クライアント910Aのハードウェア、クライアント910A上で実行されるソフトウェア、クライアント910A内のレジストリエントリ、並びに/または同様のものを発見することができる。
【0126】
クライアントクォリファイア960は、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体上に記憶されたソフトウェアを含む。クライアントクォリファイア960は、任意選択で、ビデオサーバシステム920の1つ以上の他の要素とは別個のコンピューティングデバイス上に配置される。例えば、いくつかの実施形態では、クライアントクォリファイア960は、クライアント910とビデオサーバシステム920の2つ以上のインスタンスとの間の通信チャネルの特性を判定するように構成される。これらの実施形態では、クライアントクォリファイアによって見出された情報を使用して、ビデオサーバシステム920のどのインスタンスがクライアント910のうちの1つにストリーミングビデオを供給するのに最も適しているかを判定することができる。
【0127】
VRコンテンツのマルチサーバクラウドVRストリーミングを実行するための分割階層グラフィックプロセッサシステムを実装するために特定の実施形態が提供されてきたが、これらは、限定としてではなく例として説明されている。本開示を読んだ当業者は、本開示の趣旨及び範囲に含まれる追加の実施形態を実現するであろう。
【0128】
本明細書で定義される様々な実施形態は、本明細書で開示される様々な特徴を使用する特定の実施態様に組み合わされてもよい、または組み立てられ得ることを、理解されたい。従って、提供される実施例は、いくつかの可能な実施例にすぎず、様々な要素を組み合わせることでより多くの実施態様を定義することが可能な様々な実施態様に限定されない。いくつかの実施例では、いくつかの実施態様は、開示されたまたは同等の実施態様の趣旨から逸脱することなく、より少ない要素を含んでもよい。
【0129】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な一般消費者向け電気製品、小型コンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成により実施されてもよい。本開示の実施形態はまた、有線ベースまたは無線のネットワークを介してリンクされるリモート処理デバイスによりタスクが行われる分散型コンピューティング環境においても、実施することができる。
【0130】
前述の実施形態を念頭に置いて、本開示の実施形態は、コンピュータシステムに記憶されたデータを伴う様々なコンピュータ実施動作を用い得ることを、理解されたい。これらの動作は、物理量の物理的操作を要する動作である。本開示の実施形態の一部を形成する、本明細書で説明される動作のうちのいずれも、有用な機械動作である。開示の実施形態はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築されてもよい、または装置は、コンピュータに記憶されたコンピュータプログラムにより選択的に起動または構成される汎用コンピュータであってもよい。具体的には、様々な汎用機械を、本明細書の教示に従って書かれたコンピュータプログラムと共に使用することができる、あるいは、必要な動作を実行するためにより専門的な装置を構築するほうがより好都合である場合もある。
【0131】
本開示は、コンピュータ可読媒体上のコンピュータ可読コードとして具体化することもできる。コンピュータ可読媒体は、データを記憶することができ、その後コンピュータシステムによって読み取ることができる任意のデータ記憶デバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み取り専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、並びに他の光学式データ記憶デバイス及び非光学式データ記憶デバイスが含まれる。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で記憶及び実行されるように、ネットワーク接続されたコンピュータシステム上に分散されたコンピュータ可読有形媒体が含まれてもよい。
【0132】
方法動作は特定の順序で説明されたが、オーバーレイ動作の処理が所望の方法で実行される限り、動作間に他の維持管理動作が実行されてもよく、または動作がわずかに異なる時間に起こるように調整されてもよく、またはシステム内に動作を分散することで、様々な処理関連間隔で処理動作が起こることを可能にしてもよいことを、理解されたい。
【0133】
前述の開示は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。従って、本実施形態は、限定ではなく例示としてみなされるべきであり、本開示の実施形態は、本明細書に提供される詳細に限定されるものではなく、添付の特許請求の範囲内及び均等物内で変更されてもよい。
図1A
図1B
図1C
図2
図3
図4
図5
図6
図7
図8
図9