(57)【要約】画像をビデオエンコーダに直接レンダリングするシステム、装置及び方法を開示する。ゲームエンジンは、モードによって異なる色空間で画像をレンダリングするように構成された組み込みレンダリングユニットを含む。レンダリングユニットは、第１モードで動作する間、ディスプレイに直接送られる第１色空間の画像のみをレンダリングする。レンダリングユニットは、第２モードで動作する間、ビデオエンコーダに直接提供される第２色空間の画像のみをレンダリングする。第３モードでは、レンダリングユニットは、両方の色空間の画像をレンダリングする。一実施形態では、第１色空間はＲＧＢであり、第２色空間はＹＵＶである。また、ゲームエンジンは、レンダリング画像の各々に関連する複数の属性を生成し、ビデオエンコーダは、レンダリング画像に関連する属性に基づいて、レンダリング画像の各々を符号化ビットストリームに符号化する。【選択図】図５
2021503777.tif 000002
【特許請求の範囲】
【請求項１】
表示用の画像をレンダリングするように構成されたレンダリングユニットを含むゲームエンジンと、
第１色空間でレンダリングされたレンダリング画像を符号化するように構成されたビデオエンコーダと、を備え、
前記レンダリングユニットは、
前記第１色空間で各画像をレンダリングすることと、
前記第１色空間でレンダリングされた画像の各々に関連する属性を生成することと、
前記属性と、前記第１色空間でレンダリングされた画像の各々と、を前記ビデオエンコーダに伝達することと、
を行うように構成されており、
前記ビデオエンコーダは、前記レンダリングユニットによって提供された複数の属性に基づいて、各レンダリング画像を符号化するように構成されている、
システム。
【請求項２】
前記システムは、前記複数の属性を、第１フォーマットから、前記ビデオエンコーダと互換性のある第２フォーマットに変換するように構成された変換ユニットをさらに備える、
請求項１のシステム。
【請求項３】
前記レンダリングユニットは、
前記第１色空間と異なる第２色空間で各画像をレンダリングすることと、
前記第１色空間でレンダリングされた画像を前記ビデオエンコーダに伝達することと並行して、前記第２色空間でレンダリングされた画像の各々をディスプレイデバイスに伝達することと、
を行うように構成されている、
請求項１のシステム。
【請求項４】
前記第１色空間はＹＵＶであり、前記第２色空間はＲＧＢである、
請求項３のシステム。
【請求項５】
前記複数の属性は、カメラビュー速度バッファ、オブジェクト毎のモーション情報、テクスチャデータヒント、関心領域、深度情報、時間統計情報、レンダリングフレームレート、シーン変更データ、追加のビットを必要とする領域、スキップ又は静的フレームデータ、及び、後処理データを含む、
請求項１のシステム。
【請求項６】
前記ゲームエンジンは、現在レンダリングされているフレームの属性を収集し、以前にレンダリングされた画像に対する時間的変化を提供するように構成されている、
請求項１のシステム。
【請求項７】
前記ゲームエンジンは、現在レンダリングされている画像と、以前にレンダリングされた１つ以上の画像との比較に基づいて、前記複数の属性のうち１つ以上の属性を生成するように構成されており、
前記１つ以上の属性は、シーン変更データ、関心領域、又は、モーションベクトルデータを含む、
請求項６のシステム。
【請求項８】
ゲームエンジンのレンダリングユニットによって、各画像を、エンコーダと互換性のある第１色空間にレンダリングすることであって、ディスプレイは、第２色空間でレンダリングされた画像を待機する、ことと、
レンダリングされたフレームの各々に関連する複数の属性を前記エンコーダに提供することと、
前記エンコーダによって、前記複数の属性に基づいて、レンダリング画像の各々を符号化することと、を含む、
方法。
【請求項９】
変換ユニットによって、前記複数の属性を、第１フォーマットから、前記エンコーダと互換性のある第２フォーマットに変換することを含む、
請求項８の方法。
【請求項１０】
前記第１色空間でレンダリングされた画像を前記エンコーダに提供することと並行して、前記第２色空間でレンダリングされた画像をディスプレイに提供することを含む、
請求項８の方法。
【請求項１１】
前記第１色空間はＹＵＶであり、前記第２色空間はＲＧＢである、
請求項８の方法。
【請求項１２】
前記複数の属性は、カメラビュー速度バッファ、オブジェクト毎のモーション情報、テクスチャデータヒント、関心領域、深度情報、時間統計情報、レンダリングフレームレート、シーン変更データ、追加のビットを必要とする領域、スキップ又は静的フレームデータ、及び、後処理データを含む、
請求項８の方法。
【請求項１３】
前記ゲームエンジンによって、現在レンダリングされているフレームの属性を収集することと、
以前にレンダリングされた画像に対する時間的変化を提供することと、を含む、
請求項８の方法。
【請求項１４】
前記ゲームエンジンによって、現在レンダリングされている画像と、以前にレンダリングされた１つ以上の画像との比較に基づいて、前記複数の属性のうち１つ以上の属性を生成することを含み、
前記１つ以上の属性は、シーン変更データ、関心領域、又は、モーションベクトルデータを含む、
請求項１３の方法。
【請求項１５】
表示用の画像をレンダリングするように構成されたレンダリングユニットを含むゲームエンジンと、
レンダリングされた画像を符号化するように構成されたエンコーダと、
前記ゲームエンジンと前記エンコーダとに接続された変換ユニットと、を備え、
前記レンダリングユニットは、
各画像を、前記エンコーダと互換性のある第１色空間にレンダリングすることであって、ディスプレイは、第２色空間でレンダリングされた画像を待機する、ことと、
レンダリングされたフレームの各々に関連する複数の属性を前記エンコーダに提供することと、
を行うように構成されており、
前記エンコーダは、前記複数の属性に基づいて、レンダリング画像の各々を符号化するように構成されている、
装置。
【請求項１６】
前記変換ユニットは、前記複数の属性を、第１フォーマットから、前記エンコーダと互換性のある第２フォーマットに変換するように構成されている、
請求項１５の装置。
【請求項１７】
前記レンダリングユニットは、前記第１色空間でレンダリングされた画像を前記エンコーダに送信することと並行して、前記第２色空間でレンダリングされた画像をディスプレイに送信するように構成されている、
請求項１５の装置。
【請求項１８】
前記第１色空間はＹＵＶであり、前記第２色空間はＲＧＢである、
請求項１５の装置。
【請求項１９】
前記複数の属性は、カメラビュー速度バッファ、オブジェクト毎のモーション情報、テクスチャデータヒント、関心領域、深度情報、時間統計情報、レンダリングフレームレート、シーン変更データ、追加のビットを必要とする領域、スキップ又は静的フレームデータ、及び、後処理データを含む、
請求項１５の装置。
【請求項２０】
前記ゲームエンジンは、現在レンダリングされているフレームの属性を収集し、以前にレンダリングされた画像に対する時間的変化を提供するように構成されている、
請求項１５の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連技術の説明）
様々なアプリケーションは、画像又はビデオコンテンツのリアルタイム符号化及び復号化を実行する。例えば、クラウドゲーム及びゲーム観戦は、コンテンツのリアルタイム符号化及び復号化のサポートを含むアプリケーションの例である。レイテンシ、品質、ビットレート、パワー及びパフォーマンスの課題は、通常、このようなワークロードをリアルタイムで提供する間に発生する。多くのシナリオでは、グラフィックス処理ユニット（ＧＰＵ）で実行されるゲームエンジンベースのアプリケーションは、ＲＧＢ色空間において、システムに接続されたディスプレイを介して画像を提示するようにレンダリングしている。また、レンダリング画像がネットワークを介してリモートシステムに送信されることを意図している場合、レンダリング画像は、コーデック（通常はＹＵＶ）によって使用される色空間に変換され、ビデオエンコーダによってビデオビットストリームに符号化される。ビデオエンコーダにとって、低い符号化レイテンシを維持し、符号化ビデオビットストリームにおけるアーチファクトを減少させながら、ビデオの品質を最適化することは困難である場合がある。上記を考慮して、画像をレンダリングし、レンダリング画像を符号化ビットストリームに符号化するための新規且つ改良された方法が望まれている。
【０００２】
添付図面と共に以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【０００３】
【図１】レンダリング画像を、ネットワークを介して送信されるビデオビットストリームに符号化するシステムの一実施形態のブロック図である。
【図２】サーバのソフトウェアコンポーネントの一実施形態のブロック図である。
【図３】コンピューティングシステムの一実施形態のブロック図である。
【図４】コンピューティングシステムの別の実施形態のブロック図である。
【図５】ゲームエンジンがビデオエンコーダに直接レンダリングする方法の一実施形態を示す一般化されたフロー図である。
【図６】マルチモードゲームエンジンを動作させる方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【０００４】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解を提供するために、多くの特定の詳細が示されている。しかしながら、当業者は、これらの特定の詳細なしに様々な実施形態を実施することができることを認識するはずである。いくつかの例では、本明細書で説明するアプローチを曖昧にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術を詳細に示していない。例示を単純且つ明瞭にするために、図に示される要素は、必ずしも縮尺通りに描かれていないことが認識されよう。例えば、いくつかの要素の寸法は、他の要素に比べて誇張されている場合がある。
【０００５】
ビデオエンコーダに直接レンダリングするゲームエンジンのシステム、装置及び方法を本明細書で開示する。一実施形態では、システムは、デコーダを有するクライアントにネットワークを介して接続されたサーバ内のゲームエンジンと、ビデオエンコーダと、を含む。ゲームエンジンは、表示するために第１色空間で画像をレンダリングするように構成された組み込みレンダリングユニットを含む。また、レンダリングユニットは、第２色空間の画像をビデオエンコーダに直接レンダリングするように構成されている。一実施形態では、第１色空間はＲＧＢであり、第２色空間はＹＵＶである。また、ゲームエンジンは、レンダリング画像の各々に関連する複数の属性を生成し、複数の属性をビデオエンコーダに伝達する。複数の属性は、画像をレンダリングするレンダリングユニットによって使用される様々なタイプのデータを含む。ビデオエンコーダは、レンダリング画像に関連する複数の属性に基づいて、レンダリング画像の各々を符号化ビットストリームに符号化する。
【０００６】
一実施形態では、レンダリングユニットは、クラウド内のサーバに配置されており、レンダリングされたコンテンツがネットワークを介してクライアントに伝達される。例えば、ゲームアプリケーションフレームをクラウドでレンダリングしながら、クラウドゲームアプリケーションを実行することができる。このシナリオでは、レンダリングユニットは、レンダリングされたフレームをエンコーダに伝達する。様々なタイプの処理ユニットのうち何れかを使用してレンダリングユニットを実装することができる。一実施形態では、レンダリングユニットは、グラフィックスプロセッサ又はグラフィックスサブシステム上に実装される。別の実施形態では、レンダリングユニットは、汎用中央処理装置（ＣＰＵ）上に実装される。他の実施形態では、レンダリングユニットは、他のタイプの処理ユニット（例えば、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ））上に実装されてもよい。
【０００７】
図１を参照すると、レンダリング画像を、ネットワークを介して送信されるビデオビットストリームに符号化するシステム１００の一実施形態のブロック図が示されている。システム１００は、サーバ１０５と、ネットワーク１１０と、クライアント１１５と、ディスプレイ１２０と、を含む。他の実施形態では、システム１００は、ネットワーク１１０を介してサーバ１０５に接続された複数のクライアントを含むことができ、複数のクライアントは、サーバ１０５によって生成された同じビットストリーム又は異なるビットストリームを受信する。また、システム１００は、複数のクライアントのために複数のビットストリームを生成する複数のサーバ１０５を含むことができる。一実施形態では、システム１００は、クラウドゲームアプリケーションの一部としてゲームコンテンツのリアルタイムレンダリング及び符号化を実行するように構成されている。レイテンシ、品質、ビットレート、パワー及びパフォーマンスの課題は、通常、このようなワークロードをリアルタイムで提供する間に発生する。他の実施形態では、システム１００は、他のタイプのアプリケーションを実行するように構成されている。
【０００８】
一実施形態では、サーバ１０５は、ビデオ又は画像フレームをレンダリングし、フレームをビットストリームに符号化した後に、符号化ビットストリームを、ネットワーク１１０を介してクライアント１１５に伝達するように構成されている。クライアント１１５は、符号化ビットストリームを復号化し、ビデオフレーム又は画像を生成してディスプレイ１２０又はディスプレイコンポジタに送るように構成されている。一実施形態では、サーバ１０５は、ユーザに対して表示される画像をレンダリングするためのゲームエンジンを含む。本明細書で使用される「ゲームエンジン」という用語は、画像をレンダリングするためのリアルタイムレンダリングアプリケーションとして定義される。ゲームエンジンは、画像をレンダリングするための様々なシェーダ（例えば、頂点シェーダ、ジオメトリシェーダ等）を含むことができる。ゲームエンジンは、通常、サーバ１０５に接続されたディスプレイ上に直ちに表示されるレンダリング画像を生成するために利用される。ただし、いくつかのアプリケーションは、レンダリングされたコンテンツを遠隔位置に表示するクライアントサーバモデルを使用して実行することができる。これらのアプリケーションでは、レンダリング画像は、ビデオエンコーダによってビデオビットストリームに符号化される。次に、ビデオビットストリームは、ネットワーク１１０を介してクライアント１１５に送信され、ディスプレイ１２０上に表示される。様々な実施形態では、ビデオビットストリーム２３５は、様々な適切な通信プロトコル（例えば、ＴＣＰ／ＩＰ等）の何れかに従って、ネットワークインタフェース（図示省略）を介してネットワーク２４０に伝達される。
【０００９】
ネットワーク１１０は、無線接続、直接ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イントラネット、インターネット、ケーブルネットワーク、パケット交換ネットワーク、光ファイバネットワーク、ルータ、ストレージエリアネットワーク、若しくは、他のタイプのネットワークを含む、あらゆるタイプのネットワーク又はネットワークの組み合わせを表す。ＬＡＮの例は、イーサネット（登録商標）ネットワーク、ファイバ分散データインタフェース（ＦＤＤＩ）ネットワーク、トークンリングネットワークを含む。ネットワーク１１０は、リモートダイレクトメモリアクセス（ＲＤＭＡ）ハードウェア及び／若しくはソフトウェア、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）ハードウェア及び／若しくはソフトウェア、ルータ、リピータ、スイッチ、グリッド、並びに／又は、他のコンポーネントをさらに含むことができる。
【００１０】
サーバ１０５は、ビデオ／画像フレームをレンダリングし、フレームをビットストリームに符号化するためのソフトウェア及び／又はハードウェアの任意の組み合わせを含む。一実施形態では、サーバ１０５は、１つ以上のサーバのうち１つ以上のプロセッサ上で実行される１つ以上のソフトウェアアプリケーションを含む。また、サーバ１０５は、ネットワーク通信機能、１つ以上の入出力デバイス、及び／又は、他のコンポーネントを含む。サーバ１０５の１つ以上のプロセッサは、任意の数及びタイプのプロセッサ（例えば、グラフィックス処理ユニット（ＧＰＵ）、ＣＰＵ、ＤＳＰ、ＦＰＧＡ、ＡＳＩＣ）を含むことができる。プロセッサは、プロセッサによって実行可能なプログラム命令を記憶する１つ以上のメモリデバイスに接続されてもよい。同様に、クライアント１１５は、ビットストリームを復号化し、フレームをディスプレイ１２０に送るためのソフトウェア及び／又はハードウェアの任意の組み合わせを含む。一実施形態では、クライアント１１５は、１つ以上のコンピューティングデバイスのうち１つ以上のプロセッサ上で実行される１つ以上のソフトウェアアプリケーションを含む。クライアント１１５は、コンピューティングデバイス、ゲームコンソール、モバイルデバイス、ストリーミングメディアプレーヤー、又は、他のタイプのデバイスであってもよい。
【００１１】
図２を参照すると、サーバ２０５のソフトウェアコンポーネントの一実施形態のブロック図が示されている。一実施形態では、サーバ２０５は、サーバ２０５の処理ユニット上で実行するように構成されたアプリケーション２１０を含む。一実施形態では、アプリケーション２１０は、ビデオゲームアプリケーションである。例えば、アプリケーション２１０は、ゲームプレイのビデオを伝達及び／又は受信するように構成されたクラウドゲームアプリケーションであってもよい。別の実施形態では、アプリケーション２１０は、ゲームプレイのビデオを表示するように構成されたゲーム観戦アプリケーションである。様々な実施形態では、サーバ２０５は、１つ以上のプロセッサと、１つ以上のメモリデバイスと、サーバ又は他のコンピューティングデバイスを示す追加のコンポーネントと、を含む。図２に示す様々なソフトウェアコンポーネントは、サーバ２０５の処理ユニット上で実行するように構成されている。一実施形態では、サーバ２０５は、クラウドコンピューティングアーキテクチャの一部である。
【００１２】
一実施形態では、アプリケーション２１０は、ユーザがアプリケーション２１０によって生成されたビデオストリームを表示して対話するクライアントデバイス上でキャプチャされたユーザの動き／アクションを指定する入力（例えば、ゲームコマンド）を受信するように構成されている。アプリケーション２１０は、表示用のフレームをレンダリングするためにゲームエンジン２１５に提供されるグラフィックス情報を含む。ゲームエンジン２１５は、アプリケーション２１０のゲーム状態に基づいて、画像フレームをレンダリングするように構成されている。次に、レンダリングされた画像フレームは、ディスプレイエンジンに提供され、ディスプレイに送られることが意図される。しかしながら、一実施形態では、レンダリングされた画像フレームは、リモートクライアントデバイスのディスプレイに表示される。本実施形態では、レンダリングされた画像フレームは、ビデオビットストリームに符号化され、ビデオビットストリームは、リモートクライアントデバイスに送信される。
【００１３】
一実施形態では、ゲームエンジン２１５は、レンダリング画像からのビデオビットストリームの符号化において使用するために、レンダリング画像２２７の各々に関連する複数の属性２２８をエンコーダ２３０に提供するように構成されている。複数の属性２２８は、レンダリングユニット２２０がレンダリング画像を構築するために使用する様々なデータを含む。したがって、これらの属性２２８は既に存在し、レンダリングユニット２２０は、これらの属性２２８をエンコーダ２３０に提供して、符号化プロセスを強化することができる。エンコーダ２３０は、これらの属性２２８を受信することによって、レンダリング画像２２７の各々に対して通常実行される様々な処理及び分析タスクを省くことができる。様々な実施形態では、複数の属性２２８は、属性（例えば、カメラビュー速度バッファ、オブジェクト毎のモーション情報、テクスチャデータヒント、関心領域（ＲＯＩ）、深度情報（例えば、立体映像エンコード）、時間統計情報、レンダリングフレームレート、シーン変更データ、追加のビットを必要とする領域（例えば、矩形）、スキップ又は静的フレーム指標、及び、後処理データ等）を含むことができるが、これらに限定されない。他の実施形態では、他の情報を収集することができ、及び／又は、これらの属性のうち１つ以上を、ビデオエンコーダ２３０に提供される属性２２８から省略することができる。
【００１４】
一実施形態では、カメラビュー速度情報を利用して、モーション推定器を支援することができる。一実施形態では、ＲＯＩ情報は、ダーティな矩形データ、重要なコンテンツ依存オブジェクト、ゲーム／アプリケーション統計情報等を含むことができる。ゲーム／アプリケーション統計情報は、不透明、透明、又は、半透明のオーバーレイで示すことができる。シーン変更データは、エンコーダのリフレッシュロジックを支援することができる。追加のビットを必要とする領域は、オーバーレイされたゲームの統計情報又はメニューを含む。
【００１５】
実施形態に応じて、様々なレンダリング画像の属性を利用して、異なるエンコーダ設定を制御又は調整することができる。例えば、２つの連続する画像（画像Ｎ−１及び画像Ｎ）が類似している場合（例えば、画像Ｎ−画像Ｎ−１＜閾値）、レンダリングユニット２２０は、フレームをスキップする信号をエンコーダ２３０に送信することができる。また、マークされた画像が、２つの連続する画像を比較する（画像Ｎを画像Ｎ−１と比較する）ときに変化しない場合、エンコーダ２３０は、画像Ｎから画像Ｎ−１までの領域に対する直接参照を構築することができる。また、レンダリングユニット２２０は、（多かれ少なかれ圧縮を実現するために）マークされたＲＯＩ量子化パラメータ値を交互にすることができる。さらに、速度バッファからのモーション情報（画像Ｎを画像Ｎ−１と比較する）を利用することができる。例えば、モーションデータを使用して、符号化プロセスで使用されるマクロブロック毎の量子化パラメータを変更することができる。これは、速度に基づいて、特定のコンテンツに多くの符号化ビットを割り当てることを意味する。さらに、深度情報を用いて、立体画像を符号化することができる。
【００１６】
一実施形態では、ゲームエンジン２１５は、画像を、赤／緑／青（ＲＧＢ）色空間でレンダリングするように構成されている。しかしながら、一実施形態では、エンコーダ２３０は、輝度／クロミナンス（ＹＵＶ）色空間の画像をビデオストリームに符号化するように構成されている。したがって、このような場合、レンダリングされたＲＧＢ画像は、ＹＵＶ色空間で画像をレンダリングするように構成されたエンコーダ２３０と互換性がない。この不一致に対処するために、様々な実施形態では、レンダリングユニット２２０は、ＲＧＢ及びＹＵＶ色空間の何れか又は両方で画像をレンダリングするように構成されている。なお、ＹＵＶ色空間は、ＹＣｂＣｒ又はＹ’ＣｂＣｒ色空間とも呼ばれることに留意されたい。
【００１７】
一実施形態では、ゲームエンジン２１５のレンダリングユニット２２０は、レンダリング画像２２７をバッファ２２５の第１部分に書き込み、レンダリング画像２２７に関連する属性２２８をバッファ２２５の第２部分に書き込む。一実施形態では、ビデオエンコーダ２３０は、レンダリング画像２２７及び関連する属性２２８をバッファ２２５から取得するように構成されている。ビデオエンコーダ２３０は、レンダリング画像２２７を符号化ビデオビットストリーム２３５に符号化する場合に属性２２８を利用するように構成されている。ビデオエンコーダ２３０は、後にレンダリングされる画像及び関連する属性をバッファ２２５から取得し（又は、受信し）、後にレンダリングされた画像から符号化ビデオビットストリーム２３５を生成し続けるように構成されている。様々な実施形態では、ゲームエンジン２１５のレンダリングユニット２２０によって生成されるフレームの符号化は、必要に応じて、様々なビデオフォーマット及び規格（例えば、「ＨＤ」、「４Ｋ」、「４Ｋウルトラ」、Ｈ．２６２、Ｈ．２６４、Ｈ．２６５等）の何れかに従う。
【００１８】
一実施形態では、エンコーダ２３０は、所定のビットバジェットで符号化ビットストリーム２３５を生成するように構成されている。例えば、エンコーダ２３０は、ビットストリーム２３５について利用可能な又は所定のネットワーク帯域幅（例えば、２メガビット／秒（Ｍｂｐｓ））に基づいて特定のビットバジェットを有することができ、この特定のビットバジェットを満たすようにフレームを符号化する。符号化ビットストリーム２３５がエンコーダ２３０によって生成されると、符号化ビットストリーム２３５は、サーバ２０５からクライアント（図示省略）に伝達される。クライアントは、符号化ビットストリーム２３５を受信し、ビットストリーム２３５を個々のフレームに復号化し、フレームをディスプレイ又はディスプレイコンポジタに送る。
【００１９】
図３を参照すると、コンピューティングシステム３０５の一実施形態のブロック図が示されている。コンピューティングシステム３０５は、プレーヤの動き又はアクションを受信するアプリケーション３１０を含む。また、コンピューティングシステム３０５は、統合されたレンダリングユニット３２０を含むゲームエンジン３１５を備える。図３に示す実施形態では、コンピューティングシステム３０５は、ディスプレイデバイス３２４に表示するためのレンダリング画像３２２と、ビデオエンコーダ３３０用に特別にレンダリングされたレンダリング画像３２７と、を生成するように構成されている。また、レンダリングユニット３２０は、属性３２８をバッファ３２５内のビデオエンコーダ３３０に提供して、符号化プロセスを支援する。ビデオエンコーダ３３０は、ゲームエンジン３１５のレンダリングユニット３２０によって生成された画像毎に、レンダリング画像３２７及び属性３２８をバッファ３２５から取得し、レンダリング画像３２７及び属性３２８から符号化ビデオビットストリーム３３５を生成する。一実施形態では、レンダリング画像３２２は第１色空間で生成され、レンダリング画像３２７は第２色空間で生成される。一実施形態では、第１色空間はＲＧＢであり、第２色空間はＹＵＶである。実施形態に応じて、符号化ビデオビットストリーム３３５を、ネットワーク３４０を介してリモートシステムに伝達してもよいし、メモリ３４５に記録し、記憶することができる。
【００２０】
図４を参照すると、コンピューティングシステム４０５の別の実施形態のブロック図が示されている。システム４０５は、統合されたレンダリングユニット４２０を含むゲームエンジン４１５を備える。一実施形態では、ゲームエンジン４１５は、実行されている特定のソフトウェアアプリケーションに応じて、及び／又は、システム４０５の動作条件によって、異なるモードで動作することができる。テーブル４１６は、ゲームエンジン４１５が一実施形態によって実施することができる異なる動作モードのリストを含む。例えば、モード４１７Ａでは、ゲームエンジン４１５は、ビデオエンコーダ４５０のみにレンダリングするように構成されている。モード４１７Ａでは、レンダリングユニット４２０は、画像をＹＵＶ色空間でレンダリングし、レンダリング画像４３０の各々をビデオビットストリームに符号化する場合にビデオエンコーダ４５０によって利用される属性４３５を生成する。レンダリングユニット４２０は、画像属性部４３５に記憶されるデータを収集する。レンダリングユニット４２０が画像を生成するためにネイティブに使用するデータ（深度、モーション、テクスチャ）に加えて、レンダリングユニット４２０は、ＲＯＩ及び以前の画像に対する時間的変化を示唆することができる。例えば、現在のレンダリング画像４３０の小さな部分のみが以前のレンダリング画像と比較して変化した場合、レンダリングユニット４２０は、現在のレンダリング画像４３０を符号化する場合に、以前のレンダリング画像から変化していない部分を再使用するために、ビデオエンコーダ４５０に対する指標（属性４３５に含まれる）を生成する。
【００２１】
ゲームエンジン４１５は、モード４１７Ｂで動作する場合に、ディスプレイ４２４のみにレンダリングするように構成されている。モード４１７Ｂでは、レンダリングユニット４２０は、レンダリング画像４２２の各々をＲＧＢ色空間で生成し、レンダリングＲＧＢ画像４２２は、ディスプレイ４２４又はディスプレイコンポジタに送られる。ゲームエンジン４１５は、モード４１７Ｃで動作する場合に、ビデオエンコーダ４５０及びディスプレイ４２４にレンダリングするように構成されている。モード４１７Ｃでは、レンダリングユニット４２０は、ホストゲームアプリケーションのフレーム毎に、ディスプレイ４２４のためにＲＧＢ色空間のレンダリング画像４２２を生成し、ビデオエンコーダ４５０のためにＹＵＶ色空間のレンダリング画像４３０及び属性４３５を生成する。他の実施形態では、ゲームエンジン４１５は、他のタイプのモードで動作することができ、及び／又は、テーブル４１６で示されるモードのうち１つを省略することができる。
【００２２】
一実施形態では、ゲームエンジン４１５が、ビデオエンコーダ４５０によって直接使用される画像をレンダリングする場合、ゲームエンジン４１５は、ビデオエンコーダ４５０による取得のために、レンダリング画像４３０及び属性４３５をバッファ４２５に記憶する。一実施形態では、変換ユニット４４０は、属性４３５を、ビデオエンコーダ４５０がレンダリング画像４３０を符号化ビデオビットストリームに符号化する場合に使用することができるフォーマットに変換する。変換ユニット４４０は、ゲームエンジン４１５によってバッファ４２５に記憶されたメタデータ（すなわち、属性４３５）を取得することができ、システム４０５によって実装され得る様々な異なるタイプのビデオエンコーダによってメタデータが使用されるのを可能にするように、メタデータを変換することができる。例えば、このデータは、エンコーダが時間差、テクスチャ、ＲＯＩを理解し、画像解析を完全又は部分的にスキップするのに役立つ。これにより、エンコーダは、画像を圧縮する時間を節約し、時間制約（低レイテンシ）を考慮したより良い画質を提供する。いくつかの実施形態では、変換ユニット４４０は、ビデオエンコーダ４５０のための追加のパラメータ（例えば、ＲＯＩマップ、圧縮パラメータマップ、及び、スキップフレームをビットストリームに挿入するかどうかの決定等）を提供する。
【００２３】
例えば、ビデオエンコーダ４５０がＨ．２６４ビデオ規格に従ってビデオビットストリームを符号化している場合、変換ユニット４４０は、属性４３５を、Ｈ．２６４規格と互換性のあるフォーマットに変換することができる。或いは、ビデオエンコーダ４５０がＨ．２６５ビデオ規格（すなわち、高効率映像符号化（ＨＥＶＣ））に従ってビデオビットストリームを符号化している場合、変換ユニット４４０は、属性４３５を、Ｈ．２６５規格と互換性のあるフォーマットに変換することができる。さらに、ビデオエンコーダ４５０がＶＰ９コーデックに従ってビデオビットストリームを符号化している場合、変換ユニット４４０は、属性４３５を、ＶＰ９コーデックと互換性のあるフォーマットに変換することができる。また、変換ユニット４４０は、ビデオエンコーダ４５０がサポートする規格に応じて、属性４３５を、他のビデオ圧縮規格と互換性のある他のフォーマットに変換することができる。
【００２４】
一実施形態では、ビデオエンコーダ４５０は、フィードバックを、ゲームエンジン４１５のレンダリングユニット４２０及び／又は変換ユニット４４０に提供するように構成されている。例えば、ビデオエンコーダ４５０がビデオビットストリームを送信しているネットワーク接続上で利用可能な帯域幅が減少する場合、ビデオエンコーダ４５０は、レンダリング画像４３０の解像度を低下させるようにゲームエンジン４１５のレンダリングユニット４２０に通知することができる。また、いくつかの実施形態では、ビデオエンコーダ４５０は、複数のクライアントのためにビデオビットストリームを生成することができ、ビデオエンコーダ４５０がビデオビットストリームを符号化するための計算リソースが少ない場合、ビデオエンコーダ４５０は、レンダリング画像４３０を生成する場合にフレームレートを低下させること、解像度を低下させること、及び／又は、１つ以上の他のアクションを実行することを、ゲームエンジン４１５のレンダリングユニット４２０に通知することができる。別の実施形態では、ビデオエンコーダ４５０は、属性４３５に追加される１つ以上の追加属性を要求することもできる。また、さらなる実施形態では、ビデオエンコーダ４５０は、ビデオエンコーダ４５０に提供される様々な属性４３５をフォーマットする方法を指定するために、フィードバックを変換ユニット４４０に提供する。
【００２５】
図５を参照すると、ゲームエンジンがビデオエンコーダに直接レンダリングする方法５００の１つの実施形態が示されている。説明のために、本実施形態のステップ及び図６のステップを順番に示す。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち１つ以上が、同時に実行され、図示した順序と異なる順序で実行され、又は、完全に省略されることに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書で説明する様々なシステム又は装置の何れも、方法５００を実施するように構成されている。
【００２６】
組み込みレンダリングユニットを含むゲームエンジンは、画像をレンダリングするための入力を受信する（ブロック５０５）。ゲームエンジンは、ビデオエンコーダと直接互換性のあるフォーマットで画像をレンダリングする（ブロック５１０）。例えば、ゲームエンジンは、ビデオエンコーダが符号化プロセスを実行する場合に利用するカラーフォーマット（例えば、ＹＵＶ）で画像をレンダリングする。また、ゲームエンジンは、レンダリング画像の複数の属性をビデオエンコーダに提供する（ブロック５１５）。次に、ビデオエンコーダは、複数の属性に基づいて、レンダリング画像を符号化ビットストリームに符号化する（ブロック５２０）。次いで、ビデオエンコーダは、符号化ビットストリームをクライアントに送信するか、符号化ビットストリームを記憶する（ブロック５２５）。ブロック５２５の後に、方法５００はブロック５０５に戻り、ゲームエンジンがレンダリングする次の画像についての入力を受信する。
【００２７】
図６を参照すると、マルチモードゲームエンジンを動作させる方法６００の一実施形態が示されている。組み込みレンダリングユニットを含むマルチモードゲームエンジンを、コンピューティングシステム上で実行する（ブロック６０５）。システムは、ゲームエンジンの動作モードを決定する（ブロック６１０）。ゲームエンジンが第１モードで動作している場合（条件付きブロック６１５：Ｙｅｓ）、レンダリングユニットは、各画像を、ビデオエンコーダだけのために第１色空間（すなわち、ＹＵＶ色空間）に直接レンダリングする（ブロック６２０）。また、ゲームエンジンは、レンダリング画像毎に、複数の属性をビデオエンコーダに提供する（ブロック６２５）。一実施形態では、レンダリングユニットの属性データは、ＹＵＶレンダリング画像と共にパックされる。ブロック６２５の後に、方法６００は終了する。
【００２８】
ゲームエンジンが第２モードで動作している場合（条件付きブロック６３０：Ｙｅｓ）、レンダリングユニットは、各画像を、ローカルに接続されたディスプレイだけのために第２色空間（すなわち、ＲＧＢ色空間）にレンダリングする（ブロック６３５）。ブロック６３５の後に、方法６００は終了する。ゲームエンジンが第３モードで動作している場合（条件付きブロック６３０：Ｎｏ）、レンダリングユニットは、各画像を、ビデオエンコーダのための第１色空間（すなわち、ＹＵＶ色空間）に直接レンダリングし、ローカルに接続されたディスプレイのための第２色空間（すなわち、ＲＧＢ色空間）にレンダリングする（ブロック６４０）。ブロック６４０の後に、方法６００は終了する。他の実施形態では、ゲームエンジンが他の動作モードを有することができることに留意されたい。これらの実施形態では、方法６００は、これらの他の動作モードを利用するように適合されてもよい。
【００２９】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書で説明する方法及び／又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、このようなプログラム命令を、高レベルプログラミング言語として表すことができる。他の実施形態では、プログラム命令を、高レベルプログラミング言語からバイナリ、中間又は他の形式にコンパイルすることができる。或いは、ハードウェアの動作又は設計を記述するプログラム命令を書き込むことができる。このようなプログラム命令は、Ｃ／Ｃ＋＋等の高レベルプログラミング言語によって表すことができる。或いは、Ｖｅｒｉｌｏｇ等のハードウェア設計言語（ＨＤＬ）を使用することもできる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム実行のためにプログラム命令をコンピューティングシステムに提供する。一般に、このようなコンピューティングシステムは、少なくとも１つ以上のメモリと、プログラム命令を実行するように構成された１つ以上のプロセッサと、を含む。
【００３０】
上述した実施形態は、実装の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、当業者には多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、かかる変形及び修正の全てを包含すると解釈されることを意図している。
【図１】
2021503777.tif 000003
【図２】
2021503777.tif 000004
【図３】
2021503777.tif 000005
【図４】
2021503777.tif 000006
【図５】
2021503777.tif 000007
【図６】
2021503777.tif 000008
【国際調査報告】
2021503777.tif 000009
2021503777.tif 000010