(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-27
(45)【発行日】2024-01-11
(54)【発明の名称】GPUの1つまたは複数のパラメータを調整するためのシステム及び方法
(51)【国際特許分類】
G06T 15/00 20110101AFI20231228BHJP
A63F 13/52 20140101ALI20231228BHJP
G06F 9/50 20060101ALI20231228BHJP
【FI】
G06T15/00 501
A63F13/52
G06F9/50 120Z
(21)【出願番号】P 2022525523
(86)(22)【出願日】2020-11-16
(86)【国際出願番号】 US2020060674
(87)【国際公開番号】W WO2021101826
(87)【国際公開日】2021-05-27
【審査請求日】2022-04-28
(32)【優先日】2019-11-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】ハグランド、トルゲイル
【審査官】粕谷 満成
(56)【参考文献】
【文献】国際公開第2005/038638(WO,A1)
【文献】特開2015-186550(JP,A)
【文献】米国特許出願公開第2019/0308099(US,A1)
【文献】特開2018-106591(JP,A)
【文献】特開2017-221553(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00
A63F 13/52
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
グラフィック処理ユニット(GPU)によってレンダリングされるコンテンツの複雑さを調整するための方法であって、
前記GPUによって、ゲームのシーンの画像フレームを生成するために中央処理ユニット(CPU)から命令を受信することと、
前記CPUからの命令の受信に応答して、前記画像フレームの第1のレンダリング部分を前記GPUによって生成することと、
前記画像フレームの前記第1のレンダリング部分の前記生成中且つ前記画像フレームの第2のレンダリング部分の生成前に前記画像フレームの生成に関する1つまたは複数のメトリックを追跡することと、
前記画像フレームの前記第1のレンダリング部分の前記生成中且つ前記画像フレームの第2のレンダリング部分の生成前に前記第2のレンダリング部分の1つまたは複数のシェーダパラメータが変更されるべきであることを判定することであって、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータは、前記1つまたは複数のメトリックに基づいて変更されるべきであると判定される、判定することと、
前記画像フレームの前記第2のレンダリング部分の生成中に、前記画像フレームの前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを前記GPUによって変更することであって、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータは、前記画像フレームの前記第1のレンダリング部分の1つまたは複数のシェーダパラメータを変更せずに変更され、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを変更することにより、前記GPUによって生成される前記画像フレームの複雑さのレベルが変化する、調整することと、
を含む、方法。
【請求項2】
前記1つまたは複数のメトリックが、前記画像フレームの前記第1のレンダリング部分の前記生成中に前記GPUによって消費される電力量を識別するために追跡され、前記方法は、
前記画像フレームの前記第1のレンダリング部分の前記生成中に前記GPUによって消費された前記電力量を分析して、前記電力量が所定の閾値レベルを超えているかどうかを判定することをさらに含み、前記電力量が前記所定の閾値レベルを超えていると判定すると、前記第2のレンダリング部分の1つまたは複数のシェーダパラメータを前記変更することが実行される、請求項1に記載の方法。
【請求項3】
前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータが、前記画像フレームの前記第2のレンダリング部分の前記生成中にレイトレーシングが実施される回数、前記画像フレームの前記第2のレンダリング部分の前記生成中の前記画像フレームの前記第2のレンダリング部分の解像度、前記画像フレームの前記第2のレンダリング部分の前記生成中にレンダリングされる仮想オブジェクトの数、前記画像フレームの前記第2のレンダリング部分の前記生成中に前記仮想オブジェクトがレンダリングされる優先順位、またはその2つ以上の組み合わせを含む、請求項1に記載の方法。
【請求項4】
前記優先順位は、前記仮想オブジェクトがレンダリングされる距離に基づき、より近い距離でレンダリングされる前記仮想オブジェクトの1つが、より遠い距離でレンダリングされる前記仮想オブジェクトの別の1つよりも優先順位が高い、請求項3に記載の方法。
【請求項5】
前記1つまたは複数のシェーダパラメータを前記変更することは、
前記GPUによって消費される電力量が所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分の前記生成中にレイトレーシングが実施される回数を減らすこと、
前記GPUによって消費される前記電力量が前記所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分の解像度を下げること、
前記GPUによって消費される前記電力量が前記所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分内にレンダリングされる仮想オブジェクトの数を減らすこと、
前記GPUによって消費される前記電力量が前記所定のレベルよりも大きいと判定すると、前記仮想オブジェクトのレンダリングに優先順位を付けること、または、
その2つ以上の組み合わせによって複雑さのレベルを低下させることを含む、請求項1に記載の方法。
【請求項6】
前記画像フレームの前記第1のレンダリング部分の前記生成中にノードとクライアントデバイスとの間でパケットを転送するレイテンシの量を識別するために前記1つまたは複数のメトリックが追跡され、前記方法は、
前記画像フレームの前記第1のレンダリング部分の前記生成中に前記レイテンシの量を分析して、前記レイテンシの量が所定の閾値レベルを超えているかどうかを判定することをさらに含み、前記レイテンシの量が前記所定の閾値レベルを超えていると判定すると、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを前記変更することが実行される、請求項1に記載の方法。
【請求項7】
前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを前記変更することは、
ノードとクライアントデバイスとの間でパケットを転送するレイテンシの量が所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分内でレイトレーシングが実施される回数を減らすこと、
前記レイテンシの量が前記所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分の解像度を下げること、
前記レイテンシの量が前記所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分内にレンダリングされる仮想オブジェクトの数を減らすこと、
前記レイテンシの量が前記所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分内の前記仮想オブジェクトのレンダリングに優先順位を付けること、または、
その2つ以上の組み合わせによって前記複雑さのレベルを低下させることを含む、請求項1に記載の方法。
【請求項8】
前記1つまたは複数のメトリックが、前記画像フレームの前記第1のレンダリング部分の前記生成中に前記GPUの温度の量を識別するために追跡され、前記方法は、
前記画像フレームの前記第1のレンダリング部分の前記生成中に前記温度の量を分析して、前記温度の量が所定の閾値レベルを超えているかどうかを判定することをさらに含み、前記温度の量が前記所定の閾値レベルを超えていると判定すると、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを前記変更することが実行される、請求項1に記載の方法。
【請求項9】
前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを前記変更することは、
前記処理中に前記GPUの温度の量が所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分内でレイトレーシングが実施される回数を減らすこと、
前記温度の量が前記所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分の解像度を下げること、
前記温度の量が前記所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分内にレンダリングされる仮想オブジェクトの数を減らすこと、
前記温度の量が前記所定のレベルよりも大きいと判定すると、前記画像フレームの前記第2のレンダリング部分内の前記仮想オブジェクトのレンダリングに優先順位を付けること、または、
その2つ以上の組み合わせによって前記複雑さのレベルを低下させることを含む、請求項1に記載の方法。
【請求項10】
前記1つまたは複数のシェーダパラメータを前記変更することは、
前記画像フレームの前記第2のレンダリング部分内でレイトレーシングが実施される回数を減らすこと、
前記画像フレームの前記第2のレンダリング部分の解像度を下げること、
前記画像フレームの前記第2のレンダリング部分内にレンダリングされる仮想オブジェクトの数を減らすこと、
前記画像フレームの前記第2のレンダリング部分内の前記仮想オブジェクトのレンダリングに優先順位を付けること、または、
その2つ以上の組み合わせによって前記複雑さのレベルを低下させることを含む、請求項1に記載の方法。
【請求項11】
前記画像フレームの前記第2のレンダリング部分は、複数のピクセルを含み、前記複数のピクセルはそれぞれ、前記画像フレームの前記第2のレンダリング部分の前記生成中に色、陰影、及びテクスチャを与えられる、請求項1に記載の方法。
【請求項12】
前記1つまたは複数のメトリックが、前記画像フレームの前記第1のレンダリング部分の前記生成中にコンピュータネットワークを介してユーザ入力が受信されるかどうかを判定するために追跡され、前記方法が、
前記ユーザ入力を分析して、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを前記変更するかどうかを判定することをさらに含み、前記ユーザ入力を分析することは、次の画像フレームが前記ユーザ入力に基づいて生成されるべきであるかどうかを判定することを含み、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを前記変更することは、前記次の画像フレームが生成されるべきであると判定されると実行される、請求項1に記載の方法。
【請求項13】
前記画像フレームの前記第1のレンダリング部分の前記1つまたは複数のシェーダパラメータを前記変更することは、前記GPUに結合されたプロセッサから受信した品質調整信号(QAS)に応答してなされる、請求項1に記載の方法。
【請求項14】
グラフィック処理ユニット(GPU)によってレンダリングされるコンテンツの複雑さを調整するためのサーバであって、
前記GPUは、ゲームのシーンの画像フレームを生成するために中央処理ユニット(CPU)から命令を受信するように構成され、前記命令の受信に応答して前記画像フレームの第1のレンダリング部分を生成するためのシェーダを実行するように構成され、前記画像フレームの前記第1のレンダリング部分の前記生成中且つ前記画像フレームの第2のレンダリング部分の生成前に1つまたは複数のメトリックを追跡するように構成され、
前記GPUは、前記画像フレームの前記第1のレンダリング部分の前記生成中且つ前記画像フレームの前記第2のレンダリング部分の生成前に、前記画像フレームの前記第2のレンダリング部分の1つまたは複数のシェーダパラメータが変更されるべきであることを判定するように構成され、前記画像フレームの前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータは、前記1つまたは複数のメトリックに基づいて変更されるべきであると判定され、
前記GPUは、前記画像フレームの前記第2のレンダリング部分の前記生成中に前記画像フレームの前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを変更するように構成され、前記画像フレームの前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータは、前記画像フレームの前記第1のレンダリング部分の1つまたは複数のシェーダパラメータを変更せずに変更され、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータの前記変更により、前記GPUによって生成される前記画像フレームの複雑さのレベルが変化する、サーバ。
【請求項15】
前記画像フレームの前記第2のレンダリング部分が、複数のピクセルを含み、前記複数のピクセルはそれぞれ、前記画像フレームの前記第2のレンダリング部分の前記生成中に色、陰影、及びテクスチャを与えられ、
前記画像フレームの前記第1のレンダリング部分が生成されているとき、前記GPUが、
前記GPUによって消費される電力量を識別するために前記1つまたは複数のメトリックを追跡することと、
前記GPUによって消費された前記電力量を分析して、前記電力量が所定の閾値レベルを超えるかどうかを判定することと、を実行するように構成され、前記GPUが、前記電力量が前記所定の閾値レベルを超えていると判定すると、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを変更するように構成される、請求項14に記載のサーバ。
【請求項16】
前記画像フレームの前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータが、前記画像フレームの前記第2のレンダリング部分の前記生成中にレイトレーシングが実施される回数、前記画像フレームの前記第2のレンダリング部分の解像度、前記画像フレームの前記第2のレンダリング部分の前記生成中にレンダリングされる仮想オブジェクトの数、前記画像フレームの前記第2のレンダリング部分の前記生成中に前記仮想オブジェクトがレンダリングされる優先順位、またはその2つ以上の組み合わせを含む、請求項14に記載のサーバ。
【請求項17】
前記画像フレームの前記第2のレンダリング部分が、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを変更するために、前記GPUによって生成されているときに、前記GPUが、
前記画像フレームの前記第2のレンダリング部分内でレイトレーシングが実施される回数を減らすこと、
前記画像フレームの前記第2のレンダリング部分の解像度を下げること、
前記画像フレームの前記第2のレンダリング部分内にレンダリングされる仮想オブジェクトの数を減らすこと、
前記画像フレームの前記第2のレンダリング部分内の複数の仮想オブジェクトのレンダリングに優先順位を付けること、または、
その2つ以上の組み合わせによって前記複雑さのレベルを低下させるように構成される、請求項14に記載のサーバ。
【請求項18】
グラフィック処理ユニット(GPU)によってレンダリングされるコンテンツの複雑さを調整するためのシステムであって、
中央処理ユニット(CPU)と、
ゲームのシーンの画像フレームを生成するために前記CPUから命令を受信するように構成された前記GPUであって、前記GPUは、前記命令の受信に応答して前記画像フレームの第1のレンダリング部分を生成するためにシェーダを実行するように構成され、前記CPUが、前記画像フレームの前記生成中に1つまたは複数のメトリックを追跡するように構成され、前記GPUは、前記画像フレームの前記第1のレンダリング部分の前記生成中且つ前記画像フレームの第2のレンダリング部分の生成前に前記第2のレンダリング部分の1つまたは複数のシェーダパラメータが変更されるべきであることを判定し、前記画像フレームの前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータは、前記1つまたは複数のメトリックに基づいて変更されるべきであると判定され、前記CPUは、前記1つまたは複数のシェーダパラメータが変更されるべきであるとの判定に基づいて品質調整信号(QAS)を生成して前記GPUに送信するように構成され、前記QASは、前記画像フレームの前記第1のレンダリング部分の生成中且つ前記画像フレームの前記第2のレンダリング部分の生成前に前記GPUに送信される、前記GPUと、
を備え、
前記GPUは、前記QASの受信時に前記画像フレームの前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータを変更するように構成され、前記画像フレームの前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータは、前記画像フレームの前記第1のレンダリング部分の1つまたは複数のシェーダパラメータを変更せずに変更され、前記第2のレンダリング部分の前記1つまたは複数のシェーダパラメータの前記変更により、前記GPUによって生成される前記画像フレームの複雑さのレベルが変化する、システム。
【請求項19】
前記CPUが、前記画像フレームの前記生成中にコンピュータネットワークを介してユーザ入力が受信されるかどうかを判定するように構成され、前記CPUが、前記QASが生成されるかどうかを判定するために前記ユーザ入力を分析するように構成される、請求項18に記載のシステム。
【請求項20】
前記画像フレームの前記第2のレンダリング部分が、前記GPUによって生成されているときに、前記1つまたは複数のシェーダパラメータを調整するために、前記GPUが、
前記画像フレームの前記
第2のレンダリング部分にレイトレーシングが実施される回数を減らすこと、
前記画像フレームの前記
第2のレンダリング部分内の一部の解像度を下げること、
前記画像フレームの前記
第2のレンダリング部分内にレンダリングされる仮想オブジェクトの数を減らすこと、
前記画像フレームの前記
第2のレンダリング部分内の複数の仮想オブジェクトのレンダリングに優先順位を付けること、または、
その2つ以上の組み合わせによって、前記複雑さのレベルを低下させるように構成される、請求項18に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、グラフィック処理ユニット(GPU)の1つまたは複数のパラメータを調整するためのシステム及び方法に関する。
【背景技術】
【0002】
今日のゲーム及びシミュレーションの多くは、ゲームの同じインスタンスに複数のプレーヤが同時に参加することを容易にする。このようなゲームのマルチプレーヤ態様は、プレーヤが相互に通信し、協力し、競争する、及び/または、そうでなければ互いに相互作用し、相互に影響を及ぼす、充実したゲーム体験及び共有される集合的なゲーム環境を提供する。マルチプレーヤゲームのプレーヤは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)などのネットワークを介して接続される。
【0003】
マルチプレーヤゲームは、各プレーヤに対して高品質のゲーム体験を維持しながら、ネットワーク化されたマルチプレーヤゲームに多数のプレーヤを収容する必要性を生み出した。
【発明の概要】
【0004】
本開示の実施形態は、グラフィック処理ユニット(GPU)の1つまたは複数のパラメータを調整するためのシステム及び方法を提供する。
【0005】
本開示の他の態様は、本開示に記載の実施形態の原理を例を挙げて示す下記の詳細な記載を、添付図面と併せて読むと明らかになろう。
【0006】
一実施形態では、GPUの1つまたは複数のパラメータは、画像フレームをレンダリングする動作中に調整される。例えば、画像フレームの詳細は、画像フレームのレンダリング後ではなく、レンダリング中に縮小される。
【0007】
一実施形態では、本明細書で説明されるシステム及び方法は、品質パラメータを含むシェーダデータパラメータを提供する。シェーダは、シェーダの実行中にシェーダデータパラメータの値を選択する。例えば、光線の反復回数、または仮想の草もしくは仮想の葉などの仮想オブジェクトの詳細レベルは、グラフィック処理ユニット(GPU)のビジー状態に基づいてシェーダによって修正される。GPUはシェーダを実行する。別の例として、詳細レベルは、仮想シーン内の仮想オブジェクトの距離に基づいて決定される。説明のために、仮想シーンにおいて、仮想オブジェクトが深さ寸法に沿って遠くにある場合、詳細レベルは、仮想オブジェクトが深さ寸法に近い場合と比較して低くなる。複数のシェーダデータパラメータの複数の値を持つ品質パラメーターマトリックスが生成され、GPUによるシェーダの実行によって実行されるレンダリング動作中に値が適用される。
【0008】
一実施形態では、GPUによってレンダリングされるコンテンツの複雑さを調整するための方法が説明される。方法は、ゲームのシーンの画像フレームをGPUによって処理することを含む。方法は、画像フレームの処理中に画像フレームの処理に関する1つまたは複数のメトリックを追跡することをさらに含む。画像フレームの処理中に、方法は、ゲームエンジンに関連付けられたシェーダに品質調整信号(QAS)を送信することを含む。QASは、GPUによる処理に関連付けられた1つまたは複数のメトリックに基づいて生成される。画像フレームの処理中に、方法は、QASの受信時にシェーダによって1つまたは複数のシェーダパラメータを調整することを含み、該1つまたは複数のシェーダパラメータを調整することにより、GPUによって処理される画像フレームの複雑さのレベルが変化する。
【0009】
一実施形態では、GPUによってレンダリングされるコンテンツの複雑さを調整するためのサーバが説明される。GPUはシェーダを実行して、ゲームのシーンの画像フレームを処理する。GPUは、画像フレームの処理に関する1つまたは複数のメトリックを追跡する。サーバには、GPUに結合された処理ユニットが含まれる。処理ユニットは、QASを生成し、ゲームエンジンに関連付けられたシェーダに送信する。QASは、画像フレームが処理されている間にシェーダに送信され、GPUによる処理に関連付けられた1つまたは複数のメトリックに基づいて生成される。シェーダは、QASの受信時に、1つまたは複数のシェーダパラメータを調整する。画像フレームが処理されている間に1つまたは複数のシェーダパラメータの調整が発生し、1つまたは複数のシェーダパラメータの調整により、GPUによって処理される画像フレームの複雑さのレベルが変化する。
【0010】
一実施形態では、GPUによってレンダリングされるコンテンツの複雑さを調整するためのシステムが説明される。システムにはサーバノードが含まれる。サーバノードにはGPUが含まれる。GPUは、ゲームのシーンの画像フレームを処理する。GPUは、画像フレームの処理に関する1つまたは複数のメトリックを追跡する。GPUはシェーダを実行する。サーバノードには、GPUに結合された処理ユニットがさらに含まれる。処理ユニットは、QASを生成し、ゲームエンジンに関連付けられたシェーダに送信する。QASは、画像フレームが処理されている間にシェーダに送信される。QASは、GPUによる処理に関連付けられた1つまたは複数のメトリックに基づいて生成される。シェーダは、QASの受信時に、1つまたは複数のシェーダパラメータを調整する。画像フレームが処理されている間に1つまたは複数のシェーダパラメータの調整が発生し、1つまたは複数のシェーダパラメータの調整により、GPUによって処理される画像フレームの複雑さのレベルが変化する。システムには、コンピュータネットワークを介してサーバノードと通信するクライアントデバイスが含まれる。
【0011】
本明細書のシステム及び方法のいくつかの利点には、ネットワークレイテンシ、GPUの温度、GPUに関連付けられた電力、及び画像フレームのレンダリング中のユーザ入力の受信を考慮して、画像フレームをレンダリングする際の時間を節約することが含まれる。例えば、画像フレームのレンダリング中にネットワークレイテンシが増加すると判定される場合、画像フレームの複雑さが軽減され、画像フレームがレンダリングされる速度が上昇する。画像フレームのレンダリング速度のこの上昇は、ネットワークレイテンシの影響を打ち消すなどを考慮する。別の例として、GPUに関連付けられた電力、GPUの温度、またはその両方が高いと判定すると、画像フレームのレンダリング中の複雑さが軽減される。複雑さが軽減されると、GPUの温度とGPUに関連付けられた電力とが低下する。電力の低下により、GPUの温度も低下する。
【0012】
また、GPUの温度とGPUに関連付けられた電力を考慮すると、GPUのライフサイクルが長くなる。GPUが大量の電力を消費している場合、またはGPUの温度が高い場合に、GPUの負荷を増やすかまたは維持することにより、ライフサイクルが短くなる。複雑さを軽減することにより、GPUの温度とGPUに関連付けられた電力とが低減され、GPUのライフサイクルが向上する。
【0013】
本開示の様々な実施形態は、添付図面と併せて、以下の記載を参照することによって、最も良く理解される。
【図面の簡単な説明】
【0014】
【
図1】グラフィック処理ユニット(GPU)の処理電力使用量に基づくシェーダのパラメータ値の変化を説明するためのシステムの一実施形態の図である。
【
図2】ネットワークレイテンシに基づくシェーダの1つまたは複数のパラメータの値の調整を説明するためのシステムの一実施形態の図である。
【
図3】GPUによって消費される電力量に基づいて1つまたは複数のパラメータを調整するための品質調整信号(QAS)の生成を説明するためのシステムの一実施形態の図である。
【
図4】GPUの温度に基づいてQASの生成を説明するためのシステムの一実施形態の図である。
【
図5】クライアントデバイスから受信されたユーザ入力のレイテンシに基づくQAS信号の生成を説明するための
図2のシステムの一実施形態の図である。
【
図6A】パラメータの例を説明するための表の一実施形態の図である。
【
図6B】GPUに関連付けられたメトリックとパラメータのものとの間のマッピングの一実施形態の図である。
【
図6C】GPUによるレンダリング動作の実行中に画像フレーム内の仮想オブジェクトの詳細が修正されることを説明するための方法の一実施形態の図である。
【
図6D】パラメータのうちの1つまたは複数の値が画像フレームの異なる部分で調整されることを説明するための画像フレームの実施形態を示す図である。
【
図7】ゲームの複数のノードの使用を説明するためのシステムの一実施形態の図である。
【
図8】クライアントデバイスにクラウドビデオゲームをストリーミングするために実施される様々な動作を概念的に示す流れ図の一実施形態である。
【
図9】クライアントデバイスのディスプレイデバイスとインターフェース接続するために互換性があり、コンピュータネットワークを介してゲームサーバと通信することができるゲームコンソールの一実施形態のブロック図である。
【
図10】ヘッドマウントディスプレイ(HMD)の一実施形態の図である。
【
図11】情報サービスプロバイダ(INSP)のアーキテクチャの一実施形態を示す。
【発明を実施するための形態】
【0015】
グラフィック処理ユニット(GPU)の1つまたは複数のパラメータを調整するためのシステム及び方法が説明される。本開示の様々な実施形態は、これらの特定の詳細の一部または全てが無くても実施されることに留意されたい。他の例では、本開示の様々な実施形態を不必要に分かりにくくしないように、周知のプロセス動作については詳述していない。
【0016】
図1は、GPU Aの処理電力使用量に基づくシェーダAのパラメータ値の変化を説明するためのシステム100の一実施形態の図である。システム100は、メモリデバイスシステムA、中央処理装置(CPU)A、GPU A、ビデオエンコーダA、及びシェーダコンポーネントAを含む。本明細書で説明されるようなメモリデバイスシステムの例は、互いに結合される1つまたは複数のメモリデバイスを含む。説明するため、メモリデバイスは、データが読み出される、またはデータが書き込まれるデバイスである。メモリデバイスは、読み取り専用メモリ(ROM)デバイス、またはランダムアクセスメモリ(RAM)デバイス、またはそれらの組み合わせであってよい。さらに説明するため、メモリデバイスは、フラッシュメモリ、キャッシュ、または独立ディスクの冗長アレイ(RAID)を含む。一例として、本明細書で使用されるCPUは、命令によって指定される算術、論理、制御、及び入力/出力(I/O)関数を実施することによって、ゲームエンジンなどのコンピュータプログラムの複数の命令を実行または遂行する電子回路である。さらに説明するため、CPUは、ゲームの仮想シーン内の仮想オブジェクトの位置、向き、サイズ、及び場所などの変数を決定するための命令を実行する。CPUの例には、プロセッサ、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、及びプログラマブルロジックデバイス(PLD)が含まれ、これらの用語は、本明細書では同じ意味で使用される。本明細書で使用される仮想オブジェクトの例には、仮想銃、仮想ユーザ、仮想武器、仮想車両、仮想スポーツ用品、仮想背景オブジェクト、及び1つまたは複数の仮想草の葉が含まれる。仮想背景オブジェクトは、本明細書ではゲームコンテンツコンテキストと呼ばれることがある。ゲームコンテンツコンテキストの例には、仮想草の葉及び仮想ブッシュなどの仮想オブジェクトが含まれる。ゲームコンテンツコンテキスト及びゲームコンテンツという用語は、本明細書では同じ意味で使用される場合がある。本明細書で使用されるGPUの一例は、レンダリングプログラムを適用して、ディスプレイデバイス上の画像の表示のためにディスプレイデバイスに出力する画像フレームを生成するプロセッサ、ASIC、PLDまたはマイクロコントローラなどの電子回路を含む。
【0017】
本明細書で使用されるビデオエンコーダの例には、複数の画像フレームを圧縮して1つまたは複数の符号化された画像フレームを出力する圧縮機が含まれる。説明するため、ビデオエンコーダは生の画像フレームを受信してI、P、及びBフレームを出力する。別の例として、ビデオエンコーダはH.264標準を適用して複数の画像フレームを圧縮する。画像フレームの一例は静止画像である。複数の画像などの複数の画像フレームがレンダリングされる速度は、本明細書ではフレームレートと呼ばれることがある。一例として、フレームレートは、1秒あたりにレンダリングされる画像フレームの数または1秒あたりの画像フレームの数(fps)として測定される。
【0018】
メモリデバイスシステムA、CPU A、GPU A、及びビデオエンコーダAは、通信媒体Aを介して互いに結合される。説明するため、シェーダコンポーネントA、メモリデバイスシステムA、CPU A、GPU A、及びビデオエンコーダAは、システムオンチップ(SoC)の構成要素である。別の例として、シェーダコンポーネントA、メモリデバイスシステムA、CPU A、GPU A、及びビデオエンコーダAは、サーバシステムのサーバまたはゲームコンソールなどのノードの構成要素である。本明細書で使用される通信媒体の例には、有線または無線通信媒体が含まれる。有線通信媒体の例には、バス、ケーブル、及びシリコンが含まれる。無線通信媒体の例には、Bluetooth(登録商標)またはWi-Fi(登録商標)などの無線転送プロトコルを介してデータを転送するための媒体が含まれる。
【0019】
本明細書で使用されるシェーダコンポーネントの例には、プロセッサ、ASIC、PLD、コントローラ、コンピュータプログラム、またはコンピュータプログラムの一部が含まれる。一例として、シェーダコンポーネントAはGPU Aの外側に位置し、通信媒体Aを介してGPU Aに結合される。別の例として、シェーダコンポーネントAはGPU Aの一部である。さらに説明するため、シェーダコンポーネントAは、GPU A内の構成要素であるか、またはGPU Aによって実行されるコンピュータプログラムの一部である。別の例として、シェーダコンポーネントAは、シェーダAの構成要素または一部である。
【0020】
メモリデバイスシステムAは、エンジンA及びシェーダAを格納する。本明細書に記載される、ゲームエンジンの例として、ゲームコンピュータプログラム、仮想現実(VR)シーンを生成するためのコンピュータプログラム、拡張現実(AR)シーンを生成するためのコンピュータプログラム、VRシーンもしくはARシーンを生成するための物理法則を適用するための物理ソフトウェアプログラム、またはVRシーンもしくはARシーンを生成するためのレンダリング動作を適用するためのレンダリングコンピュータプログラム、もしくはその2つ以上の組み合わせを含む。説明するため、物理法則が衝突検出または衝突応答に適用される。仮想シーンの例には、VRシーン及びARシーンが含まれる。一例として、仮想シーンには1つまたは複数の仮想オブジェクト及び1つまたは複数の仮想背景が含まれる。説明するため、仮想シーンには、複数の仮想ユーザ、複数の仮想木、仮想ユーザによって保持される複数の仮想武器、仮想空、及びビデオゲームの仮想平面が含まれる。
【0021】
本明細書で使用されるシェーダの例には、複数の生の画像フレームをレンダリングするために使用されるコンピュータプログラムが含まれる。説明するため、シェーダはGPUによって実行されて、画像フレーム内のすべてのピクセルに対して、指定されたレベルの強度、テクスチャ、色、またはそれらの2つ以上の組み合わせを生成する。別の例として、シェーダAは、ゲームエンジンAの一部である。一実施形態では、強度、明るさ、及び陰影という用語は、本明細書では交換可能に使用されることに留意されたい。一実施形態では、画像フレームのピクセルのテクスチャは、画像フレーム内の色または強度の配置である。
【0022】
シェーダコンポーネントAは、シェーダパラメータアジャスタA及び品質マトリックスAを含む。一例として、本明細書で使用されるシェーダコンポーネントのシェーダパラメータアジャスタは、シェーダコンポーネントのコンピュータプログラムの一部である。別の例として、シェーダコンポーネントのシェーダパラメータアジャスタは、シェーダコンポーネントを実装するプロセッサ、ASIC、またはPLDの一部である。別の例として、シェーダコンポーネントAは、シェーダAのコンピュータプログラムの一部である。
【0023】
本明細書で使用される品質マトリックスは、P1、P2、及びP3などの1つまたは複数のパラメータの複数の値を含むマトリックスである。パラメータP1の一例は、画像フレーム内の詳細量である。説明するため、仮想オブジェクトが画像フレーム内の40または50などの第1のピクセル数によって表される場合、画像フレーム内の詳細量はより少ない。仮想オブジェクトが100または200ピクセルなどの第2のピクセル数で表される場合、詳細量は、同じ画像フレーム内の別の詳細量と比較してより少ない。第1のピクセル数は、第2のピクセル数よりも少ない。第1及び第2のピクセル数は、クライアントデバイスのディスプレイ画面上で同じ量の表示領域を占める。別の例として、画像フレーム内に10枚の草の葉を有する画像フレーム内の詳細量は、20枚の草の葉に提供される画像フレーム内の別の詳細量よりも少ない。20枚の草の葉は、10枚の草の葉よりも画像フレームのより多くのピクセル数を占めるが、クライアントデバイスのディスプレイ画面では、10枚の草の葉が占める表示領域と同じ量を占める。ディスプレイ画面の表示領域は、表示領域の幅と表示領域の長さの積として測定される。パラメータP2の一例は、画像フレームの仮想シーン内で仮想オブジェクトが表される距離である。説明するため、パラメータP2は、仮想オブジェクトが画像フレームの仮想シーンで表される深さ寸法における距離である。パラメータP3の一例は、画像フレームの少なくとも一部をレンダリングするためにレンダリング動作中に実施される光線の反復数である。一部には、レンダリングされる仮想オブジェクトが含まれる。光線の反復は、本明細書ではレイトレーシングと呼ばれることもある。各光線の反復中に、画像フレーム内のピクセルの色及び強度がシェーダコンポーネントAによって計算される。複数の光線の反復については、画像フレーム内のピクセルの色及び強度が複数回計算される。レンダリング動作は、GPU Aによって実施されて、以下でさらに説明される、1つまたは複数の画像フレームを生成する、または出力するなど、処理する。
【0024】
CPU Aは、処理ユニットAを含む。本明細書で使用される処理ユニットは、プロセッサ、ASIC、PLD、またはコントローラを含む。説明するため、CPU内の処理ユニットは、処理ユニットによって実施されるものとして本明細書で説明される関数を実行するPLD、ASICまたはコントローラの一部である。
【0025】
ゲームのプレイ中に、CPU Aは、ゲームエンジンAを実行して、仮想シーンを有する画像フレームの仮想オブジェクトのモデルの形状、サイズ、位置、及び向きなどの変数を決定する。CPU Aは、通信媒体Aを介して変数の決定の完了の指示をGPU Aに送信する。完了の指示を受信すると、GPU Aはレンダリング動作を実行して、画像フレームの各ピクセルの色及び陰影を決定する。
【0026】
GPU Aが画像フレームをレンダリングするなど、画像フレームを生成するためのレンダリング動作を実行する期間中に、処理ユニットAは、GPU Aのビジー状態を判定する。例えば、GPU Aがレンダリング動作の実行を開始すると、GPU Aは処理ユニットAに信号を送信する。信号を受信すると、処理ユニットAはレンダリング動作が開始されたと判定し、GPU Aのビジー状態を判定し始める。
【0027】
一例として、GPU Aのビジー状態を判定するため、処理ユニットAはGPU Aに要求を送信して、GPU Aによって画像フレーム102A、102B、及び102Cなどの画像フレームの生成のフレームレートを取得する。画像フレーム102A~102Cは、ゲーム用の生の画像フレームなどの符号化されていない画像フレームである。要求は、通信媒体Aを介してGPU Aに送信される。GPU Aは、要求を受信すると、通信媒体Aを介してCPU Aにフレームレートを提供する。処理ユニットAは、フレームレートが所定のフレームレートよりも大きいと判定し、GPU Aがビジーであるとさらに判定する。例として、GPU Aは複数のゲームの画像フレームを生成することでビジーである。別の例として、GPU Aは、ゲーム用の画像フレーム102A~102Cを生成することでビジーである。例を継続すると、GPU Aがビジーである場合、GPU Aは、例えば、所定の量より多いGPU Aの大量の処理電力を使用している。所定の電力量は、所定の電力閾値レベルの一例である。一方、処理ユニットAは、フレームレートが所定のフレームレートよりも低いと判定し、GPU Aがビジーではないとさらに判定する。GPU Aがビジーでない場合、GPU Aは、例えば、所定の電力量より少ないGPU Aの少量の処理電力を使用している。GPU Aの処理電力の量は、GPU Aによって消費される電力の一例である。
【0028】
GPU Aがビジーであると判定すると、処理ユニットAは品質調整信号(QAS)を生成し、通信媒体Aを介してシェーダパラメータアジャスタAに送信する。GPU Aが画像フレーム102A~102Cをレンダリングする、または生成するなどの処理をしている間、QAS信号は処理ユニットAからシェーダコンポーネントAに送信される。例えば、画像フレーム102Aがレンダリングされている期間中、処理ユニットAは、QAS信号をシェーダコンポーネントAに送信する。
【0029】
QASを受信すると、シェーダパラメータアジャスタAは、コンテンツルールを適用して、GPU Aによって生成される画像フレーム102A~102Cの1つまたは複数のパラメータP1~P3のうちの1つまたは複数の値を調整する。例えば、シェーダパラメータアジャスタAは、画像フレーム102A内の仮想オブジェクトの解像度、例えば、詳細量などを低減するか、または画像フレーム102A内の仮想オブジェクトの深さ寸法の距離を増加させて、その結果、仮想オブジェクトのより低いピクセル数は、画像フレーム102Aを占有するか、または画像フレーム102A内の仮想オブジェクトを表すピクセルの色及び強度を生成するために使用される光線の反復の数を低減するか、またはそれらの組み合わせにする。画像フレーム102A内の仮想オブジェクトの解像度が低下すると、画像フレーム102Aの解像度が低下することに留意されたい。別の例として、シェーダパラメータアジャスタAは、画像フレーム102A内の仮想オブジェクトの詳細量を事前設定された詳細レベルに低減するか、または画像フレーム102A内の仮想オブジェクトの深さ寸法の距離を事前設定された距離に増加させるか、または画像フレーム102A内の仮想オブジェクトを表すピクセルの色及び強度を生成するために使用される光線の反復の数を、事前設定された光線の反復の数に低減するか、またはそれらの組み合わせにする。事前設定された詳細レベル、事前設定された距離、及び事前設定された光線の反復回数は、メモリデバイスシステムAに格納される。
【0030】
さらに別の例として、シェーダパラメータアジャスタAは、仮想オブジェクトを有する画像フレーム102A~102C内の仮想オブジェクトの詳細の量を減少させるか、または画像フレーム内の仮想オブジェクトの深さ寸法の距離を増加させるか、または、画像フレーム102A~102C内の仮想オブジェクトを表すピクセルの色及び強度を生成するために使用される光線の反復の数を低減するか、またはそれらの組み合わせにする。さらに別の例として、シェーダパラメータアジャスタAは、仮想オブジェクトを有する画像フレーム102A~102C内の仮想オブジェクトの詳細量を事前設定された詳細レベルに低減するか、または画像フレーム102A~102C内の仮想オブジェクトの深さ寸法の距離を事前設定された距離に増加させるか、または画像フレーム内の仮想オブジェクトを表すピクセルの色及び強度を生成するために使用される光線の反復の数を、事前設定された光線の反復の数に低減するか、またはそれらの組み合わせにする。さらに別の例として、画像フレーム102Aのピクセルまたはブロックなどの一部分が生成され、画像フレーム102Aの残りのピクセルまたは残りのブロックなどの残りの部分が生成される間に、シェーダパラメータアジャスタAは、パラメータP1~P3の1つまたは複数の値を調整する。シェーダパラメータアジャスタAは、パラメータP1~P3の1つまたは複数の調整された値を、通信媒体Aを介してシェーダAに提供する。
【0031】
パラメータP1~P3の1つまたは複数の調整された値を受信すると、シェーダAは、パラメータP1~P3の調整された値を有する画像フレーム102A~102Cなどの画像フレームを出力する。画像フレーム102A~102Cの生成の完了前に、1つまたは複数のパラメータが調整されることに留意されたい。画像フレーム102A~102Cは、符号化されていない画像フレームである。シェーダAは、通信媒体Aを介して画像フレーム102A~102CをビデオエンコーダAに送信する。ビデオエンコーダAは、画像フレーム102A~102Cを圧縮するなど符号化して、符号化された画像フレーム104A及び104Bなどの符号化された画像フレームを出力する。一方、GPU Aがビジーではないと判定すると、処理ユニットAはQASを生成せず、パラメータP1~P3のいずれも、シェーダパラメータアジャスタAによって調整されない。
【0032】
一実施形態では、パラメータP1~P3の値は、生成された、作られた、または出力されたなど、画像フレーム102A~102Cがレンダリングされる前に、シェーダパラメータアジャスタAによって調整されない。例えば、CPU Aは、画像フレーム102A~102Cの生成のためにGPU Aによってレンダリング動作が実施される前に、パラメータP1~P3の値を調整するための命令をGPU Aに送信しない。
【0033】
一実施形態では、パラメータP1~P3の値は、画像フレーム102A~102Cがレンダリングされた後、シェーダパラメータアジャスタAによって調整されない。例えば、シェーダパラメータアジャスタAは、画像フレーム102Aが画像フレーム102Aを再レンダリングするためにレンダリングされた後、画像フレーム102Aの値を調整しない。
【0034】
一実施形態では、本明細書で説明されるように、シェーダは、ゲームエンジンの一部である。例えば、シェーダAはゲームエンジンAの一部である。
【0035】
一実施形態では、処理ユニットAなどの処理ユニットによって実行される本明細書に記載されている関数は、シェーダコンポーネントAなどのシェーダコンポーネントによって実施される。
【0036】
一実施形態では、CPUによって実施される本明細書で説明される関数は、CPUを備えた処理ユニットによって実施されるのではなく、CPUのメイン処理ユニットなどの別のプロセッサによって実施される。
【0037】
一実施形態では、GPU Aは、毎秒または2秒ごとなどの所定の期間中にGPU Aによって生成される画像の数をカウントするフレームレートカウンタを含む。
【0038】
一実施形態では、シェーダパラメータアジャスタAは、コンテンツルールを適用して、仮想シーン内の複数の仮想オブジェクトのどれが、残りの仮想オブジェクトと比較してより複雑であるかを判定する。例えば、シェーダパラメータアジャスタAは、仮想シーン内の仮想車両トラックが、仮想シーン内の仮想草の葉と比較してより詳細レベルが高いと判定する。仮想車両トラックがより詳細であると判定すると、シェーダパラメータアジャスタAは、草の葉の詳細レベルを低減することなく、仮想車両トラックの詳細レベルを低減する。より高い詳細レベルの一例は、仮想草の葉によって消費されるよりも多くの数のピクセルを画像フレーム102Aの仮想シーン内に含む。より高い詳細レベルの別の例は、画像フレーム102A内により多くの部品または部分または構成要素を有することを含む。説明するため、仮想車両トラックには枕木、鉄道軌道、鉄道ファスナ、及び鉄道バラストがあり、仮想草の葉には葉がある。
【0039】
別の例として、シェーダパラメータアジャスタAは、最初に仮想車両トラックの詳細レベルを低減し、次に草の葉の詳細レベルを低減する。さらに別の例として、シェーダパラメータアジャスタAは、仮想車両トラックの詳細レベルを第1の所定のレベル未満に低減し、仮想草の葉の詳細レベルを第2の所定のレベル未満に低減する。第1の所定のレベルは、第2の所定のレベルよりも低いか、同じか、またはより高い。
【0040】
図2は、ネットワークレイテンシに基づくパラメータP1~P3の値の調整を説明するためのシステム200の一実施形態の図である。システム200は、メモリデバイスシステムA、通信媒体A、CPU A、GPU A、送信(TX)ユニットA、ストリーミングエンジンA、コンピュータネットワーク202、複数のクライアントデバイスA及びB、受信(RX)ユニットA、及びシェーダコンポーネントAを含む。送信ユニットAは、ビデオエンコーダA及び複数のフレームバッファを含む。フレームバッファの1つは画像フレーム102A~102Cを格納し、フレームバッファの別の1つは符号化された画像フレーム104A及び104Bを格納する。フレームバッファは、ビデオエンコーダAに結合される。受信ユニットAには、デコーダA及び複数のフレームバッファが含まれる。デコーダAは、受信ユニットAのフレームバッファに結合されている。本明細書で使用されるデコーダの一例は、符号化されていない画像フレームを出力するための符号化された画像フレームの解凍など、復号するために使用される構成要素を含む。説明するため、デコーダはH.264標準を適用して、P、I、及びBの画像フレームを生の画像フレームに変換する。
【0041】
本明細書で使用されるストリーミングエンジンの例には、伝送制御プロトコル/インターネットプロトコル(TCP/IP)などのインターネット通信プロトコルを適用するネットワークインターフェースカードなどのネットワークインターフェースコントローラが含まれる。受信ユニットAは、通信媒体Aに結合されている。また、ストリーミングエンジンAは、通信媒体Aに結合されている。コンピュータネットワーク202の例には、インターネットなどの広域ネットワーク(WAN)、またはインターネットなどのローカルエリアネットワーク(LAN)、あるいはそれらの組み合わせが含まれる。本明細書で使用されるクライアントデバイスは、ゲームエンジンAを使用して実行されるゲームにアクセスするためにユーザによって操作されるデバイスである。本明細書で使用されるクライアントデバイスの例には、コンピュータ、携帯電話、タブレット、スマートフォン、スマートテレビ、ゲームコンソール、ヘッドマウントディスプレイ(HMD)などが含まれる。本明細書で使用されるHMDは、VRシーンまたはARシーンなど、ユーザが仮想シーンを見るために着用するディスプレイデバイスである。VRシーンまたはARシーンは、ゲームエンジンAの実行時に生成される。
【0042】
クライアントデバイスAはユーザAによって操作され、クライアントデバイスBは別のユーザBによって操作される。ユーザAには、ユーザアカウントサーバによってユーザアカウントAが割り当てられ、以下でさらに説明する。同様に、ユーザBは、ユーザアカウントサーバによって別のユーザアカウントBに割り当てられる。ユーザAはユーザアカウントAにログインして、1つまたは複数のノードからゲームにアクセスするが、これについては以下でさらに説明する。同様に、ユーザBはユーザアカウントBにログインして、1つまたは複数のノードからゲームにアクセスする。
【0043】
フレーム102A~102Cがレンダリングされているレンダリング動作中に、処理ユニットAは、通信媒体Aを介してストリーミングエンジンAに信号を送信して、クライアントデバイスAに、所定の数のテストパケットを処理ユニットAに送り返すような命令を有する、1つまたは2つのパケットなどの所定の数のテストパケットを送信する。信号がストリーミングエンジンAに送信されると、処理ユニットAはカウンタまたはタイマを開始して、所定の数のパケットがストリーミングエンジンAからクライアントデバイスAに送信され、ストリーミングエンジンによってクライアントデバイスAから受信されるまでにかかる時間などのネットワークレイテンシをカウントする。例えば、画像フレーム102A~102Cの1つまたは複数を生成するためにレンダリング動作が実施されていることを示すGPU Aからの信号を受信すると、処理ユニットAは、信号をストリーミングエンジンAに送信して、所定の数のテストパケットを送り返すようなクライアントデバイスAへの命令を有する所定の数のテストパケットを送信する。ストリーミングエンジンAは、処理ユニットAから信号を受信すると、所定の数のテストパケットを生成し、インターネットプロトコルを適用して命令をテストパケット内に埋め込み、コンピュータネットワーク202を介してクライアントデバイスAにテストパケットを送信する。
【0044】
クライアントデバイスAは、画像フレーム102A~102Cがレンダリングされているデバイスである。例えば、コンピュータネットワーク202を介してクライアントデバイスAから入力信号を受信することに応じて、CPU Aは、仮想シーン内の仮想オブジェクトの変数を決定する。さらに、CPU Aによって決定された変数に基づいて、GPU Aは仮想シーン内の仮想オブジェクトの色及び強度を決定する。別の例として、仮想オブジェクトがGPU Aによってレンダリングされるゲームをプレイするための要求は、コンピュータネットワーク202を介してクライアントデバイスAから受信される。
【0045】
クライアントデバイスAは、命令を有する所定の数のテストパケットを受信すると、テストパケットを解析して命令を取得する。クライアントデバイスAは、インターネットプロトコルを命令に適用して、所定の数のリターンテストパケットを生成し、コンピュータネットワーク202を介してストリーミングエンジンAにリターンテストパケットを送信する。所定の数のリターンテストパケットを受信すると、ストリーミングエンジンAは、インターネットプロトコルを適用して、リターンテストパケットを解析し、命令を取得する。ストリーミングエンジンAは、受信ユニットAを介して処理ユニットAに命令を送信する。命令を受信すると、処理ユニットAは、ストリーミングエンジンAからコンピュータネットワーク202を介してクライアントデバイスAに、及びコンピュータネットワーク202によってクライアントデバイスAからストリーミングエンジンAに所定の数のテストパケットを転送する際のネットワークレイテンシを決定するために開始されたカウンタまたはタイマをオフにする。一例として、ネットワークレイテンシは、ストリーミングエンジンAによるクライアントデバイスAへの所定の数のテストパケットの送信の動作とストリーミングエンジンAによる所定の数のリターンテストパケットの受信の動作との間の時間の量である。
【0046】
処理ユニットAは、ネットワークレイテンシが、メモリデバイスシステムAに格納されている所定の量のネットワークレイテンシよりも大きいかどうかを判定する。所定の量のネットワークレイテンシは、所定のネットワークレイテンシの閾値レベルの一例である。ネットワークレイテンシが、閾値Thなどの所定の量のネットワークレイテンシよりも大きいと判定すると、処理ユニットAは、QASを生成し、通信媒体Aを介してシェーダコンポーネントAにQASを送信する。QASの受信に応じて、シェーダコンポーネントAのシェーダパラメータアジャスタAは、本明細書で説明する方法で、パラメータP1、P2、及びP3の1つまたは複数の値を調整し、画像フレーム102A~102Cを生成するために通信媒体Aを介して調整された値をシェーダAに提供する。一方、ネットワークレイテンシが所定の量のネットワークレイテンシよりも大きくないと判定すると、処理ユニットAはQASを生成しない。
【0047】
ビデオエンコーダAは、シェーダAから出力された画像フレーム102A~102Cを受信し、画像フレームを符号化して、符号化された画像フレーム104A及び104Bを生成する。ストリーミングエンジンAは、ビデオエンコーダAから符号化された画像フレーム104A及び104Bを受信し、インターネットプロトコルを符号化された画像フレーム104A及び104Bに適用して1つまたは複数のパケットを生成し、1つまたは複数のパケットをコンピュータネットワーク202を介してクライアントデバイスAに転送する。クライアントデバイスAは、画像フレーム102A~102Cを生成するために符号化された画像フレーム104A及び104Bを復号するためのビデオデコーダを含む。クライアントデバイスAは、画像フレーム102A~102Cをクライアントデバイスのディスプレイデバイス上に表示する。本明細書で使用されるディスプレイデバイスの例には、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、及びプラズマディスプレイが含まれる。
【0048】
図3は、GPU Aによって消費される電力量に基づくQASの生成を説明するためのシステム300の実施形態の図である。システム300は、メモリデバイスシステムA、通信媒体A、電力測定デバイス(PMD)A、GPU A、電源A、CPU A、及びシェーダコンポーネントAを含む。本明細書で使用される電力測定デバイスの例には、電圧センサ、電流センサ、または電力センサが含まれる。電流センサは、電流を測定するために、1つまたは複数の電流シャント抵抗を含む。電源AとPMD Aとは通信媒体Aに結合される。さらに、PMD AはGPU Aの入力に結合されて、GPU Aの入力で電力を測定する。例えば、PMD AはGPU Aの電力入力ピンに結合される。
【0049】
レンダリング動作がGPU Aによって実行されて画像フレーム102A~102Cの1つまたは複数を生成する期間中に、PMD Aは、GPU Aの消費電力など、GPU Aの入力でGPU Aによって消費される電力量を測定して、電力測定データを出力する。一例として、PMD Aは、測定された電力量のアナログ値を電力測定データのデジタル値に変換するためのサンプラまたはアナログ-デジタル変換器(ADC)を含む。
【0050】
電力測定データは、通信媒体Aを介して処理ユニットAに転送される。処理ユニットAは、電力測定データを受信し、電力測定データが、所定の電力閾値レベルの別の例である、所定の電力閾値を下回る値を有するかどうかを判定する。例えば、画像フレーム102Aを生成するためにレンダリング動作が実施されている間、処理ユニットAは、電力測定データが所定の電力閾値よりも大きいと判定する。所定の電力閾値は、メモリデバイスシステムAに格納される。
【0051】
電力測定データが所定の電力閾値を下回っていると判定すると、処理ユニットAはQAS信号を生成しない。一方、電力測定データが所定の電力閾値より大きいと判定すると、処理ユニットAはQAS信号を生成する。QAS信号は、レンダリング動作の実行によってフレーム102A~102Cの1つまたは複数が生成されると同時にまたはその間に生成される。処理ユニットAは、通信媒体Aを介してQASをシェーダパラメータアジャスタAに送信する。QASを受信すると、シェーダパラメータアジャスタAは、本明細書に記載の方法で画像フレーム102A~102Cの1つまたは複数のうちの1つまたは複数のパラメータP1~P3の値を調整する。調整された値は、シェーダパラメータアジャスタAから通信媒体Aを介してシェーダAに送信され、本明細書に記載の方法で調整された値を有する画像フレーム102A~102Cのうちの1つまたは複数をレンダリングする。
【0052】
一実施形態では、複数の電力測定デバイスがGPU Aの入力に結合されて、GPU Aによって消費される電力を測定する。
【0053】
図4は、GPU Aの温度に基づくQASの生成を説明するためのシステム400の実施形態の図である。システム400は、メモリデバイスシステムA、通信媒体A、GPU A、CPU A、温度センサA、及びシェーダコンポーネントAを含む。本明細書で使用される温度センサの例には、熱電対、サーミスタ、測温抵抗体、及び半導体センサが含まれる。温度センサAは、GPU A及び通信媒体Aに結合される。例えば、温度センサAは、GPU Aの半導体チップの表面に取り付けられる。
【0054】
GPU Aによるフレーム102A~102Cの1つまたは複数の生成中、温度センサAは、GPU Aの温度を感知して温度データを出力し、通信媒体Aを介して処理ユニットAに温度データを提供する。一例として、温度センサAには、アナログ温度信号をGPU Aの温度のデジタルデータに変換して温度データを提供するサンプラまたはADCが含まれる。処理ユニットAは、温度データを受信し、GPU Aの温度が、メモリデバイスシステムAに格納されている所定の温度閾値TMP THRを超えるかどうかを判定する。例えば、処理ユニットAは、温度分析器を含んで、GPU Aの温度が所定の温度閾値TMP THRを超えているかどうかを判定する。温度閾値TMP THRは、所定の温度閾値レベルの一例である。GPU Aの温度が所定の温度閾値を超えていると判定すると、処理ユニットAはQAS信号を生成し、QAS信号をシェーダパラメータアジャスタAに送信する。QASを受信すると、シェーダパラメータアジャスタAは、本明細書に記載の方法で画像フレーム102A~102Cの1つまたは複数のうちの1つまたは複数のパラメータP1~P3の値を調整し、通信媒体Aを介してシェーダAに調整された値を提供する。調整された値を受信すると、シェーダAは、パラメータP1~P3のうちの1つまたは複数のうちの調整された値を持つ1つまたは複数のフレームを生成する。他方、GPU Aの温度が、所定の温度閾値を超えない、例えば、所定の温度閾値より大きくないと判定すると、処理ユニットAは、QAS信号を生成しない。
【0055】
図5は、クライアントデバイスAから受信されたユーザ入力のレイテンシに基づくQAS信号の生成を説明するためのシステム200の実施形態の図である。ユーザ入力のレイテンシは、本明細書ではユーザ入力レイテンシと呼ばれることがある。ユーザ入力レイテンシは、GPU Aが画像フレーム102A~102Cをレンダリングしている間に、ユーザ入力A2などのユーザ入力が、コンピュータネットワーク202を介してクライアントデバイスからCPU Aによって受信されるときに発生する。
【0056】
ユーザAは、クライアントデバイスAのタッチスクリーンボタン、ハードウェアボタンまたはハンドヘルドコントローラ(HHC)のジョイスティックなどの1つまたは複数のボタンを選択するまたは移動し、及び/またはユーザAの身体部分の運動を行い、ユーザ入力A1を生成する。身体部分の例には、手、顔、指、及び脚が含まれる。一例として、ユーザ入力A1は、仮想シーン内の仮想オブジェクトが、ゲームエンジンA1の実行中に、ある位置または別の位置から、またはある方向から別の方向に移動する、ジャンプする、頭を下げるまたはかがむことであることを示す。ユーザ入力A1は、クライアントデバイスAからコンピュータネットワーク202を介してストリーミングエンジンAに送信される。ストリーミングエンジンAは、ユーザ入力A1を受信ユニットAを介してCPU Aに送信する。CPU Aは、ゲームエンジンAを実行して、ユーザ入力A1に基づいて、仮想シーン内の仮想オブジェクトの変数を決定する。例えば、CPU Aは、仮想オブジェクトがジャンプすることを示すユーザ入力A1を受信すると、仮想オブジェクトがジャンプ運動を行うと決定する。別の例として、CPU Aは、仮想オブジェクトが第1の位置から第2の位置に移動することを示すユーザ入力A1を受信すると、仮想オブジェクトが第1の位置から第2の位置に移動すると決定する。
【0057】
CPU Aは、通信媒体Aを介してGPU Aに変数を送信する。変数を受信すると、GPU Aは、レンダリング動作を変数に適用して、画像フレーム102A~102Cの1つまたは複数を生成する。例えば、画像フレーム102Aは仮想シーンを有する。画像フレーム102A~102Cの1つまたは複数がGPU Aによってレンダリングされている期間中に、CPU Aは、コンピュータネットワーク202、ストリーミングエンジンA、及び受信ユニットAを介してクライアントデバイスAからユーザ入力A2を受信する。ユーザ入力A2は、ユーザAによるクライアントデバイスAの1つまたは複数のボタンの選択に応じて、またはユーザAの身体部分の運動に応じて、クライアントデバイスAによって生成される。ユーザ入力A2は、レンダリングされている画像フレーム102A~102Cの1つまたは複数内のパラメータP1~P3のうちの1つまたは複数の変更をトリガする。例えば、ユーザ入力A2は、画像フレーム102A~102C以外の1つまたは複数の追加の画像フレームが、ユーザ入力A2に基づいてGPU Aによってレンダリングされるべきであり、ユーザ入力A2が受信される前に画像フレーム102A~102Cの1つまたは複数をレンダリングするための時間よりも、ユーザ入力A2が受信された後に画像フレーム102A~102Cの1つまたは複数をレンダリングする時間がより少ないことをCPU Aに示す。説明するため、CPU Aは、ユーザ入力A2に基づいて仮想オブジェクトの変数の追加値を生成する。一例として、CPU Aは、画像フレーム102A~102C内にレンダリングされる仮想オブジェクトの追加の位置及び追加の向きを決定する。CPU Aは、通信媒体Aを介して追加の位置及び追加の向きをGPU Aに送信する。追加の位置と向きを受信すると、GPU Aはレンダリング動作を適用して1つまたは複数の追加の画像フレームを生成する。なお、ユーザ入力A2は、ユーザ入力A1を受信することに続いて、処理ユニットAによって受信される。例えば、ユーザ入力A1とA2の受信の間に他のユーザ入力は受信されない。
【0058】
ユーザ入力A2を受信することに応じて、処理ユニットAは、通信媒体Aを介してGPU Aに照会信号を送信して、GPU Aがユーザ入力A1に基づいて画像フレーム102A~102Cの1つまたは複数を生成しているかどうかを判定する。照会信号を受信すると、GPU Aは、GPU Aが画像フレーム102A~102Cの1つまたは複数の生成を終了していないことを示す応答信号を通信媒体Aを介して処理ユニットAに送信する。例えば、GPU Aは、GPU Aがまだ画像フレーム102Aをレンダリングしており、画像フレーム102Aのレンダリングを終了していないことを示す応答信号を送信する。応答信号を受信すると、処理ユニットAは、QAS信号を生成し、通信媒体Aを介してシェーダパラメータアジャスタAにQAS信号を送信する。QAS信号を受信すると、シェーダパラメータアジャスタAは、本明細書に記載の方法で画像フレーム102A~102Cの1つまたは複数のパラメータP1~P3の1つまたは複数の値を修正し、通信媒体Aを介してシェーダAに修正された値を提供する。例えば、シェーダパラメータアジャスタAは、画像フレーム102Aの仮想シーン内の仮想オブジェクトの詳細レベルを低下させる。シェーダAは、修正された値に従って、画像フレーム102A~102Cの1つまたは複数をレンダリングする。
【0059】
一実施形態では、処理ユニットAは、処理ユニットAによるユーザ入力A2の受信とユーザ入力A1の受信との間の時間差などの、ユーザ入力レイテンシを決定するためのタイマを含む。ユーザ入力レイテンシが所定の時間差などの所定のユーザ入力レイテンシよりも短いと判定すると、処理ユニットAはQAS信号を生成する。一方、ユーザ入力レイテンシが所定のユーザ入力レイテンシよりも大きいと判定すると、処理ユニットはQAS信号を生成しない。
【0060】
図6Aは、パラメータP1、P2、及びP3の例を説明するための表600の一実施形態の図である。パラメータP1、P2、及びP3のいずれかの1つの例は、画像フレーム102A~102Cのいずれかの内の仮想オブジェクトなどの少なくとも一部の解像度(R)である(
図5)。説明するため、R1の値を有する解像度は、R2の値を有する解像度よりも低く、R2の値を有する解像度は、R3の値を有する解像度よりも低い。一例として、R2の値はR1の値よりも高いピクセル数を指し、R3の値はR2の値よりも高いピクセル数を指す。さらに説明するため、R3の値はa3×b3の解像度を指し、R2の値はa2×b2の解像度を指し、R1の値はa3×b3の解像度を指し、a1、a2、a3、b1、b2、及びb3はそれぞれ、整数である。また、a3は、a1よりも大きいa2よりも大きく、b3は、b1よりも大きいb2よりも大きい。本明細書で使用される場合、画像フレームの一部の解像度は、画像フレーム内の一部を表すために使用されるピクセルの数を指す。例えば、解像度とは、画像フレームの一部の高さと幅とを指す。解像度Rは、R1からRnまでの範囲の値を有し、nは、1より大きい整数である。画像フレームの一部の解像度は、画像フレームの複雑さの一例である。例えば、ピクセルの解像度Rの減少は、ピクセルによって表される仮想オブジェクトの詳細の量などの複雑さのレベルを低下させ、解像度Rの増加は、仮想オブジェクトの複雑さのレベルを上昇させる。
【0061】
パラメータP1~P3のいずれかの別の例は、光線の反復回数(RIC)であり、これは、画像フレーム102A~102Cのいずれかの仮想オブジェクトなどの少なくとも一部をレンダリングするために実施される反復の数である。説明するため、画像フレーム102Aの仮想シーン内の仮想オブジェクトを表すピクセルをレンダリングするために適用されるシェーダパラメータアジャスタAによって決定される光線の反復回数は、画像フレーム102Aの仮想シーン内の別の仮想オブジェクトのピクセルをレンダリングするために適用されるシェーダパラメータアジャスタAによって決定される光線反復回数よりも少ない。別の例として、光線の反復回数は、画像フレーム102A内の仮想オブジェクトのピクセルの色及び強度がシェーダパラメータアジャスタAによって計算される回数である。
【0062】
光線の反復回数は、画像フレームの複雑さの別の例である。例えば、画像フレームの一部をレンダリングするための光線の反復回数の減少により、一部の複雑さのレベルが低下し、光線の反復回数の増加により、複雑さのレベルが上昇する。
【0063】
光線の反復回数の値はRIC1からRICnまでの範囲の値を有し、nは1より大きい整数である。RIC1はRIC2と比較して光線の反復回数が少ないことを表し、RIC2はRIC3と比較して光線の反復回数が少ないことを表すことに留意されたい。
【0064】
パラメータP1~P3のいずれかのさらに別の例は、画像フレーム102A~102Cのいずれかでレンダリングされた(VOR)複数の仮想オブジェクトである。説明するため、QASを受信すると、シェーダパラメータアジャスタA(
図5)は、コンテンツルール(
図5)を適用して、QASの受信前の画像フレーム102A内のレンダリングされると決定された仮想拒絶の量と比較して、画像フレーム102A内のより少ない数の仮想オブジェクトをレンダリングする。さらに説明するため、CPU A(
図5)は、2つの仮想オブジェクトが画像フレーム102A(
図5)の仮想シーン内でレンダリングされることを決定する。CPU Aは、通信媒体A(
図5)を介してGPU Aに命令を送信し、2つの仮想オブジェクトをレンダリングする。命令を受信すると、GPU Aは2つの仮想オブジェクトのレンダリングを開始する。しかし、QAS信号が受信されると、シェーダパラメータアジャスタAはコンテンツルール(
図5)を適用して、2つの仮想オブジェクトの代わりに2つの仮想オブジェクトの一方をレンダリングすることを決定する。2つの仮想オブジェクトの一方は、2つの仮想オブジェクトの他方と比較して詳細が少ないか、または多い。GPU Aは、他の仮想オブジェクトをレンダリングせず、画像フレーム102Aの仮想シーン内の仮想オブジェクトをレンダリングする。
【0065】
レンダリングされる仮想オブジェクト(VOR)の数の値は、VOR1からVORnまでの範囲の値であり、nは1より大きい整数である。VOR1は、VOR2と比較してレンダリングされる仮想オブジェクトの数が少ないことを表し、VOR2は、VOR3と比較してレンダリングされる仮想オブジェクトの数が少ないことを表すことに留意されたい。
【0066】
画像フレーム内でレンダリングされる仮想オブジェクトの数は、画像フレームの複雑さのさらに別の例である。例えば、画像フレーム内でレンダリングされる仮想オブジェクトの数の減少により、画像フレームの複雑さのレベルが低下し、仮想オブジェクトの数の増加により、複雑さのレベルが上昇する。
【0067】
パラメータP1~P3のいずれかの別の例は、仮想オブジェクトが画像フレーム102A~102Cのいずれかの中でレンダリングされる優先度(PRTY)を含む。説明するため、レンダリング動作中に、画像フレーム102Aの仮想シーンの第2の仮想オブジェクトがGPU Aによってレンダリングされる前に、画像フレーム102Aの仮想シーン内の第1の仮想オブジェクトがGPU Aによってレンダリングされる。レンダリング動作の前に、CPU AはGPU Aに、第2の仮想オブジェクトが第1の仮想オブジェクトと比較して深さ寸法におけるさらに離れた場所でレンダリングされることを示す。第2の仮想オブジェクトは、第1の仮想オブジェクトの深さに比べて、深さ寸法における距離が大きいなど、より深い深さを有し、第1の仮想オブジェクトをレンダリングした後にレンダリングされる。さらに別の説明として、レンダリング動作中に、画像フレーム102Aの仮想シーンの第2の仮想オブジェクトがGPU Aによってレンダリングされる前に、画像フレーム102Aの仮想シーン内の第1の仮想オブジェクトがGPU Aによってレンダリングされる。レンダリング動作の前に、CPU AはGPU Aに、第1の仮想オブジェクトが、1つまたは複数の画像フレーム102A~102C内の第2の仮想オブジェクトの場所よりも1つまたは複数の画像フレーム102A~102C内の目立つ場所にレンダリングされることを示す。第2の仮想オブジェクトの深さ寸法における距離の量と比較して、第1の仮想オブジェクトの深さ寸法における距離の量がより少ないことは、第1の仮想オブジェクトの目立つ場所の一例である。第1の仮想オブジェクトのより少ない距離の量は、本明細書ではより近い距離と呼ばれることがあり、第2の仮想オブジェクトの距離の量は、本明細書ではより遠い距離と呼ばれることがある。一例として、深さ寸法は、画像フレーム102A、102B、または102Cの表示面に垂直な軸に沿って測定される。画像フレームの表示面は、画像フレームが表示されるディスプレイ画面の面である。レンダリングの優先度PRTYは、シェーダパラメータアジャスタAによって決定される。
【0068】
レンダリングの優先度は、PRTY1からPRTYnまでの範囲の値を有し、nは1より大きい整数である。PRTY1は、PRTY2と比較してレンダリングの優先度が低いことを表し、PRTY2は、PRTY3と比較してレンダリングの優先度が低いことを表すことに留意されたい。画像フレーム102A~102Cの1つまたは複数における仮想オブジェクトをレンダリングする際の優先順位の変更は、1つまたは複数の画像フレーム102A~102Cの複雑さのレベルの変更の一例である。
【0069】
パラメータP1~P3のいずれかのさらに別の例には、解像度R、光線の反復回数RIC、VORにレンダリングされた仮想オブジェクトの数、及び画像フレーム102A~102Cのいずれかの仮想オブジェクトに適用されたレンダリングの優先度PRTYに重みを与える品質パラメータ(QP)が含まれる。説明のために、シェーダパラメータアジャスタAは、重みW1を解像度Rに、重みW2を光線の反復回数RICに、重みW3をVORにレンダリングされた仮想オブジェクトの数に、及び重みW4を優先度PRTYに付加し、重み付け解像度、重み付け光線の反復回数、重み付けされたレンダリングされた仮想オブジェクトの数、及び品質パラメータの値を決定するための重み付けされた優先度を合計する。ここで、W1、W2、W3、及びW4はそれぞれ実数である。さらに説明するため、シェーダパラメータアジャスタAは、重みW1に解像度Rの値を乗算し、重みW2に光線の反復回数RICの値を乗算し、重みW3にVORにレンダリングされた仮想オブジェクトの数の値を乗算し、及び重みW4に優先度PRTYを乗算して、品質パラメータの値を計算する。シェーダパラメータアジャスタAは、品質パラメータの値をGPU Aに送信して、レンダリング動作中に画像フレーム102A、102B、または102Cに適用する。
【0070】
品質パラメータQPは、QP1からQPnまでの範囲の値を有し、nは1より大きい整数である。QP1は、QP2と比較してレンダリングの品質が低いことを表し、QP2は、QP3と比較してレンダリングの品質が低いことを表すことに留意されたい。
【0071】
図6Bは、GPU A(
図5)に関連するメトリックとパラメータP1、P2、またはP3との間のマッピング650の一実施形態の図である。マッピング650は、シェーダパラメータアジャスタA(
図5)によって適用され、パラメータP1、P2、またはP3の値を決定する。マッピングは、シェーダパラメータアジャスタAによって適用され、パラメータP1、P2、及びP3の1つまたは複数の値を決定するコンテンツルールの例である(
図5)。メトリックの例には、GPU Aによって消費される電力量、ネットワークレイテンシ、GPU Aの温度、ユーザ入力レイテンシ、またはそれらの2つ以上の組み合わせが含まれる。
【0072】
シェーダパラメータアジャスタAは、QAS AなどのQASを処理ユニットAから受信する。QAS Aは、GPU Aによって消費される電力の値がPWR1であり、ネットワークレイテンシの値がNL1であり、GPU Aの温度値がtemp1であり、ユーザ入力レイテンシの値がUL1であり、またはその2つ以上の組み合わせであるときに生成される。一例として、画像フレーム102A~102C(
図5)の1つまたは複数がレンダリングされ、レンダリングが終了していない前にユーザ入力A2(
図5)が受信されるとき、ユーザ入力レイテンシの値はUL1である。QAS Aを受信すると、シェーダパラメータアジャスタAは、メモリデバイスシステムAからのマッピング650にアクセスし(
図5)、画像フレーム102Aの少なくとも一部の解像度がR1であり、一部の光線の反復回数がRTC1であり、品質パラメータがQP1であり、画像フレーム102A内でレンダリングされる仮想オブジェクトの数がVOR1であり、画像フレーム102A内の仮想オブジェクトの優先度がPRTY1であると決定する。
【0073】
同様に、シェーダパラメータアジャスタAは、QAS BなどのQASを処理ユニットAから受信する。QAS Bは、GPU Aによって消費される電力の値がPWR2であり、ネットワークレイテンシの値がNL2であり、GPU Aの温度値はtemp2であり、ユーザ入力レイテンシの値がUL2であり、またはその2つ以上の組み合わせであるときに生成される。一例として、画像フレーム102A~102C(
図5)の1つまたは複数がレンダリングされ、レンダリングが終了する前にユーザ入力A2(
図5)が受信されるとき、ユーザ入力レイテンシの値はUL2である。QAS Bを受信すると、シェーダパラメータアジャスタAは、メモリデバイスシステムA(
図5)からのマッピング650にアクセスし、画像フレーム102Aの少なくとも一部の解像度がR2であり、一部の光線の反復回数がRTC2であり、品質パラメータがQP2であり、画像フレーム102A内でレンダリングされる仮想オブジェクトの数がVOR2であり、画像フレーム102A内の仮想オブジェクトの優先度がPRTY2であると決定する。
【0074】
図6Cは、GPU A(
図5)によるレンダリング動作の実行中に画像フレーム102A(
図5)内の仮想オブジェクトの詳細が修正されることを示すための方法660の一実施形態の図である。方法660では、CPU Aは、通信媒体A(
図5)を介してGPU Aに、仮想草の葉を描画し、仮想ブッシュを描画し、画像フレーム102A内に仮想雲を描画するように指示する。CPU Aはさらに葉の詳細を値D1に設定し、葉の描画を値PRTY1に優先順位付けし、詳細及び優先度をGPU Aに与える。CPU AはGPU AにシェーダAを実行するように指示する(
図5)。シェーダAの実行中に、GPU Aは詳細レベルをD1から値D2に変更する。詳細レベルは、シェーダAの実行中にGPU Aによって修正される品質パラメータの一部である。品質パラメータは、シェーダAの実行中のGPU Aのビジー状態、シェーダAの実行中のGPU Aの温度、シェーダAの実行中にGPU Aによって消費される電力量、及びユーザ入力A2が、画像フレーム102A~102C(
図5)などの、より複雑でない画像フレームまたはより滑らかな画像フレームの再生を要求するために、クライアントデバイスA(
図5)から受信されるかどうかに基づいて調整される。
【0075】
一実施形態では、CPU Aは、仮想草の葉を描画し、仮想ブッシュを描画し、仮想雲を描画する命令がCPU Aによって生成されている間に、GPU Aが品質パラメータを変更するための命令を生成しないことに留意されたい。例えば、CPU Aは、シェーダAが仮想草の葉、仮想ブッシュ、及び仮想雲を描画するためにGPU Aによって実行される前に、品質パラメータを変更するようにGPU Aに命令しない。むしろ、シェーダAが仮想草の葉、仮想ブッシュ、及び仮想雲を描画するために実行されている期間中に、ネットワークレイテンシ、GPU Aの温度、GPU Aによって消費される電力量、またはユーザ入力レイテンシ、もしくそれらの2つ以上の組み合わせが決定され、その決定に基づいて、品質パラメータがGPU Aによって調整されて、画像フレーム102A~102Cの1つまたは複数が生成される。
【0076】
図6Dは、パラメータP1~P3のうちの1つまたは複数の値が画像フレームの異なる部分で調整されることを説明するための画像フレーム692、694、696、698、及び699の実施形態を示す図である。画像フレーム692、694、696、698、及び699はそれぞれ、画像フレーム102A~120C(
図5)のいずれかの一例である。
【0077】
画像フレーム692~698はそれぞれ、部分A及び部分Bを有する。部分Bは、1つまたは複数のパラメータP1~P3の調整された値を有し、部分Aは、調整された値を有さない。一例として、部分Aをレンダリングするためにレイトレーシングが実施される回数は、部分Bをレンダリングするためにレイトレーシングが実施される回数よりも多い。一例として、部分Aは、部分BがシェーダA(
図5)によって生成される前に生成される。別の例として、部分Aは、部分BがシェーダAによって生成された後に生成される。さらに別の例として、部分Aは、部分Bの生成と同時に生成される。画像フレーム692内の部分Aは、部分Bの上にあり、部分Bよりサイズが小さい。画像フレーム694内の部分Aは、部分Bの上にあり、部分Bのサイズとサイズが等しい。画像フレーム696内の部分Aは、部分Bの上にあり、部分Bよりサイズが大きい。画像フレーム698内の部分Bは、部分Aに囲まれており、部分Aのサイズに比べてサイズが小さい。
【0078】
画像フレーム699は、複数の部分A1、A2、及びBを有する。一例として、画像フレーム699の部分A1及びA2は、画像フレーム699の部分BがシェーダAによって生成される前に、シェーダAによって生成される。一例として、画像フレーム699の部分A1及びA2は、画像フレーム699の部分BがシェーダAによって生成された後、シェーダAによって生成される。さらに別の例として、画像フレーム699の部分A1及びA2は、シェーダAによる画像フレーム699の部分Bの生成と同時にシェーダAによって生成される。部分A1及びA2は、パラメータP1~P3の1つまたは複数の調整された値を有し、部分BはパラメータP1~P3の1つまたは複数の調整された値を有さない。一例として、部分A1の調整された値は、部分A2の調整された値とは異なる。別の例として、部分A1の調整された値は、部分A2の調整された値と等しいなど、同じである。さらに別の例として、部分A1の調整された値は、部分A2の調整された値から所定の範囲内など、実質的に同じである。
【0079】
一実施形態では、部分Aは、画像フレーム692~694の1つまたは複数内の部分Bの下にある。
【0080】
一実施形態では、画像フレーム692~698の部分Aは、パラメータP1、P2、またはP3の1つまたは複数の調整された値を有し、部分Bは、調整された値を有さない。
【0081】
一実施形態では、画像フレーム699の部分Bは、パラメータP1~P3の1つまたは複数の調整された値を有し、画像フレーム699の部分A1及びA2は、パラメータP1~P3の1つまたは複数の調整された値を有さない。
【0082】
図7は、分散型ゲームのためのノードA及びBの使用を説明するためのシステム700の一実施形態の図である。システム100は、ユーザアカウントサーバ702、ノードアセンブリサーバ704、スイッチシステム706、ノードA及びB、コンピュータネットワーク202、ならびにクライアントデバイスA及びBを含む。
【0083】
本明細書で使用されるノードは、ゲームエンジンAを実行するハードウェアサーバまたはゲームコンソールである。一例として、ノードは、別のノードのハウジングとは別のハウジングを有する。別の例として、ノードは、データセンタ内で別のノードが配置されているラックとは異なる、データセンタのラックに配置される。一実施形態では、本明細書で使用されるサーバは、プロセッサ及びメモリデバイスを含む。プロセッサはメモリデバイスに結合されている。
【0084】
本明細書で使用されるスイッチシステムは、ノードアセンブリサーバ704とノードA及びBの1つまたは複数との間のデータの転送を容易にする1つまたは複数のスイッチを含む。例えば、スイッチシステムはスイッチファブリックである。スイッチファブリックは、ノード間に大量の帯域幅を提供し、動的に頻繁に再構成され、サービス品質(QoS)を可能にする。別の例として、スイッチシステムは、ゲームエンジンAの実行のためにノードAとBとの間で選択するマルチプレクサを含む。別の例として、スイッチシステムは、ノードアセンブリサーバ704と一方または両方のノードA及びBとの間のデータの転送を容易にする1つまたは複数のトランジスタを含む。さらに別の例として、スイッチシステムは、1つまたは複数のスイッチを含み、各スイッチは、開位置と閉位置の間で位置を変える。スイッチの開位置は、ノードアセンブリサーバ704を、スイッチに結合されているノードから切り離す。スイッチの閉位置は、ノードアセンブリサーバ704を、スイッチに結合されたノードに結合する。
【0085】
メモリデバイスシステムAは、符号化された画像フレーム104A及び104Bを格納するためのフレームバッファと、画像フレーム102A~102C(
図5)を格納するためのフレームバッファとを含むGPUメモリデバイスAを含む。GPUメモリデバイスAは、通信媒体Aに結合される。
【0086】
クライアントデバイスAは、ユーザAから、クライアントデバイスAの入力デバイス、例えば、ハンドヘルドコントローラ、カメラなどを介して、ユーザ名及びパスワードなどのログイン情報を受信すると、ゲーム要求708Aを生成し、ログイン情報を有するゲーム要求708Aをコンピュータネットワーク202を介してユーザアカウントサーバ702に送信する。同様に、クライアントデバイスBの入力デバイスを介してユーザBからログイン情報を受信すると、クライアントデバイスBは、ゲーム要求708Bを生成し、コンピュータネットワーク202を介してログイン情報を有するゲーム要求708Bをユーザアカウントサーバ702に送信する。
【0087】
ユーザアカウントサーバ702は、ゲーム要求708Aと共に受信されたログイン情報に基づいて、クライアントデバイスAがゲームエンジンAにアクセスすることを許可されているかどうかを判定する。例えば、ゲーム要求708Aと共に受信されたログイン情報を認証すると、ユーザアカウントサーバ702は、クライアントデバイスAがゲームエンジンAへアクセスすることを承認されていると判定する。また、ユーザアカウントサーバ702は、ゲーム要求708Bと共に受信したログイン情報に基づいて、クライアントデバイスBがゲームエンジンAへアクセスすることを承認されているかどうかを判定する。ユーザアカウントA及びBがゲームエンジンAへのアクセスを承認されていると判定すると、ユーザアカウントサーバ702は、ゲームエンジンAの実行を可能にするための信号をノードアセンブリサーバ704に送信する。
【0088】
ノードアセンブリサーバ704は、ユーザアカウントサーバ702から信号を受信すると、スイッチシステム706を介して、ゲームエンジンAを実行して一方または両方のノードA及びBを初期化する一方または両方のノードA及びBを選択する。例えば、ノードアセンブリサーバ704は、スイッチシステム706の制御入力に信号を送信して、ノードA及びBの一方に結合する。制御入力で信号を受信すると、スイッチシステム706は、ノードアセンブリサーバ704をノードAに接続するためにスイッチのうちの一方の位置を閉じ、及びノードアセンブリサーバ704をノードBから切断するためにそのスイッチのうちの別の一方の位置を開く。
【0089】
ゲームエンジンAは、符号化されたフレームなどのデータを、コンピュータネットワーク202を介して一方または両方のノードA及びBからクライアントデバイスA及びBに転送するように実行される。符号化されたフレームなどのデータは、ノードAからクライアントデバイスA及びBに転送されるとき、GPU Aは共有されたリソースである。GPU Aは、クライアントデバイスAとBとの間で共有される。
図5を参照して上に示したユーザ入力A1及びA2は、ゲーム要求708AがクライアントデバイスAからノードAに送信された後、クライアントデバイスAからノードAに送信される。
【0090】
コンピュータネットワーク202(
図5)を介して符号化された画像フレーム104A~104B(
図5)を受信すると、クライアントデバイスAは、符号化された画像フレーム104A及び104Bを解凍するなど、復号して、画像フレーム102A~102Cを生成するデコーダを含む。クライアントデバイスAのGPUなどのプロセッサは、ゲームの仮想シーンをレンダリングするために画像フレーム102Aを表示し、さらに、クライアントデバイスAのディスプレイデバイス上に画像フレーム102B及び102Cを表示する。
【0091】
一実施形態では、システム700は、
図7に示されているノード以外の複数のノードを含むことに留意されたい。例えば、システム700は、50個のノード、25個のノード、または5個のノードを含む。
【0092】
図8は、クラウドビデオゲームをクライアントデバイスAまたはB(
図7)にストリーミングするために実施される様々な動作を概念的に示す流れ図の一実施形態である。ノードAまたはB(
図7)の一例であるゲームサーバ802は、ビデオゲームを実行し、生の(非圧縮の)ビデオ804及びオーディオ806を生成する。ビデオ804及びオーディオ806は、例示される図の参照符号808に示されるように、ストリーミング目的のために捕捉され符号化される。符号化により、ビデオ及びオーディオのストリームが圧縮され、帯域幅の使用量は軽減され、ゲーム体験は最適化される。符号化形式の例には、H.265/MPEG-H、H.264/MPEG-4、H.263/MPEG-4、H.262/MPEG-2、WMV、VP6/7/8/9などが含まれる。
【0093】
符号化されたオーディオ810及び符号化されたビデオ812はさらに、インターネットなどのコンピュータネットワーク202(
図7)上での送信のために、参照符号814に示されるように、ネットワークパケットにパケット化される。いくつかの実施形態では、ネットワークパケット符号化プロセスは、データ暗号化プロセスも採用することによって、データセキュリティを強化する。図示の実施態様では、オーディオパケット816及びビデオパケット818は、コンピュータネットワーク202の一例であるコンピュータネットワーク820上での搬送のために生成される。
【0094】
ゲームサーバ802は追加で、触覚フィードバックデータ822を生成し、触覚フィードバックデータ822はまた、ネットワーク送信のためにネットワークパケットにパケット化される。図示の実施態様では、触覚フィードバックパケット824が、コンピュータネットワーク820上で搬送のために生成される。
【0095】
生のビデオとオーディオと触覚フィードバックデータとを生成する前述の動作が、データセンタのゲームサーバ802で実施され、ビデオ及びオーディオを符号化し、搬送用に符号化されたオーディオ/ビデオ及び触覚フィードバックデータをパケット化する動作は、データセンタのストリーミングエンジンAなどのストリーミングエンジンによって実施される。示されるように、オーディオ、ビデオ、及び触覚フィードバックのパケットは、コンピュータネットワーク820上で搬送される。参照符号826に示されるように、オーディオパケット816、ビデオパケット818、及び触覚フィードバックパケット824は、クライアントデバイスAまたはBによって、例えば、解析されるなど、分解されて、符号化されたオーディオ828、符号化されたビデオ830、及び触覚フィードバックデータ832をクライアントデバイスでネットワークパケットから抽出する。データが暗号化されている場合、データの解読も行われる。次に、符号化されたオーディオ828及び符号化されたビデオ830は、参照符号834に示されるように、クライアントデバイスAまたはBにより復号され、クライアントデバイスのディスプレイデバイス840上にレンダリングするためにクライアント側の生のオーディオ及びビデオデータを生成する。触覚フィードバックデータ832は、クライアントデバイスAまたはBなど、クライアントデバイスのプロセッサによって処理されて、コントローラデバイス842または触覚効果をレンダリングすることができる、例えば、HMD等の他のインターフェースデバイスで、触覚フィードバック効果を生成する。触覚効果の一例として、コントローラデバイス842の振動またはランブルが挙げられる。コントローラデバイス842は、複数のボタンを有するハンドヘルドコントローラの一例である。コントローラデバイス842はまた、クライアントデバイスAまたはBの一部である。例えば、クライアントデバイスAまたはBは、コントローラデバイス842及びゲームコンソールを含む。別の例として、クライアントデバイスAまたはBは、コントローラデバイス842及びHMDを含む。コントローラデバイス842は、Bluetooth(登録商標)またはWi-Fi(登録商標)などの無線プロトコルを介してHMDと通信する。さらに別の例として、クライアントデバイスAまたはBは、コントローラデバイス842、ゲームコンソール、及びHMDを含む。ゲームコンソールは、無線プロトコルを介してまたはケーブルなどの有線媒体を介してHMDと通信し、コントローラデバイス842は、無線プロトコルを介してまたは有線媒体を介してゲームコンソールと通信する。
【0096】
ビデオゲームはユーザ入力A1及びA2(
図5)などのユーザ入力に応答するので、ユーザ入力の送信及び処理に対して本明細書に記載される、前述と同様の手順の流れを、クライアントデバイスAまたはBからゲームサーバ802に逆方向で実施されることが、理解されよう。示されるように、コントローラデバイス842または例えば、ユーザAの身体部分などの別の入力デバイス、もしくはそれらの組み合わせは、ユーザ入力A1及びA2のいずれかの例である入力データ844を生成する。この入力データ844は、コンピュータネットワーク820上でデータセンタへの搬送のためにクライアントデバイスAまたはBにおいてパケット化される。入力データパケット846は、ゲームサーバ802により解凍及び再構築されて、データセンタ側で入力データ848を規定する。入力データ848がゲームサーバ802に供給され、ゲームサーバ802は、ビデオゲームのゲーム状態の保管データを更新するよう入力データ848を処理する。
【0097】
オーディオパケット1016、ビデオパケット818、及び触覚フィードバックパケット824のコンピュータネットワーク820を介した搬送中に、いくつかの実施形態では、コンピュータネットワーク820上のデータの送信が監視されて、サービス品質が保証される。例えば、参照符号850により示されるように、アップストリーム及びダウンストリームの両方のネットワーク帯域幅を含むコンピュータネットワーク820のネットワーク条件が監視され、ゲームストリーミングは、利用可能な帯域幅の変化に応じて調整される。すなわち、参考符号852により示されるように、ネットワークパケットの符号化及び復号は、現在のネットワーク条件に基づいて制御される。
【0098】
図9は、クライアントデバイスAまたはBのディスプレイデバイスとインターフェース接続するために互換性があり、ゲームサーバ802(
図8)とコンピュータネットワーク820(
図8)を介して通信できるゲームコンソール900の一実施形態のブロック図である。ゲームコンソール900は、データセンタ内に配置されているか、またはユーザAが位置する場所に配置されている。いくつかの実施形態では、ゲームコンソール900を使用して、HMD上などのクライアントデバイスAまたはBに表示されるゲームを実行する。ゲームコンソール900は、ゲームコンソール900に接続可能な様々な周辺機器を備えている。ゲームコンソール900は、ダイナミックランダムアクセスメモリ(XDRAM)ユニット926、セルプロセッサ928、専用ビデオランダムアクセスメモリ(VRAM)ユニット932を備えるReality Synthesizer グラフィックスプロセッサユニット930、及び入力/出力(I/O)ブリッジ934を有する。ゲームコンソール900はまた、I/Oブリッジ934を通してアクセス可能な、ディスク940aから読み出すためのBlu Ray(登録商標)ディスク読み出し専用メモリ(BD-ROM)光ディスクリーダ940と、取り外し可能スロットインハードディスクドライブ(HDD)936とを有する。オプションで、ゲームコンソール900はまた、コンパクトフラッシュ(登録商標)メモリカード、メモリスティック(登録商標)メモリカードなどを読み出すためのメモリカードリーダ938を含み、メモリカードリーダ938は、I/Oブリッジ934を介して同様にアクセス可能である。I/Oブリッジ934はまた、Bluetooth(登録商標)無線リンクポート918と、IEEE802.9b/g無線ネットワーク(Wi-Fi(登録商標))ポート920と、ギガビットイーサネット(登録商標)ポート922と、Bluetooth(登録商標)接続を支援することが可能なユニバーサルシリアルバス(USB)2.0ポート924とに接続する。
【0099】
動作中、I/Oブリッジ934は、ゲームコントローラ842及び/または903から、並びにHMD905からのデータを含む、すべての無線、USB、及びイーサネット(登録商標)データを扱う。例えば、ユーザAが、ゲームエンジンAの一部の実行によって生成されたゲームをプレイしているとき、I/Oブリッジ934は、ゲームコントローラ842及び/または903から、ならびに/あるいは、HMD905から、Bluetooth(登録商標)リンクを介して入力データを受信し、入力データをセルプロセッサ928に向け、セルプロセッサ928は、それに応じて、変数などのゲームの現在の状態を更新する。一例として、HMD905内のカメラは、ユーザAのジェスチャをキャプチャして、ジェスチャを表す画像を生成する。画像は、ユーザ入力A1またはA2(
図5)の別の一例である。各ゲームコントローラ842及び903は、ハンドヘルドコントローラの一例である。
【0100】
無線ポート、USBポート、及びイーサネット(登録商標)ポートは、例えば、リモートコントロール904、キーボード906、マウス908などのゲームコントローラ842及び903ならびにHMD905に加えて、例えば、Sony Playstation Portable(登録商標)エンターテインメントデバイスなどのポータブルエンターテインメントデバイス910、例えば、EyeToy(登録商標)ビデオカメラなどのビデオカメラ912、マイクロフォンヘッドセット914,及びマイクロフォン915などの他の周辺デバイスへの接続性も提供する。いくつかの実施形態では、このような周辺デバイスは、ゲームコンソール900に無線で接続され、例えば、ポータブルエンターテイメントデバイス910は、Wi-Fi(登録商標)アドホック接続を介して通信し、マイクロフォンヘッドセット914は、Bluetooth(登録商標)リンクを介して通信する。
【0101】
これらのインターフェースの提供は、ゲームコンソール900がまた、デジタルビデオレコーダ(DVR)、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤ、ボイスオーバインターネットプロトコル(IP)電話、携帯電話、プリンタ、及びスキャナなどの他の周辺デバイスに対応する可能性があることを意味する。
【0102】
さらに、レガシーメモリカードリーダ916は、USBポート924を介してゲームコンソール900に接続され、ゲームコンソール900によって使用される種類のメモリカード948の読み取りを可能にする。ゲームコントローラ842及び903ならびにHMD905とは、Bluetooth(登録商標)リンク918を介してゲームコンソール900と無線で通信するように、またはUSBポート924に接続されるように動作可能であり、それによってゲームコントローラ842及び903ならびにHMD905のバッテリを充電するための電力も受け取る。いくつかの実施形態では、ゲームコントローラ842及び903ならびにHMD905はそれぞれ、メモリ、プロセッサ、メモリカードリーダ、例えば、フラッシュメモリなどの永久メモリ、例えば、照明球形部、発光ダイオード(LED)、もしくは赤外線ライトなどの発光体、超音波通信用のマイクロフォン及びスピーカ、音響チャンバ、デジタルカメラ、内部時計、例えば、ゲームコンソール900に面する球形部などの認識可能な形状、並びに、例えば、Bluetooth(登録商標)、Wi-Fi(登録商標)などのプロトコルを使用する無線デバイス等を含む。
【0103】
ゲームコントローラ842は、ユーザAの両手で使用するように設計されたコントローラであり、ゲームコントローラ903は、アタッチメントを備えた片手コントローラである。HMD905は、ユーザAの頭の上部及び/または目の前に合うように設計されている。1つまたは複数のアナログジョイスティック及び従来型コントロールボタンに加えて、各ゲームコントローラ842及び903は、三次元位置決定の影響を受ける。同様に、HMD905は、3次元位置決定の影響を受ける。その結果、いくつかの実施形態では、ゲームコントローラ842及び903並びにHMD905のユーザAによるジェスチャ及び運動は、従来のボタンまたはジョイスティックのコマンドに加えて、またはそれらの代わりに、ゲームエンジンA(
図5)への入力信号A1またはA2などの、入力として変換される。オプションで、Playstation(登録商標)ポータブルデバイスなどの他の無線対応の周辺デバイスがコントローラとして使用される。Playstation(登録商標)ポータブルデバイスの場合、追加のゲーム情報または制御情報、例えば、制御命令または残機数等がデバイスのディスプレイ画面上に提供される。いくつかの実施形態では、ダンスマット(図示せず)、ライトガン(図示せず)、ハンドル及びペダル(図示せず)、または特注コントローラなど、他の代替的または補助的な制御デバイスが使用される。特注コントローラの例には、即答クイズゲーム用の1つまたはいくつかの大型ボタン(同様に図示せず)が含まれる。
【0104】
リモートコントロール904も、Bluetooth(登録商標)リンク918を介してゲームコンソール900と無線で通信するように動作可能である。リモートコントロール904は、Blu Ray(登録商標)ディスクBD-ROMリーダ940の動作に適した制御、及びディスクコンテンツのナビゲーションに適した制御を含む。
【0105】
Blu Ray(登録商標)ディスクBD-ROMリーダ940は、従来の記録済みのCD及び記録可能なCDと、いわゆるスーパーオーディオCDとに加えて、ゲームコンソール900と互換性を有するCD-ROMを読み出すように動作可能である。Blu Ray(登録商標)ディスクBD-ROMリーダ940はまた、従来の記録済みのDVD及び記録可能なDVDに加えて、ゲームコンソール900と互換性を有するデジタルビデオディスクROM(DVD-ROM)を読み出すように動作可能である。Blu Ray(登録商標)ディスクBD-ROMリーダ940は、ゲームコンソール900と互換性を有するBD-ROMと、従来の記録済みのBlu-Ray(登録商標)ディスク及び記録可能なBlu-Ray(登録商標)ディスクとを読み出すようにさらに動作可能である。
【0106】
ゲームコンソール900は、Reality Synthesizerグラフィックスユニット930を介して生成または復号されたオーディオ及びビデオを、ディスプレイ画面944及び1つまたは複数のラウドスピーカ946を有する、例えば、モニタまたはテレビセット等のディスプレイ及び音声出力デバイス942にオーディオコネクタ950及びビデオコネクタ952を通して供給するように、または、Bluetooth(登録商標)無線リンクポート918を介してHMD905のディスプレイデバイスにオーディオ及びビデオを供給するように動作可能である。音声出力デバイス942は、クライアントデバイスAまたはBのディスプレイデバイスの一例である。オーディオコネクタ950は、様々な実施形態において、従来のアナログ及びデジタル出力を含み、他方、ビデオコネクタ952は、コンポーネントビデオ、Sビデオ、コンポジットビデオ、及び1つまたは複数の高解像度マルチメディアインターフェース(HDMI(登録商標))出力を様々に含む。結果として、ビデオ出力は、位相反転線(PAL)または全国テレビジョン方式委員会(NTSC)などの形式、または、2220p、1080i、もしくは1080pの高解像度であってよい。オーディオ処理、例えば、生成、復号などは、セルプロセッサ908によって行われる。ゲームコンソール900のオペレーティングシステムは、Dolby(登録商標)5.1サラウンドサウンド、Dolby(登録商標)シアターサラウンド(DTS)、及びBlu-Ray(登録商標)ディスクの7.1サラウンドサウンドの復号を支援する。
【0107】
いくつかの実施形態では、ビデオカメラ、例えば、ビデオカメラ912等は、単一の電荷結合素子(CCD)、LEDインジケータ、及びハードウェアベースのリアルタイムデータ圧縮及び符号化装置を備え、これにより、圧縮されたビデオデータは、ゲームコンソール900により復号されるために、画像内ベースのMPEG(motion picture expert group)規格などの適切な形式で送信される。ビデオカメラ912のLEDインジケータは、例えば、不利な照明条件などを示すために、ゲームコンソール900からの適切な制御データに応答して点灯するように配置される。ビデオカメラ912のいくつかの実施形態は、USB、Bluetooth(登録商標)またはWi-Fi(登録商標)通信ポートを介してゲームコンソール900に様々に接続する。ビデオカメラの様々な実施形態は、1つまたは複数の関連付けられたマイクロフォンを含み、またオーディオデータを送信できる。ビデオカメラのいくつかの実施形態では、CCDは、高解像度ビデオキャプチャに適した解像度を有する。使用時、ビデオカメラによってキャプチャされた画像は、ゲーム内に組み込まれる、またはゲーム制御入力として解釈される。別の実施形態では、ビデオカメラは、赤外光を検出するのに適した赤外線カメラである。
【0108】
様々な実施形態では、ゲームコンソール900の通信ポートのうちの1つを介して、例えば、ビデオカメラまたはリモートコントロールなどの周辺デバイスとのデータ通信が正常に行われるように、デバイスドライバなどの適切なソフトウェアが提供される。
【0109】
いくつかの実施形態では、ゲームコンソール900、HHC、及びHMD905を含む前述のシステムデバイスは、HMD905がゲームのインタラクティブセッションのビデオを表示及びキャプチャすることを可能にする。システムデバイスは、ゲームのインタラクティブセッションを開始するために、ゲームエンジンAの実行を容易にし、インタラクティブセッションは、ユーザAとゲームとの間のインタラクションを規定する。システムデバイスは、さらに、ユーザAによって操作されるHHC及び/またはHMD905の初期位置及び向きを決定する。ゲームコンソール900は、ユーザAとゲームとの間のインタラクションに基づいて、ゲームの現在の状態を決定する。システムデバイスは、ゲームとのユーザAのインタラクティブセッション中、HHC及び/またはHMD905の位置及び向きを追跡する。システムデバイスは、ゲームの現在の状態と、HHC及び/またはHMD905の追跡された位置及び向きとに基づいて、インタラクティブセッションの観客ビデオストリームを生成する。いくつかの実施形態では、HHCは、HHCのディスプレイ画面またはクライアントデバイスAのディスプレイデバイス上に観客ビデオストリームをレンダリングする。様々な実施形態において、HMD905は、観客ビデオストリームを、HMD905のディスプレイ画面上にレンダリングする。
【0110】
図10を参照すると、HMD1002の構成要素を示す図が示されている。HMD1002は、HMD905(
図9)の一例である。HMD1002は、プログラム命令を実行するためのプロセッサ1000を含む。メモリデバイス1002は、記憶目的のために備えられる。メモリデバイス1002の例には、揮発性メモリ、不揮発性メモリ、またはそれらの組み合わせが含まれる。ユーザA(
図1)が見る視覚的インターフェース、例えば、保管データから生成された画像フレームの表示などを提供するディスプレイデバイス1004が含まれる。HMD1002の電源として、バッテリ1006が備えられる。運動検出回路1008は、磁力計1010、加速度計1012、及びジャイロスコープ1014などの、さまざまな種類の運動感知性ハードウェアのいずれかを含む。
【0111】
加速度計は、加速度及び重力誘起反力を測定するデバイスである。単軸及び多軸モデルは、異なる方向における加速度の大きさ及び方向を検出するために利用可能である。加速度計は、傾き、振動、及び衝撃を感知するために使用される。一実施形態では、3つの加速度計1012は、重力の方向を与えるために使用され、重力の方向は、2つの角度、例えば、世界空間ピッチ及び世界空間ロールなどについての絶対基準を与える。
【0112】
磁力計は、HMD1002付近の磁場の強度及び方向を測定する。いくつかの実施形態では、3つの磁力計1010は、HMD1002内で使用され、世界空間ヨー角度についての絶対基準を保証する。様々な実施形態では、磁力計は、±80マイクロテスラの地球の磁場にわたるように設計される。磁力計は金属の影響を受け、実際のヨーに対して単調なヨー測定を提供する。いくつかの実施形態において、磁場は実世界環境内の金属により歪み、これによりヨー測定に歪みが生じる。様々な実施形態において、この歪みは、他のセンサ、例えば、ジャイロスコープ1014、カメラ1016等からの情報を使用して較正される。一実施形態では、加速度計1012は、HMD1002の傾き及び方位を取得するために磁力計1010と共に使用される。
【0113】
ジャイロスコープは、角運動量の原理に基づいて、向きを測定または維持するデバイスである。一実施形態では、ジャイロスコープ1014に代わって、3つのジャイロスコープが、慣性感知に基づいて、それぞれの軸x、y、及びzにわたる動きに関する情報を提供する。ジャイロスコープは、高速回転の検出を助ける。しかしながら、ジャイロスコープは、いくつかの実施形態では、絶対基準が存在しないと、時間の経過と共にドリフトする。これは、定期的なジャイロスコープのリセットをトリガし、リセットは、物体の視覚追跡、加速度計、磁力計などに基づく位置/向きの決定など、他の入手可能な情報を使用して行うことができる。
【0114】
カメラ1016は、ユーザAを取り巻く実世界環境、例えば、部屋、キャビン、自然環境などの画像及び画像ストリームをキャプチャするために提供される。様々な実施形態では、例えば、ユーザAがHMD1002などのディスプレイを見ているとき、ユーザAから離れる方に向いた、背面を向いているカメラ、及び、例えば、ユーザAがHMD1002などのディスプレイを見ているとき、ユーザAの方を向いた、前面を向いているカメラを含む、複数のカメラが、HMD1002に含まれる。追加で、いくつかの実施形態では、実世界環境内のオブジェクトの深度情報を感知するために、深度カメラ1018がHMD1002に含まれる。
【0115】
HMD1002は、オーディオ出力を提供するためのスピーカ1020を含む。また、いくつかの実施形態では、周囲環境からの音声、ユーザAが行った発話などを含む、実世界環境からのオーディオをキャプチャするために、マイクロフォン1022が含まれる。HMD1002は、ユーザAに触覚フィードバックを提供するために触覚フィードバック回路1024、例えば、振動デバイスなどを含む。一実施形態では、触覚フィードバック回路1024は、ユーザAに触覚フィードバックを提供するためにHMD1002の運動及び/または振動を発生させ得る。
【0116】
LED1026は、HMD1002の状態の視覚インジケータとして備えられる。例えば、LEDは、バッテリレベル、電源オンなどを示してよい。HMD1002がメモリカードからの情報を読み出し、メモリカードに情報を書き込むことを可能にするために、カードリーダ1028が備えられる。周辺デバイスの接続、または他のデバイス、例えば、他のポータブルデバイス、コンピュータなどへの接続を可能にするためのインターフェースの一例としてUSBインターフェース1030が備えられる。HMD1002の様々な実施形態では、様々な種類のインターフェースのいずれかが、HMD1002のより広範な接続性を可能にするために含まれてよい。
【0117】
Wi-Fi(商標)回路1032は、無線ネットワーク技術を介してインターネットへの接続を可能にするために含まれる。また、HMD1002は、他のデバイスへの無線接続を可能にするために、Bluetooth(商標)回路1034を含む。いくつかの実施形態では、他のデバイスへの接続のために通信リンク1036も含まれる。1つの実施形態において、通信リンク1036は、無線通信用の赤外線伝送を利用する。他の実施形態では、通信リンク1036は、他のデバイスとの通信のために、様々な無線または有線の伝送プロトコルのいずれかを利用する。
【0118】
入力ボタン/センサ1038は、ユーザA(
図1)に入力インターフェースを提供するために含まれる。ボタン、タッチパッド、ジョイスティック、トラックボールなど、様々な種類の入力インターフェースのいずれかが含まれる。様々な実施形態では、超音波技術を介して他のデバイスとの通信を容易にするために、超音波通信回路1040がHMD1002に含まれる。
【0119】
バイオセンサ1042は、ユーザAまたはBからの生体情報の検出を可能にするために含まれる。一実施形態では、バイオセンサ1042は、ユーザの皮膚を通してユーザAまたはBの生体電気信号を検出するために、1つまたは複数の乾電極を含む。
【0120】
HMD1002の前述の構成要素は、HMD1002内に含まれ得る単なる例示的な構成要素として記載された。様々な実施形態では、HMD1002は、上記の様々な構成要素の一部を含むか、または含まない。
【0121】
図11は、情報サービスプロバイダ(INSP)アーキテクチャの実施形態を示す。INSP1102は、地理的に分散し、コンピュータネットワーク1106、例えば、LAN、WAN、またはそれらの組み合わせ等を介して接続されたユーザA、B、C及びDに多くの情報サービスを提供する。コンピュータネットワーク1106は、コンピュータネットワーク820(
図8)の一例である。WANの一例にはインターネットが含まれ、LANの一例にはイントラネットが含まれる。ユーザAは、クライアントデバイス1120~1を操作し、ユーザBは、別のクライアントデバイス1120~2を操作し、ユーザCは、さらに別のクライアントデバイス1120~3を操作し、ユーザDは、別のクライアントデバイス1120~4を操作する。
【0122】
いくつかの実施形態では、各クライアントデバイス1120~1、1120~2、1120~3、及び1120~4は、中央処理装置(CPU)、ディスプレイ、及び入力/出力(I/O)インターフェースを含む。各クライアントデバイス1120~1、1120~2、1120~3、及び1120~4の例には、パーソナルコンピュータ(PC)、携帯電話、ネットブック、タブレット、ゲームシステム、パーソナルデジタルアシスタント(PDA)、ゲームコンソール900(
図9)及びディスプレイデバイス、HMD1202(
図11)、ゲームコンソール900及びHMD1002(
図10)、デスクトップコンピュータ、ラップトップコンピュータ、スマートテレビなどが含まれる。各クライアントデバイス1120~1、1120~2、1120~3、及び1120~4は、クライアントデバイスA(
図7)またはクライアントデバイスB(
図7)の一例である。いくつかの実施形態では、INSP1102は、クライアントデバイスのタイプを認識し、使用される通信方法を調整する。
【0123】
いくつかの実施形態では、INSPは、株価更新などの一種類のサービス、またはブロードキャスト媒体、ニュース、スポーツ、ゲームなどの様々なサービスを提供する。さらに、各INSPによって提供されるサービスは動的である、すなわち、任意の時点でサービスを追加することができる、または取り除くことができる。従って、特定の個人に特定の種類のサービスを提供するINSPは、時間の経過と共に変わり得る。例えば、クライアントデバイス1120~1がユーザAの居住地にある間は、クライアントデバイス1120~1は、クライアントデバイス1120~1の近くのINSPによってサービスを提供され、ユーザAが異なる都市に移動すると、クライアントデバイス1120~1は、異なるINSPによってサービスを提供される。居住地のINSPは、要求された情報及びデータを新しいINSPに転送し、その結果、情報は、新しい都市までクライアントデバイス1120~1「を追いかけて」、データをよりクライアントデバイス1120~1に近くし、アクセスを容易にする。様々な実施形態では、クライアントデバイス1120~1の情報を管理するマスタINSPと、マスタINSPからの制御下でクライアントデバイス1120~1と直接的にインターフェース接続するサーバINSPとの間に、マスタサーバ関係が確立される。いくつかの実施形態では、クライアントデバイス1120~1が世界中を移動すると、あるISPから別のISPにデータが転送され、これにより、クライアントデバイス1120~1にサービスを提供するのにより良い位置に存在するINSPが、これらのサービスを届けるINSPとなる。
【0124】
INSP1102は、コンピュータネットワーク1106上で顧客にコンピュータベースのサービスを提供するアプリケーションサービスプロバイダ(ASP)1108を含む。ASPモデルを使用して提供されるソフトウェアは、オンデマンドソフトウェアまたはソフトウェアアズアサービス(SaaS)と呼ばれることもある。顧客関係管理などのコンピュータベースのサービスへのアクセスを提供する簡単な形式は、ハイパーテキスト転送プロトコル(HTTP)などの標準プロトコルを使用することによる。アプリケーションソフトウェアは、ベンダのサーバに常駐し、ベンダによって提供される特殊用途クライアントソフトウェア、及び/または他のリモートインターフェース、例えば、シンクライアント等によって、ハイパーテキストマークアップ言語(HTML)等を使用して、ウェブブラウザを通して各クライアントデバイス1120~1、1120~2、1120~3、及び1120~4によってアクセスされる。
【0125】
広い地理的地域にわたって供給されるサービスは、多くの場合、クラウドコンピューティングを使用する。クラウドコンピューティングとは、動的に拡張縮小可能で多くの場合、仮想化されたリソースがコンピュータネットワーク1106を介したサービスとして提供されるコンピューティング様式である。ユーザA、B、C、及びDは、ユーザをサポートする「クラウド」の技術インフラストラクチャのエキスパートである必要はない。いくつかの実施形態では、クラウドコンピューティングは、サービスとしてのインフラストラクチャ(IaaS)、サービスとしてのプラットフォーム(PaaS)、及びサービスとしてのソフトウエア(SaaS)などの異なるサービスに分けられる。クラウドコンピューティングサービスは、多くの場合、ウェブブラウザからアクセスされる共通のビジネスアプリケーションをオンラインで提供するが、ソフトウェア及びデータはサーバ上に記憶される。クラウドという用語は、コンピュータネットワーク図におけるコンピュータネットワーク1106の描かれ方に基づいて、例えば、サーバ、ストレージ、及びロジックを使用する、コンピュータネットワーク1106のメタファーとして使用され、コンピュータネットワーク1106が隠し持つ複雑なインフラストラクチャの抽象的概念である。
【0126】
さらに、INSP1102は、本明細書ではゲーム処理サーバとも呼ばれるゲーム処理プロバイダ(GPP)1110を含み、ゲーム処理プロバイダ(GPP)1110は、シングル及びマルチプレーヤのビデオゲームをプレイするためにクライアントデバイス1120~1、1120~2、1120~3、及び1120~4によって使用される。コンピュータネットワーク1106上でプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームは、クライアントデバイス1120~1、1120~2、1120~3、及び1120~4からデータを収集し、他のユーザが操作する他のクライアントにデータを配信する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホストする別個のサーバを使用する。いくつかの実施形態では、GPP1110は、集中型GPP1110にさらに依存することなく情報を交換するクライアントデバイス1120~1、1120~2、1120~3、及び1120~4の間の通信を確立する。
【0127】
専用GPPは、クライアントとは独立して実行するサーバである。このようなサーバは、通常、データセンタに配置された専用ハードウェア上で実行し、より多くの帯域幅及び専用処理能力を提供する。専用サーバは、大部分のPCベースのマルチプレーヤゲームのためのゲームサーバをホストする方法である。大規模なマルチプレーヤオンラインゲームは、ゲームタイトルを所有するソフトウェア会社が通常ホストする専用サーバ上で実行され、専用サーバがコンテンツを制御及び更新することを可能にする。
【0128】
ブロードキャスト処理サーバ(BPS)1112は、本明細書ではブロードキャスト処理プロバイダとも呼ばれ、オーディオまたはビデオ信号を視聴者に配信する。非常に狭い範囲の視聴者へのブロードキャスティングは、ナローキャスティングと呼ばれることもある。ブロードキャスト配信の最後の区間は、信号がクライアントデバイス1120~1、1120~2、1120~3、及び1120~4にどのように到達するかであり、いくつかの実施形態では、信号は、ラジオ局もしくはテレビ局と同様に無線でアンテナ及び受信機に、またはケーブルテレビもしくはケーブルラジオもしくは局を介した「ワイヤレスケーブル」を通して配信される。コンピュータネットワーク1106はまた、様々な実施形態において、特に信号及び帯域幅を共有するのを可能にするマルチキャスティングを用いて、無線信号またはテレビ信号のいずれかをクライアントデバイス1120~1、1120~2、1120~3、及び1120~4にもたらす。歴史的に、ブロードキャストは、いくつかの実施形態では、地理的領域、例えば、全国放送、地域放送などによって区切られている。しかし、高速インターネットの普及により、コンテンツは世界のほぼ全ての国に到達できるので、ブロードキャストは地理によって規定されない。
【0129】
ストレージサービスプロバイダ(SSP)1114は、コンピュータストレージ空間及び関連する管理サービスを提供する。SSP1114は、定期的なバックアップ及びアーカイブも提供する。ストレージをサービスとして提供することにより、クライアントデバイス1120~1、1120~2、1120~3、及び1120~4は、サービスとしてストレージが使用されない場合と比較して、より多くのストレージを使用する。別の大きな利点は、SSP1114がバックアップサービスを含み、クライアントデバイス1120~1、1120~2、1120~3、及び1120~4は、ハードドライブに障害が発生してもデータが失われないことである。さらに、いくつかの実施形態では、複数のSSPは、クライアントデバイス1120~1、1120~2、1120~3、及び1120~4から受信したデータの全体的または部分的なコピーを有し、クライアントデバイス1120~1、1120~2、1120~3、及び1120~4は、クライアントデバイス1120~1、1120~2、1120~3、及び1120~4が配置されている場所またはクライアントのタイプに関係なく、効率的な方法でデータにアクセスするのを可能にする。例えば、ユーザAは、家のコンピュータによって個人ファイルにアクセスし、ユーザAが移動している間は携帯電話によって個人ファイルにアクセスする。
【0130】
通信プロバイダ1116は、クライアントデバイス1120~1、1120~2、1120~3、及び1120~4への接続性を提供する。通信プロバイダ1116の一種は、コンピュータネットワーク1106へのアクセスを提供するインターネットサービスプロバイダ(ISP)である。ISPは、ダイヤルアップ、デジタル加入者線(DSL)、ケーブルモデム、ファイバ、無線、または専用の高速インターコネクトなどのインターネットプロトコルデータグラムの供給に適したデータ伝送技術を使用してクライアントデバイス1120~1、1120~2、1120~3、及び1120~4を接続する。通信プロバイダ1116は、いくつかの実施形態では、電子メール、インスタントメッセージング、及びショートメッセージサービス(SMS)テキストなどのメッセージングサービスも提供する。通信プロバイダの別の種類は、コンピュータネットワーク1106への直接のバックボーンアクセスを提供することによって帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダの例には、電気通信事業者、データ通信事業者、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などが含まれる。
【0131】
データ交換1118は、INSP1102内のいくつかの回路を相互接続し、コンピュータネットワーク1106を介してこれらの回路をクライアントデバイス1120~1、1120~2、1120~3、及び1120~4に接続する。データ交換1118は、様々な実施形態において、INSP1102の全ての回路が近接している小さい領域をカバーする、または様々な回路が地理的に分散しているときには大きな地理的領域をカバーする。例えば、データ交換1102は、データセンタのキャビネット内の高速のギガビットイーサネット(登録商標)、または大陸間仮想LANを含む。
【0132】
いくつかの実施形態では、ノードA及びBとクライアントデバイスA及びBとの間の通信は、無線技術を使用して促進され得る。そのような技術には、例えば、5G無線通信技術が含まれ得る。5Gは、セルラーネットワーク技術の第5世代である。5Gネットワークはデジタルセルラーネットワークであり、プロバイダがカバーするサービスエリアはセルと呼ばれる小さな地理的エリアに分割されている。音と画像を表すアナログ信号は、電話でデジタル化され、アナログ-デジタル変換器によって変換され、ビットのストリームとして送信される。セル内のすべての5G無線デバイスは、他のセルで再利用される周波数のプールからトランシーバによって割り当てられた周波数チャネルにわたって、セル内のローカルアンテナアレイ及び低電力自動トランシーバ(送信機及び受信機)と電波で通信する。ローカルアンテナは、高帯域幅光ファイバまたは無線バックホール接続によって、電話網及びインターネットに接続される。他のセルネットワークと同様に、あるセルから別のセルに移動するモバイルデバイスは、新しいセルに自動的に転送される。5Gネットワークは通信ネットワークの単なる一例のタイプであり、本開示の実施形態は、5Gに続く後の世代の有線または無線技術と同様に、前世代の無線または有線通信を利用することができることを理解されたい。
【0133】
様々な実施形態において、本明細書に記載されるいくつかの実施形態の1つまたは複数の特徴は、本明細書に記載される残りの実施形態の1つまたは複数の1つまたは複数の特徴と組み合わされることに留意されたい。
【0134】
本開示に記載の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能な消費者向け電気製品、小型コンピュータ、メインフレームコンピュータなどを含む様々なコンピュータシステム構成で実施されてよい。一実施態様では、本開示に記載の実施形態は、有線または無線ネットワークを通してリンクされたリモート処理デバイスによってタスクが行われる分散コンピューティング環境で実践される。
【0135】
前述の実施形態を念頭に置いて、一実施態様では、本開示に記載の実施形態は、コンピュータシステムに記憶されたデータを伴う様々なコンピュータ実施動作を採用することを理解されたい。これらの動作は、物理量の物理的操作を要する動作である。本開示に記載の実施形態の一部を形成する本明細書で説明される動作のうちのいずれも、有用な機械動作である。本開示に記載のいくつかの実施形態はまた、これらの動作を行うためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築される、または装置は、コンピュータに記憶されたコンピュータプログラムにより選択的に起動または構成される汎用コンピュータである。具体的には、一実施形態において、様々な汎用マシンは、本明細書の教示に従って書かれたコンピュータプログラムと共に使用される、または、必要な動作を行うためにさらに特化した装置を構築するほうがより好都合な場合がある。
【0136】
ある実施態様では、本開示に記載のいくつかの実施形態は、コンピュータ可読媒体上のコンピュータ可読コードとして具体化される。コンピュータ可読媒体は、後にコンピュータシステムにより読み出されるデータを記憶する任意のデータストレージデバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続型ストレージ(NAS)、ROM、RAM、コンパクトディスクROM(CD-ROM)、記録可能CD(CD-R)、書き換え可能CD(CD-RW)、磁気テープ、光学データストレージデバイス、非光学データストレージデバイスなどが含まれる。例として、コンピュータ可読媒体は、コンピュータ可読コードが分散方式で記憶及び実行されるように、ネットワークで結合されたコンピュータシステム上に分散されたコンピュータ可読有形媒体を含む。
【0137】
さらに、上記の実施形態のいくつかは、ゲーム環境に関して記載されているが、いくつかの実施形態では、ゲームの代わりに、他の環境、例えば、ビデオ会議環境などが使用される。
【0138】
方法の動作を特定の順序で記載したが、オーバーレイ動作の処理が所望の方法で実行される限り、動作間に他のハウスキーピング動作が実行されてよく、または動作がわずかに異なる時間に起こるように調整されてよく、またはシステム内に動作を分散することで、処理に関連する様々な間隔で処理動作が起こることを可能にしてよいことを、理解すべきである。
【0139】
本開示に記載の前述の実施形態は、理解を明確にするためにある程度詳細に説明したが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。従って、本実施形態は、限定ではなく例示としてみなされるべきであり、本実施形態は、本明細書に記載される詳細に限定されるべきではなく、添付の請求項の範囲及び均等物の中で変更されてよい。