JP5960368B2 - ビジビリティ情報を用いたグラフィックスデータのレンダリング - Google Patents

ビジビリティ情報を用いたグラフィックスデータのレンダリング Download PDF

Info

Publication number
JP5960368B2
JP5960368B2 JP2015553741A JP2015553741A JP5960368B2 JP 5960368 B2 JP5960368 B2 JP 5960368B2 JP 2015553741 A JP2015553741 A JP 2015553741A JP 2015553741 A JP2015553741 A JP 2015553741A JP 5960368 B2 JP5960368 B2 JP 5960368B2
Authority
JP
Japan
Prior art keywords
image
bins
binning configuration
modified
visibility
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.)
Expired - Fee Related
Application number
JP2015553741A
Other languages
English (en)
Other versions
JP2016509718A (ja
Inventor
セーサラマイアー、アビナシュ
バルシー、ムラート
フラシャティ、クリストファー・ポール
グルバー、アンドリュー・エバン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2016509718A publication Critical patent/JP2016509718A/ja
Application granted granted Critical
Publication of JP5960368B2 publication Critical patent/JP5960368B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Description

[0001]本開示は、コンピュータグラフィックスのレンダリングに関するものである。
[0002]電子ディスプレイ上でのビジュアル提示のためのコンテンツを提供するデバイスは、概して、グラフィックス処理ユニット(GPU)を含む。GPUは、ディスプレイ上のコンテンツを表すピクセルをレンダリングする。GPUは、ディスプレイ上の各ピクセルに関する1つ以上のピクセル値を生成し、各ピクセルを提示のためにレンダリングするためにディスプレイ上の各ピクセルに関するピクセル値に対するグラフィックス処理を行う。
[0003]本開示の技法は、概して、グラフィックスデータをレンダリングすることに関するものである。例えば、本開示の技法は、レンダリングを最適化するためにビジビリティ(visibility可視性)情報を利用することを含む。幾つかの態様により、レンダリングが行われる方法、例えば、直接的レンダリング又はタイルに基づくレンダリング、は、レンダリング中のプリミティブ(primitive)に関連するビジビリティ情報を用いて動的に決定することができる。例えば、タイルに基づくレンダリングは、見えないプリミティブのレンダリングをスキップするためにオクルード(occlude)(遮蔽)されたプリミティブを含む画像エリアをレンダリングするために使用することができる。さらに、直接的レンダリングは、オクルードされたプリミティブをほとんど又はまったく有さない画像エリアをレンダリングするために使用することができる。
[0004]一例においては、本開示の態様は、画像の可視のプリミティブを示すビジビリティ情報を生成することと、ビニング(binning)構成を用いて画像をレンダリングすることと、を含む画像をレンダリングするための方法に関するものであり、ビニング構成は、ビジビリティ情報に基づく。
[0005]他の例においては、本開示の態様は、画像の可視のプリミティブを示すビジビリティ情報を生成するように、及びビニング構成を用いて画像をレンダリングするように構成された1つ以上のプロセッサを含む画像をレンダリングするための装置に関するものであり、ビニング構成は、ビジビリティ情報に基づく。
[0006]他の例においては、本開示の態様は、画像の可視のプリミティブを示すビジビリティ情報を生成するための手段と、ビニング構成を用いて画像をレンダリングするための手段と、を含む画像をレンダリングするための装置に関するものであり、ビニング構成は、ビジビリティ情報に基づく。
[0007]他の例においては、本開示の態様は、実行されたときに、画像の可視のプリミティブを示すビジビリティ情報を生成すること、及び、ビニング構成を用いて画像をレンダリングすることを1つ以上のプロセッサに行わせる命令が格納されている非一時的なコンピュータによって読み取り可能な記憶媒体に関するものであり、ビニング構成は、ビジビリティ情報に基づく。
[0008]他の例においては、本開示の態様は、画像の可視のプリミティブを示すビジビリティ情報を受信することと、ビジビリティ情報に基づいて1つ以上のビンへの複数のプリミティブの配分(distribution)を備えるビニング構成を決定することと、を含む画像をレンダリングするための方法に関するものである。
[0009]他の例においては、本開示の態様は、画像の可視のプリミティブを示すビジビリティ情報を受信し、及び、ビジビリティ情報に基づいて1つ以上のビンへの複数のプリミティブの配分を備えるビニング構成を決定するように構成された1つ以上のプロセッサを含む画像をレンダリングするための装置に関するものである。
[0010]他の例においては、本開示の態様は、画像の可視のプリミティブを示すビジビリティ情報を受信するための手段と、ビジビリティ情報に基づいて1つ以上のビンへの複数のプリミティブの配分を備えるビニング構成を決定するための手段と、を含む画像をレンダリングするための装置に関するものである。
[0011]他の例においては、本開示の態様は、実行されたときに、画像の可視のプリミティブを示すビジビリティ情報を受信すること、及びビジビリティ情報に基づいて1つ以上のビンへの複数のプリミティブの配分を備えるビニング構成を決定することを1つ以上のプロセッサに行わせる命令が格納されている非一時的なコンピュータによって読み取り可能な媒体記憶に関するものである。
[0012]本開示の1つ以上の例の詳細が添付図面及び以下の説明において示されている。これらの説明及び図面から、及び請求項からその他の特徴、目的、及び利点が明らかになるであろう。
[0013]本開示の態様を実装するように構成することができるコンピューティングデバイスを例示したブロック図である。 [0014]本開示の態様を実装するように構成することができる他のコンピューティングデバイスを例示したブロック図である。 [0015]画像を例示した概略図である。 [0016]図3の画像を例示した他の概略図である。 [0017]図3の画像を例示した他の概略図である。 [0018]本開示の態様による、グラフィックスをレンダリングするためのプロセス例を示した流れ図である。 [0019]本開示の態様による、グラフィックスをレンダリングするための他のプロセス例を示した流れ図である。 [0020]本開示の態様による、グラフィックスをレンダリングするための他のプロセス例を示した流れ図である。
[0021]伝統的なグラフィックス処理ユニット(GPU)アーキテクチャは、(画像と呼ぶことができる)グラフィックスデータのフレームをレンダリングするときに相対的に大量のデータをシステムメモリから読み出すこと又はシステムに書き込むことを要求する。モバイルアーキテクチャは、データフレーム全体を処理するために要求される帯域幅容量を欠いていることがある。従って、画像を複数のタイルに分割するタイルに基づくアーキテクチャが開発されている。それらのタイルは、小量(例えば、256kB)の高帯域幅のオンチップグラフィックスメモリを用いて処理することができるようなサイズが設定される。すなわち、各タイルのサイズは、利用可能なオンチップグラフィックスメモリの量に依存することができる。次に、画像は、各タイルを個々に処理した後に再構築される。
[0022]タイルに基づくレンダリングは、幾つかの処理パス(processing pass)に関して説明することができる。例えば、タイルに基づくレンダリングを行うときには、GPUは、ビニングパス及びレンダリングパスを行うことができる。ビニングパスに関しては、GPUは、フレーム全体を処理し、ラスタライズされたプリミティブ(例えば、三角形)をビンと呼ばれるタイルサイズのエリアにソートすることができる。すなわち、GPUは、画像全体に関するコマンドストリームを処理し、画像のラスタライズされたプリミティブをビンに割り当てる。
[0023]幾つかの例においては、GPUは、ビニングパス中に1つ以上のビジビリティストリームを生成する。ビジビリティストリームは、最終画像において可視であるプリミティブ及び最終画像において不可視であるプリミティブを示す。例えば、プリミティブは、1つ以上のその他のプリミティブによって遮蔽される場合は不可視であり、従って、そのプリミティブは、シェーディングされた完成画像では見ることができない。
[0024]ビジビリティストリームは、画像全体に関して生成することができ、又は、各々のビンごとに(例えば、各ビンに関して1つのビジビリティストリーム)生成することができる。概して、ビジビリティストリームは、一連の1及び0を含むことができ、各“1”又は“0”は、特定のプリミティブと関連付けられる。各“1”は、プリミティブが最終画像において可視であることを示す。各“0”は、プリミティブが最終画像において不可視であることを示す。ビジビリティストリームは、レンダリングパス(後述)を制御することができる。例えば、ビジビリティストリームは、レンダリング中に不可視のプリミティブのシーケンスをスキップするために使用することができる。従って、ビンに実際に貢献する、すなわち、最終画像において可視であるプリミティブのみがレンダリング及びシェーディングされ、それにより、シェーディング動作を低減させることができる。
[0025]各レンダリングパスは、クリア/アンリゾルブ(clear/unresolve)段階と、レンダリング段階と、リゾルブ(resolve)段階と、を含むことができる。クリア/アンリゾルブ段階中には、GPUは、レンダリングされるべき新しいタイルに関してオンチップメモリを初期化することができる。例えば、GPUは、オンチップメモリをある一定の値に初期化することができ(クリア)、又は、外部のメモリからオンチップメモリに値を読み取ることができる(アンリゾルブ)。レンダリング段階中には、GPUは、タイルを処理し、処理されたタイルをオンチップメモリに格納することができる。すなわち、GPUは、グラフィックス処理パイプラインを実装してピクセル値を決定し、オンチップメモリにピクセル値を書き込むことができる。リゾルブ段階中には、GPUは、タイルの完成されたピクセル値をオンチップメモリから外部のメモリに転送することができる。画像のすべてのタイルを完成させた後は、画像は、出力(例えば、表示)可能な状態である。
[0026]ビジビリティストリームを用いたタイルに基づくレンダリングは、(不可視のプリミティブをスキップすることによって)より少ない数のプリミティブを処理するのを可能にする一方で、画像をビンごとにレンダリングすることに関連する計算上のコストが存在する。各ビンは、データのチャンク(chunk)と呼ぶことができる。タイルに基づくレンダリングの場合は、上述されるように、各チャンクはローカルのオンチップGPUメモリ内にローディングされ(ロード)、レンダリングされ(レンダー)、システムメモリに格納される(格納)。
[0027]対照的に、GPUは、ビジビリティ情報を使用しない直接的レンダリングを行うことができる。直接的レンダリングを行うときには、GPUは、プリミティブが可視であるかどうかにかかわらず、各々のすべてのプリミティブをシェーディングして直接システムメモリに書き込む。すなわち、不可視のプリミティブは、システムメモリに書き込まれるが、のちにその他のプリミティブ情報によって上書きされるにすぎない。従って、直接的レンダリングは、レンダリング前にチャンク全体がオンチップメモリにローディングされ、レンダリング後にオンチップメモリからシステムメモリに転送されることを要求しない。
[0028]従って、ビジビリティ情報を決定してタイルに基づくレンダリング(ビンに基づくレンダリングとも呼ばれる)を行うプロセスは、典型的には、画像の少なくとも一部分が相対的に大量のオーバードロー(overdraw)を有する状況において最も有益である。オーバードローは、1つのプリミティブを他のプリミティブの上に描くことを意味し、従って、オーバードローされたプリミティブの少なくとも一部分は可視ではない。オーバードローがほとんどない事例では、タイルに基づくレンダリングに関連するローカルメモリとシステムメモリとの間での余分のデータ転送がレーテンシーを招くことがある。
[0029]しかしながら、GPU用のドライバ(典型的には、他の処理ユニット、例えば、中央処理装置(GPU)によって実行される)が、典型的には、ビンの構成を決定することを担当することができる。さらに、いったん生成された時点で、GPUは、典型的には、ビジビリティストリームを変更することができず、ビジビリティストリームに従って画像をレンダリングすることにロックされる。すなわち、GPUは、各チャンクをローディングし、そのチャンクをレンダリングし、そのチャンクをメモリに格納しなければならない。従って、GPUは、概して、レンダリング中の画像に基づいてタイルに基づくレンダリングと直接的レンダリングとの間で選択することはできない。すなわち、例えば、GPUは、典型的には、相対的に大量のオーバードローを有するエリアに関するタイルに基づくレンダリング及び相対的に小量のオーバードローを有するエリアに関する直接的レンダリングを動的に選択することはできない。むしろ、上記のように、GPUは、概して、画像全体に関してタイルに基づくレンダリング又は直接的レンダリングのいずれを行うかにロックされる。
[0030]本開示の技法は、概して、レンダリングを最適化するためにビジビリティ情報を利用することに関するものである。例えば、本開示の態様により、レンダリングが行われる方法、例えば、直接的レンダリング又はタイルに基づくレンダリング、は、ビジビリティ情報に基づいて動的に決定することができる。幾つかの例においては、ビジビリティ情報は、いずれのプリミティブが可視であるかを記述したデータと、画像の複雑さを記述したデータと、を含むことができる。例えば、ビジビリティ情報は、ビジビリティストリームと、ヒューリスティックデータ(heuristic data)と、を含むことができる。ヒューリスティックデータは、例えば、ビン内のプリミティブの数、ビン内の可視のプリミティブの数、ビン内の不可視のプリミティブの数、プリミティブのサイズ、等を含むことができる。幾つかの例においては、ビジビリティ情報に基づいてスコアをビンに割り当て、ビンの全体的な複雑さ、ビンに関するオーバードローの量、等を示すことができる。
[0031]このビジビリティに基づき、直接ビンをレンダリングすべか又はビジビリティストリームを用いてビンをレンダリングすべきであるか(タイルに基づくレンダリング)に関する決定を行うことができる。すなわち、例えば、最初のビニング構成が画像に関して決定され、及び、すべてのビンが最初にタイルに基づくレンダリングを用いてレンダリングされるように設定されると仮定する。この例では、最初にタイルに基づくレンダリングが行われるように設定され、相対的に小量のオーバードローを有するビンは、直接的レンダリングに切り換えることができる。さらに加えて又は代替で、新しいビニング構成を決定及び実装することができる。例えば、タイルに基づくレンダリングのためにプリミティブがビンに配分される方法は、ビジビリティ情報に基づいて変更することができる。
[0032]従って、本開示の態様により、ビジビリティストリームを用いたタイルに基づくレンダリングは、ビジビリティ情報から利益を得ることができる画像部分をレンダリングするために使用することができる(例えば、数多くのプリミティブ及び/又は大量のオーバードローを有する相対的に複雑なエリア)。さらに、直接的レンダリングは、タイルに基づくレンダリングの結果としてローカルのオンチップメモリからシステムメモリへのデータの転送に関連するレーテンシーが発生することになる画像部分をレンダリングするために使用することができる。該技法を実装することは、画像がレンダリングされる効率を向上させることができる。
[0033]以下においてさらに詳細に説明されるように、ビニング構成は、GPU、GPUドライバ(例えば、中央処理装置(CPU)によって実行)、又はそれらの組み合わせによって決定することができる。すなわち、一例においては、GPUドライバは、最初のビニング構成を生成することができる。GPUは、最初のビニング構成を処理し、最初のビニング構成に基づいてビジビリティ情報を生成することができる。GPUは、ビジビリティ情報をGPUドライバに送信することができ、それは、ビジビリティ情報に基づいて修正されたビニング構成を決定することができる。他の例においては、ビジビリティ情報をGPUドライバに送信するのではなく、GPUは、ビジビリティ情報に基づいて修正されたビニング構成を決定することができる。さらに他の例においては、GPUドライバ及びGPUは、ビジビリティ情報に基づいて修正されたビニング構成を決定する責任を分担することができる。
[0034]図1は、グラフィックスデータをレンダリングするために本開示の技法を実装することができるコンピューティングデバイス30を例示したブロック図である。コンピューティングデバイス30の例は、無線デバイス、いわゆるスマートフォンを含む携帯電話、パーソナルデジタルアシスタント(PDA)、ビデオディスプレイを含むビデオゲームプレーコンソール、モバイルビデオゲームプレイ装置、モバイル映像会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、テレビセットトップボックス、タブレットコンピューティングデバイス、電子書籍リーダー、固定型又はモバイルメディアプレイヤー、等を含み、ただしそれらに限定されない。
[0035]図1の例において、コンピューティングデバイス30は、CPUメモリ34を有する中央処理装置(CPU)32と、GPUメモリ38及び1つ以上のシェーディングユニット40を有するグラフィックス処理ユニット(GPU)36と、表示装置42と、レンダリングされたデータ45(“ren.data”)を格納するディスプレイバッファユニット44と、ユーザインタフェースユニット46と、データ記憶装置48と、を含む。さらに、記憶装置48は、コンパイラ54を有するGPUドライバ、GPUプログラム52、及びローカルでコンパイルされたGPUプログラム56を格納することができる。
[0036]CPU32の例は、デジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、又はその他の同等の集積回路又はディスクリートロジック回路を含み、ただしそれらに限定されない。CPU32及びGPU36は、図1の例では別個のユニットとして例示されているが、幾つかの例においては、CPU32及びGPU36は、単一のユニットとして一体化することができる。CPU32は、1つ以上のアプリケーションを実行することができる。アプリケーションの例は、ウェブブラウザ、電子メールアプリケーション、スプレッドシート、ビデオゲーム、音声及び/又は映像キャプチャ、再生又は編集アプリケーション、又は、表示装置42を介して提示される画像データに関する生成を開始するその他のアプリケーションを含むことができる。
[0037]図1において示される例では、CPU32は、CPUメモリ34を含む。CPUメモリ34は、機械コード又はオブジェクトコードを実行する際に使用されるオンチップ記憶装置又はメモリを代表することができる。CPUメモリ34は、固定された数のデジタルビットを格納することが可能なハードウェアメモリレジスタを各々備えることができる。CPU32は、例えば、システムバスを通じてアクセスすることができる記憶装置48から値を読み取るか又は記憶装置48に値を書き込むよりも素早くローカルCPUメモリ34から値を読み取ること又はローカルCPUメモリ34に値を書き込むことができる。
[0038]GPU36は、グラフィック動作を行うための1つ以上の専用プロセッサを代表する。すなわち、例えば、GPU36は、グラフィックスをレンダリングし及びGPUアプリケーションを実行するための固定された機能及びプログラマブルコンポーネントを有する専用のハードウェアユニットであることができる。GPU36は、DSP、汎用マイクロプロセッサ、ASIC、FPGA、又はその他の同等の集積回路又はディスクリートロジック回路を含むこともできる。
[0039]GPU36は、GPUメモリ38も含み、それは、機械コード又はオブジェクトコードを実行する際に使用されるオンチップ記憶装置又はメモリを代表することができる。GPUメモリ38は、固定された数のデジタルビットを格納することが可能なハードウェアメモリレジスタを各々備えることができる。GPU36は、例えば、システムバスを通じてアクセスすることができる記憶装置48から値を読み取るか又は記憶装置48に値を書き込むよりも素早くローカルGPUメモリ38から値を読み取ること又はローカルGPUメモリ38に値を書き込むことができる。
[0040]表示装置42は、ビューワによる消費のために映像データ、画像、テキスト又はその他のタイプのデータを表示することが可能なユニットを代表する。表示装置42は、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、有機LED(OLED)、アクティブマトリクスOLED(AMOLED)ディスプレイ、等を含むことができる。
[0041]ディスプレイバッファユニット44は、表示装置42のための画像の提示のためのデータ、例えば、コンピュータによって生成されたグラフィックス、静止画像、映像フレーム、等(レンダリングされたデータ45)、を格納するのを専用とするメモリ又は記憶装置を代表する。ディスプレイバッファユニット44は、複数の記憶場所を含む二次元バッファを代表することができる。ディスプレイバッファユニット44内の記憶場所の数は、表示装置42上に表示されるべきピクセル数と実質的に同じであることができる。例えば、表示装置42が640×480ピクセルを含むように構成される場合は、ディスプレイバッファユニット44は、ピクセルの色及び強度に関する情報、例えば、赤、緑及び青のピクセル値、又はその他の色値、を格納する640×480の記憶場所を含むことができる。
[0042]ディスプレイバッファユニット44は、GPU36によって処理された各々のピクセルに関する最終的なピクセル値を格納することができる。表示装置42は、最終的なピクセル値をディスプレイバッファユニット44から取り出し、ディスプレイバッファユニット44に格納されたピクセル値に基づいて最終画像を表示することができる。
[0043]ユーザインタフェースユニット46は、ユーザがコンピューティングデバイス30のその他のユニット、例えば、CPU32、と通信するために対話することができる又はその他の方法でインタフェースすることができるユニットを代表する。ユーザインタフェースユニット46の例は、トラックボールと、マウスと、キーボードと、その他のタイプの入力デバイスと、を含み、ただしそれらに限定されない。ユーザインタフェースユニット46は、タッチ画面であること又はタッチ画面を含むこともでき、及び、タッチ画面は、表示装置42に一部として組み入れることができる。
[0044]記憶装置48は、1つ以上のコンピュータによって読み取り可能な記憶媒体を備えることができる。記憶装置48の例は、希望されるプログラムコードを命令又はデータ構造の形態で格納することができ及びコンピュータ又はプロセッサによってアクセスすることができるランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、CD−ROM又はその他の光学ディスク記憶装置、磁気ディスク記憶装置、又はその他の磁気記憶デバイス、フラッシュメモリ、又はその他のいずれかの媒体を備えることができる。
[0045]幾つかの実装例においては、記憶装置48は、本開示においてCPU32及びGPU36に帰する機能をCPU32及び/又はGPU36に実行させる命令を含むことができる。記憶装置48は、幾つかの例においては、非一時的な記憶媒体であるとみなすことができる。用語“非一時的な”は、搬送波又は伝搬される信号において具現化されないことを示すことができる。しかしながら、用語“非一時的な”は、記憶装置48が移動できないことを意味するとは解釈されるべきでない。一例として、記憶装置48は、コンピューティングデバイス30から取り外して他のデバイスに移動させることができる。他の例として、記憶装置48と実質的に同じである記憶装置は、コンピューティングデバイス30内に挿入することができる。幾つかの例においては、非一時的な記憶媒体は、経時で変化する可能性があるデータを(例えば、RAM内に)格納することができる。
[0046]記憶装置48は、GPUドライバ50、コンパイラ54、GPUプログラム52、及びローカルでコンパイルされたGPUプログラム56を格納する。GPUドライバ50は、GPU36にアクセスするためのインタフェースを提供するコンピュータプログラム又は実行可能なコードを代表する。CPU32は、GPU36とインタフェースするためにGPUドライバ又はその一部分を実行し、この理由で、GPUドライバ50は、図1の例では、CPU32内において“GPUドライバ50”というラベルが付けられた破線のボックスとして示される。GPUドライバは、CPU32によって実行されるプログラム又はその他のエクセキュータブル(executable)にアクセス可能であり、GPUプログラム52を含む。
[0047]GPUプログラム52は、高水準(HL)プログラミング言語で、例えば、アプリケーションプログラミングインタフェース(API)を用いて、書かれたコードを含むことができる。APIの例は、Microsoft,Inc.によって開発された、Open−Computing Language(“OpenCL”)、Open Graphics Library(“OpenGL”)、及びDirectX、を含む。概して、APIは、関連付けられたハードウェアによって実行される予め決定された、標準化されたコマンドの組を含む。APIコマンドは、ユーザがGPUのハードウェアコンポーネントの詳細に関する知識なしにコマンドを実行するようにハードウェアコンポーネントに命令するのを可能にする。
[0048]GPUプログラム52は、GPUドライバ50によって提供される1つ以上の機能を呼び出すこと又はその他の形で含めることができる。CPU32は、概して、GPUプログラム52が埋め込まれているプログラムを実行し、GPUプログラム52に出くわした時点で、GPUプログラム52をGPUドライバ50に渡す。CPU32は、GPUプログラム52を処理するためにこのコンテキストでGPUドライバ50を実行する。すなわち、例えば、GPUドライバ50は、GPUプログラム52をGPU36によって実行可能なオブジェクトコード又は機械コードにコンパイルすることによってGPUプログラム52を処理することができる。このオブジェクトコードは、図1の例では、ローカルでコンパイルされたGPUプログラム56として示されている。
[0049]幾つかの例においては、コンパイラ54は、GPUプログラム52が埋め込まれているプログラムの実行中にGPUプログラム52をコンパイルするためにリアルタイムで又はほぼリアルタイムで動作することができる。例えば、コンパイラ54は、概して、HLプログラミング言語に従って定義されたHL命令を低水準(LL)プログラミング言語のLL命令に変換するユニットを代表する。コンパイル後は、これらのLL命令は、特定のタイプのプロセッサ又はその他のタイプのハードウェア、例えば、FPGA、ASIC、等(例えば、CPU32及びGPU36を含む)によって実行することができる。
[0050]図1の例においては、コンパイラ54は、GPUプログラム52を含むHLコードを実行するときにCPU32からGPUプログラム52を受信することができる。コンパイラ54は、LLプログラミング言語に準拠するローカルでコンパイルされたGPUプログラム56を生成するためにGPUプログラム52をコンパイルすることができる。次に、コンパイラ54は、LL命令を含むローカルでコンパイルされたGPUプログラム56を出力する。
[0051]GPU36は、概して、(GPU36内において“ローカルでコンパイルされたGPUプログラム56”というラベルが付けられた破線のボックスとして示される)ローカルでコンパイルされたGPUプログラム56を受信し、幾つかの例において、GPU36は、1つ以上の画像をレンダリングし、レンダリングされた画像をディスプレイバッファユニット44に出力する。例えば、GPU36は、表示装置42において表示されるべき幾つかのプリミティブを生成することができる。プリミティブは、線(曲線、スプライン、等を含む)、点、円、楕円、ポリゴン(典型的には、ポリゴンは、1つ以上のプリミティブの集合であると定義される)又はその他の二次元(2D)プリミティブのうちの1つ以上を含むことができる。用語“プリミティブ”は、三次元(3D)プリミティブ、例えば、立方体、円筒、球体、円錐、ピラミッド、トーラス、等を意味することもできる。概して、“プリミティブ”は、表示装置42を介して画像(又は映像データのコンテキストにおけるフレーム)としての表示のためにGPU36によってレンダリングすることが可能な基本的幾何学形又は要素を意味する。
[0052]GPU36は、1つ以上のモデル変換(状態データでも指定することができる)を適用することによってプリミティブ及びそれらのプリミティブのその他の属性(例えば、色、テクスチャ、照明、カメラ構成、又はその他の側面を定義)をいわゆる“ワールドスペース”に変換することができる。いったん変換された時点で、GPU36は、プリミティブ及びライトの座標をカメラ又は視点座標系に変換するためにアクティブなカメラ(同じく、カメラを定義する状態データにおいて指定することもできる)に関してビュー変換を適用することができる。GPU36は、アクティブなライトを考慮してプリミティブの外観をレンダリングするために頂点シェーディングを行うこともできる。GPU36は、上記のモデル、ワールドスペース又はビュースペースのうちの1つ以上において頂点シェーディングを行うことができる(ただし、それは、一般的にはワールドスペースで行われる)。
[0053]プリミティブがいったんシェーディングされた時点で、GPU36は、一例として(−1、−1、−1)及び(1、1、1)において、極点を有する単位立方体に画像を投影するための投影を行うことができる。この単位立方体は、一般的には、正規化ビューボリューム(canonical view volume)と呼ばれる。モデルを視点座標系から正規化ビューボリュームに変換した後は、GPU36は、ビューボリューム内に少なくとも部分的に常在しないプリミティブを除去するためのクリッピングを行うことができる。換言すると、GPU36は、カメラのフレーム内に存在しないプリミティブを除去することができる。次に、GPU36は、プリミティブの座標をビューボリュームからスクリーン空間にマッピングし、有効的にプリミティブの3D座標を2D座標に変換することができる。
[0054]関連するシェーディングデータでプリミティブを定義する変換及び投影された頂点が与えられた場合、GPU36は、プリミティブをラスタライズすることができる。ラスタライズ中には、GPU36は、プリミティブに関連するテクスチャを適用することができる(テクスチャは、状態データを備えることができる)。GPU36は、いずれのプリミティブ及び/又はオブジェクトがその他のオブジェクトによってオクルードされるかを決定するためにラスタライズ中に深度試験とも呼ばれるZバッファアルゴリズムを実行することもできる。Zバッファアルゴリズムは、プリミティブをそれらの深度に従ってソートし、このため、GPU36は、各プリミティブを画面に描く順序を知っている。ビニング時には(例えば、タイルに基づくレンダリングの場合)、ラスタライズ中にシェーディングを行うことができない。しかしながら、プリミティブをレンダリング時には、GPU36は、プリミティブによってカバーされた画面のピクセルに関する色を計算して設定することができる。次に、GPU36は、レンダリングされたピクセルをディスプレイバッファユニット44に出力する。
[0055]ディスプレイバッファユニット44は、画像全体がレンダリングされるまで、レンダリングされた画像のレンダリングされたピクセルを一時的に格納することができる。ディスプレイバッファユニット44は、このコンテキストでは画像フレームバッファであるとみなすことができる。ディスプレイバッファユニット44は、表示装置42上に表示されるべきレンダリングされた画像を送信することができる。ディスプレイバッファユニット44は、別個に示されて説明されているが、幾つかの例においては、記憶装置48の一部を形成することができる。
[0056]幾つかの例においては、GPU36は、画像をレンダリングするためにタイルに基づくレンダリングを実装することができる。例えば、GPU36は、画像をタイルと呼ばれる複数の部分に分割することによって画像をレンダリングするタイルに基づくアーキテクチャを実装することができる。タイルは、GPUメモリ38のサイズに基づいてサイズを決めることができる。例えば、GPU36は、GPUメモリ38に合わせてタイルをレンダリングすることができる。タイルが完成した時点で、GPU36は、GPUメモリ38から記憶装置48及び/又はディスプレイバッファユニット44にタイルを転送することができる(レンダリングされたデータ45)。GPU36がこのようにしてフレームに関連するすべてのタイルをレンダリングした後で、ディスプレイバッファユニット44は、完成した画像を表示装置42に出力することができる。複数のタイルを用いて画像をレンダリングすることは、GPUメモリ38と記憶装置48との間におけるデータ転送の量及び/又は頻度を低減させることができる。
[0057]タイルに基づくレンダリングを行うときには、GPUドライバ50は、画像をレンダリングするためのビニング構成を最初に決定することができる。例えば、GPUドライバ50は、GPUメモリ38のサイズに基づいてビンのサイズを決定することができる。さらに、GPUドライバ50は、予め決定されたビンのレイアウトを適用することができる。例えば、GPUドライバ50は、画像の左上隅において最初のビンを設定することができる。GPUドライバ50は、画像全体がビンに分割されるまで画像の左から右に及び上から下にビンを加えることができる。
[0058]GPUドライバ50は、GPUプログラム52を用いてコマンドストリームも生成する。例えば、コマンドストリームは、GPUプログラム52から画像をレンダリングするための命令を入れることができる。GPUドライバ50は、コマンドストリームに命令を追加することができ、それらは、ストリーム内で現れる順序でGPU36によって実行される。コマンドストリームは、GPUプログラム52から画像を成すプリミティブを定義することができる。
[0059]最初のビニング構成及びコマンドストリームがGPUドライバ50によって設定された後は、GPU36は、ビニングパス及びレンダリングパスを行うことができる。ビニングパスに関して、GPU36は、フレーム全体を処理し、ラスタライズされたプリミティブを(GPUドライバ50によって設定された)最初のビニング構成のビンにソートすることができる。GPU36は、ビニングパス中にビジビリティストリームを生成することもでき、それは、ビンに従って分離することができる。例えば、各ビンには、画像に関するビジビリティストリームの対応する部分を割り当てることができる。
[0060]GPUドライバ50は、ビジビリティストリームにアクセスし、各ビンをレンダリングするためのコマンドストリームを生成することができる。従って、コマンドストリームは、最初のビニング構成に従って設定することができる。すなわち、コマンドストリームは、GPU36が最初のビニング構成の順序で画像のタイルをレンダリングするように生成して順序を決めることができる。
[0061]タイルをレンダリングするときには、GPU36は、クリア/アンリゾルブ段階、レンダリング段階、及びリゾルブ段階を実行することができる。クリア/アンリゾルブ段階中には、GPU36は、レンダリングされるべき新しいタイルに関してGPUメモリを初期化する。レンダリング段階中には、GPU36は、タイルをレンダリングし、レンダリングされたタイルをGPUメモリ38に格納することができる。すなわち、GPU36は、タイルの各ピクセルに関するピクセル値を決定し、GPUメモリ38にピクセル値を書き込むことができる。リゾルブ段階中には、GPU36は、タイルの完成されたピクセル値をGPUメモリ38からディスプレイバッファユニット44(又は記憶装置48)に転送することができる。
[0062]ビジビリティストリームを用いたタイルに基づくレンダリングは、(不可視のプリミティブをスキップすることによって)より少ない数のプリミティブを処理するのを可能にする一方で、データのローディング及びGPUメモリ38への格納、及びGPUメモリ38からディスプレイバッファユニット44へのタイル全体の転送に関連する計算上のコストが存在する。例えば、タイルに基づくレンダリングとは対照的に、GPU36は、ピクセル値をGPUメモリ38に格納するのではなく、レンダリングに引き続いてディスプレイバッファユニット44(又は記憶装置48)にピクセル値を格納することによって直接データをレンダリングすることができる。直接的レンダリングの場合は、GPUドライバ50は、最終画像内で不可視であるプリミティブを識別してスキップするためにビットストリームを使用しない。むしろ、コマンドストリームは、プリミティブが可視であるかどうかにかかわらず、すべてのプリミティブをレンダリングするための命令を含む。従って、記憶装置48及び/又はディスプレイバッファユニット44内の不可視のプリミティブは、最終的には、1つ以上のその他のプリミティブに関連するピクセル値によって上書きすることができる。
[0063]ビジビリティ情報を決定してタイルに基づくレンダリング(ビンに基づくレンダリングとも呼ばれる)を行うプロセスは、典型的には、画像の少なくとも一部分が相対的に大量のオーバードローを有する状況において最も有益である。オーバードローは、1つのプリミティブを他のプリミティブの上に描くことを意味し、従って、オーバードローされたプリミティブの少なくとも一部分は可視ではない。オーバードローがほとんどない事例では、タイルに基づくレンダリングに関連するローカルメモリとシステムメモリとの間での余分のデータ転送がレーテンシーを招くことがある。
[0064]しかしながら、上記のように、GPUドライバ50は、ビンの最初の構成を決定する。さらに、GPU36は、ビンの最初の構成に基づいてビジビリティストリームを生成するためにビンに従って可視のプリミティブをソートする。従って、ビンの最初の構成に基づいてビジビリティストリームがいったん生成された時点で、GPUドライバ50は、プリミティブをレンダリングするためにコマンドストリームを変更することはできない。すなわち、例えば、GPUドライバ50は、典型的には、相対的に大量のオーバードローを有するエリアに関するタイルに基づくレンダリングコマンドストリームを生成する一方で、大量のオーバードローを有さないエリアを直接レンダリングするためにコマンドストリームを生成することはできない。むしろ、GPUドライバ50及びGPU36は、典型的には、画像全体に関してタイルに基づくレンダリング又は直接的レンダリングのいずれかを行うことにロックされる。
[0065]本開示の技法は、概して、レンダリングを最適化するためにビジビリティ情報を利用することに関するものである。例えば、本開示の態様により、GPU36及びGPUドライバ50は、特定の画像に関連するビジビリティ情報に基づいてその画像をレンダリングする方法を動的に決定することができる。このように、GPU36及びGPUドライバ50は、画像の幾つかのエリアにおいて(ビジビリティストリームを使用せず及びディスプレイバッファユニット44に直接データを格納することによって)直接的レンダリングを行うことができ、他方、同じ画像のその他のエリアでは(ビジビリティストリームを使用し及びGPUメモリ38にデータを格納することによって)タイルに基づくレンダリングを行うことができる。
[0066]従って、本開示の態様により、GPU36は、ビジビリティ情報から利益を得ることができる画像部分をレンダリングするためにタイルに基づくレンダリングを使用することができる(例えば、数多くのプリミティブ及び/又は大量のオーバードローを有する相対的に複雑なエリア)。さらに、GPU36は、タイルに基づくレンダリングの結果としてローカルのオンチップメモリからシステムメモリへのデータの転送に関連するレーテンシーが発生することになる画像部分をレンダリングするために直接的レンダリングを使用することができる。該技法を実装することは、画像がレンダリングされる効率を向上させることができる。
[0067]コンピューティングデバイス30は、単なる一例として提供され、本開示の技法を実行するその他のコンピューティングデバイス30を異なる形で配置できることが理解されるべきである。例えば、ディスプレイバッファユニット44は記憶装置48と切り離されて示され及び説明されているが、その他の例においては、ディスプレイユニットバッファ44及び記憶装置48は、同じコンポーネント内に組み入れることができる。
[0068]さらに、コンピューティングデバイス30は、明確化を目的として図1に示されていない追加のモジュール又はユニットを含むことができることが理解されるべきである。例えば、コンピューティングデバイス30は、データを送信及び受信するためのトランシーバユニットを含むことができ、及び、コンピューティングデバイス30と他のデバイス又はネットワークとの間での無線又は有線の通信を可能にする回路を含むことができる。コンピューティングデバイス30は、コンピューティングデバイス30がモバイル無線電話、例えば、スマートフォン、である例において電話通信を行うためのスピーカ及びマイク(いずれも図1には示されていない)、又はコンピューティングデバイス30がメディアプレーヤ又はタブレットコンピュータである場合のスピーカ及び/又はマイクも含むことができる。幾つかの例においては、ユーザインタフェースユニット46及び表示装置42は、コンピューティングデバイス30が外部ユーザインタフェース又はディスプレイとインタフェースするために装備されるデスクトップコンピュータ又はその他のデバイスである例ではコンピューティングデバイス30の外部に存在することができる。
[0069]図2は、コンピューティングデバイス30の一部分をより詳細に例示したブロック図である。図2の例においては、GPU36は、GPUメモリ38と、コマンドプロセッサ60と、1つ以上のシェーダプロセッサ64と、ラスタライザ68と、ビジビリティユニット72と、を含む。さらに、CPU32は、CPUメモリ34と、GPUドライバ50と、コンパイラ54と、コマンドストリーム再構成ユニット76と、を含む。図2の幾つかのユニットは、高度に一体化することができるが、概念上の目的で別々に例示されることが理解されるべきである。さらに、幾つかのユニットは、概念上の目的で単一のユニットに関して説明されるが、1つ以上の機能上のユニットを含むことができる。
[0070]図2は、グラフィックスデータをレンダリングするために本開示の技法を利用することができるGPUの単なる一例として提供される。その他の例においては、グラフィックスデータをレンダリングするための技法は、その他のコンポーネントを有する様々なその他のGPUによって実行することができる。例えば、GPU36は、画像を解析及びレンダリングすることに関連する様々なその他のコンポーネント及びユニット、例えば、入力アセンブリユニット、テクスチャユニット、スケジューリングユニット、算術論理ユニット(ALU)、又はその他の固定された機能の又はプログラマブルなGPUコンポーネントも含むことができる。
[0071]GPU36のコンポーネントは、外部のメモリ、例えば、記憶装置48(図1)、にアクセスするよりも相対的に低いレーテンシーでGPUメモリ38にアクセスすることができる。例えば、GPUメモリ38は、GPU36とオンチップであり、GPUコンポーネントと相対的に近接しているオンチップメモリであることができ、及び、GPU36内の専用メモリバスと関連付けることができる。対照的に、記憶装置48に格納されているデータにアクセスするためには、GPU36は、コンピューティングデバイス30のその他のコンポーネント(例えば、CPU32)とメモリバスを共有しなければならないことがあり、その結果、利用可能な帯域幅がより制限されることがある。
[0072]上述されるように、高帯域幅、低レーテンシーGPUメモリ38を利用するために、GPU36は、タイルに基づくレンダリングアーキテクチャを用いてグラフィックスをレンダリングすることができる。GPU36は、画像(シーンと呼ぶこともできる)をより小さい部分(例えば、タイル)に分割することができる。GPUメモリ38は、GPU36がタイルをレンダリングする間にそのタイルに関連するデータを格納することができる。タイルをレンダリング後は、GPU36は、レンダリングされたピクセルデータをリゾルブ(resolve)するか、又は、メモリバスを介してGPUメモリ38から記憶装置48にコピーすることができる。
[0073]コマンドプロセッサ60は、GPUドライバ50からコマンドストリームを読み取ることを担当することができる。例えば、図1に関して上述されるように、GPUドライバ50は、GPU36による実行のための命令を出すことができ、それらは、コマンドストリームと呼ぶことができる。コマンドプロセッサ60は、コマンドストリームの命令を読み取ること及び/又は復号することができる。幾つかの例においては、コマンドプロセッサ60は、コマンドストリームの命令が入ったバッファから読み取ることができる。コマンドプロセッサ60は、GPU36における命令の実行を開始することもできる。例えば、コマンドプロセッサ60は、シェーダプロセッサ64によって実行されるべき命令をスケジューリングするスレッドスケジューラに命令を供給することができる。
[0074]シェーダプロセッサ64は、命令を実行するのを担当することができる。例えば、シェーダプロセッサ64は、頂点、幾何、及びピクセルシェーディング動作を担当するプログラマブルなシェーディングユニットであることができる。例えば、シェーダプロセッサ64のうちの1つ以上は、シーンの三角形メッシュを生成するためにそのシーンを構成するプリミティブ(例えば、三角形)の頂点位置を決定することを担当することができる。さらに、シェーダプロセッサ64のうちの1つ以上は、三角形メッシュからプリミティブを生成すること、及びピクセルフィリング動作及びシェーディング動作を担当することができる。
[0075]シェーダプロセッサ64は、同一の形で構成することができ、又は、特定のタスクを実行するように個別に構成することができる。例えば、シェーダプロセッサ64のうちの1つは、ビニング動作を担当する“ビニングシェーダ”として指定することができ、他方、残りのシェーダプロセッサ64は、上述される頂点、幾何、又はピクセルシェーディング動作を担当することができる。
[0076]ラスタライザ68は、頂点情報を受信することができ及びシーンのプリミティブの表現を生成することができる。幾つかの例においては、ラスタライザ68は、いずれのプリミティブが最終画像において可視であるかを決定するために受信された頂点情報に予め定義された規則を適用する。ラスタライザ68は、シーンのすべての不可視のプリミティブをカリング、又は取り除くことができる。例えば、ラスタライザ68は、その他のプリミティブによって覆われており、従って、最終画像では可視ではないプリミティブを識別するためにzバッファリングを行うことができる。
[0077]ビジビリティユニット72は、固定機能ハードウェアコンポーネント及び/又はプログラマブル処理ユニットの組み合わせを含むことができる。ビジビリティユニット72は、ラスタライズされたデータをラスタライザ68から受信し、1つ以上のビジビリティストリームを生成することができる。ビジビリティストリームを生成するために、ビジビリティユニット72は、ラスタライザ68によって決定された各々のビジビリティプリミティブをビンに配分することができる。各ビンは、完成されたシーンのタイルを表すことができる。
[0078]幾つかの例においては、ビジビリティユニット72は、各々のビンに関する別々のビジビリティストリームを生成することができる。例えば、ビジビリティユニット72は、特定のビンのいずれのプリミティブが可視であり及び特定のビンのいずれのプリミティブが不可視であるかを示すためのフラグを設定することによって特定のビンに関するビジビリティストリームを生成することができる。幾つかの態様により、ビジビリティユニット72は、最終シーンにおいてプリミティブが可視であることを示すために“1”のフラグ値、最終画像においてプリミティブが可視でないことを示すために“0”のフラグ値を設定することができる。
[0079]従って、ビジビリティユニット72は、各ビンの可視プリミティブを示すフラグを備える複数のビジビリティストリームを生成することができる。幾つかの例においては、ビジビリティユニット72は、ビジビリティストリームを圧縮することができる。例えば、ビジビリティユニット72は、“0”のフラグの大きいストリングを小さくし及びビジビリティストリームを復元するために要求されるメモリの量を低減させるための圧縮方式を適用することができる。
[0080]本開示の態様により、ビジビリティユニット72は、シーンの各ビンに関するヒューリスティックデータを生成することもできる。概して、ヒューリスティックデータは、ビンの特徴を記述する。例えば、ビジビリティユニット72は、ビンのビジビリティ特徴を記述するために1つのビジビリティストリームごとに生成することができる。幾つかの例においては、ヒューリスティックデータは、ビン内のプリミティブの数、ビン内の可視プリミティブの数、ビン内の不可視の又は遮蔽されたプリミティブの数、ビン内のプリミティブのサイズ、等を含むことができる。
[0081]幾つかの例においては、本開示の態様により、ビジビリティユニット72は、ビジビリティストリーム及び/又はヒューリスティックデータに基づいて各ビンにスコアを割り当てることができる。例えば、ビジビリティユニット72は、各ビンの全体的な複雑さ、各ビンに関するオーバードローの量、等を示すスコアを各ビンに割り当てることができる。例示することを目的とする一例においては、ビジビリティユニット72は、各ビンに関するオーバードローの量に従って数字で各ビンのランクを付けることができ、ここで、0のランキングは、オーバーラップしているプリミティブがビン内に存在しないことを示し、10のランキングは、数多くのオーバーラップしているプリミティブが存在することを示す。
[0082]幾つかの例においては、1つ以上のビジビリティストリーム、ヒューリスティックデータ、及びビジビリティスコアは、すべて、概してビジビリティ情報と呼ぶことができる。すなわち、ビジビリティ情報は、ビジビリティストリーム、ヒューリスティックデータ、及びビジビリティスコアの部分組を含むことができる。
[0083]本開示の態様により、ビジビリティユニット72は、GPUドライバ50に送信されるべきビジビリティ情報を準備することができる。例えば、ビジビリティユニット72は、幾つかの例においては、ヒューリスティックデータ及び/又はビジビリティスコアをビジビリティストリームの最後に添付することができる。その他の例においては、ビジビリティユニット72は、ヒューリスティックデータ及び/又はビジビリティスコアをビジビリティストリームから別々に提供することができる。
[0084]いずれの場合も、図2において示される例では、ビジビリティ情報は、コマンドストリーム再構成ユニット76によって受信することができる。コマンドストリーム再構成ユニット76は、説明上の目的で別々に示されているが、GPUドライバ50と一体化することができ、従って、GPUドライバ50は、コマンドストリーム再構成ユニット76に関して本開示の技法を実行する。
[0085]コマンドストリーム再構成ユニット76は、ビジビリティユニット72からビジビリティ情報を受信することができる。以下においてさらに詳細に説明されるように、コマンドストリーム再構成ユニット76は、ビジビリティ情報に基づいてコマンドストリームを再構成することができる。例えば、コマンドストリーム再構成ユニット76は、元来はタイルに基づいてレンダリングされるように設定された幾つかのビンを直接的にレンダリングされるように指定することができる。他の例においては、コマンドストリーム再構成ユニット76は、新しいビンを形成するためにビニング構成を変更することができる。すなわち、コマンドストリーム再構成ユニット76は、新しいビンを生成するために1つ以上のビジビリティストリーム(又は1つ以上のビジビリティストリームの一部分)をマージすることができる。
[0086]例示することを目的とする一例においては、GPUドライバ50は、CPU32において実行されるプログラムに従ってレンダリングするために画像を定義するコマンドストリームを生成することができる。コマンドストリームは、最初のビニング構成を示すことができる。例えば、GPUドライバ50は、GPUメモリ38のサイズに基づいてビンサイズを決定することができる。さらに、GPUドライバ50は、画像を適当な数のビンに分割するために(ビンの位置に対する)予め決定されたビン配置を使用することができる。
[0087]コマンドストリームは、GPU36のコマンドプロセッサ60によって受信することができる。GPU36は、(図1に関して上述されるように)ビニングパスを実行し、画像のプリミティブに関する1つ以上のビジビリティストリームを生成することができる。すなわち、例えば、ビジビリティユニット72は、画像のいずれのプリミティブが最初のビニング構成において可視であるかを示す1つ以上のビジビリティストリームを生成することができる。
[0088]さらに、本開示の態様により、ビジビリティユニット72は、ビジビリティストリームに関するヒューリスティックデータ及び/又はビジビリティスコアを生成することができる。例えば、上述されるように、ビジビリティユニット72は、各ビン内のプリミティブの数、各ビン内の可視プリミティブの数、各ビン内の不可視プリミティブの数、プリミティブのサイズ、等を決定することができ、及び、ビジビリティユニット72は、ビジビリティ情報に基づいてビジビリティスコアをビンに割り当てることができる。
[0089]幾つかの例においては、ビジビリティユニット72は、ヒューリスティックデータ及び/又はスコアをビジビリティストリームの最後に添付することができる。その他の例においては、ビジビリティユニット72は、ヒューリスティックデータ及び/又はスコアをビジビリティストリームから別々に提供することができる。いずれの場合も、ビジビリティユニット72は、CPU32におけるコマンドストリーム再構成ユニット76にビジビリティ情報(例えば、ビジビリティストリーム、ヒューリスティックデータ及び/又はスコア)を送信することができる。
[0090]本開示の態様により、コマンドストリーム再構成ユニット76は、ビジビリティストリーム、及びビジビリティストリームを記述する追加データ(例えば、ヒューリスティックデータ及び/又はビジビリティスコアであり、復号されたビジビリティ情報と呼ぶことができる)を受信することができる。コマンドストリーム再構成ユニット76は、ビジビリティ情報に基づいてコマンドストリームを再構成するために受信されたデータを使用することができる。すなわち、コマンドストリーム再構成ユニット76は、ビジビリティ情報に基づいて画像をレンダリングするためのコマンドストリームを決定する。
[0091]幾つかの例においては、コマンドストリーム再構成ユニット76は、タイルに基づくレンダリングパスから1つ以上のビンを取り除くことができる。すなわち、コマンドストリーム再構成ユニット76は、最初のビニング構成からの1つ以上のビンを、タイルに基づいてレンダリングされるのではなく、直接レンダリングされるように指定することができる。他の例においては、コマンドストリーム再構成ユニット76は、レンダリングのための1つ以上のビンへのプリミティブの修正された配分を決定することができる。すなわち、コマンドストリーム再構成ユニット76は、ビジビリティ情報に基づいてタイルに基づくレンダリングパスに関する新しい修正されたビニング構成を動的に生成することができる。
[0092]幾つかの例においては、コマンドストリーム再構成ユニット76は、新しいビニング配置を生成するために生成されたビジビリティストリームのうちの1つ以上をマージすることができる。すなわち、コマンドストリーム再構成ユニット76は、代替のプリミティブの組を包含するために1つ以上のビンの境界を変更することによってビニング構成を変更することができる。該例においては、ビンはもはや均等には配分することができず、むしろ、ビンは、画像の複雑さに基づいて配置することができる。例えば、ビンは、オーバードローを有する画像の相対的に複雑なエリアを包含するために使用することができ、他方、画像のその他の部分は、直接レンダリングすることができる。
[0093]幾つかの例により、コマンドストリーム再構成ユニット76は、予め決定された複雑さに関するメトリックが達成されるまでビジビリティストリームをマージするためにヒューリスティックデータを使用することができる。例えば、コマンドストリーム再構成ユニット76は、制限領域成長アルゴリズム(restricted region growing algorithm)に基づいて(ビジビリティストリームを用いて)ビンの最初の構成の一部分をマージすることができる。このようにして、コマンドストリーム再構成ユニット76は、(タイルに基づくレンダリングから最も利益を得ることができる)画像の最も複雑なエリアをグループとしてまとめることができる。さらに、コマンドストリーム再構成ユニット76は、画像内の対象領域に従って直接的レンダリング及びタイルに基づくレンダリングをミックス及びマッチングすることができる。該アプローチ法は、GPU36が各パスに関してバランスのとれたレンダリングロードを達成させ、同時に空のバッチを排除するのを可能にする。
[0094]上記の幾つかの技法は、コンピューティングデバイス30の特定のコンポーネントによって実行されるとして説明されている。しかしながら、該例は、説明することのみを目的として提供されることが理解されるべきである。従って、コンピューティングシステム30の1つのコンポーネントに関する技法は、1つ以上のその他のコンポーネントによって実行することができる。例えば、ビジビリティユニット72は、ビジビリティストリームからヒューリスティックデータ及びビジビリティスコアを生成するものとして説明されるが、該機能は、幾つかの例においては、CPU32によって、例えば、コマンドストリーム再構成ユニット76又はGPUドライバ50によって、実行することができる。
[0095]他の例においては、別個のユニットに関して説明される一方で、コマンドストリーム再構成ユニット76は、CPU32及び/又はGPU36のその他のコンポーネントと高度に一体化することができることが理解されるべきである。例えば、コマンドストリーム再構成ユニット76は、GPUドライバ50と一体化することができ、従って、CPU32は、(GPUドライバ50を介して)ビジビリティ情報に基づいてコマンドストリームを再構成することを担当する。この例においては、CPU32は、最初のコマンドストリーム及び再構成されたコマンドストリームを生成するのを担当することができる。再構成されたコマンドストリームは、最初のコマンドストリームに関連するタイルに基づくレンダリングパスから1つ以上のビンを取り除くことができ、又は、直接的レンダリングのための新しい、異なるビン及び/又は指定されたエリアを含む新しいビニング配置を含めることができる。
[0096]その他の例においては、コマンドストリーム再構成ユニット76は、GPU36と一体化することができ、従って、GPUは、ビジビリティ情報に基づいてコマンドストリームを再構成することを担当する。該例においては、ビジビリティ情報は、すべてGPU36によって生成し及び利用することができる。すなわち、(GPUドライバ50を介しての)CPU32は、最初のコマンドストリームを生成することを担当することができる一方で、GPU36は、最初のコマンドストリームを再構成することを担当することができる。上記のように、再構成されたコマンドストリームは、最初のコマンドストリームに関連するタイルに基づくレンダリングパスから1つ以上のビンを取り除くことができ、又は、直接的レンダリングのための新しい、異なるビン及び/又は指定されたエリアを含む新しいビニング配置を含めることができる。
[0097]図3は、レンダリングのためのオブジェクト94を有する画像90を例示した概略図である(図3の例ではツリーとして示される)。幾つかの例においては、画像90は、上において図1及び2に関して示されて説明されるように、コンピューティングデバイス30によってレンダリングすることができる。
[0098]例えば、GPUドライバ50は、GPU36によるレンダリングのための画像90を定義するコマンドストリームを生成することができる。コマンドストリームは、オブジェクト94のプリミティブをレンダリングするための命令、及び、ビン0乃至ビン3が入っている最初のビニング構成を含むことができる。幾つかの例においては、上記のように、GPUドライバ50は、GPUメモリ38のサイズに基づいてビン0乃至3のサイズを決定することができる。例えば、GPUドライバ50は、各々のビンに関連するデータをGPUメモリ38に格納することができるような形でビン0乃至3のサイズを設定することができる。さらに、GPUドライバ50は、画像90をビン0乃至3に分割するために予め決定されたビン配置を使用することができる。すなわち、図3の例においては、GPUドライバ50は、画像90の左から右に及び上から下にビンを配置することができる。従って、GPU36は、画像を左から右に及び上から下にレンダリングすることができ、最初にビン0をレンダリングし、ビン1、ビン2、及びビン3が後続する。GPUドライバ50は、最初のビニング構成を決定するように予め構成することができる。
[0099]上記のように、直接的レンダリングとタイルに基づくレンダリングとの間には1つのトレードオフが存在する。ビジビリティ情報を用いたタイルに基づくレンダリングは、幾つかのオクルードされているプリミティブをスキップしてシェーダプロセッサ64の負担を軽くするのを可能にすることができる。しかしながら、データのビン全体をローカルのGPUメモリ38にローディングすること(ロード)、及び、完成されたタイルをローカルのGPUメモリ38から記憶装置48に転送すること(リゾルブ)に関連するコストが存在する。対照的に、直接的レンダリングは、すべてのプリミティブをシェーディングして直接記憶装置48に書き込むことによってこれらのロードコスト及びリゾルブコストを排除する。しかしながら、幾つかのプリミティブは、記憶装置48に書き込まれ、その後に1つ以上のその他のプリミティブによって上書きされ、不必要なシェーディングをシェーダプロセッサ64に行わせる場合がある。
[0100]従って、ビジビリティ情報を決定してタイルに基づくレンダリングを行うプロセスは、典型的には、画像の少なくとも一部分が相対的に大量のオーバードローを有する状況において最も有益である。すなわち、不可視のプリミティブをスキップしてシェーディング負荷を軽減する能力は、相対的に大量のオーバードローを呈する画像エリアにおいてタイルに基づくレンダリングのロード段階及びリゾルブ段階に関連するレーテンシーよりも重要である。逆に、小量のオーバードローが存在する例においては、記憶装置48に直接データを格納する能力(直接的レンダリング)は、タイルに基づくレンダリングのロード段階及びリゾルブ段階に関連するレーテンシーよりも重要である。
[0101]図3において示されるように、オブジェクト94のほとんどは、画像90の左側に向かって配置される。さらに、オブジェクト94のうちの幾つかの部分のみがオーバードローの対象となる。例えば、ビン0内のオブジェクト94の最上部分(ツリーの最上部分)のみがオーバードローの対象となる。画像90の残りの部分は、有意な量のオーバードローの対象にはならない。
[0102](ビジビリティストリームを用いて)ビン0乃至3をレンダリングするためのタイルに基づくレンダリングを実装することによって、GPU36は、直接的レンダリングに関して要求されることになるよりも少ないプリミティブをレンダリングすることができる。すなわち、オーバードローを有するビン0のエリアでは、GPU36は、オブジェクト94のオクルードされている部分に関連するプリミティブをスキップするためにビジビリティストリームを使用することができる。しかしながら、ビン1乃至3に関連するオブジェクト94の部分は、ほとんど又はまったくオーバードローを有さない。
[0103]概して、GPUドライバ50は、GPU36によって生成されたビジビリティストリームを変更することができず、最初のビニング構成に従って画像90をレンダリングするためのコマンドストリームを生成することにロックされる。すなわち、ビン1乃至3はほとんど又はまったくオーバードローを有さないにもかかわらず、GPUドライバ50は、動作中にタイルに基づくレンダリングから直接的レンダリングに切り換わることができない。さらに、GPUドライバ50は、ビンの配置を変えることはできない。
[0104]本開示の技法は、概して、レンダリングを最適化するためにビジビリティ情報を利用することに関するものである。例えば、以下において図4及び5に関して説明されるように、画像90をレンダリングする方法は、ビジビリティ情報に基づいて動的に決定することができる。
[0105]図4は、図3の画像を例示する他のブロック図である。図4の例は、概して、画像90をレンダリングするための修正されたビニング構成を例示する。例えば、図4において示される修正されたビニング構成は、図3において示される最初のビニング構成から直接1つ以上のビンをレンダリングするかどうかを示す。
[0106]本開示の態様により、GPU36は、最初のビニングパスを行うときにビジビリティストリームに加えてヒューリスティックデータを生成することができる。ヒューリスティックデータは、例えば、各ビン内のプリミティブの数、各ビン内の可視プリミティブの数、各ビン内の不可視プリミティブの数、プリミティブのサイズ、等を含むことができる。幾つかの例においては、GPU36は、ヒューリスティックデータ及び/又はビジビリティストリームに基づいてビジビリティスコアを生成することもできる。ビジビリティスコアは、ビンの複雑さ、ビンの相対的なオーバードロー量、等を示すことができる。
[0107]GPU36は、ビジビリティ情報(例えば、ビジビリティストリーム、ヒューリスティックデータ、及び/又はビジビリティスコア)をGPUドライバ50に送信することができる。本開示の態様により、GPUドライバ50は、ビジビリティ情報に基づいてビニング構成を修正することができる。例えば、最初のビニング構成にロックされるのではなく(図3)、GPUドライバ50は、レンダリングを最適化するために修正されたビニング構成を動的に決定することができる。
[0108]図4の例においては、修正されたビニング構成は、図3において示される最初のビニング構成から直接ビンをレンダリングすることを含む。例えば、GPUドライバ50は、ビジビリティ情報に基づいてオリジナルのビン0乃至3の特徴を決定することができる(図3)。すなわち、GPUドライバ50は、オリジナルのビニング構成のビン1、ビン2、及びビン3は、レンダリングされるべきプリミティブをほとんど有さず、大量のオーバードローは含まないと決定することができる。
[0109]GPUドライバ50は、直接的レンダリングを用いてオリジナルのビニング構成のビン1、ビン2、及びビン3をレンダリングするためにビニング構成を修正することができる。例えば、GPUドライバ50は、タイルに基づくレンダリングを用いてビン0(オーバードローを有するオブジェクト94を含む)をレンダリングし及び直接的レンダリングを用いてビン1乃至3(プリミティブ及びオーバードローをほとんど有さない)をレンダリングするための命令を生成することができる。従って、GPUドライバ50は、タイルに基づくレンダリングパスからビン1乃至3を取り除き、その代わりに、GPU36が直接的レンダリングを用いて該ビンをレンダリングするための命令を出す。
[0110]このようにして、GPUドライバ50は、画像90のレンダリングパスを最適化する。例えば、オクルードされたプリミティブをスキップする利益がロード段階及びリゾルブ段階に関連するコストよりも重要である画像90の部分をレンダリングするためにタイルに基づくレンダリングが使用される。さらに、ロード段階及びリゾルブ段階が不必要なレーテンシーを招く画像90の部分をレンダリングするために直接的レンダリングが使用される。
[0111]図5は、図3の画像を例示した他のブロック図である。図5の例は、概して、画像90をレンダリングするための他の修正されたビニング構成を例示する。例えば、図5において示される修正されたビニング構成は、新しいビン0へのプリミティブ94の修正された配分を含む。
[0112]図4に関して上記されるように、本開示の態様により、GPUドライバ50は、受信されたビジビリティ情報に基づいてビニング構成を修正することができる。例えば、最初のビニング構成にロックするのではなく(図3)、GPUドライバ50は、レンダリングを最適化するために修正されたビニング構成を動的に決定することができる。
[0113]GPUドライバ50は、最初に、ビジビリティ情報に基づいてオリジナルのビン0乃至3の特徴を決定することができる(図3)。すなわち、GPUドライバ50は、オリジナルのビニング構成のビン1、ビン2、及びビン3は、レンダリングされるべきプリミティブをほとんど有さず、大量のオーバードローは含まないと決定することができる。GPUドライバ50は、ビンの代替の配置を有する新しいビニング構成を生成することができる。
[0114]図5の例においては、GPUドライバ50は、オブジェクト94を含む新しいビン0を決定することができる。例えば、GPUドライバ50は、新しいビン0に関するビジビリティストリームを生成するためにオリジナルのビン0乃至3に関するビジビリティストリームの部分をマージすることができる(図3)。このようにして、GPUドライバ50は、オブジェクト94を包含するためにオリジナルのビン0乃至3の境界を変更することができる。
[0115]従って、GPUドライバ50は、画像90の最も複雑なエリアを包含するために新しいビン0を配置することができ、その一方で、画像90のその他の部分を直接レンダリングするように指定することができる(“直接的”)。幾つかの例においては、GPUドライバ50は、予め決定された複雑さに関するメトリックが達成されるまでビジビリティストリームをマージするためにビジビリティ情報を使用することができる。例えば、GPUドライバ50は、制限領域成長アルゴリズムに基づいてビンの最初の構成の一部分をマージすることができる。複雑さに関するメトリックを達成させることができない場合は、GPUドライバ50は、ビンの残りの部分を直接レンダリングするように指定することができる。
[0116]図5の例においては、GPUドライバ50は、オブジェクト94の周囲における領域を成長させることを開始する領域成長アルゴリズムを実装することができる。GPUドライバ50は、予め決定されたビンのサイズが達成されるまで領域を成長させることを続けることができ、それによって新しいビン0が生成される。次に、GPUドライバ50は、他の領域成長アルゴリズムを開始することができる。画像90の残りの部分は複雑でない、例えば、相対的にプリミティブをほとんど有さず、相対的にオーバードローがほとんどないため、GPUドライバ50は、画像90の残りの部分は直接レンダリングされるように指定することができる(ビニング及び/又はビジビリティ情報を有さない)。
[0117]このようにして、GPUドライバ50は、画像90のレンダリングパスを最適化する。例えば、オクルードされたプリミティブをスキップする利益がロード段階及びリゾルブ段階に関連するコストよりも重要である画像90の部分をレンダリングするためにタイルに基づくレンダリングが使用される。さらに、ロード段階及びリゾルブ段階が不必要なレーテンシーを招く画像90の部分をレンダリングするために直接的レンダリングが使用される。
[0118]幾つかの例により、GPUドライバ50は、2つ以上の画像(フレーム)に関して特定のビニング配置を利用することができる。例えば、図5に関して、画像90に関するレンダリングパスを最適化した時点で、GPUドライバ50は、画像90に関連する最適化されたビニング構成を画像のシーケンス内の1つ以上のその他の画像に適用することができる。すなわち、画像の一部分は画像のシーケンス内では大きく変化しないと認識して(例えば、バックグラウンドオブジェクト)、GPUドライバ50は、画像90に関する最適化されたビニング構成を1つ以上の後続する画像に関する最初のビニング構成として利用することができる。このようにして、GPUドライバ50は、画像のシーケンス内の画像の部分組に関してしか図4及び5に関して説明される最適化を実行することができない。
[0119]図3乃至5において示される例は、コンピューティングデバイス30に関して説明される一方で、技法は、様々なその他のコンポーネントを有する様々なその他のコンピューティングデバイスによって実行できることが理解されるべきである。
[0120]図6は、ビニングプロセス例を示した流れ図である。図6において示されるプロセスは、CPU32及び/又はGPU36によって実行されるとして説明されるが(図1及び2)、技法は、様々なその他の処理ユニットによって実装することができる。
[0121]図6の例においては、GPUドライバ50は、CPU32によって実行され、最初に、グラフィックスデータをレンダリングするために最初のビニング構成を有する最初のコマンドストリームを生成する(120)。例えば、GPUドライバ50は、GPU36の構成、例えば、GPUメモリ38のサイズ、に基づいてビンサイズを決定するように構成することができる。GPUドライバ50は、決定されたビンサイズのビンを用いて予め決定されたビン配置を適用するように構成することもできる。
[0122]GPU36は、最初のビニング構成に関するビジビリティストリームを決定することができる(122)。例えば、GPU36は、レンダリング中の画像のプリミティブを生成するためにコマンドストリームを処理することができる。GPU36は、最初のビニング構成のビンにプリミティブを配分することもできる。GPU36は、各ビンにおいていずれのプリミティブが可視であるかを示すためのビジビリティストリームを生成することができる。
[0123]本開示の態様により、GPU36は、最初のビニング構成のビンに関するヒューリスティックデータを生成することもできる(124)。ヒューリスティックデータは、例えば、各ビン内のプリミティブの数、各ビン内の可視プリミティブの数、各ビン内の不可視プリミティブの数、プリミティブのサイズ、等を含むことができる。幾つかの例においては、GPU36は、ビジビリティスコアをビンに割り当てるためにビジビリティストリーム及び/又はヒューリスティックデータを使用することができる。ビジビリティスコアは、ビンの複雑さ、ビンのオーバードローの量、等を示すことができる。
[0124]GPUドライバ50は、ビジビリティストリーム及びヒューリスティックデータを受信することができ及びビジビリティ情報を解析することができる(126)。例えば、GPUドライバ50は、画像の複雑さを決定し、オーバードローを有する画像エリアを識別し、等であることができる。GPUドライバ50は、ビジビリティストリーム及び/又はヒューリスティックデータに基づいてデータをレンダリングするために、最初のコマンドストリームと異なる第2のコマンドストリームを生成するためにビジビリティ情報を使用することもできる(128)。例えば、GPUドライバ50は、最初のビニング構成からのビンのうちの1つ以上を直接レンダリングされるように指定することができる。他の例においては、GPUドライバ50は、1つ以上の新しいビンを含む、最初のビニング構成と異なる新しいビニング構成を生成することができる。
[0125]GPU36は、第2のコマンドストリームを受信し、第2のコマンドストリームに基づいて画像をレンダリングすることができる(130)。すなわち、GPU36は、第2のコマンドストリームを用いて画像のピクセルに関するピクセル値を決定することができ及び提示のために画像を出力することができる。
[0126]図6において示されるステップは、単なる一例として提供されることが理解されるべきである。すなわち、図6において示されるステップは、必ずしも示される順序で実行される必要はなく、それよりも少ない、追加の、又は代替のステップを実行することができる。さらに、幾つかの機能は、GPUドライバ50及びGPU36に関するものであるが、該機能は、異なるコンポーネントによって実行することができる。例えば、代替態様により、上述されるようにGPU36ではなく、GPUドライバ50が、生のビジビリティストリームからヒューリスティックデータを生成することを担当することができる。
[0127]さらに、図6は、最初のビニング構成及び修正されたビニング構成に関して説明される。本開示の技法は、このようには限定されない。例えば、GPU36は、最初のビニング構成を考慮せずに、画像全体に関するビジビリティ情報を生成することができる。この例では、GPUドライバ50は、画像全体に関するビジビリティ情報に基づいてデータをレンダリングするために最適なコマンドストリームを生成することができる。
[0128]図7は、本開示の態様による、グラフィックスをレンダリングするためのプロセス例を示した流れ図である。図7において示されるプロセスは、GPU36によって実行されるとして説明されるが(図1及び2)、技法は、様々なその他の処理ユニットによって実装することができる。
[0129]図7の例においては、GPU、例えば、GPU36、は、グラフィックスデータの画像をレンダリングするための最初のビニング構成を有するコマンドストリームを受信する(150)。コマンドストリームは、画像を記述する命令を含むことができる。GPU36は、最初のビニング構成に関する1つ以上のビジビリティストリームを生成することができる(152)。例えば、GPU36は、コマンドストリームを用いて画像に関するプリミティブを生成することができる。GPU36は、画像内の可視のプリミティブを識別し、一連のフラグを用いてコマンドストリーム内においてそれらの可視のプリミティブを示すことができる。ビジビリティストリームは、各々のビンごとに、又は画像全体に関して生成することができる。
[0130]GPU36は、生成されたビジビリティストリームを復号することもできる(154)。例えば、GPU36は、ビンを記述するデータを生成することができる。すなわち、GPU36は、各ビン内のプリミティブの数、各ビン内の可視プリミティブの数、各ビン内の不可視プリミティブの数、プリミティブのサイズ、等を示すことができる。幾つかの例においては、GPU36は、スコアをビンに割り当てることができる。スコアは、各ビンの全体的な複雑さ、各ビンに関するオーバードローの量、等を示すことができる。GPU36は、この復号されたビジビリティデータをビジビリティストリームとともに提供することができ(例えば、ビジビリティストリームの最後に添付される)又は復号されたビジビリティデータを別々に提供することができる。
[0131]GPU36は、最初のビニング構成を用いて画像をレンダリングすべきかどうか、又は、レンダリング中に修正されたビニング構成を使用すべきかどうかを決定することができる(156)。例えば、GPU36は、最初のビニング構成と異なるビニング構成を有する画像をレンダリングするためのコマンドストリームを受信することができる。異なるビニング構成は、ビジビリティストリーム及び/又はビン(復号されたビジビリティストリーム)を記述するデータに基づくことができる。その決定は、画像をレンダリングするためのコマンドストリームを出すドライバ、例えば、GPUドライバ50、からの命令に基づいて行うことができる。
[0132]修正されたビニング構成が使用される場合は(ステップ156の“はい”分岐)、GPU36は、ビジビリティストリーム及び復号されたビジビリティストリームデータに基づいて修正されたビニング構成を受信することができる(158)。GPU36は、修正されたビニング構成を用いて画像をレンダリングすることができる(160)。修正されたビニング構成が使用されない場合は(ステップ156の“いいえ”分岐)、GPUは、最初のビニング構成を用いて画像をレンダリングすることができる(160)。
[0133]図7において示されるステップは、単なる一例として提供されることが理解されるべきである。すなわち、図7において示されるステップは、必ずしも示される順序で実行される必要はなく、それよりも少ない、追加の、又は代替のステップを実行することができる。
[0134]図8は、本開示の態様による、グラフィックスをレンダリングするための他のプロセス例を示した流れ図である。図8において示されるプロセスは、(GPUドライバ50を介して)CPU32によって実行されるとして説明されるが(図1及び2)、技法は、様々なその他の処理ユニットによって実装することができる。
[0135]図8の例においては、GPUドライバ(例えば、GPUドライバ50)は、GPU(例えば、GPU36)によってレンダリング中の画像のビンに関連するビジビリティ情報を受信することができる(180)。ビジビリティ情報は、例えば、1つ以上のビジビリティストリーム、及び復号されたビジビリティデータを含むことができる。例えば、GPUドライバ50は、各ビン内のプリミティブの数を示すデータ、各ビン内の可視プリミティブの数、各ビン内の不可視プリミティブの数を示すデータ、プリミティブのサイズを示すデータ、等を受信することができる。幾つかの例においては、GPUドライバ50は、各ビンに関するスコアを受信することもできる。スコアは、各ビンの全体的な複雑さ、各ビンに関するオーバードローの量、等を示すことができる。
[0136]GPUドライバ50は、ビジビリティ情報を解析することができる(182)。幾つかの例においては、GPUドライバ50は、予め決定された複雑さに関するメトリックが達成されるまでビジビリティストリームをマージすることができる。例えば、GPUドライバ50は、制限領域成長アルゴリズムに基づいてビジビリティストリームの一部分をマージすることができる。その他の例においては、GPUドライバ50は、受信されたビジビリティスコアをスレショルドと比較することができる。
[0137]GPUドライバ50は、解析に基づいてビンへのプリミティブの配分を決定することもできる(184)。例えば、GPUドライバ50は、タイルに基づくレンダリングに関して相対的に大量のオーバードローを有する画像のエリアを指定することができる。この例においては、GPUドライバ50は、指定されたエリアを包含する1つ以上のビンを生成することができる。さらに、GPUドライバ50は、ビンに関する1つ以上のビジビリティストリームを生成することができる。これらのビンは、指定されたエリアに関するタイルに基づくレンダリングを行うためにGPU36によって使用することができる。GPUドライバ50は、直接的レンダリングに関して相対的に小量のオーバードローを有するエリアを指定することもできる。これらのエリアでは、GPUドライバ50は、ビジビリティストリームを生成することができず、従って、直接的レンダリングのための情報は要求されない。
[0138]GPUドライバ50は、幾つかの例においては、(ステップ180からの)受信されたビジビリティ情報が生成される基礎になる最初のビニング構成を生成することができる。この例では、GPUドライバ50は、最初のビニング構成を実装すべきかどうか、又は解析に基づいてビニング構成を修正すべきかどうかを決定することができる。
[0139]例えば、GPUドライバ50は、上記の解析に基づいて直接的レンダリングに関する最初のビニング構成の1つ以上のビンを指定することができる。すなわち、GPUドライバ50は、複雑さメトリック又はビジビリティスコアに基づいてビンが直接的レンダリングされるべきか又はタイルに基づくレンダリングがされるべきかを指定することができる。例示することを目的とする一例において、ビジビリティスコアが予め決定されたスレショルドを上回る(例えば、高い複雑さ及び/又は大量のオーバードローを示す)場合は、GPUドライバ50は、ビンがタイルに基づいてレンダリングされるように指定することができる。対照的に、ビジビリティスコアがスレショルドを下回る(例えば、プリミティブ及び/又はオーバードローがほとんどない)場合は、GPUドライバ50は、ビンが直接的レンダリングされるように指定することができる。
[0140]他の例においては、GPUドライバ50は、最初のビニング構成を廃棄して新しいビニング構成を選択することができる。この例では、GPUドライバ50は、解析に基づいて1つ以上の新しいビンを生成することができる。さらに、GPUドライバ50は、上記のように、ビンに関する1つ以上のビジビリティストリームを生成することができる。
[0141]ビンへのプリミティブの配分を決定後は、GPUドライバ50は、決定されたビニング構成に従って画像をレンダリングするための命令を有するコマンドストリームを生成することができる(186)。コマンドストリームは、画像をレンダリングするためにGPU36によって実行することができる。
[0142]図8において示されるステップは、単なる一例として提供されることが理解されるべきである。すなわち、図8において示されるステップは、必ずしも示される順序で実行される必要はなく、それよりも少ない、追加の、又は代替のステップを実行することができる。
[0143]例に依存して、ここにおいて説明されるいずれかの方法の幾つかの行為又はイベントは、異なったシーケンスで行うことができ、追加すること、統合すること、又はすべて省略することができることも理解されるべきである(例えば、方法の実践のためにすべての説明される行為又はイベントが必要であるわけではない)。さらに、幾つかの例では、行為又はイベントは、順次ではなく、マルチスレッド処理、割り込み処理、又は複数のプロセッサを通じて、同時並行して行うことができる。
[0144]1つ以上の例において、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせにおいて実装することができる。ソフトウェアにおいて実装される場合は、それらの機能は、非一時的なコンピュータによって読み取り可能な媒体を備える製造品において1つ以上の命令又はコードとして格納することができる。コンピュータによって読み取り可能な媒体は、コンピュータデータ記憶媒体を含むことができる。データ記憶媒体は、本開示において説明される技法の実装のために命令、コード及び/又はデータ構造を取り出すために1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスすることができるあらゆる利用可能な媒体であることができる。一例により、及び制限することなしに、該コンピュータによって読み取り可能な媒体は、希望されるプログラムコードを命令又はデータ構造の形態で搬送又は格納するために使用することができ及びコンピュータによってアクセス可能であるRAM、ROM、EEPROM、CD−ROM又はその他の光学ディスク記憶装置、磁気ディスク記憶装置、又はその他の磁気記憶デバイス、フラッシュメモリ、又はその他のいずれかの媒体、を備えることができる。ここにおいて用いられるときのディスク(disk及びdisc)は、コンパクトディスク(CD)(disc)と、レーザーディスク(登録商標)(disc)と、光ディスク(disc)と、デジタルバーサタイルディスク(DVD)(disc)と、フロッピー(登録商標)ディスク(disk)と、blu−rayディスク(disc)と、を含み、ここで、diskは、通常は磁気的にデータを複製し、discは、レーザを用いて光学的にデータを複製する。上記の組み合わせも、コンピュータによって読み取り可能な媒体の適用範囲内に含められるべきである。
[0145]コードは、1つ以上のプロセッサ、例えば、1つ以上のDSP、汎用マイクロプロセッサ、ASIC、FPGA、又はその他の同等の集積又はディスクリート論理回路によって実行することができる。さらに、幾つかの態様では、ここにおいて説明される機能は、専用のハードウェア及び/又はソフトウェアモジュール内において提供することができる。さらに、技法は、1つ以上の回路又は論理素子内に完全に実装することが可能である。
[0146]本開示の技法は、無線ハンドセット、集積回路(IC)、又は一組のIC(例えば、チップセット)を含む非常に様々なデバイス又は装置内に実装することができる。本開示では、開示される技法を実施するように構成されたデバイスの機能上の態様を強調するために様々なコンポーネント、モジュール、又はユニットが説明されるが、異なるハードウェアユニットによる実現は必ずしも要求しない。むしろ、上述されるように、様々なユニットは、適切なソフトウェア及び/又はファームウェアと関係させて、コーデックハードウェアユニット内において結合させること又は上述されるように1つ以上のプロセッサを含む相互運用的なハードウェアユニットの集合によって提供することができる。
[0147]様々な例が説明されている。これらの及びその他の例は、以下の請求項の範囲内である。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
画像をレンダリングするための方法であって、
前記画像の可視のプリミティブを示すビジビリティ情報を生成することと、
ビニング構成を用いて前記画像をレンダリングすることと、を備え、前記ビニング構成は、前記ビジビリティ情報に基づく、方法。
[C2]
前記ビジビリティ情報は、1つ以上の予め決定されたビンへの前記可視のプリミティブの最初のタイルに基づく配分を示す最初のビニング構成と関連付けられ、
前記ビニング構成は、前記最初のビニング構成からの修正されたビニング構成を備え、
前記ビニング構成を用いて前記画像をレンダリングすることは、前記修正されたビニング構成を用いて前記画像をレンダリングすることを備えるC1に記載の方法。
[C3]
前記修正されたビニング構成は、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備え、
前記ビニング構成を用いて前記画像をレンダリングすることは、直接的レンダリング及び前記修正されたビニング構成の組み合わせを用いて前記画像をレンダリングすることを備えるC2に記載の方法。
[C4]
前記修正されたビニング構成は、前記最初のビニング構成からの1つ以上のビンを直接レンダリングすべきかどうかの指示を備えるC2に記載の方法。
[C5]
前記修正されたビニング構成は、1つ以上の新しいビンへの前記可視のプリミティブの修正された配分を有する前記1つ以上の新しいビンの指示を備えるC2に記載の方法。
[C6]
ビジビリティ情報を生成することは、前記可視のプリミティブを示すビジビリティストリームを生成することと、前記画像のプリミティブに関連するヒューリスティックデータを生成することと、を備えるC1に記載の方法。
[C7]
前記ヒューリスティックデータを生成することは、前記プリミティブに関連するオーバードローの量を示すデータを生成することを備えるC6に記載の方法。
[C8]
前記ヒューリスティックデータを生成することは、前記画像の予め決定されたエリア内のプリミティブの数を示すデータを生成することを備えるC6に記載の方法。
[C9]
前記ヒューリスティックデータを生成することは、前記画像の予め決定されたエリア内のプリミティブのサイズを示すデータを生成することを備えるC6に記載の方法。
[C10]
前記ビジビリティ情報に基づいて前記ビニング構成を生成することをさらに備えるC1に記載の方法。
[C11]
画像をレンダリングするための装置であって、
前記画像の可視のプリミティブを示すビジビリティ情報を生成し、及び
ビニング構成を用いて前記画像をレンダリングするように構成された1つ以上のプロセッサを備え、前記ビニング構成は、前記ビジビリティ情報に基づく、装置。
[C12]
前記ビジビリティ情報は、1つ以上の予め決定されたビンへの前記可視のプリミティブの最初のタイルに基づく配分を示す最初のビニング構成と関連付けられ、
前記ビニング構成は、前記最初のビニング構成からの修正されたビニング構成を備え、
前記ビニング構成を用いて前記画像をレンダリングするために、前記1つ以上のプロセッサは、前記修正されたビニング構成を用いて前記画像をレンダリングするように構成されるC11に記載の装置。
[C13]
前記修正されたビニング構成は、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備え、
前記ビニング構成を用いて前記画像をレンダリングするために、前記1つ以上のプロセッサは、直接的レンダリング及び前記修正されたビニング構成の組み合わせを用いて前記画像をレンダリングするように構成されるC12に記載の装置。
[C14]
前記修正されたビニング構成は、前記最初のビニング構成からの1つ以上のビンを直接レンダリングすべきかどうかの指示を備えるC12に記載の装置。
[C15]
前記修正されたビニング構成は、1つ以上の新しいビンへの前記可視のプリミティブの修正された配分を有する前記1つ以上の新しいビンの指示を備えるC12に記載の装置。
[C16]
ビジビリティ情報を生成するために、前記1つ以上のプロセッサは、前記可視のプリミティブを示すビジビリティストリームを生成するように、及び前記画像のプリミティブに関連するヒューリスティックデータを生成するように構成されるC11に記載の装置。
[C17]
前記ヒューリスティックデータを生成するために、前記1つ以上のプロセッサは、前記プリミティブに関連するオーバードローの量を示すデータを生成するように構成されるC16に記載の装置。
[C18]
前記ヒューリスティックデータを生成するために、前記1つ以上のプロセッサは、前記画像の予め決定されたエリア内のプリミティブの数を示すデータを生成するように構成されるC16に記載の装置。
[C19]
前記ヒューリスティックデータを生成するために、前記1つ以上のプロセッサは、前記画像の予め決定されたエリア内のプリミティブのサイズを示すデータを生成するように構成されるC16に記載の装置。
[C20]
前記1つ以上のプロセッサは、前記ビジビリティ情報に基づいて前記ビニング構成を生成するようにさらに構成されるC11に記載の装置。
[C21]
画像をレンダリングするための装置であって、
前記画像の可視のプリミティブを示すビジビリティ情報を生成するための手段と、
ビニング構成を用いて前記画像をレンダリングするための手段と、を備え、前記ビニング構成は、前記ビジビリティ情報に基づく、装置。
[C22]
前記ビジビリティ情報は、1つ以上の予め決定されたビンへの前記可視のプリミティブの最初のタイルに基づく配分を示す最初のビニング構成と関連付けられ、
前記ビニング構成は、前記最初のビニング構成からの修正されたビニング構成を備え、
前記ビニング構成を用いて前記画像をレンダリングするための前記手段は、前記修正されたビニング構成を用いて前記画像をレンダリングするための手段を備えるC21に記載の装置。
[C23]
前記修正されたビニング構成は、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備え、
前記ビニング構成を用いて前記画像をレンダリングするための前記手段は、直接的レンダリング及び前記修正されたビニング構成の組み合わせを用いて前記画像をレンダリングするための手段を備えるC22に記載の装置。
[C24]
ビジビリティ情報を生成するための前記手段は、前記可視のプリミティブを示すビジビリティストリームを生成するための手段と、前記画像のプリミティブに関連するヒューリスティックデータを生成するための手段と、を備えるC21に記載の装置。
[C25]
前記ビジビリティ情報に基づいて前記ビニング構成を生成するための手段をさらに備えるC21に記載の装置。
[C26]
非一時的なコンピュータによって読み取り可能な記憶媒体であって、実行されたときに、
前記画像の可視のプリミティブを示すビジビリティ情報を生成すること、及び
ビニング構成を用いて前記画像をレンダリングすることを1つ以上のプロセッサに行わせる命令が格納され、前記ビニング構成は、前記ビジビリティ情報に基づく、非一時的なコンピュータによって読み取り可能な記憶媒体。
[C27]
前記ビジビリティ情報は、1つ以上の予め決定されたビンへの前記可視のプリミティブの最初のタイルに基づく配分を示す最初のビニング構成と関連付けられ、
前記ビニング構成は、前記最初のビニング構成からの修正されたビニング構成を備え、
前記ビニング構成を用いて前記画像をレンダリングするために、前記命令は、前記修正されたビニング構成を用いて前記画像をレンダリングすることを前記1つ以上のプロセッサに行わせるC26に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
[C28]
前記修正されたビニング構成は、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備え、
前記ビニング構成を用いて前記画像をレンダリングするために、前記命令は、直接的レンダリング及び前記修正されたビニング構成の組み合わせを用いて前記画像をレンダリングすることを前記1つ以上のプロセッサに行わせるC27に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
[C29]
ビジビリティ情報を生成するために、前記命令は、前記可視のプリミティブを示すビジビリティストリームを生成すること、及び前記画像のプリミティブに関連するヒューリスティックデータを生成することを前記1つ以上のプロセッサに行わせるC26に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
[C30]
前記ビジビリティ情報に基づいて前記ビニング構成を生成することを前記1つ以上のプロセッサに行わせるさらなる命令を備えるC26に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
[C31]
画像をレンダリングするための方法であって、
前記画像の可視のプリミティブを示すビジビリティ情報を受信することと、
前記ビジビリティ情報に基づいて1つ以上のビンへの複数のプリミティブの配分を構成するビニング構成を決定することと、を備える、方法。
[C32]
前記ビジビリティ情報を受信することは、ビジビリティストリームを受信することと、前記複数のプリミティブに関連するヒューリスティックデータを受信することと、を備えるC31に記載の方法。
[C33]
前記ヒューリスティックデータは、前記複数のプリミティブに関連するオーバードローの量を示すデータを備えるC32に記載の方法。
[C34]
前記ヒューリスティックデータは、前記画像の予め決定されたエリア内のプリミティブの数を示すデータを備えるC32に記載の方法。
[C35]
前記ヒューリスティックデータは、前記画像の予め決定されたエリア内のプリミティブのサイズを示すデータを備えるC32に記載の方法。
[C36]
前記ビジビリティ情報は、複数のビジビリティストリームを備え、前記ビニング情報を決定することは、前記ビジビリティストリームのうちの少なくとも2つをマージすることを備えるC31に記載の方法。
[C37]
予め決定されたビン配置及び前記画像をレンダリングするGPUに関連するメモリの量に基づいてタイルに基づくレンダリングに関する1つ以上の最初のビンへの前記複数のプリミティブの最初の配分を備える最初のビニング構成を決定することをさらに備えるC31に記載の方法。
[C38]
前記ビニング構成を決定することは、前記最初のビニング構成からの修正されたビニング構成を決定することを備え、
前記修正されたビニング構成を決定することは、タイルに基づくレンダリングに関する前記最初のビンのうちの1つ以上を直接レンダリングされるように指定することを備えるC37に記載の方法。
[C39]
前記ビニング情報を決定することは、前記最初のビニング構成からの修正されたビニング構成を決定することを備え、
前記修正されたビニング構成は、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備えるC37に記載の方法。
[C40]
画像をレンダリングするための装置であって、
前記画像の可視のプリミティブを示すビジビリティ情報を受信し、及び
前記ビジビリティ情報に基づいて1つ以上のビンへの複数のプリミティブの配分を備えるビニング構成を決定するように構成された1つ以上のプロセッサを備える、装置。
[C41]
前記ビジビリティ情報を受信するために、前記1つ以上のプロセッサは、ビジビリティストリームを受信し及び前記複数のプリミティブに関連するヒューリスティックデータを受信するように構成されるC40に記載の装置。
[C42]
前記ヒューリスティックデータは、前記複数のプリミティブに関連するオーバードローの量を示すデータを備えるC41に記載の装置。
[C43]
前記ヒューリスティックデータは、前記画像の予め決定されたエリア内のプリミティブの数を示すデータを備えるC41に記載の装置。
[C44]
前記ヒューリスティックデータは、前記画像の予め決定されたエリア内のプリミティブのサイズを示すデータを備えるC41に記載の装置。
[C45]
前記ビジビリティ情報は、複数のビジビリティストリームを備え、前記ビニング構成を決定するために、前記1つ以上のプロセッサは、前記ビジビリティストリームのうちの少なくとも2つをマージするように構成されるC40に記載の装置。
[C46]
前記1つ以上のプロセッサは、
予め決定されたビン配置及び前記画像をレンダリングするGPUに関連するメモリの量に基づいてタイルに基づくレンダリングに関する1つ以上の最初のビンへの前記複数のプリミティブの最初の配分を備える最初のビニング構成を決定するようにさらに構成されるC40に記載の装置。
[C47]
前記ビニング構成を決定するために、前記1つ以上のプロセッサは、前記最初のビニング構成からの修正されたビニング構成を決定するように構成され、
前記修正されたビニング構成を決定することは、タイルに基づくレンダリングに関する前記最初のビンのうちの1つ以上を直接レンダリングされるように指定することを備えるC47に記載の装置。
[C48]
前記ビニング情報を決定するために、前記1つ以上のプロセッサは、前記最初のビニング構成からの修正されたビニング構成を決定するように構成され、
前記修正されたビニング構成は、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備えるC46に記載の装置。
[C49]
画像をレンダリングするための装置であって、
前記画像の可視のプリミティブを示すビジビリティ情報を受信するための手段と、
前記ビジビリティ情報に基づいて1つ以上のビンへの複数のプリミティブの配分を備えるビニング構成を決定するための手段と、を備える、装置。
[C50]
前記ビジビリティ情報は、複数のビジビリティストリームを備え、前記ビニング構成を決定するための前記手段は、前記ビジビリティストリームのうちの少なくとも2つをマージするための手段を備えるC49に記載の装置。
[C51]
予め決定されたビン配置及び前記画像をレンダリングするGPUに関連するメモリの量に基づいてタイルに基づくレンダリングに関する1つ以上の最初のビンへの前記複数のプリミティブの最初の配分を備える最初のビニング構成を決定するための手段をさらに備えるC49に記載の装置。
[C52]
前記ビニング構成を決定するための前記手段は、前記最初のビニング構成からの修正されたビニング構成を決定するための手段を備え、
前記修正されたビニング構成を決定するための前記手段は、タイルに基づくレンダリングに関する前記最初のビンのうちの1つ以上を直接レンダリングされるように指定するための手段を備えるC51に記載の装置。
[C53]
前記ビニング構成を決定するための前記手段は、前記最初のビニング構成からの修正されたビニング構成を決定するための手段を備え、
前記修正されたビニング構成は、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備えるC51に記載の装置。
[C54]
非一時的なコンピュータによって読み取り可能な記憶媒体であって、実行されたときに、
前記画像の可視のプリミティブを示すビジビリティ情報を受信すること、及び
前記ビジビリティ情報に基づいて1つ以上のビンへの複数のプリミティブの配分を備えるビニング構成を決定することを1つ以上のプロセッサに行わせる命令が格納されている、非一時的なコンピュータによって読み取り可能な記憶媒体。
[C55]
前記ビジビリティ情報は、複数のビジビリティストリームを備え、前記ビニング構成を決定するために、前記命令は、前記ビジビリティストリームのうちの少なくとも2つをマージすることを前記1つ以上のプロセッサに行わせるC54に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
[C56]
予め決定されたビン配置及び前記画像をレンダリングするGPUに関連するメモリの量に基づいてタイルに基づくレンダリングに関する1つ以上の最初のビンへの前記複数のプリミティブの最初の配分を備える最初のビニング構成を決定することを前記1つ以上のプロセッサに行わせる命令をさらに備えるC54に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
[C57]
前記ビニング構成を決定するために、前記命令は、前記最初のビニング構成からの修正されたビニング構成を決定することを前記1つ以上のプロセッサに行わせ、
前記修正されたビニング構成を決定するために、前記命令は、タイルに基づくレンダリングに関する前記最初のビンのうちの1つ以上を直接レンダリングされるように指定することを前記1つ以上のプロセッサに行わせるC56に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
[C58]
前記ビニング情報を決定するために、前記命令は、前記最初のビニング構成からの修正されたビニング構成を決定することを前記1つ以上のプロセッサに行わせ、
前記修正されたビニング構成は、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備えるC56に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。

Claims (54)

  1. 画像をレンダリングするための方法であって、
    コンピューティングデバイスの1つ以上のプロセッサが、最初のビニング構成に関するビジビリティ情報を生成することであって、前記ビジビリティ情報は、前記最初のビニング構成のうちの1つ以上のビンへの前記画像の可視のプリミティブの最初のタイルに基づく配分を示すことと、
    前記1つ以上のプロセッサが、前記最初のビニング構成に関連して修正されたビニング構成を用いて前記画像をレンダリングすることと、を備え、前記修正されたビニング構成は、前記ビジビリティ情報に基づく、方法。
  2. 前記修正されたビニング構成は、前記最初のビニング構成のうちの前記1つ以上のビンとは1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備え、
    前記修正されたビニング構成を用いて前記画像をレンダリングすることは、直接的レンダリング及び前記修正されたビニング構成のうちの前記1つ以上の異なるビンの組み合わせを用いて前記画像をレンダリングすることを備える請求項1に記載の方法。
  3. 前記修正されたビニング構成は、前記最初のビニング構成からの1つ以上のビンを直接レンダリングすべきかどうかの指示を備える請求項1に記載の方法。
  4. 前記修正されたビニング構成は、1つ以上の新しいビンへの前記可視のプリミティブの修正された配分を有する前記1つ以上の新しいビンの指示を備える請求項1に記載の方法。
  5. ビジビリティ情報を生成することは、前記可視のプリミティブを示すビジビリティストリームを生成することと、前記画像のプリミティブに関連するヒューリスティックデータを生成することと、を備え、前記修正されたビニング構成は、前記ビジビリティストリームと前記ヒューリスティックデータとのうちの少なくとも1つに基づく請求項1に記載の方法。
  6. 前記ヒューリスティックデータを生成することは、前記プリミティブに関連するオーバードローの量を示すデータを生成することを備える請求項5に記載の方法。
  7. 前記ヒューリスティックデータを生成することは、前記画像の予め決定されたエリア内のプリミティブの数を示すデータを生成することを備える請求項5に記載の方法。
  8. 前記ヒューリスティックデータを生成することは、前記画像の予め決定されたエリア内のプリミティブのサイズを示すデータを生成することを備える請求項5に記載の方法。
  9. 前記コンピューティングデバイスのディスプレイに前記レンダリングされた画像を表示することをさらに備える請求項1に記載の方法。
  10. 画像をレンダリングするための装置であって、
    前記画像の少なくとも一部を記憶するように構成されたメモリと、
    最初のビニング構成に関するビジビリティ情報を生成し、ここにおいて、前記ビジビリティ情報は、前記最初のビニング構成のうちの1つ以上のビンへの前記画像の可視のプリミティブの最初のタイルに基づく配分を示し、及び
    前記最初のビニング情報に関連して修正されたビニング構成を用いて前記画像をレンダリングするように構成された1つ以上のプロセッサを備え、前記修正されたビニング構成は、前記ビジビリティ情報に基づく、装置。
  11. 前記修正されたビニング構成は、前記最初のビニング構成のうちの前記1つ以上のビンとは1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備え、
    前記修正されたビニング構成を用いて前記画像をレンダリングするために、前記1つ以上のプロセッサは、直接的レンダリング及び前記修正されたビニング構成のうちの前記1つ以上の異なるビンの組み合わせを用いて前記画像をレンダリングするように構成される請求項10に記載の装置。
  12. 前記修正されたビニング構成は、前記最初のビニング構成からの1つ以上のビンを直接レンダリングすべきかどうかの指示を備える請求項10に記載の装置。
  13. 前記修正されたビニング構成は、1つ以上の新しいビンへの前記可視のプリミティブの修正された配分を有する前記1つ以上の新しいビンの指示を備える請求項10に記載の装置。
  14. ビジビリティ情報を生成するために、前記1つ以上のプロセッサは、前記可視のプリミティブを示すビジビリティストリームを生成するように、及び前記画像のプリミティブに関連するヒューリスティックデータを生成するように構成され、前記修正されたビニング構成は、前記ビジビリティストリームと前記ヒューリスティックデータとのうちの少なくとも1つに基づく請求項10に記載の装置。
  15. 前記ヒューリスティックデータを生成するために、前記1つ以上のプロセッサは、前記プリミティブに関連するオーバードローの量を示すデータを生成するように構成される請求項14に記載の装置。
  16. 前記ヒューリスティックデータを生成するために、前記1つ以上のプロセッサは、前記画像の予め決定されたエリア内のプリミティブの数を示すデータを生成するように構成される請求項14に記載の装置。
  17. 前記ヒューリスティックデータを生成するために、前記1つ以上のプロセッサは、前記画像の予め決定されたエリア内のプリミティブのサイズを示すデータを生成するように構成される請求項14に記載の装置。
  18. 前記レンダリングされた画像を表示するように構成されたディスプレイデバイスをさらに備える請求項10に記載の装置。
  19. 画像をレンダリングするための装置であって、
    最初のビニング構成に関するビジビリティ情報を生成するための手段、前記ビジビリティ情報は、前記最初のビニング構成のうちの1つ以上のビンへの前記画像の可視のプリミティブの最初のタイルに基づく配分を示す手段と、
    前記最初のビニング構成に関連して修正されたビニング構成を用いて前記画像をレンダリングするための手段と、を備え、前記修正されたビニング構成は、前記ビジビリティ情報に基づく、装置。
  20. 前記修正されたビニング構成は、前記最初のビニング構成のうちの前記1つ以上のビンとは1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備え、
    前記修正されたビニング構成を用いて前記画像をレンダリングするための前記手段は、直接的レンダリング及び前記修正されたビニング構成のうちの前記1つ以上の異なるビンの組み合わせを用いて前記画像をレンダリングするための手段を備える請求項19に記載の装置。
  21. ビジビリティ情報を生成するための前記手段は、前記可視のプリミティブを示すビジビリティストリームを生成するための手段と、前記画像のプリミティブに関連するヒューリスティックデータを生成するための手段と、を備え、前記修正されたビニング構成は、前記ビジビリティストリームと前記ヒューリスティックデータとのうちの少なくとも1つに基づく請求項19に記載の装置。
  22. 前記レンダリングされた画像を表示するための手段をさらに備える請求項19に記載の装置。
  23. 非一時的なコンピュータによって読み取り可能な記憶媒体であって、実行されたときに、
    最初のビニング構成に関するビジビリティ情報を生成すること、ここにおいて、前記ビジビリティ情報は、前記最初のビニング構成のうちの1つ以上のビンへの画像の可視のプリミティブの最初のタイルに基づく配分を示すこと、
    前記最初のビニング構成に関連して修正されたビニング構成を用いて前記画像をレンダリングすることを1つ以上のプロセッサに行わせる命令が格納され、前記修正されたビニング構成は、前記ビジビリティ情報に基づく、非一時的なコンピュータによって読み取り可能な記憶媒体。
  24. 前記修正されたビニング構成は、前記最初のビニング構成のうちの前記1つ以上のビンとは1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備え、
    前記修正されたビニング構成を用いて前記画像をレンダリングするために、前記命令は、直接的レンダリング及び前記修正されたビニング構成のうちの前記1つ以上の異なるビンの組み合わせを用いて前記画像をレンダリングすることを前記1つ以上のプロセッサに行わせる請求項23に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
  25. ビジビリティ情報を生成するために、前記命令は、前記可視のプリミティブを示すビジビリティストリームを生成すること、及び前記画像のプリミティブに関連するヒューリスティックデータを生成することを前記1つ以上のプロセッサに行わせ、前記修正されたビニング構成は、前記ビジビリティストリームと前記ヒューリスティックデータとのうちの少なくとも1つに基づく請求項23に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
  26. コンピューティングデバイスのディスプレイに前記レンダリングされた画像を表示することを前記1つ以上のプロセッサに行わせる命令をさらに備える、請求項23に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
  27. 画像をレンダリングするための方法であって、
    コンピューティングデバイスの1つ以上のプロセッサが、最初のビニング構成に関するビジビリティ情報を受信することであって、前記ビジビリティ情報は、前記最初のビニング構成のうちの1つ以上のビンへの前記画像の可視のプリミティブの最初のタイルに基づく配分を示すことと、
    前記1つ以上のプロセッサが、前記最初のビニング構成に関連して修正されたビニング構成を決定することであって、前記修正されたビニング構成は、前記ビジビリティ情報に基づいて1つ以上の第2のビンへの前記画像の前記可視のプリミティブの配分を備える、ことと、を備える、方法。
  28. 前記ビジビリティ情報を受信することは、ビジビリティストリームを受信することと、数のプリミティブに関連するヒューリスティックデータを受信することと、を備える請求項27に記載の方法。
  29. 前記ヒューリスティックデータは、前記複数のプリミティブに関連するオーバードローの量を示すデータを備える請求項28に記載の方法。
  30. 前記ヒューリスティックデータは、前記画像の予め決定されたエリア内のプリミティブの数を示すデータを備える請求項28に記載の方法。
  31. 前記ヒューリスティックデータは、前記画像の予め決定されたエリア内のプリミティブのサイズを示すデータを備える請求項28に記載の方法。
  32. 前記ビジビリティ情報は、複数のビジビリティストリームを備え、前記修正されたビニング構成を決定することは、前記ビジビリティストリームのうちの少なくとも2つをマージすることを備える請求項27に記載の方法。
  33. 予め決定されたビン配置及び前記画像をレンダリングするグラフィックス処理ユニット(GPU)に関連するメモリの量に基づいて前記最初のタイルに基づく配分を備える前記最初のビニング構成を、前記1つ以上のプロセッサが、決定することをさらに備える請求項27に記載の方法。
  34. 前記修正されたビニング構成を決定することは、前記1つ以上の第2のビンが指定された1つ以上の第1のビンを含むように、前記1つ以上の第1のビンのうちの1つ以上を直接レンダリングされるように指定することを備える請求項33に記載の方法。
  35. 前記修正されたビニング構成は、前記1つ以上の第2のビンが前記1つ以上の第1のビンとは異なるように、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備える請求項33に記載の方法。
  36. 画像をレンダリングするための装置であって、
    最初のビニング構成に関するビジビリティ情報を受信し、ここにおいて、前記ビジビリティ情報は、前記最初のビニング構成のうちの1つ以上の第1のビンへの前記画像の可視のプリミティブの最初のタイルに基づく配分を示及び
    前記最初のビニング構成に関連して修正されたビニング構成を決定するように構成され、前記修正されたビニング構成は、前記ビジビリティ情報に基づいて1つ以上の第2のビンへの前記画像の前記可視のプリミティブの配分を備える1つ以上のプロセッサと、
    前記修正されたビニング構成を記憶するように構成されたメモリとを備える、装置。
  37. 前記ビジビリティ情報を受信するために、前記1つ以上のプロセッサは、ビジビリティストリームを受信し及び複数のプリミティブに関連するヒューリスティックデータを受信するように構成される請求項36に記載の装置。
  38. 前記ヒューリスティックデータは、前記複数のプリミティブに関連するオーバードローの量を示すデータを備える請求項37に記載の装置。
  39. 前記ヒューリスティックデータは、前記画像の予め決定されたエリア内のプリミティブの数を示すデータを備える請求項37に記載の装置。
  40. 前記ヒューリスティックデータは、前記画像の予め決定されたエリア内のプリミティブのサイズを示すデータを備える請求項37に記載の装置。
  41. 前記ビジビリティ情報は、複数のビジビリティストリームを備え、前記修正されたビニング構成を決定するために、前記1つ以上のプロセッサは、前記ビジビリティストリームのうちの少なくとも2つをマージするように構成される請求項36に記載の装置。
  42. 前記1つ以上のプロセッサは、
    予め決定されたビン配置及び前記画像をレンダリングするGPUに関連するメモリの量に基づいて前記最初のタイルに基づく配分を備える前記最初のビニング構成を決定するようにさらに構成される請求項36に記載の装置。
  43. 前記修正されたビニング構成を決定するために、前記1つ以上のプロセッサは、前記1つ以上の第2のビンが指定された1つ以上の第1のビンを含むように、前記1つ以上の第1のビンのうちの1つ以上を直接レンダリングされるように指定するように構成される請求項42に記載の装置。
  44. 前記修正されたビニング構成は、前記1つ以上の第2のビンが前記1つ以上の第1のビンとは異なるように、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備える請求項42に記載の装置。
  45. 画像をレンダリングするための装置であって、
    最初のビニング構成に関するビジビリティ情報を受信するための手段であって、前記ビジビリティ情報は、最初のビニング構成のうちの1つ以上の第1のビンへの前記画像の可視のプリミティブの最初のタイルに基づく配分を示す手段と、
    前記最初のビニング構成に関連して修正されたビニング構成を決定するための手段であって、前記修正されたビニング構成は、前記ビジビリティ情報に基づいて、1つ以上の第2のビンへの前記画像の前記可視のプリミティブの配分を備える手段と、を備える、装置。
  46. 前記ビジビリティ情報は、複数のビジビリティストリームを備え、前記修正されたビニング構成を決定するための前記手段は、前記ビジビリティストリームのうちの少なくとも2つをマージするための手段を備える請求項45に記載の装置。
  47. 予め決定されたビン配置及び前記画像をレンダリングするGPUに関連するメモリの量に基づいてタイルに基づく前記最初のタイルに基づく配分を備える前記最初のビニング構成を決定するための手段をさらに備える請求項45に記載の装置。
  48. 前記修正されたビニング構成を決定するための前記手段は、前記1つ以上の第2のビンが指定された1つ以上の第1のビンを含むように、前記1つ以上の第1のビンのうちの1つ以上を直接レンダリングされるように指定するための手段を備える請求項47に記載の装置。
  49. 前記修正されたビニング構成は、前記1つ以上の第2のビンが前記1つ以上の第1のビンとは異なるように、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備える請求項47に記載の装置。
  50. 非一時的なコンピュータによって読み取り可能な記憶媒体であって、実行されたときに、
    最初のビニング構成に関するビジビリティ情報を受信することであって、前記ビジビリティ情報は、前記最初のビニング構成のうちの1つ以上の第1のビンへの画像の可視のプリミティブの最初のタイルに基づく配分を示すこと、及び
    前記最初のビニング構成に関連して修正されたビニング構成を決定することであって、前記修正されたビニング構成は、前記ビジビリティ情報に基づいて、1つ以上の第2のビンへの前記画像の前記可視のプリミティブの配分を備えることを1つ以上のプロセッサに行わせる命令が格納されている、非一時的なコンピュータによって読み取り可能な記憶媒体。
  51. 前記ビジビリティ情報は、複数のビジビリティストリームを備え、前記修正されたビニング構成を決定するために、前記命令は、前記ビジビリティストリームのうちの少なくとも2つをマージすることを前記1つ以上のプロセッサに行わせる請求項50に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
  52. 予め決定されたビン配置及び前記画像をレンダリングするGPUに関連するメモリの量に基づいて前記最初のタイルに基づく配分を備える前記最初のビニング構成を決定することを前記1つ以上のプロセッサに行わせる命令をさらに備える請求項50に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
  53. 前記修正されたビニング構成を決定するために、前記命令は、前記1つ以上の第2のビンが指定された1つ以上の第1のビンを含むように、前記1つ以上の第1のビンのうちの1つ以上を直接レンダリングされるように指定することを前記1つ以上のプロセッサに行わせる請求項52に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
  54. 前記修正されたビニング構成は、前記1つ以上の第2のビンが前記1つ以上の第1のビンとは異なるように、1つ以上の異なるビンへの前記可視のプリミティブの修正されたタイルに基づく配分を備える請求項52に記載の非一時的なコンピュータによって読み取り可能な記憶媒体。
JP2015553741A 2013-01-17 2013-12-20 ビジビリティ情報を用いたグラフィックスデータのレンダリング Expired - Fee Related JP5960368B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/744,111 2013-01-17
US13/744,111 US9087410B2 (en) 2013-01-17 2013-01-17 Rendering graphics data using visibility information
PCT/US2013/077278 WO2014113189A1 (en) 2013-01-17 2013-12-20 Rendering graphics data using visibility information

Publications (2)

Publication Number Publication Date
JP2016509718A JP2016509718A (ja) 2016-03-31
JP5960368B2 true JP5960368B2 (ja) 2016-08-02

Family

ID=50033769

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015553741A Expired - Fee Related JP5960368B2 (ja) 2013-01-17 2013-12-20 ビジビリティ情報を用いたグラフィックスデータのレンダリング

Country Status (6)

Country Link
US (1) US9087410B2 (ja)
EP (1) EP2946364B1 (ja)
JP (1) JP5960368B2 (ja)
KR (1) KR101633243B1 (ja)
CN (1) CN104919494B (ja)
WO (1) WO2014113189A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600926B2 (en) * 2014-12-15 2017-03-21 Intel Corporation Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering
US9489710B2 (en) * 2015-02-10 2016-11-08 Qualcomm Incorporated Hybrid rendering in graphics processing
KR102341267B1 (ko) 2015-05-04 2021-12-20 삼성전자주식회사 양안 시차 영상에 대한 렌더링 방법 및 장치
US9922449B2 (en) * 2015-06-01 2018-03-20 Intel Corporation Apparatus and method for dynamic polygon or primitive sorting for improved culling
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
GB2546810B (en) * 2016-02-01 2019-10-16 Imagination Tech Ltd Sparse rendering
US10096147B2 (en) * 2016-03-10 2018-10-09 Qualcomm Incorporated Visibility information modification
KR102637736B1 (ko) * 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
GB2561807B (en) 2017-01-12 2019-09-25 Imagination Tech Ltd Computing systems and methods for processing graphics data using cost indications for sets of tiles of a rendering space
US10997771B2 (en) * 2018-08-29 2021-05-04 Intel Corporation Position-based rendering apparatus and method for multi-die/GPU graphics processing
US11080928B2 (en) * 2019-04-01 2021-08-03 Qualcomm Incorporated Methods and apparatus for visibility stream management
US11373267B2 (en) * 2019-11-04 2022-06-28 Qualcomm Incorporated Methods and apparatus for reducing the transfer of rendering information
US11321806B2 (en) * 2020-07-22 2022-05-03 Samsung Electronics Co., Ltd. Enhanced early coverage discard using opportunistic bypassing and dynamic queue resizing
WO2022104583A1 (en) * 2020-11-18 2022-05-27 Qualcomm Incorporated Methods and apparatus for selection of rendering modes
JP2024501937A (ja) * 2020-12-30 2024-01-17 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 2レベルビニングを使用する分散型レンダリングのためのシステム及び方法
US20240064411A1 (en) * 2022-05-30 2024-02-22 Arm Limited Method, apparatus and program for processing an image
CN115775295A (zh) * 2023-01-10 2023-03-10 摩尔线程智能科技(北京)有限责任公司 用于基于图块的延迟渲染的装置和方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7460725B2 (en) * 2006-11-09 2008-12-02 Calista Technologies, Inc. System and method for effectively encoding and decoding electronic information
ITMI20070038A1 (it) * 2007-01-12 2008-07-13 St Microelectronics Srl Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle.
US7843463B1 (en) * 2007-06-01 2010-11-30 Nvidia Corporation System and method for bump mapping setup
US8331663B2 (en) * 2007-06-28 2012-12-11 Qualcomm Incorporated Efficient image compression scheme to minimize storage and bus bandwidth requirements
GB2452731B (en) 2007-09-12 2010-01-13 Imagination Tech Ltd Methods and systems for generating 3-dimensional computer images
GB0900700D0 (en) 2009-01-15 2009-03-04 Advanced Risc Mach Ltd Methods of and apparatus for processing graphics
US8810592B2 (en) 2009-10-09 2014-08-19 Nvidia Corporation Vertex attribute buffer for inline immediate attributes and constants
US8587581B2 (en) 2009-10-15 2013-11-19 Nvidia Corporation Order-preserving distributed rasterizer
US8497876B2 (en) 2009-11-02 2013-07-30 Pacific Data Images Llc Infinite complexity deep-framebuffer rendering
GB201007348D0 (en) * 2010-04-30 2010-06-16 Imagination Tech Ltd Programmable tessellation in a tile based rendering system
KR101782044B1 (ko) * 2011-02-22 2017-09-26 삼성전자주식회사 그래픽 프로세서 및 조기 가시성 테스트 방법
US8982136B2 (en) * 2011-05-16 2015-03-17 Qualcomm Incorporated Rendering mode selection in graphics processing units
US10089774B2 (en) * 2011-11-16 2018-10-02 Qualcomm Incorporated Tessellation in tile-based rendering
US9117302B2 (en) * 2011-11-30 2015-08-25 Qualcomm Incorporated Switching between direct rendering and binning in graphics processing using an overdraw tracker
US10242481B2 (en) 2012-03-15 2019-03-26 Qualcomm Incorporated Visibility-based state updates in graphical processing units
US9280956B2 (en) * 2012-11-29 2016-03-08 Qualcomm Incorporated Graphics memory load mask for graphics processing

Also Published As

Publication number Publication date
EP2946364B1 (en) 2021-10-20
CN104919494A (zh) 2015-09-16
US20140198119A1 (en) 2014-07-17
EP2946364A1 (en) 2015-11-25
CN104919494B (zh) 2019-04-02
KR20150106947A (ko) 2015-09-22
KR101633243B1 (ko) 2016-06-23
JP2016509718A (ja) 2016-03-31
US9087410B2 (en) 2015-07-21
WO2014113189A1 (en) 2014-07-24

Similar Documents

Publication Publication Date Title
JP5960368B2 (ja) ビジビリティ情報を用いたグラフィックスデータのレンダリング
JP6162216B2 (ja) グラフィックス処理におけるパッチされたシェーディング
JP6310151B2 (ja) グラフィックス処理におけるレンダリング対象コマンドの並べ替え
US10049426B2 (en) Draw call visibility stream
US11816782B2 (en) Rendering of soft shadows
US10176621B2 (en) Using compute shaders as front end for vertex shaders
US9569811B2 (en) Rendering graphics to overlapping bins
JP2018060556A (ja) グラフィック処理ユニットにおける視界ベースの状態更新
CN105849780B (zh) 平铺块式基础架构上的经优化多遍次再现
CN105518742B (zh) 用于图形处理的任意控制点处的容错抢占机制
US20170004647A1 (en) Rendering graphics data on demand
KR102381945B1 (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160315

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: 20160524

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160622

R150 Certificate of patent or registration of utility model

Ref document number: 5960368

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees