JP2024511763A - 2レベルのビニングを用いた事後深度可視性収集 - Google Patents
2レベルのビニングを用いた事後深度可視性収集 Download PDFInfo
- Publication number
- JP2024511763A JP2024511763A JP2023557705A JP2023557705A JP2024511763A JP 2024511763 A JP2024511763 A JP 2024511763A JP 2023557705 A JP2023557705 A JP 2023557705A JP 2023557705 A JP2023557705 A JP 2023557705A JP 2024511763 A JP2024511763 A JP 2024511763A
- Authority
- JP
- Japan
- Prior art keywords
- primitive
- tile
- image
- depth test
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000009877 rendering Methods 0.000 claims abstract description 42
- 238000012360 testing method Methods 0.000 claims abstract description 41
- 238000012545 processing Methods 0.000 claims description 71
- 230000006870 function Effects 0.000 claims description 21
- 238000010586 diagram Methods 0.000 abstract description 18
- 239000000872 buffer Substances 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 230000009466 transformation Effects 0.000 description 9
- 238000000844 transformation Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
コンピュータシステムにおける表示のために画像をタイルレンダリングする方法及び装置は、コンピュータシステムのグラフィックスパイプラインにおいて画像を受信することを含み、画像は1つ以上の三次元(3D)オブジェクトを含む。画像は、1つ以上のタイルに分割される。深度テストは、1つ以上のタイルに対して行われ、深度テストに基づいて、1つ以上のタイルの可視性情報がビニングされる。【選択図】図8
Description
(関連出願の相互参照)
本願は、2021年3月31日に出願された米国仮特許出願第63/168,875号、及び、2021年12月27日に出願された米国特許出願第17/562,872号の利益を主張し、その内容は、本明細書に完全に記載されているように参照により組み込まれる。
本願は、2021年3月31日に出願された米国仮特許出願第63/168,875号、及び、2021年12月27日に出願された米国特許出願第17/562,872号の利益を主張し、その内容は、本明細書に完全に記載されているように参照により組み込まれる。
グラフィックス処理は、二次元(two dimensional、2D)スクリーン上への三次元(three dimensional、3D)シーンのレンダリングを含む。3Dシーンは、処理の異なる段階(ステージ)を含むグラフィックスパイプラインを介して表示スクリーン上にレンダリングされる。コマンドストリームのグラフィックス処理コマンドが(例えば、アプリケーションから)受信され、計算タスクが、タスクの実行のために(例えば、GPU等の加速処理デバイスに)提供される。
グラフィックスは、プリミティブ(例えば、三角形、四辺形又は他の幾何学的形状)を使用して表示スクリーン上にレンダリングされる。グラフィックス処理コマンドは、例えば、プリミティブの数、各プリミティブの位置、及び、表示スクリーン上にレンダリングされる各プリミティブの属性を含む。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
グラフィックスパイプラインは、フロントエンドジオメトリ部分及びバックエンド部分を含むように簡略化することができる。例えば、パイプラインのフロントエンドジオメトリ部分は、いくつかのシェーダ段階(例えば、頂点シェーダ段階、ハルシェーダ段階、モザイク化器(テッセレータ)段階、ドメインシェーダ段階、及び、ジオメトリシェーダ段階)を含む。シェーダ段階中に、プリミティブは、3Dオブジェクトとして受信され、2Dスクリーン上にレンダリングされる2Dオブジェクトに変換される。バックエンド部分は、ラスタライザ段階及びピクセルシェーダ段階を含む。ラスタライザ段階中に、2Dスクリーン上に投影される各プリミティブのスクリーン上の位置が判定される。例えば、ラスタライズ中に、加速処理デバイス(例えば、GPU)は、各プリミティブについて、何れのピクセル(又はサブピクセルサンプル)が2Dスクリーン上にレンダリングされる各プリミティブに対応するかを判定する。ピクセルシェーダ段階中に、そのプリミティブに対応するピクセルについて値(例えば、輝度及び色)が計算される。
データは、リモートメモリ(例えば、メインメモリ)を使用してデータを処理するのではなく、ローカルに記憶された以前に処理されたデータ(例えば、GPUのキャッシュに記憶されたデータ)を再利用することによって、(例えば、GPUによって)より効率的に処理される。タイリング(又はビニング)は、フレーム全体を一度にレンダリングすることと比較して、フレームをレンダリングするために使用されるローカルメモリ(例えば、キャッシュ)及び帯域幅の量を低減する技術である。タイリングは、フレームをセクション(例えば、タイル又はビン)に分け、フレームの別のタイルをレンダリングする前に、フレームの1つのタイルをレンダリングする。例えば、フレーム(又は画像)が4つの等しいタイル(すなわち、左上象限(quadrant)、右上象限、左下象限及び右下象限)に分けられる場合、第1のタイル(例えば、左上象限)は、次のタイルのうち何れかをレンダリングすることに進む前にレンダリングされる。次いで、フレームのタイルの各々がレンダリングされるまで、最後の2つのタイルのうち何れかをレンダリングすることに進む前に、他のタイルのうち何れか(例えば、右上象限)がレンダリングされる。
従来のタイリング技術は、粗いレベルのタイリング(すなわち、フレーム当たりのより大きいタイル及びより少ない数のタイル又はビン)と、細かいレベルのタイリング(すなわち、フレーム当たりのより小さいタイル及びより多い数のタイル又はビン)と、を含む。フレーム当たりのタイルの数が少ないので、粗いレベルのタイリングは、細かいレベルのタイリングよりも少ないタイリング(ビニング)オーバーヘッドをもたらすが、細かいレベルのタイリングよりも全体的に低いキャッシュヒット率を含む。細かいレベルのタイリングは、タイリングが少ない粗いレベルのタイリングよりも高いキャッシュヒット率を含むが、細かいレベルのタイリングよりも高いタイリングオーバーヘッドをもたらす。
加えて、従来のタイリング技術では、ビニングは、プリミティブをセットアップした後に行われる。タイリング及びビニングの後、プリミティブは、様々な他のプロセス(例えば、深度テスト)に渡され得る。したがって、いくつかのプリミティブは、可視及び不可視としてマークされる。結果として、不可視であり得るプリミティブは、タイリング/ビニングプロセス中に処理されることになる。
本願は、粗いレベルのタイリングと細かいレベルのタイリングの両方を独特で効率的な方法で使用して、効率的なタイルレンダリングを提供する実施形態を開示する。本願で開示される実施形態は、粗いタイルに対して粗いレベルのタイリングを実行し、粗いタイルの細かいタイルに対して細かいレベルのタイリングを実行してから、次の粗いタイルに進んで粗いレベルのタイリング及び細かいレベルのタイリングを実行する。開示された実施形態のいくつかは、粗いレベルのタイリング及び細かいレベルのタイリングを実行するために同じ固定機能ハードウェアを使用し、追加のハードウェアのコストなしに、粗いレベルのタイリング及び細かいレベルのタイリングから得られる利点を提供する。更に、実施形態は、深度テストが行われた後に可視性収集を行うこと(すなわち、タイリング又はビニングプロセスの態様を行うこと)が、多くの事例において、ビニング/タイリング動作のためのプリミティブの数を減少させ得ることを開示する。
コンピュータシステムにおける表示のための画像のタイルレンダリングの方法は、コンピュータシステムのグラフィックスパイプラインにおいて画像を受信することを含み、画像は、1つ以上の三次元(3D)オブジェクトを含む。画像は、1つ以上のタイルに分割される。深度テストは、1つ以上のタイルに対して行われ、深度テストに基づいて、1つ以上のタイルの可視性情報がビニングされる。
コンピュータシステムにおける表示のための画像のタイルレンダリングのための処理装置は、メモリと、メモリに通信可能に結合されたプロセッサと、を含む。プロセッサは、グラフィックスパイプラインにおいて1つ以上の三次元(3D)オブジェクトを含む画像を受信し、その画像を1つ以上のタイルに分割し、1つ以上のタイルに対して深度テストを行い、深度テストに基づいて、1つ以上のタイルのビン可視性情報をビニングするように構成されている。
コンピュータシステムにおける表示のための画像のタイルレンダリングのための非一時的なコンピュータ可読記憶媒体であって、非一時的なコンピュータ可読記憶媒体は、その上に記録された命令を有し、命令は、プロセッサによって実行される場合に、プロセッサに動作を行わせる。上記の動作は、コンピュータシステムのグラフィックスパイプラインにおいて画像を受信することを含み、画像は、1つ以上の三次元(3D)オブジェクトを含む。画像は、1つ以上のタイルに分割される。深度テストは、1つ以上のタイルに対して行われ、深度テストに基づいて、1つ以上のタイルの可視性情報がビニングされる。
コンピュータシステムにおける表示のための画像のタイルレンダリングのための非一時的なコンピュータ可読記憶媒体であって、非一時的なコンピュータ可読記憶媒体は、その上に記録された命令を有し、命令は、プロセッサを製造するように適合されている。プロセッサは、コンピュータシステムのグラフィックスパイプラインにおいて画像を受信することであって、画像が、1つ以上の三次元(3D)オブジェクトを含む、ことと、深度テストに基づいて、画像のプリミティブを1つ以上のタイルにビニングすることと、を含む機能を実施するように適合されている。
図1は、本開示の1つ以上の特徴が実装され得る例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含み得る。デバイス100は、プロセッサ102、メモリ104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、図1に示されていない追加の構成要素を含み得ることを理解されたい。
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUとすることができる。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置するか、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM、キャッシュ)を含む。
記憶装置106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信できるようにする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信できるようにする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であることと、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に、同じ方式で動作することと、に留意されたい。出力ドライバ116は、ディスプレイデバイス118に連結された加速処理デバイス(accelerated processing device、APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のためにピクセル出力をディスプレイデバイス118に提供する。以下で更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、SIMD)パラダイムに従って計算を行う1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって又はAPD116と併せて実施されるものとして説明されているが、様々な代替例では、APD116によって実施されるものとして説明される機能は、追加的又は代替的に、ホストプロセッサ(例えば、プロセッサ102)によってドライブされない同様の能力を有する他のコンピューティングデバイスによって実施され、ディスプレイデバイス118にグラフィック出力を提供する。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書に説明される機能を実施し得ることが企図される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書に説明される機能を実施することが企図される。
図2は、デバイス100のブロック図であり、APD116上での処理タスクの実行に関する追加の詳細を示している。プロセッサ102は、システムメモリ104内で、プロセッサ102による実行のための1つ以上の制御論理モジュールを維持する。制御論理モジュールは、オペレーティングシステム120、カーネルモードドライバ122、及び、アプリケーション126を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の動作の様々な特徴を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102上で実行される他のソフトウェアのためのハードウェアへのインターフェースを提供する。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)にアプリケーションプログラミングインターフェース(application programming interface、API)を提供して、APD116の様々な機能にアクセスすることによって、APD116の動作を制御する。また、カーネルモードドライバ122は、APD116の処理構成要素(以下で更に詳細に説明されるSIMDユニット138等)によって実行するためのプログラムをコンパイルするジャストインタイムコンパイラを含む。
APD116は、並列処理に適し得るグラフィック動作及び非グラフィック動作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、プロセッサ102から受信したコマンドに基づいて、ピクセル動作、幾何学計算、及び、ディスプレイデバイス118への画像のレンダリング等のグラフィックスパイプライン動作を実行するために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスクに関連する動作等のように、グラフィックス動作に直接関連しない計算処理動作を実行する。
APD116は、プロセッサ102の要求で、SIMDパラダイムに従って並列の方式で動作を行う1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、したがって同じプログラムを実行するが、そのプログラムを異なるデータで実行することができるものである。一例では、各SIMDユニット138は、16個のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、その命令を異なるデータで実行することができる。レーンは、全てのレーンが所定の命令を実行する必要がない場合、予測でオフに切り替えることができる。また、予測は、分岐制御フローを有するプログラムを実行するために使用することができる。より具体的には、制御フローが個々のレーンによって行われる計算に基づいている条件付き枝又は他の命令を有するプログラムについては、現在実行されていない制御フローパスに対応するレーンの予測及び異なる制御フローパスのシリアル実行が、任意の制御フローを可能にする。
計算ユニット132内の実行の基本的単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列で実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMDユニット138上の「ウェーブフロント(wavefront)」として同時に実行することができる。1つ以上のウェーブフロントが「ワークグループ」に含まれ、これは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行することができる。代替例では、ウェーブフロントは、単一のSIMDユニット138上で連続して、又は、異なるSIMDユニット138上で部分的に若しくは完全に並列で実行される。ウェーブフロントは、単一のSIMDユニット138上で同時に実行することができるワークアイテムの最大集合体と考えることができる。したがって、プロセッサ102から受信されたコマンドが、特定のプログラムを単一のSIMDユニット138上で同時に実行させることができない程度にプログラムが並列化されることを示す場合、そのプログラムは、2つ以上のSIMDユニット138上に並列化されるか、又は、同じSIMDユニット138上で直列化される(又は必要に応じて並列化及び直列化の両方が行われる)ウェーブフロントに分けられる。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上の様々なウェーブフロントのスケジューリングに関連する動作を行う。
計算ユニット132によって与えられる並列処理は、ピクセル値計算、頂点変換及び他のグラフィック動作等のグラフィック関連動作に好適である。したがって、場合によっては、プロセッサ102からのグラフィックス処理コマンドを受け入れるグラフィックス処理パイプライン134は、並列で実行するために計算タスクを計算ユニット132に提供する。
また、計算ユニット132は、グラフィックに関連しないか、又は、グラフィックス処理パイプライン134の「通常の」動作の一部(例えば、グラフィックス処理パイプライン134の動作に対して行われる処理を補足するために行われるカスタム動作)として行われない計算タスクを行うために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
APD116は、以下でより詳細に説明されるように、複数の機能を実行することによって本開示の特徴を実装するように構成されている。例えば、APD116は、1つ以上の三次元(3D)オブジェクトを含む画像を受信し、画像を複数のタイルに分割し、画像のプリミティブについて可視性パスを実行し、画像をタイルに分割し、画像のタイルについて粗いレベルのタイリングを実行し、タイルを細かいタイルに分割し、画像の細かいレベルのタイリングを実行するように構成されている。オプションで、タイルのうち第1のタイル内にあると判定されたプリミティブのフロントエンドジオメトリ処理は、可視性パスと同時に実行することができる。
図3は、図2に示されるグラフィックス処理パイプライン134の追加の詳細を示すブロック図である。グラフィックス処理パイプライン134は、各々が特定の機能を実施する段階(ステージ)を含む。段階は、グラフィックス処理パイプライン134の機能のサブディビジョンを表す。各段階は、プログラマブル処理ユニット202内で実行されるシェーダプログラムとして部分的若しくは完全に、又は、プログラム可能な処理ユニット202の外部の固定機能非プログラム可能ハードウェアとして部分的若しくは完全に実装され得る。しかしながら、他の実装態様が利用されてもよい。
段階302~313は、グラフィックス処理パイプライン134のフロントエンドジオメトリ処理部分を表す。段階314~318は、グラフィックス処理パイプライン134のバックエンドピクセル処理部分を表す。
入力アセンブラ段階302は、ユーザが満たしたバッファ(例えば、アプリケーション126等のプロセッサ102によって実行されるソフトウェアの要求で満たされたバッファ)を読み取り、そのデータを、パイプラインの残りの部分によって使用されるプリミティブに組み立てる(アセンブルする)。入力アセンブラ段階302は、ユーザが満たしたバッファに含まれるプリミティブデータに基づいて、異なるタイプのプリミティブを生成することができる。入力アセンブラ段階302は、パイプラインの残りの部分によって使用するための組み立てられた(アセンブルされた)プリミティブをフォーマットする。
頂点シェーダ段階304は、入力アセンブラ段階302によって組み立てられたプリミティブの頂点を処理する。頂点シェーダ段階304は、変換、スキニング、モーフィング、及び、各々の頂点照明等の様々な頂点ごとの動作を行う。変換動作は、頂点の座標を変換するための様々な動作を含む。これらの動作は、モデリング変換、ビュー変換、投影変換、斜視分割、及び、ビューポート変換のうち1つ以上を含む。本明細書では、そのような変換は、変換が行われる頂点の座標又は「位置」を変更すると考えられる。頂点シェーダ段階304の他の動作は、座標以外の属性を変更する。
頂点シェーダ段階304は、1つ以上の計算ユニット132上で実行される頂点シェーダプログラムとして部分的又は完全に実装される。頂点シェーダプログラムは、プロセッサ102によって提供され、コンピュータプログラマによって事前に書き込まれたプログラムに基づく。ドライバ122は、そのようなコンピュータプログラムをコンパイルして、計算ユニット132内での実行に適した形式を有する頂点シェーダプログラムを生成する。
ハルシェーダ段階306、モザイク化器(テッセレータ)段階308及びドメインシェーダ段階310は、モザイク化を実装するために共に動作し、モザイク化(テッセレーション)は、プリミティブを細分することによって、単純なプリミティブをより複雑なプリミティブに変換する。ハルシェーダ段階306は、入力プリミティブに基づいて、モザイク化のためのパッチを生成する。モザイク化器段階308は、パッチのためのサンプルセットを生成する。ドメインシェーダ段階310は、パッチのサンプルに対応する頂点の頂点位置を計算する。ハルシェーダ段階306及びドメインシェーダ段階310は、プログラマブル処理ユニット202上で実行されるシェーダプログラムとして実装されることができる。
ジオメトリシェーダ段階312は、プリミティブ基準で頂点動作を行う。ポイントスプリント拡張(point sprint expansion)、動的粒子システム操作(dynamic particle system operations)、ファーフィン生成(fur-fin generation)、シャドウボリューム生成(shadow volume generation)、シングルパスレンダリング-キューブマップ(single pass render-to-cubemap)、プリミティブごとの材料交換(per-primitive material swapping)、及び、プリミティブごとの材料設定(per-primitive material setup)等の動作を含む様々な異なるタイプの動作が、ジオメトリシェーダ段階312によって行われ得る。場合によっては、プログラマブル処理ユニット202上で実行されるシェーダプログラムは、ジオメトリシェーダ段階312の動作を行う。
ビナー(タイラー)段階313は、フロントエンド処理の最後の段階である。ビナー段階は、フレーム(又は画像)のタイル(又はビン)がプリミティブと重複するかどうかを判定するために、粗いラスタライズを行う。例えば、ビナー段階は、可視性チェック(すなわち、可視性パス)と、各タイル中にあると判定されたプリミティブについてのタイルウォーキングと、を含む。ビナー段階313は、この実施形態では、固定機能ハードウェアによって行われる。
上述したように、段階314~318は、グラフィックス処理パイプライン134のバックエンド処理を表す。ラスタライザ段階314は、単純なプリミティブを受け入れ、ラスタライズし、上流に生成される。ラスタライズは、何れのスクリーンピクセル(又はサブピクセルサンプル)が特定のプリミティブによってカバーされるかを判定することを含む。例えば、ラスタライザ段階314は、プリミティブ(例えば、三角形)をスクリーン空間ピクセルに変換し、何れのピクセルがプリミティブによってカバーされるかをテストする。この実施形態では、ラスタライズは、固定機能ハードウェアによって行われる。
ピクセルシェーダ段階316は、上流に生成されたプリミティブ及びラスタライズの結果に基づいて、スクリーンピクセルの出力値を計算する。ピクセルシェーダ段階316は、テクスチャメモリからテクスチャを適用することができる。ピクセルシェーダ段階316の動作は、プログラマブル処理ユニット202上で実行されるシェーダプログラムによって行われる。
出力マージ段階318は、ピクセルシェーダ段階316からの出力を受け入れ、それらの出力をマージし、z試験及びアルファブレンド等の動作を行い、スクリーンピクセルの最終色を判定する。
テクスチャを定義するテクスチャデータは、テクスチャユニット320によって記憶及び/又はアクセスされる。テクスチャは、グラフィックス処理パイプライン134内の様々な点で使用されるビットマップ画像である。例えば、場合によっては、ピクセルシェーダ段階316は、テクスチャをピクセルに適用して、レンダリングされる頂点の数を増加させることなく、(例えば、より「写実的な」外観を提供するために)見かけのレンダリングの複雑さを改善する。
場合によっては、頂点シェーダ段階304は、テクスチャユニット320からのテクスチャデータを使用して、例えば、改善された美観のために頂点を生成又は変更することによって、複雑さを高めるためにプリミティブを変更する。一例では、頂点シェーダ段階304は、テクスチャユニット320に記憶された高さマップを使用して、頂点の変位を変更する。このタイプの技術は、例えば、水をレンダリングするために使用される頂点の位置及び数を変更することによって、ピクセルシェーダ段階316でのみ使用されるテクスチャと比較して、より現実的な外観の水を生成するために使用され得る。場合によっては、ジオメトリシェーダ段階312は、テクスチャユニット320からのテクスチャデータにアクセスする。
図4は、本開示の特徴による、表示のための画像のレンダリングの例示的な方法を示すフロー図である。図4の方法を説明するために使用される図5は、本開示の特徴による、表示のための画像500をレンダリングする一例を示す概略図である。
ブロック402に示されるように、方法400は、1つ以上の3Dオブジェクトを含む画像を受信することを含む。例えば、画像は、APD116によって受信される。画像は、2D表示スクリーン上にレンダリングするために変換される任意の数のオブジェクトを含むことができる。
ブロック404に示されるように、方法400は、画像を複数のタイルに分割することを含む。説明を簡単にするために、図5に示す例は、4つの等しいタイル(すなわち、左上象限、右上象限、左下象限及び右下象限)に分けられる画像(又はフレーム)500を含む。しかしながら、画像(又はフレーム)は、粗いレベルのタイリングのために任意の数のタイル(例えば、32個のタイル)に分けることができる。タイルの数は、スクリーン解像度から独立している。
ブロック406に示されるように、方法400は、画像の第1のタイル(ビン)の粗いレベルのタイリング(ビニング)を実行することを含む。実施形態400において、粗いレベルのタイリングは、固定機能ハードウェアを介して実行される。すなわち、レンダリング命令(例えば、コマンドバッファに記憶されたアプリケーション又はプログラムからの命令)は、各タイルについての可視性情報(すなわち、フレームについて実行された可視性パスからの可視性情報)を使用して、第1のタイル(Tile 0)について、固定機能ハードウェアを介して実行される。粗いレベルのタイリング可視性情報は、Tile 0のレンダリング中に生成される。このタイルはピクセル粒度で処理され、ラスタライズ中に、プリミティブに対応するピクセルがタイル内に位置するか否かが(例えば、GPU等の加速プロセッサによって)判定される。例えば、Tile 0に対して生成された粗いレベルのタイル可視性情報は、三角形(Tri 1)がTile 0に位置することを示す。
ブロック408に示されるように、次のタイル(すなわち、図5のTile 1)に対して粗いレベルのタイリングが実行される前に、Tile 0に対して細かいレベルのタイリングが実行される。すなわち、図5に示されるように、Tile 0は、いくつかの細かい(より小さい)タイルに分割される。本願の特徴を実装するために、任意の数の細かいタイルを使用することができる。細かいレベルのタイリング(例えば、プリミティブバッチタイリング)は、プリミティブ(例えば、三角形)のバッチを蓄積するためにローカルメモリ(例えば、オンチップキャッシュ)を利用し、プリミティブを一度に1つの細かいタイルにレンダリングする粗いレベルのタイリング(図6に関して以下でより詳細に説明される)を実行するために使用される同じ固定機能ハードウェアを介して実施形態400において実行される。
ブロック410に示されるように、画像(フレーム)が次のタイルを含むかどうかが判定される。画像が次のタイルを含むと判定された場合、方法400はブロック406に戻り、次のタイルに対して粗いレベルのタイリングを実行し、次いで、次のタイルに対して細かいレベルのタイリングが実行される。例えば、図5に示される例を使用すると、画像500が次のタイル(Tile 1)を含むと判定された場合、ブロック406においてTile 1に対して粗いレベルのタイリングが実行され、次いで、Tile 1に対して細かいレベルのタイリングが実行される。次いで、本方法は、画像内の残りの各タイルに対して粗いレベルのタイリング及び細かいレベルのタイリングを実行することに進む。例えば、図5に示される例を使用すると、方法400は、Tile 2に対して粗いレベルのタイリング及び細かいレベルのタイリングを実行することに進み、次いで、Tile 3に対して粗いレベルのタイリング及び細かいレベルのタイリングを実行する。
ブロック410において、画像が次のタイルを含まないと判定された場合、方法はブロック412に進み、次の画像(フレーム)を処理する。例えば、図5に示される例を使用すると、ブロック410において、画像500が次のタイルを含まないと判定された場合(すなわち、粗いレベルのタイリング及び細かいレベルのタイリングがTile 3に対して実行された後)、方法400は、次の画像(フレーム)をレンダリングするためにブロック412に進む。
図6は、本開示の特徴による、表示のための画像の第1のタイルをレンダリングする例示的なフローを示す例示的なデバイスの構成要素のブロック図である。図6は、例えば、図5に示される画像500の第1のタイル(Tile 0)の粗いレベルのタイリング及び細かいレベルのタイリングを実行することを示す。
図6に示されるように、命令は、プロセッサ604(例えば、GPU)によってコマンドストリーム602を介して受信され、画像のタイルのレンダリングを実行する。命令は、例えば、コマンドバッファ(図示せず)に記憶される。プロセッサ604は、レンダリングされるプリミティブ(例えば、三角形)の属性をジオメトリエンジン(geometry engine、GE)606に提供する。
GE606は、例えば、インデックスバッファ608からインデックス情報を受信し、プロセッサ604によって提供された属性情報を、処理のためにシェーダ(非固定機能ハードウェア)に通信する。例えば、三角形の頂点は、ローカルに(例えば、頂点バッファに)記憶される。インデックス情報は、各三角形について、頂点バッファに記憶された頂点のうち何れの3点が三角形の頂点であるかを示す。すなわち、インデックス情報は、頂点の接続性を記述する。例えば、辺を共有しない2つの三角形が、6つの頂点から構成される一方で、辺を共有する2つの三角形は、4つの頂点から構成される。6つの頂点から構成される2つの三角形について、2つの三角形のインデックスは、(0,1,2)(3,4,5)であり、4つの頂点から構成される2つの三角形について、2個の三角形のインデックスは、(0,1,2)(1,2,3)であり得る。GEは、ハードウェア(例えば、固定機能ハードウェア)、ソフトウェア、又は、ハードウェア及びソフトウェアの組み合せで実装することができる。
シェーダ610は、プリミティブを3Dオブジェクトとして受信し、プリミティブを2Dスクリーン上にレンダリングされる2Dオブジェクトに変換する。例えば、シェーダ610は、フレーム内の三角形の頂点の位置を判定する。位置情報は、プリミティブアセンブラ612に提供される。追加情報(例えば、色及びテクスチャ情報)もローカルメモリのプリミティブキャッシュ部分616に提供される。
プリミティブアセンブラ612は、シェーダ610によって判定された位置情報を使用して、頂点を組み合わせ、各三角形の頂点の位置からフレーム内の各三角形の位置を判定する。次いで、位置情報は、プリミティブタイラー及びラスタライザ614(プリミティブビナー及びラスタライザとも呼ばれる)並びにプリミティブキャッシュ部分616に提供される。
この例示的な実施形態におけるプリミティブタイラー及びラスタライザ614は、2つの異なる機能を実施する固定機能ハードウェアブロックを表す。すなわち、同じ固定機能ハードウェアが、粗いレベルのタイリングと細かいレベルのタイリングの両方を実行するために使用される。プリミティブタイラー及びラスタライザ614は、画像(フレーム)を粗いタイルに分割し、粗いタイルを細かいタイルに分割する。プリミティブタイラー及びラスタライザ614は、粗いレベルのタイリング(すなわち、粗いレベルのラスタラズ)を実行して、各プリミティブ(例えば、三角形)が何れの粗いタイルに位置するかを判定する。すなわち、プリミティブタイラー及びラスタライザ614は、各粗いタイルについて、粗いタイル内の各三角形の可視性を判定する。例えば、図5に示される例を使用すると、プリミティブタイラー及びラスタライザ614は、三角形TRI 1がTile 0に位置することを判定する。位置情報は、可視性情報618としてローカルメモリ(例えば、キャッシュメモリ)に記憶される。また、プリミティブタイラー及びラスタライザ614は、プリミティブ(例えば、三角形)のバッチを蓄積するためにローカルメモリ(例えば、オンチップキャッシュ)を利用し、プリミティブを一度に1つの細かいタイルにレンダリングする、細かいレベルのタイリングを実行する。
プリミティブタイラー及びラスタライザ614は、2Dスクリーン上に投影される各プリミティブのスクリーン上の位置を判定する。例えば、ラスタライズ中に、加速処理デバイス(例えば、GPU)は、各プリミティブについて、何れのピクセル(又はサブピクセルサンプル)が2Dスクリーン上にレンダリングされる各プリミティブに対応するかを判定する。ピクセルシェーダ段階中に、プリミティブに対応するピクセルについて値(例えば、輝度及び色)が計算され、ピクセルパイプ620に提供される。
図7は、本開示の特徴による、表示のための画像の他のタイル(すなわち、第1のタイル以外の残りのタイル)の各々をレンダリングする例示的な方法を示すフロー図である。図7は、例えば、図5に示される画像500のタイルTile 1、Tile 2及びTile 3の粗いレベルのタイリング及び細かいレベルのタイリングを実行することを示す。
残りのタイルの各々をレンダリングする場合、プロセッサ404は、Tile 0のための命令と同じ命令を実行するが、図6に示されるように、ローカルメモリに記憶された可視性情報418は、残りのタイルのためのデータ(例えば、プリミティブ)の処理(例えば、不要な処理)を低減するために利用される。例えば、図5に示される例を使用すると、Tile 0の処理中に、図5に示される三角形1(Tri 1)がTile 1に位置していないと判定される。したがって、Tile 1が処理される場合、Tri 1の処理は回避される。
図7に示されるように、記憶されている可視性情報418は、2つのタイプの可視性情報、すなわち、ドローコール可視性情報702及び三角形可視性情報704に分割される。可視性情報418は、各タイルについてのドロー(各々が三角形等の1つ以上のプリミティブを含む)を示す。ドローコール可視性情報702は、何れのドローが処理されているタイルについて含まれているかを示し、三角形可視性情報704は、各ドローの何れの三角形が処理されているタイルについて含まれているかを示す。
例えば、2つの三角形(Tri 1及びTri 2)を含む図5の例示的な画像500を使用すると、命令は「Draw 1:Tri 1,Tri 2」であり得る。すなわち、命令は、ドロー(例えば、Draw 1)及びドロー内の三角形(例えば、Draw 1は、Tri 1及びTri 2を含む)を示す。プロセッサ604は、各タイルについて同じ命令を受信する。例えば、1つのDraw命令のみが存在すると仮定すると、第1のタイル(Tile 0)を処理する場合、Tile 0の可視性情報618は、Tri 1がTile 0において可視であるが、Tri 2はTile 0において可視でないと判定される。第2のタイル(Tile 1)を処理する場合、ドローコール可視性情報702は、Draw 1が1つの三角形を含むことを示し、Tile 0の処理中にTri 1がTile 1内にないと判定されたので、Tile 1の三角形可視性情報704は、Tri 2であると判定される。
Tile 2を処理する場合、ドローコール可視性情報702は、Draw 1が1つの三角形のみを含むことを再び示し、Tile 2の三角形可視性情報704は、Tri 1として判定される。Tile 3を処理する場合、ドローコール可視性情報702は、Draw 1が1つの三角形のみを含むことを再び示し、Tile 3の三角形可視性情報704は、Tri 2であると判定される。したがって、不要な処理(例えば、Tile 2、Tile 2及びTile 3における第2の三角形)が回避される。次いで、図7の残りのブロック610~620は、図6に関して上述したのと同じ機能を実施する。
既存のTLPBBフローでは、ビナーハードウェアは、プリミティブをラスタライズし、プリミティブの選別及びセットアップの後であるが、任意の深度処理の前に可視性情報を収集する。いくつかのプリミティブ又はドローは、初期深度テストによってキルされるが、従来のフローでは、それらは依然として可視としてマークされ、レンダリングフェーズで再び処理される。
したがって、以下で説明するように、可視性収集は、初期深度テストの後まで延期される。上述したプリミティブ及びドローは、不可視としてマークされ、レンダリングフェーズ中にスキップされ得る。加えて、可視性フェーズにおいて初期深度テストを行うことは、オーバードローを低減するためにレンダリングフェーズにおいて使用され得る深度バッファをセットアップするために利用され得る。
図8は、2レベルのビニングを用いた事後深度可視性収集の特徴による、表示のために画像のタイルをレンダリングする例示的な方法を示すフロー図である。図8は、コマンドストリーム802、コマンドプロセッサ804、ジオメトリエンジン806、インデックスバッファ808、シェーダ810、プリミティブアセンブラ812、プリミティブバッチベースのビンレンダリング/スケールラスタライザ(primitive batch-based bin rendering/scale rasterizer、PBB/SC)814(プリミティブビナー及びラスタライザ614と同様)、プリミティブキャッシュ816、ビナー817、深度バックエンド821、及び、シェーダ822を含む。
図8に示される構成要素は、図6及び図7におけるそれらの対応物と同じ機能を主に実施する。深度バックエンド821及びシェーダ822は、例えば、図6及び図7のピクセルパイプ620内の構成要素である。しかしながら、例えば、図6に示されるように、可視性情報618は、プリミティブアセンブラ612の後にプリミティブタイラー及びラスタライザ614によって収集される。
図8では、可視性情報818は、深度バックエンド821による深度判定の後に、ビナー817によって収集される。したがって、ブロックされていると判定され得る三角形又は他のオブジェクトの背後に存在し、したがって見えないピクセルは、処理のために可視性情報818に含まれない。
したがって、上記によれば、レンダリング中に不可視プリミティブを処理するために利用されるリソースが少なくなる。すなわち、可視性フェーズでは、全てのプリミティブがラスタライズされ、深度バッファを更新するために深度についてテストされる。深度テストに合格したプリミティブのみが、可視性生成のためにビナーに送られる。可視性パスからの深度テストからの深度バッファ結果は、ビンレンダリングフェーズにおいて使用される。
したがって、プリミティブ可視性を計算するために深度テスト後情報を使用する2レベルのビニング方法が説明される。上記の方法の実施形態は、既存の2レベルのビニングの上に実施され得る。加えて、上記の方法は、粗いラスタライザの必要性を排除し、パイプラインにおいて細かいラスタライザによって生成された情報を使用し得る。可視性を生成しながら、フレーム全体のための深度バッファが構築され、これは、粗いビンレンダリングフェーズにおいて使用される場合、より多くのオーバードローを低減することができる。
後で(例えば、深度バックエンドの後に)ビナーを再配置することによって、可視性情報は、深度テストを切り抜けた三角形(又はタイル)についてのみ生成される。すなわち、別のオブジェクトの背後に存在/レンダリングし得るオブジェクトが選別される。したがって、ビナーは、その三角形の可視性情報を記録しない。
上記は、可視性ストリームの外側に行くトラフィック及びデータに対する処理を節約し得る。また、再処理が行われる第2のフェーズ中に、処理のために、その三角形をスキップすることができる。その三角形は可視でないので、処理されず、処理時間を節約する。
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
各図に示され及び/又は本明細書に記載された様々な機能ユニット(プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、APD116、スケジューラ136、グラフィックス処理パイプライン134、計算ユニット132及びSIMDユニット138を含むが、これらに限定されない)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の記憶媒体に記憶されているプログラム、ソフトウェア若しくはファームウェアとして実装することができる。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実装することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
Claims (25)
- コンピュータシステムにおける表示のために画像をタイルレンダリングする方法であって、
前記コンピュータシステムのグラフィックスパイプラインにおいて前記画像を受信することであって、前記画像は1つ以上の三次元(3D)オブジェクトを含む、ことと、
深度テストに基づいて、前記画像のプリミティブを1つ以上のタイルにビニングすることと、を含む、
方法。 - 前記深度テストは、前記1つ以上のタイル内の1つ以上のプリミティブの可視性を判定する、
請求項1の方法。 - 第1のタイルに存在する第1のプリミティブの可視性情報は、前記第1のプリミティブが可視プリミティブであると前記深度テストが判定したことに基づいてビニングされる、
請求項2の方法。 - 前記深度テストにおいて可視でないと判定された前記第1のタイル内に存在する第2のプリミティブの可視性情報は、破棄される、
請求項3の方法。 - 前記深度テストにおいて可視でないと判定された第2のタイル内に存在する第3のプリミティブの可視性情報は、破棄される、
請求項4の方法。 - 別のオブジェクトによってブロックされていると判定されたプリミティブは、可視プリミティブではないプリミティブとして識別される、
請求項4の方法。 - 可視であると判定された1つ以上のプリミティブは、表示のためにレンダリングされる、
請求項2の方法。 - コンピュータシステムにおける表示のために画像をタイルレンダリングする処理装置であって、
メモリと、
前記メモリに通信可能に結合されたプロセッサと、を備え、
前記プロセッサは、
グラフィックスパイプラインにおいて画像を受信することであって、前記画像は1つ以上の三次元(3D)オブジェクトを含む、ことと、
深度テストに基づいて、前記画像のプリミティブを1つ以上のタイルにビニングすることと、
を行うように構成されている、
処理装置。 - 前記プロセッサは、前記深度テストにおいて、前記1つ以上のタイル内の1つ以上のプリミティブの可視性を判定する、
請求項8の処理装置。 - 前記プロセッサは、前記深度テストが第1のプリミティブを可視プリミティブであると判定すると、第1のタイルに存在する第1のプリミティブの可視性情報をビニングする、
請求項9の処理装置。 - 前記プロセッサは、前記深度テストにおいて可視でないと判定された前記第1のタイル内に存在する第2のプリミティブの可視性情報を破棄する、
請求項10の処理装置。 - 前記プロセッサは、前記深度テストにおいて可視でないと判定された第2のタイル内に存在する第3のプリミティブの可視性情報を破棄する、
請求項11の処理装置。 - 前記プロセッサは、別のオブジェクトによってブロックされていると判定されたプリミティブを、可視プリミティブではないプリミティブとして識別する、
請求項11の処理装置。 - 前記プロセッサは、可視であると判定された1つ以上のプリミティブを、表示のためにレンダリングする、
請求項9の処理装置。 - コンピュータシステムにおける表示のために画像をタイルレンダリングするためのコンピュータ可読記憶媒体であって、前記コンピュータ可読記憶媒体は命令を含み、
前記命令は、プロセッサによって実行されると、
前記コンピュータシステムのグラフィックスパイプラインにおいて前記画像を受信することであって、前記画像は1つ以上の三次元(3D)オブジェクトを含む、ことと、
深度テストに基づいて、前記画像のプリミティブを1つ以上のタイルにビニングすることと、
を含む動作を前記プロセッサに行わせる、
コンピュータ可読記憶媒体。 - 前記深度テストは、前記1つ以上のタイル内の1つ以上のプリミティブの可視性を判定する、
請求項15のコンピュータ可読記憶媒体。 - 第1のタイルに存在する第1のプリミティブの可視性情報は、前記第1のプリミティブが可視プリミティブであると前記深度テストが判定したことに基づいてビニングされる、
請求項16のコンピュータ可読記憶媒体。 - 前記深度テストにおいて可視でないと判定された前記第1のタイル内に存在する第2のプリミティブの可視性情報は、破棄される、
請求項17のコンピュータ可読記憶媒体。 - 前記深度テストにおいて可視でないと判定された第2のタイル内に存在する第3のプリミティブの可視性情報は、破棄される、
請求項18のコンピュータ可読記憶媒体。 - 別のオブジェクトによってブロックされていると判定されたプリミティブは、可視プリミティブではないプリミティブとして識別される、
請求項18のコンピュータ可読記憶媒体。 - コンピュータシステムにおける表示のために画像をタイルレンダリングするためのコンピュータ可読記憶媒体であって、前記コンピュータ可読記憶媒体は命令を含み、
前記命令は、プロセッサを生成するように構成されており、
前記プロセッサは、
前記コンピュータシステムのグラフィックスパイプラインにおいて前記画像を受信することであって、前記画像は1つ以上の三次元(3D)オブジェクトを含む、ことと、
深度テストに基づいて、前記画像のプリミティブを1つ以上のタイルにビニングすることと、
を含む機能を実施するように構成されている、
コンピュータ可読記憶媒体。 - 前記深度テストは、前記1つ以上のタイル内の1つ以上のプリミティブの可視性を判定する、
請求項21のコンピュータ可読記憶媒体。 - 第1のタイルに存在する第1のプリミティブの可視性情報は、前記第1のプリミティブが可視プリミティブであると前記深度テストが判定したことに基づいてビニングされる、
請求項22のコンピュータ可読記憶媒体。 - 前記深度テストにおいて可視でないと判定された前記第1のタイル内に存在する第2のプリミティブの可視性情報は、破棄される、
請求項23のコンピュータ可読記憶媒体。 - 前記深度テストにおいて可視でないと判定された第2のタイル内に存在する第3のプリミティブの可視性情報は、破棄される、
請求項24のコンピュータ可読記憶媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163168875P | 2021-03-31 | 2021-03-31 | |
US63/168,875 | 2021-03-31 | ||
US17/562,872 US20220319091A1 (en) | 2021-03-31 | 2021-12-27 | Post-depth visibility collection with two level binning |
US17/562,872 | 2021-12-27 | ||
PCT/US2022/018795 WO2022211966A1 (en) | 2021-03-31 | 2022-03-03 | Post-depth visibility collection with two level binning |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024511763A true JP2024511763A (ja) | 2024-03-15 |
Family
ID=83448168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023557705A Pending JP2024511763A (ja) | 2021-03-31 | 2022-03-03 | 2レベルのビニングを用いた事後深度可視性収集 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220319091A1 (ja) |
EP (1) | EP4315258A1 (ja) |
JP (1) | JP2024511763A (ja) |
KR (1) | KR20230162006A (ja) |
CN (1) | CN117083637A (ja) |
WO (1) | WO2022211966A1 (ja) |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579455A (en) * | 1993-07-30 | 1996-11-26 | Apple Computer, Inc. | Rendering of 3D scenes on a display using hierarchical z-buffer visibility |
US5600763A (en) * | 1994-07-21 | 1997-02-04 | Apple Computer, Inc. | Error-bounded antialiased rendering of complex scenes |
US7068272B1 (en) * | 2000-05-31 | 2006-06-27 | Nvidia Corporation | System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline |
US6480205B1 (en) * | 1998-07-22 | 2002-11-12 | Nvidia Corporation | Method and apparatus for occlusion culling in graphics systems |
US6359623B1 (en) * | 1998-11-12 | 2002-03-19 | Hewlett-Packard Company | Method and apparatus for performing scan conversion in a computer graphics display system |
US6525726B1 (en) * | 1999-11-02 | 2003-02-25 | Intel Corporation | Method and apparatus for adaptive hierarchical visibility in a tiled three-dimensional graphics architecture |
US20020196252A1 (en) * | 2001-06-20 | 2002-12-26 | Min-Hao Liao | Method and apparatus for rendering three-dimensional images with tile-based visibility preprocessing |
US7091971B2 (en) * | 2001-10-29 | 2006-08-15 | Ati Technologies, Inc. | System, method, and apparatus for multi-level hierarchical Z buffering |
CN102016928B (zh) * | 2008-01-23 | 2014-01-08 | 英特尔公司 | 用于提高的图形性能的方法、设备 |
KR102116708B1 (ko) * | 2013-05-24 | 2020-05-29 | 삼성전자 주식회사 | 그래픽스 프로세싱 유닛 |
KR20160063081A (ko) * | 2014-11-26 | 2016-06-03 | 삼성전자주식회사 | 선택적 테셀레이션 방법 및 장치 |
US11195326B2 (en) * | 2018-09-21 | 2021-12-07 | Advanced Micro Devices, Inc. | Method and system for depth pre-processing and geometry sorting using binning hardware |
US11055904B2 (en) * | 2019-08-27 | 2021-07-06 | Arm Limited | Optimizing depth testing in graphics processing systems that perform early and late depth testing |
-
2021
- 2021-12-27 US US17/562,872 patent/US20220319091A1/en active Pending
-
2022
- 2022-03-03 CN CN202280023626.7A patent/CN117083637A/zh active Pending
- 2022-03-03 KR KR1020237034856A patent/KR20230162006A/ko unknown
- 2022-03-03 EP EP22781828.3A patent/EP4315258A1/en active Pending
- 2022-03-03 WO PCT/US2022/018795 patent/WO2022211966A1/en active Application Filing
- 2022-03-03 JP JP2023557705A patent/JP2024511763A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4315258A1 (en) | 2024-02-07 |
US20220319091A1 (en) | 2022-10-06 |
KR20230162006A (ko) | 2023-11-28 |
CN117083637A (zh) | 2023-11-17 |
WO2022211966A1 (en) | 2022-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11657560B2 (en) | VRS rate feedback | |
JP2020532789A (ja) | 可変レートシェーディング | |
JP2022512082A (ja) | 可変レートシェーディングとスーパーサンプリングシェーディングの統合 | |
JP2019537164A (ja) | Zカリング後の重複フラグメントの除去又は識別 | |
US20180211434A1 (en) | Stereo rendering | |
WO2018140223A1 (en) | Stereo rendering | |
US11972518B2 (en) | Hybrid binning | |
US11741653B2 (en) | Overlapping visibility and render passes for same frame | |
US20220414939A1 (en) | Render target compression scheme compatible with variable rate shading | |
US20220319091A1 (en) | Post-depth visibility collection with two level binning | |
US11880924B2 (en) | Synchronization free cross pass binning through subpass interleaving | |
US11900499B2 (en) | Iterative indirect command buffers | |
US20240169641A1 (en) | Vertex index routing through culling shader for two level primitive batch binning | |
US20240104685A1 (en) | Device and method of implementing subpass interleaving of tiled image rendering | |
US20210398349A1 (en) | Fine grained replay control in binning hardware | |
US20230298261A1 (en) | Distributed visibility stream generation for coarse grain binning | |
US20240087078A1 (en) | Two-level primitive batch binning with hardware state compression | |
US20240070961A1 (en) | Vertex index routing for two level primitive batch binning | |
US20230186523A1 (en) | Method and system for integrating compression |