JP2017097870A - グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法 - Google Patents
グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法 Download PDFInfo
- Publication number
- JP2017097870A JP2017097870A JP2016223100A JP2016223100A JP2017097870A JP 2017097870 A JP2017097870 A JP 2017097870A JP 2016223100 A JP2016223100 A JP 2016223100A JP 2016223100 A JP2016223100 A JP 2016223100A JP 2017097870 A JP2017097870 A JP 2017097870A
- Authority
- JP
- Japan
- Prior art keywords
- draw call
- tessellation
- tile
- pipeline
- type
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- 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
- 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
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
【課題】 グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法を提供する。【解決手段】 グラフィックス処理装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法は、ドローコールに対応するバウンディングボックスのタイルビニング結果を含むビットストリームを生成し、ビットストリームによって割り当てられたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、タイルをレンダリングする。【選択図】 図7
Description
本発明は、グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法に関する。
GPU(graphics processing unit)のようなグラフィックス処理装置は、コンピューティング装置において、グラフィックスデータをレンダリングする役割を担う。一般的に、グラフィックス処理装置は、二次元オブジェクトまたは三次元オブジェクトに該当するグラフィックスデータを二次元ピクセル表現に変換し、表示のためのフレームを生成する。コンピューティング装置の種類としては、PC(personal computer)、ノート型PC、ビデオゲーム用コンソールだけではなく、スマートフォン、タブレットデバイス、ウェアラブルデバイスのようなエンベデッド(embedded)デバイスも含まれる。スマートフォン、タブレットデバイス、ウェアラブルデバイスのようなエンベデッドデバイスは、比較的低い演算処理能力、及び多くの電力消費の問題によって、十分なメモリ空間及び処理能力を確保しているPC、ノート型PC、ビデオゲーム用コンソールのようなワークステーションと同一のグラフィックス処理性能を有し難い。しかし、最近、全世界的にスマートフォンまたはタブレットデバイスのような携帯デバイスが広く普及されるにつれて、ユーザは、スマートフォンまたはタブレットデバイスを介して、ゲームをプレイしたり、映画、ドラマなどのコンテンツを鑑賞したりする頻度が急増している。これにより、グラフィックス処理装置の製造業者は、ユーザの需要に歩調を合わせ、エンベデッドデバイスにおいても、グラフィックス処理装置の性能及び処理効率を高めるための多くの研究を進めている。
本発明が解決しようとする課題は、グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法を提供することである。本実施形態が関係する技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から、他の技術的課題が類推される。
一側面によれば、グラフィックス処理装置においてグラフィックスパイプラインを実行する方法は、テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含む第1ビットストリームを生成するビニングパイプラインを実行する段階と、現在処理される現在タイルにおいて、前記第1ビットストリームによって割り当てられたバウンディングボックスが識別された場合、前記の識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを実行することにより、前記現在タイルをレンダリングするレンダリングパイプラインを実行する段階と、を含む。
また、前記第1ビットストリームは、入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及び前記テッセレーティングされる必要があるドローコールに対応する前記バウンディングボックスをカバーするタイルリストの情報を含む。
また、前記ビニングパイプラインを実行する段階は、入力されたドローコールそれぞれの可視性を示す情報を含む第2ビットストリーム、及び前記入力されたドローコールそれぞれに含まれるプリミティブの可視性を示す情報を含む第3ビットストリームを生成する段階をさらに含む。
また、前記ビニングパイプラインを実行する段階は、入力されたドローコールのうち、前記テッセレーションが必要な第1タイプのドローコール、及び前記テッセレーションが不要な第2タイプのドローコールを判別する段階と、前記第1タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行う段階と、前記第1タイプのドローコールを示す識別情報、前記第2タイプのドローコールを示す識別情報、及び前記タイルリストの情報を含む前記第1ビットストリームを生成する段階と、を含む。
また、前記グラフィックスパイプラインは、前記レンダリングパイプラインでのみ前記テッセレーションを行うディファードテッセレーション(deferred tessellation)を実行する。
また、前記レンダリングパイプラインは、前記第1ビットストリームを利用して、前記テッセレーションが必要な第1タイプのドローコール、及び前記テッセレーションが不要な第2タイプのドローコールに対して、互いに異なるレンダリング方式で、前記現在タイルをレンダリングする。
また、前記第1タイプのドローコールは、テッセレーションステージを含む第1サブレンダリングパイプラインによって処理され、前記第2タイプのドローコールは、テッセレーションステージを含まない第2サブレンダリングパイプラインによって処理される。
また、前記第1サブレンダリングパイプラインは、前記現在タイルで処理される前記第1タイプのドローコールに対する前記テッセレーションが、以前タイルで行われていない場合、前記現在タイルで処理される前記第1タイプのドローコールに対して、前記テッセレーションを行い、前記現在タイルで処理される前記第1タイプのドローコールに対するテッセレーティングされたプリミティブ(tessellated primitives)が、以前タイルですでに生成されている場合、前記現在タイルで処理されるドローコールに対する前記テッセレーションをスキップする。
また、前記レンダリングパイプラインを実行する段階は、前記第1ビットストリームに含まれる前記タイルビニング結果に基づいて、前記バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングする段階をさらに含み、前記レンダリングパイプラインは、前記のスケジューリングされたタイルのレンダリング順序によって、タイル単位で前記レンダリングを行う。
また、前記レンダリングパイプラインが実行される間、前記第1タイプのドローコールに対するテッセレーティングされたプリミティブが、他のタイルで利用されない場合、メモリから前記テッセレーティングされたプリミティブと係わるデータを削除する段階をさらに含む。
他の側面によれば、前記方法をコンピュータに実行させるためのプログラムを提供する。
さらに他の側面によれば、前記プログラムを記録したコンピュータで読み取り可能な記録媒体を提供する。
さらに他の側面によれば、グラフィックスパイプラインを実行するコンピューティング装置は、テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含む第1ビットストリームを生成するビニングパイプライン、及び現在処理される現在タイルにおいて、前記第1ビットストリームによって割り当てられたバウンディングボックスが識別された場合、前記の識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、前記現在タイルをレンダリングするレンダリングパイプラインを実行するグラフィックス処理装置と、前記ビニングパイプラインで生成された前記第1ビットストリームを保存し、前記の保存された第1ビットストリームを前記レンダリングパイプラインに提供するメモリと、を含む。
また、前記第1ビットストリームは、入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及び前記テッセレーティングされる必要があるドローコールに対応する前記バウンディングボックスをカバーするタイルリストの情報を含む。
また、前記グラフィックス処理装置は、前記ビニングパイプラインが実行される間、入力されたドローコールそれぞれの可視性を示す情報を含む第2ビットストリーム、及び前記入力されたドローコールそれぞれに含まれるプリミティブの可視性を示す情報を含む第3ビットストリームを生成する。
また、前記グラフィックス処理装置は、前記ビニングパイプラインが実行される間、入力されたドローコールのうち、前記テッセレーションが必要な第1タイプのドローコール、及び前記テッセレーションが不要な第2タイプのドローコールを判別し、前記第1タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行い、前記第1タイプのドローコールを示す識別情報、前記第2タイプのドローコールを示す識別情報、及び前記タイルリストの情報を含む前記第1ビットストリームを生成する。
また、前記グラフィックス処理装置は、ディファードテッセレーションに基づいた前記グラフィックスパイプラインを実行する。
また、前記グラフィックス処理装置は、前記レンダリングパイプラインが実行される間、前記第1ビットストリームを利用して、前記テッセレーションが必要な第1タイプのドローコール、及び前記テッセレーションが不要な第2タイプのドローコールに対して互いに異なるレンダリング方式で、前記現在タイルをレンダリングする。
また、前記第1タイプのドローコールは、テッセレーションステージを含む第1サブレンダリングパイプラインによって処理され、前記第2タイプのドローコールは、テッセレーションステージを含まない第2サブレンダリングパイプラインによって処理される。
また、前記グラフィックス処理装置は、前記レンダリングパイプラインが実行される間、前記第1ビットストリームに含まれる前記タイルビニング結果に基づいて、前記バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングし、前記のスケジューリングされたタイルのレンダリング順序によって、タイル単位で前記レンダリングを行う。
また、前記メモリは、前記レンダリングパイプラインが実行される間、前記第1タイプのドローコールに対するテッセレーティングされたプリミティブが、他のタイルで利用されない場合、前記テッセレーティングされたプリミティブと係わるデータを削除する。
本実施形態で使用される用語として、本実施形態での機能を考慮しながら、可能な限り現在広く使用されている一般的な用語を選択したが、それは、当業者の意図または判例、新たな技術の出現などによって異なりもする。また、特定の場合は、任意に選定された用語もあり、その場合、当該実施形態の説明部分で詳細にその意味を記載する。従って、本実施形態で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本実施形態の全般にわたる内容とを基に定義されなければならない。
実施形態に係わる説明において、ある部分が他の部分と接続されているとするとき、それは、直接的に接続されている場合だけではなく、その中間に、他の構成要素を挟んで電気的に接続されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特に反対の記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいことを意味する。また、実施形態に記載された「・・・部」、「・・・モジュール」という用語は、少なくとも1つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現化されるか、あるいはハードウェアとソフトウェアとの組み合わせによっても具現化される。
本実施形態で使用される「構成される」または「含む」というような用語は、明細書に記載された多くの構成要素、またはさまざまな段階のいずれも必ず含むものであると解釈されるべきではなく、そのうち一部の構成要素または一部の段階は、含まれないこともあり、またはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。
下記実施形態に係わる説明は、権利範囲を限定するものであると解釈されてはならず、当該技術分野の当業者が容易に類推することができることは、実施形態の権利範囲に属するものであると解釈されなければならない。以下、添付された図面を参照しながら、例示のために過ぎない実施形態について詳細に説明する。
図1は、一実施形態によるコンピューティング装置について説明するための図面である。
図1を参照すると、コンピューティング装置1は、GPU10、CPU(central processing unit)20、メモリ30及びバス40を含む。図1に図示されたコンピューティング装置1には、実施形態と係わる構成要素だけが図示されている。従って、図1に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことは、当該技術分野の当業者であるならば、理解することができるであろう。
コンピューティング装置1の例として、デスクトップコンピュータ、ノート型PC、スマートフォン、PDA(personal digital assistant)、携帯型メディアプレイヤ、ビデオゲーム用コンソール、テレビセットトップボックス、タブレットデバイス、電子書籍リーダ、ウェアラブルデバイスなどを挙げることができるが、それらに限定されるものではない。すなわち、コンピューティング装置1は、コンテンツの表示のためのグラフィックス処理機能を有する装置であり、コンピューティング装置1の範疇には、多様な装置が含まれてよい。
CPU20は、コンピューティング装置1の全般的な動作及び機能を制御するハードウェアである。例えば、CPU20は、オペレーティングシステム(OS:operating system)を駆動し、GPU10のためのグラフィックスAPI(application programming interface)を呼び出し、GPU10のドライバを実行することができる。また、CPU20は、メモリ30に保存された多様なアプリケーション、例えば、ウェブブラウジングアプリケーション、ゲームアプリケーション、ビデオアプリケーションなどを実行することができる。
GPU10は、OpenGL(登録商標)(open graphic(s) library)、DirectX(登録商標)、CUDA(compute unified device architecture)のような多様なバージョン、種類のグラフィックスパイプライン(graphics pipeline)100を実行するグラフィックス専用プロセッサとして、三次元イメージ上の三次元オブジェクトを、表示用の二次元イメージにレンダリングするために三次元グラフィックスパイプラインを実行するように具現化されたハードウェアでもある。例えば、GPU10は、シェーディング、ブレンディング、イルミネーティングのような多様な機能、及び表示されるピクセルに対するピクセル値を生成するための多様な機能を実行することもできる。
GPU10は、タイルベース(tile-based)グラフィックスパイプラインまたはタイルベースレンダリング(TBR:tile-based rendering)を行うことができる。タイルベースという用語は、動画の各フレームを複数のタイルに分割した(dividingまたはpartitioning)後、タイル単位でレンダリングを行うことを意味する。タイルベースのアーキテクチャは、ピクセル単位でフレームを処理するときよりも演算量が少なくなるため、スマートフォン、タブレットデバイスのように、比較的処理性能が低いモバイルデバイス(または、エンベデッドデバイス)で使用するグラフィックスレンダリング方法でもある。
図1を参照すると、GPU10は、ビニングパイプライン(binning pipeline)101及びレンダリングパイプライン(rendering pipeline)102を含むグラフィックスパイプライン100を実行することができる。ビニングパイプライン101は、二次元オブジェクトまたは三次元オブジェクトを構成する頂点、プリミティブまたはパッチが、いずれのタイルに含まれるかを示すタイルリストを生成するプロセスである。かような理由によって、ビニングパイプライン101は、タイリングパイプライン(tiling pipeline)、ビニングフェーズ(binning phase)の用語のような他の用語で代替されることもある。レンダリングパイプライン102は、ビニングパイプライン101で生成されたタイルリストに基づいて、タイル単位で(per tile)、オブジェクトをレンダリングするプロセスである。レンダリングパイプライン102が完了すれば、二次元表示画面上に表示される二次元オブジェクトまたは三次元オブジェクトのピクセル表現が決定される。レンダリングパイプライン102は、レンダリングフェーズ(rendering phase)の用語のように、他の用語で代替されることもある。
Microsoft(登録商標)社のDirectX(登録商標)11(DX11) API、OpenGL(登録商標) 4.0 APIなどを含む特定のグラフィックスパイプラインは、グラフィックスプリミティブ(または、グラフィックスパッチ)のテッセレーションのためのさらなる処理ステージ(テッセレーションステージ)を含む。テッセレーションは、グラフィックスパッチを、さらに小さいグラフィックスプリミティブに分割し、さらに微細なディテールを有するイメージの表示を可能にするプロセスである。コンピューティング装置1のGPU10で駆動されるグラフィックスパイプライン100は、かようなテッセレーションを支援することができる。一方、本明細書において、以下で説明される実施形態は、GPU10によって駆動される。
メモリ30は、コンピューティング装置1内で処理される各種データを保存するハードウェアであり、例えば、メモリ30は、GPU10及びCPU20で処理されたデータ、及び処理されるデータを保存することができる。また、メモリ30は、GPU10及びCPU20によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ30は、DRAM(dynamic random access memory)、SRAM(static random access memory)のようなRAM(random access memory)、ROM(read only memory)、EEPROM(electrically erasable and programmable read only memory)、CD(compact disc)−ROM、ブルーレイ(登録商標)(Blu-ray)ディスクまたは他の光ディスクストレージ、HDD(hard disk drive)、SSD(solid state drive)、またはフラッシュメモリを含み、さらに、コンピューティング装置1によりアクセス可能な外部の他のストレージデバイスを含んでもよい。
バス40は、コンピューティング装置1内のハードウェア間でデータを送受信することができるように、ハードウェアを接続させるハードウェアであり、バス40は、例えば、PCIバス、PCIエクスプレスバスのような多種のバスを含んでよい。
図2は、タイルベースレンダリング(TBR)について説明するための図面である。図2を参照すると、自動車オブジェクト220は、ある動画でのある1フレームに該当すると仮定する。図1のGPU10は、三次元自動車オブジェクト220が含まれる1フレームを、N×M(N、Mは、自然数)タイル210に分割する。ここで、三次元自動車オブジェクト220が含まれるフレームをタイル210に分割し、どのタイル210に三次元自動車オブジェクト220が存在するかということの判別は、図1のビニングパイプライン101によって実行される。その後、図1のGPU10は、タイル単位で、タイル210に含まれる三次元自動車オブジェクト220をレンダリングし、ピクセル表現に変換する。ここで、タイル単位で三次元自動車オブジェクト220をレンダリングし、ピクセル表現に変換することは、図1のレンダリングパイプライン102によって行われる。このように、1フレームに含まれる三次元自動車オブジェクト220を、ピクセル単位でレンダリングするのではなく、タイル210を利用してレンダリングすることを、タイルベースレンダリング(TBR)という。
図3ないし図5は、テッセレーションパイプラインについて説明するための図面である。以下では、図3ないし図5を連携させて説明する。前述のように、図3ないし図5で説明されるテッセレーションパイプライン(または、テッセレーションステージ)300は、図1のグラフィックスパイプライン100に含まれてよい。
図3を参照すると、テッセレーションパイプライン300は、制御シェーダ(control shader)121、テッセレータ(tessellator)123及びテッセレーション評価シェーダ(tessellation evaluation shader)125によって実行される。すなわち、本明細書で説明されるテッセレーションパイプライン300という用語は、グラフィックスパイプライン100のバージョン、種類に応じて、他の用語で代替されることもある。例えば、制御シェーダ121は、ハルシェーダ(hull shader)という用語で、テッセレーション評価シェーダ125は、ドメインシェーダ(domain shader)という用語で代替されることもある。
制御シェーダ121は、低次(low order)のサーフェスを表現する入力制御点(input control points)を、パッチを構成する出力制御点(output control points)に変換する。例えば、制御シェーダ121は、入力制御点を変換し、図4に図示された制御点P00、P01、P02、P03、P10、P11、P12、P13、P20、P21、P22、P23、P30、P31、P32及びP33で構成されたメッシュ(mesh)のパッチ410を生成することができる。ここで、パッチは、三角形、四角形、等値線(isoline)などのポリゴン形態を有することもできる。
制御シェーダ121は、パッチを構成する出力制御点を生成することに加えて、テッセレーション係数(TF:tessellation factor)またはテッセレーションレベル(TL:tessellation level)を決定することができる。テッセレーション係数(TF)またはテッセレーションレベル(TL)は、パッチをどのくらい分割するか、あるいはパッチをどのように分割するかということを示すインデックスである。図5に図示されたテーブル500は、テッセレーション係数(TF)と、分割される三角形の個数との関係を定義したテーブルである。テーブル500によれば、テッセレーション係数(TF)が1である場合、三角形の個数が1であるので、パッチに対するテッセレーションは、実行されない。しかし、テッセレーション係数(TF)が増加するほど、三角形の個数は、幾何級数的に増加する。言い換えれば、テッセレーション係数(TF)が増加するほど、分割される三角形の個数が多くなるということは、GPU10において、あるパッチに対して処理されなければならない演算量が増加するということを意味する。ただし、テッセレーション係数(TF)が増加すればするほど、オブジェクトのパッチに対するより柔らかい表現が可能になる。一方、図5のテーブル500においては、分割されるポリゴンが三角形である場合を例として挙げたが、それに限定されるものではなく、パッチは、四角形、等値線などの他のポリゴンに分割されることもある。
制御シェーダ121は、出力パッチ(output patch)の出力制御点及びテッセレーション係数(TF)に係わる情報をテッセレータ123及びテッセレーション評価シェーダ125に伝達する。
テッセレータ123は、制御シェーダ121から受信されたテッセレーション係数(TF)を利用して、出力制御点に対する重心座標系(barycentric coordinates)でのuvw座標及び加重値を計算する。
テッセレーション評価シェーダ125は、制御シェーダ121から受信された出力パッチの出力制御点及びテッセレーション係数(TF)に係わる情報、テッセレータ123から受信されたuvw座標(w座標は、任意的である)及び加重値を利用して、テッセレーティングされた頂点(tessellated vertices)を生成する。図4を参照すると、テッセレーティングされた頂点の位置は、サーフェス420を形成する。すなわち、パッチ410は、テッセレーションパイプラインが実行されることにより、より柔らかくなったサーフェス420上の頂点(または、プリミティブ)に変換される。
図6は、一実施形態による図1のGPUの詳細なハードウェア構造を図示したブロック図である。図6を参照すると、GPU10は、グラフィックスパイプライン100を実行する入力アセンブラ(input assembler)110、頂点シェーダ(vertex shader)115、制御シェーダ121、テッセレータ123、テッセレーション評価シェーダ125、プリミティブアセンブラ(primitive assembler)130、ビナ(binner)140、ラステライザ(rasterizer)150及びフラグメントシェーダ(fragment shader)160を含んでよい。また、GPU10は、コントローラ170及びバッファ180をさらに含んでもよい。ここで、GPU10内において、グラフィックスパイプライン100を実行する前述の構成は、以下で説明する機能に基づいて分類されたものでもある。従って、グラフィックスパイプライン100を実行する前述の構成それぞれは、以下で説明する機能それぞれを実行させるプログラムロジックまたはソフトウェアモジュールによって具現化される。それと異なり、グラフィックスパイプライン100を実行する前述の構成は、GPU10内に具備されたサブ(sub)処理ユニット(または、プロセッサコア)それぞれで具現化されることもある。すなわち、グラフィックスパイプライン100を実行する前述の構成の具現化形態は、いずれか一つによって限定されるものではない。さらに、グラフィックスパイプライン100を実行する前述の構成の名称は、以下で説明する機能に基づいて付与されたものでもあるが、かような名称は、多様に変更されるということは、当該技術分野の当業者であるならば、理解することができるであろう。
GPU10において、グラフィックスパイプライン100を実行する構成の名称は、説明の便宜のために、OpenGL(登録商標)で定義された名称を使用したが、本構成の名称は、それらに限定されるものではない。すなわち、GPU10において、グラフィックスパイプライン100を実行する構成は、Microsoft(登録商標)社のDirectX(登録商標)11(DX11)、CUDA6.0のような他種のAPIで定義された類似の構成に対応する。例えば、テッセレーション評価シェーダ125は、DirectX(登録商標)11で使用されるドメインシェーダに対応し、GPU10内の他の構成も同様に、DirectX(登録商標)11またはCUDA6.0などの他のAPIで使用される構成に対応するということは、当該技術分野の当業者であるならば、理解することができるであろう。
入力アセンブラ110は、入力されたドローコール(draw calls)に基づいて、メモリ30(図1)に保存されたオブジェクトに係わる頂点のデータを、グラフィックスパイプライン100に供給する。グラフィックスパイプライン100に供給された頂点は、メッシュまたはサーフェスの表現であるパッチに係わるものでもあるが、それに限定されるものではない。ドローコールは、どのフレームにどのオブジェクトをレンダリングするかということを示すコマンドである。例えば、ドローコールは、映像またはフレームに、四角形または三角形のようなプリミティブを描くためのコマンドでもある。
頂点シェーダ115は、入力アセンブラ110によって供給された頂点を、制御シェーダ121の入力制御点として伝達する。
制御シェーダ121、テッセレータ123及び評価シェーダ125は、先に図で説明したテッセレーションパイプライン300を実行することができる。すなわち、制御シェーダ121に入力された入力制御点は、テッセレーション評価シェーダ125によって、出力パッチに係わるテッセレーティングされた頂点として出力される。
プリミティブアセンブラ130は、テッセレーションパイプライン300が実行された場合、テッセレーティングされた頂点をプリミティブ(すなわち、テッセレーティングされたプリミティブ)に変換する。プリミティブアセンブラ130は、テッセレーションパイプライン300が実行されていない場合には、頂点シェーダ115から出力された頂点をプリミティブに変換する。
ビナ140は、プリミティブアセンブラ130から出力されたプリミティブ(または、テッセレーティングされたプリミティブ)を利用して、ビニングまたはタイリングを行う。すなわち、ビナ140は、深度テスト(または、タイルZテスト)を実行し、出力プリミティブそれぞれが属するタイルの情報を示すタイルリストを生成(ビニング)する。一方で、ビナ140は、図8ないし図11で説明するバウンディングボックス(bounding box)ビットストリーム(第1ビットストリーム)、ドローコールビットストリーム(第2ビットストリーム)、プリミティブビットストリーム(第3ビットストリーム)、テッセレーションビットストリームのような可視性ビットストリーム(visibility bitstream)を生成する。かような可視性ビットストリームについては、図8ないし図11を参照してさらに詳細に説明することにする。
ラステライザ150は、生成されたタイルリストに基づいて、出力プリミティブを二次元空間でのピクセル値に変換する。フラグメントは、プリミティブによってカバーされるピクセルを意味し、フラグメントシェーダ160は、かようなフラグメントを生成し、フラグメントに対する深度値、ステンシル値、カラー値などを決定する。フラグメントシェーダ160のシェーディング結果は、バッファ180(例えば、フレームバッファ)に保存された後、動画のフレームとして表示される。
コントローラ170は、グラフィックスパイプライン100の各構成要素(入力アセンブラ110ないしラスタライザ150)と、バッファ180との全般的な機能及び動作を制御する。
図7は、一実施形態によるグラフィックスパイプラインについて説明するための図面である。図7を参照すると、コントローラ170は、ビニングパイプライン101及びレンダリングパイプライン102の実行を制御する。
ビニングパイプライン101では、テッセレーションが行われない。先に図3などで説明したように、テッセレーションパイプライン300が実行された場合、多くの三角形に係わるデータが生成されるので、それらを処理するための多くのハードウェア/ソフトウェアリソースが投入されなければならない。従って、もしビニングパイプライン101及びレンダリングパイプライン102のいずれにおいても、テッセレーションが反復的に実行され、多数のテッセレーティングされたプリミティブが生成される場合には、演算量が幾何級数的に増加し、演算処理速度が遅くなる。そのために、本実施形態によるグラフィックスパイプライン100(図1)は、ビニングパイプライン101では、テッセレーションを行わず、レンダリングパイプライン102でのみテッセレーションを行うディファードテッセレーションを実行する。
一方、レンダリングパイプライン102は、第1サブレンダリングパイプライン102−1及び第2サブレンダリングパイプライン102−2を含む。ここで、第1サブレンダリングパイプライン102−1は、テッセレーションパイプライン300を実行するパイプラインであり、第2サブレンダリングパイプライン102−2は、テッセレーションパイプライン300を実行しないパイプラインである。すなわち、ビニングパイプライン101において、テッセレーションが行われない理由(演算量削減、処理速度向上など)と同じ理由で、レンダリングパイプライン102内でも、テッセレーションが行われないサブパイプラインが存在する。
図8は、一実施形態によるビニングパイプラインについて説明するための図面である。図8に図示されたビニングパイプライン101については、図6で説明されたGPU10のハードウェア構成に連携させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図8で説明される構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
ビニングパイプライン101には、メモリ30から提供されたドローコール821が入力される。ドローコール821は、現在イメージフレームでレンダリングされるオブジェクトに係わるドローコマンドに該当する。
頂点シェーダ115は、入力されたドローコール821から頂点を生成するための頂点シェーディング801を行う。頂点シェーダ115は、生成された頂点をプリミティブアセンブラ130に伝達する。プリミティブアセンブラ130は、頂点シェーダ115から出力された頂点を、プリミティブの集合に変換するプリミティブアセンブリング802を行う。ビニングパイプライン101においては、頂点シェーディング801とプリミティブアセンブリング802との間で、テッセレーションが行われないように設定される。従って、ビニングパイプライン101においては、テッセレーティングされたプリミティブが生成されない。
ビナ140は、プリミティブアセンブラ130から出力されたプリミティブを利用して、ビニング803またはタイリングを行う。すなわち、ビナ140は、深度テスト(または、タイルZテスト)、カリング(culling)、クリッピング(clipping)、陰面消去(HSR:hidden surface removal)などを行い、プリミティブそれぞれが属するタイルの情報を示すタイルリストを予測するビニング803を行う。このとき、ビニングされたタイルリストは、ビットストリーム822としてメモリ30に保存される。または、ビナ140によるビニング803の結果は、さらに迅速なアクセスのために、メモリ30の代わりに、GPU10のバッファ180内に設けられたキャッシュ185に保存されることも可能である。さらに、ビナ140は、ビニング803を行い、バウンディングボックスビットストリーム、ドローコールビットストリーム、プリミティブビットストリームのような可視性ビットストリームを生成する。ドローコール可視性ビットストリームは、それぞれのタイルでのドローコールそれぞれの可視性を示す情報を含み、プリミティブビットストリームは、それぞれのタイルでのプリミティブそれぞれの可視性を示す情報を含む。
図9は、一実施形態による、バウンディングボックスビットストリームを生成する方法のフローチャートである。図9を参照すると、段階901において、ビナ140は、入力されたドローコールのうち、テッセレーションが必要な第1タイプのドローコール、及びテッセレーションが不要な第2タイプのドローコールを判別する。
段階902において、ビナ140は、第1タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行う。しかし、ビナ140は、テッセレーションが不要な第2タイプのドローコールに対応するバウンディングボックスについては、タイルビニングを行わない。それは、テッセレーションが不要な第2タイプのドローコールは、結局、レンダリングパイプラインでもテッセレーティングされないからである。
段階903において、ビナ140は、第1タイプのドローコールを示す識別情報、第2タイプのドローコールを示す識別情報、及びバウンディングボックスのタイルビニング結果に基づいたタイルリストの情報を含むバウンディングボックスビットストリームを生成する。すなわち、バウンディングボックスビットストリームは、入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及びテッセレーティングされる必要がある第1タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストの情報を含む。
一方で、段階901ないし段階903のバウンディングボックスビットストリームの生成過程は、先に図で説明したビニング803のステージで実行される。
図10は、一実施形態による、2×2タイルによってカバーされるドローコールの例を図示した図面である。図10を参照すると、第0ドローコール1000、第1ドローコール1001及び第2ドローコール1002は、タイル0ないしタイル4の2×2タイルによってカバーされる。ただし、図10の例は、説明の便宜のためのものであるに過ぎず、本実施形態は、それらに限定されるものではない。それぞれのドローコール1000、1001及び1002は、それぞれ3個ずつのプリミティブから構成される。ここで、第0ドローコール1000は、テッセレーションが必要なドローコールに該当し、第1ドローコール1001及び第2ドローコール1002は、テッセレーションが不要なドローコールに該当すると仮定する。
先に図9で説明された段階901を参照すると、ビナ140は、第0ドローコール1000は第1タイプのドローコールに該当し、第1ドローコール1001及び第2ドローコール1002は第2タイプのドローコールに該当すると判別する。そして、先に図9で説明された段階902を参照すると、ビナ140は、第0ドローコール1000に対応するバウンディングボックスを決定し、タイルビニングを介して、第0ドローコール1000に対応するバウンディングボックスをカバーするタイルリスト(タイル0及びタイル2)を識別する。このように、第1タイプまたは第2タイプのドローコールを識別し、第1タイプのドローコールに対応するバウンディングボックスに対するタイルビニングを行う理由は、第1タイプのドローコールから生成されたテッセレーティングされたプリミティブに対するタイルビニングによって識別されたタイルリストは、第1タイプのドローコールに対応するバウンディングボックスに対するタイルビニングによって識別されたタイルリストに含まれるからである。言い換えれば、第1タイプのドローコールから生成されたテッセレーティングされたプリミティブから形成された空間は、第1タイプのドローコールに対応するバウンディングボックスを外れないからである。それについては、以下で図11を参照することにする。
図11は、一実施形態による、バウンディングボックスの空間と、テッセレーティングされたプリミティブから構成された空間との包含関係について説明するための図面である。図11を参照すると、第1タイプのドローコール1101に対応するバウンディングボックス1110は、第1タイプのドローコール1101が形成する空間を含むように設定される。ドローコール1101がテッセレーティングされた後、テッセレーティングされたプリミティブ1102が形成する空間も、バウンディングボックス1110を外れない。それは、グラフィックスAPIによって、バウンディングボックス1110が、すでにテッセレーティングされているプリミティブ1102が形成する空間も含むように設定されているからである。
ビニングパイプライン101(図8)でテッセレーションが行われないとしても、バウンディングボックスに対するタイルビニングを行うのであるならば、テッセレーティングされたプリミティブに対するタイルビニングを行ったものと類似した結果を得ることができる。従って、ビニングパイプライン101(図8)では、テッセレーションパイプライン(テッセレーションステージ)がスキップされるので、ビニングパイプライン101(図8)においてテッセレーションが行われるときより、GPU10の演算量が減って処理速度が向上する。
図12は、一実施形態によって、バウンディングボックスビットストリームを生成することについて説明するための図面である。図12を参照すると、第0ドローコール1000は、テッセレーションが必要なドローコールに該当し、第1ドローコール1001及び第2ドローコール1002は、テッセレーションが不要なドローコールに該当すると仮定する。
図12に図示されたバウンディングボックスビットストリームにおいて、「102」について説明すると、最初の「1」は、第0ドローコール1000に対するテッセレーションが必要であるということを意味し、次の「02」は、ドローコール1000に対応するバウンディングボックス1200をカバーするタイルが「タイル0」及び「タイル2」であるということを意味する。バウンディングボックスビットストリームにおいて、「102」に続く「00」は、第1ドローコール1001及び第2ドローコール1002に対するテッセレーションが不要であるということを意味する。
すなわち、バウンディングボックスビットストリームは、入力されたドローコール1000、1001及び1002それぞれに係わるテッセレーションの必要性を示す情報、及びテッセレーティングされる必要があるドローコール1000に対応するバウンディングボックス1200をカバーするタイルリストの情報を含む。一方、図12で説明された「10200」のようなビットストリームの形式(form)は、前述のような情報が含まれている限り、多様に変更される。
図13は、一実施形態による多種の可視性ビットストリームについて説明するための図面である。図13を参照すると、ビナ140は、バウンディングボックスビットストリーム、ドローコールビットストリーム、プリミティブビットストリーム及びテッセレーションビットストリームを生成することができる。ここで、バウンディングボックスビットストリームは、ビニングパイプライン101でのみ生成されるビットストリームであってよく、テッセレーションビットストリームは、レンダリングパイプライン102でのみ生成されるビットストリームであってよい。
バウンディングボックスビットストリームは、図12で説明したものと同一であるので、詳しい説明は省略することにする。
ドローコールビットストリーム及びプリミティブビットストリームは、テッセレーションが不要な第2タイプのドローコール(例えば、第1ドローコール1001及び第2ドローコール1002)に対して生成される。それは、テッセレーションが必要な第1タイプのドローコール(例えば、第0ドローコール1000)に対する可視性は、すでにバウンディングボックスビットストリームに反映されているからである。
ドローコールビットストリームは、それぞれのタイルで可視的な(visible)ドローコールを識別するためのビットストリームである。例えば、タイル0は、第1ドローコール1001のみをカバーしているので、タイル0については、「10」が割り当てられる。タイル1は、第1ドローコール1001及び第2ドローコール1002をいずれもカバーしているので、タイル1については、「11」が割り当てられる。タイル2は、何もカバーしていないので、タイル2については、「00」が割り当てられる。タイル3は、第2ドローコール1002のみをカバーしているので、タイル3については、「01」が割り当てられる。
プリミティブビットストリームは、それぞれのタイルにおいて、可視的なプリミティブを識別するためのビットストリームである。例えば、タイル0は、第1ドローコール1001のプリミティブP0のみをカバーしているので、タイル0については、「100000」が割り当てられる。タイル1は、第1ドローコール1001及び第2ドローコール1002の全てのプリミティブをカバーしているので、タイル1については、「111111」が割り当てられる。タイル2は、何もカバーしていないので、タイル2については、「000000」が割り当てられる。タイル3は、第2ドローコール1002のプリミティブP0、P1及びP3をカバーしているので、タイル3については、「000111」が割り当てられる。
テッセレーションビットストリームは、前述のように、レンダリングパイプライン102においてテッセレーションが行われた後に生成される。テッセレーションビットストリームは、それぞれのタイルにおいて、可視的なテッセレーティングされたプリミティブを識別するためのビットストリームである。テッセレーションは、第0ドローコール1000についてのみ行われ、第0ドローコール1000に対応するバウンディングボックスは、バウンディングボックスビットストリームにおいて「02」と定義されたので、テッセレーションビットストリームは、タイル0及びタイル2での可視性情報のみを含む。タイル0は、第0ドローコール1000のプリミティブP0、P1及びP3をカバーしているので、タイル0については、「111」が割り当てられる。タイル2も、第0ドローコール1000のプリミティブP0、P1及びP3をカバーしているので、タイル2についても、「111」が割り当てられる。
このように、多種の可視性ビットストリームに基づいて、レンダリングパイプライン102としては、現在処理される現在タイルにおいて、可視的なバウンディングボックス、可視的なドローコール、可視的なプリミティブだけでレンダリングを行うだけではなく、可視的な対象がないタイルの場合には、レンダリングをスキップすることができるので、GPU10の演算量が減り、処理速度が増大する。
図14は、一実施形態によるレンダリングパイプラインについて説明するための図面である。図14に図示されたレンダリングパイプライン102については、図6で説明されたGPU10のハードウェア構成に連携させて説明することにするが、実施形態と係わる構成及びパイプラインステージについてのみ説明することにする。従って、図14で説明される構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいことは、当該技術分野の当業者であるならば、理解することができるであろう。
レンダリングパイプライン102は、ビニングパイプライン101で生成されたバウンディングボックスビットストリームを利用して、テッセレーションが必要な第1タイプのドローコール、及びテッセレーションが不要な第2タイプのドローコールに対して、互いに異なるレンダリング方式でタイルをレンダリングする。ここで、第1タイプのドローコールは、テッセレーションステージを含む第1サブレンダリングパイプライン102−1によって処理され、第2タイプのドローコールは、テッセレーションステージを含まない第2サブレンダリングパイプライン102−2によって処理される。すなわち、レンダリングパイプライン102は、現在処理される現在タイルにおいて、バウンディングボックスビットストリームによって割り当てられたバウンディングボックスが識別された場合、識別されたバウンディングボックスに対応するドローコールについてのみテッセレーションを行い、残りのドローコールについては、テッセレーションを行わない選択的なテッセレーションを行うことにより、現在タイルをレンダリングする。
GPU10のコントローラ170は、バウンディングボックスビットストリームに含まれるタイルビニング結果に基づいて、バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングする。それによって、レンダリングパイプライン102では、スケジューリングされたタイルのレンダリング順序によって、タイル単位でレンダリングが行われる。
レンダリングパイプライン102には、メモリ30から提供されたドローコール821が入力される。コントローラ170は、入力されたドローコール821それぞれが、第1タイプのドローコールであるか、あるいは第2タイプのドローコールであるかということを判別する。その後、コントローラ170は、第1タイプのドローコールについては、第1サブレンダリングパイプライン102−1の実行を制御し、第2タイプのドローコールについては、第2サブレンダリングパイプライン102−2の実行を制御する。
第1サブレンダリングパイプライン102−1は、以前タイルでテッセレーションが行われていない第1タイプのドローコールについては、段階1411ないし段階1418のレンダリングステージを実行し、以前タイルでテッセレーションが実行されることによって生成されたテッセレーションビットストリームがメモリ30に保存された第1タイプのドローコールについては、段階1401、段階1417及び段階1418のレンダリングステージを実行する。それは、テッセレーションがすでに行われている第1タイプのドローコールについては、反復的なテッセレーションが行われないようにし、GPU10の演算量を減らすためでもある。
例えば、先に図10ないし図13で説明された2×2タイルによってカバーされる第0ドローコール1000、第1ドローコール1001及び第2ドローコール1002を例として挙げて説明すると、第0ドローコール1000については、第1サブレンダリングパイプライン102−1が実行され、第1ドローコール1001及び第2ドローコール1002については、第2サブレンダリングパイプライン102−2が実行される。一方、第0ドローコール1000に対応するバウンディングボックスは、タイル0及びタイル2によってカバーされ、タイル0に対するレンダリングが、タイル2より先に行われるように、スケジューリングされると仮定することができる。タイル0には、第0ドローコール1000の全てのプリミティブP0、P1及びP2がカバーされているので、タイル0に対するテッセレーションの実行が完了すれば、プリミティブP0、P1及びP2のいずれに対するテッセレーティングされたプリミティブが生成され、それらは、メモリ30のビットストリーム822に保存される。その後、タイル2(現在タイル)に対するレンダリングが行われるとき、テッセレーションが行われる必要はない。なぜならば、タイル0(以前タイル)に対するレンダリングによって、テッセレーティングされたプリミティブがすでに生成されているからである。従って、タイル2(現在タイル)に対するレンダリングが行われるときには、テッセレーションがスキップされ、メモリ30のビットストリーム822に保存されたテッセレーティングされたプリミティブに係わるデータをロード(load)し、残りのレンダリングステージが実行される。
以前タイルでテッセレーションが行われていない第1タイプのドローコール(すなわち、初めてテッセレーティングされるドローコール)に対して実行される段階1411ないし段階1418のレンダリングステージについて説明すると、次の通りである。
頂点シェーダ115は、ドローコール821のうち第1タイプのドローコールから頂点を生成するための頂点シェーディング1411を行う。頂点シェーダ115は、生成された頂点を制御シェーダ121に伝達する。
制御シェーダ121、テッセレータ123及びテッセレーション評価シェーダ125は、図3で説明されたように、頂点を利用して、制御シェーディング1412、テッセレーティング1413及びテッセレーション評価シェーディング1414を行うことにより、テッセレーティングされた頂点を生成する。
プリミティブアセンブラ130は、テッセレーティングされた頂点を、テッセレーティングされたプリミティブの集合に変換するプリミティブアセンブリング1415を行う。
ビナ140は、プリミティブアセンブラ130から出力されたテッセレーティングされたプリミティブを利用して、ビニング1416またはタイリングを行う。すなわち、ビナ140は、深度テスト(または、タイルZテスト)、カリング、クリッピング、HSRなどを行い、テッセレーティングされたプリミティブそれぞれが属するタイルの情報を示すタイルリストを予測するビニング1416を行う。さらに、ビナ140は、ビニング1416を行い、テッセレーションビットストリームのような可視性ビットストリームを生成し、それを、メモリ30のビットストリーム822に保存する。一方、前述のように、さらに迅速なアクセスのために、生成された可視性ビットストリームは、メモリ30の代わりに、GPU10のバッファ180内に設けられたキャッシュ185(図8)に保存されることもある。テッセレーティングされたプリミティブに係わる座標情報なども、メモリ30やキャッシュ185に保存される。
ラステライザ150は、メモリ30またはキャッシュ185に保存された可視性ビットストリームを利用して、テッセレーティングされたプリミティブを、二次元空間でのピクセル値に変換するラスタライジング1417を行う。フラグメントシェーダ160は、フラグメントを生成し、フラグメントに係わる深度値、ステンシル値、カラー値などを決定するフラグメントシェーディング1418を行う。フラグメントシェーダ160のフラグメントシェーディング1418の結果は、バッファ180(例えば、フレームバッファ)に保存された後、動画のフレームとして表示される。
次に、以前タイルでテッセレーションが行われた第1タイプのドローコールに対して実行される段階1401、段階1417及び段階1418のレンダリングステージについて説明すると、次の通りである。
テッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなどが、メモリ30またはキャッシュ185からロードされる(1401)。ラステライザ150は、ロードされたテッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなどを利用して、テッセレーティングされたプリミティブを、二次元空間でのピクセル値に変換するラスタライジング1417を行う。フラグメントシェーダ160は、フラグメントを生成し、フラグメントに係わる深度値、ステンシル値、カラー値などを決定するフラグメントシェーディング1418を行う。フラグメントシェーダ160のフラグメントシェーディング1418の結果は、バッファ180(例えば、フレームバッファ)に保存された後、動画のフレームとして表示される。
第2タイプのドローコールについては、第2サブレンダリングパイプライン102−2が実行される。第2タイプのドローコールは、テッセレーションを必要としないので、第2サブレンダリングパイプライン102−2には、段階1412ないし段階1414のようなテッセレーションパイプライン(テッセレーションステージ)が含まれない。すなわち、現在タイルで処理される前記第1タイプのドローコールに対するテッセレーティングされたプリミティブが、以前タイルですでに生成されている場合、現在タイルで処理されるドローコールに対するテッセレーションは、スキップされる。
頂点シェーダ115は、ドローコール821のうち第2タイプのドローコールから頂点を生成するための頂点シェーディング1421を行う。頂点シェーダ115は、生成された頂点を、プリミティブアセンブラ130に伝達する。
プリミティブアセンブラ130は、頂点シェーダ115から出力された頂点をプリミティブに変換するプリミティブアセンブリング1422を行う。
ラステライザ150は、メモリ30またはキャッシュ185に保存された可視性ビットストリーム(ドローコールビットストリーム、プリミティブビットストリームなど)を利用して、プリミティブを二次元空間でのピクセル値に変換するラスタライジング1423を行う。フラグメントシェーダ160は、フラグメントを生成し、フラグメントに係わる深度値、ステンシル値、カラー値などを決定するフラグメントシェーディング1424を行う。フラグメントシェーダ160のフラグメントシェーディング1424の結果は、バッファ180(例えば、フレームバッファ)に保存された後、動画のフレームとして表示される。
一方、コントローラ170は、レンダリングパイプラインが実行される間、第1タイプのドローコールに対するテッセレーティングされたプリミティブが、次に処理される他のタイルで利用されない場合、テッセレーティングされたプリミティブと係わるデータをメモリ30またはキャッシュ185から削除するように制御する。
前述のように、レンダリングパイプライン102では、入力されたドローコールの種類、すなわち、第1タイプであるか、または第2タイプであるかに応じて、互いに異なる種類のサブレンダリングパイプライン102−1または102−2が実行される。すなわち、全てのドローコールに対して、無条件的にテッセレーションが行われるのではなく、テッセレーションが必要なドローコールについてのみテッセレーションが行われるので、GPU10の演算量を削減させながら、処理速度を増大させることができる。
図15は、一実施形態による、レンダリングパイプラインを実行する方法の詳細なフローチャートである。図15に図示された、レンダリングパイプライン102の実行方法は、前述の図面で説明された実施形態に係わるので、以下、省略された内容があるとしても、先立って図面で説明された内容は、図15の方法にも適用される。
段階1501において、GPU10は、可視性ビットストリームを利用して、タイルのレンダリング順序をスケジューリングする。このとき、GPU10は、バウンディングボックスビットストリームを利用して、バウンディングボックスをカバーしているタイルに対して、高い優先順位が付与されるように、タイルの処理順序をスケジューリングすることができる。
段階1502において、GPU10は、スケジューリング結果に基づいて、現在処理される(レンダリングされる)現在タイルを決定する。
段階1503において、GPU10は、現在タイルによってカバーされるドローコールが、テッセレーションが必要なドローコール(すなわち、第1タイプのドローコール)であるか否かを判別する。現在タイルによってカバーされるドローコールが第1タイプである場合、段階1504に進む。一方、現在タイルによってカバーされるドローコールが第1タイプではない、テッセレーションが不要なドローコール(すなわち、第2タイプのドローコール)である場合、段階1505に進む。
段階1504において、GPU10は、メモリ30またはキャッシュ185に、テッセレーションビットストリームが存在するか否かを判定する。テッセレーションビットストリームが存在する場合、段階1507に進む。一方、テッセレーションビットストリームが存在しない場合(すなわち、テッセレーションが初めて実行される場合)、段階1506に進む。
段階1505において、GPU10は、テッセレーションが不要な第2タイプのドローコールに対して、第2サブレンダリングパイプライン102−2を実行する。
段階1506において、GPU10は、テッセレーションビットストリームが存在しない場合(すなわち、テッセレーションが初めて実行される場合)には、入力された第1タイプのドローコールに対してテッセレーションパイプライン300を実行し、テッセレーションビットストリームを生成する。その後、生成されたテッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなどを、メモリ30またはキャッシュ185に保存する。
段階1507において、GPU10は、以前タイルのレンダリング過程で保存されたテッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなど、または段階1506で生成されたテッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなどを利用して、残りのレンダリングステージを実行する。
段階1508において、GPU10は、テッセレーションビットストリームが次に処理される他のタイルにおいて、さらに使用されるか否かを判定する。すなわち、GPU10は、現在タイルで処理された第1タイプのドローコールが、次に処理される他のタイルでも使用されるか否かを判定する。もし現在タイルで処理された第1タイプのドローコールが、次の他のタイルでも使用される場合、段階1510に進む。一方、次の他のタイルで使用されない場合、段階1509に進む。
段階1509において、GPU10は、現在タイルで処理された第1タイプのドローコールが、次の他のタイルで使用されない場合、テッセレーティングされたプリミティブと係わるデータを、メモリ30またはキャッシュ185から削除するように制御する。
段階1510において、GPU10は、現在タイルでレンダリングされていないドローコールが残っているか否かを判定する。現在タイルでレンダリングされていないドローコールが残っている場合、再び段階1502に戻る。一方、現在タイルでレンダリングされていないドローコールが残っていない場合、段階1511に進む。
段階1511において、GPU10は、レンダリングされていないタイルが残っているか否かを判定する。レンダリングされていないタイルが残っている場合、再び段階1502に戻る。一方、レンダリングされていないタイルが残っていない場合、レンダリングパイプラインの実行は終わる。
図16は、一実施形態による、コンピューティング装置の詳細なハードウェア構成を図示したブロック図である。図16を参照すると、コンピューティング装置1は、GPU10、CPU20、メモリ30、バッファ35、バス40、表示部1601、入力部1603及び通信部1605を含む。図16に図示されたコンピューティング装置1には、実施形態と係わる構成要素だけが図示されている。従って、図16に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことは、当該技術分野の当業者であるならば、理解することができるであろう。
GPU10、CPU20及びメモリ30は、前述の図面で説明された動作及び機能を実行する。
バッファ35は、タイルベースグラフィックスパイプライン、またはタイルベースレンダリングを介して出力されたタイル情報を保存する。例えば、バッファ35は、タイルでの深度テスト結果を保存したり、タイルでのレンダリング結果を保存したりすることができる。図16において、バッファ35は、コンピューティング装置1内で、GPU10、CPU20またはメモリ30と別個に具備されているように図示されているが、バッファ35は、GPU10、CPU20及び/またはメモリ30内に具備されてもよい。
表示部1601は、コンピューティング装置1で処理された情報、または処理されるであろう情報などの各種情報をユーザに表示するための、表示インターフェース手段である。表示部1601は、コンピューティング装置1で処理された情報を、ユーザに視覚的に直感的に提供するためのGUI(graphic user interface)を表示することもできる。例えば、表示部1601は、GPU10によって処理されたグラフィックスデータを表示することができる。表示部1601は、LCD(liquid crystal display)、LED(light emitting diode)、PDP(plasma display panel)などの多様な表示パネルによって具現化される。
入力部1603は、ユーザから情報を入力されるための、入力インターフェース手段である。入力部1603は、タッチパッド、トラックボール、マウス、キーボード、ゲーム用コントローラのような形態によって具現化される。表示部1601と入力部1603は、一体化されたタッチスクリーンのハードウェアによって具現化されることもある。
通信部1605は、移動通信のための移動通信モジュール、有線/無線LAN(local area network)モジュール、近距離無線通信のためのWi−Fi(登録商標)(wireless fidelity)モジュール、Bluetooth(登録商標)モジュール、NFC(near field communication)モジュールなどを含んでよい。
図17は、一実施形態による、グラフィックスパイプラインを実行する方法のフローチャートである。図17に図示された、グラフィックスパイプライン100の実行方法は、前述の図面で説明された実施形態に係わるので、以下、省略された内容があるとしても、先立って図面で説明された内容は、図17の方法にも適用される。
段階1701において、GPU10は、テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含むバウンディングボックスビットストリームを生成するビニングパイプライン101を実行する。
段階1702において、GPU10は、現在処理される現在タイルにおいて、バウンディングボックスビットストリームによって割り当てられたバウンディングボックスが識別された場合、識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、現在タイルをレンダリングするレンダリングパイプライン102を実行する。
本実施形態による装置は、プロセッサ、プログラムデータを保存して実行するメモリ、ディスクドライブのような永続的ストレージ(permanent storage)、外部装置と通信する通信ポート、タッチパネル、キー(key)、ボタンのようなユーザインターフェース装置などを含んでよい。ソフトウェアモジュールまたはアルゴリズムによって具現化される方法は、前記プロセッサにより実行可能なコンピュータで読み取り可能なコードまたはプログラム命令として、コンピュータで読み取り可能な記録媒体に保存される。ここで、コンピュータで読み取り可能な記録媒体として、磁気記録媒体(例えば、ROM、RAM、フロッピー(登録商標)ディスク、ハードディスクなど)及び光記録媒体(例えば、CD−ROM、DVD(digital versatile disc))などがある。コンピュータで読み取り可能な記録媒体は、ネットワークに接続されたコンピュータシステムに分散され、分散方式で、コンピュータで読み取り可能なコードが保存されて実行される。該媒体は、コンピュータによって読み取り可能であり、メモリに保存され、プロセッサで実行される。
本実施形態は、機能的なブロック構成及び多様な処理段階で示される。かような機能ブロックは、特定の機能を実行する複数のハードウェア及び/またはソフトウェア構成によって具現化される。例えば、実施形態は、1以上のマイクロプロセッサの制御、または他の制御装置によって、多様な機能を実行することができる、メモリ、処理、ロジック(logic)、ルックアップテーブル(look-up table)のような直接回路構成を採用することができる。構成要素が、ソフトウェアプログラミングまたはソフトウェア要素で実行されるということと類似して、本実施形態は、データ構造、プロセス、ルーチン、または他のプログラミング構成の組み合わせによって具現化される多様なアルゴリズムを含み、C、C++、Java(登録商標)、アセンブラ(assembler)のようなプログラミング言語またはスクリプト言語によって具現化される。機能的な側面は、1以上のプロセッサで実行されるアルゴリズムによって具現化される。また、本実施形態は、電子的な環境設定、信号処理、及び/またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、広く使用され、機械的であって物理的な構成として限定されるものではない。前記用語は、プロセッサなどと連携する、ソフトウェアの一連の処理(routines)の意味を含んでよい。
本実施形態で説明した特定の実行は、例示であり、いかなる方法でも、技術的範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、前記システムの他の機能的な側面の記載は省略する。また、図面に図示された構成要素間の線の連結または連結部材は、機能的な連結及び/または物理的、または回路的な連結を例示的に示したものであり、実際の装置では、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結として示される。
本明細書(特に、特許請求の範囲)において、「前記」という用語、及びそれと類似する指示用語の使用は、単数及び複数のいずれにも該当する。また、範囲を記載した場合、前記範囲に属する個別的な値を含み(それに反する記載がなければ)、詳細な説明に前記範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明白に順序を記載するか、あるいはそれに反する記載がなければ、前記段階は、適切な順序で実行される。必ずしも前記段階の記載順序に限定されるものではない。
以上、本発明について、その好ましい実施形態を中心に説明した。本発明が属する技術分野の当業者であるならば、本発明が本発明の本質的な特性から外れない範囲で変形された形態に具現化されるということを理解することができるであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと均等な範囲内にある全ての差異は、本発明に含まれるものであると解釈されなければならない。
本発明のグラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法は、例えば、グラフィックス関連の技術分野に効果的に適用可能である。
1 コンピューティング装置
10 GPU
20 CPU
30 メモリ
40 バス
100 グラフィックスパイプライン
101 ビニングパイプライン
102 レンダリングパイプライン
102−1 第1サブレンダリングパイプライン
102−2 第2サブレンダリングパイプライン
110 入力アセンブラ
115 頂点シェーダ
121 制御シェーダ
123 テッセレータ
125 テッセレーション評価シェーダ
130 プリミティブアセンブラ
140 ビナ
150 ラスタライザ
160 フラグメントシェーダ
170 コントローラ
180 バッファ
185 キャッシュ
210 タイル
220 三次元自動車オブジェクト
300 テッセレーションパイプライン
410 パッチ
420 サーフェス
500 テーブル
821 ドローコール
822 ビットストリーム
1110 バウンディングボックス
1601 表示部
1603 入力部
1605 通信部
10 GPU
20 CPU
30 メモリ
40 バス
100 グラフィックスパイプライン
101 ビニングパイプライン
102 レンダリングパイプライン
102−1 第1サブレンダリングパイプライン
102−2 第2サブレンダリングパイプライン
110 入力アセンブラ
115 頂点シェーダ
121 制御シェーダ
123 テッセレータ
125 テッセレーション評価シェーダ
130 プリミティブアセンブラ
140 ビナ
150 ラスタライザ
160 フラグメントシェーダ
170 コントローラ
180 バッファ
185 キャッシュ
210 タイル
220 三次元自動車オブジェクト
300 テッセレーションパイプライン
410 パッチ
420 サーフェス
500 テーブル
821 ドローコール
822 ビットストリーム
1110 バウンディングボックス
1601 表示部
1603 入力部
1605 通信部
Claims (20)
- グラフィックス処理装置においてグラフィックスパイプラインを実行する方法であって、
テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含む第1ビットストリームを生成するビニングパイプラインを実行する段階と、
現在処理される現在タイルにおいて、前記第1ビットストリームによって割り当てられたバウンディングボックスが識別された場合、前記の識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、前記現在タイルをレンダリングするレンダリングパイプラインを実行する段階と、を含む方法。 - 前記第1ビットストリームは、
入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及び前記テッセレーティングされる必要があるドローコールに対応する前記バウンディングボックスをカバーするタイルリストの情報を含む、請求項1に記載の方法。 - 前記ビニングパイプラインを実行する段階は、
入力されたドローコールそれぞれの可視性を示す情報を含む第2ビットストリーム、及び前記入力されたドローコールそれぞれに含まれるプリミティブの可視性を示す情報を含む第3ビットストリームを生成する段階をさらに含む、請求項1に記載の方法。 - 前記ビニングパイプラインを実行する段階は、
入力されたドローコールのうち、前記テッセレーションが必要な第1タイプのドローコール、及び前記テッセレーションが不要な第2タイプのドローコールを判別する段階と、
前記第1タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行う段階と、
前記第1タイプのドローコールを示す識別情報、前記第2タイプのドローコールを示す識別情報、及び前記タイルリストの情報を含む前記第1ビットストリームを生成する段階と、を含む、請求項1に記載の方法。 - 前記グラフィックスパイプラインは、
前記レンダリングパイプラインでのみ前記テッセレーションを行うディファードテッセレーションを行う、請求項1ないし4のうちいずれか1項に記載の方法。 - 前記レンダリングパイプラインは、
前記第1ビットストリームを利用して、前記テッセレーションが必要な第1タイプのドローコール、及び前記テッセレーションが不要な第2タイプのドローコールに対して互いに異なるレンダリング方式で、前記現在タイルをレンダリングする、請求項1に記載の方法。 - 前記第1タイプのドローコールは、
テッセレーションステージを含む第1サブレンダリングパイプラインによって処理され、
前記第2タイプのドローコールは、
テッセレーションステージを含まない第2サブレンダリングパイプラインによって処理される、請求項6に記載の方法。 - 前記第1サブレンダリングパイプラインは、
前記現在タイルで処理される前記第1タイプのドローコールに対する前記テッセレーションが以前タイルで行われていない場合、前記現在タイルで処理される前記第1タイプのドローコールに対して、前記テッセレーションを行い、
前記現在タイルで処理される前記第1タイプのドローコールに対するテッセレーティングされたプリミティブが以前タイルですでに生成されている場合、前記現在タイルで処理されるドローコールに対する前記テッセレーションをスキップする、請求項7に記載の方法。 - 前記レンダリングパイプラインを実行する段階は、
前記第1ビットストリームに含まれる前記タイルビニング結果に基づいて、前記バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングする段階をさらに含み、
前記レンダリングパイプラインは、
前記のスケジューリングされたタイルのレンダリング順序によって、タイル単位で前記レンダリングを行う、請求項1ないし8のうちいずれか1項に記載の方法。 - 前記レンダリングパイプラインが実行される間、前記第1タイプのドローコールに対するテッセレーティングされたプリミティブが、他のタイルで利用されない場合、メモリから前記テッセレーティングされたプリミティブと係わるデータを削除する段階をさらに含む、請求項6ないし8のうちいずれか1項に記載の方法。
- 請求項1ないし10のうちいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
- グラフィックスパイプラインを実行するコンピューティング装置であって、
テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含む第1ビットストリームを生成するビニングパイプライン、及び現在処理される現在タイルにおいて、前記第1ビットストリームによって割り当てられたバウンディングボックスが識別された場合、前記の識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、前記現在タイルをレンダリングするレンダリングパイプラインを実行するグラフィックス処理装置と、
前記ビニングパイプラインで生成された前記第1ビットストリームを保存し、前記の保存された第1ビットストリームを前記レンダリングパイプラインに提供するメモリと、を含むコンピューティング装置。 - 前記第1ビットストリームは、
入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及び前記テッセレーティングされる必要があるドローコールに対応する前記バウンディングボックスをカバーするタイルリストの情報を含む、請求項12に記載のコンピューティング装置。 - 前記グラフィックス処理装置は、
前記ビニングパイプラインが実行される間、入力されたドローコールそれぞれの可視性を示す情報を含む第2ビットストリーム、及び前記入力されたドローコールそれぞれに含まれるプリミティブの可視性を示す情報を含む第3ビットストリームを生成する、請求項12に記載のコンピューティング装置。 - 前記グラフィックス処理装置は、
前記ビニングパイプラインが実行される間、入力されたドローコールのうち、前記テッセレーションが必要な第1タイプのドローコール、及び前記テッセレーションが不要な第2タイプのドローコールを判別し、前記第1タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行い、前記第1タイプのドローコールを示す識別情報、前記第2タイプのドローコールを示す識別情報、及び前記タイルリストの情報を含む前記第1ビットストリームを生成する、請求項12に記載のコンピューティング装置。 - 前記グラフィックス処理装置は、
ディファードテッセレーションに基づいた前記グラフィックスパイプラインを実行する、請求項12ないし15のうちいずれか1項に記載のコンピューティング装置。 - 前記グラフィックス処理装置は、
前記レンダリングパイプラインが実行される間、前記第1ビットストリームを利用して、前記テッセレーションが必要な第1タイプのドローコール、及び前記テッセレーションが不要な第2タイプのドローコールに対して互いに異なるレンダリング方式で、前記現在タイルをレンダリングする、請求項12に記載のコンピューティング装置。 - 前記第1タイプのドローコールは、
テッセレーションステージを含む第1サブレンダリングパイプラインによって処理され、
前記第2タイプのドローコールは、
テッセレーションステージを含まない第2サブレンダリングパイプラインによって処理される、請求項17に記載のコンピューティング装置。 - 前記グラフィックス処理装置は、
前記レンダリングパイプラインが実行される間、前記第1ビットストリームに含まれる前記タイルビニング結果に基づいて、前記バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングし、前記のスケジューリングされたタイルのレンダリング順序によって、タイル単位で前記レンダリングを行う、請求項12ないし18のうちいずれか1項に記載のコンピューティング装置。 - 前記メモリは、
前記レンダリングパイプラインが実行される間、前記第1タイプのドローコールに対するテッセレーティングされたプリミティブが、他のタイルで利用されない場合、前記テッセレーティングされたプリミティブと係わるデータを削除する、請求項17または18に記載のコンピューティング装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150161918A KR102381945B1 (ko) | 2015-11-18 | 2015-11-18 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법 |
KR10-2015-0161918 | 2015-11-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017097870A true JP2017097870A (ja) | 2017-06-01 |
Family
ID=57256107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016223100A Pending JP2017097870A (ja) | 2015-11-18 | 2016-11-16 | グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10192357B2 (ja) |
EP (1) | EP3171336B1 (ja) |
JP (1) | JP2017097870A (ja) |
KR (1) | KR102381945B1 (ja) |
CN (1) | CN107038740B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023525945A (ja) * | 2020-08-07 | 2023-06-20 | リパブリック オブ コリア(ナショナル リサーチ インスティテュート オブ カルチュラル ヘリテイジ) | モバイル機器における大規模建築物の拡張現実具現のためのデータ最適化及びインターフェース向上方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
US11080928B2 (en) * | 2019-04-01 | 2021-08-03 | Qualcomm Incorporated | Methods and apparatus for visibility stream management |
US11373020B2 (en) * | 2019-07-29 | 2022-06-28 | GM Global Technology Operations LLC | Method and system with mesh data conversion for stamping dies |
US11010862B1 (en) * | 2019-11-14 | 2021-05-18 | Advanced Micro Devices, Inc. | Reduced bandwidth tessellation factors |
US20210287418A1 (en) | 2020-03-10 | 2021-09-16 | Advanced Micro Devices, Inc. | Graphics processing unit render mode selection system |
US20240005602A1 (en) * | 2022-06-30 | 2024-01-04 | Advanced Micro Devices, Inc. | Pipeline delay reduction for coarse visibility compression |
CN116912395B (zh) * | 2023-09-14 | 2024-01-12 | 武汉蜂鸟龙腾软件有限公司 | 基于OpenGL的图形混合渲染方法、装置及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9947130B2 (en) | 2008-01-23 | 2018-04-17 | Intel Corporation | Method, apparatus, and computer program product for improved graphics performance |
GB201007348D0 (en) | 2010-04-30 | 2010-06-16 | Imagination Tech Ltd | Programmable tessellation in a tile based rendering system |
US10089774B2 (en) * | 2011-11-16 | 2018-10-02 | Qualcomm Incorporated | Tessellation in tile-based rendering |
US10559123B2 (en) | 2012-04-04 | 2020-02-11 | Qualcomm Incorporated | Patched shading in graphics processing |
US9330495B2 (en) * | 2012-08-09 | 2016-05-03 | Qualcomm Incorporated | Extending DX11 GPU for programmable vector graphics |
US8941676B2 (en) | 2012-10-26 | 2015-01-27 | Nvidia Corporation | On-chip anti-alias resolve in a cache tiling architecture |
US9030480B2 (en) * | 2012-12-18 | 2015-05-12 | Nvidia Corporation | Triggering performance event capture via pipelined state bundles |
GB2509113B (en) | 2012-12-20 | 2017-04-26 | Imagination Tech Ltd | Tessellating patches of surface data in tile based computer graphics rendering |
US9483861B2 (en) | 2013-03-15 | 2016-11-01 | Qualcomm Incorporated | Tile-based rendering |
WO2014172687A2 (en) * | 2013-04-18 | 2014-10-23 | Massachusetts Institute Of Technology, Inc. | Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications |
KR102109130B1 (ko) | 2013-08-12 | 2020-05-08 | 삼성전자주식회사 | 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들 |
-
2015
- 2015-11-18 KR KR1020150161918A patent/KR102381945B1/ko active IP Right Grant
-
2016
- 2016-07-06 US US15/202,608 patent/US10192357B2/en active Active
- 2016-11-04 EP EP16197336.7A patent/EP3171336B1/en active Active
- 2016-11-16 JP JP2016223100A patent/JP2017097870A/ja active Pending
- 2016-11-17 CN CN201611013541.3A patent/CN107038740B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023525945A (ja) * | 2020-08-07 | 2023-06-20 | リパブリック オブ コリア(ナショナル リサーチ インスティテュート オブ カルチュラル ヘリテイジ) | モバイル機器における大規模建築物の拡張現実具現のためのデータ最適化及びインターフェース向上方法 |
JP7460778B2 (ja) | 2020-08-07 | 2024-04-02 | リパブリック オブ コリア(ナショナル リサーチ インスティテュート オブ カルチュラル ヘリテイジ) | モバイル機器における大規模建築物の拡張現実具現のためのデータ最適化及びインターフェース向上方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107038740B (zh) | 2021-09-14 |
US20170140573A1 (en) | 2017-05-18 |
KR20170058113A (ko) | 2017-05-26 |
US10192357B2 (en) | 2019-01-29 |
EP3171336A1 (en) | 2017-05-24 |
KR102381945B1 (ko) | 2022-04-01 |
CN107038740A (zh) | 2017-08-11 |
EP3171336B1 (en) | 2019-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102327144B1 (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법 | |
KR102381945B1 (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법 | |
KR102341267B1 (ko) | 양안 시차 영상에 대한 렌더링 방법 및 장치 | |
CN105518742B (zh) | 用于图形处理的任意控制点处的容错抢占机制 | |
KR102651126B1 (ko) | 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법 | |
KR102646906B1 (ko) | 타일 기반 렌더링 방법 및 장치 | |
US9342322B2 (en) | System and method for layering using tile-based renderers | |
KR20160148594A (ko) | 그래픽스 프로세싱에 있어서 렌더 타깃에 기초한 플렉스 렌더링 | |
JP2018510405A (ja) | グラフィックス処理におけるハイブリッドレンダリング | |
US10169839B2 (en) | Method and apparatus for executing graphics pipeline | |
JP2015506017A (ja) | オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替 | |
JP6595101B2 (ja) | 後期深度試験と保守的深度試験との間の動的切替え | |
KR20150039495A (ko) | 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치 | |
CN104823220B (zh) | 用于图形处理的图形存储器加载掩模 | |
US10262391B2 (en) | Graphics processing devices and graphics processing methods | |
KR102521654B1 (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법 | |
KR20230048441A (ko) | 그래픽스 프로세싱 유닛 하이브리드 렌더링을 위한 장치 및 방법 | |
JP2017531229A (ja) | グラフィックス処理ユニットにおける高次フィルタリング | |
KR20180037839A (ko) | 그래픽스 프로세싱 장치 및 인스트럭션의 실행 방법 |