JP2022528432A - ハイブリッドレンダリング - Google Patents

ハイブリッドレンダリング Download PDF

Info

Publication number
JP2022528432A
JP2022528432A JP2021559786A JP2021559786A JP2022528432A JP 2022528432 A JP2022528432 A JP 2022528432A JP 2021559786 A JP2021559786 A JP 2021559786A JP 2021559786 A JP2021559786 A JP 2021559786A JP 2022528432 A JP2022528432 A JP 2022528432A
Authority
JP
Japan
Prior art keywords
rendering
computing device
remote
local
rendered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021559786A
Other languages
English (en)
Other versions
JPWO2020209962A5 (ja
Inventor
バーガー フロムホールド,ダグ
マイケル ライオンズ,ジョナサン
マークス タウト,ベンジャミン
アイマン ミハイル,アシュラフ
Original Assignee
マイクロソフト テクノロジー ライセンシング,エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マイクロソフト テクノロジー ライセンシング,エルエルシー filed Critical マイクロソフト テクノロジー ライセンシング,エルエルシー
Publication of JP2022528432A publication Critical patent/JP2022528432A/ja
Publication of JPWO2020209962A5 publication Critical patent/JPWO2020209962A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2012Colour editing, changing, or manipulating; Use of colour codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Architecture (AREA)
  • Computer Hardware Design (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

Figure 2022528432000001
1つの開示の例は、処理デバイスと、第1のローカルプロセスにおいてレンダリングおよび表示のためにデジタルコンテンツを出力するアプリケーションを実行するように処理デバイスによって実行可能な命令を格納する記憶デバイスとを含む、コンピューティングデバイスを提供する。アプリケーションの実行中に、命令は、第2のローカルまたはリモートプロセスによってレンダリングされるべきオブジェクトに関するオブジェクト情報を第2のローカルまたはリモートプロセスに提供し、オブジェクトのレンダリングを第2のローカルまたはリモートプロセスから受信し、オブジェクトを表示するためにオブジェクトのレンダリングを出力し、オブジェクトになされた操作を受信し、オブジェクトになされた操作に基づいて更新されたオブジェクト情報を第2のローカルまたはリモートプロセスに提供し、オブジェクトの更新されたレンダリングを第2のローカルまたはリモートプロセスから受信し、オブジェクトを表示するためにオブジェクトの更新されたレンダリングを出力するように、実行可能である。

Description

コンピューティングデバイスは、一般的に、二次元ディスプレイ上に表示するための三次元モデルをレンダリングするグラフィックスレンダリングパイプラインを含む。
この概要は、詳細な記述において以下に更に記載される簡略化された形式で一揃いの概念を導入するために提供される。この概要は、特許請求される主題事項の鍵となる構成または本質的な構成を特定することを意図したものではなく、特許請求される主題事項の範囲を限定するために使用することを意図したものでもない。更に、特許請求される主題事項は、この開示のいずれかの部分に記載されたいずれかのまたはすべての不利点を解決する実装に限定されない。
ハイブリッドレンダリングに関する例が開示される。1つの開示の例は、処理デバイスと、第1のローカルプロセスにおいてレンダリングおよび表示のためにデジタルコンテンツを出力するアプリケーションを実行するように処理デバイスによって実行可能な命令を格納する記憶デバイスとを含む、コンピューティングデバイスを提供する。命令は、第2のローカルまたはリモートプロセスによってレンダリングされるべきオブジェクトに関するオブジェクト情報を第2のローカルまたはリモートプロセスに提供し、オブジェクトのレンダリングを第2のローカルまたはリモートプロセスから受信し、オブジェクトを表示するためにオブジェクトのレンダリングをディスプレイに出力し、オブジェクトになされた操作を受信し、オブジェクトになされた操作に基づいて更新されたオブジェクト情報を第2のローカルまたはリモートプロセスに提供し、オブジェクトの更新されたレンダリングを第2のローカルまたはリモートプロセスから受信し、オブジェクトを表示するためにオブジェクトの更新されたレンダリングをディスプレイに出力するように、実行可能である。
他の例は、処理デバイスと、命令を格納する記憶デバイスとを含む、コンピューティングシステムを提供し、命令は、受信したオブジェクト情報に基づいて、レンダリングされるべきオブジェクトに関するオブジェクト情報をコンピューティングデバイスから受信し、オブジェクトをレンダリングし、オブジェクトのレンダリングをコンピューティングデバイスに提供し、オブジェクトになされた操作に関する更新されたオブジェクト情報をコンピューティングデバイスから受信し、オブジェクトになれた操作に関して受信した更新されたオブジェクト情報に基づいてオブジェクトをレンダリングし、オブジェクトの更新されたレンダリングをコンピューティングデバイスに提供するように、処理デバイスによって実行可能である。
別の例は、コンピューティングデバイスで行われる方法を提供し、方法は、レンダリングおよび表示のためにデジタルコンテンツを出力するアプリケーションを実行することと、アプリケーションの実行中に、リモートにレンダリングされるべきデジタルコンテンツの第1のオブジェクトを識別すること、およびローカルにレンダリングされるべきデジタルコンテンツの第2のオブジェクトも識別することと、リモートコンピューティングシステムによってレンダリングされるべき第1のオブジェクトに関するオブジェクト情報をリモートコンピューティングシステムに提供することと、第1のオブジェクトのレンダリングをリモートコンピューティングシステムから受信することと、第2のオブジェクトをローカルにレンダリングして第2のオブジェクトのレンダリングを生成することと、合成フレームとして表示するために第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成することと、を含む。
コンピューティングデバイスが、合成フレームとしての表示のためにローカルにレンダリングされ且つリモートにレンダリングされたデジタルコンテンツを合成する例示的な使用環境を示している。 コンピューティングデバイスが、合成フレームとしての表示のためにローカルにレンダリングされ且つリモートにレンダリングされたデジタルコンテンツを合成する例示的な使用環境を示している。
例示的なハイブリッドレンダリングシステムを示すブロック図である。
レンダリングのためのコンテンツを準備する例示的な方法を示すフロー図である。
リモートにレンダリングされたオブジェクトを操作するように作られた入力に基づいてリモートにレンダリングされたオブジェクトの表示を更新する例示的な方法を示すフロー図である。
コンピューティングデバイスから受信される情報に基づいてオブジェクトをレンダリングする例示的な方法を示すフロー図である。
例示的なコンピューティングシステムを示すブロック図である。
コンピューティングデバイス上の処理ハードウェアは、コンピューティングデバイスのレンダリング能力を制限することがある。例えば、複雑なモデルのレンダリング(描画)は、クロック速度、利用可能なメモリの量、メモリ帯域幅、および/またはコンピューティングデバイスに対してローカルなグラフィックス処理装置(GPU)または中央処理装置(CPU)の他の特性によって制約されることがある。特に、(例えば、有線接続を介して他のコンピューティングデバイスに接続されていない)携帯電話およびテザリングされていないヘッドマウントディスプレイデバイスのような、高度に移動性の(モバイルな)デバイスは、許容可能な性能で複雑なシーンをレンダリングするのに十分なGPUおよび/またはCPUパワーを有さないことがある。
そのような問題を緩和するために様々なアプローチが取られることがある。例えば、コンピューティングデバイスは、レンダリングのためのモデルを単純化するために、複雑なモデルをデシメートする(decimate)ように構成されることがある。しかしながら、デシメーション(decimation)は、モデルから詳細を除去し、それはモデルの所望の視覚精度を損なうことがある。別のアプローチとして、モデルをデシメートする代わりに、コンピューティングデバイスは、高性能リモートコンピューティングシステムがアプリケーションのために全てのデジタルコンテンツをレンダリングし、(例えば、ビデオストリームのような)レンダリングされた画像をコンピューティングデバイスに転送するように、アプリケーションをリモートに実行するように構成されることがある。レンダリングされた画像は、対応するモデルの完全な詳細を含むことがある。しかしながら、そのようなソリューションは、全てのアプリケーション論理をリモートコンピューティングシステムにシフトさせる。結果として、コンピューティングデバイスがネットワーク接続性を失うならば、コンピューティングデバイスは、ネットワーク接続が再確立されるまで、リモートにレンダリングされたコンテンツを表示し得ないことがある。更に、リモートにレンダリングされたコンテンツのネットワーク転送は、表示されたモデルが操作されるときのように、待ち時間に敏感なコンテンツにとって遅すぎることがある。
上述の問題に加えて、アプリケーションのすべてのコンテンツをリモートにレンダリングすることは、様々な他の制約を提起する。例えば、すべてのコンテンツをリモートにレンダリングするシステムは、クライアントデバイスにローカルレンダリング能力、入力能力、ハードウェアアクセスなどを提供しないことがあり、よって、アプリケーション開発者がリモートレンダリングではなくローカルレンダリングのためにコンテンツを指定することを可能にしない。ローカルレンダリングを実行する能力は、例えば、アプリケーションコードを書くために特定のゲームエンジンおよび/またはユーザインターフェースフレームワークを使用することを望む開発者のために、待ち時間に敏感な使用事例(例えば、インキング(inking)、アニメーションまたは実世界オブジェクトと相関させられる他のコンテンツ)のために、ならびに特定の使用事例のためにリモートにレンダリングされたコンテンツをオンデマンドで統合するオフラインで実行されるように構成されたアプリケーションのために関連することがある。
従って、アプリケーション開発者がローカルに表示される画像に合成するためにリモートにレンダリングされたコンテンツおよびローカルにレンダリングされたコンテンツの両方を生成するための論理(ロジック)を含むことを可能にするハイブリッドレンダリングシステムを介してクライアントコンピューティングデバイスにそのような能力を提供することがある例が開示される。例えば、コンピュータ支援設計モデルのようなより複雑なコンテンツは、リモートコンピューティングシステム上にレンダリングされ、モデルを生成および/または表示するアプリケーションを実行するクライアントデバイスにストリーミングされることがある。クライアントデバイスは、リモートにレンダリングされたコンテンツを、軽量で少ない待ち時間のコンテンツ(例えば、ユーザインターフェース/ユーザ体験要素、インキング、関節付きハンドのような実世界オブジェクトと相関させられたコンテンツなど)のような、ローカルにレンダリングされたコンテンツで補強することがある。クライアントデバイスは、リモートにレンダリングされたコンテンツとローカルにレンダリングされたコンテンツとの間の適切なオクルーション関係(occlusion relations)を提供するために、奥行き補正混合(depth-correct blending)を行うこともある。更に、リモートコンピューティングシステムは、例えば、材料を更新すること、オブジェクト変換を操作すること、リモートシーンに新しいコンテンツを注入すること、およびレイキャストクエリ(raycast queries)を実行することによって、リモートにレンダリングされたコンテンツと対話するためにクライアントデバイスが使用することがあるリモートシーングラフAPIを露出させることがある。これはクラウド内のアプリケーション全体を実行せずにリモートコンピューティングシステムの処理能力を活用するのに役立つことがある。リモート手続き呼出し(RPC:remote procedure call)機構を用いてリモートにレンダリングされたコンテンツと対話することによって、ハイブリッドレンダリングシステムは、リモートにレンダリングされたシーン要素(向き、位置、スケーリング、材料特性など)に対するクライアントデバイス制御を提供し、よって、すべてのアプリケーション論理がクライアントデバイス上でローカルに実行することを可能にする。更に、リモートにレンダリングするために指定されるモデルは、ネットワーク接続性が失われるか或いは利用できない事態において(例えば、代替コンテンツやデシメートされたコンテンツを用いて)ローカルにレンダリングされることもある。
図1Aは、コンピューティングデバイス102が、リモートレンダリングされたコンテンツとの対話能力を提供し、リモートにレンダリングされたコンテンツをローカルにレンダリングされたコンテンツで補強する、例示的な使用環境100を示している。図1Aの例において、コンピューティングデバイス102は、シースルーディスプレイ(see-through display)を介して仮想現実像(virtual reality imagery)(例えば、ホログラフィー像(holographic imagery))を実世界像(real-world imagery)と混合するように構成される混合現実(mixed reality)ディスプレイデバイスを含む。他の例において、コンピューティングデバイス102は、異なるモバイルコンピューティングデバイス(仮想現実ディスプレイデバイス、携帯電話、タブレットなど)、ラップトップコンピュータ、パーソナルコンピュータ、ゲームコンソール、または任意の他の適切なコンピューティングデバイスを含んでよい。この例では住環境100として示されているが、本明細書に記載される例は、任意の他の適切な使用環境で実施されてよい。他の使用環境の例は、商業スペース(例えば、オフィス、学校、倉庫など)のような他の室内スペース、および屋外スペース(例えば、建設現場、公園など)を含む。
図1Aに戻ると、コンピューティングデバイス102は、ローカルにレンダリングされた手104と、リモートにレンダリングされた犬106と、リモートにレンダリングされたランプ108とを含む、合成フレームを表示する。これらのオブジェクトをレンダリングし且つ表示する前に、コンピューティングデバイス102上で実行されるアプリケーションは、シーンのモデルをロードするよう要求し、ローカルにレンダリングするためのモデルコンテンツおよびリモートにレンダリングするためのコンテンツをモデル内で識別する。例えば、コンピューティングデバイス102がモデルをロードするよう要求する選択されたアプリケーションは、各オブジェクトについて、(例えば、ネットワーク帯域幅、オブジェクトの複雑性などに基づく)条件付き論理、またはオブジェクトをどのようにレンダリングするかに関する絶対論理を含んでよい。
リモートレンダリングのために識別される各オブジェクト106、108について、コンピューティングデバイス102は、ネットワーク112を介してリモートレンダリングシステム110にオブジェクト情報を提供する。オブジェクト情報は、リモートにレンダリングされるべきオブジェクト106、108に関する任意の適切な情報を含んでよい。幾つかの例において、オブジェクト情報は、各オブジェクト106、108についての幾何学的形状を含む三次元モデル(例えば、表示されるピクセル毎に複数のポリゴンを含む高ポリゴンメッシュ、ボクセルベースのモデルなど)を含む。オブジェクト情報は、各オブジェクト106、108についての材料(例えば、テクスチャ)を含んでもよい。更に、オブジェクト情報は、シーン内の別のオブジェクトに対して絶対的または相対的であることがある、シーン内の各オブジェクト106、108の場所および/または向きを記述するシーン情報を含んでもよい。他の例において、オブジェクト情報は、リモートレンダリングシステム110によって格納された既存のモデル、例えば、アプリケーションの開発中に格納されたモデルをロードおよび/または更新する要求を含む。
リモートレンダリングシステム110は、オブジェクト106、108がレンダリングおよび表示されるべきアプリケーションの実行前または実行中に(コンピューティングデバイス102または別のデバイスまたはプロセスから)オブジェクト情報を受信してよい。リモートレンダリングシステム110がランタイムの前にオブジェクト情報を受信するとき、リモートレンダリングシステム110は、例えば、オブジェクト情報を含むモデルをロードおよび/または更新する要求を受信した後に、ランタイム中に検索するためにオブジェクト情報を格納してよい。いかなるインスタンスにおいても、リモートレンダリングシステム110は、コンピューティングデバイス102から受信した情報を、シーングラフ(scene graph)またはコンピューティングデバイス102によってアクセス可能な他の適切なデータ構造に格納する。
コンピューティングデバイス102は、ユーザ114の感知された或いは予測された姿勢(手、頭など)および/または注視方向に関する情報をリモートレンダリングシステムに提供してもよい。幾つかの例において、コンピューティングデバイス102は、感知された姿勢/注視に基づいて仮想カメラ場所を決定してよく、レンダリングパイプラインへの入力のために決定された仮想カメラ場所をリモートレンダリングシステム110に提供してよい。他の例において、コンピューティングデバイス102は、感知された姿勢/注視方向に関するセンサデータ(例えば、未加工のまたは処理済みのセンサデータ)をリモートレンダリングシステム110に提供してよく、リモートレンダリングシステム110は、レンダリングのための仮想カメラ変換を決定するために使用してよい。リモートレンダリングシステム110は、オブジェクト情報および仮想カメラ場所をレンダリングパイプラインに入力し、各オブジェクト106、108をレンダリングする。各オブジェクト106、108について、レンダリングパイプラインは、レンダリングされたピクセルまたは各レンダリングされたオブジェクトの任意の他の適切な表現の形態を取ることがあるオブジェクトのレンダリングを出力する。オブジェクトのレンダリングは、カラーバッファ(color buffer)と、奥行きバッファ(depth buffer)とを含む。次に、リモートレンダリングシステム110は、カラーバッファおよび任意的な奥行きバッファ(または奥行きデータの他の表現)をコンピューティングデバイス102にビデオデータ(例えば、圧縮ビデオストリーム)として提供する。
コンピューティングデバイス102は、例えば、コンピューティングデバイス102の画像センサの視野内の実際の手の感知された位置に基づいて、そして、任意的に、リモートレンダリングシステム110から受信された奥行きデータに基づいて、手104をローカルにレンダリングしてよい。このようにして、ローカルにレンダリングされた手104の表現は、リモートにレンダリングされたオブジェクトよりもリアルタイムにより近くレンダリングされることがある。ネットワーク待ち時間を補償するのを助けるために、コンピューティングデバイス102は、リモートレンダリングシステム110から受信したレンダリングを再投影してよい。これは、例えば、最近得られた姿勢/注視データに基づいて、リモートレンダリングシステム110から受信したレンダリングのカラーバッファおよび任意的な奥行きバッファを再投影することを含んでよい。リモートレンダリングシステム110から受信したレンダリングを再投影することに加えて或いはその代わりに、任意の他の適切な待ち時間軽減および画像安定化プロセスが実行されてよい。
以下に更に詳細に記載するように、コンピューティングデバイス102は、合成フレームとして表示するために、犬106およびランプ108のレンダリングを手104のレンダリングと合成する。シーンを安定化させるのを助け、ローカルにレンダリングされたオブジェクト/リモートにレンダリングされたオブジェクトの再投影と合成画像の表示との間の時間の間のあらゆる動きを補償するのを助けるために、コンピューティングデバイスは、以下により詳細に記載するように、表示のために合成フレームを出力する前に、後期再投影(LSR:late-stage reprojection)処理を実行してよい。
ひとたびシーンがレンダリングされて表示されると、ユーザは、表示されたコンテンツと対話することを望むことがある。図1Aの例において、ユーザ114は、(例えば、ランプを動かすこと、ランプの電源をオン/オフすることなどのために)表示されたランプ108と対話してよく、表示された犬106と対話してもよい。ユーザ114がリモートにレンダリングされたオブジェクトと対話するとき、コンピューティングデバイス102は、オブジェクトに対して行われた操作に関するリモートAPIへの呼出しを実行し、リモートレンダリングシステム110から更新されたレンダリングを受信し、それは幾つかの例ではフレーム毎ベースで生じることがある。図1Bにおいて、コンピューティングデバイス102は、リモートレンダリングシステム110に、犬106の表示を操作するために作られた手振りジェスチャ116(wave gesture)に関する入力を提供する。応答して、コンピューティングデバイスは、リモートレンダリングシステム110から犬106の更新されたレンダリングを受信し、表示のために更新されたレンダリングを出力する。図1Bに示すように、犬106は、手振りジェスチャ入力116に応答して、立っているようにレンダリングされて表示される。
図2は、コンピューティングデバイス202と、リモートレンダリングシステム204とを含む、ハイブリッドレンダリングシステム200の例を示している。コンピューティングデバイス202としての使用に適した例示的なコンピューティングデバイスは、モバイルコンピューティングデバイス(拡張現実ディスプレイデバイス、仮想現実ディスプレイデバイス、携帯電話、タブレットなど)、ラップトップコンピューティングデバイス、デスクトップコンピューティングデバイス、ゲームコンソールなどを含む。リモートレンダリングシステム204は、本明細書に記載するハイブリッドレンダリングプロセスを実施するのに十分なレンダリング能力を有する任意の数およびタイプのコンピューティングデバイスを有する第2のコンピューティングシステムを含んでよい。幾つかの例において、リモートレンダリングシステム204は、クラウドコンピューティング環境でホストされたもののような、1つ以上のサーバコンピュータを含む。他の例において、リモートレンダリングシステム204は、1つ以上のサーバコンピュータ、デスクトップコンピュータ、および/またはコンピューティングデバイス202の使用環境に対してローカルな他のコンピューティングデバイスを含む。
コンピューティングデバイス202は、レンダリングおよび表示のためにデジタルコンテンツを出力するクライアントアプリケーション206を含む。クライアントアプリケーションの例は、ゲーム、コンピュータ支援設計/視覚化、および指導/教育のためのアプリケーションを含む。クライアントアプリケーション206は、ゲームエンジン208または他のレンダリングエンジンをインターフェースするように構成される。リモートレンダリングサービスから独立して存在する第一者および第三者ソフトウェアを含む、任意の適切なレンダリングエンジンが、ゲームエンジン208として使用されてよい。本明細書で使用するとき、「リモートレンダリングサービス(remote rendering service)」という用語は、ローカルディスプレイ用のクライアントコンピューティングデバイス(例えば、コンピューティングデバイス202)への転送のためにピクセルをレンダリングするためにリモートにホストされるレンダリングエンジンを使用し、本明細書に記載するようなハイブリッドレンダリングをサポートする、サービスを指す。
クライアントアプリケーション206内のデジタルコンテンツをどのようにレンダリングするかに関する決定は、アプリケーション開発者が利用できる開発時の決定である。例えば、アプリケーション開発者は、シーングラフのノード内の論理またはシーングラフのノードによって表されるオブジェクトをどのようにレンダリングするかに関する他のデータ構造を含むことがある。幾つかの例において、クライアントアプリケーション206は、オブジェクトをレンダリングするための条件付き論理(例えば、ネットワーク待ち時間が閾値以上であるならば、オブジェクトをリモートにレンダリングする)を含んでよい。クライアントアプリケーション206は、オブジェクトをレンダリングするための絶対論理(例えば、ユーザインターフェースをローカルにレンダリングする、高ポリゴンモデルをリモートにレンダリングするなど)を含んでもよい。いずれのインスタンスにおいても、クライアントアプリケーション206の論理は、ローカルにレンダリングされたシーンおよびリモートにレンダリングされたシーンの両方を制御するために使用されてよい。
図2を続けると、クライアントアプリケーション206は、リモートレンダリング(RR)コンポーネントライブラリ210をインターフェースするように構成されてもよく、RRコンポーネントライブラリ210は、コンピューティングデバイス202によって使用されるゲームエンジン208のために特に開発されてよい。RRコンポーネントライブラリ210は、RRクライアントライブラリ212をインターフェースするように構成され、RRクライアントライブラリ212は、リモートレンダリングサービスのクライアント側エンドポイントとして機能する。以下により詳細に記載するように、RRクライアントライブラリ212は、API呼出しをリモートレンダリングシステム204に送信されるメッセージに変換する軽量クライアント側シーングラフAPIとして実装されてよい。
リモートレンダリングシステム204は、リモートレンダリングサービスのリモートエンドポイントとして機能するRRサーバライブラリ214を含む。RRサーバライブラリ214は、ネットワークを介して、コンピューティングデバイス202のRRクライアントライブラリ212からオブジェクト情報および更新されたオブジェクト情報(例えば、シーングラフアップデート)を受信するように構成される。リモートレンダリングシステム204は、RRサーバライブラリ214を介して、コンピューティングデバイス202とリモートレンダリングシステム204との間にシーングラフデータを提供し且つ更新するための軽量シーングラフAPIを露出させることがある。シーングラフデータは、例えば、メッシュ、(例えば、物理ベースのシェーディングおよび/またはフォン(Phong)シェーディングのための)材料特性、三次元テキスト、照明、トーンマッピング、ノード変換、および/または用途特有の構成(例えば、カット平面)を含んでよい。幾つかの例において、シーングラフデータは、コンピューティングデバイス202上にキャッシュされてもよく、それは、例えば、リモートレンダリングシステム204へのネットワーク接続が利用可能でないときに、コンピューティングデバイス202がランタイム中にシーングラフデータに迅速にアクセスするのを助ける。
シーングラフは、例えば、リモートレンダリングシステム204に命令して特定のシーンをロードさせ、リモートレンダリングシステム204によってロードされたフレームシーンをコンピューティングデバイス202に通知させ、コンピューティングデバイス202がリモートシーングラフ内のデータを操作する(例えば、オブジェクトのアニメーション/移動を指定する)ことを可能にさせ、コンピューティングデバイス202がリモートシーングラフ内で新しいノードを生成し、それらのノードを操作することを可能にさせ、且つ/或いはコンピューティングデバイス202がリモートレンダリングシステム204によって実行されるべきリモートシーングラフへのレイキャストのような非同期クエリを実行することを可能にさせるために使用されてよい。
幾つかのインスタンスにおいて、シーングラフは、コンピューティングデバイス202によって使用されるツール/エンジン(例えば、ゲームエンジン208)に基づいて様々なクラスにおいてラップされてよい。更に、シーングラフAPIは、C、C#、およびJavaScriptのようなターゲット言語に投影されてよい。これは、リモートレンダリングシステム204の能力を、そのようなアプリケーションが使用するゲーム/レンダリングエンジンとは無関係に、任意の第三者アプリケーションに曝すことがある。リモートレンダリングシステム204は、混合アプリケーションおよび仮想現実アプリケーションに加えて或いはそれらの代替として、ウェブおよびモバイルアプリケーションにおいて利用されてもよい。
リモートレンダリングシステム204は、コンピューティングデバイス202から受信した更新されたオブジェクト情報(例えば、シーングラフデータ)のような入力をレンダリングエンジン218に提供して、オブジェクトのレンダリングをコンピューティングデバイス202に提供するように構成される、アプリリモート処理サービス216(app remoting service)を更に含む。アプリリモート処理サービス216は、幾つかの例において、リモートレンダリングサービスから独立して存在する第一者または第三者ソフトウェアの形態を取ることがある。受信した更新されたオブジェクト情報に基づいて、レンダリングエンジン218は、更新されたオブジェクト情報をレンダリングパイプラインに入力し、オブジェクトをレンダリングしてオブジェクトのレンダリングを生成する。幾つかのインスタンスにおいて、レンダリングパイプラインは、カスタムシェーダをサポートすることがある。
レンダリングエンジン218は、1つ以上の処理デバイスを介して実装されてよい。図2に示す例において、レンダリングエンジン218は、高ポリゴンコンテンツをレンダリングするように構成されたGPU218aを介して実装される。レンダリングエンジン218は、GPUにレンダリングタスクを提供するCPU(図示せず)を介して実装されてもよい。更に、レンダリングエンジンは、幾つかの例において、他のGPU218b、218cのような、他の処理デバイスを含んでよい。他の例では、図6を参照して以下に記載する例を含む、任意の他の適切な量および/またはタイプの処理デバイスが、レンダリングエンジン218を実装するために使用されてよい。幾つかの例では、市販の商用エンジンがレンダリングエンジン218として利用されてよいことが理解されるであろう。
ハイブリッドレンダリングシステム200は、大きなシーングラフを処理し、呼出しカウントを引き出すための様々な戦略を実施することがある。例えば、リモートレンダリングシステム204は、材料および変換データがGPU側バッファから引き出されるようにメッシュまたは他のモデルを構築してよく、(例えば、Redmond,WAのMicrosoft Corp.から入手可能なDirectX12(DX12)のような)グラフィックス指向APIスイートおよび間接描画(indirect drawing)を利用して、CPU側の引出し呼出し(draw call)オーバーヘッドを低減するのを助けてよい。大きなシーングラフに関連するクライアントアプリケーション206の場合、リモートレンダリングシステム204は、シーングラフのコンパクトな表現を参照してよく、或いはデータ指向方式で動作するようにシーングラフのアーキテクチャを修正してよい(例えば、Entity Component System)。更に、ランタイム中にシーングラフの潜在的に有意なサブセットを更新するのを助けるために、ハイブリッドレンダリングシステム200は、コンピューティングデバイス202とリモートレンダリングシステム204との間のデータのネットワーク転送のために変換圧縮(transform compression)を採用してよい。
アプリリモート処理サービス216は、カラー/フレームバッファを含むビデオデータ(例えば、圧縮ビデオストリーム)としてレンダリングエンジン218からRRクライアントライブラリ212にレンダリングを提供する。幾つかのインスタンスでは、制限されたWi-Fiまたは他のネットワーク帯域幅が、コンピューティングデバイス202に転送されることがあるカラー/フレームバッファデータの量を制限することがある。よって、アプリリモート処理サービス216は、H.265のようなビデオ圧縮標準を使用して、カラーバッファをコンピューティングデバイス202にストリーミングすることがある。アプリリモート処理サービス216は、例えば、高効率ビデオコーディングまたは奥行きデータを正確に圧縮するように構成されたカスタムコーデックを介して、奥行きバッファまたは奥行きデータの他の表現をコンピューティングデバイス202にストリーミングすることもある。
圧縮された奥行きバッファを送受信する実装において、RRクライアントライブラリ212は、リモートにレンダリングされたコンテンツについての奥行きバッファを送信して再構築する。幾つかの例において、コンピューティングデバイス202は、ローカルにレンダリングされたコンテンツでリモートにレンダリングされたコンテンツを補強する前に、1つ以上の待ち時間緩和戦略を実装することがある。例えば、コンピューティングデバイス202上の手および頭/眼の追跡に関する最近得られた情報を消費し且つ使用する間に、コンピューティングデバイス202は、リモートにレンダリングされた画像をレンダリングするために使用されたカメラ変換を使用して画像をレンダリングしてよい。別の例として、コンピューティングデバイス202は、最近得られた姿勢/注視データを利用して、リモートにレンダリングされたコンテンツのカラーバッファおよび奥行きバッファを再投影してよい。
ハイブリッドレンダリングシステム200は、更に、様々な他の待ち時間緩和戦略を実装してよい。一例として、リモートレンダリングシステム204は、カラーバッファ上でクロマ(chroma)サブサンプリングを実施することによって待ち時間を減少させて、送信されるデータの量を減少させてよい。リモートレンダリングシステム204は、タイルベースおよび/またはジオメトリ/クラスタベースのマルチGPUレンダリングのような、マルチGPUレンダリングを実行してもよい。例示的なジオメトリ/クラスタベースのマルチGPUレンダリングプロセスでは、モデルのジオメトリがクラスタに細分化され、複数のGPUに亘って分散させられ、各GPUは、そのそれぞれに割り当てられたジオメトリをレンダリングし、PCIeバスを通じてカラーおよび奥行きバッファをマスタGPU(例えば、図2の218a)に提供し、マスタGPUは、奥行きを意識したバッファ併合(buffer merging)およびビデオエンコーディングを実行する。マルチGPUレンダリングは、十分なフレームレート(例えば、60Hz)で大きなメッシュ(例えば、100M+ポリゴン)のレンダリングをサポートするのに役立つことがあり、全体的なレンダリング時間を減少させることによって待ち時間を減らすこともある。他の例示的な待ち時間および帯域幅減少戦略として、アプリリモート処理サービス216は、120Hzでステレオ画像の符号化をインターリーブしてよく、或いは、完全な第2の画像ではなく第2の眼について再投影されたフレームと元のフレームとの間のデルタを符号化してよい。更に、ハイブリッドレンダリング自体が、全てのコンテンツをリモートにレンダリングするシステムと比較して待ち時間を減少させるのに役立つことがある。何故ならば、少なくとも一部のコンテンツは、ネットワークを通じて転送されるのではなくコンピューティングデバイス202上でローカルにレンダリングされることがあるからである。
ひとたびコンピューティングデバイス202が(圧縮された奥行きバッファを送受信する実装において)リモートコンピューティングシステム204から受け取った奥行きバッファを解凍するか、さもなければ、受信した奥行き情報に対して何らかの所要の処理を実行すると、コンピューティングデバイス202は、レンダリングパイプラインに結合された奥行きバッファまたは他の奥行き情報でオブジェクトをローカルにレンダリングすることがある。コンピューティングデバイス202は、任意の適切なフレームバッファ併合プロセスを介して合成フレームとして表示するために、リモートにレンダリングされたコンテンツおよびローカルにレンダリングされたコンテンツを合成する。幾つかの例において、コンピューティングデバイスは、奥行き補正混合(depth-correct blending)を実行して、シーンの奥行き補正合成(depth-correct composition)を提供する。奥行き補正混合は、例えば、リモートにレンダリングされたコンテンツの奥行きバッファおよびローカルにレンダリングされたコンテンツの奥行きバッファに対して奥行きテスト(例えば、z-テスト)を行うこと、および奥行きテストに基づいて合成することを含んでよい。そのような混合は、例えば、(例えば、テキストの読みやすさを維持するために)特定の奥行き座標についてローカルにレンダリングされるインキング構成、クライアント側スレート、テキスト注釈のため、およびリモートにレンダリングされたコンテンツがローカルにレンダリングされたコンテンツに対応する奥行き補正関係を示す直接操作およびユーザインターフェース構成のためのような、様々なシナリオにおいて有用なことがある。他の例において、ローカルにレンダリングされたコンテンツは、リモートにレンダリングされたコンテンツ(例えば、リモートにレンダリングされたバックグラウンドの上に存在するユーザインターフェース)に対して固定された位置に存在し、コンピューティングデバイス202は、奥行きテストを行うことなくそれぞれのフレームを併合(マージ)することがある。
合成フレームとして表示するためにローカルにレンダリングされたコンテンツおよびリモートにレンダリングされたコンテンツを合成した後に、コンピューティングデバイス202は、合成フレームを更に安定化させるために、後期再投影処理を実行してよい。幾つかの例において、コンピューティングデバイス202は、合成フレームのカラーバッファのみを再投影してよい。他の例において、再投影は、複合フレームの奥行きバッファに基づいて実行されてもよい。再投影は、ビデオストリームに符号化された動きベクトル、またはコンピューティングデバイス202上に存在する1つ以上の動きセンサからの動きセンサデータのような、任意の適切な情報に基づいて実行されてよい。コンピューティングデバイス202は、ディスプレイ220を介して合成フレームを出力するように構成され、ディスプレイ220は、共通のエンクロージャまたはコンピューティングデバイス202の周辺でコンピューティングデバイス202と一体化されてよい。シースルーディスプレイ(例えば、導波管ベースまたはプリズムベースのディスプレイ)および不透明なディスプレイを含む、任意の適切なディスプレイが使用されてよい。
図1A~図1Bおよび図2の例において、リモートレンダリングシステム(それぞれ110および204)は、単一のコンピューティングデバイス(それぞれ102および202)からオブジェクト情報および更新されたオブジェクト情報を受信する。他の例では、リモートレンダリングシステムが、同じシーンに寄与する複数のコンピューティングデバイスをサービスしてよい。例えば、リモートレンダリングシステムは、別々の拡張現実ディスプレイデバイスのユーザのためにシーングラフをレンダリングすることがあり、その場合、各ユーザは、同じシーングラフに更新を寄与することがある。より具体的な例において、リモートレンダリングシステムは、シーン内の各ユーザの位置に基づいて、各ユーザについての異なる視点からシーン内の同じオブジェクトをレンダリングすることがある。更に、幾つかの例において、複数のネットワークアクセス可能なクラウドサーバは協調してシーンをレンダリングすることがある。
本明細書に記載するハイブリッドレンダリングシステム200は、適切に高いフレームレートで、多数の個々のオブジェクトを含む高ポリゴンシーン(例えば、コンピュータ支援設計モデル、構造/製造文書など)をレンダリングするのに役立つことがある。対照的に、ハイブリッドレンダリングをサポートしないローカルレンダリングエンジンは、そのような用途についての適切に高いフレームレートでレンダリングされ得ないことがある。図2には別個のコンピューティングシステムとして示されているが、幾つかのインスタンスでは、コンピューティングデバイス202自体が、リモートレンダリングシステム204を実行する(例えば、異なるプロセスにおいて同じシステム上で作動する)こともある。幾つかのそのような場合、本明細書に記載するハイブリッドレンダリングの例は、独立した位相およびフレームレートで作動する多くの3Dアプリケーションを合成することのように、コンピューティングデバイス202上で制定されるローカルシナリオのために使用されてよい。
幾つかのインスタンスにおいて、デジタルコンテンツは、レンダリングパイプラインに入る前にレンダリングのために準備されてよい。図3は、ハイブリッドレンダリングのためのデジタルコンテンツの準備を助けることがある、リモートレンダリングサービスによって任意に実行される例示的な方法300を示している。幾つかの例において、方法300は、システム200のようなハイブリッドレンダリングシステムの処理デバイスによって実行可能な格納された命令として実装されてよい。
302で、方法300は、ファイル処理を開始することを含む。幾つかの例において、クライアントデバイス(例えば、コンピューティングデバイス102および/または202)は、(例えば、モデル、材料などのような、個々のファイルを含むジップされたアーカイブとしての)アセット(資産)を、上述のようなシーングラフAPIを通じてクラウド記憶場所にアップロードしてよい。幾つかの例において、これはシーングラフAPI上に構築されたウェブサイトを介して実行されてよい。他の例では、コンピューティングデバイスが、ファイル処理をローカルに開始してよい。
304で、方法300は、キャッシュされたバージョンのファイルがリモートレンダリングサービスに利用可能かどうかを決定することによって、ステップ302でアップロードされたファイルが新しいファイルであるかどうかを決定することを含む。ファイルのキャッシュ化されたバージョンが利用可能であるならば、方法300は320に進む。ファイルのキャッシュ化されたバージョンが利用可能でないならば、方法300は306に進み、306で、リモートレンダリングサービスは、ファイルがレンダリングエンジン(例えば、図2のレンダリングエンジン218)によって読み取り可能なネイティブファイルフォーマットを含むかどうかを決定する。ファイルのフォーマットがネイティブファイルフォーマットであるならば、方法300は314に進み、314で、リモートレンダリングサービスは、ファイルをクラウド記憶場所にアップロードする。
リモートレンダリングサービスが、306で、ファイルのフォーマットがネイティブファイルフォーマットと異なると決定するならば、方法300は308に進み、308で、ファイルは、クラウド記憶場所にアップロードされる。310で、方法300は、格納されたファイルのフォーマットをネイティブファイルフォーマットに変換することを含む。
312で、リモートレンダリングサービスは、ネイティブファイルフォーマットバージョンのファイルをネットワークアクセス可能な記憶場所に配置する。リモートレンダリングサービスは、316で、ネイティブファイルフォーマットにあるファイルを処理して、ネイティブファイルフォーマットをバイナリフォーマットのようなリモートレンダリングファイルフォーマットに変換する。318で、リモートレンダリングサービスは、リモートレンダリングファイルフォーマットバージョンのファイルを記憶装置内に配置し、アップロードされたコンテンツについての識別子(ID)(例えば、特異なモデルID)も返し、それはファイルが適切にアップロードされたことをクライアントデバイスに知らせることがある。
320で、クライアントアプリケーションが、レンダリングのための特定のモデルをロードするために(例えば、図2のRRクライアントライブラリ212を介して)API呼出しを送信する。322で、リモートレンダリングAPI(図2のRRサーバライブラリ214)は、特定のモデルのために返されたIDを使用して、モデルをロードし、レンダリングパイプラインを開始する。
図4は、ハイブリッドレンダリングを実施するための例示的な方法400を示している。方法400は、コンピューティングデバイス102および/または202のような、クライアントコンピューティングデバイスの処理デバイスによって実行可能な格納された命令として実装されることがある。
402で、方法400は、第1のローカルプロセスにおいて、レンダリングおよび表示のためにデジタルコンテンツを出力するアプリケーションを実行することを含む。アプリケーションの実行中に、方法400は、リモートにレンダリングされるべき第1のオブジェクトを識別することと、ローカルにレンダリングされるべき第2のオブジェクトを識別することとを含んでもよい。例えば、コンピューティングデバイスは、アプリケーションのアプリケーション開発者によって作成された条件付きおよび/または絶対論理に基づいて、オブジェクトをローカルにレンダリングするのか或いはリモートにレンダリングするのかを識別することがある。
404で、方法400は、第2のローカルまたはリモートプロセスに、第2のローカルまたはリモートプロセスによってレンダリングされるべきオブジェクトに関するオブジェクト情報を提供することを含む。オブジェクト情報を提供することは、406で示すように、オブジェクトの幾何学的形状と材料とを含む三次元モデル(例えば、高ポリゴンメッシュ、ボクセルベースモデルなど)を提供することを含むことがある。例えば、コンピューティングデバイスは、図3に記載するように、シーングラフAPIを介してリモートレンダリングのためのモデルを提供することがある。オブジェクト情報を提供することは、408で示すように、デジタルレンダリングされたコンテンツについてのデータ構造を更新する要求を提供することを含みこともある。例えば、コンピューティングデバイスは、以前にアップロードされた特定のモデルのために、リモートシーングラフと対話するためにAPI呼出しを送信することがある。クライアントコンピューティングデバイスは、姿勢/注視データおよび/または決定された仮想カメラ位置のような、オブジェクトをレンダリングするためにリモートコンピューティングシステムによって使用可能な任意の他の適切な情報を提供することもある。幾つかの例において、オブジェクト情報を提供することは、409で示すように、オブジェクト情報をリモートコンピューティングシステム(例えば、リモートレンダリングシステム110、204)に提供することを含むことがある。他の例において、オブジェクト情報を提供することは、第1のローカルプロセスとは異なる第2のローカルプロセスにオブジェクト情報を提供することを含むことがある。
410で、方法400は、第2のローカルまたはリモートプロセスから、オブジェクトのレンダリングを受信することを含む。幾つかの例において、オブジェクトのレンダリングを受信することは、412で示すように、カラーバッファを含むビデオデータを受信することを含む。そのようなビデオデータは、414として示すように、奥行きの表現(例えば、奥行きバッファまたは他の奥行きデータ)を含むこともある。更に、コンピューティングデバイスは、圧縮ビデオデータを受信することがあり、圧縮ビデオデータは、待ち時間を軽減するのに役立つことがある。他の例において、オブジェクトのレンダリングを受信することは、第2のローカルまたはリモートプロセスから任意の他の適切なデータを受信することを含むことがある。
416で、方法400は、例えば、(それぞれ412および414で)受信したカラーバッファおよび/または奥行きバッファを再投影することによって、オブジェクトのレンダリングを再投影することを含むことがある。オブジェクトのレンダリングを再投影することは、待ち時間に起因する画像の不安定性(例えば、ジッタ)を緩和するのに役立つことがある。
幾つかの例において、リモートにレンダリングされたオブジェクトは、第1のオブジェクトであり、コンピューティングデバイスは、1つ以上の他のオブジェクトをローカルにレンダリングするように構成される。より具体的な例において、コンピューティングデバイスは、グラフィカルユーザインターフェース要素、関節付き手、および/または任意の他の待ち時間に敏感なオブジェクトをローカルにレンダリングし、第1のオブジェクトをローカルにレンダリングされたコンテンツで補強するように構成されることがある。よって、418で、方法400は、第2のオブジェクトをローカルにレンダリングして、第2のオブジェクトのレンダリングを生成することを含むことがある。第2のオブジェクトをローカルにレンダリングすることは、幾つかの例において、感知された或いは予測された頭の姿勢、眼の注視方向、および/または手の姿勢に基づいてレンダリングすることを含むことがある。
420で、方法400は、合成フレームとして表示するために、第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成することを含む。幾つかの例において、合成することは、第1のオブジェクトの奥行きバッファと第2のオブジェクトの奥行きバッファとに対して奥行きテストを実行することと、422で示すように、奥行きテストに基づいて第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成することとを含む。他の例において、合成することは、第1のオブジェクトのレンダリングの上に第2のオブジェクトのレンダリングを重ね合わせ、それによって、リモートにレンダリングされたコンテンツをローカルにレンダリングされたコンテンツで補強することを含む。より具体的な例において、第2のオブジェクトは、ユーザインターフェース要素を含むことがあり、合成することは、ユーザインターフェース要素を第1のオブジェクトのレンダリングの上に重ね合わせることを含むことがある。
424で、方法400は、合成フレームのカラーバッファおよび任意的な奥行きバッファを再投影することを含むことがあり、それは合成フレームの表示を更に安定化させるのに役立つことがある。コンピューティングデバイスは、奥行き情報、リモートコンピューティングシステムから受信したビデオデータにおいて符号化された動きベクトル、またはコンピューティングデバイス202上に存在する1つ以上の動きセンサからの動きセンサデータのような、任意の適切な情報に基づいて、そのような再投影を実行することがある。426で、方法400は、オブジェクトのレンダリングをディスプレイに出力して、オブジェクトを表示することを含む。
428で、方法400は、リモートにレンダリングされた表示されたオブジェクトに対して行われた操作を受信することを含む。幾つかの例において、操作を受信することは、430で示すように、コンピューティングデバイスのユーザの頭の姿勢および/または眼の注視方向の変化または予測される変化を示す(未加工のおよび/または処理済みの)センサデータの入力を受信することを含むことがある。他の例において、操作を受信することは、432で示すように、ユーザ入力を受け取ることを含むことがある。オブジェクトを操作するのに適したユーザ入力の例は、ジェスチャ入力、発話入力、およびボタン押下げを含む。更に他の例において、表示されたオブジェクトに対して行われた操作の受信は、表示されたオブジェクトに関連するアニメーションからのような、ユーザ入力またはセンサ以外の他のソースから生じることがある。
434で、方法400は、オブジェクトに対して行われた操作に基づいて、第2のローカルまたはリモートプロセスに、更新されたオブジェクト情報を提供することを含む。応答して、第2のローカルまたはリモートプロセスは、受信した更新されたオブジェクト情報に基づいてオブジェクトをレンダリングし、オブジェクトの更新されたレンダリングをコンピューティングデバイスに提供する。よって、方法400は、436で、第2のローカルまたはリモートプロセスからオブジェクトの更新されたレンダリングを受信することを含む。438で、方法400は、オブジェクトを表示するために、オブジェクトの更新されたレンダリングをディスプレイに出力することを含む。リモートにレンダリングされた第1のオブジェクトおよびローカルにレンダリングされた第2のオブジェクトのコンテキストで記載されているが、レンダリングされたシーンは、複数のリモートにレンダリングされたオブジェクトおよび/または本明細書に開示する例に従って処理および合成される複数のローカルにレンダリングされたオブジェクトを含んでよいことが理解されるであろう。
図5は、クライアントコンピューティングデバイスから受信した情報に基づいてオブジェクトをレンダリングする例示的な方法500を示している。方法500は、リモートレンダリングシステム110および/または204のようなコンピュータシステムの処理デバイスによって実行可能な格納された命令として、またはレンダリングされるべきオブジェクトを提供するプロセスとは独立して作動するローカルプロセスとして実装されることがある。
502で、方法500は、コンピューティングデバイスから、レンダリングされるべきオブジェクトに関するオブジェクト情報を受信することを含む。幾つかの例において、オブジェクト情報を受信することは、504で示すように、オブジェクトを含むデジタルモデルをロードする要求を受信することを含むことがある。他の例において、オブジェクト情報を受信することは、リモートAPI呼出しを受信して、オブジェクトのために従前にアップロードされたデータ構造を更新することを含むことがある。
受信したオブジェクト情報に基づいて、方法500は、506で、オブジェクトをレンダリングすることを含む。オブジェクトをレンダリングすることは、任意の適切なレンダリングパイプラインを使用して実行されることがある。508で示すように、オブジェクトをレンダリングすることは、デジタルモデルについてのシーングラフに格納された情報に基づいてレンダリングすることを含むことがあり、ここで、オブジェクトは、シーングラフのノードである。
510で、方法500は、コンピューティングデバイスに、オブジェクトのレンダリングを提供することを含む。オブジェクトのレンダリングを提供することは、512で示すように、少なくともカラーバッファを含むビデオデータを提供することを含むことがある。より具体的な例において、ビデオデータは、カラーバッファと、奥行きの表現(例えば、奥行きバッファ)とを含むことがある。更に、幾つかの例では、514で示すように、ビデオデータは、圧縮されることがある。
516で、方法500は、コンピューティングデバイスから、オブジェクトに対して行われた操作に関する更新されたオブジェクト情報を受信することを含む。更新されたオブジェクト情報を受信することは、518で示すように、コンピューティングデバイスのユーザの姿勢/注視を示す(未加工のおよび/または処理済みの)センサデータを受信することを含むことがある。ユーザの姿勢/注視を示す情報は、幾つかの例において、クライアントコンピューティングデバイスによって決定される仮想カメラ位置を含んでよい。更新されたオブジェクト情報を受信することは、追加的にまたは代替的に、ジェスチャ入力、発話入力、および/またはボタン押下げのような、オブジェクトを操作するためのユーザ入力に関する情報を受信することを含むことがある。そのようなインスタンスにおいて、ユーザ入力は、未加工のまたは処理済みの形式で(例えば、受信したユーザ入力に基づいてシーングラフに行われる変更の仕様として)送信されることがある。他の例では、オブジェクトに関連するアニメーションに関する情報のような、任意の他の適切な情報が受信されることがある。
方法500は、520で、受信した更新されたオブジェクト情報に基づいてオブジェクトをレンダリングすることを更に含む。更新されたオブジェクト情報がコンピューティングデバイスのユーザの姿勢/注視に基づくとき、オブジェクトをレンダリングすることは、522で示すように、姿勢および/または注視に基づいてレンダリングすることを含むことがある。例えば、リモートコンピューティングシステムは、受信した決定された仮想カメラ位置に基づいてオブジェクトをレンダリングすることがある。更新されたオブジェクト情報がコンピューティングデバイスへのユーザ入力に基づくとき、オブジェクトをレンダリングすることは、ユーザ入力に基づくレンダリングを含むことがある。他の例において、リモートコンピューティングシステムは、受信した任意の他の情報に基づいてオブジェクトをレンダリングすることを含むことがある。524で、方法500は、コンピューティングデバイスに、オブジェクトの更新されたレンダリングを提供することを含む。
幾つかの例において、本明細書に記載する方法およびプロセスは、1つ以上のコンピューティングデバイスのコンピューティングシステムと結び付けられることがある。特に、そのような方法およびプロセスは、コンピュータ-アプリケーションプログラムまたはサービス、アプリケーション-プログラミングインターフェース(API)、ライブラリ、および/または他のコンピュータ-プログラム製品として実装されることがある。
図6は、上述した方法およびプロセスのうちの1つ以上を実施することができるコンピューティングシステム600の非限定的な実施形態を図式的に示している。コンピューティングシステム600は、簡略化された形態で示されている。コンピューティングシステム600は、1つ以上のパーソナルコンピュータ、サーバコンピュータ、タブレットコンピュータ、家庭娯楽コンピュータ、ネットワークコンピューティングデバイス、ゲームデバイス、モバイルコンピューティングデバイス(例えば、ヘッドマウントディスプレイデバイス)、モバイル通信デバイス(例えば、スマートフォン)、および/または他のコンピューティングデバイスの形態を取ることがある。
コンピューティングシステム600は、論理(ロジック)マシン602と、記憶マシン604とを含む。コンピューティングシステム600は、任意的に、ディスプレイサブシステム606、入力サブシステム608、通信サブシステム610、および/または図6に示されていない他のコンポーネントを含むことがある。
論理マシン602は、命令を実行するように構成された1つ以上の物理デバイスを含む。例えば、論理マシンは、1つ以上のアプリケーション、サービス、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造、または他の論理構造の一部である命令を実行するように構成されることがある。そのような命令は、タスクを実行するために、データタイプを実装するために、1つ以上のコンポーネントの状態を変換するために、技術的効果を達成するために、或いは他の方法で所望の結果に到達するために実装されることがある。
論理マシン602は、ソフトウェア命令を実行するように構成された1つ以上のプロセッサを含んでよい。追加的にまたは代替的に、論理マシンは、ハードウェアまたはファームウェア命令を実行するように構成された1つ以上のハードウェアまたはファームウェア論理マシンを含んでよい。そのようなプロセッサは、様々な例において、1つ以上のCPUおよび/またはGPUとして実装されてよい。論理マシンのプロセッサは、シングルコアまたはマルチコアであってよく、その上で実行される命令は、逐次、並列、および/または分散処理のために構成されてよい。論理マシンの個々のコンポーネントは、任意に、2つ以上の別個のデバイス間に分散されてよく、これらのデバイスは、リモートに配置されてよく、および/または協調処理のために構成されてよい。論理マシンの態様は、クラウドコンピューティング構成内に構成されたリモートアクセス可能なネットワーク化されたコンピューティングデバイスによって仮想化されてよく、実行されてよい。
記憶マシン604は、本明細書に記載する方法およびプロセスを実施するために論理マシンによって実行可能な命令を保持するように構成される1つ以上の物理デバイスを含む。そのような方法およびプロセスが実装されるとき、記憶マシン604の状態は、例えば、異なるデータを保持するために、変換されることがある。
記憶マシン604は、取り外し可能および/または内蔵デバイスを含んでよい。記憶マシン604は、とりわけ、光メモリ(例えば、CD、DVD、HD-DVD、Blu-Ray Discなど)、半導体メモリ(例えば、RAM、EPROM、EEPROMなど)、および/または磁気メモリ(例えば、ハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、MRAMなど)を含んでよい。記憶マシン604は、揮発性、不揮発性、ダイナミック、スタティック、読み取り/書き込み、読み取り専用、ランダムアクセス、順次アクセス、位置アドレス指定可能、ファイルアドレス指定可能、および/またはコンテンツアドレス指定可能なデバイスを含むことがある。
記憶マシン604は、1つ以上の物理デバイスを含むことが理解されるであろう。しかしながら、本明細書に記載する命令の態様は、有限の持続時間に亘って物理デバイスによって保持されない通信媒体(例えば、電磁信号、光信号など)によって伝搬されてよい。
論理マシン602および記憶マシン604の態様は、一緒に1つ以上のハードウェア論理コンポーネントに統合されてよい。そのようなハードウェア-論理コンポーネントは、例えば、フィールドプログラマブルゲートアレイ(FPGA)、プログラムおよび特定用途向け集積回路(PASIC/ASIC)、プログラムおよび特定用途向け標準製品(PSSP/ASSP)、システム・オン・チップ(SOC)、および複雑なプログラマブル論理デバイスを含むことがある。
「プログラム(program)」および「エンジン(engine)」という用語は、特定の機能を実行するために実装されるコンピューティングシステム600の態様を記載するために使用されることがある。幾つかの場合において、プログラムまたはエンジンは、記憶マシン604によって保持された命令を実行する論理マシン602を介してインスタンス化されることがある。異なるプログラムおよび/またはエンジンが、同じアプリケーション、サービス、コードブロック、オブジェクト、ライブラリ、ルーチン、API、機能などからインスタンス化される場合があることが理解されるであろう。同様に、同じプログラムおよび/またはエンジンが、異なるアプリケーション、サービス、コードブロック、オブジェクト、ルーチン、API、機能などによってインスタンス化されることがある。「プログラム」および「エンジン」という用語は、個々または一群の実行可能ファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベース記録などを含むことがある。
本明細書で使用するとき、「サービス(service)」は、複数のユーザセッションに亘って実行可能なアプリケーションプログラムであることが理解されるであろう。サービスは、1つ以上のシステムコンポーネント、プログラム、および/または他のサービスに利用可能であることがある。幾つかの実装では、サービスが1つ以上のサーバコンピューティングデバイス上で作動することがある。
ディスプレイサブシステム606を含むとき、ディスプレイサブシステム606は、記憶マシン604によって保持されるデータの視覚的表現を提示するために使用されてよい。この視覚的表現は、グラフィカルユーザインターフェース(GUI)の形態を取ることがある。本明細書に記載する方法およびプロセスが記憶マシンによって保持されるデータを変更し、従って、記憶マシンの状態を変換するとき、ディスプレイサブシステム606の状態は、同様に、基礎となるデータの変化を視覚的に表すように変換されることがある。ディスプレイサブシステム606は、実質的にあらゆるタイプの技術を利用する1つ以上のディスプレイデバイスを含んでよい。そのようなディスプレイデバイスは、共有筐体(エンクロージャ)内の論理マシン602および/または記憶マシン604と組み合わせられてよく、或いは、そのようなディスプレイデバイスは、周辺ディスプレイデバイスであってよい。
入力サブシステム608を含むとき、入力サブシステム608は、キーボード、マウス、タッチスクリーン、またはゲームコントローラのような1つ以上のユーザ入力デバイスを含むことがあり、或いはそれらとインターフェース接続することがある。幾つかの実施形態において、入力サブシステムは、選択された自然ユーザ入力(NUI)構成要素(componentry)を含むことがあり、或いはそれとインターフェース接続することがある。そのような構成要素は、統合されることがあり、或いは周辺的なものであることがあり、入力行為のトランスダクションおよび/または処理は、オンボードまたはオフボードで処理されることがある。例示的なNUI構成要素は、発話および/または音声認識のためのマイクロホン、機械視覚および/またはジェスチャ認識のための赤外線、カラー、立体視、および/または奥行きカメラ、運動検出および/または意図認識のためのヘッドトラッカ、アイトラッカ、加速度計、および/またはジャイロスコープ、ならびに脳活動を評価するための電界感知構成要素を含むことがある。
通信サブシステム610を含むとき、通信サブシステム610は、コンピューティングシステム600を1つ以上の他のコンピューティングデバイスと通信的に結合するように構成されることがある。通信サブシステム610は、1つ以上の異なる通信プロトコルと互換性のある有線および/または無線通信デバイスを含むことがある。非限定的な例として、通信サブシステムは、無線電話ネットワーク、有線または無線のローカルまたはワイドエリアネットワークを介して通信するように構成されることがある。幾つかの実施形態において、通信サブシステムは、コンピューティングシステム600が、インターネットのようなネットワークを介して、他のデバイスにメッセージを送信し且つ/或いは他のデバイスからメッセージを受信することを可能にすることがある。
別の例は、処理デバイスと、第1のローカルプロセスにおいて、アプリケーションを処理するために、処理デバイスによって実行可能な命令を格納する記憶マシンとを含み、アプリケーションは、アプリケーションの実行中に、レンダリングおよび表示のためにデジタルコンテンツを出力し、第2のローカルまたはリモートプロセスに、第2のローカルまたはリモートプロセスによってレンダリングされるべきオブジェクトに関するオブジェクト情報を提供し、第2のローカルまたはリモートプロセスから、オブジェクトのレンダリングを受信し、オブジェクトを表示するためにオブジェクトのレンダリングをディスプレイに出力し、オブジェクトに対してなされた操作を受信し、オブジェクトに対してなされた操作に基づく更新されたオブジェクト情報を第2のローカルまたはリモートプロセスに提供し、第2のローカルまたはリモートプロセスから、オブジェクトの更新されたレンダリングを受信し、オブジェクトを表示するためにオブジェクトの更新されたレンダリングをディスプレイに出力する、コンピューティングデバイスを提供する。そのような例において、命令は、追加的にまたは代替的に、オブジェクトの幾何学的構成を含む三次元モデルを提供することによってオブジェクト情報を提供するように実行可能であってよい。そのような例において、命令は、追加的にまたは代替的にデジタルレンダリングされたコンテンツのためのデータ構造を更新する要求を提供することによってオブジェクト情報を提供するように実行可能であってよい。そのような例において、オブジェクトのレンダリングは、追加的にまたは代替的に、カラーバッファを含むビデオデータを含んでよい。そのような例において、ビデオデータは、追加的にまたは代替的に、奥行きの表現を含んでよい。そのような例において、オブジェクトは、追加的にまたは代替的に、第1のオブジェクトを含むことがあり、命令は、追加的にまたは代替的に、第2のオブジェクトのレンダリングを生成するために第2のオブジェクトをローカルにレンダリングし、合成フレームとして表示するために第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成するように実行可能であることがある。そのような例において、第2のローカルまたはリモートプロセスから受信したオブジェクトのレンダリングは、追加的にまたは代替的に、第1のカラーバッファを含んでよく、命令は、追加的にまたは代替的に、第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成する前に、第1のカラーバッファの再投影を実行するように実行可能であってよい。そのような例において、命令は、追加的にまたは代替的に、第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成した後に、合成フレームのカラーバッファの再投影を実行するように実行可能であってよい。そのような例において、第2のローカルまたはリモートプロセスから受信した第1のオブジェクトのレンダリングは、追加的にまたは代替的に、第1の奥行きデータを含んでよく、第2のオブジェクトのレンダリングは、追加的にまたは代替的に、第2の奥行きデータを含んでもよく、命令は、追加的にまたは代替的に、第1の奥行きデータおよび第2の奥行きデータに対してz試験を実施し、z試験に基づいて第1のオブジェクトと第2のオブジェクトとを合成することによって、第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成するように実行可能であってよい。そのような例において、命令は、追加的にまたは代替的に、頭の姿勢および/または眼の注視方向の変化を示すセンサデータを受信することによって、および/またはオブジェクトを操作するためのユーザ入力を受信することによって、オブジェクトになされた操作を受信するように実行可能であってよい。
別の例は、処理デバイスと、命令を格納する記憶デバイスとを含み、命令は、受信するオブジェクト情報に基づいてレンダリングされるべきオブジェクトに関するオブジェクト情報をコンピューティングデバイスから受信し、オブジェクトのレンダリングし、オブジェクトのレンダリングをコンピューティングデバイスに提供し、オブジェクトになされた操作に関する更新されたオブジェクト情報をコンピューティングデバイスから受信し、オブジェクトになされた操作に関して受信した更新されたオブジェクト情報に基づいてオブジェクトをレンダリングし、オブジェクトの更新されたレンダリングをコンピューティングデバイスに提供するように、処理デバイスによって実行可能である、コンピューティングシステムを提供する。このような例において、命令は、追加的にまたは代替的に、カラーバッファと奥行きバッファとを含むビデオデータを提供することによって、オブジェクトのレンダリングをコンピューティングデバイスに提供するように、実行可能であってよい。そのような例において、命令は、追加的にまたは代替的に、ビデオデータを圧縮し、圧縮されたビデオデータをコンピューティングデバイスに提供するように、実行可能であってよい。そのような例において、オブジェクト情報は、追加的にまたは代替的に、オブジェクトを含むデジタルモデルをロードする要求を含んでよく、命令は、追加的にまたは代替的に、デジタルモデルのためのシーングラフに格納される情報に基づいてオブジェクトをレンダリングするように、実行可能であってよい。そのような例において、命令は、追加的にまたは代替的に、コンピューティングデバイスのユーザの姿勢を示すセンサデータを受信することによって、更新されたオブジェクト情報を受信するように、実行可能であってよく、命令は、追加的にまたは代替的に、ユーザの姿勢に基づいてオブジェクトをレンダリングするように、実行可能であってよい。
別の例は、コンピューティングデバイスで行われる方法を提供し、方法は、レンダリングおよび表示のためのデジタルコンテンツを出力するアプリケーションを実行することと、アプリケーションの実行中に、リモートにレンダリングされるべきデジタルコンテンツの第1のオブジェクトを識別することと、ローカルにレンダリングされるべきデジタルコンテンツの第2のオブジェクトも識別することと、リモートコンピューティングシステムによってレンダリングされるべき第1のオブジェクトに関するオブジェクト情報をリモートコンピューティングシステムに提供することと、第1のオブジェクトのレンダリングをリモートコンピューティングシステムから受信することと、第2のオブジェクトのレンダリングを生成するために第2のオブジェクトをローカルにレンダリングすることと、合成フレームとして表示するために第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成することとを含む。そのような例において、第1のオブジェクトのレンダリングは、追加的にまたは代替的に、第1のカラーバッファと、第1の奥行きバッファとを含んでよく、方法は、追加的にまたは代替的に、第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成する前に、少なくとも第1のカラーバッファの再投影を実行することを含んでよい。そのような例において、方法は、追加的にまたは代替的に、第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成した後に、再投影を実行することを含んでよい。そのような例において、再投影を実行することは、追加的にまたは代替的に、ユーザの頭の姿勢に基づいて再投影を実行することを含んでよい。そのような例において、第1のオブジェクトのレンダリングは、追加的にまたは代替的に、第1の奥行きデータを含んでよく、第2のオブジェクトのレンダリングは、追加的にまたは代替的に、第2の奥行きデータを含んでよく、方法は、追加的にまたは代替的に、第1の奥行きデータおよび第2の奥行きデータに対して奥行き試験を実行することと、奥行き試験に基づいて第1のオブジェクトのレンダリングと第2のオブジェクトのレンダリングとを合成することとを含んでよい。
本明細書に記載する構成および/またはアプローチは、本質的に例示的なものであること、ならびにこれらの特定の実施形態または例は、限定的な意味で考えられるべきではないことが理解されるであろう。何故ならば、多くのバリエーションが可能であるからである。本明細書に記載する特定のルーチンまたは方法は、任意の数の処理戦略のうちの1つ以上を表すことがある。よって、図示および/または記載の様々な行為は、図示および/または記載のシーケンスにおいて、他のシーケンスにおいて、平行して実行されることがあり、或いは省略されることがある。同様に、上述した処理の順序も変更されることがある。
本開示の主題は、様々なプロセス、システムおよび構成、ならびに本明細書に開示する他の構成、機能、行為、および/または特性、ならびにそれらのありとあらゆる均等物の、全ての新規且つ非自明の組み合わせおよびサブ組み合わせを含む。

Claims (15)

  1. 処理デバイスと、
    命令を格納する記憶デバイスと、を含み、
    前記命令は、
    第1のローカルプロセスにおいて、レンダリングおよび表示するデジタルコンテンツを出力するアプリケーションを実行し、
    前記アプリケーションの実行中に、第2のローカルまたはリモートコンピューティングシステムプロセスによってレンダリングされるべきオブジェクトに関するオブジェクト情報を前記第2のローカルまたはリモートコンピューティングシステムプロセスに提供し、
    前記オブジェクトのレンダリングを前記第2のローカルまたはリモートコンピューティングシステムプロセスから受信し、
    前記オブジェクトの前記レンダリングをディスプレイに出力して前記オブジェクトを表示し、
    前記オブジェクトになされた操作を受信し、
    前記オブジェクトになされた前記操作に基づいて更新されたオブジェクト情報を前記第2のローカルまたはリモートコンピューティングシステムプロセスに提供し、
    前記オブジェクトの更新されたレンダリングを前記第2のローカルまたはリモートコンピューティングシステムプロセスから受信し、
    前記オブジェクトの前記更新されたレンダリングを前記ディスプレイに出力して、前記オブジェクトを表示する
    ように、前記処理デバイスによって実行可能である、
    コンピューティングデバイス。
  2. 前記オブジェクトは、第1のオブジェクトであり、
    前記命令は、
    第2のオブジェクトをローカルにレンダリングして前記第2のオブジェクトのレンダリングを生成し、
    合成フレームとしての表示する前記第1のオブジェクトの前記レンダリングと前記第2のオブジェクトの前記レンダリングとを合成する
    ように、更に実行可能である、
    請求項1に記載のコンピューティングデバイス。
  3. 前記第2のローカルまたはリモートコンピューティングシステムプロセスから受信した前記オブジェクトの前記レンダリングは、第1のカラーバッファを含み、前記命令は、前記第1のオブジェクトの前記レンダリングと前記第2のオブジェクトの前記レンダリングとを合成する前に、前記第1のカラーバッファの再投影を行うように、更に実行可能である、請求項2に記載のコンピューティングデバイス。
  4. 前記命令は、前記第1のオブジェクトの前記レンダリングと前記第2のオブジェクトの前記レンダリングとを合成した後に、前記合成フレームのカラーバッファの再投影を行うように、更に実行可能である、請求項2に記載のコンピューティングデバイス。
  5. 前記第2のローカルまたはリモートコンピューティングシステムプロセスから受信した前記第1のオブジェクトの前記レンダリングは、第1の奥行きデータを含み、前記第2のオブジェクトの前記レンダリングは、第2の奥行きデータを含み、前記命令は、前記第1の奥行きデータおよび前記第2の奥行きデータに対してz試験を行い、該z試験に基づいて前記第1のオブジェクトと前記第2のオブジェクトとを合成することによって、前記第1のオブジェクトの前記レンダリングと前記第2のオブジェクトの前記レンダリングとを合成するように、実行可能である、請求項2に記載のコンピューティングデバイス。
  6. 前記命令は、前記オブジェクトの幾何学的形状を含む三次元モデルを提供することによって、前記オブジェクト情報を提供するように、実行可能である、請求項1に記載のコンピューティングデバイス。
  7. 前記命令は、デジタルにレンダリングされたコンテンツのためのデータ構造を更新する要求を提供することによって、前記オブジェクト情報を提供するように、実行可能である、請求項1に記載のコンピューティングデバイス。
  8. 前記オブジェクトの前記レンダリングは、カラーバッファを含むビデオデータを含む、請求項1に記載のコンピューティングデバイス。
  9. 前記ビデオデータは、奥行きの表現を更に含む、請求項8に記載のコンピューティングデバイス。
  10. 前記命令は、頭の姿勢および/または眼の注視方向の変化を示す第2のセンサデータを受信することによって、および/または前記オブジェクトを操作するユーザ入力を受信することによって、前記オブジェクトになされた前記操作を受信するように、更に実行可能である、請求項1に記載のコンピューティングデバイス。
  11. コンピューティングデバイスで行われる方法であって、
    レンダリングおよび表示するデジタルコンテンツを出力するアプリケーションを実行することと、
    前記アプリケーションの実行中に、
    リモートにレンダリングされるべき前記デジタルコンテンツの第1のオブジェクトを識別すること、及びローカルにレンダリングされるべき前記デジタルコンテンツの第2のオブジェクトも識別することと、
    リモートコンピューティングシステムによってレンダリングされるべき前記第1のオブジェクトに関するオブジェクト情報を前記リモートコンピューティングシステムに提供することと、
    前記第1のオブジェクトのレンダリングを前記リモートコンピューティングシステムから受信することと、
    前記第2のオブジェクトをローカルにレンダリングして前記第2のオブジェクトのレンダリングを生成することと、
    合成フレームとして表示する前記第1のオブジェクトの前記レンダリングと前記第2のオブジェクトの前記レンダリングとを合成することと、を含む、
    方法。
  12. 前記第1のオブジェクトの前記レンダリングは、第1のカラーバッファと、第1の奥行きバッファとを含み、当該方法は、前記第1のオブジェクトの前記レンダリングと前記第2のオブジェクトの前記レンダリングとを合成する前に、少なくとも前記第1のカラーバッファの再投影を行うことを更に含む、請求項11に記載の方法。
  13. 前記第1のオブジェクトの前記レンダリングと前記第2のオブジェクトの前記レンダリングとを合成した後に、再投影を行うことを更に含む、請求項11に記載の方法。
  14. 前記再投影を行うことは、ユーザの頭の姿勢に基づいて前記再投影を行うことを含む、請求項12に記載の方法。
  15. 前記第1のオブジェクトの前記レンダリングは、第1の奥行きデータを含み、前記第2のオブジェクトの前記レンダリングは、第2の奥行きデータを含み、当該方法は、
    前記第1の奥行きデータおよび前記第2の奥行きデータに対して奥行き試験を行うことと、
    前記奥行き試験に基づいて前記第1のオブジェクトの前記レンダリングと前記第2のオブジェクトの前記レンダリングとを合成することとを含む、
    請求項11に記載の方法。
JP2021559786A 2019-04-09 2020-03-09 ハイブリッドレンダリング Pending JP2022528432A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/379,693 US11170579B2 (en) 2019-04-09 2019-04-09 Hybrid rendering
US16/379,693 2019-04-09
PCT/US2020/021616 WO2020209962A1 (en) 2019-04-09 2020-03-09 Hybrid rendering

Publications (2)

Publication Number Publication Date
JP2022528432A true JP2022528432A (ja) 2022-06-10
JPWO2020209962A5 JPWO2020209962A5 (ja) 2023-02-06

Family

ID=70190110

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021559786A Pending JP2022528432A (ja) 2019-04-09 2020-03-09 ハイブリッドレンダリング

Country Status (13)

Country Link
US (1) US11170579B2 (ja)
EP (1) EP3953796B1 (ja)
JP (1) JP2022528432A (ja)
KR (1) KR20210151114A (ja)
CN (1) CN113661471B (ja)
AU (1) AU2020271774A1 (ja)
BR (1) BR112021020031A2 (ja)
CA (1) CA3132825A1 (ja)
IL (1) IL287022A (ja)
MX (1) MX2021012316A (ja)
SG (1) SG11202109431SA (ja)
WO (1) WO2020209962A1 (ja)
ZA (1) ZA202106433B (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321927B1 (en) * 2019-09-23 2022-05-03 Apple Inc. Temporal segmentation
US11189100B2 (en) * 2019-11-25 2021-11-30 Verizon Patent and Acessing Inc. Systems and methods for optimizing extended reality experiences
US11308698B2 (en) * 2019-12-05 2022-04-19 Facebook Technologies, Llc. Using deep learning to determine gaze
FR3117632A1 (fr) * 2020-12-14 2022-06-17 Orange Procédés et dispositifs d’immersion d’un utilisateur dans une scène immersive et de traitement d’objets 3D.
US11651544B2 (en) * 2021-04-30 2023-05-16 Varjo Technologies Oy Systems and methods employing multiple graphics processing units for producing images
WO2023280623A1 (en) * 2021-07-09 2023-01-12 Koninklijke Kpn N.V. Augmenting video or external environment with 3d graphics
KR102481613B1 (ko) * 2022-02-11 2022-12-27 주식회사 유룸 편집 기능을 갖는 3d 웹사이트 제작 플랫폼 제공 시스템, 방법 및 프로그램
KR102537403B1 (ko) * 2022-02-11 2023-05-26 주식회사 유룸 3d 컨텐츠 배치 기능을 갖는 3d 웹사이트 제작 플랫폼 제공 시스템, 방법 및 프로그램
KR102605698B1 (ko) * 2022-02-11 2023-11-24 주식회사 유룸 이벤트 생성 기능을 갖는 3d 웹사이트 제작 플랫폼 제공 시스템, 방법 및 프로그램
US20240005602A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Pipeline delay reduction for coarse visibility compression
US20240094896A1 (en) * 2022-09-19 2024-03-21 Microsoft Technology Licensing, Llc Locally generating preliminary inking imagery
CN117173304A (zh) * 2023-06-05 2023-12-05 北京虹宇科技有限公司 三维内容多人协同方法、装置、系统及设备
CN117095100A (zh) * 2023-06-05 2023-11-21 北京虹宇科技有限公司 多任务系统中渲染三维内容的方法、装置及设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
EP2084671A4 (en) * 2006-10-02 2011-02-09 Aftercad Software Inc METHOD AND SYSTEM FOR DELIVERING AND INTERACTIVE DISPLAYS OF THREE-DIMENSIONAL GRAPHICS
JP2013118468A (ja) * 2011-12-02 2013-06-13 Sony Corp 画像処理装置および画像処理方法
WO2015141369A1 (ja) * 2014-03-20 2015-09-24 シャープ株式会社 照明装置及び表示装置
KR20170083091A (ko) 2014-11-13 2017-07-17 인튜어티브 서지컬 오퍼레이션즈 인코포레이티드 통합된 사용자 환경
US10146414B2 (en) * 2015-06-09 2018-12-04 Pearson Education, Inc. Augmented physical and virtual manipulatives
US10962780B2 (en) 2015-10-26 2021-03-30 Microsoft Technology Licensing, Llc Remote rendering for virtual images
WO2017164924A1 (en) 2016-03-21 2017-09-28 Siemens Product Lifecycle Management Software Inc. System for gpu based depth reprojection for accelerating depth buffer generation
US10129523B2 (en) * 2016-06-22 2018-11-13 Microsoft Technology Licensing, Llc Depth-aware reprojection
US9928660B1 (en) 2016-09-12 2018-03-27 Intel Corporation Hybrid rendering for a wearable display attached to a tethered computer
US10621773B2 (en) * 2016-12-30 2020-04-14 Google Llc Rendering content in a 3D environment
WO2018227100A1 (en) * 2017-06-09 2018-12-13 Sony Interactive Entertainment Inc. Optimized shadows and adaptive mesh skinning in a foveated rendering system
US10776992B2 (en) * 2017-07-05 2020-09-15 Qualcomm Incorporated Asynchronous time warp with depth data

Also Published As

Publication number Publication date
SG11202109431SA (en) 2021-09-29
IL287022A (en) 2021-12-01
BR112021020031A2 (pt) 2021-12-07
US11170579B2 (en) 2021-11-09
CN113661471A (zh) 2021-11-16
WO2020209962A1 (en) 2020-10-15
KR20210151114A (ko) 2021-12-13
CN113661471B (zh) 2023-11-24
MX2021012316A (es) 2021-11-12
EP3953796A1 (en) 2022-02-16
AU2020271774A1 (en) 2021-10-07
EP3953796B1 (en) 2024-04-24
CA3132825A1 (en) 2020-10-15
ZA202106433B (en) 2022-11-30
US20200327740A1 (en) 2020-10-15

Similar Documents

Publication Publication Date Title
US11170579B2 (en) Hybrid rendering
Wheeler et al. Virtual interaction and visualisation of 3D medical imaging data with VTK and Unity
US10986330B2 (en) Method and system for 360 degree head-mounted display monitoring between software program modules using video or image texture sharing
US6700586B1 (en) Low cost graphics with stitching processing hardware support for skeletal animation
CN110969685B (zh) 使用渲染图的可定制渲染管线
US10776997B2 (en) Rendering an image from computer graphics using two rendering computing devices
KR101145260B1 (ko) 3d 객체 모델에 텍스쳐를 매핑하는 방법 및 장치
US20100060652A1 (en) Graphics rendering system
JP2002236934A (ja) グラフィックシステムにおいて改良されたフォグ効果を提供するための方法および装置
KR20110105350A (ko) 가상 세계 씬의 이미지들을 제공하기 위한 방법 및 장치 그리고 이를 처리하기 위한 방법 및 장치
US11704853B2 (en) Techniques for feature-based neural rendering
KR20210030384A (ko) 3d 전환
CN111754381A (zh) 图形渲染方法、装置和计算机可读存储介质
KR20170040698A (ko) 그래픽스 파이프라인을 수행하는 방법 및 장치
WO2023151524A1 (zh) 图像显示方法、装置、电子设备及存储介质
US20140161173A1 (en) System and method for controlling video encoding using content information
CN116958344A (zh) 虚拟形象的动画生成方法、装置、计算机设备及存储介质
RU2810701C2 (ru) Гибридный рендеринг
KR101227155B1 (ko) 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법
JP7447266B2 (ja) ボリュメトリック画像データに関するビューの符号化及び復号
TW202141429A (zh) 使用陰影資訊進行渲染
US10872463B2 (en) Depth-compressed representation for 3D virtual scene
US11315329B1 (en) Scene reconstruction from sparse data
US20230177763A1 (en) Method for Adapting the Rendering of a Scene
CN117596377A (zh) 画面推流方法、装置、电子设备、存储介质及程序产品

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230127

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240305