JP2022535148A - グラフィック処理のためのアセット認識コンピューティングアーキテクチャ - Google Patents
グラフィック処理のためのアセット認識コンピューティングアーキテクチャ Download PDFInfo
- Publication number
- JP2022535148A JP2022535148A JP2022500022A JP2022500022A JP2022535148A JP 2022535148 A JP2022535148 A JP 2022535148A JP 2022500022 A JP2022500022 A JP 2022500022A JP 2022500022 A JP2022500022 A JP 2022500022A JP 2022535148 A JP2022535148 A JP 2022535148A
- Authority
- JP
- Japan
- Prior art keywords
- asset
- lod
- data
- gpu
- assets
- 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.)
- Granted
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/001—Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/391—Resolution modifying circuits, e.g. variable screen formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/36—Level of detail
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/04—Changes in size, position or resolution of an image
- G09G2340/0407—Resolution change, inclusive of the use of different resolutions for different screen areas
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2350/00—Solving problems of bandwidth in display systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/08—Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
Description
このようにして、ビデオフレームのレンダリングに使用される1つ以上の描画呼び出しのアセットのロードは、対応する描画呼び出しにアセットがバインドされる時に(例えばバインド時に)、及びゲームを実行する中央処理装置(CPU)がグラフィックスアプリケーションプログラミングインターフェース(API)を使用して、グラフィックスパイプラインを実施するグラフィック処理装置(GPU)により実行される描画呼び出しの1つ以上のコマンドバッファを構築する時に、トリガーされる。
コンピューティングアーキテクチャはアセットを認識するため、GPUは、ビデオフレームの1つ以上の描画呼び出しに必要な最小限のアセットを使用して、必要なアセットが完全にロードされるのを待たずに、実行可能である。アセットストアコントローラは、アセットストア内のアセットの管理と、アセット認識コンピューティングアーキテクチャ全体におけるアセットの配信とを、制御するように構成される。
一実施形態では、アセットストアコントローラは、他のオンチップユニットからの支援を受けてCPU上で実行されるソフトウェアであり得る。あるいは、アセットストアコントローラは、追加のCPUなどのコプロセッサを含むオンチップコンプレックスであり得る。CPU及びGPUの両者は、アセットストアコントローラとの統合及び/またはインターフェースのために、変更され得る。
アセットストアは、ゲームのテクスチャ、モデル、及び他のデータを含む。アセットストアは、システムメモリよりもはるかに大きい。アセットストアは、アセット識別子(アセットID)を使用して識別される及び/またはタグ付けされたアセットを含むアセットストアのコンテンツ、並びにコンテンツ及び/またはアセットの詳細(例えば対応するアセットの詳細度)を認識する。
アセットストアは、例えば、アセットがローカルで生成された時、またはアセットがラック内の大容量ストレージからアクセスされた時、またはアセットがデータセンタ内からアクセスされた時、またはアセットがネットワーク経由で配信された時など、アセットを認識した様々な方法で更新される。従来、CPU上で実行されるゲームは、GPU APIを使用して、1つ以上のアセット(例えばテクスチャ、詳細度-LOD、モデルなど)を描画呼び出しにバインドすることにより、描画呼び出しがレンダリングするオブジェクトにアセットが使用されることを可能にする。
アセット認識コンピューティングアーキテクチャでは、GPU APIは、CPU上で実行されるゲームから追加情報を受信する。例えば、描画呼び出しごとに、追加アセット認識データ(Asset Aware Data:AAD)は、描画呼び出しに使用されるアセットのアセットIDと、グラフィックスパイプラインで描画呼び出しが実行され得る前にアセットのロードされるべき最小限LODと、描画呼び出しが使用する他のアセットのロードと比較した場合のそのアセットのロードの優先度と、を含む。
GPU APIは、対応する描画呼び出しのコマンドバッファに、AADの少なくとも一部(例えばアセットID、最小限LODなど)を配置し、AADの全てではなくとも少なくとも一部をアセットストアコントローラに渡すように構成される。さらに、GPU APIはまた、例えばコマンドをコマンドバッファに配置することにより、レンダリングの各ビデオフレームが完了した時をアセットストアコントローラに通知するように使用され得る。
よって、アセット認識アーキテクチャでは、アセットストアコントローラは、ビデオフレームに必要なアセットの少なくとも全てなどのAADストリームを優先度付け情報と共に、及びこれらのアセットなどを使用したレンダリングの終了の通知を、受信する。アセットストアコントローラは、AADを受信すると、アセットストアからシステムメモリにアセットのロードを開始する。ロードプロセスは、ロード優先度を使用する。例えば、全てのテクスチャ及び/またはモデル及び/または他のアセットの「最小限LOD」がロード可能であり、その後、アセットのロード優先度情報に基づいて、より高いLODのロードが実行され得る。
ロードが完了すると、GPUは、アセットのロードが完了したこと、またはアセットがロード中であり、どの程度ロードされたか(例えばアセットのどのLODのロードが完了したか)が通知される(例えばアセットIDを使用して)。いくつかの実施形態では、レンダリング(例えばグラフィックスパイプラインにおける対応する描画呼び出しの実行)が開始され、その描画呼び出しに必要なアセットのロードがまだ完了していない場合には、アセットの「緊急ロード」が存在し得る。
他の実施形態では、コマンドバッファ内の条件付きコマンドを使用して、LODデータのロードステータスを照会し、コマンドフローを変更することができ、例えば、最小限LODデータのロードが完了していない場合は描画呼び出しが完全にスキップされる(すなわちGPUのストールが回避される)、またはプロキシアセットを使用してレンダリングが行われる、またはロードされたLODに基づいてカスタマイズされたレンダリングが可能となる。さらに他の実施形態では、GPUは、AADを使用して、これらの同じ決定を行うことができ、例えば最小限LODデータのロードが完了していない場合は、描画呼び出しが完全にスキップされる(すなわちGPUのストールが回避される)。アセットストアコントローラはまた、フレームのレンダリング中にアセットが使用されなかった場合など、不要なメモリを解放するように構成されるため、そのアセットを格納しているメモリスペースは解放され得る。GPUは、アセットを認識するように変更され得る。例えば、オブジェクトがレンダリングされる時、GPUは、アセットの必要なLODのロードが完了したか否かを認識する。GPUは、必要なLODの「緊急ロード」要求を発行し、必要なLODがロードされるまでストールし得る。さらに、GPUは、特定のアセットに関して、メモリにロード済みの最も高いLODを認識し、その最も高いLODまでを使用するが、その最も高いLODを超えるLODは使用せずに、対応するビデオフレームをレンダリングする。システムメモリのロード及び解放の一環として、ページテーブル、CPUキャッシュ、及びGPUキャッシュの操作が必要になり得、従って、アセットストアコントローラ、CPU、及びGPUは、これらの動作を加速するように構成され得る。このように、CPU上で実行されるゲームの観点からすると、対応する描画呼び出しに必要なアセットは、使用される時に「魔法のように」システムメモリに現れる。すなわち、ゲームは、GPU APIを使用して描画呼び出しを行うだけでよく、必要なアセット(例えば最小限LOD)は、グラフィックスパイプラインで使用される準備ができている。
コンピューティングシステムは、アプリケーションの複数のアセットを格納するように構成されたアセットストアを含み、これは、描画呼び出しが使用するアセットの1つ以上の詳細度を含む。
コンピューティングシステムは、描画呼び出しが使用する1つ以上の詳細度データを格納するように構成されたシステムメモリを含み、アセットストアからのLODデータのロードは、バインド時にCPUによりトリガーされ、LODデータのシステムメモリへのロードは、AADをコマンドバッファに書き込んでいる間に開始される。コンピューティングシステムは、システムメモリに書き込まれたLODデータを使用してフレームの描画呼び出しのコマンドを実行するように構成されたグラフィック処理装置を含み、GPUは、AADに基づいて少なくとも最小限のLODデータを使用する。
非一時的コンピュータ可読媒体は、バインド時に、描画呼び出しの1つ以上のコマンドをコマンドバッファに書き込むためのプログラム命令を含む。非一時的コンピュータ可読媒体は、バインド時に、GPU APIを使用して描画呼び出しのアセット認識データ(AAD)をコマンドバッファへ書き込み、バインド時に、アセットストアからコンピューティングシステムが使用するシステムメモリへ1つ以上の詳細度(LOD)データのロードを開始するためのプログラム命令を含む。非一時的コンピュータ可読媒体は、GPUにより、システムメモリへ書き込まれたLODデータを使用して、フレームの描画呼び出しを実行するためのプログラム命令を含み、GPUは、AADに基づいて少なくとも最小限のLODデータを使用する。
例えば、アセットは、ディスプレイのピクセルを通して表示されるビデオフレームを生成するために、グラフィックスパイプラインのシェーダプログラムを介して処理されるテクスチャ及び/またはモデルであり得る。例えば、森のシーンでは、木のテクスチャが入力として受信でき、グラフィックスパイプラインを介して処理される。処理のために、テクスチャ及び/またはモデルの大量のLODデータをシステムメモリにロードする時間が十分にない場合、GPUのストールを回避するために、本開示のGPU実施形態は、アセット認識を提供し、これにより、GPUは、識別されたアセットのロードを追跡し、アセットの少なくとも最小限のLODを使用してシーンを生成するように構成される。
最初にシーンは低解像度でレンダリングされ得るが、後続のフレームでは、より完全なLODデータを使用してシーンはレンダリングされ得る。このようにして、仮想化されたゲーム世界の大きく複雑なシーンが、グラフィックスパイプラインを介して効率的に生成され、同時に、アセットのロードを待機してGPUをストールする可能性が低減され得る。
これは、特に、ゲームがあるシーンから別のシーンへ2つのビデオフレーム間を遷移する、ゲーム内のシーンカット(例えば映画的流れにおけるシーン変更、または一連のメニューの後のインタラクティブなゲームプレイの開始)に遭遇した場合に役に立つ。LODデータ全体がロードされるのを待機して、新たなシーンが生成される代わりに、グラフィックスパイプラインを介した処理に必要なアセットごとに最小限のLODデータをロードして、対応するビデオフレームが生成され得る。例えば、複雑なシーンをレンダリングしている間でもGPUのストールを減らすことにより、ゲームをプレイするユーザの臨場感体験は、大幅に向上する。
ゲームを実施するゲームロジック115(例えば実行可能コード)は、クライアントデバイス110に格納され、ゲームを実行するために使用される。例示として、ゲームロジック115は、ポータブルメディア(例えば光学式メディア)を介して、またはネットワークを介して、クライアントデバイス110に配信され得る(例えばインターネットを介してゲームプロバイダからダウンロードされ得る)。
さらに、ゲームアプリケーションのサービスには、メモリ管理、マルチスレッド管理、サービス品質(QoS)、帯域幅テスト、ソーシャルネットワーキング、ソーシャルネットワークの友人管理、友人のソーシャルネットワークとの通信、通信チャネル、テキスト送信、インスタントメッセージング、チャットサポートなどが含まれる。
具体的には、クライアントデバイス110は、グラフィックスパイプラインを介してビデオフレームを生成する中央処理装置及びグラフィック処理装置などのアセット認識コンポーネントを含むコンピューティングシステムアーキテクチャとして構成される。このように、コンピューティングシステムアーキテクチャは、対応するビデオフレームを生成する時、グラフィックスパイプライン(例えば描画呼び出しの実行)で使用されるアセットの少なくとも最小限のLODデータを識別し、追跡し、使用するように構成される。
例えば、レンダリング画像は、ゲームプレイの駆動に使用される入力コマンドを介するなどして、対応ユーザのゲームプレイを実施するようにクライアントデバイス110のローカルで実行されるゲームのインスタンスに、関連付けられ得る。クライアントデバイス110のいくつかの例には、パーソナルコンピュータ(PC)、ゲームコンソール、ホームシアターデバイス、汎用コンピュータ、モバイルコンピューティングデバイス、タブレット、電話、または、ゲームのインスタンスを実行できる任意の他の種類のコンピューティングデバイスが挙げられる。
すなわち、クライアントデバイス110のゲームタイトル処理エンジン111は、ゲームアプリケーションに関連するゲーム及びサービスを実行するための基本的なプロセッサベース機能を含む。ゲームを実施するゲームロジック115(例えば実行可能コード)は、クライアントデバイス110に格納され、ゲームを実行するために使用される。
前述のように、クライアントデバイス110は、グラフィックスパイプラインを介してビデオフレームを生成する中央処理装置及びグラフィック処理装置などのアセット認識コンポーネントを含む。このように、CPU及びGPUを含むコンピューティングシステムアーキテクチャは、対応するビデオフレームを生成する時、グラフィックスパイプライン(例えば描画呼び出しの実行)で使用されるアセットの少なくとも最小限のLODデータを識別し、追跡し、使用するように構成される。
例えば、マルチプレーヤモードで、ゲームがローカルで実行されている間、クラウドゲームネットワーク190は、ネットワーク150経由で各ローカルコンピューティングデバイスから情報(例えばゲーム状態データ)を同時に受信し、その情報をローカルコンピューティングデバイスのうちの1つ以上にわたり適宜配信し、これにより、各ユーザは、マルチプレーヤゲームの仮想化されたゲーム世界で他のユーザと(例えばゲーム内の対応するキャラクタを通して)インタラクトすることができる。
このように、クラウドゲームネットワーク190は、ネットワーク150経由で情報を渡すことにより、マルチプレーヤゲーム環境内のユーザそれぞれのゲームプレイを調和させ、合併させる。ネットワーク150は、1つ以上の通信技術を含み得る。いくつかの実施形態では、ネットワーク150は、高度な無線通信システムを有する第5世代(5G)ネットワーク技術を含み得る。
いくつかの実施形態では、クラウドゲームネットワークは、ホストマシンのハイパーバイザ上で実行される複数の仮想マシン(VM)を含むクラウドゲームネットワーク190であり得、1つ以上の仮想マシンは、ホストのハイパーバイザにより使用可能なハードウェアリソースを利用してゲームプロセッサモジュールを実行するように構成される。ネットワーク150は、1つ以上の通信技術を含み得る。いくつかの実施形態では、ネットワーク150は、高度な無線通信システムを有する第5世代(5G)ネットワーク技術を含み得る。
例えば、ゲームサーバ160は、ユーザのゲームのインスタンスをインスタンス化するゲームプロセッサをサポートする仮想マシンを管理できる。よって、複数の仮想マシンに関連付けられたゲームサーバ160の複数のゲームプロセッサは、複数のユーザのゲームプレイに関連付けられた1つ以上のゲームの複数のインスタンスを実行するように構成される。
このように、バックエンドサーバサポートは、複数の対応ユーザに、複数のゲームアプリケーションのゲームプレイのメディア(例えばビデオ、オーディオなど)のストリーミングを提供する。すなわち、ゲームサーバ160は、対応するクライアントデバイス110’に、ネットワーク150を介してデータ(例えば対応するゲームプレイのレンダリング画像及び/またはフレーム)をストリーミングし返すように構成される。このように、計算が複雑なゲームアプリケーションは、クライアントデバイス110’により受信及び転送されるコントローラ入力に応じて、バックエンドサーバで実行され得る。各サーバは、画像及び/またはフレームをレンダリングすることができ、次にこれらは符号化され(例えば圧縮され)、対応するクライアントデバイスへストリーミングされ、表示される。
例えば、ユーザは、クライアントデバイス110’を介して、ゲームサーバ160のゲームプロセッサ上で実行されるゲームのインスタンスとインタラクトできる。より具体的には、ゲームのインスタンスは、ゲームタイトル処理エンジン111’により実行される。ゲームアプリケーションを実施する対応するゲームロジック(例えば実行可能コード)115’は、データストア(図示せず)を介して格納されアクセス可能であり、ゲームを実行するために使用される。ゲームタイトル処理エンジン111’は、複数のゲームロジックを使用して、複数のゲームをサポートすることができ、ゲームのそれぞれはユーザにより選択可能である。
例えば、クラウドベースサービスを介して、レンダリング画像は、ゲームサーバ160のゲームタイトル処理エンジン111’上で実行される対応するゲームのインスタンスにより、配信され得る。すなわち、クライアントデバイス110’は、レンダリング画像を受信し、レンダリング画像をディスプレイ11に表示するように構成される。一実施形態では、ディスプレイ11には、HMD(例えばVRコンテンツを表示する)が含まれる。いくつかの実施形態では、レンダリング画像は、クラウドベースサービスから直接、またはクライアントデバイス110’(例えばPlayStation(登録商標)Remote Play)を介して、無線または有線で、スマートホンまたはタブレットにストリーミングされ得る。
具体的には、ゲームサーバ160及び/またはゲームタイトル処理エンジン111’は、グラフィックスパイプラインを介してビデオフレームを生成する中央処理装置及びグラフィック処理装置などのアセット認識コンポーネントを含むコンピューティングシステムアーキテクチャとして構成される。このように、コンピューティングシステムアーキテクチャは、対応するビデオフレームを生成する時、グラフィックスパイプライン(例えば描画呼び出しの実行)で使用されるアセットの少なくとも最小限のLODデータを識別し、追跡し、使用するように構成される。
処理エンティティは、クラウドゲームネットワーク190の1つ以上のサーバ(計算ノード)上でサーバ及びその基礎となるハードウェアを利用及び/または依存でき、サーバは、1つ以上のラックに配置され得る。様々な処理エンティティに対するこれらの機能の実行の調整、割り当て、及び管理は、分散同期化層により実行される。
このように、これらの機能の実行は、分散同期化層により制御され、プレーヤによるコントローラ入力に応答して、ゲームアプリケーションのメディア(例えばビデオフレーム、オーディオなど)の生成が可能となる。分散同期化層は、分散された処理エンティティにわたりこれらの機能を効率的に実行することができ(例えば負荷分散を通じて)、これにより、重要なゲームエンジンコンポーネント/機能は分散され、再び集結され、より効率的な処理が可能となる。
CPU702及びGPU716によるアセット認識は、グラフィックスパイプラインで使用されるアセットの識別及び追跡を提供し、これにより、対応するビデオフレームを生成する時のグラフィックスパイプラインを介した処理に、最小限のアセット(例えば最小限の詳細度-LOD)を使用することができる。コンピューティングアーキテクチャ200は、図1A~1Cのクライアントデバイス110及び/またはクラウドゲームネットワーク190(例えばゲームサーバ160及び/またはゲームタイトル処理エンジン111と111’)で実施され得る。
その結果、ゲームは、ゲームのゲームプレイ中に使用されるシーン(例えば森のシーン、海のシーンなど)を生成するために、ビデオフレームごとにますます多くの描画呼び出しをプッシュしている。CPU702上で実行されるゲームコードは、アセットが必要になる時(例えばビデオフレームの1つ以上の描画呼び出しにより必要になる時)を予測し、GPU716がグラフィックスパイプラインを介してシーンをレンダリングするのに適切なタイミングでアセットが利用可能となるように、実際に使用される前に、システムメモリ220へのアセットのロードを調整する。
描画呼び出しのAADの少なくとも一部(例えばアセットID)は、GPU API250を使用して、CPU702上で実行されるゲームから、描画呼び出しのコマンドを保持する対応コマンドバッファへ配信される。さらに、描画呼び出しのAADの(全てではなくとも)少なくとも一部は、描画呼び出しのためにグラフィックスパイプラインで使用されるアセットのロードを調整するために、GPU API250を使用して、CPU702上で実行されるゲームから、アセットストアコントローラ230へ配信され得る。いくつかの実施形態では、AADの全てが、アセットストアコントローラ230へ配信される。
頂点シェーダまたは他のシェーダプログラムは、ポリゴンに対して、ライティング、シェーディング、シャドウイング、及び他の動作を実行できる。頂点シェーダまたは他のシェーダプログラムは、レンダリングされるシーン内で対応する視点から見えるオブジェクトを特定するために、深度またはZバッファリングを実行できる。三次元世界内のオブジェクトを、視点により画定される二次元平面に投影するために、ラスター化が実行される。オブジェクトに関して、ピクセルサイズのフラグメントが生成され、画像を表示する時に対応するピクセルの色に、1つ以上のフラグメントが寄与できる。フラグメントをマージ及び/またはブレンドして、それぞれのピクセルの結合色が特定され、これは、フレームバッファに格納されて表示される。
前述のように、ビデオフレームは、1つ以上の描画呼び出しの実行を必要とでき、各描画呼び出しは、1つ以上のアセット(例えばテクスチャ、モデルなど)を必要とし得る。これらのアセットは、システムメモリ220にロードされた場合にのみ、GPU716により使用され得るが、これらのアセットは大きすぎて、全て同時にシステムメモリ220に収容できないため、システムメモリ220の外部に、例えばハードドライブまたはソリッドステートデバイス(SSD)に、格納される。
CPU702によりゲームが実行されている間に、CPU702上で実行されるゲームコードは、アセットが必要になる時(例えばビデオフレームの1つ以上の描画呼び出しにより必要になる時)を予測し、GPU716がグラフィックスパイプラインを介してシーンをレンダリングするのに適切なタイミングでアセットが利用可能となるように、実際に使用される前に、GPU APIを使用してシステムメモリ220へアセットをロードすることを調整する。シーンがより複雑となり、より大きいテクスチャデータが必要になると、必要なアセットを完全にロードする時間が長くなり得る。よって、グラフィックスパイプラインは、アセットのロードが完了する前に、アセットを使用することを試み得る。
例えば、グラフィックスパイプラインにより対応する描画呼び出しが実行される前に、ビデオフレームのテクスチャまたはモデルのアセットデータが完全にロードされていない場合がある。これは、ゲームがあるシーンから別のシーンへ2つのビデオフレーム間を遷移する、ゲーム内のシーンカット(例えば映画的流れにおけるシーン変更、または一連のメニューの後のインタラクティブなゲームプレイの開始)がある場合に、特に当てはまる。従来のコンピューティングアーキテクチャでは、グラフィックスパイプラインは、実行を続行する前に、アセットが完全にロードされるのを待機するためにストールする。
他方、本実施形態のアセット認識コンピューティングアーキテクチャ200は、アセット(例えばテクスチャ及び/またはモデル)が完全にロードされていなくても、グラフィックスパイプラインの実行を開始するように構成される。具体的には、(CPUにより実行される際)ゲームが実行すべきことは、描画呼び出しのためにGPU API250を呼び出すことだけである(本来常に実行しているように)。アセット認識コンピューティングアーキテクチャ200は使用可能なアセットをタイムリーにロードすることができるため、ゲーム開発者は、特に複雑なシーンをレンダリングする時、またはシーンカットでシーンを切り替える時に失速または機能低下を生じ得る、より従来型のコンピューティングアーキテクチャ上で実行するために、ゲームのシーンを調整すること(例えばシーンの複雑さを軽減すること)に集中する必要はない。
例えば、テクスチャマップまたはミップマップは、オブジェクトまたはポリゴンの表面にマッピングされた画像であり得る。テクスチャマッピングは、レンダリングする必要のあるオブジェクトのポリゴンの数を減らすために使用され得る。さらに、モデルアセットは、オブジェクトを表し得る。アセットは、そのオブジェクトを表すための様々な解像度の1つ以上のモデル(例えばLOD)を含み得る。このように、グラフィックスパイプラインを介したレンダリングのために、そのアセットの好適な解像度を有する必要モデルが選択され得る。
例えば、各アセットのAADは、そのアセットのLOD集合を記述する情報を含み得る。この代表的な情報は、アセットストア内の対応するアセットに関連付けて格納され得る。AADデータは、例えば、アセットがCPU702またはGPU716によりローカルで生成された時、またはアセットがラック内の大容量ストレージからアクセスされた時、またはアセットがデータセンタ内からアクセスされた時、またはアセットがネットワーク経由でアクセスされた時など、アセットを認識した様々な方法で更新され得る。すなわち、アセットストア210は、ラックから、またはデータセンタ内の他の場所から、またはネットワーク経由で、またはゲームから、アセットを認識した方式で更新され得る。
前述のように、対応するアセットのアセット認識データは、必要なアセット(例えばテクスチャ、モデルなど)のアセットID261のうちの1つ以上を含み得、また、アセットストア210及び/またはシステムメモリ220内のアセットID261へのポインタ262と、必要なアセットID(及び対応するアセット)の最小限LOD263と、アセットIDのロード状態264と、アセットIDそれぞれのロード優先度265(例えば対応する描画呼び出しまたは他の描画呼び出しが必要とする他のアセットに対するアセットのロード優先度)と含み得る。
例えば、カメラに近いオブジェクトで使用されるアセットの優先度は、高くあり得る、または最も高くあり得る。後続のビデオフレームは、同様に構成されたコマンドバッファを使用してレンダリングされる。例えば、コマンドバッファ240bは、ビデオフレーム-F1(例えばフレーム-1)を生成するために使用され、・・・、コマンドバッファ240nは、ビデオフレーム-Fn(例えばフレーム-n)を生成するために使用される。
1つ以上のアセットがバインドされた時に、描画呼び出しの1つ以上のアセットのLODデータのロードを同時にトリガーすることにより、少なくとも最小限LODをロードして、GPU716によるグラフィックスパイプラインでの描画呼び出しをタイムリーに実行することができる。さらに、描画呼び出しに必要なアセットの少なくとも最小限LODをロードするバインド時トリガーは、GPU716が必要なアセットのロードを待機するGPUストールの発生を減少させる。LODデータをロードする要求がバインド時に発生する必要はなく、他の実施形態では、AADは描画呼び出しコマンドと共にコマンドバッファに書き込まれ、別個に、かつ別の時に、アセットのロードを要求するために、AADはアセットストアコントローラ230に送信される。
一実施形態では、1つ以上のアセットのロードが完了すると、対応するアセットがロードされたこと、及びそのアセットがロードされた程度(例えば対応するLODのロードステータス)が、GPU716に通知される(アセットIDを使用して)。他の実施形態では、例えばGPU716により描画呼び出しコマンドが実行される時に、GPU716は、ロードステータスにアクセスするように構成される。
AADは、特定のアセットの最小限LOD及び場合によってはLOD集合、並びにシステムメモリ220へのアセットのロード状態に関連する情報を含むことから、GPU716は、所与のアセットの少なくとも最小限のLODを使用して、描画呼び出しの実行を開始するように構成される。より具体的には、GPU716は、AAD(例えばロード状態)に基づいて、対応する描画呼び出しの特定のアセットでロード済みの最も高いLODを特定できる。よって、GPU716は、ロード済みの最も高いLODを使用して、それより高いLOD(例えばロードされていないLOD)は使用せずに、描画呼び出しを実行できる。
GPUは、最小限LODまたはプロキシアセットのロードが完了するまで、ストールし得る。緊急事態の判断は、描画呼び出しの実行前または実行中に行われ得る。例えば、アセットストアコントローラ230及び/またはGPU716は、前の描画呼び出しがグラフィックスパイプラインで実行されている間に、またはアセットの使用を含むビデオフレームの任意の描画呼び出しがGPU716により実行され終わる前に、判断を行い得る。最小限LODのロードが完了していない場合、アセットストアコントローラ230またはGPU716は、その時点で「緊急ロード」要求を発行し得る。
このように、そのビデオフレームのアセットを対象にできることで、これらのアセットを格納するメモリスペースが解放され得る。さらに、アセットストアコントローラは、システムメモリにロードされたアセットの使用状況を追跡するように構成される(例えばテクスチャが読み出された回数などを含むLODデータの使用状況が追跡される)。よって、ビデオフレームのレンダリングに使用されていないアセットを対象にできることで、これらのアセットを格納するメモリスペースが解放され得る。
アセットは、その全体(全てのLOD)が解放されてもよく、またはLODの部分集合のみが解放されてもよい。これらの決定を行うことを支援するために、いくつかの実施形態では、GPU716は、アセットの使用状況を追跡するように構成され、アセットの使用状況には、例えば、テクスチャの場合は、使用された最小限LOD及び最大限LOD、並びに全体アクセス回数またはLODごとのアクセス回数、描画呼び出しの場合は、描画呼び出しの呼び出しと実行またはそれらの欠如(いくつかの呼び出しは条件付きで実行制御され得る)の結果として書き込まれたピクセルの数、モデルの場合は、使用されたLOD及び生成された頂点の数が挙げられる。
いくつかの実施形態では、部分的にロードされたアセットのロードされたLODの使用状況を使用して、これらのアセットの最も高いLODのロードが優先され得、例えば、2つのアセットのLOD0のロードがまだ完了しておらず、1つのアセットのLOD1はたくさん使用されることが見込まれ得るが、もう1つのアセットのLOD1はそうではない場合、たくさんLOD1が使用されるアセットのLOD0が優先されなくてはならない。
CPU702の動作はよく知られており、本明細書では概略的に説明される。一般的に、CPU702は、フレームからフレームへのオブジェクトアニメーションを実施し、これは、手動での動画化、人間の役者からのキャプチャ、及び/またはオブジェクトにかかる力及び/またはオブジェクトが加える力(例えば重力などの外力、及び動きを誘発するオブジェクトの内力)に応じたシミュレーションにより、行われ得る。例えば、CPU702は、3D仮想環境において、オブジェクトの物理シミュレーション、及び/または他の機能を実行する。次に、CPU702は、GPU716により実行されるポリゴンの頂点の描画呼び出しを発行する。
視錘台(ビュー・フラスタム: view frustum)の外側のプリミティブを識別するまたは無視するためのクリッピング、及びシーン内のオブジェクトをディスプレイ上に投影する(例えばオブジェクトをユーザの視点に関連付けられた画像平面に投影する)ためのラスター化など、さらなる動作が実行され得る。単純なレベルでは、ラスター化は、各プリミティブを調べて、そのプリミティブの影響を受けるピクセルを特定することを含む。プリミティブのフラグメンテーションを使用して、プリミティブはピクセルサイズのフラグメントに分割され得、各フラグメントは、ディスプレイ及び/またはレンダリングの視点に関連付けられた基準面におけるピクセルに対応する。1つ以上のプリミティブの1つ以上のフラグメントは、ディスプレイ上にフレームをレンダリングする時に、ピクセルの色に寄与し得る。
例えば、所与のピクセルに関して、3D仮想環境内の全てのプリミティブのフラグメントは、表示のためにピクセルに結合される。すなわち、対応するピクセルの全テクスチャ及びシェーディング情報が組み合されて、ピクセルの最終的な色値が出力される。これらの色値は、フレームバッファに格納され得、フレームごとにシーンの対応する画像を表示する時にスキャンされ、対応するピクセルに取り込まれる。
また、パイプラインシーケンス393は、第3及び第4のフレーム期間にフレームF2をレンダリングし、時間t-4と示された第5のフレーム期間にフレームF2をスキャンアウトする。同様に、パイプラインシーケンス394は、第4及び第5のフレーム期間にフレームF3をレンダリングし、時間t-5と示された第6のフレーム期間にフレームF3をスキャンアウトする。また、パイプラインシーケンス395は、第5及び第6のフレーム期間にフレームF4をレンダリングし、時間t-6と示された第7のフレーム期間にフレームF4をスキャンアウトする。
バインド時401に、CPU702は、ビデオフレームの一部をレンダリングするために1つ以上の描画呼び出しに必要なアセットをバインドする。より具体的には、バインド時401に、CPU702は、各描画呼び出しのコマンド241(塗りつぶしのないボックス)を、対応するコマンドバッファ(240)に書き込む。示されるように、動作415にて、CPU702は、バインド時401から、GPU API250を使用して、描画呼び出しのコマンド241及びAAD260(塗りつぶされたボックス)を、コマンドバッファ240に書き込む。コマンド241及びAAD260は、互いに規則的な方法で(例えば順番に)、または互いに不規則な方法(例えばインターリーブ方式)で、書き込まれ得る。
システムメモリ220へのLODデータ290のロードは、CPU702がビデオフレームの生成に必要な全てのコマンドをコマンドバッファ240に書き込むのを完了することを待たずに開始されるが、アセットストアコントローラ230が、より優先度の高いLODデータなどの他のロード動作を実行するので忙しい場合、アセット417のLODデータがシステムメモリ220にロードされる前に、遅延が発生し得る。システムメモリの割り当て解除411は、アセット417のLODデータ290をロードする前に実行される必要があり得る。
ロードステータスの判断及び緊急ロードの要求は、描画時402に、または前の描画呼び出しの実行中に、または動作420に示されるフレーム1のGPU処理の開始時に、または別の時に、行われ得る。前述のように、アセットストアコントローラは、GPUに、対応する描画呼び出しのアセットのロードステータスを通知し得る、またはGPUは、アセットストアコントローラからロードステータスを照会及び/またはフェッチするように構成され得る。
いくつかの実施形態では、コマンドバッファ内の条件付きコマンドを使用して、アセット417のLODデータのロードステータスを照会し、コマンドフローを変更することができ、例えば、最小限LODのロードが完了していない場合は描画呼び出しが完全にスキップされる(すなわちGPUのストールが回避される)、またはプロキシアセットを使用してレンダリングが行われる、またはロードされたLODに基づいてカスタマイズされたレンダリングが可能となる。さらに他の実施形態では、GPUは、AADを使用して、これらの同じ決定を行うことができ、例えば最小限LODデータのロードが完了していない場合は、描画呼び出しが完全にスキップされる(すなわちGPUのストールが回避される)。
具体的には、対応するアセットのLODデータが示される。LODデータには、前述のように、様々な解像度のLOD0、LOD1、LOD2、及びLOD3が含まれ得、慣習に従って、LOD0は詳細度が最も高く、LOD1、2、及び3は徐々に詳細度が低くなる。例えば、テクスチャアセットの場合、LODデータは、テクスチャのミップマップチェーンであり得る。アセットの場合、最小限LODはLOD2と定義され、グラフィックスパイプラインで実行される描画呼び出しの間に、最小限LODがアセットに使用され得、すなわち、描画呼び出しは、より高いLOD1または0なしで続行され得るが、システムメモリ内のLOD3及び2なしでは実行することができない。
すなわち、(例えば描画時402に)まだロードされ終わっていないLODを、GPUが描画呼び出しを実行する時に使用を試みないことを確実にするために、LODクランプが使用される。さらに、描画呼び出しの実行全体にわたり同じLODデータ集合が使用されることを確実にするために、LODクランプが使用され、よって、描画時402の後(例えば描画呼び出しの実行中)にシステムメモリにロードするために到着するLODデータは、描画呼び出しの実行には使用されない。
例えば、アセットの最初の複数のLODデータは、システムメモリにロードされ始め、アセットは描画呼び出しを処理する時に使用され、最初の複数のLODデータは最小限LODを含む。具体的には、アセットストアコントローラは、描画呼び出しに必要な1つ以上のアセットのAADを含む情報のストリームを受信するように構成される。
AADは、ビデオフレームの描画に必要なアセットの識別子と、アセットのロード優先度と、これらのアセットを使用するビデオフレームのレンダリング終了の通知とを含む。LODデータは、アセットストアコントローラにより、アセットストアからシステムメモリへロードされる。前述のように、CPUは、バインド時にGPU APIを使用して、LODデータをロードするようにアセットストアコントローラに要求でき、一実施形態では、例えばAADを有する要求を送信する。また、アセットストアコントローラによりAADが受信されると、AADを使用してLODデータの要求が行われ得、よって、他の実施形態では、AADの受信により、アセットストアからシステムメモリへ1つ以上のLODデータのロードがトリガーされる。
このようにして、描画呼び出しが使用した1つ以上のアセットを格納するメモリスペースを解放することができる。他の実施形態では、アセットストアコントローラは、システムメモリに格納されたアセットの使用を追跡することができる。グラフィックスパイプラインで現在のビデオフレームをレンダリングするのにアセットが使用されていない場合、アセットストアコントローラは、アセットが描画呼び出しの処理に不要になったと判断することができ、対応するメモリスペースを解放し得る。
GPUは、AADに基づいて、少なくとも最小限のLODデータを使用して描画呼び出しを実行する。例えば、各アセットは、最小限LODを有し、これは、対応するアセットを必要とする対応する描画呼び出しを処理するのに使用され得る。アセット認識コンピューティングアーキテクチャ(例えばGPUと連携して作動するCPU及び/またはアセットストアコントローラ)は、アセットのロードを追跡する(例えば各アセットのロード状態を特定する)ことができるため、GPUは、対応するアセットを必要とする描画呼び出しが実行される時に、対応するアセットにどのLODを使用するかを特定することができる。
例えば、上記で紹介されたアセットでは、システムメモリへの最初の複数のLODデータのロードは、CPU及び/またはアセットストアコントローラにより追跡される。このように、追跡を行うCPU及び/またはアセットストアコントローラは、GPU APIを呼び出して、または別の方法で、そのアセットのロード状態(例えば最初の複数のLODデータはどの程度ロードが完了したか)をGPUに通知することができる。また、GPUは、アセットに関連付けられた最初の複数のLODデータを認識する。一実施形態では、システムメモリにロード済みである場合にのみ、より高いLODが利用されることを確実にするために、システムメモリにロード済みの最大すなわち最も高いLODデータのキャッシュされた値が使用され、これは下記の図6Bに関連してより完全に説明される。
具体的には、対応する描画呼び出し内のいくつかの呼び出し及び/またはコマンドは、LODロードステータスに基づいて、条件付きで実行制御され得る。例えば、コマンドバッファは、分岐命令またはこれらに相当するものを有することができ、これらは実行されると、LODロード状態に基づいて異なるアクションを実行し、例えば、LODロード状態は、これらの分岐命令を使用して確認され得、特定のLODがロードされた場合は、1つのコマンド集合が実行されるが、しかしそうでない場合は、別のコマンド集合が実行される。
この場合、GPUは、最小限のLODデータがロード済みでありシステムメモリに格納されていることを確保するように構成される。また、より高いLOD(例えば最小限のLODデータよりも高いLOD)は、システムメモリにロード済みである場合にのみ利用されることを確実にするために、LODクランプが使用され、すなわち、GPUは、LODクランプを使用して、LODクランプを特定した時にロードされていないより高いLODデータが、対応する描画呼び出しの実行中にアクセスされないことを確実にする。
例えば、656にて、LODクランプは、ロードが完了した最も高いLODデータを表す値に設定され、すなわち、LODクランプは、キャプチャされたLODロード状態である。このように、GPUは、システムメモリにまだロードされ終わっていないLODデータにアクセスを試みることを回避する。よって、657にて、GPUにより、LODクランプにクランプされたLODデータを使用して(例えばロード済みの最も高いLODデータを使用して)、フレームの描画呼び出しが実行される。
662にて、デフォルトのアセットは、GPUにより描画呼び出しを実行する時に使用される。あるいは、663にて、最小限のLODデータの緊急ロードが実行され得、最小限のLODデータが正常にロードされ終わるまで、GPUはストールする。いくつかの実施形態では、緊急ロードは、前の描画呼び出しの間、フレームレンダリングの開始時など、早期にトリガーされ得る。664にて、最小限のLODデータは、GPUにより描画呼び出しを実行する時に使用される。あるいは、665にて、GPUは、前述のように、描画呼び出しの実行をスキップすることを決定し得る(すなわちGPUのストールを回避するために)。
このブロック図は、パーソナルコンピュータ、サーバコンピュータ、ゲームコンソール、モバイルデバイス、または他のデジタルデバイスを組み込むことができる、またはこれらであり得るデバイス700を示し、これらのそれぞれが、本発明の実施形態を実施するのに適している。デバイス700は、ソフトウェアアプリケーションと任意でオペレーティングシステムとを作動させる中央処理装置(CPU)702を含む。CPU702は、1つ以上の同種または異種の処理コアで構成され得る。
ユーザ入力デバイス708は、1人以上のユーザからのユーザ入力をデバイス700へ通信し、ユーザ入力デバイス708の例には、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、静止画もしくはビデオのレコーダ/カメラ、及び/またはマイクロフォンが挙げられ得る。ネットワークインターフェース714は、デバイス700が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にし、ローカルエリアネットワーク、及びインターネットなどの広域ネットワークを介した有線通信または無線通信を含み得る。
オーディオプロセッサ712は、CPU702、メモリ704、及び/またはストレージ706が提供する命令及び/またはデータから、アナログまたはデジタルのオーディオ出力を生成するように適合される。CPU702、GPU716とGPUキャッシュ718を含むグラフィックサブシステム、アセットストアコントローラ230、アセットストア210、メモリ704、システムメモリ220、データストレージ706、ユーザ入力デバイス708、ネットワークインターフェース714、及びオーディオプロセッサ712を含むデバイス700のコンポーネントは、1つ以上のデータバス722を介して接続される。
グラフィックスメモリ718は、GPU716と同じデバイスに統合されてもよく、別個のデバイスとしてGPU716と接続されてもよく、及び/またはメモリ704内に実装されてもよい。ピクセルデータは、CPU702からグラフィックメモリ718へ直接提供され得る。あるいは、CPU702は、所望の出力画像を定義するデータ及び/または命令をGPU716に提供し、GPU716は、これに基づいて、1つ以上の出力画像のピクセルデータを生成する。
所望の出力画像を定義するデータ及び/または命令は、メモリ704及び/またはグラフィックメモリ718に格納され得る。実施形態では、GPU716は、シーンのジオメトリ、ライティング、シェーディング、テクスチャリング、モーション、及び/またはカメラのパラメータを定義する命令及びデータから、出力画像のピクセルデータを生成する3Dレンダリング機能を含む。GPU716はさらに、シェーダプログラムを実行することができる1つ以上のプログラム可能実行ユニットを含み得る。
すなわち、フレームをレンダリングする時、GPUは循環する。レンダリング動作は重複してもよく、GPU1が第1のフレームのレンダリングを終了する前に、GPU2は第2のフレームのレンダリングを開始し得る。別の実施態様では、複数のGPUデバイスは、レンダリング及び/またはグラフィックスパイプラインで異なるシェーダ動作が割り当てられ得る。マスタGPUは、メインのレンダリング及び合成を実行する。
例えば、3つのGPUを含むグループでは、マスタGPU1が、スレーブGPU2とスレーブGPU3からの出力のメインのレンダリング(例えば第1のシェーダ動作)及び合成を実行することができ、スレーブGPU2は、第2のシェーダ(例えば川などの流体効果)動作を実行することができ、スレーブGPU3は、第3のシェーダ(例えば粒子煙)動作を実行することができ、マスタGPU1は、GPU1、GPU2、及びGPU3それぞれからの結果を合成する。
このように、異なるシェーダ動作(例えばひらめく旗、風、煙の発生、火など)の実行に、異なるGPUを割り当てて、ビデオフレームをレンダリングすることができる。さらに他の実施形態では、3つのGPUのそれぞれを、ビデオフレームに対応するシーンの異なるオブジェクト及び/または部分に割り当てることができる。上記の実施形態及び実施態様では、これらの動作は、同じフレーム期間で(同時に並行して)実行されてもよく、または異なるフレーム期間で(順次に並行して)実行されてもよい。
本発明の実施形態はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築され得る、または装置は、コンピュータに格納されたコンピュータプログラムにより選択的に有効化または構成される汎用コンピュータであり得る。具体的には、本明細書の教示に従って書かれたコンピュータプログラムにより、様々な汎用マシンを使用することができる、あるいは、必要な動作を実行するためにさらに特化した装置を構築するほうがより好都合であり得る。
Claims (29)
- 中央処理装置(CPU)及びグラフィック処理装置(GPU)を使用してビデオフレームを生成するコンピューティングシステムにより、ゲームを実行するための方法であって、
前記CPUにより、前記ビデオフレームのうちの1つのビデオフレームの描画呼び出しを生成し、
バインド時に、前記描画呼び出しの1つ以上のコマンドをコマンドバッファに書き込み、
前記バインド時に、前記描画呼び出しのアセット認識データ(AAD)を前記コマンドバッファに書き込んで、前記バインド時に、アセットストアから前記コンピューティングシステムが使用するシステムメモリへ1つ以上の詳細度(LOD)データのロード開始を行い、
前記GPUにより、前記システムメモリへ書き込まれたLODデータを使用して、前記フレームの前記描画呼び出しを実行し、前記GPUは、前記AADに基づいて少なくとも最小限のLODデータを使用する、方法。 - 前記1つ以上の詳細度(LOD)データのロード開始では、
前記アセットストアから前記システムメモリへ前記1つ以上のLODデータをロードする要求を、前記バインド時に前記CPUからアセットストアコントローラに送信する、請求項1に記載の方法。 - さらに、前記描画呼び出しの前記AADを、格納のために前記アセットストアコントローラに送信し、前記AADを前記要求として受信すると、前記アセットストアコントローラから前記システムメモリへ前記1つ以上のLODデータの前記ロードがトリガーされる、請求項2に記載の方法。
- 前記GPUによる前記描画呼び出しの処理の開始時に、前記描画呼び出しが使用するアセットに関して、前記システムメモリにロード済みの最も高いLODデータを特定し、
前記ロード済みの最も高いLODデータは、前記アセットの最小限LODデータよりも、詳細度が低いと判断し、
前記アセットの前記最小限LODデータの緊急ロードを要求する、請求項1に記載の方法。 - さらに、前記GPUによる前記描画呼び出しの処理の開始前に、前記描画呼び出しが使用するアセットに関して、前記システムメモリにロード済みの最も高いLODデータを特定し、
前記ロード済みの最も高いLODデータは、前記アセットの最小限LODデータよりも、詳細度が低いと判断し、
前記アセットの前記最小限LODデータの緊急ロードを要求する、請求項1に記載の方法。 - さらに、前記描画呼び出しが使用するアセットに関して、前記システムメモリにロード済みの最も高いLODデータを特定し、
前記ロード済みの最も高いLODデータは、前記アセットの最小限LODデータよりも、詳細度が低いと判断し、
前記描画呼び出しをスキップする、請求項1に記載の方法。 - さらに、前記描画呼び出しが使用するアセットに関して、前記システムメモリにロード済みの最も高いLODデータを特定し、
前記ロード済みの最も高いLODデータは、前記アセットの最小限LODデータよりも、詳細度が低いと判断し、
プロキシアセットのロードを要求する、請求項1に記載の方法。 - 前記描画呼び出しの描画時に、前記描画呼び出しが使用するアセットに関して、前記システムメモリにロード済みの最も高いLODデータを特定し、
前記ロード済みの最も高いLODデータは、前記アセットの最小限LODデータよりも、詳細度が高いと判断し、
前記最も高いLODデータを表す値に、LODクランプを設定し、
前記LODクランプをGPUキャッシュに格納し、
前記描画呼び出しの実行中に使用されるLODデータを、前記LODクランプに基づいて、前記最も高いLODデータにクランプする、請求項1に記載の方法。 - 前記GPUにより、前記コマンドバッファ内の最初のコマンドを実行し、前記最初のコマンドは、前記システムメモリへの前記アセットのロードステータスを照会するように構成される、請求項8に記載の方法。
- さらに、前記アセットストアコントローラにより、前記システムメモリへの前記アセットの複数のLODデータの前記ロードを追跡し、
前記アセットストアコントローラにより、GPU APIを使用して、前記アセットのロードステータスを前記GPUに通知する、請求項8に記載の方法。 - さらに、前記描画呼び出しの描画時より前に、前記描画呼び出しが使用するアセットに関して、前記システムメモリにロード済みの最も高いLODデータを特定し、
前記ロード済みの最も高いLODデータは、前記アセットの最小限LODデータよりも、詳細度が高いと判断し、
前記最も高いLODデータを表す値に、LODクランプを設定し、
前記LODクランプをGPUキャッシュに格納し、
前記描画呼び出しの実行中に使用されるLODデータを、前記LODクランプに基づいて、前記最も高いLODデータにクランプする、請求項1に記載の方法。 - 前記1つ以上のLODデータのロードの開始では、
アセットの複数のLODデータから、最小限LODデータをロードし、
前記アセットの前記最小限LODデータをロードした後、前記複数のLODデータから残りのLODデータを、詳細度の最も低いものから詳細の最も高いものへとロードする、請求項1に記載の方法。 - 対応するアセットの1つ以上の詳細度(LOD)データのそれぞれは、テクスチャであり、
前記対応するアセットの前記1つ以上のLODデータのそれぞれは、対応するミップマップである、
請求項1に記載の方法。 - 対応するアセットの1つ以上のLODデータのそれぞれは、モデルである、
請求項1に記載の方法。 - 前記描画呼び出しに使用される対応するアセットの前記AADは、対応するアセットIDと、対応する最小限LODデータと、フレームに描画される他のアセットに対する前記対応するアセットの対応するロード優先度とを含む、
請求項1に記載の方法。 - さらに、前記描画呼び出しの実行が完了したことを、前記GPUにより前記CPUに通知し、
前記CPUにより、前記1つ以上のLODデータを格納するために使用された前記システムメモリ内のメモリスペースを解放する、請求項1に記載の方法。 - 前記コンピューティングシステムは、サーバの分散ネットワークまたはゲームコンソールである、請求項1に記載の方法。
- さらに、前記CPUにより、前記システムメモリに格納されている前記アセットに関して、前記アセットストアコントローラに問い合わせるか、または、
前記CPUにより、対応するビデオフレームに使用されるアセットを有するかに関して、前記アセットストアコントローラに問い合わせるか、または、
前記CPUにより、前記アセットストアに格納されている前記アセットに関して、前記アセットストアコントローラに問い合わせる、請求項1に記載の方法。 - さらに、前記LODデータの優先度情報に従って、予測される描画呼び出しまたはオブジェクトのアセットのLODデータをロードするように有益な助言を、前記CPUにより前記アセットストアコントローラに与える、請求項1に記載の方法。
- さらに、ビデオフレームをレンダリングするために、前記GPUにより、1つ以上のアセットの使用状況を追跡する、請求項1に記載の方法。
- 前記GPUにより、対応するアセットの1つ以上のLODデータの使用状況を追跡する、請求項20に記載の方法。
- 前記GPUにより、テクスチャアセットの使用される最小限LODデータまたは最大限LODデータを追跡するか、または、
前記GPUにより、前記テクスチャアセットへのアクセス回数を追跡するか、または、
前記GPUにより、LODデータによる前記テクスチャアセットへのアクセス回数を追跡する、請求項20に記載の方法。 - 前記GPUにより、モデルアセットの使用される最小限LODデータまたは最大限LODデータを追跡するか、または、
前記モデルアセットにより使用される頂点の数を追跡する、請求項20に記載の方法。 - さらに、前記システムメモリから解放するための1つ以上の識別されたアセット、または前記1つ以上の識別されたアセットの1つ以上の識別されたLODデータを特定する際、アセットの使用状況の追跡情報を使用するか、または、
アセットの使用状況の追跡情報を使用して、2つ以上のアセットの解放に優先度を付ける、請求項20に記載の方法。 - アセットの使用状況の追跡情報を使用して、前記システムメモリにロードする1つ以上の識別されたアセット、または前記1つ以上の識別されたアセットの1つ以上の識別されたLODデータを特定するか、または、
アセットの使用状況の追跡情報を使用して、2つ以上のアセットのロードに優先度を付ける、請求項20に記載の方法。 - さらに、アセットを認識した方法で、前記アセットストアを更新する、請求項1に記載の方法。
- 1つ以上のアセットがローカルで生成された時に、前記アセットを認識した方法で前記アセットストアを更新するか、または、
データセンタ内から、前記アセットを認識した方法で前記アセットストアを更新するか、または、
ネットワーク経由で、前記アセットを認識した方法で前記アセットストアを更新する、請求項26に記載の方法。 - ゲームを実行してビデオフレームを生成するコンピューティングシステムであって、
前記ゲームを実行するように構成された中央処理装置(CPU)を有し、前記CPUは、前記ビデオフレームのうちの1つのフレームのために、コマンドを含む描画呼び出しを生成するものであり、
アセット認識データ(AAD)及び前記描画呼び出しの前記コマンドを格納するように構成されてバインド時に前記CPUにより前記AAD及び前記コマンドが書き込まれるコマンドバッファを有し、
アプリケーションの複数のアセットを格納するように構成されて前記描画呼び出しが使用する1つ以上の詳細度(LOD)データを含むアセットストアを有し、
前記描画呼び出しが使用する前記1つ以上の詳細度(LOD)データを格納するように構成されたシステムメモリを有し、前記アセットストアからの前記LODデータの前記ロードは、前記バインド時に前記CPUによりトリガーされ、前記LODデータの前記システムメモリへの前記ロードは、前記AADを前記コマンドバッファに書き込んでいる間に開始されるものであり、
前記システムメモリに書き込まれた前記LODデータを使用して前記フレームの前記描画呼び出しの前記コマンドを実行するように構成されたグラフィック処理装置(GPU)を有し、前記GPUは、前記AADに基づいて少なくとも最小限のLODデータを使用するものである、コンピューティングシステム。 - 中央処理装置(CPU)及びグラフィック処理装置(GPU)を使用してビデオフレームを生成するコンピューティングシステムによりゲームを実行するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体であって、
前記CPUにより、前記ビデオフレームのうちの1つのビデオフレームの描画呼び出しを生成するためのプログラム命令と、
バインド時に、前記描画呼び出しの1つ以上のコマンドをコマンドバッファに書き込むためのプログラム命令と、
前記バインド時に、前記描画呼び出しのアセット認識データ(AAD)を前記コマンドバッファに書き込んで、前記バインド時に、アセットストアから前記コンピューティングシステムが使用するシステムメモリへ1つ以上の詳細度(LOD)データのロードを開始するためのプログラム命令と、
前記GPUにより、前記システムメモリへ書き込まれた前記LODデータを使用して、前記フレームの前記描画呼び出しを実行するためのプログラム命令とを有し、前記GPUは、前記AADに基づいて少なくとも最小限のLODデータを使用するものである、非一時的コンピュータ可読媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022168273A JP7453311B2 (ja) | 2019-07-03 | 2022-10-20 | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ |
JP2024034649A JP2024061779A (ja) | 2019-07-03 | 2024-03-07 | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/503,378 | 2019-07-03 | ||
US16/503,378 US10981059B2 (en) | 2019-07-03 | 2019-07-03 | Asset aware computing architecture for graphics processing |
PCT/US2020/032954 WO2021002949A1 (en) | 2019-07-03 | 2020-05-14 | Asset aware computing architecture for graphics processing |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022168273A Division JP7453311B2 (ja) | 2019-07-03 | 2022-10-20 | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022535148A true JP2022535148A (ja) | 2022-08-04 |
JP7164761B2 JP7164761B2 (ja) | 2022-11-01 |
Family
ID=70919275
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022500022A Active JP7164761B2 (ja) | 2019-07-03 | 2020-05-14 | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ |
JP2022168273A Active JP7453311B2 (ja) | 2019-07-03 | 2022-10-20 | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ |
JP2024034649A Pending JP2024061779A (ja) | 2019-07-03 | 2024-03-07 | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022168273A Active JP7453311B2 (ja) | 2019-07-03 | 2022-10-20 | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ |
JP2024034649A Pending JP2024061779A (ja) | 2019-07-03 | 2024-03-07 | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ |
Country Status (6)
Country | Link |
---|---|
US (3) | US10981059B2 (ja) |
EP (1) | EP3994669A1 (ja) |
JP (3) | JP7164761B2 (ja) |
CN (1) | CN112181633A (ja) |
TW (1) | TWI750676B (ja) |
WO (1) | WO2021002949A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10981059B2 (en) * | 2019-07-03 | 2021-04-20 | Sony Interactive Entertainment LLC | Asset aware computing architecture for graphics processing |
US11481967B2 (en) * | 2020-08-31 | 2022-10-25 | Advanced Micro Devices, Inc. | Shader core instruction to invoke depth culling |
US11794107B2 (en) * | 2020-12-30 | 2023-10-24 | Activision Publishing, Inc. | Systems and methods for improved collision detection in video games |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003515798A (ja) * | 1998-08-20 | 2003-05-07 | アップル コンピュータ インコーポレイテッド | 進歩したディファード・シェーディング・グラフィクス・パイプライン・プロセッサ |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6577305B1 (en) * | 1998-08-20 | 2003-06-10 | Apple Computer, Inc. | Apparatus and method for performing setup operations in a 3-D graphics pipeline using unified primitive descriptors |
US6807620B1 (en) * | 2000-02-11 | 2004-10-19 | Sony Computer Entertainment Inc. | Game system with graphics processor |
US20060028479A1 (en) * | 2004-07-08 | 2006-02-09 | Won-Suk Chun | Architecture for rendering graphics on output devices over diverse connections |
US7659901B2 (en) * | 2006-07-24 | 2010-02-09 | Microsoft Corporation | Application program interface for programmable graphics pipeline |
US8243064B1 (en) | 2007-11-15 | 2012-08-14 | Nvidia Corporation | System for providing scalable physics content |
US8284197B2 (en) | 2008-07-11 | 2012-10-09 | Advanced Micro Devices, Inc. | Method and apparatus for rendering instance geometry |
US8233006B2 (en) | 2008-10-10 | 2012-07-31 | Advanced Micro Devices, Inc. | Texture level tracking, feedback, and clamping system for graphics processors |
US8872823B2 (en) * | 2009-10-09 | 2014-10-28 | Microsoft Corporation | Automatic real-time shader modification for texture fetch instrumentation |
US8754900B2 (en) * | 2010-06-17 | 2014-06-17 | Thinci, Inc. | Processing of graphics data of a server system for transmission |
US9177351B2 (en) | 2012-10-09 | 2015-11-03 | Qualcomm Incorporated | Multi-primitive graphics rendering pipeline |
US9292414B2 (en) * | 2012-11-26 | 2016-03-22 | Nvidia Corporation | System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU |
CN104822429A (zh) * | 2012-11-28 | 2015-08-05 | 辉达公司 | 掌上游戏机 |
US9230518B2 (en) * | 2013-09-10 | 2016-01-05 | Qualcomm Incorporated | Fault-tolerant preemption mechanism at arbitrary control points for graphics processing |
US9332216B2 (en) * | 2014-03-12 | 2016-05-03 | Sony Computer Entertainment America, LLC | Video frame rate compensation through adjustment of vertical blanking |
US10643296B2 (en) | 2016-01-12 | 2020-05-05 | Qualcomm Incorporated | Systems and methods for rendering multiple levels of detail |
US10981059B2 (en) * | 2019-07-03 | 2021-04-20 | Sony Interactive Entertainment LLC | Asset aware computing architecture for graphics processing |
-
2019
- 2019-07-03 US US16/503,378 patent/US10981059B2/en active Active
-
2020
- 2020-05-14 EP EP20729588.2A patent/EP3994669A1/en active Pending
- 2020-05-14 WO PCT/US2020/032954 patent/WO2021002949A1/en unknown
- 2020-05-14 JP JP2022500022A patent/JP7164761B2/ja active Active
- 2020-05-27 TW TW109117661A patent/TWI750676B/zh active
- 2020-06-29 CN CN202010606547.1A patent/CN112181633A/zh active Pending
-
2021
- 2021-04-20 US US17/235,357 patent/US11731050B2/en active Active
-
2022
- 2022-10-20 JP JP2022168273A patent/JP7453311B2/ja active Active
-
2023
- 2023-08-21 US US18/453,227 patent/US20230390638A1/en active Pending
-
2024
- 2024-03-07 JP JP2024034649A patent/JP2024061779A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003515798A (ja) * | 1998-08-20 | 2003-05-07 | アップル コンピュータ インコーポレイテッド | 進歩したディファード・シェーディング・グラフィクス・パイプライン・プロセッサ |
Also Published As
Publication number | Publication date |
---|---|
EP3994669A1 (en) | 2022-05-11 |
US20230390638A1 (en) | 2023-12-07 |
US10981059B2 (en) | 2021-04-20 |
US11731050B2 (en) | 2023-08-22 |
JP7453311B2 (ja) | 2024-03-19 |
JP7164761B2 (ja) | 2022-11-01 |
US20210236928A1 (en) | 2021-08-05 |
JP2024061779A (ja) | 2024-05-08 |
US20210001220A1 (en) | 2021-01-07 |
TW202103111A (zh) | 2021-01-16 |
WO2021002949A1 (en) | 2021-01-07 |
TWI750676B (zh) | 2021-12-21 |
CN112181633A (zh) | 2021-01-05 |
JP2022189902A (ja) | 2022-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11596861B2 (en) | Add-on management methods | |
JP7453311B2 (ja) | グラフィック処理のためのアセット認識コンピューティングアーキテクチャ | |
JP5943330B2 (ja) | クラウドソース動画レンダリングシステム | |
US20240108981A1 (en) | Dynamic streaming video game client | |
US8363051B2 (en) | Non-real-time enhanced image snapshot in a virtual world system | |
US11709713B2 (en) | System and method for multi-tenant implementation of graphics processing unit | |
US11810223B2 (en) | Controlling multi-GPU execution of kernels by kernel portion and resource region based dependencies | |
US11847720B2 (en) | System and method for performing a Z pre-pass phase on geometry at a GPU for use by the GPU when rendering the geometry | |
US11961159B2 (en) | Region testing of geometry while rendering for efficient multi-GPU rendering | |
US20240108984A1 (en) | Game asset optimization over network at optimizer server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220209 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220209 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20220209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220525 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20220920 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221020 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7164761 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |