(57)【要約】分割階層グラフィックプロセッサシステムは、ネットワークを介して受信されたクライアントデバイスからの入力に応答して、仮想現実（ＶＲ）アプリケーションを実行し、ＶＲ環境内でプリミティブを生成するマスタノードを含む。グラフィックプロセッサシステムは、ＶＲ環境内の位置から取り込まれたＶＲ環境への複数のビューに対するプリミティブに基づいて、レンダリングを実行するレンダリングノードを含み、ビューは、ＶＲ環境のグリッドマップに対応する。レンダリングノードの各々は、クライアントデバイスへの対応するビューのフレームの対応するシーケンスをレンダリングし、符号化し、及びストリーミングする。プロセッサシステムは、ＶＲ環境を構築するために使用されるオブジェクトに対する入力ジオメトリを記憶するアセットライブラリを含み、アセットライブラリ内のオブジェクトは、マスタノード及び複数のレンダリングノードによってアクセス可能である。【選択図】図３
2021525911.tif 000002
【特許請求の範囲】
【請求項１】
クラウドシステムにおける分割階層グラフィックプロセッサシステムであって、
ネットワークを介して受信されたユーザのクライアントデバイスからの入力に応答して、仮想現実（ＶＲ）アプリケーションを実行し、ＶＲ環境内の複数のオブジェクトに対して複数のプリミティブを生成するマスタノードを有し、
前記ＶＲ環境内の位置から取り込まれた前記ＶＲ環境への複数のビューに対する前記複数のプリミティブに基づいて、レンダリングを実行する複数のレンダリングノードを有し、前記複数のビューは、前記ＶＲ環境のグリッドマップに対応し、前記レンダリングノードの各々は、前記クライアントデバイスへの対応するビューのフレームの対応するシーケンスをレンダリングし、符号化し、及びストリーミングするものであり、
前記ＶＲ環境を構築するために使用される前記複数のオブジェクトに対する入力ジオメトリを記憶するアセットライブラリを有し、前記アセットライブラリ内の前記複数のオブジェクトは、前記マスタノード及び前記複数のレンダリングノードによってアクセス可能である、分割階層グラフィックプロセッサシステム。
【請求項２】
ストリーミングされるフレームの前記対応するシーケンス内のフレームは各々、識別子と関連付けられ、フレームの１つ以上のシーケンス及び前記ＶＲ環境への視点に基づいて、前記ＶＲ環境の３Ｄビューとして復号され、及び組み立てられるように構成されている、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項３】
前記マスタノードは、前記複数のレンダリングノードの各々に前記複数のプリミティブを同時にブロードキャストするように構成されている、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項４】
前記グリッドマップは、前記複数のビューに対応する６個の面を含むキューブマップを含む、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項５】
各々のレンダリングノードは、前記グリッドマップの対応するビューを１対１の関係でのレンダリング専用となる、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項６】
前記マスタノードは、自然のまたは定義された物理的法則のシミュレーションを前記複数のオブジェクトに適用するための物理シミュレーションモデラを含む、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項７】
各々のレンダリングノードは、ラスタライズ、フラグメントシェーディング、出力統合、及びフレームバッファリングを実行するように構成されている、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項８】
前記クライアントデバイスは、前記複数のレンダリングノードから受信された前記符号化されたストリームを復号及びバッファリングするように構成された１つ以上のデコーダを含み、
前記クライアントデバイスは、前記ＶＲ環境へのビューの符号化されたフレームの１つ以上の復号されたシーケンスに基づいて、前記ＶＲ環境内の前記位置において視点を生成するように構成されている、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項９】
前記レンダリングノードの各々は、前記クライアントデバイスにおけるフレームの異なるシーケンスからのフレームの同期のために、フレームの対応するシーケンスのフレームにタイムスタンプまたはフレーム番号を付加するように構成されている、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項１０】
前記レンダリングノードの各々は、ＵＤＰブロードキャストにおいて、対応するビューのフレームの前記対応するシーケンスを前記クライアントデバイスにストリーミングする、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項１１】
前記レンダリングノードの各々は、フル解像度において前記対応するビューのフレームの前記対応するシーケンスを生成する、請求項１に記載の分割階層グラフィックプロセッサシステム。
【請求項１２】
クラウドシステムの分割階層グラフィックプロセッサシステムを使用してグラフィック処理を実行する方法であって、
クラウドシステムのマスタノードにおいて、ユーザのクライアントデバイスからの入力に応答して、仮想現実（ＶＲ）アプリケーションを実行し、前記ＶＲアプリケーションのＶＲ環境内の複数のオブジェクトに対して複数のプリミティブを生成し、
前記ＶＲ環境内の位置から取り込まれた前記ＶＲ環境への複数のビューに対する前記複数のプリミティブに基づいて、複数のレンダリングノードにおいてフレームの複数のシーケンスをレンダリングし、前記複数のビューは、前記ＶＲ環境のグリッドマップに対応し、フレームの対応するシーケンスは、対応するビューと関連付けられているものであり、
前記複数のオブジェクトに対する入力ジオメトリをアセットライブラリに記憶し、前記複数のオブジェクトは、前記ＶＲ環境を構築するために使用され、前記アセットライブラリ内の前記複数のオブジェクトは、前記マスタノード及び前記複数のレンダリングノードによってアクセス可能であり、
各々のレンダリングノードにおいてフレームの対応するシーケンスを符号化し、
各々のレンダリングノードから前記クライアントデバイスに、フレームの対応するシーケンスをストリーミングする、方法。
【請求項１３】
前記マスタノードから前記複数のレンダリングノードの各々に、前記複数のプリミティブを同時にブロードキャストする、請求項１２に記載の方法。
【請求項１４】
前記グリッドマップは、前記複数のビューに対応する６個の面を含むキューブマップを含み、
各々のレンダリングノードは、前記グリッドマップの対応するビューを１対１の関係でのレンダリング専用となる、請求項１２に記載の方法。
【請求項１５】
前記マスタノードにおいて、自然のまたは定義された物理的法則のシミュレーションを前記複数のオブジェクトに適用する物理シミュレーションを実行する、請求項１２に記載の方法。
【請求項１６】
対応するビューに対して各々のレンダリングノードにおいて、ラスタライズ、フラグメントシェーディング、出力統合、及びフレームバッファリングを実行する、請求項１２に記載の方法。
【請求項１７】
前記クライアントデバイスは、
前記符号化されたフレームのシーケンスの各々を復号し、
呼び出されたときの表示のために、前記符号化されたフレームの復号されたシーケンスを複数のバッファに記憶し、
前記ＶＲ環境へのビューの符号化されたフレームの１つ以上の復号されたシーケンスに基づいて、前記位置において視点を生成するように構成されている、請求項１２に記載の方法。
【請求項１８】
前記クライアントデバイスにおけるフレームの異なるシーケンスからのフレームの同期のために、フレームの対応するシーケンスのフレームにタイムスタンプまたはフレーム番号を付加する、請求項１２に記載の方法。
【請求項１９】
クラウドシステムの分割階層グラフィックプロセッサシステムを使用してグラフィック処理を実行するためのコンピュータプログラムを記憶した非一時的コンピュータ可読媒体であって、前記コンピュータ可読媒体は、
クラウドシステムのマスタノードにおいて、ユーザのクライアントデバイスからの入力に応答して、仮想現実（ＶＲ）アプリケーションを実行し、前記ＶＲアプリケーションのＶＲ環境内の複数のオブジェクトに対して複数のプリミティブを生成するためのプログラム命令を有し、
前記ＶＲ環境内の位置から取り込まれた前記ＶＲ環境への複数のビューに対する前記複数のプリミティブに基づいて、複数のレンダリングノードにおいてフレームの複数のシーケンスをレンダリングするためのプログラム命令を有し、前記複数のビューは、前記ＶＲ環境のグリッドマップに対応し、フレームの対応するシーケンスは、対応するビューと関連付けられたものであり、
前記複数のオブジェクトに対する入力ジオメトリをアセットライブラリに記憶するためのプログラム命令を有し、前記複数のオブジェクトは、前記ＶＲ環境を構築するために使用され、前記アセットライブラリ内の前記複数のオブジェクトは、前記マスタノード及び前記複数のレンダリングノードによってアクセス可能であり、
各々のレンダリングノードにおいてフレームの対応するシーケンスを符号化するためのプログラム命令を有し、
各々のレンダリングノードから、フレームの対応するシーケンスをストリーミングするためのプログラム命令を有する、コンピュータ可読媒体。
【請求項２０】
前記マスタノードから前記複数のレンダリングノードの各々に、前記複数のプリミティブを同時にブロードキャストするためのプログラム命令を更に有する、請求項１９に記載のコンピュータ可読媒体。
【請求項２１】
前記グリッドマップは、前記複数のビューに対応する６個の面を含むキューブマップを含み、
各々のレンダリングノードは、前記グリッドマップの対応するビューを１対１の関係でのレンダリング専用となる、請求項１９に記載のコンピュータ可読媒体。
【請求項２２】
前記マスタノードにおいて、自然のまたは定義された物理的法則のシミュレーションを前記複数のオブジェクトに適用する物理シミュレーションを実行するためのプログラム命令を更に備える、請求項１９に記載のコンピュータ可読媒体。
【請求項２３】
対応するビューに対して各々のレンダリングノードにおいて、ラスタライズ、フラグメントシェーディング、出力統合、及びフレームバッファリングを実行するためのプログラム命令を更に備える、請求項１９に記載のコンピュータ可読媒体。
【請求項２４】
前記クライアントデバイスは、
前記符号化されたフレームのシーケンスの各々を復号し、
呼び出されたときの表示のために、前記符号化されたフレームの復号されたシーケンスを複数のバッファに記憶し、
前記ＶＲ環境へのビューの符号化されたフレームの１つ以上の復号されたシーケンスに基づいて、前記位置において視点を生成するように構成されている、請求項１９に記載のコンピュータ可読媒体。
【請求項２５】
前記クライアントデバイスにおけるフレームの異なるシーケンスからのフレームの同期のために、フレームの対応するシーケンスのフレームにタイムスタンプまたはフレーム番号を付加するためのプログラム命令を更に有する、請求項１９に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータ生成画像に関し、特に、コンピュータ生成グラフィックのリアルタイムなレンダリングに関する。
【背景技術】
【０００２】
レンダリングパイプラインにおける仮想現実（ＶＲ）シーンのコンピュータレンダリングは、中央処理装置（ＣＰＵ）及びグラフィックプロセシングユニット（ＧＰＵ）リソースを必要とする。ＶＲシーンは、広範囲な視覚範囲にわたってレンダリングされることがあるが、その視覚範囲のわずかな部分のみが表示される。加えて、ＶＲシーンは、従来のシーンよりも複雑になることがあり、また、ユーザによるモーションシックネス（ＶＲ酔い、ゲーム酔い、あるいは乗物酔い）を回避するために、画像処理に対して、一層高いフレームレートを必要とすることがある。
【０００３】
ＶＲシーンは、例えば、キューブの面上の所与の位置からＶＲシーンを投影するために使用されるキューブマップとして生成されることがある。キューブは、そこからビューが生成される位置を取り囲む。特に、キューブマップの各々の面は、ＶＲ環境内のその位置についての対応するビューに対してＶＲシーンをレンダリングすることによって生成される。キューブマップビューアは、ＶＲ環境への所与のビューポイントに対して１つ以上のビューを混合する。
【０００４】
典型的には、ＣＰＵ及びＧＰＵの両方を含む単一のコンピューティングリソースは、キューブマップに対してビューのレンダリングを実行するために使用される。しかしながら、コンピューティングリソースは、ユーザにおいてモーションシックネスを生じさせることなくＶＲシーンを処理可能とするためには、処理電力の点で何らかのコスト節約手段を実装することが必要となる場合がある。例えば、ＶＲ環境へのユーザのビューポイントの生成に用いられないキューブマップのビューは、ビューポイントの生成に用いられるそれらのビューよりも低解像度で生成され得る。すなわち、ユーザがＶＲ環境への２８０〜４０度（前方の）の範囲の間で（例えば、キャラクタの位置に対応する）視認している場合、次いで、１８０度（後方の）に対応するキューブマップビューは、低解像度においてレンダリングされる。しかしながら、ユーザがＶＲ環境の他の領域を視認するために物理的に頭の向きを変えるとき（例えば、１８０度に向かって後方に回転させる）、ヘッドマウントディスプレイ（ＨＭＤ）上で表示されるビューは、高解像度画像から生成される。その場合、ユーザは、高解像度のビューから、より低解像度のビューに移るときにモーションシックネスの影響を大きく受けることがある。
【０００５】
本開示の実施形態はこのような背景の下になされたものである。
【発明の概要】
【０００６】
本開示の実施形態は、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するためのクラウドシステムにおいて実装された分割階層グラフィックプロセッサシステムに関する。例えば、分割階層グラフィックプロセッサシステムは、別個のレンダリングノード／サーバ上でグリッドマップの各々の面の生成を通じて実装されるように、ＶＲコンテンツのストリーミングを実行するように構成され、レンダリングノードは、アプリケーションロジックを実行する（例えば、ゲーミングアプリケーションを実行する）マスタノードによって制御される。いくつかの本開示の発明的実施形態が以下で説明される。
【０００７】
１つの実施形態では、クラウドシステムにおいて実装された分割階層グラフィックプロセッサシステムは、ネットワークを介して受信されたユーザのクライアントデバイスからの入力に応答して、仮想現実（ＶＲ）アプリケーションを実行し、ＶＲ環境内の複数のオブジェクトに対して複数のプリミティブを生成するマスタノードを含む。グラフィックプロセッサシステムは、ＶＲ環境内の位置から取り込まれたＶＲ環境への複数のビューに対する複数のプリミティブに基づいて、レンダリングを実行する複数のレンダリングノードを含み、複数のビューは、ＶＲ環境のグリッドマップに対応し、レンダリングノードの各々は、クライアントデバイスへの対応するビューのフレームの対応するシーケンスをレンダリングし、符号化し、及びストリーミングする。グラフィックプロセッサシステムは、ＶＲ環境を構築するために使用される複数のオブジェクトに対する入力ジオメトリを記憶するアセットライブラリを含み、アセットライブラリ内の複数のオブジェクトは、マスタノード及び複数のレンダリングノードによってアクセス可能である。
【０００８】
１つの実施形態では、クラウドシステムの分割階層グラフィックプロセッサシステムを使用してグラフィック処理を実行する方法が開示される。方法は、クラウドシステムのマスタノードにおいて、ユーザのクライアントデバイスからの入力に応答して、仮想現実（ＶＲ）アプリケーションを実行し、ＶＲアプリケーションのＶＲ環境内の複数のオブジェクトに対して複数のプリミティブを生成することを含む。方法は、ＶＲ環境内の位置から取り込まれたＶＲ環境への複数のビューに対する複数のプリミティブに基づいて、複数のレンダリングノードにおいてフレームの複数のシーケンスをレンダリングすることを含み、複数のビューは、ＶＲ環境のグリッドマップに対応し、フレームの対応するシーケンスは、対応するビューと関連付けられている。方法は、複数のオブジェクトに対する入力ジオメトリをアセットライブラリに記憶することを含み、複数のオブジェクトは、ＶＲ環境を構築するために使用され、アセットライブラリ内の複数のオブジェクトは、マスタノード及び複数のレンダリングノードによってアクセス可能である。方法は、各々のレンダリングノードにおいてフレームの対応するシーケンスを符号化することを含む。方法は、各々のレンダリングノードからクライアントデバイスに、フレームの対応するシーケンスをストリーミングすることを含む。
【０００９】
別の実施形態では、非一時的コンピュータ可読媒体は、クラウドシステムの分割階層グラフィックプロセッサシステムを使用してグラフィック処理を実行するためのコンピュータプログラムを記憶している。コンピュータ可読媒体は、クラウドシステムのマスタノードにおいて、ユーザのクライアントデバイスからの入力に応答して、仮想現実（ＶＲ）アプリケーションを実行し、ＶＲアプリケーションのＶＲ環境内の複数のオブジェクトに対して複数のプリミティブを生成するためのプログラム命令を含む。コンピュータ可読媒体は、ＶＲ環境内の位置から取り込まれたＶＲ環境への複数のビューに対する複数のプリミティブに基づいて、複数のレンダリングノードにおいてフレームの複数のシーケンスをレンダリングするためのプログラム命令を含み、複数のビューは、ＶＲ環境のグリッドマップに対応し、フレームの対応するシーケンスは、対応するビューと関連付けられている。コンピュータ可読媒体は、複数のオブジェクトに対する入力ジオメトリをアセットライブラリに記憶するためのプログラム命令を含み、複数のオブジェクトは、ＶＲ環境を構築するために使用され、アセットライブラリ内の複数のオブジェクトは、マスタノード及び複数のレンダリングノードによってアクセス可能である。コンピュータ可読媒体は、各々のレンダリングノードにおいてフレームの対応するシーケンスを符号化するためのプログラム命令を含む。コンピュータ可読媒体は、各々のレンダリングノードから、フレームの対応するシーケンスをストリーミングするためのプログラム命令を含む。
【００１０】
本開示の他の態様は、本開示の原理を例として示す、添付図面を併用して以下の詳細な説明から明らかになるであろう。
【００１１】
添付図面を併用して以下の説明を参照することによって、開示を最良に理解することができる。
【図面の簡単な説明】
【００１２】
【図１Ａ】本開示の１つの実施形態に従った、クラウドシステムの複数のサーバ及び／または計算ノードを使用して生成されるＶＲコンテンツを対話型の経験（あるいはインタラクティブな経験）に提供するように構成されたシステムを示し、いくつかの入力制御がハンドヘルドコントローラを介して提供されてもよく、いくつかの入力制御がカメラを通じて実装されるように、身体部分の追跡を通じて管理されてもよい。
【図１Ｂ】本開示の１つの実施形態に従った、クラウドシステムの複数のサーバ及び／または計算ノードを使用して生成されるＶＲコンテンツを対話型の経験に提供するように構成されたシステムを示し、編集するためのいくつかの入力制御がハンドヘルドコントローラを介して提供されてもよく、いくつかの入力制御がカメラを通じて実装されるように、身体部分の追跡を通じて管理されてもよく、カメラは、また、ＨＭＤにデータを送信するＲＦエミッタのビーム追跡を目的として、ＨＭＤの移動を追跡する。
【図１Ｃ】本開示の１つの実施形態に従った、クラウドシステムの複数のサーバ及び／または計算ノードを使用して生成されるＶＲコンテンツを対話型の経験に提供するように構成されたシステムを示し、編集するためのいくつかの入力制御がハンドヘルドコントローラを介して提供されてもよく、いくつかの入力制御が磁気源を介して部分的に実装されるように、身体部分の磁気追跡を介して管理されてもよい。
【図２】開示の実施形態に従った、ビデオゲームを実行し、クラウドシステムの複数のサーバ及び／または計算ノードを使用して生成されるＶＲコンテンツを表示することと連動したＨＭＤの機能を概念的に示す。
【図３】本開示の１つの実施形態に従った、分割階層グラフィックプロセッサシステムを実装するためにクラウドシステムの複数のサーバ及び／または計算ノードを使用した、クラウドシステムにおけるＶＲコンテンツの生成を示すデータフローチャートである。
【図４】本開示の１つの実施形態に従った、キューブマップの６個の面に対してビューを生成する６個のレンダリングノードと、ゲーミングアプリケーションのロジックを実行し、レンダリングノードの同期を管理するためのマスタノードとを含む、クラウドシステムの複数のサーバ及び／または計算ノード使用した、クラウドシステムにおけるＶＲコンテンツの生成を示すデータフローチャートである。
【図５】本開示の１つの実施形態に従った、グラフィックパイプラインを実装するように構成された分割階層プロセッサシステムを示し、分割階層は、中央処理装置（ＣＰＵ）及び／またはグラフィックプロセシングユニット（ＧＰＵ）の機能を実行して、ゲームロジックを実行し、グリッドマップの面の各々に対して画像フレームを独立してレンダリングするよう、クラウドシステムの複数のサーバ及び／または計算ノードにわたって実装される。
【図６】本開示の１つの実施形態に従った、クラウドシステムの複数のサーバ及び／または計算ノードを使用してグラフィックパイプラインを実装する方法におけるステップを示すフローチャートである。
【図７】本開示の１つの実施形態に従った、クラウドシステムの複数のサーバ及び／または計算ノードを使用してグラフィックパイプラインを実装するコンピュータシステム、ハイパーバイザシステムを示す。
【図８】開示の実施形態に従った、本開示の様々な実施形態の態様を実行するために使用することができる実施例のデバイスの構成要素を示す。
【図９】開示の様々な実施形態に従った、ゲームシステムのブロック図である。
【発明を実施するための形態】
【００１３】
以下の詳細な説明は、例示を目的として多くの特定の詳細を包含するが、当業者は、以下の詳細への多くの変形及び変更が本開示の範囲内にあることを認識するであろう。したがって、以下で説明される本開示の態様は、この説明に続く特許請求の範囲への一般性を失うことなく、また限定を課すことなく示される。
【００１４】
概して、本開示の様々な実施形態は、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するための、クラウドシステムにおいて実装された分割階層グラフィックプロセッサシステムについてのシステム及び方法を説明する。例えば、分割階層グラフィックプロセッサシステムは、別個のレンダリングノード／サーバ上でのグリッドマップの各々の面の生成を通じて実装されるように、ＶＲコンテンツのストリーミングを実行するように構成される。特に、分割階層グラフィックプロセッサシステムは、クラウドシステム上で複数のサーバ／計算ノードを含む。例えば、マスタノードは、ゲームロジックを稼働させるように構成される。マスタノードはまた、複数のレンダリングノードの演算を同期してもよく（例えば、同期パケットを通じて）、複数のレンダリングノードの各々は、グリッドマップの対応するビューに対してビデオフレームをレンダリングする。１つの実装形態では、マスタノード及びレンダリングノードは、通信を目的として、サーバラックに配置される。加えて、マルチサーバシステムが１つのラック内で実装されることを理由に、同期は、レンダリングノードの間に内在する。従来のＶＲシステムは、処理電力がグラフィック処理及び／またはレンダリングの全てを実行する単一のハードウェアシステムに制限されることを理由に、ＶＲシーンの全ての角度を処理するために、解像度品質を犠牲にする必要がある（例えば、グリッドマップの視認されていない面を、相対的に低い解像度でレンダリングする）。すなわち、ユーザが従来のシステムを使用して空間内でＨＭＤを回転させるにつれて、ディスプレイは、低解像度と高解像度との間で切り替えるビューを表示しており、それによって、ユーザにおいてモーションシックネスを生じさせる。一方、本開示の実施形態は、ユーザのＶＲ環境への最新のビューポイントを生成するためにどのビューが使用されるかに関わらず、最高解像度におけるグリッドマップの各々の面のビューの生成をもたらす。すなわち、本開示の実施形態は、分割アーキテクチャがグラフィックパイプラインを実装することに起因して、クラウドシステムにおいて実行エンジン（例えば、ゲーミング及び／または対話型ＶＲアプリケーションを実行する）に追加のＣＰＵ及び／またはＧＰＵリソースを与えることができる。グリッドマップの面に対応する全てのビューの最高解像度におけるレンダリングを少なくとももたらすようＣＰＵ及び／またはＧＰＵリソースが増大することにより、１つの利点は、ユーザのモーションシックネスを減少させることを含む。例えば、ユーザに提示される画像は、特に、ユーザがＶＲ環境の異なるビューを視認するために空間内でＨＭＤを回転させるにつれて、高解像度にあるままであり、その結果、低解像度及び高解像度のビューの間で切り替えが存在しない。本開示のいくつかの発明的実施形態が以下で説明される。
【００１５】
以下、様々な実施形態の上記全体的な理解により、実施形態の実施例の詳細を様々な図面を参照して説明する。
【００１６】
明細書全体を通じて、「ゲーミングアプリケーション」とは、入力コマンドの実行を通じて命令されるいずれかのタイプの対話型アプリケーション（インタラクティブアプリケーション）を表すことを意味する。例示のみを目的として、対話型アプリケーションは、ゲーミング、文書処理、ビデオゲーム処理などのためのアプリケーションを含む。更に、ビデオゲーム及びゲーミングアプリケーションという用語は、交換可能である。
【００１７】
図１Ａは、開示の実施形態に従った、ＶＲシーンまたは環境（例えば、ゲーミングアプリケーションの対話型ゲームプレイ）とのユーザ対話をもたらすシステムを示す。ＨＭＤ１０２を装着したユーザ１００が示され、ＨＭＤ１０２は、眼鏡、ゴーグル、またはヘルメットと同様の形式で装着され、対話型ゲーミングアプリケーションからのビデオゲームまたは対話型アプリケーションからの他のコンテンツをユーザ１００に表示するように構成される。ＨＭＤ１０２は、ユーザの目に近接して、表示機構を提供することにより、ユーザに非常に没入感のある体験をもたらす。よって、ＨＭＤ１０２は、ユーザの視野の大部分または全体でさえも占有するユーザの目の各々に表示領域をもたらすことができる。
【００１８】
１つの実施形態では、ＨＭＤ１０２は、コンピュータまたはゲームコンソール１０６に接続されてもよい。コンピュータ１０６への接続は、有線または無線であってもよい。いくつかの実装形態では、ＨＭＤ１０２はまた、ＨＭＤ１０２及びコンピュータ１０６の両方が接続されるネットワーク１１２を介してなど、代替的な機構またはチャネルを通じてコンピュータを通信してもよい。コンピュータ１０６は、それらに限定されないが、ゲーミングコンソール、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、モバイルデバイス、携帯電話、タブレット、シンクライアント、セットトップボックス、メディアストリーミングデバイスなどを含む、本分野において既知のいずれかの汎用または特殊目的コンピュータであってもよい。１つの実施形態では、コンピュータ１０６は、ゲーミングアプリケーション及び／または対話型ＶＲアプリケーションを実行し、ＨＭＤ１０２によるレンダリングのためにゲーミングまたはＶＲアプリケーションからビデオ及び音声を出力するように構成されてもよい。コンピュータ１０６は、ゲーミングアプリケーションを実行することに制限されないが、ＨＭＤ１０２によるレンダリングのためにＶＲコンテンツ１９１を出力する、対話型アプリケーションを実行するようにも構成されてもよい。
【００１９】
別の実施形態では、コンピュータ１０６は、ネットワークを通じたクラウドシステム１１４またはバックエンドサーバシステムとの通信において、シンクライアントとして機能する。そのようにして、クラウドシステム１１４は、ユーザ１０２によってプレイされるゲーミングアプリケーション及び／または対話型ＶＲアプリケーションを維持及び実行する。ローカルコンピュータ１０６は、ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８からクラウドシステム１１４に入力を送信し、クラウドシステム１１４は入力を処理して、実行しているゲーミング及び／またはＶＲアプリケーションのゲーム状態に影響を与える。ビデオデータ、音声データ、及び触覚フィードバックデータなど、実行しているアプリケーションからの出力は、コンピュータ１０６に送信される。コンピュータ１０６は更に、送信の前にデータを処理してもよく、または関連するデバイスにデータを直接送信してもよい。例えば、ビデオ及び音声ストリームは、ＨＭＤ１０２に提供されるのに対し、触覚フィードバックデータは、コントローラ１０４に提供される、振動フィードバックコマンドを生成するために使用される。
【００２０】
１つの実施形態では、クラウドシステムは、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミング実行するための分割階層グラフィックプロセッサシステムを実装するように構成される。例えば、クラウドシステム１１４は、マスタノード３１０及び複数のレンダリングノード３２０を含む実行エンジン３００（例えば、ゲーミングエンジン）を含む。マスタノード３１０は、ゲーミング及び／または対話型ＶＲアプリケーションを実行するとき、シミュレーションを実行すること、スクリプトを稼働させること、及びレンダリングを実行するために必要な入力（例えば、プリミティブ）をグラフィックエンジンに提供することなど、ＣＰＵ機能を実行するように構成される。マスタノード３１０はまた、レンダリングノードの同期を実行してもよい。複数のレンダリングノード３２０は、グリッドマップの各々の面に対してフレームのレンダリングを実行するように構成される。例えば、６個の面を有するキューブマップに対し、６個のレンダリングノードは、キューブマップ面の各々に対してビューを生成するために使用され、各々のレンダリングノードは、キューブマップの対応するビューに対して画像及び／またはビデオフレームを生成する。
【００２１】
ユーザ１００は、ゲーミング及び／または対話型ＶＲアプリケーションに対して入力を提供するようコントローラ１０４を動作させてもよい。コンピュータ１０６への接続は、有線または無線であってもよい。加えて、カメラ１０８は、ユーザ１００が位置する対話型環境の１つ以上の画像を捕捉するように構成されてもよい。それらの捕捉された画像は、ユーザ１００、ユーザの一部（例えば、入力コマンドについてのハンドジェスチャを追跡する）、ＨＭＤ１０２、及びコントローラ１０４の位置及び移動を判定するよう分析されてもよい。１つの実施形態では、コントローラ１０４は、その位置及び方位を判定するために追跡することができる、ライトまたは他のマーカ要素を含む。加えて、ＨＭＤ１０２は、ＨＭＤ１０２の位置及び方位を判定するために追跡することができる１つ以上のライトを含んでもよい。カメラ１０８によって部分的に実装されるような追跡機能性は、コントローラ１０４及び／またはユーザ１００の身体部分（例えば、手）の移動を通じて生成される入力コマンドをもたらす。カメラ１０８は、対話型環境からのサウンドを捕捉する１つ以上のマイクロフォンを含んでもよい。マイクロフォンアレイによって捕捉されたサウンドは、サウンド源の位置を識別するよう処理されてもよい。識別された位置からのサウンドは、識別された位置からでない他のサウンドを排除するために選択的に利用または処理されてもよい。更に、カメラ１０８は、複数の画像捕捉デバイス（例えば、カメラの双眼写真）、ＩＲカメラ、奥行カメラ、及びそれらの組み合わせを含むように定義されてもよい。
【００２２】
１つの実施形態では、ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８はそれ自体、クラウドシステム１１４と通信するようネットワーク１５０に接続するネットワーク化されたデバイスであってもよい。例えば、コンピュータ１０６は、ビデオゲーム処理を実行しないが、ネットワークトラフィックの通過を容易にする、ルータなどのローカルネットワークデバイスであってもよい。ＨＭＤ１０２、コントローラ１０４、及びカメラ（すなわち、画像捕捉デバイス）１０８によるネットワークへの接続は、有線または無線であってもよい。
【００２３】
更なる別の実施形態では、コンピュータ１０６は、ゲーミングアプリケーションの部分を実行してもよく、ゲーミングアプリケーションの残りの部分は、クラウドシステム１１４上で実行されてもよい。他の実施形態では、ゲーミングアプリケーションの部分は、ＨＭＤ１０２上でも実行されてもよい。例えば、コンピュータ１０６からゲーミング及び／または対話型ＶＲアプリケーションをダウンロードする要求は、クラウドシステム１１４によってサービス提供されてもよい。要求がサービス提供される間、クラウドシステム１１４は、ゲーミング及び／または対話型ＶＲアプリケーションの部分を実行してもよく、ＨＭＤ１０２上でのレンダリングのためにコンピュータ１０６にゲームコンテンツを提供してもよい。コンピュータ１０６は、ネットワーク１５０を介してクラウドシステム１１４と通信してもよい。ゲーミングアプリケーションがコンピュータ１０６上でダウンロードされる間、ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８から受信された入力は、クラウドシステム１１４に送信される。クラウドシステム１１４は、実行しているゲーミング及び／または対話型ＶＲアプリケーションのゲーム状態に影響を与えるよう入力を処理する。ビデオデータ、音声データ、及び触覚フィードバックデータなど、実行しているゲーミング及び／または対話型ＶＲアプリケーションからの出力は、それぞれのデバイスへの前方送信のためにコンピュータ１０６に送信される。
【００２４】
ゲーミング及び／または対話型ＶＲアプリケーションがコンピュータ１０６に完全にダウンロードされると、コンピュータ１０６は、ゲーミング及び／または対話型ＶＲアプリケーションを実行してもよく、それからクラウドシステム１１４上で中断された、ゲーミング及び／または対話型ＶＲアプリケーションのゲームプレイを再開してもよい。ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８からの入力は、コンピュータ１０６によって処理され、ＨＭＤ１０２、コントローラ１０４、及びカメラ１０８から受信された入力に応答して、ゲーミングアプリケーションのゲーム状態が調節される。そのような実施形態では、コンピュータ１０６におけるゲーミング及び／または対話型ＶＲアプリケーションのゲーム状態は、クラウドシステム１１４におけるゲーム状態と同期される。同期は、コンピュータ１０６及びクラウドシステム１１４の両方においてゲーミング及び／または対話型ＶＲアプリケーションの状態を最新に維持するよう周期的に行われてもよい。コンピュータ１０６は、関連するデバイスに出力データを直接送信してもよい。例えば、ビデオ及び音声ストリームは、ＨＭＤ１０２に提供されるのに対し、触覚フィードバックデータは、コントローラ１０４に提供される、振動フィードバックコマンドを生成するために使用される。
【００２５】
図１Ｂは、本開示の１つの実施形態に従った、ＶＲコンテンツを対話型の経験に提供するように構成されたシステムを示し、ＶＲコンテンツは、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するための分割階層グラフィックプロセッサシステムを使用して生成される。特に、システム（例えば、ＨＭＤ１０２、コンピュータ１０６、及び／またはクラウド１１４）は、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するように構成される。前に説明されたように、クラウドシステム１１４は、マスタノード３１０（例えば、シミュレーション、ゲームロジックを実行し、スクリプトを稼働させ、プリミティブを生成し、同期を実行するなど）及び複数のレンダリングノード３２０を含む実行エンジン３００（例えば、ゲーミングエンジン）を含み、複数のレンダリングノードの各々は、グリッドマップの対応する面に対してフレームをレンダリングする（ビューを生成する）ように構成される。図１Ｂは、例えば、ＲＦ信号を介してＨＭＤ１０２にデータを配信するように構成された送信機／受信機（送受信機）１１０を追加しており、図１Ａにおいて説明されたシステムと類似している。送受信機１１０は、ゲーミングアプリケーションからＨＭＤ１０２にビデオ及び音声を送信し、そこにレンダリングするように構成される（有線接続または無線接続によって）。１つの実施形態では、送受信機１１０は、データスループットを最適化する目的により（例えば、情報の効率的な送信）ビームフォーミングまたはビームステアリングに対して構成される。加えて、送受信機１１０は、３Ｄデジタルコンテンツの画像、ビデオ、及び音声を送信するように構成される。この実装形態では、任意選択のカメラ１０８は、本開示の１つの実施形態に従って、送受信機１１０がＨＭＤ１０２へのそのＲＦ電力（ＲＦ放射パターンを通じて配信されるような）の大部分をビームステアリングすることができるように（データを配信することを目的として）、ＨＭＤ１０２の移動を追跡するように構成されてもよい。すなわち、ＨＭＤの位置が送受信機１１０への空間内で、及び送受信機１１０に関連して知られると、その情報は、送受信機がＨＭＤ１０２の方向においてその送信電力の大部分を方向付ける（例えば、ビームステアリング）ことが可能であるように、送受信機にフィードバックされる。ＨＭＤ１０２はまた、サイドチャネルまたはセカンダリチャネル１９１を介してコンピュータ１０６と通信し、有線または無線（例えば、Ｂｌｕｅｔｏｏｔｈ(登録商標)、Ｗｉ−Ｆｉなど）通信経路のいずれかを介して、ＨＭＤ１０２との間で情報を受け渡しするように構成される。
【００２６】
図１Ｃは、本開示の１つの実施形態に従った、ＶＲコンテンツを対話型の経験に提供するように構成されたシステムを示し、ＶＲコンテンツは、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するために分割階層グラフィックプロセッサシステムを使用して生成される。特に、システム（例えば、ＨＭＤ１０２、コンピュータ１０６、及び／またはクラウド１１４）は、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するように構成される。前に説明されたように、クラウドシステム１１４は、マスタノード３１０（例えば、シミュレーション、ゲームロジックを実行し、スクリプトを稼働させ、プリミティブを生成し、同期を実行するなど）と、複数のレンダリングノード３２０とを含む実行エンジン３００を含み、複数のレンダリングノード３２０の各々は、グリッドマップの対応する面に対してフレームをレンダリングする（ビューを生成する）ように構成される。図１Ｃは、ＨＭＤ１０２、コントローラ１０４（例えば、インタフェースコントローラとして構成された）、または磁気センサ／アンテナにより構成されたいずれかのオブジェクト（例えば、グローブ、指などの身体部分上に位置するストライプなど）の磁気追跡（あるいはマグネットトラッキングＭＴ：magnet tracking）を可能にするよう磁場を放射するように構成された磁気源１１６を追加しており、図１Ａにおいて説明されたシステムと類似している。例えば、磁気センサは、誘導素子であってもよい。特に、磁気センサは、磁気源１１６によって放射されるような磁場（例えば、強度、方位）を検出するように構成されてもよい。磁気センサから収集された情報は、入力コマンドを提供するためになど、ＨＭＤ１０２、コントローラ１０４、及び他のインタフェースオブジェクトなどの位置及び／または方位を判定及び追跡するために使用されてもよい。実施形態では、磁気追跡は、ＨＭＤ１０２、コントローラ１０４、及び／または他のインタフェースオブジェクト内でカメラ１０８及び／またはセンサを通じて実行される追跡と組み合わされる。
【００２７】
いくつかの実装形態では、インタフェースオブジェクト（例えば、コントローラ１０４）は、ＨＭＤ１０２に対して追跡される。例えば、ＨＭＤ１０２は、インタフェースオブジェクトを含む画像を捕捉した外側に面したカメラを含んでもよい。他の実施形態では、ＨＭＤ１０２は、インタフェースオブジェクトなどの外部オブジェクトを追跡するために使用されるＩＲエミッタを含んでもよい。すなわち、ＨＭＤ１０２は、信号１９２（例えば、ＩＲエミッタ、磁気センサなど）を通じてコントローラ１０４を独立して追跡して、ＨＭＤ１０２へのインタフェースオブジェクト（例えば、コントローラ１０４）の相対位置を判定するように構成される。例えば、捕捉された画像は、ローカル環境内のインタフェースオブジェクトの位置／方位及び／または移動を判定するように、ＨＭＤ１０２に関して、かつＨＭＤ１０２の既知の位置／方位を使用して、インタフェースオブジェクトの位置／方位を判定するよう分析されてもよい。
【００２８】
ユーザ１００が、ＨＭＤ１０２において表示された、ゲーミングアプリケーションの仮想現実シーン、または対話型ＶＲ環境の仮想現実シーンと相互作用する方式は、変化してもよく、インタフェースオブジェクト（例えば、コントローラ１０４）に加えて他のインタフェースデバイスが使用されてもよい。例えば、様々な種類の片手コントローラと共に両手コントローラ１０４が使用されてもよい。いくつかの実装形態では、コントローラ１０４自体が、コントローラに含まれるライトを追跡し、またはコントローラ１０４と関連付けられた形状、センサ、及び慣性データを追跡することによって追跡されてもよい。それらの様々なタイプのコントローラ１０４、または単純に、１つ以上のカメラ及び磁気センサによって行われ、及び捕捉されたハンドジェスチャさえも使用して、ＨＭＤ１０２上で提示された仮想現実ゲーミング環境と相互作用し、それを制御し、それを操作し、それと対話し、及びそれに参加することが可能である。
【００２９】
図２は、ＶＲコンテンツ２９１の表示と連動「したＨＭＤ１０２の機能を概念的に示し、ＶＲコンテンツは、ネットワークを介してＶＲコンテンツを配信するバックエンドクラウドシステムにおいて生成される。ＶＲコンテンツは、例えば、ゲーミングアプリケーション及び／または対話型ＶＲアプリケーションから生成されてもよい。特に、クラウドシステムは、ＨＭＤ１０２へのＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するための分割階層グラフィックプロセッサシステム、及び／またはＨＭＤ１０２上での表示のためのローカルコンピュータ１０６を含んでもよい。例えば、クラウドシステムは、マスタノード（例えば、シミュレーション、ゲームロジックを実行し、スクリプトを稼働させ、プリミティブを生成し、同期を実行するなど）と、複数のレンダリングノードとを含む実行エンジン（例えば、ゲーミングエンジン）を含んでもよく、複数のレンダリングノードの各々は、グリッドマップの対応する面に対してフレームをレンダリングする（ビューを生成する）ように構成される。
【００３０】
いくつかの実施形態では、ＨＭＤ１０２は、ＶＲコンテンツを独立して生成するように構成されてもよい。他の実施形態では、ＶＲコンテンツエンジン２２０は、ＨＭＤ１０２に通信可能に結合されたコンピュータ１０６（図示せず）上で、及び／またはＨＭＤ１０２との組み合わせで実行されている。コンピュータは、ＨＭＤに対してローカルであってもよく（例えば、ローカルエリアネットワークの一部）、またはリモートに位置してもよく（例えば、ワイドエリアネットワーク、クラウドネットワークなどの一部）、ネットワークを介してアクセスされてもよい。ＨＭＤ１０２とコンピュータ１０６との間の通信は、有線または無線接続プロトコルに準拠してもよい。
【００３１】
実施例では、アプリケーションを実行するＶＲコンテンツエンジン２２０は、ゲーミングアプリケーション及び／または対話型ＶＲアプリケーションを実行するビデオゲームエンジンであってもよく、ゲーミングアプリケーションのゲーム状態を更新する入力を受信するように構成される。図２の以下の説明は、簡潔さ及び明確さを目的として、ゲーミング及び／または対話型ＶＲアプリケーションを実行するＶＲコンテンツエンジン２２０のコンテキスト内で説明され、ＶＲコンテンツ２９１を生成することが可能ないずれかのアプリケーションの実行を表すことが意図される。前に説明されたように、ＶＲコンテンツエンジンは、ローカルゲームコンソール上で、ＨＭＤ１０２自体の上で、またはそれらのいずれかの組み合わせで、バックエンドクラウドシステムにおいて実装されてもよい。ゲーミングアプリケーションのゲーム状態は、オブジェクトの存在及び位置、仮想環境の条件、イベントのトリガリング、ユーザプロファイル、ビュー視点など、最新のゲームプレイの様々な態様を定義するビデオゲームの様々なパラメータの値によって少なくとも部分的に定義されてもよい。
【００３２】
示される実施形態では、ＶＲコンテンツエンジン２２０は、例として、コントローラ入力２６１、音声入力２６２、及び動き入力２６３を受信する。コントローラ入力２６１は、ハンドヘルドゲーミングコントローラ１０４（例えば、Ｓｏｎｙ  ＤＵＡＬＳＨＯＣＫ（登録商標）４無線コントローラ、Ｓｏｎｙ  ＰｌａｙＳｔａｔｉｏｎ（登録商標）Ｍｏｖｅ動きコントローラ）またはウェアラブルグローブインタフェースコントローラなどのウェアラブルコントローラなど、ＨＭＤ１０２とは別個のゲーミングコントローラの動作から定義されてもよい。例として、コントローラ入力２６１は、指向性入力、ボタン押下、トリガ活性化、移動、ジェスチャ、またはゲーミングコントローラの動作から処理される他の種類の入力を含んでもよい。音声入力２６２は、ＨＭＤ１０２のマイクロフォン２５１から、または画像捕捉デバイス２０８もしくはそうでなければローカルシステム環境内に含まれるマイクロフォンから処理されてもよい。動き入力２６３は、ＨＭＤ１０２に含まれる動きセンサ２５９から、またはＨＭＤ１０２の画像を捕捉するような画像捕捉デバイス１０８から処理されてもよい。例えば、ゲーミングアプリケーションを実行するケースでは、ＶＲコンテンツエンジン２２０は、ビデオゲームのゲーム状態を更新するようゲームエンジンとして動作するコンテンツエンジン２２０の構成に従って処理される入力を受信する。エンジン２２０は、ユーザに提示されるコンテンツを定義するよう、ゲーム状態データを処理する様々なレンダリングモジュールにゲーム状態データを出力する。
【００３３】
示される実施形態では、ビデオレンダリングモジュール２８３は、ＨＭＤ１０２上で提示するためにビデオストリームをレンダリングするよう定義される。例えば、ビデオレンダリングは、グラフィックパイプラインの機能を実行してもよい。ビデオレンダリング２８３の構成要素及び／または機能は、ＣＰＵもしくはＧＰＵ内で、またはそれらの組み合わせで実行されてもよい。
【００３４】
１つの実施形態では、１つ以上のデコーダ３３０は、クラウドシステム（例えば、バックエンドゲーミング及び／または対話型ＶＲアプリケーションサーバ）によってレンダリングされた、符号化されたフレームを受信するように構成される。デコーダ３３０は、符号化されたフレームを、それらの元の状態及び／もしくは未処理状態、またはいくつかの同様の状態に再度復号するように構成される。前に、フレームは、ネットワーク（例えば、インターネット）を通じた効率的な送信のために符号化されており（圧縮を適用する）、符号化されたフレームのストリームは、グリッドマップ（例えば、６個の面を有するキューブマップ）の各々の面に対して生成される。デコーダの各々は、グリッドマップの対応する面に対して生成されたフレームを復号する。復号した後、復号されたフレームは、１つ以上のバッファ３３５に記憶される。例えば、グリッドマップの面に対応する復号されたフレームの各々のストリームは、対応するバッファに記憶されてもよい。または、グリッドマップの複数の面に対応する複数のストリームは、１つのバッファに記憶されてもよく、各々のストリームは、バッファから独立してアクセスされてもよい。キューブマップビューア４５０は、グリッドマップからのビューのうちの１つ以上（例えば、グリッドマップの１つ以上の面）を混合して、ＶＲシーンへのユーザの最新の視点を生成するように構成される。
【００３５】
ＨＭＤ１０２内の光学系２７０のレンズは、ＶＲコンテンツ２９１を視認するように構成される。ディスプレイスクリーン１３０４は、ＨＭＤ１０２がユーザによって装着されるとき、光学系２７０のレンズがディスプレイスクリーン１３０４とユーザの目２６０との間にあるように、光学系２７０のレンズの背後に配置される。そのようにして、ビデオストリームは、ディスプレイスクリーン／プロジェクタ機構１３０４によって提示されてもよく、ユーザの目２６０によって光学系２７０を通じて視認されてもよい。ＨＭＤユーザは、ＨＭＤを装着することによって、対話型ＶＲコンテンツ２９１（例えば、ＶＲビデオソース、ビデオゲームコンテンツなど）と対話することを選択してもよい。ビデオゲームからの対話型仮想現実（ＶＲ）シーンは、ＨＭＤのディスプレイスクリーン１３０４上でレンダリングされてもよい。そのようにして、ゲーム開発の間、ＨＭＤ１０２は、ユーザが対話型ＶＲシーンを編集及びレビューすることを可能にする。また、ゲームプレイの間（編集をレビューすることを含むように）、ＨＭＤは、ユーザがユーザの目に近接してＨＭＤの表示機構を供給することによって、ゲームプレイに完全に没入することを可能にする。コンテンツをレンダリングするためのＨＭＤのディスプレイスクリーン内で定義された表示領域は、ユーザの視野の大部分または全体でさえも占有することがある。典型的には、各々の目は、１つ以上のディスプレイスクリーンを視認している光学系２７０の関連するレンズによって支持される。
【００３６】
音声レンダリングモジュール２８２は、ユーザによって傾聴するための音声ストリームをレンダリングするように構成される。１つの実施形態では、音声ストリームは、ＨＭＤ１０２と関連付けられたスピーカ１５２を通じて出力される。スピーカ１５２がオープンエアスピーカ、ヘッドフォン、または音声を提示することが可能ないずれかの他の種類のスピーカの形式を取ってもよいことが認識されるべきである。
【００３７】
１つの実施形態では、凝視追跡センサ２６５は、ユーザの凝視を追跡することを可能にするようＨＭＤ１０２に含まれる。１つの凝視追跡センサ２６５のみが含まれるが、ユーザの凝視を追跡するために、１つよりも多い凝視追跡センサが採用されてもよいことに留意されるべきである。凝視追跡センサ２６５は、カメラ、光学センサ、赤外線センサ、ＥＭＧ（筋電図検査）センサ、光学反射器センサ、距離センサ、及びオプティカルフローセンサ、ドップラセンサ、並びにマイクロフォンなどのうちの１つ以上であってもよい。概して、センサ２６５は、目の移動方向における変化、加速、及び速度など、急速な目の移動を検出するように構成されてもよい。例えば、凝視追跡カメラは、ユーザの凝視方向を判定するよう分析される、ユーザの目の画像を追跡する。１つの実施形態では、ユーザの凝視方向に関する情報は、ビデオレンダリングに影響を与えるために利用されてもよい。例えば、ユーザの目が特定の方向を見ていると判定される場合、次いで、その方向についてのビデオレンダリングは、優先されてもよく、または強調されてもよい。ユーザの凝視方向は、ヘッドマウントディスプレイに対して、ユーザが位置付けられる実環境に対して、及び／または仮想環境、ヘッドマウントディスプレイ上でレンダリングされる仮想環境に対して定義されてもよいことが認識されるべきである。凝視方向がＨＭＤのスクリーンに対して定義されてもよいので、凝視方向は、スクリーン上の位置に変換されてもよい。
【００３８】
広義に言うと、凝視追跡センサ２６５によって捕捉された画像の分析は、単独で考慮されるとき、ＨＭＤ１０２に対するユーザの凝視方向を提供する。しかしながら、ＨＭＤ１０２の追跡された位置及び方位との組み合わせで考慮されるとき、ユーザの現実世界の凝視方向も、ＨＭＤ１０２の位置及び方位がユーザの頭の位置及び方位と同義であるとして判定されてもよい。すなわち、ユーザの現実世界の凝視方向は、ユーザの目の位置的な移動を追跡すること、並びにＨＭＤ１０２の位置と向きを追跡することから判定されてもよい。仮想環境のビューがＨＭＤ１０２上でレンダリングされるとき、仮想環境内でユーザの仮想世界の凝視方向を判定するよう適用して、ユーザの現実世界の凝視方向を判定してもよい。
【００３９】
加えて、触知フィードバックモジュール２８１は、コントローラ１０４など、ＨＭＤ１０２またはＨＭＤユーザによって操作される別のデバイスのいずれかに含まれる触知フィードバックハードウェアに信号を提供するように構成される。触知フィードバックは、振動フィードバック、温度フィードバック、圧力フィードバックなど、様々な種類の触知感覚の形式を取ってもよい。
【００４０】
図３は、本開示の１つの実施形態に従った、分割階層グラフィックプロセッサシステムを実装するためにクラウドシステム１１４の複数のサーバ及び／または計算ノードを使用した、クラウドシステムにおけるＶＲコンテンツの生成を示すデータフローチャートである。概して、クラウドシステム１１４は、グリッドマップの複数の面の各々に対してフレームをレンダリング及び符号化することを含むよう、ゲーミングアプリケーション及び／またはＶＲ対話型アプリケーションを実行し、各々の面は、所与の位置に対するＶＲ環境へのビューに対応する。符号化されたフレームは、復号、混合、及び表示のために、ネットワーク１５０を介してクライアントデバイス１０６にストリーミングされる。
【００４１】
クラウドシステム１１４は、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するように構成された分割階層グラフィックプロセッサシステムを含む。特に、分割階層グラフィックプロセッサシステムは、マスタノード３１０及び複数のレンダリングノード３２０など、クラウドシステム１１４上の複数のサーバ／計算ノードを含む。
【００４２】
マスタノードは、ゲームロジック、アプリケーションロジックを稼働させること、アプリケーションにおいてスクリプトを実行すること、ＶＲアプリケーションのＶＲ環境／世界内で提供されるオブジェクトのシミュレーションを実行することなど、ゲーミングアプリケーション及び／または対話型ＶＲアプリケーションを実行するように構成される。例えば、マスタノードは、オブジェクトのシミュレーションを実行するように構成されたシミュレーションモデラ３０１を含んでもよい。例えば、マスタノードは、入力データの所与のセットに対してオブジェクトに反して自然のまたは定義された物理的法則（例えば、自然のまたはゲーム特有法則、ルール、スクリプトなど）のシミュレーションを適用するように構成された物理シミュレーションモデラを含んでもよい。加えて、マスタノード３１０は、アプリケーションにおいて提供されるスクリプト（例えば、物理的法則を適用し、特定の脚色された世界についてのゲーミング物理的法則を適用するスクリプトなど）を実行するためのスクリプトエンジン３０２を含んでもよい。概して、マスタノード３１０は、図５に関連して以下で説明されるように、グラフィックパイプラインのＣＰＵ機能を実行するように構成される。例えば、マスタノードは、ＶＲアプリケーションのＶＲ環境／シーン内の複数のオブジェクトに対して複数のプリミティブ（図示せず）を生成するよう、ネットワーク１５０を介して受信されたユーザのクライアントデバイス１０６からの入力（例えば、制御入力３０３）に応答して、対話型ＶＲアプリケーションを実行するように構成される。
【００４３】
特に、クラウドシステム１１４は、ＶＲ環境内の位置から取り込まれたＶＲ環境への複数のビューに対する複数のプリミティブに基づいて、レンダリングを実行するように構成された複数のレンダリングノード３２０を含む。例えば、各々のレンダリングノードは、クライアントデバイスへのストリーミングのためにビデオフレームのシーケンスを作成するよう、ラスタライズ、フラグメントシェーディング、出力統合、フレームバッファリングなどのレンダリング演算を実行するように構成される。
【００４４】
更に、分割階層グラフィックプロセッサシステムは、ＶＲ環境を構築するために使用される複数のオブジェクトに対して入力ジオメトリ５０５を記憶するように構成されたアセットライブラリ３５０を含む。対応する入力ジオメトリによって表されるようなオブジェクトは、マスタノード３１０及び複数のレンダリングノード３２０によってアクセス可能である。特に、マスタノードは、入力ジオメトリ及び制御入力３０３に基づいて、オブジェクトに対してプリミティブを生成する。レンダリングノードの各々は、マスタノードの出力（例えば、物理シミュレーションの適用の後のオブジェクトの動き）に基づいて、オブジェクト（入力ジオメトリによって表されるような）のレンダリングを実行する。
【００４５】
分割階層のために、ビューに対するビデオフレームのシーケンスの各々は、最高解像度（例えば、フル解像度）においてレンダリングされる。複数のビューは、その位置に対するＶＲ環境のグリッドマップに対応する。１つの実施形態では、レンダリングノードの各々は、グリッドマップの対応するビューに対してビデオフレームをレンダリングする。例えば、レンダリングノード１（３２０ａ）は、グリッドマップの対応するビューに対してビデオフレーム３２３ａのシーケンスを生成するように構成されたレンダラ３２１ａを含む。同様に、レンダリングノード２（３２０ｂ）は、グリッドマップの対応するビューに対してビデオフレーム３２３ｂのシーケンスを生成するように構成されたレンダラ３２１ｂを含み、レンダリングノード３（３２０ｃ）は、グリッドマップの対応するビューに対してビデオフレーム３２３ｃのシーケンスを生成するように構成されたレンダラ３２１ｃを含み、．．．そして、レンダリングノードｎ（３２０ｎ）は、グリッドマップの対応するビューに対してビデオフレーム３２３ｎのシーケンスを生成するように構成されたレンダラ３２１ｎを含む。
【００４６】
更に、複数のレンダリングノード３２０の各々は、フレームのその対応するストリームを符号化する。概して、符号化は、ネットワーク１５０を介してストリーミングされるように、通信の効率性のためにビデオフレームのシーケンスを圧縮するよう実行される。例えば、レンダリングノード１（３２０ａ）は、符号化されたフレーム３２３ａ’のシーケンスを生成するように構成されたエンコーダ３２２ａを含み、レンダリングノード２（３２０ｂ）は、符号化されたフレーム３２３ｂ’のシーケンスを生成するように構成されたエンコーダ３２２ｂを含み、レンダリングノード３（３２０ｃ）は、符号化されたフレーム３２３ｃ’のシーケンスを生成するように構成されたエンコーダ３２２ｃを含み、レンダリングノードｎ（３２０ｎ）は、符号化されたフレーム３２３ｎ’のシーケンスを生成するように構成されたエンコーダ３２２ｎを含む。
【００４７】
符号化されたフレームのシーケンスの各々（グリッドマップのビューに対応する各々のシーケンス）は、ネットワーク１５０を介してクライアントデバイス１０６のデコーダ３３０にストリーミングされる。ストリーミングされるフレームの対応するシーケンス内のフレームは各々、識別子（例えば、インデックス番号）と関連付けられてもよく、フレームの１つ以上のシーケンス及びＶＲ環境への視点に基づいて、ＶＲ環境の３Ｄビューとして復号され、及び組み立てられるように構成されてもよい。１つの実施形態では、符号化されたフレームのシーケンスは、単方向ブロードキャスト（例えば、ＵＤＰ、ユニティＵＤＰ、マルチキャストなど）を介してクライアントデバイスにストリーミングされる。クライアントデバイスは、複数のレンダリングノードから受信された符号化されたストリームを復号及びバッファリングするように構成された１つ以上のデコーダを含む。例えば、１つの実施形態では、デコーダは、複数のデコーダに分割される。１つの実装形態では、１つのデコーダは、１対１で対応するエンコーダから配信されるフレームを復号するよう割り当てられる。もちろん、他の実施形態では、１つのデコーダは、フレームの１つ以上の符号化されたシーケンスを復号することができる。例えば、レンダリングノード１（３２０ａ）から、符号化されたフレーム３２３ａ’のシーケンスは、経路３８０ａを通じてクライアントデバイス１０６のデコーダ３３０−ａにストリーミングされる。デコーダ３３０−ａは、ＶＲシーンのグリッドマップの第１のビューに対応することができる、フレーム３２３ａのシーケンスを生成するよう、符号化されたフレーム３２３ａ’を復号し、符号化されたフレーム３２３ａ’をその元の状態または未処理状態（もしくは、いくつかの同様の状態）に戻すよう動作する。同様の機能性が符号化されたフレームの他のシーケンスの各々に対して実行される。特に、レンダリングノード２（３２０ｂ）から、符号化されたフレーム３２３ｂ’のシーケンスは、グリッドマップの第２のビューに対応することができる、復号されたフレーム３２３ｂのシーケンスを生成するよう、経路３８０ｂを通じてデコーダ３３０−ｂにストリーミングされる。また、レンダリングノード３（３２０ｃ）から、符号化されたフレーム３２３ｃ’のシーケンスは、グリッドマップの第３のビューに対応することができる、復号されたフレーム３２３ｃのシーケンスを生成するよう、経路３８０ｃを通じてデコーダ３３０−ｃにストリーミングされる。処理は、レンダリングノードｎ（３２０ｎ）からを含む、符号化されたフレームの各々のシーケンスに対して継続し、符号化されたフレーム３２３ｎ’のシーケンスは、グリッドマップの第３のビューに対応することができる、復号されたフレーム３２３ｎのシーケンスを生成するよう、経路３８０ｎを通じてデコーダ３３０−ｎにストリーミングされる。
【００４８】
更に、復号した後、フレームの復号されたシーケンスは、１つ以上のバッファ３３５に記憶される。例えば、グリッドマップの第１のビューに対応するフレーム３２３ａの復号されたシーケンスは、第１のバッファ３３５−ａに記憶され、グリッドマップの第２のビューに対応するフレーム３２３ｂの復号されたシーケンスは、第２のバッファ３３５−ｂに記憶され、グリッドマップの第３のビューに対応するフレーム３２３ｃの復号されたシーケンスは、第３のバッファ３３５−ｃに記憶され、．．．グリッドマップのｎ番目のビューに対応するフレーム３２３ｎの復号されたシーケンスは、ｎ番目のバッファ３３５−ｎに記憶される。所与の位置に対するＶＲ環境への対応するビューの符号化されたフレームの１つ以上の復号されたシーケンスに基づいて、クライアントデバイスは、ＶＲ環境を見ているユーザに対応する最新の視点を生成するように構成される。
【００４９】
１つの実施形態では、マスタノードはまた、複数のレンダリングノードの演算を同期させてもよく（例えば、同期パケットを通じて）、複数のレンダリングノードの各々は、グリッドマップの対応するビューに対してビデオフレームをレンダリングする。別の実装形態では、マスタノード及びレンダリングノードが通信のためにサーバラック３７０に配置されるとき、ラック内の通信経路の構成により、通信の同期と共にグリッドマップの各々の面に対するフレームのレンダリングを実現することができる。例えば、マスタノードによってプリミティブを複数のレンダリングノードの各々にブロードキャストすることによってなど（例えば、ＵＤＰ、ユニティＵＤＰ、マルチキャストなど）、レンダリングノードの各々への通信が同時に達成される。更なる別の実施形態では、レンダリングノードにおけるタイムスタンプの適用を通じて同期を達成することができる。特に、レンダリングノードの各々は、フレームの対応するシーケンスのフレームにタイムスタンプまたはフレーム番号を付加するように構成される。タイムスタンプは、クライアントデバイスにおけるフレームの異なるシーケンスからのフレームの同期のために利用される。例えば、クライアントデバイスは、同一または同様のタイムスタンプを有するフレームのみを混合及び／または表示してもよい。
【００５０】
図４は、本開示の１つの実施形態に従った、キューブマップの６個の面に対してビューを生成する６個のレンダリングノードと、ゲーミングアプリケーションのゲームロジックを実行し、レンダリングノードの同期を管理するためのマスタノードとを含む、複数のサーバ及び／または計算ノードを使用した、クラウドシステム１１４におけるＶＲコンテンツの生成を示すデータフローチャートである。実行エンジン（例えば、ゲーミングエンジン）３００内で実装されるような分割階層グラフィックプロセッサシステムの構成は、マスタノード３１０及び複数のレンダリングノード３２０など、クラウドシステム（例えば、クラウドシステム１１４）上の複数のサーバ／計算ノードを含む。
【００５１】
具体的には、図４は、グリッドマップに基づいてＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するように構成された、図３の汎用分割階層グラフィックプロセッサシステムの１つの実装形態である。特に、図４は、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するために、６個の面を有するキューブマップ４１０に対してビューをレンダリングするように構成された分割階層グラフィックプロセッサシステムを示す。分割階層グラフィックプロセッサシステムは、前に説明されたように、マスタノード３１０及び複数のレンダリングノード３２０を含む。
【００５２】
特に、マスタノード３１０は、前に説明されたように、ゲーミングアプリケーション及び／または対話型ＶＲアプリケーションを実行するように構成される。例えば、マスタノード３１０は、ゲームロジック、アプリケーションロジックを実行させ、スクリプトを実行し、オブジェクトのシミュレーションを実行する（例えば、自然のまたはユーザによって定義された物理的法則のシミュレーションをオブジェクトに適用するように構成された物理シミュレーションモデラを実行する）、などである。概して、マスタノード３１０は、クライアントデバイス１０６からの入力に応答して、グラフィックパイプラインのＣＰＵ機能を実行して、対話型ＶＲアプリケーションを実行するように構成される。マスタノードは、ＶＲ環境内のオブジェクトに対して複数のプリミティブを生成する。
【００５３】
また、複数のレンダリングノード３２０は、ＶＲ環境内の位置から取り込まれたＶＲ環境への複数のビューに対するプリミティブに基づいて、レンダリングを実行するように構成される。ビューは、キューブマップ４１０の各々の面に対応する。特に、各々のレンダリングノードは、ラスタライズ、フラグメントシェーディング、出力統合、フレームバッファリングなど、対応するビューに対してビデオフレームのシーケンスを生成するレンダリング演算を実行するように構成される。ビデオフレームのシーケンスは、クライアントデバイスにストリーミングされる。ストリーミングする前に、複数のレンダリングノード３２０の各々は、ネットワーク１５０を介してクライアント１０６にストリーミングされるように、通信の効率性のために、ビデオフレームのシーケンスを圧縮するよう、フレームのその対応するストリームを符号化する。
【００５４】
クライアント１０６上で、デコーダ３３０は、符号化されたフレームのシーケンスのストリームを受信する。デコーダ３３０は、複数のレンダリングノード３２０から受信された符号化されたストリームを復号及びバッファリングする（バッファ３３５に記憶する）ように構成される。例えば、１つの実施形態では、デコーダは、複数のデコーダに分割される。１つの実装形態では、１つのデコーダは、１対１で対応するエンコーダから配信されるフレームを復号するよう割り当てられる。例えば、デコーダ３３０−１は、エンコーダ３２０−１と対にされ、デコーダ３３０−２は、エンコーダ３２０−２と対にされ、デコーダ３３０−３は、エンコーダ３２０−３と対にされ、デコーダ３３０−４は、エンコーダ３２０−４と対にされ、デコーダ３３０−５は、エンコーダ３２０−５と対にされ、デコーダ３３０−６は、エンコーダ３２０−６と対にされる。もちろん、他の実施形態では、１つのデコーダは、フレームの１つ以上の符号化されたシーケンスを復号することができる。
【００５５】
特に、図４は、キューブマップの各々の面に対する符号化及び復号処理を示す。例えば、レンダリングノード３２０−１は、第１のビューを生成し、第１のビュー（例えば、上方ビュー４１０ａ）を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ３３０−１に第１のビューを符号化及びストリーミングし、レンダリングノード３２０−２は、第２のビューを生成し、第２のビュー（例えば、前方ビュー４１０ｂ）を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ３３０−２に第２のビューを符号化及びストリーミングし、レンダリングノード３２０−３は、第３のビューを生成し、第３のビュー（例えば、左ビュー４１０ｃ）を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ３３０−３に第３のビューを符号化及びストリーミングし、レンダリングノード３２０−４は、第４のビューを生成し、第４のビュー（例えば、下方ビュー４１０ｄ）を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ３３０−４に第４のビューを符号化及びストリーミングし、レンダリングノード３２０−５は、第５のビューを生成し、第５のビュー（例えば、右ビュー４１０ｅ）を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ３３０−５に第５のビューを符号化及びストリーミングし、レンダリングノード３２０−６は、第６のビューを生成し、第６のビュー（例えば、後方ビュー４１０ｆ）を表示する準備ができたフレームの符号化されたシーケンスを復号及びバッファリングするデコーダ３３０−６に第６のビューを符号化及びストリーミングする。
【００５６】
示されるように、キューブマップのビューの各々に対応するフレームの復号されたストリームは、１つ以上のバッファ３３５にバッファリングされる。ビューは、キューブマップビューア４５０によって呼び出されるときに表示する準備ができている。特に、キューブマップビューア４５０は、ＶＲ環境内の所与の位置に対してユーザの視点に対する最新のビューを生成するように構成される。最新のビューは、キューブマップのビューの符号化されたフレームの１つ以上の復号されたシーケンスに基づいている。例えば、例として、ユーザの視点は、左ビュー４１０ｃ、前方ビュー４１０ｂ、及び下方ビュー４１０ｄの一部分を含んでもよい。そのようにして、ユーザの最新のビューは、それらの３つのビューの組み合わせであり、キューブマップビューア４５０は、視点（ＰＯＶ）４２０を生成するよう、左ビュー、前方ビュー、及び下方ビューの組み合わせ、及び／または混合するように構成される。
【００５７】
図５は、本開示の１つの実施形態に従った、レンダリングパイプライン５００を実装するように構成された分割階層プロセッサシステムを示す。特に、分割階層プロセッサシステムは、クラウドシステムの複数のサーバ及び／または計算ノードにわたって実装され、ＣＰＵ及び／またはＧＰＵの機能を実行し、ゲーミングアプリケーション及び／またはＶＲアプリケーションに対してロジックを実行し、レンダリングを実行する。グリッドマップの面の各々に対する画像フレームは、前に説明されたように、独立してレンダリングされる。レンダリングパイプライン５００において示される処理は、グリッドマップの面の１つのビューと関連して実行される。レンダリングパイプライン５００は、前に説明されたように、ＨＭＤ１０２、コンピュータ１０６、及びクラウドゲーミングサーバ１１４内で単独でまたは組み合わせで実装されてもよい。
【００５８】
レンダリングパイプライン５００は、３Ｄ（三次元）ポリゴンレンダリング処理を使用して画像をレンダリングする一般的処理の例示である。レンダリングされた画像に対するレンダリングパイプライン５００は、画素の各々に対する対応する色情報をディスプレイ（例えば、ＨＭＤ）に出力し、色情報は、テクスチャ及びシェーディング（例えば、色、シャドーイングなど）を表すことができる。レンダリングパイプライン５００は、図１Ａ〜図１Ｃ及び図３〜図４に関連して前に説明されたように、クラウドシステムにおいて分割階層プロセッサシステム内で実装可能である。
【００５９】
レンダリングパイプライン５００は、オブジェクトアニメーションを実行するように構成され、マスタノード３１０において計算シェーダ５０６を含み、及びレンダリングノード３２０の１つを表すプログラム可能シェーダを含む。プログラム可能シェーダは、頂点データを処理することを含むレンダリングを行い、頂点をプリミティブ（例えば、ポリゴン）に組み立て、ディスプレイに対してプリミティブからフラグメントを生成するようラスタライズを実行し、次いで、各々のフラグメントに対して色及び奥行値を計算すると共に、画素ごとにフラグメントを混合して表示用のフレームバッファに記憶するように構成される。マスタノード３１０において計算シェーダ５０６によって実行される演算（例えば、アニメーションのための）は、ＣＰＵまたはＧＰＵのいずれかにおいて実行されてもよいが、例示を目的として、ＣＰＵにおいて実行されると示される。レンダリングノード３２０としてプログラム可能シェーダによって実行される演算は、一般に、より良好な性能及び効率性のためにＧＰＵにおける実行に対してより良好に適合される。
【００６０】
示されるように、レンダリングパイプライン５００は、３Ｄ環境内のオブジェクトに対応する入力ジオメトリ５０５を受信する。例えば、入力ジオメトリ５０５は、３Ｄゲーミング世界内の頂点、及び頂点の各々に対応する情報を含んでもよい。ゲーミング世界内の所与のオブジェクトは、頂点によって定義されるポリゴン（例えば、三角形）を使用して表されてもよく、対応するポリゴンの表面は次いで、最終的なエフェクト（例えば、色、テクスチャなど）を達成するよう、レンダリングパイプライン５００の残りの部分を通じて（例えば、レンダリングノード３２０を通じて）処理される。頂点属性は、法線（例えば、どの方向が頂点に関して明るいか）、色（例えば、ＲＧＢ−赤、緑、及び青の三色など）、並びにテクスチャ座標／マッピング情報を含んでもよい。例示を容易にするために、３Ｄゲーミング世界に対する入力ジオメトリは、マスタノード３１０の計算シェーダ５０６に入力されると示されるが、ジオメトリも区分化されてもよく、その結果、パーティクルシステムに対するジオメトリが計算シェーダに入力され、残りのジオメトリがレンダリングノード３２０としてプログラム可能シェーダの頂点シェーダ５１０に入力される。例えば、入力ジオメトリは、シェーダの間で共有することができる頂点バッファに入力されてもよい。
【００６１】
特に、マスタノード３１０における計算シェーダ５０６は、オブジェクトに及ぼした力及び／またはオブジェクトによって印加された力（重力など外物理力など、及び移動を生じさせるオブジェクトの内力）に応じて、フレームからフレームにオブジェクトアニメーション／シミュレーションを実行する（オブジェクト及び／またはパーティクルの動きを計算するなど）。概して、第１のフレームから後続のフレームに、マスタノード３１０における計算シェーダ５０６は、オブジェクトをアニメ化し、またはオブジェクトに動きをもたらす演算を実行する。特に、レンダリングされた各々のフレームに対し、オブジェクトのアニメーションは、離散時間ステップにおいて（例えば、フレームごとに）更新される（例えば、位置、向き、速度など）。例えば、アニメーション／シミュレーションモジュール５０７は、オブジェクトにアニメーションまたは移動をもたらし（例えば、物理特性の適用を通じて）、特に、離散時間ステップにおいて（例えば、フレームごとに）移動をもたらす（例えば、オブジェクトのオブジェクト位置または頂点を更新することによって）ように構成される。ＣＰＵとしての役割を果たすマスタノード３１０における計算シェーダ５０６は次いで、レンダリングノード３２０によって実行されるポリゴン頂点に対する描画コマンドを発行する。
【００６２】
計算シェーダ５０６の出力は、オブジェクトのプリミティブ（例えば、頂点、ポリゴンなど）を含んでもよい。ＧＰＵ構成内で実装されるように、残りの構成要素（例えば、出力マージャ及びフレームバッファを含む、ラスタライザ、フラグメントシェーダ、及びレンダラ）はアイドル状態であり、その結果、計算シェーダ５０６の出力は次いで、レンダリングを含むより従来のＧＰＵ演算を実行するよう、配信され、及び／またはレンダリングノード３２０としてのプログラム可能シェーダと共有される。もちろん、ＣＰＵの実装形態では、マスタノード３１０は、計算シェーダ５０６及びオブジェクトシミュレーションモジュール５０７のみを含むよう簡易化されてもよい。
【００６３】
特に、計算シェーダ５０６によって生成されたアニメーション結果は、頂点バッファに記憶されてもよく、頂点バッファは次いで、ポリゴン頂点をレンダリングする目的として、ディスプレイ（例えば、ＨＭＤの）上でのポリゴン頂点の投影及び投影されたポリゴンのテッセレーションを実行するように構成されたレンダリングノード３２０によってアクセスされる。すなわち、レンダリングノード３２０は、レンダリングするとき、３Ｄ仮想環境内のオブジェクトを構成するポリゴン及び／またはプリミティブを更に築き上げ、シーンに対する照明に応じた、ポリゴンに対する照明、シャドーイング、及びシェーディング計算を実行することを含むように構成されてもよい。
【００６４】
具体的には、アニメ化されたオブジェクトは、レンダリングノード３２０によって実行された演算を使用して、フレームからフレームに描かれてもよい。特に、マスタノードの計算シェーダ５０６からのアニメーション結果は、頂点バッファに記憶され、頂点バッファは次いで、レンダリングノード３２０に入力される（例えば、頂点シェーダ５１０によってアクセスされるように）。頂点バッファ内の値は、グラフィックパイプライン５００のステージの間で共有されてもよい。特に、頂点シェーダ５１０は、前に説明されたように、入力ジオメトリ５０５を直接受信し、及び計算シェーダ５０６から入力ジオメトリ５０５を受信し、３Ｄシーン内のオブジェクトを構成するポリゴンまたはプリミティブを構築する。頂点シェーダ５１０は更に、計算シェーダ５０６によって完了されない場合に、アニメ化されたオブジェクトに対してプリミティブを構築してもよい。すなわち、頂点シェーダ５１０は、ゲーミング世界内に配置されるように、プリミティブを使用してオブジェクトを築き上げてもよい。例えば、頂点シェーダ５１０は、シーンに対する照明に応じた、ポリゴンに対する照明及びシャドーイング計算を実行するように構成されてもよい。プリミティブは、頂点プロセッサ５１０によって出力され、グラフィックパイプライン５００の次のステージに配信される。クリッピングなどの追加の演算も頂点プロセッサ５１０によって実行されてもよい（例えば、ゲーミング世界内の視認位置によって定義されるように、視認錐台から外側にあるプリミティブを識別及び無視する）。
【００６５】
頂点プロセッサ５１０によって出力されたプリミティブは、ラスタライザ５２０にフィードされ、ラスタライザ５２０は、３Ｄゲーミング世界内の視認位置（例えば、カメラ位置、ユーザの目の位置など）によって定義される二次元（２Ｄ）画像平面にシーン内のオブジェクトを投影するように構成される。単純化したレベルにおいて、ラスタライザ５２０は、各々のプリミティブを検査し、どの画素が対応するプリミティブによって影響を与えられるかを判定する。特に、ラスタライザ５２０は、プリミティブを画素のサイズにされたフラグメントに区分化し、各々のフラグメントは、ディスプレイ内の画素及び／またはレンダリング視点（例えば、カメラビュー）と関連付けられた参照平面に対応する。すなわち、プリミティブのフラグメンテーションは、プリミティブを画素のサイズにされたフラグメントに分解するために使用されてもよく、各々のフラグメントは、ディスプレイ内の画素及び／またはレンダリング視点と関連付けられた参照平面に対応する。クリッピング（視認錐台から外側にあるフラグメントを識別及び無視する）並びに参照位置へのカリング（より近いオブジェクトによって閉塞されたフラグメントを無視する）などの追加の演算もラスタライザ５２０によって実行されてもよい。
【００６６】
そのコアにおけるフラグメントプロセッサ５３０は、プリミティブの色及び輝度が利用可能な照明によりどのように変化するかを判定するよう、フラグメントに対してシェーディング演算を実行する。例えば、フラグメントプロセッサ５３０は、各々のフラグメントに対して奥行、色、法線、及びテクスチャ座標（例えば、テクスチャ詳細）を判定してもよく、更に、フラグメントに対して適切なレベルの光、暗がり、及び色を判定してもよい。特に、フラグメントプロセッサ５３０は、色及び他の属性（例えば、視認位置からの距離に対するｚ−奥行、透過性に対するα値）を含む、各々のフラグメントの特徴を計算する。加えて、フラグメントプロセッサ５３０は、対応するフラグメントに影響を与える利用可能な照明に基づいて、照明効果をフラグメントに適用する。更に、フラグメントプロセッサ５３０は、各々のフラグメントに対してシャドーイング効果を適用してもよい。フラグメントプロセッサ５３０の出力は、処理されたフラグメント（例えば、シャドーイングを含むためのテクスチャ及びシェーディング情報）を含み、レンダリングパイプライン５００の次のステージに配信される。
【００６７】
出力統合構成要素５４０は、各々の対応する画素に貢献し、及び／または影響を与えるフラグメントに応じて、各々の画素の特徴を計算する。すなわち、３Ｄゲーミング世界内の全てのプリミティブのフラグメントは、表示のために２Ｄ色画素に組み合わされる。例えば、対応する画素に対してテクスチャ及びシェーディング情報に貢献するフラグメントは、レンダリングパイプライン５００における次のステージに配信される画素に対する最終的な色値を出力するよう組み合わされる。出力統合構成要素５４０は、フラグメントプロセッサ５３０から判定されたフラグメント及び／または画素の間の値の任意選択の混合を実行してもよい。すなわち、１つ以上のフラグメントは、画像を表示するとき、対応する画素の色に貢献することがあることに留意することが重要である。例えば、所与の画素に対し、３Ｄ仮想環境内の全てのプリミティブのフラグメントは、表示のために画素に組み合わされる。そのようにして、対応する画素に対する全体的なテクスチャ及びシェーディング情報は、画素に対する最終的な色値を出力するよう組み合わされる。
【００６８】
各々の画素に対するそれらの色値は、フレームバッファ５５０に記憶されてもよく、フレームバッファ５５０は、フレームごとにシーンの対応する画像を表示するとき、対応する画素への従来のＧＰＵパイプラインにおいて走査されてもよい。しかしながら、フレームのシーケンスをディスプレイに配信するのではなく、本発明の実施形態では、レンダリングノード３２０は、グリッドマップ（例えば、キューブマップ）の特定のビュー／面に対してフレームをレンダリングし、そのシーケンスを符号化し（例えば、エンコーダ３３５を通じて）、次いで、フレームの符号化されたシーケンスをクライアントデバイスにストリーミングするように構成される。そのレンダリングノードからのレンダリングされたフレームは、ユーザに対して表示された（例えば、ＨＭＤにおいて）最新の視点に寄与することも、しないこともある。しかしながら、グリッドマップの１つ以上のビューに対応するフレームの１つ以上のシーケンスに基づいて、クライアントデバイスのキューブマップビューア（図４を参照）を通じてなど、最新の視点が生成されてもよい。
【００６９】
ゲーミングコンソール、ＨＭＤ、及びクラウドゲーミングサーバの様々なモジュールの詳細な説明により、ここでは、本開示の１つの実施形態に従った、クラウドシステムの分割階層グラフィックプロセッサシステムを使用してグラフィック処理を実行する方法は、図６のフローチャート６００に関連して説明される。前に説明されたように、フローチャート６００は、ＣＰＵ及び／またはＧＰＵの機能を実行して、ゲーミングアプリケーション及び／または対話型ＶＲアプリケーションに対してロジックを実行し、レンダリングを実行するよう、クラウドシステムの複数のサーバ及び／または計算ノードにわたって分割階層プロセッサシステムを実装することに関与する演算の処理及びデータフローを示す。特に、フローチャート６００の方法は、図１〜図５のマスタノード３１０及び複数のレンダリングノード３２０によって少なくとも部分的に実行されてもよい。
【００７０】
６１０において、方法は、ユーザのクライアントデバイスからの入力に応答して、クラウドシステムのマスタノードにおいてＶＲアプリケーションを実行して、ＶＲアプリケーションのＶＲ環境内の複数のオブジェクトに対して複数のプリミティブを生成することを含む。特に、マスタノードは、前に説明されたように、ゲーミングアプリケーション及び／または対話型ＶＲアプリケーションを実行するように構成される。例えば、マスタノード３１０は、ゲームロジック及び／またはアプリケーションロジックを稼働させること、スクリプトを実行すること、オブジェクトのシミュレーションを実行すること（例えば、自然のもしくはユーザにより定義された物理的法則のシミュレーションをオブジェクトに適用するように構成された物理シミュレーションモデラを実行する）などを含む、クライアントデバイスからの入力に応答してＣＰＵ機能を実行するように構成される。マスタノードは、ＶＲ環境内のオブジェクトに対して複数のプリミティブを生成する。
【００７１】
６２０において、方法は、ＶＲ環境内の位置から取り込まれたＶＲ環境への複数のビューに対する複数のプリミティブに基づいて、複数のレンダリングノードにおいてフレームの複数のシーケンスをレンダリングすることを含む。例えば、複数のビューは、ＶＲ環境のグリッドマップの面に対応し、対応するフレームのシーケンスは、対応するビューと関連付けられる。特に、各々のレンダリングノードは、ラスタライズ、フラグメントシェーディング、出力統合、フレームバッファリングなど、対応するビューに対してビデオフレームのシーケンスを生成するレンダリング演算を実行するように構成される。
【００７２】
更なる他の実施形態では、各々のノードは、特定の機能を実行するように構成される。例えば、グリッドマップの面のレンダリングを実行する代わりに、ノードは、集中的に計算する特定のコンピュータ機能性を実行するよう割り当てられる。専用ノードにおいてコンピュータ機能性を実行することによって、残りのノード（例えば、マスタノード）は、集中的に計算する機能性を実行するためにそのリソースを費やす必要なく、他の重要な機能性を自由に実行することができる。
【００７３】
６３０において、方法は、複数のオブジェクトに対する入力ジオメトリをアセットライブラリに記憶することを含み、アセットライブラリ内の複数のオブジェクトは、マスタノード及び複数のレンダリングノードによってアクセス可能である。対応する入力ジオメトリによって表されるような複数のオブジェクトは、ＶＲ環境を構築するために使用される。入力ジオメトリ及び制御入力に基づいて、マスタノードは、オブジェクトシミュレーションを適用した後など、オブジェクトに対してプリミティブを生成する。レンダリングノードは、マスタノードからの出力（例えば、物理シミュレーションの適用の後のオブジェクトの動き）に基づいて、オブジェクト（入力ジオメトリによって表されるような）のレンダリングを実行する。１つの実施形態では、マスタノード及びレンダリングノードは、サーバラック内で構成され、そのようにして、マスタノードからのプリミティブをレンダリングノードの各々にブロードキャストすることによって、通信空間内で同期が達成される。
【００７４】
６４０において、方法は、各々のレンダリングノードにおいて、フレームの対応するシーケンスを符号化することを含む。符号化は、ネットワークを介してクライアントデバイスにストリーミングされるように、通信の効率性のためにビデオフレームのシーケンスを圧縮するよう実行される。６５０において、符号化の後、方法は、各々のレンダリングノードからクライアントデバイスにフレームの対応するシーケンスをストリーミングすることを含み、フレームの各々の対応するシーケンスは、グリッドマップの面またはビューに対応する。クライアントデバイスは、符号化されたフレームのシーケンスの各々を復号し、呼び出されるときの表示のために、符号化されたフレームの復号されたシーケンスを複数のバッファに記憶するように構成される。加えて、クライアントデバイスは、ＶＲ環境のグリッドマップのビューの符号化されたフレームの１つ以上の復号されたシーケンスに基づいて、ＶＲ環境内の所与の位置において視点を生成するように構成される。
【００７５】
図７は、本開示の様々な実施形態の態様を実行するために使用することができる実施例のデバイス７００の構成要素を示す。特に、図７は、本開示の１つの実施形態に従った、ＣＰＵ及び／またはＧＰＵの機能を実行して、ゲーミングアプリケーション及び／または対話型ＶＲアプリケーションに対してロジックを実行し、レンダリングを実行するよう、クラウドシステムの複数のサーバ及び／または計算ノードにわたって分割階層プロセッサシステムを実装するコンピュータシステムを示す。１つの実装形態では、図７は、クラウドシステムの複数のサーバ及び／または計算ノードにわたって分割階層プロセッサシステムを実装するために適切な例示的なハードウェアシステムを示す。他の実施形態では、コンピュータシステムは、クラウドサービス内で仮想マシン（ＶＭ）として実装されてもよい。例えば、クラウドサービスは、計算能力及び仮想記憶を提供するため、１つ以上のＶＭをサポートする仮想化層を含んでもよい。仮想化層は、仮想化空間の外側でアクセス可能な、下層のハードウェア及び物理データストレージを利用する。このブロック図は、開示の１つの実施形態を実施するのに適切な、デバイス７００を示し、デバイス７００は、サーバコンピュータ、仮想化コンピュータ、パーソナルコンピュータ、ビデオゲームコンソール、パーソナルデジタルアシスタント、または他のデジタルデバイスをであってよく、またそれらを組み込むことができてもよい。デバイス７００は、ソフトウェアアプリケーション及び任意選択でオペレーティングシステムを稼働させる中央処理装置（ＣＰＵ）７０２を含む。ＣＰＵ７０２は、１つ以上の同種または異種の処理コアから構成されてもよい。例えば、ＣＰＵ７０２は、１つ以上の処理コアを有する１つ以上の汎用マイクロプロセッサである。更なる実施形態は、前に説明されたように、メディア及び対話型エンターテインメントアプリケーション、またはディスプレイを視認しているユーザと関連して定義されたサッカードの間及び／もしくはサッカードの終了時のユーザの目（複数可）の凝視方向と関連付けられたディスプレイ上のランディングポイントの予測をもたらすように構成されたアプリケーションなど、高度に並列し、及び計算集中的なアプリケーションに特に適合したマイクロプロセッサアーキテクチャを有する１つ以上のＣＰＵを使用して実装されてもよい。
【００７６】
メモリ７０４は、ＣＰＵ７０２による使用のためにアプリケーション及びデータを記憶する。ストレージ７０６は、アプリケーション及びデータに対する不揮発性ストレージ及び他のコンピュータ可読媒体を提供し、固定ディスクドライブ、取り外し可能ディスクドライブ、フラッシュメモリデバイス、及びＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、Ｂｌｕ−ｒａｙ（登録商標）、ＨＤ−ＤＶＤ、または他の光学記憶デバイス、ならびに信号伝送及び記憶媒体を含んでもよい。ユーザ入力デバイス７０８は、１人以上のユーザからのユーザ入力をデバイス７００に通信し、ユーザ入力デバイス７０８の例は、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチルレコーダ／カメラもしくはビデオレコーダ／カメラ、ジェスチャを認識する追跡デバイス、及び／またはマイクロフォンを含んでもよい。ネットワークインタフェース７１４は、デバイス７００が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にし、ローカルエリアネットワーク、及びインターネットなどのワイドエリアネットワークにわたる有線または無線通信を含んでもよい。音声プロセッサ７１２は、ＣＰＵ７０２、メモリ７０４、及び／またはストレージ７０６によって提供される命令及び／またはデータから、アナログまたはデジタル音声出力を生成するように適合される。ＣＰＵ７０２、メモリ７０４、データストレージ７０６、ユーザ入力デバイス７０８、ネットワークインタフェース７１０、及び音声プロセッサ７１２を含むデバイス７００の構成要素は、１つ以上のデータバス７２２を介して接続される。
【００７７】
グラフィックサブシステム７１４は更に、データバス７２２及びデバイス７００の構成要素と接続される。グラフィックサブシステム７１４は、グラフィックプロセシングユニット（ＧＰＵ）７１６及びグラフィックメモリ７１８を含む。グラフィックメモリ７１８は、出力画像の各々の画素に対する画素データを記憶するために使用される表示メモリ（例えばフレームバッファ）を含む。グラフィックメモリ７１８は、ＧＰＵ７１６と同一のデバイスに統合されてもよく、ＧＰＵ７１６と別個のデバイスとして接続されてもよく、及び／またはメモリ７０４内で実装されてもよい。画素データは、ＣＰＵ７０２からグラフィックメモリ７１８に直接提供されてもよい。代わりに、ＣＰＵ７０２は、所望の出力画像を定義するデータ及び／または命令をＧＰＵ７１６に提供し、データ及び／または命令をＧＰＵ７１６に提供し、ＧＰＵ７１６は、そこから１つ以上の出力画像の画素データを生成する。所望の出力画像を定義するデータ及び／または命令は、メモリ７０４及び／またはグラフィックメモリ７１８に記憶されてもよい。１つの実施形態では、ＧＰＵ７１６は、シーンに対するジオメトリ、照明、シェーディング、テクスチャリング、動き、及び／またはカメラパラメータを定義する命令及びデータから、出力画像の画素データを生成する３Ｄレンダリング能力を含む。ＧＰＵ７１６は更に、シェーダプログラムを実行することが可能な１つ以上のプログラム可能実行ユニットを含んでもよい。
【００７８】
グラフィックサブシステム７１４は、ディスプレイデバイス７１０に表示され、または投影システム７４０によって投影されるよう、グラフィックメモリ７１８から画像用の画素データを周期的に出力する。ディスプレイデバイス７１０は、ＣＲＴ、ＬＣＤ、プラズマ、及びＯＬＥＤディスプレイを含む、デバイス７００からの信号に応答して、視覚情報を表示することが可能な任意のデバイスであってもよい。デバイス７００は、ディスプレイデバイス７１０に、例えば、アナログ信号またはデジタル信号を提供することができる。
【００７９】
図７に示されるように。デバイス７００は、ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するための分割階層グラフィックプロセッサシステムを実装するように構成されてもよい。例えば、デバイス７００は、クラウドシステム内で構成されてもよく、マスタノード３１０及び複数のレンダリングノード３２０を更に含む実行エンジン３００（例えば、ゲーミングエンジン）を含む。マスタノード３１０は、シミュレーションを実行すること、スクリプトを稼働させること、レンダリングを実行するためにグラフィックエンジンに必要な入力（例えば、プリミティブ）を提供することなど、ゲーミング及び／または対話型ＶＲアプリケーションを実行するときにＣＰＵ機能を実行するように構成される。複数のレンダリングノード３２０は、グリッドマップの各々の面に対してフレームのレンダリングを実行するように構成される。
【００８０】
本明細書で説明される実施形態は、任意のタイプのクライアントデバイス上で実行されてもよいことが理解されるべきである。いくつかの実施形態では、クライアントデバイスは、ヘッドマウントディスプレイ（ＨＭＤ）、または投影システムである。図８では、開示の実施形態に従った、ヘッドマウントディスプレイ１０２の構成要素を例示する図が示される。ＨＭＤ１０２は、ユーザがディスプレイを視認していること、及び後の更新動作においてＧＰＵに予測されるランディングポイントを提供することに関連して定義されるサッカードの間、及び／またはサッカードの終了時に、ユーザの目（複数可）の凝視方向と関連付けられたＨＭＤのディスプレイ上のランディングポイントを予測するように構成されてもよい。
【００８１】
ヘッドマウントディスプレイ１０２は、プログラム命令を実行するプロセッサ８００を含む。メモリ８０２は、記憶を目的として設けられ、揮発性メモリ及び不揮発性メモリの両方を含んでもよい。ユーザが視認することができる視覚的インタフェースを提供するディスプレイ８０４が含まれる。ヘッドマウントディスプレイ１０２の電源として、バッテリ８０６が設けられる。動き検出モジュール８０８は、磁力計８１０Ａ、加速度計８１２、及びジャイロスコープ８１４など、様々な種類の動き検知ハードウェアのいずれかを含んでもよい。
【００８２】
加速度計は、加速度及び重力誘起反力を測定するデバイスである。様々な方向の加速の大きさ及び方向を検出するために、単軸モデル及び多軸モデルが利用可能である。加速度計を使用して、傾き、振動、及び衝撃が感知される。１つの実施形態では、３つの加速度計８１２は、２つの角度（世界空間ピッチ及び世界空間ロール）についての絶対基準を与える、重力の方向を提供するために使用される。
【００８３】
磁力計は、ヘッドマウントディスプレイ付近の磁場の強度及び方向を測定する。１つの実施形態では、３つの磁力計８１０Ａは、ヘッドマウントディスプレイ内で使用され、世界空間のヨー角度についての絶対基準を保証する。１つの実施形態では、磁力計は、±８０マイクロステラの地磁場にわたるように設計される。磁気計は金属の影響を受け、実際のヨーに対して単調なヨー測定を提供する。磁場は環境内の金属により歪むことがあり、これによりヨー測定に歪みが生じる。必要に応じて、この歪みは、ジャイロスコープまたはカメラなどの他のセンサからの情報を使用して、較正することができる。１つの実施形態では、加速度計８１２は、ヘッドマウントディスプレイ１０２の傾斜及び方位角を取得するために、磁力計８１０Ａと共に使用される。
【００８４】
ジャイロスコープは、角運動量の原理に基づいて、配向を測定または維持するためのデバイスである。１つの実施形態では、３つのジャイロスコープ８１４は、慣性検知に基づいて、それぞれの軸（ｘ、ｙ、及びｚ）にわたる動きに関する情報を提供する。ジャイロスコープは、高速回転の検出に役立つ。しかしながら、ジャイロスコープは、絶対基準が存在しないと、時間の経過と共にドリフトすることがある。これは、周期的にジャイロスコープを再設定することを必要とし、再設定は、オブジェクトの視覚追跡、加速度計、磁力計などに基づいた位置／方位判定など、他の利用可能な情報を使用して行われてもよい。
【００８５】
カメラ８１６は、実環境の画像及び画像ストリームを捕捉するために設けられる。後面カメラ（ユーザがヘッドマウントディスプレイ１０２のディスプレイを見ている時にユーザから離れる方向を向くカメラ）と、前面カメラ（ユーザがヘッドマウントディスプレイ１０２のディスプレイを見ている時にユーザ側を向くカメラ）とを含む複数のカメラが、ヘッドマウントディスプレイ１０２に含まれてもよい。加えて、実環境内のオブジェクトの奥行情報を検知するために、奥行カメラ８１８がヘッドマウントディスプレイ１０２に含まれてもよい。
【００８６】
１つの実施形態では、ＨＭＤの前面に統合されたカメラは、安全に関する警告が提供するために使用されてもよい。例えば、ユーザが壁またはオブジェクトに接近している場合、ユーザに警告が与えられ得る。１つの実施形態では、室内の物理的オブジェクトの外観をユーザに提供して、ユーザにそれらの存在を警告することができる。外観は、例えば仮想環境におけるオーバーレイであってもよい。いくつかの実施形態では、例えば床にオーバーレイされた参照マーカのビューが、ＨＭＤユーザに提供されてもよい。例えば、マーカは、ユーザがゲームをプレイしている部屋の中心の場所の基準を、ユーザに提供してもよい。これは、例えば部屋の中の壁または他のオブジェクトに衝突しないようにユーザが移動すべき場所の視覚情報を、ユーザに提供してもよい。ユーザがＨＭＤを装着してゲームをプレイする、またはＨＭＤでコンテンツを操縦する時、安全性を高めるために、触覚的警告、及び／または音声警告も、ユーザに提供することができる。
【００８７】
ヘッドマウントディスプレイ１０２は、音声出力を提供するスピーカ２５２を含む。また、周囲環境からの音、ユーザによって行われた発話などを含む実環境からの音声を捕捉するために、マイクロフォン２５１が含まれてもよい。ヘッドマウントディスプレイ１０２は、ユーザに触知フィードバックを提供する触知フィードバックモジュール２８１を含む。１つの実施形態では、触知フィードバックモジュール２８１は、触知フィードバックをユーザに提供するように、ヘッドマウントディスプレイ１０２の動き及び／または振動を引き起こすことが可能である。
【００８８】
ＬＥＤ８２６は、ヘッドマウントディスプレイ１０２の状態の視覚的インジケータとして提供される。例えば、ＬＥＤは、バッテリレベル、電源オンなどを示してもよい。ヘッドマウントディスプレイ１０２がメモリカードからの情報を読み出し、メモリカードに情報を書き込むことを可能にするために、カードリーダ８２８が提供される。周辺デバイスの接続、または他のポータブルデバイス、コンピュータなどの他のデバイスへの接続を可能にするインタフェースの１つの実施例として、ＵＳＢインタフェース８３０が含まれる。ヘッドマウントディスプレイ１０２の様々な実施形態では、ヘッドマウントディスプレイ１０２のより良い接続性を可能にするために、様々な種類のインタフェースのいずれかが含まれてもよい。
【００８９】
無線ネットワーク技術を介してインターネットへの接続を可能にするために、Ｗｉ−Ｆｉモジュール８３２が含まれる。また、ヘッドマウントディスプレイ１０２は、他のデバイスへの無線接続を可能にするために、Ｂｌｕｅｔｏｏｔｈモジュール８３４を含む。また、他のデバイスへの接続のために通信リンク８３６が含まれてもよい。１つの実施形態では、通信リンク８３６は、無線通信のために赤外線伝送を利用する。他の実施形態では、通信リンク８３６は、他のデバイスとの通信のために各種の無線または有線伝送プロトコルのいずれかを利用してもよい。
【００９０】
入力ボタン／センサ８３８は、ユーザに入力インタフェースを提供するために含まれる。ボタン、タッチパッド、ジョイスティック、トラックボールなどの様々な種類の入力インタフェースのうちのいずれかが含まれてもよい。超音波技術を介した他のデバイスとの通信を促進するために、超音波通信モジュール８４０が、ヘッドマウントディスプレイ１０２に含まれてもよい。
【００９１】
バイオセンサ８４２は、ユーザからの生理学的データの検出を可能にするために含まれる。１つの実施形態では、生体センサ８４２は、ユーザの皮膚を通してユーザの生体電気信号を検出するために、１つ以上の乾電極を含む。
【００９２】
３次元の物理的環境に配置されたエミッタ（例えば赤外線基地局）からの信号に応答するために、光センサ８４４が含まれる。ゲームコンソールは、光センサ８４４及びエミッタからの情報を分析して、ヘッドマウントディスプレイ１０２に関連する位置及び向きの情報を判定する。
【００９３】
更に、凝視追跡システム８２０が含まれ、これは、ユーザの凝視追跡を可能にするように構成される。例えば、システム８２０は、ユーザの目の画像を捕捉する凝視追跡カメラ（例えば、センサ）を含んでもよく、捕捉された画像は次いで、ユーザの凝視方向を判定するために分析される。１つの実施形態では、ユーザの凝視方向に関する情報は、ビデオレンダリングに影響を与えるように、及び／またはサッカード間またはサッカードの終了時にユーザの凝視が方向付けられる方へのディスプレイ上のランディングを予測するために使用されてもよい。また、例えば、中心窩レンダリングによるより詳細な高解像度、中心窩領域に表示されるパーティクルシステム効果の高解像度、中心窩領域の外側に表示されるパーティクルシステム効果の低解像度、またはユーザが見ている領域のより高速な更新を提供することにより、凝視方向のビデオレンダリングは、優先されてもよいまたは強調されてもよい。
【００９４】
ヘッドマウントディスプレイ１０２の前述の構成要素は、ヘッドマウントディスプレイ１０２に含まれてもよい単なる例示的な構成要素として説明されている。本開示の様々な実施形態では、ヘッドマウントディスプレイ１０２は、上記の様々な構成要素の一部を含んでもよいし、または含まなくてもよい。本明細書で説明される本開示の態様を簡易にするために、ここでは記述されていないが当技術分野では既知の他の構成要素が、ヘッドマウントディスプレイ１０２の実施形態には更に含まれてもよい。
【００９５】
本開示の様々な実施形態では、様々な対話型機能を提供するために、前述のヘッドマウントデバイスが、ディスプレイに表示される対話型アプリケーションと併せて利用されてもよいことが、当業者には理解されよう。本明細書で説明される例示的な実施形態は、限定としてではなく、単に実施例として提供される。
【００９６】
現在の実施形態のゲームへのアクセス提供など、広範囲な地域にわたり配信されるアクセスサービスは、多くの場合、クラウドコンピューティングを使用することに留意されたい。クラウドコンピューティングは、動的に拡張縮小可能で多くの場合仮想化されたリソースがインターネットを介したサービスとして提供される、コンピューティング様式である。ユーザは、ユーザをサポートする「クラウド」の技術的インフラストラクチャのエキスパートである必要はない。クラウドコンピューティングは、Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＩａａＳ）、Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＰａａＳ）、及びＳｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）などの異なるサービスに分類することができる。クラウドコンピューティングサービスは、多くの場合、ビデオゲームなどの共通のアプリケーションを、ウェブブラウザからアクセスするオンラインで提供するが、ソフトウェア及びデータは、クラウド内のサーバに記憶される。クラウドという用語は、コンピュータネットワーク図におけるインターネットの描かれ方に基づいたインターネットの隠喩として使われ、複雑なインフラストラクチャを隠し持つことの抽象的概念である。
【００９７】
ゲーム処理サーバ（ＧＰＳ）（または単純に「ゲームサーバ」）は、ゲームクライアントにより、シングルプレイヤ及びマルチプレイヤのビデオゲームをプレイするために使用される。インターネット上でプレイされる大抵のビデオゲームは、ゲームサーバへの接続を介して作動する。通常、ゲームは、プレイヤからデータを収集し、収集したデータを他のプレイヤに配信する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホストする別個のサーバが必要となる。別の実施形態では、ＧＰＳは、プレイヤ及びそれぞれのゲームプレイデバイスの間の通信を確立し、集中型ＧＰＳに依存せずに情報を交換する。
【００９８】
専用ＧＰＳは、クライアントとは無関係に稼働するサーバである。このようなサーバは、通常、データセンタに配置された専用ハードウェア上で稼働し、より多くの帯域幅及び専用処理能力を提供する。専用サーバは、大抵のＰＣベースマルチプレイヤゲームのゲームサーバをホストするのに、好ましい方法である。大規模なマルチプレイヤオンラインゲームは、ゲームタイトルを所有するソフトウェア会社が通常ホストする専用サーバ上で作動し、専用サーバがコンテンツを制御及び更新することを可能にする。
【００９９】
ユーザは、少なくともＣＰＵ、ディスプレイ、及びＩ／Ｏを含むクライアントデバイスにより、リモートサービスにアクセスする。クライアントデバイスは、ＰＣ、携帯電話、ネットブック、ＰＤＡなどであってもよい。１つの実施形態では、ゲームサーバ上で実行されるネットワークは、クライアントによって使用されるデバイスのタイプを認識し、採用される通信方法を調整する。別の事例では、クライアントデバイスは、ＨＴＭＬなどの標準的な通信方法を使用して、インターネットを介してゲームサーバ上のアプリケーションにアクセスする。
【０１００】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な一般消費者向け電気製品、小型コンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成により実施されてもよい。本開示はまた、有線ベースネットワークまたは無線ネットワークを介してリンクされたリモート処理デバイスによりタスクが行われる分散型コンピューティング環境においても、実施することができる。
【０１０１】
所与のビデオゲームまたはゲームアプリケーションは、特定のプラットフォーム及び特定の関連コントローラデバイス用に開発されてもよいことを、理解されたい。しかしながら、このようなゲームが、本明細書において提示されるようなゲームクラウドシステムを介して利用可能となる場合、ユーザは、異なるコントローラデバイスでビデオゲームにアクセスすることができる。例えば、あるゲームは、ゲームコンソール及びその関連コントローラ用に開発された可能性があるが、ユーザは、キーボード及びマウスを利用してパーソナルコンピュータから、クラウドベースバージョンのゲームにアクセスすることができる。このようなシナリオでは、入力パラメータ設定により、ユーザが利用可能なコントローラデバイス（この事例ではキーボード及びマウス）により生成されてもよい入力から、ビデオゲームの実行で受入れ可能な入力へ、マッピングが定義されてもよい。
【０１０２】
別の実施例では、ユーザは、タブレットコンピューティングデバイス、タッチスクリーンスマートフォン、または他のタッチスクリーン駆動デバイスを介して、クラウドゲームシステムにアクセスすることができる。この場合、クライアントデバイス及びコントローラデバイスは、同一のデバイス内に共に統合され、検出されたタッチスクリーン入力／ジェスチャにより入力が提供される。このようなデバイスでは、入力パラメータ設定により、ビデオゲームのゲーム入力に対応する特定のタッチスクリーン入力が定義されてもよい。例えば、ユーザがタッチしてゲーム入力を生成することができるタッチスクリーン上の位置を示すために、ビデオゲームの実行中に、ボタン、方向パッド、または他の種類の入力要素が、表示またはオーバーレイされてもよい。特定の方向のスワイプまたは特定のタッチ動作などのジェスチャも、ゲーム入力として検出されてもよい。１つの実施形態では、タッチスクリーン上での制御操作にユーザを慣れさせるために、例えばビデオゲームのゲームプレイを始める前に、ゲームプレイのタッチスクリーンを介して入力を提供する方法を示すチュートリアルが、ユーザに提供されてもよい。
【０１０３】
いくつかの実施形態では、クライアントデバイスは、コントローラデバイスの接続ポイントとして機能する。すなわち、コントローラデバイスは、無線接続または有線接続を介してクライアントデバイスと通信し、コントローラデバイスからクライアントデバイスへ入力を送信する。今度はクライアントデバイスが、これらの入力を処理し、次いで入力データを、ネットワークを介して（例えばルータなどのローカルネットワークデバイスを介してアクセスされる）、クラウドゲームサーバへ送信してもよい。しかしながら、別の実施形態では、コントローラ自体が、このような入力をまずクライアントデバイスを通して通信する必要なく、ネットワークを介して入力を直接クラウドゲームサーバに通信する能力を有するネットワークデバイスであってもよい。例えば、コントローラは、ローカルネットワークデバイス（前述のルータなど）に接続して、クラウドゲームサーバとデータを送受信することができる。従って、クライアントデバイスは依然として、クラウドベースのビデオゲームからのビデオ出力を受信して、それをローカルディスプレイにレンダリングする必要はあるが、コントローラがクライアントデバイスを迂回して、ネットワークを介して直接クラウドゲームサーバに入力を送信することを可能にすることにより、入力待機時間が削減されてもよい。
【０１０４】
１つの実施形態では、ネットワーク化されたコントローラ及びクライアントデバイスは、特定の種類の入力を直接コントローラからクラウドゲームサーバへ、及び他の種類の入力をクライアントデバイスを介して送信するように構成することができる。例えば、コントローラ自体とは別の任意の追加のハードウェアまたは処理に依存しない検出による入力は、クライアントデバイスを迂回して、ネットワークを介して直接コントローラからクラウドゲームサーバへ送信することができる。このような入力には、ボタン入力、ジョイスティック入力、埋込型動作検出入力（例えば加速度計、磁力計、ジャイロスコープ）などが含まれてもよい。しかしながら、追加のハードウェアを利用する、またはクライアントデバイスによる処理を要する入力は、クライアントデバイスによりクラウドゲームサーバへ送信されてもよい。これには、クラウドゲームサーバへ送信する前にクライアントデバイスにより処理されてもよい、ゲーム環境から取り込まれたビデオまたは音声が含まれてもよい。更に、コントローラの位置及び動作を検出するために、コントローラの動作検出ハードウェアからの入力が、取り込まれたビデオと併せてクライアントデバイスにより処理され、処理された入力はその後、クライアントデバイスによりクラウドゲームサーバへ通信される。様々な実施形態によるコントローラデバイスも、クライアントデバイスから、または直接クラウドゲームサーバから、データ（例えばフィードバックデータ）を受信してもよいことを理解されたい。
【０１０５】
図９は、本開示の様々な実施形態従った、ゲームシステム９００のブロック図である。ゲームシステム９００は、ネットワーク９１５を介して１つ以上のクライアント９１０に対し、シングルプレイヤモードまたはマルチプレイヤモードなどで、ビデオストリームを提供するように構成される。ゲームシステム９００は典型的には、ビデオサーバシステム９２０及び任意選択のゲームサーバ９２５を含む。ビデオサーバシステム９２０は、最小限のサービス品質で１つ以上のクライアント９１０にビデオストリームを提供するように構成される。例えば、ビデオサーバシステム９２０は、ビデオゲームの状態またはビデオゲーム内の視点を変更するゲームコマンドを受信し、この状態変更を反映させた更新済ビデオストリームを、最小の遅延時間でクライアント９１０に提供してもよい。ビデオサーバシステム９２０は、未だ定義されていないフォーマットを含む、多種多様な代替ビデオフォーマットでビデオストリームを提供するように構成されてもよい。更に、ビデオストリームは、多種多様なフレームレートでユーザに提示されるように構成されたビデオフレームを含んでもよい。通常のフレームレートは、毎秒３０フレーム、毎秒８０フレーム、及び毎秒８２０フレームである。しかしながら、本開示の代替的実施形態には、より高いまたはより低いフレームレートが含まれる。
【０１０６】
本明細書で個別に９１０Ａ、９１０Ｂなどと称されるクライアント９１０には、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、ハンドヘルドゲームプレイデバイス及び／または同様のものが含まれてもよい。通常、クライアント９１０は、符号化された（すなわち圧縮された）ビデオストリームを受信し、ビデオストリームを復号化し、得られたビデオをユーザ、例えばゲームのプレイヤに提示するように構成される。符号化されたビデオストリームを受信し、及び／またはビデオストリームを復号化する処理は通常、クライアントの受信バッファに個々のビデオフレームを記憶することを含む。ビデオストリームは、クライアント９１０に統合されたディスプレイ、またはモニタもしくはテレビなどの別個のデバイス上で、ユーザに提示されてもよい。クライアント９１０は、任意選択で、２人以上のゲームプレイヤをサポートするように構成される。例えば、ゲームコンソールは、２人、３人、４人以上の同時プレイヤに対応するように構成されてもよい。これらのプレイヤのそれぞれは、別個のビデオストリームを受信してもよい、または単一のビデオストリームが、各プレイヤのために特別に生成された、例えば各プレイヤの視点に基づいて生成されたフレームの領域を含んでもよい。クライアント９１０は、任意選択で地理的に分散される。ゲームシステム９００に含まれるクライアントの数は、１つまたは２つから、数千、数万、またはそれ以上まで、幅広く異なり得る。本明細書で使用される用語「ゲームプレイヤ」は、ゲームをプレイする人を指すために用いられ、用語「ゲームプレイデバイス」は、ゲームをプレイするのに使用されるデバイスを指すために用いられる。いくつかの実施形態では、ゲームプレイデバイスは、協働してユーザにゲーム体験を届ける複数のコンピューティングデバイスを指してもよい。例えば、ゲームコンソール及びＨＭＤは、ビデオサーバシステム９２０と協働して、ＨＭＤを通して見るゲームを配信してもよい。１つの実施形態では、ゲームコンソールは、ビデオサーバシステム９２０からビデオストリームを受信し、ゲームコンソールは、レンダリングのためにＨＭＤに対し、ビデオストリームまたはビデオストリームの更新を転送する。
【０１０７】
クライアント９１０は、ネットワーク９１５を介してビデオストリームを受信するように構成される。ネットワーク９１５は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、広域ネットワーク、及プライベートネットワーク及び／または同様のものを含む任意の種類の通信ネットワークであってもよい。典型的な実施形態では、ビデオストリームは、ＴＣＰ／ＩＰまたはＵＤＰ／ＩＰなどの標準プロトコルを介して通信される。あるいは、ビデオストリームは、独自の規格を介して通信される。
【０１０８】
クライアント９１０の典型的な例には、プロセッサと、不揮発性メモリと、ディスプレイと、復号化ロジックと、ネットワーク通信機能と、入力デバイスとを備えるパーソナルコンピュータが挙げられる。復号化ロジックには、ハードウェア、ファームウェア、及び／またはコンピュータ可読媒体に記憶されたソフトウェアが含まれてもよい。ビデオストリームを復号化（及び符号化）するシステムは、当技術分野において周知のものであり、使用される特定の符号化方式に応じて異なる。
【０１０９】
クライアント９１０は、必須ではないが、受信したビデオを修正するように構成されたシステムを更に含んでもよい。例えば、クライアントは、１つのビデオをもう１つのビデオ上にオーバーレイする、ビデオを切り取る及び／または同様のことなど、更なるレンダリングを実行するように構成されてもよい。例えば、クライアント９１０は、Ｉフレーム、Ｐフレーム、及びＢフレームなどの様々な種類のビデオフレームを受信し、これらのフレームを処理して、ユーザに表示するための画像にするように構成されてもよい。いくつかの実施形態では、クライアント９１０のメンバは、ビデオストリームに対する更なるレンダリング、シェーディング、３Ｄへの変換、または同様の動作を実行するように構成される。クライアント９１０のメンバは任意選択で、複数の音声ストリームまたはビデオストリームを受信するように構成される。クライアント９１０の入力デバイスには、例えば、片手用ゲームコントローラ、両手用ゲームコントローラ、ジェスチャ認識システム、凝視認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバックデバイス、動作及び／または位置感知デバイス、マウス、タッチスクリーン、ニューラルインタフェース、カメラ、開発中の入力デバイス、及び／または同様のものが含まれてもよい。
【０１１０】
クライアント９１０によって受信されたビデオストリーム（及び任意選択でオーディオストリーム）は、ビデオサーバシステム９２０によって生成され、提供される。本明細書の別の箇所で更に説明されるように、このビデオストリームは、ビデオフレームを含む（及び音声ストリームは音声フレームを含む）。ビデオフレームは、ユーザに表示される画像に有意義に寄与するように構成される（例えばビデオフレームは、好適なデータ構造の画素情報を含む）。本明細書で使用される用語「ビデオフレーム」は、ユーザに示される画像に寄与する、例えば作用するように構成された情報を主に含むフレームを指すために使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、「音声フレーム」にも適用することができる。
【０１１１】
クライアント９１０は、典型的には、ユーザからの入力を受信するように構成される。これらの入力は、ビデオゲームの状態を変化させる、あるいはゲームプレイに作用するように構成されたゲームコマンドを含んでもよい。ゲームコマンドは、入力デバイスを使用して受信することができ、及び／またはクライアント９１０上で実行されるコンピューティング命令により自動的に生成されてもよい。受信したゲームコマンドは、クライアント９１０からネットワーク９１５を介してビデオサーバシステム９２０及び／またはゲームサーバ９２５に通信される。例えば、いくつかの実施形態では、ゲームコマンドは、ビデオサーバシステム９２０を介してゲームサーバ９２５に通信される。いくつかの実施形態では、ゲームコマンドの別個のコピーは、クライアント９１０からゲームサーバ９２５及びビデオサーバシステム９２０に通信される。ゲームコマンドの通信は、任意選択でコマンドの識別に依存する。ゲームコマンドは、任意選択で、クライアント９１０Ａに音声ストリームまたはビデオストリームを提供するために使用される経路または通信チャネルとは異なる経路または通信チャネルを介して、クライアント９１０Ａから通信される。
【０１１２】
ゲームサーバ９２５は、任意選択で、ビデオサーバシステム９２０とは異なるエンティティによって運営される。例えば、ゲームサーバ９２５は、マルチプレイヤゲームのパブリッシャによって運営されてもよい。この例では、ビデオサーバシステム９２０は、任意選択で、ゲームサーバ９２５によってクライアントとして見られ、任意選択で、ゲームサーバ９２５の視点からは従来技術のゲームエンジンを実行する従来技術のクライアントであると見えるように構成される。ビデオサーバシステム９２０とゲームサーバ９２５との間の通信は、任意選択で、ネットワーク９１５を介して行われる。このように、ゲームサーバ９２５は、ゲームステート情報を複数のクライアントに送信する従来技術のマルチプレイヤゲームサーバとすることができ、この複数のクライアントのうちの１つがゲームサーバシステム９２０である。ビデオサーバシステム９２０は、ゲームサーバ９２５の複数のインスタンスと同時に通信するように構成されてもよい。例えば、ビデオサーバシステム９２０は、異なるユーザに複数の異なるビデオゲームを提供するように構成されてもよい。これらの異なるビデオゲームのそれぞれは、異なるゲームサーバ９２５によりサポートされてもよく、及び／または異なるエンティティにより発行されてもよい。いくつかの実施形態では、ビデオサーバシステム９２０の地理的に分散されたいくつかのインスタンスは、複数の異なるユーザにゲームビデオを提供するように構成される。ビデオサーバシステム９２０のこれらのインスタンスのそれぞれは、ゲームサーバ９２５の同一のインスタンスと通信してもよい。ビデオサーバシステム９２０と１つ以上のゲームサーバ９２５との間の通信は、任意選択で、専用の通信チャネルを介して行われる。例えば、ビデオサーバシステム９２０は、これらの２つのシステム間の通信に専用の高帯域幅チャネルを介してゲームサーバ９２５に接続されてもよい。
【０１１３】
ビデオサーバシステム９２０は、少なくともビデオソース９３０、Ｉ／Ｏデバイス９４５、プロセッサ９５０、及び非一時的ストレージ９５５を含む。ビデオサーバシステム９２０は、１つのコンピューティングデバイスを含んでもよく、または複数のコンピューティングデバイス間に分散されてもよい。これらのコンピューティングデバイスは任意選択で、ローカルエリアネットワークなどの通信システムを介して接続される。
【０１１４】
ビデオソース９３０は、例えばストリーミングビデオ、または動画を形成する一連のビデオフレームといった、ビデオストリームを提供するように構成される。いくつかの実施形態では、ビデオソース９３０は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤからゲームコマンドを受信し、受信したコマンドに基づいてビデオゲームの状態の複製を維持するように構成される。このゲーム状態は、ゲーム環境内のオブジェクトの位置、並びに通常は視点を含む。ゲーム状態はまた、オブジェクトの特性、画像、色、及び／またはテクスチャリングも含んでもよい。
【０１１５】
ゲーム状態は通常、ゲームルールと共に、移動、方向転換、攻撃、焦点の設定、対話、使用、及び／または同種のことのゲームコマンドに基づいて、維持される。ゲームエンジンの一部は任意選択で、ゲームサーバ９２５内に配置される。ゲームサーバ９２５は、地理的に分散されたクライアントを使用する複数のプレイヤから受信したゲームコマンドに基づき、ゲームのステートのコピーを維持してもよい。これらの場合、ゲームステートは、ゲームサーバ９２５によってビデオソース９３０に提供され、そこでゲームステートのコピーが記憶され、レンダリングが実行される。ゲームサーバ９２５は、ネットワーク９１５を介してクライアント９１０から直接ゲームコマンドを受信してもよく、及び／またはビデオサーバシステム９２０を介してゲームコマンドを受信してもよい。
【０１１６】
ビデオソース９３０は、典型的には、レンダリングロジック、例えば、ハードウェア、ファームウェア、及び／またはストレージ９５５などのコンピュータ可読媒体上に記憶されたソフトウェアなどを含む。このレンダリングロジックは、ゲーム状態に基づいて、ビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全てまたは一部は、任意選択で、グラフィック処理ユニット（ＧＰＵ）内に配置される。レンダリングロジックは通常、ゲーム状態及び視点に基づいて、オブジェクト間の３次元空間的関係を判定し、及び／または好適なテクスチャリングなどを適用するように構成された処理段階を含む。レンダリングロジックは未処理ビデオを生成し、未処理ビデオは次いで、通常、クライアント９１０に通信する前に符号化される。例えば、未処理ビデオは、Ａｄｏｂｅ  Ｆｌａｓｈ（登録商標）規格、．ｗａｖ、Ｈ．２６４、Ｈ．２６３、Ｏｎ２、ＶＰ６、ＶＣ−１、ＷＭＡ、Ｈｕｆｆｙｕｖ、Ｌａｇａｒｉｔｈ、ＭＰＧ−ｘ．Ｘｖｉｄ．ＦＦｍｐｅｇ、ｘ２６４、ＶＰ６−８、ｒｅａｌｖｉｄｅｏ、またはｍｐ３などに従って、符号化されてもよい。符号化処理は、リモートデバイス上のデコーダに配信するために任意選択でパッケージ化されたビデオストリームを生成する。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。典型的なフレームサイズには、８００×６００、１２８０×７２０（例えば７２０ｐ）、１０２４×７６８が挙げられるが、任意の他のフレームサイズも使用されてもよい。フレームレートは、１秒あたりのビデオフレームの数である。ビデオストリームは、様々な種類のビデオフレームを含んでもよい。例えば、Ｈ．２６４規格は、「Ｐ」フレーム及び「Ｉ」フレームを含む。Ｉフレームは、ディスプレイデバイス上の全てのマクロブロック／画素を更新する情報を含み、一方、Ｐフレームは、その部分集合を更新する情報を含む。Ｐフレームは通常、Ｉフレームよりデータサイズが小さい。本明細書において使用される用語「フレームサイズ」は、フレーム内の画素数を指すことを意味する。用語「フレームデータサイズ」は、フレームを記憶するのに必要なバイト数を指すために使用される。
【０１１７】
他の実施形態では、ビデオソース９３０は、カメラなどのビデオ記録デバイスを含む。このカメラを使用して、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオが生成されてもよい。結果得られるビデオストリームには、レンダリングされた画像と、スチルカメラまたはビデオカメラを使用して記録された画像との両方が、任意選択で含まれる。ビデオソース９３０はまた、ビデオストリームに含めるために事前に記録したビデオを記憶するように構成されたストレージデバイスも含んでもよい。ビデオソース９３０はまた、例えば人といったオブジェクトの動作または位置を検出するように構成された動作または位置感知デバイスと、検出された動作及び／または位置に基づいてゲーム状態を判定し、またはビデオを生成するように構成されたロジックとを含んでもよい。
【０１１８】
ビデオソース９３０は、任意選択で、他のビデオ上に配置されるように構成されたオーバーレイを提供するように構成される。例えば、これらのオーバーレイには、コマンドインタフェース、ログイン指示、ゲームプレイヤへのメッセージ、他のゲームプレイヤの画像、他のゲームプレイヤのビデオフィード（例えばウェブカメラビデオ）が含まれてもよい。クライアント９１０Ａがタッチスクリーンインタフェースまたは凝視検出インタフェースを含む実施形態では、オーバーレイには、仮想キーボード、ジョイスティック、タッチパッド及び／または同様のものが含まれてもよい。オーバーレイの１つの実施例では、プレイヤの声が音声ストリームにオーバーレイされる。ビデオソース９３０は任意選択で、１つ以上の音声源を更に含む。
【０１１９】
ビデオサーバシステム９２０が複数のプレイヤからの入力に基づいてゲーム状態を維持するように構成された実施形態では、ビューの位置及び方向を含む視点は、各プレイヤで異なり得る。ビデオソース９３０は、任意選択で、各プレイヤの視点に基づいて、別個のビデオストリームを各プレイヤに提供するように構成される。更に、ビデオソース９３０は、異なるフレームサイズ、フレームデータサイズ、及び／または符号化をクライアント９１０のそれぞれに提供するように構成されてもよい。ビデオソース９３０は、任意選択で、３Ｄビデオを提供するように構成される。
【０１２０】
Ｉ／Ｏデバイス９４５は、ビデオサーバシステム９２０が、ビデオ、コマンド、情報の要求、ゲームステート、凝視情報、デバイスの動き、デバイスの位置、ユーザの動き、クライアント識別子、プレイヤ識別子、ゲームコマンド、セキュリティ情報、オーディオ、及び／または同様のものなどの情報を送信及び／または受信するように構成される。Ｉ／Ｏデバイス９４５は通常、ネットワークカードまたはモデムなどの通信ハードウェアを含む。Ｉ／Ｏデバイス９４５は、ゲームサーバ９２５、ネットワーク９１５、及び／またはクライアント９１０と通信するように構成される。
【０１２１】
プロセッサ９５０は、本明細書で論述されるビデオサーバシステム９２０の様々な構成要素内に含まれるロジック、例えばソフトウェアを実行するように構成される。例えば、プロセッサ９５０は、ビデオソース９３０、ゲームサーバ９２５及び／またはクライアントクォリファイア９６０の機能を実行するためにソフトウェア命令を使用してプログラムされてもよい。ビデオサーバシステム９２０は、任意選択で、プロセッサ９５０の２つ以上のインスタンスを含む。プロセッサ９５０はまた、ビデオサーバシステム９２０が受信したコマンドを実行するように、または本明細書において論述されるゲームシステム９００の様々な要素の動作を調整するように、ソフトウェア命令でプログラムされてもよい。プロセッサ９５０は、１つ以上のハードウェアデバイスを含んでもよい。プロセッサ９５０は、電子プロセッサである。
【０１２２】
ストレージ９５５は、非一時的なアナログ及び／またはデジタルストレージデバイスを含む。例えば、ストレージ９５５は、ビデオフレームを記憶するように構成されたアナログストレージデバイスを含んでもよい。ストレージ９５５は、例えばハードドライブ、光学ドライブ、またはソリッドステートストレージといったコンピュータ可読デジタルストレージを含んでもよい。ストレージ９５５は、ビデオフレーム、人工フレーム、ビデオフレームと人工フレームの両方を含むビデオストリーム、音声フレーム、及び／または音声ストリームなどを（例えば好適なデータ構造またはファイルシステムで）記憶するように構成される。ストレージ９５５は、任意選択で、複数のデバイス間に分散される。いくつかの実施形態では、ストレージ９５５は、本明細書の他の箇所で論じられるビデオソース９３０のソフトウェア構成要素を記憶するように構成される。これらの構成要素は、必要に応じてプロビジョニングできるように準備された形式で記憶されてもよい。
【０１２３】
ビデオサーバシステム９２０は、任意選択で、クライアントクォリファイア９６０を更に含む。クライアントクォリファイア９６０は、クライアント９１０Ａまたは９１０Ｂなどのクライアントの能力をリモートで判定するように構成される。これらの能力は、クライアント９１０Ａ自体の能力と、クライアント９１０Ａとビデオサーバシステム９２０との間の１つ以上の通信チャネルの能力との両方を含むことができる。例えば、クライアントクォリファイア９６０は、ネットワーク９１５を介して通信チャネルをテストするように構成されてもよい。
【０１２４】
クライアントクォリファイア９６０は、クライアント９１０Ａの能力を手動または自動で判定する（例えば、発見する）ことができる。手動判定は、クライアント９１０Ａのユーザと通信して、ユーザに能力を提供するように依頼することを含む。例えば、いくつかの実施形態では、クライアントクォリファイア９６０は、クライアント９１０Ａのブラウザ内に画像、テキスト、及び／または同様のものを表示するように構成される。１つの実施形態では、クライアント９１０Ａは、ブラウザを含むＨＭＤである。別の実施形態では、クライアント９１０Ａは、ＨＭＤ上に表示されてもよいブラウザを有するゲームコンソールである。表示されるオブジェクトは、ユーザに、クライアント９１０Ａのオペレーティングシステム、プロセッサ、ビデオデコーダの種類、ネットワーク接続の種類、ディスプレイの解像度などの情報を入力するように要求する。ユーザによって入力された情報は、クライアントクォリファイア９６０に返信される。
【０１２５】
自動判定は、例えば、クライアント９１０Ａ上のエージェントの実行によって、及び／またはクライアント９１０Ａへのテストビデオの送信によって行われてもよい。エージェントは、ウェブページに埋め込まれた、またはアドオンとしてインストールされたジャバスクリプトなどのコンピューティング命令を含んでもよい。エージェントは、任意選択で、クライアントクォリファイア９６０により提供される。様々な実施形態では、エージェントは、クライアント９１０Ａの処理電力、クライアント９１０Ａの復号及び表示能力、クライアント９１０Ａとビデオサーバシステム９２０との間の通信チャネルの遅延時間の信頼性及び帯域幅、クライアント９１０Ａの表示方式、クライアント９１０Ａ上に存在するファイアウォール、クライアント９１０Ａのハードウェア、クライアント９１０Ａ上で実行されるソフトウェア、クライアント９１０Ａ内のレジストリエントリ、並びに／または同様のものを発見することができる。
【０１２６】
クライアントクォリファイア９６０は、ハードウェア、ファームウェア、及び／またはコンピュータ可読媒体上に記憶されたソフトウェアを含む。クライアントクォリファイア９６０は、任意選択で、ビデオサーバシステム９２０の１つ以上の他の要素とは別個のコンピューティングデバイス上に配置される。例えば、いくつかの実施形態では、クライアントクォリファイア９６０は、クライアント９１０とビデオサーバシステム９２０の２つ以上のインスタンスとの間の通信チャネルの特性を判定するように構成される。これらの実施形態では、クライアントクォリファイアによって見出された情報を使用して、ビデオサーバシステム９２０のどのインスタンスがクライアント９１０のうちの１つにストリーミングビデオを供給するのに最も適しているかを判定することができる。
【０１２７】
ＶＲコンテンツのマルチサーバクラウドＶＲストリーミングを実行するための分割階層グラフィックプロセッサシステムを実装するために特定の実施形態が提供されてきたが、これらは、限定としてではなく例として説明されている。本開示を読んだ当業者は、本開示の趣旨及び範囲に含まれる追加の実施形態を実現するであろう。
【０１２８】
本明細書で定義される様々な実施形態は、本明細書で開示される様々な特徴を使用する特定の実施態様に組み合わされてもよい、または組み立てられ得ることを、理解されたい。従って、提供される実施例は、いくつかの可能な実施例にすぎず、様々な要素を組み合わせることでより多くの実施態様を定義することが可能な様々な実施態様に限定されない。いくつかの実施例では、いくつかの実施態様は、開示されたまたは同等の実施態様の趣旨から逸脱することなく、より少ない要素を含んでもよい。
【０１２９】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な一般消費者向け電気製品、小型コンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成により実施されてもよい。本開示の実施形態はまた、有線ベースまたは無線のネットワークを介してリンクされるリモート処理デバイスによりタスクが行われる分散型コンピューティング環境においても、実施することができる。
【０１３０】
前述の実施形態を念頭に置いて、本開示の実施形態は、コンピュータシステムに記憶されたデータを伴う様々なコンピュータ実施動作を用い得ることを、理解されたい。これらの動作は、物理量の物理的操作を要する動作である。本開示の実施形態の一部を形成する、本明細書で説明される動作のうちのいずれも、有用な機械動作である。開示の実施形態はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築されてもよい、または装置は、コンピュータに記憶されたコンピュータプログラムにより選択的に起動または構成される汎用コンピュータであってもよい。具体的には、様々な汎用機械を、本明細書の教示に従って書かれたコンピュータプログラムと共に使用することができる、あるいは、必要な動作を実行するためにより専門的な装置を構築するほうがより好都合である場合もある。
【０１３１】
本開示は、コンピュータ可読媒体上のコンピュータ可読コードとして具体化することもできる。コンピュータ可読媒体は、データを記憶することができ、その後コンピュータシステムによって読み取ることができる任意のデータ記憶デバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読み取り専用メモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、並びに他の光学式データ記憶デバイス及び非光学式データ記憶デバイスが含まれる。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で記憶及び実行されるように、ネットワーク接続されたコンピュータシステム上に分散されたコンピュータ可読有形媒体が含まれてもよい。
【０１３２】
方法動作は特定の順序で説明されたが、オーバーレイ動作の処理が所望の方法で実行される限り、動作間に他の維持管理動作が実行されてもよく、または動作がわずかに異なる時間に起こるように調整されてもよく、またはシステム内に動作を分散することで、様々な処理関連間隔で処理動作が起こることを可能にしてもよいことを、理解されたい。
【０１３３】
前述の開示は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。従って、本実施形態は、限定ではなく例示としてみなされるべきであり、本開示の実施形態は、本明細書に提供される詳細に限定されるものではなく、添付の特許請求の範囲内及び均等物内で変更されてもよい。
【図１Ａ】
2021525911.tif 000003
【図１Ｂ】
2021525911.tif 000004
【図１Ｃ】
2021525911.tif 000005
【図２】
2021525911.tif 000006
【図３】
2021525911.tif 000007
【図４】
2021525911.tif 000008
【図５】
2021525911.tif 000009
【図６】
2021525911.tif 000010
【図７】
2021525911.tif 000011
【図８】
2021525911.tif 000012
【図９】
2021525911.tif 000013
【国際調査報告】
2021525911.tif 000014
2021525911.tif 000015
2021525911.tif 000016