JP2010020764A - ハイブリッドマルチサンプル/スーパーサンプルアンチエイリアシング - Google Patents

ハイブリッドマルチサンプル/スーパーサンプルアンチエイリアシング Download PDF

Info

Publication number
JP2010020764A
JP2010020764A JP2009158615A JP2009158615A JP2010020764A JP 2010020764 A JP2010020764 A JP 2010020764A JP 2009158615 A JP2009158615 A JP 2009158615A JP 2009158615 A JP2009158615 A JP 2009158615A JP 2010020764 A JP2010020764 A JP 2010020764A
Authority
JP
Japan
Prior art keywords
supersample
computing device
pixel
cluster
primitive
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009158615A
Other languages
English (en)
Other versions
JP4744624B2 (ja
Inventor
Cass W Everitt
ダブリュ. エヴェリット カス
Steven E Molnar
イー. モルナー スティーヴン
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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
Priority claimed from US12/167,997 external-priority patent/US8605086B2/en
Priority claimed from US12/167,998 external-priority patent/US8605087B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of JP2010020764A publication Critical patent/JP2010020764A/ja
Application granted granted Critical
Publication of JP4744624B2 publication Critical patent/JP4744624B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing scheme for image data processing or generation, in general involving antialiasing

Landscapes

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

Abstract

【課題】 レンダリングされている現在幾何学形状に適したピクセルシェーディングレートを使用するシステム及び方法を提供する。
【解決手段】 プリミティブのシェーディング中にピクセルサンプリングレートをダイナミックに調整するためのシステム及び方法は、映像クオリティを改善するか又はシェーディング性能を高めることができる。ハイブリッドアンチエイリアシングは、ピクセル断片当たりにシェーディングされるサンプルの数を選択することにより遂行される。スーパーサンプル及びマルチサンプルアンチエイリアシングの組み合わせが使用され、断片シェーダーパイプラインを通る各パスに対してサブピクセルサンプル(マルチサンプル)のクラスターが処理される。各クラスターにおけるマルチサンプル及びシェーダーパスの数は、レンダリング状態に基づきプリミティブごとにダイナミックに決定することができる。
【選択図】図5C

Description

[0001]本発明の実施形態は、一般に、グラフィック処理のためのアンチエイリアシング技術に係り、より詳細には、ピクセル断片当たりにシェーディングされるサンプルの数をダイナミックに調整することに係る。
[0002]従来、グラフィックプロセッサは、マルチサンプリング又はスーパーサンプリングのいずれかによりアンチエイリアシングを遂行するように構成される。マルチサンプリングでは、各ピクセル断片が一回シェーディングされ、それにより得られるカラー値が、カバーされる全てのサブピクセルサンプルに対して複写される。スーパーサンプリングでは、各ピクセル断片が、カバーされるサブピクセルサンプルごとに一回づつ、N回シェーディングされる。
[0003]マルチサンプリングは、プリミティブのエッジをアンチエイリアシングするのに良く適している。というのは、ここで重要なことは、到来するプリミティブによってどのサンプルがカバーされるか、だからである。テクスチャは、典型的に、前フィルタリングされ、従って、シェーディングされるカラー値は、ピクセル当たり一回のシェーディングで足りるように充分低い空間的周波数を有する。しかしながら、テクスチャ化アルファトランスパレンシー及び高周波スペキュラーハイライトのような幾つかの効果は、ピクセルより高い周波数を有することがあり、エイリアシング欠陥を回避するにはピクセルより高い周波数でシェーディングを行うことを要求する。これら形式のエイリアシングを回避するためにスーパーサンプリングが典型的に要求される。しかしながら、ピクセル内のサンプルごとのシェーディングは、著しく経費がかかる。というのは、シェーディングは、典型的に、レンダリングにおいて最も経費のかかる動作だからである。又、あるスーパーサンプリングの具現化では、入力プリミティブを、サブピクセルサンプルごとに一回づつ、複数回処理することを要求し、これは、付加的な非効率化を招く。上述したエイリアシングの原因を軽減するには、ピクセル当たり一回より高いがサンプルごとに一回よりは低いシェーディングレートで充分である。
[0004]従って、この技術で要望されるのは、レンダリングされている現在幾何学形状に適したピクセルシェーディングレートを使用するシステム及び方法である。シェーディングレートは、映像クオリティを改善するように減少されてもよいし、又はシェーディング性能を改善するように減少されてもよい。
[0005]プリミティブのシェーディング中にピクセルサンプリングレートをダイナミックに調整するためのシステム及び方法は、映像クオリティを改善するか又はシェーディング性能を高めることができる。シェーディングレートは、ピクセル当たり一回(マルチサンプリング)からサンプル当たり一回(スーパーサンプリング)までのどこかに或いはそれらの間のどこかに変化させて、映像クオリティを改善するか又はシェーディング性能を高めることができる。レンダーターゲット(映像バッファ)に対するピクセル当たりのサンプルの指定数が与えられると、シェーダーパスの数がダイナミックに選択される。スーパーサンプル及びマルチサンプルアンチエイリアシングの組み合わせが使用され、サブピクセルサンプル(マルチサンプル)のクラスターが断片シェーダーのパスごとに処理される。スーパーサンプルクラスターがピクセルごとに合成され、アンチエイリアスされたピクセルを発生する。
[0006]ピクセル当たり複数のサンプルを発生するように構成されたコンピューティング装置においてハイブリッドアンチエイリアシングを使用してプリミティブをシェーディングするための本発明の方法の種々の実施形態は、グラフィックプリミティブを受け取り、そしてそのグラフィックプリミティブに交差する各ピクセルをアンチエイリアスするのに使用されるスーパーサンプルクラスターの数を決定することを含む。グラフィックプリミティブは、コンピューティング装置内の断片シェーディングユニットを通る複数のパスを使用してシェーディングされ、グラフィックプリミティブに交差する各ハイブリッドアンチエイリアス処理ピクセルを発生するのに使用される複数のパスの数は、スーパーサンプルクラスターの数以下である。
[0007]本発明の種々の実施形態は、ハイブリッドアンチエイリアシングを使用してグラフィックプリミティブをシェーディングするように構成されたコンピューティング装置を備えている。このコンピューティング装置は、断片シェーディングユニットに結合されたラスタライザーを備えている。このラスタライザーは、グラフィックプリミティブを受け取って、そのグラフィックプリミティブに交差する各ピクセルをアンチエイリアスするのに使用されるスーパーサンプルクラスターの数を決定するように構成されたハイブリッドアンチエイリアス制御ユニットを備えている。断片シェーディングユニットは、複数のパスを使用してグラフィックプリミティブをシェーディングするように構成され、グラフィックプリミティブに交差する各ハイブリッドアンチエイリアス処理ピクセルを発生するのに使用される複数のパスの数は、スーパーサンプルクラスターの数以下である。
[0008]上述した本発明の特徴を詳細に理解できるように、前記で簡単に要約した本発明について、幾つかを添付図面に例示した実施形態を参照して、より特定して説明する。しかしながら、添付図面は、本発明の典型的な実施形態のみを例示するもので、それ故、本発明の範囲をそれに限定するものではなく、本発明は、同等の効果を発揮できる他の実施形態も包含できるものであることに注意されたい。
本発明の1つ以上の態様を実施するように構成されたコンピュータシステムを示すブロック図である。 本発明の1つ以上の態様に基づく図1のコンピュータシステムのための並列処理サブシステムのブロック図である。 本発明の1つ以上の態様に基づく図2の並列処理サブシステムのためのコアのブロック図である。 本発明の1つ以上の態様に基づくグラフィック処理パイプラインの概念図である。 本発明の1つ以上の態様に基づくピクセル内のスーパーサンプルクラスター及びマルチサンプル位置を示す。 本発明の1つ以上の態様に基づくマルチサンプルクラスター内の断片及びセントロイド位置を示す。 本発明の1つ以上の態様に基づくグラフィック処理パイプラインの一部分のブロック図である。 本発明の1つ以上の態様に基づくハイブリッドアンチエイリアシングを遂行するための方法ステップのフローチャートである。
[0017]以下の説明では、本発明をより完全に理解するために多数の特定の細部について説明する。しかしながら、当業者であれば、これらの特定の細部の1つ以上がなくても、本発明を実施できることが明らかであろう。他の点について、本発明を不明瞭にしないために、良く知られた特徴は、説明しない。
システムの概略
[0018]図1は、本発明の1つ以上の態様を実施するように構成されたコンピュータシステム100を示すブロック図である。このコンピュータシステム100は、メモリブリッジ105を含むバス経路を経て通信する中央処理ユニット(CPU)102及びシステムメモリ104を備えている。例えば、ノースブリッジ(Northbridge)チップでよいメモリブリッジ105は、バス又は他の通信経路106(例えば、ハイパートランスポートリンク)を経てI/O(入力/出力)ブリッジ107に接続される。例えば、サウスブリッジ(Southbridge)チップでよいI/Oブリッジ107は、1つ以上のユーザ入力装置108(例えば、キーボード、マウス)からユーザ入力を受け取り、そしてその入力を、経路106及びメモリブリッジ105を経てCPU102へ転送する。メモリブリッジ105には、バス又は他の通信経路113(例えば、PCIエクスプレス、アクセラレーテッドグラフィックポート又はハイパートランスポートリンク)を経て並列処理サブシステム112が結合され、一実施形態では、この並列処理サブシステム112は、ディスプレイ装置110(例えば、従来のCRT又はLCDベースのモニタ)へピクセルを配送するグラフィックサブシステムである。システムメモリ104に記憶される装置ドライバ103は、CPU102により実行されるプロセス、例えば、アプリケーションプログラムと、並列処理サブシステム112との間をインターフェイスし、並列処理サブシステム112により実行するために必要に応じてプログラム命令を変換する。
[0019]I/Oブリッジ107には、システムディスク114も接続される。スイッチ116は、I/Oブリッジ107と、他のコンポーネント、例えば、ネットワークアダプタ118及び種々のアドイン(add-in)カード120及び121との間の接続を与える。又、I/Oブリッジ107には、USB又は他のポート接続部、CDドライブ、DVDドライブ、フィルムレコーディング装置、等を含む他のコンポーネント(明確に示さず)を接続することもできる。図1における種々のコンポーネントを相互接続する通信経路は、適当なプロトコル、例えば、PCI(周辺コンポーネント相互接続)、PCI−エクスプレス(PCI−E)、AGP(アクセラレーテッドグラフィックポート)、ハイパートランスポート、或いは他のバス又はポイント・ツー・ポイント通信プロトコルを使用して実施することができ、そして異なる装置間の接続は、この技術で知られたように異なるプロトコルを使用することができる。
[0020]並列処理サブシステム112の一実施形態が図2に示されている。この並列処理サブシステム112は、1つ以上の並列処理ユニット(PPU)202を備え、その各々は、ローカル並列処理(PP)メモリ204に結合される。一般的に、並列処理サブシステムは、多数UのPPUを含み、但し、U≧1である。(ここで、同じオブジェクトの複数のインスタンスは、オブジェクトを識別する参照番号と、必要に応じてインスタンスを識別するカッコ内の数字とで示される。)PPU202及びPPメモリ204は、例えば、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、及びメモリ装置のような1つ以上の集積回路装置を使用して実施することができる。
[0021]PPU202(0)について詳細に示すように、各PPU202は、メモリブリッジ105へ接続される(又は別の実施形態では、CPU102へ直結される)通信経路113を経てシステム100の残り部分と通信するホストインターフェイス206を備えている。一実施形態では、通信経路113は、この技術で知られたように、各PPU202に専用レーンが割り当てられるPCI−Eリンクである。又、他の通信経路が使用されてもよい。ホストインターフェイス206は、通信経路113へ送信するためにパケット(又は他の信号)を発生し、又、通信経路113から全ての到来パケット(又は他の信号)も受信して、それをPPU202の適当なコンポーネントへ向ける。例えば、処理タスクに関連したコマンドをフロントエンドユニット212に向ける一方、メモリオペレーション(例えば、PPメモリ204からの読み取り又はそこへの書き込み)に関連したコマンドをメモリインターフェイス214に向けることができる。ホストインターフェイス206、フロントエンドユニット212、及びメモリインターフェイス214は、一般的に従来設計のものでよく、本発明にとって重要でないので、詳細な説明は省く。
[0022]各PPU202は、高度な並列プロセッサを有利に実施する。PPU202(0)について詳細に示すように、PPU202は、多数Cのコア208を含み、但し、C≧1である。各処理コア208は、非常に多数(例えば、数十又は数百)のスレッドを同時に実行することができ、各スレッドは、プログラムのインスタンスであり、マルチスレッド型処理コア208の一実施形態を以下に説明する。コア208は、フロントエンドユニット212から処理タスクを定義するコマンドを受け取るワーク配布ユニット210を経て、実行されるべき処理タスクを受け取る。このワーク配布ユニット210は、ワーク配布のための種々のアルゴリズムを実施することができる。例えば、一実施形態では、ワーク配布ユニット210は、各コア208から、そのコアが新たな処理タスクを受け容れるに充分なリソースを有するかどうか指示する「レディ」信号を受け取る。新たな処理タスクが到着すると、ワーク配布ユニット210は、レディ信号をアサートしているコア208にタスクを指定し、レディ信号をアサートしているコア208がない場合には、ワーク配布ユニット210は、コア208によりレディ信号がアサートされるまで、新たな処理タスクを保持する。当業者であれば、他のアルゴリズムも使用できると共に、ワーク配布ユニット210が到来する処理タスクを配布する特定のやり方は、本発明にとって重要ではないことが明らかであろう。
[0023]コア208は、種々の外部メモリ装置を読み取ったりそこに書き込んだりするためにメモリインターフェイス214と通信する。一実施形態では、メモリインターフェイス214は、ローカルPPメモリ204と通信するためのインターフェイスと、ホストインターフェイスへの接続とを含み、これにより、コア208は、システムメモリ104、又はPPU202に対してローカルではない他のメモリと通信することができる。メモリインターフェイス214は、一般的に従来設計のものでよく、詳細な説明は、省く。
[0024]コア208は、これに限定されないが、直線的及び非直線的なデータ変換、ビデオ及び/又はオーディオデータのフィルタリング、モデリングオペレーション(例えば、物理の法則を適用して、オブジェクトの位置、速度及び他の属性を決定する)、映像レンダリングオペレーション(例えば、頂点シェーダー、幾何学的シェーダー及び/又はピクセルシェーダープログラム)、等を含む種々様々なアプリケーションに関する処理タスクを実行するようにプログラムすることができる。PPU202は、システムメモリ104及び/又はローカルPPメモリ204からのデータを内部(オンチップ)メモリへ転送し、そのデータを処理し、そしてその結果データをシステムメモリ104及び/又はローカルPPメモリ204へ書き戻すことができ、このようなデータは、例えば、CPU102又は別の並列処理サブシステム112を含む他のシステムコンポーネントによりアクセスすることができる。
[0025]再び、図1を参照すれば、ある実施形態において、並列処理サブシステム112内のPPU202は、その幾つか又は全部が、レンダリングパイプラインを伴うグラフィックプロセッサであって、CPU102及び/又はシステムメモリ104によりメモリブリッジ105及びバス113を経て供給されたグラフィックデータからピクセルデータを発生し、ローカルPPメモリ204(例えば、従来のフレームバッファを含むグラフィックメモリとして使用できる)と相互作用してピクセルデータを記憶及び更新し、そのピクセルデータをディスプレイ装置110へ配送し、等々に関連した種々のタスクを遂行するように構成することができる。ある実施形態では、並列処理サブシステム112は、グラフィックプロセッサとして動作する1つ以上のPPU202、及び汎用の計算に使用される1つ以上の他のPPU202を含むことができる。PPU202は、同じものでも異なるものでもよく、そして各PPU202は、それ自身の専用のPPメモリ装置(1つ又は複数)を有してもよいし、専用のPPメモリ装置を有していなくてもよい。
[0026]動作に際して、CPU102は、システム100のマスタープロセッサであり、他のシステムコンポーネントのオペレーションを制御し整合させる。特に、CPU102は、PPU202のオペレーションを制御するコマンドを発行する。ある実施形態では、CPU102は、各PPU202のためのコマンドのストリームをプッシュバッファ(図1には明確に示さず)に書き込み、このプッシュバッファは、システムメモリ104や、PPメモリ204や、或いはCPU102及びPPU202の両方にアクセス可能な別の記憶位置に配置することができる。PPU202は、プッシュバッファからコマンドストリームを読み取り、そしてCPU102のオペレーションとは非同期でそれらコマンドを実行する。それ故、PPU202は、CPU102からの処理をオフロードし、システム100の処理スループット及び/又は性能を高めるように構成することができる。
[0027]ここに示すシステムは、例示に過ぎず、変更や修正がなされ得ることが明らかであろう。ブリッジの数及び配列を含む接続トポロジーは、必要に応じて変更することができる。例えば、ある実施形態では、システムメモリ104は、ブリッジを経ずに、CPU102へ直結され、他の装置は、メモリブリッジ105及びCPU102を経てシステムメモリ104と通信する。他の別のトポロジーでは、並列処理サブシステム112は、I/Oブリッジ107へ接続されるか、又はメモリブリッジ105ではなく、CPU102へ直結される。更に別の実施形態では、I/Oブリッジ107及びメモリブリッジ105が1つのチップへ一体化されてもよい。ここに示す特定のコンポーネントは、任意のものであり、例えば、いかなる数のアドインカード又は周辺装置がサポートされてもよい。ある実施形態では、スイッチ116が除去され、ネットワークアダプタ118及びアドインカード120、121がI/Oブリッジ107に直結される。
[0028]PPU202とシステム100の残り部分との接続を変更することもできる。ある実施形態では、PPシステム112は、システム100の拡張スロットに挿入できるアドインカードとして実施される。他の実施形態では、PPU202は、単一チップ上で、メモリブリッジ105又はI/Oブリッジ107のようなバスブリッジと一体化することができる。更に別の実施形態では、PPU202の幾つかの又は全部のエレメントを単一チップ上でCPU102と一体化することができる。
[0029]PPUには、ローカルメモリを含まずに、任意の量のローカルPPメモリを設けることができ、そしてローカルメモリ及びシステムメモリを任意の組合せで使用することができる。例えば、PPU202は、一体化メモリアーキテクチャー(UMA)実施形態ではグラフィックプロセッサであり、このような実施形態では、専用のグラフィック(PP)メモリがほとんど又は全く設けられず、又、PPU202は、システムメモリを排他的又はほぼ排他的に使用する。UMA実施形態では、PPU202は、ブリッジチップ又はプロセッサチップに一体化されてもよく、或いは例えば、ブリッジチップを経てPPUをシステムメモリに接続する高速リンク(例えば、PCI−E)を伴う個別のチップとして設けられてもよい。
[0030]上述したように、並列処理サブシステムには、任意の数のPPUを含ませることもできる。例えば、複数のPPUを単一のアドインカードに設けることもできるし、又は複数のアドインカードを通信経路113に接続することもできるし、或いは1つ以上のPPUをブリッジチップに一体化することもできる。複数PPUシステムのPPUは、互いに同じものでもよいし異なるものでもよく、例えば、異なるPPUは、異なる数のコア、異なる量のローカルPPメモリ、等を有してもよい。複数のPPU202が存在する場合には、それらを並列に動作させて、単一PPUで可能なものより高いスループットでデータを処理することができる。1つ以上のPPU202を合体するシステムは、デスクトップ、ラップトップ又はハンドヘルドパーソナルコンピュータ、サーバー、ワークステーション、ゲームコンソール、埋め込まれたシステム、等々を含む種々の構成及びフォームファクタで実施することができる。
コアの概略
[0031]図3は、本発明の1つ以上の態様に基づく図2の並列処理サブシステム112のコア208のブロック図である。PPU202は、非常に多数のスレッドを並列に実行するように構成されたコア208(又は複数コア208)を備え、ここで、「スレッド(thread)」という語は、コンテクストのインスタンス、即ち入力データの特定セットに対して実行される特定プログラムを指す。ある実施形態では、単一インストラクション複数データ(SIMD)のインストラクション発行技術を使用して、複数の独立したインストラクションユニットを設けずに、非常に多数のスレッドの並列実行がサポートされる。
[0032]一実施形態では、各コア208は、単一インストラクションユニット312からSIMTインストラクションを受け取るように構成されたP個(例えば、8個、16個、等)の並列処理エンジン302のアレイを含む。各処理エンジン302は、機能的ユニット(例えば、演算論理ユニット、等)の同じセットを含むのが好都合である。機能的ユニットは、この技術で知られたように、手前のインストラクションが終了する前に新たなインストラクションを発行できるようなパイプライン型のものでよい。機能的ユニットの任意の組合せを設けることもできる。ある実施形態では、機能的ユニットは、整数及び浮動小数点演算(例えば、加算及び乗算)、比較演算、ブール演算(AND、OR、XOR)、ビットシフト、及び種々の代数関数(例えば、平面補間、三角法、指数関数、及び対数関数、等)の組合せ、を含む種々のオペレーションをサポートし、そして同じ機能的ユニットハードウェアをレバレッジして、異なるオペレーションを遂行することができる。
[0033]各処理エンジン302は、ローカル入力データ、中間結果、等を記憶するためにローカルレジスタファイル(LRF)304のスペースを使用する。一実施形態では、ローカルレジスタファイル304は、ある数のエントリーを各々有するP個のレーンに物理的又は論理的に分割される(各エントリーは、例えば、32ビットワードを記憶する)。各処理エンジン302に1つのレーンが指定されると共に、異なるレーンの対応エントリーに、同じプログラムを実行する異なるスレッドに対するデータをポピュレートさせて、SIMD実行を容易にすることができる。ある実施形態では、各処理エンジン302は、それに指定されたレーンのLRFエントリーにしかアクセスできない。ローカルレジスタファイル304におけるエントリーの全数は、処理エンジン302当たり複数の同時スレッドをサポートするに充分なほど大きいのが好都合である。
[0034]又、各処理エンジン302は、コア208内の全処理エンジン302間に共有されるオンチップ共有メモリ306へアクセスすることができる。共有メモリ306は、望ましい大きさのものでよく、ある実施形態では、いずれの処理エンジン302も、等しく低い待ち時間(例えば、ローカルレジスタファイル304へのアクセスに匹敵する)で、共有メモリ306内の任意の位置から読み取り又はそこに書き込むことができる。ある実施形態では、共有メモリ306は、共有レジスタファイルとして実施され、他の実施形態では、共有メモリ306は、共有キャッシュメモリを使用して実施することができる。
[0035]共有メモリ306に加えて、ある実施形態では、付加的なオンチップパラメータメモリ及び/又はキャッシュ(1つ又は複数)308も設けられ、これは、例えば、従来のRAM又はキャッシュとして実施されてもよい。パラメータメモリ/キャッシュ308は、例えば、複数のスレッドにより必要となることのある状態パラメータ及び/又は他のデータ(例えば、種々の定数)を保持するのに使用できる。又、処理エンジン302は、メモリインターフェイス214を経て、例えば、PPメモリ204及び/又はシステムメモリ104を含むオフチップ「グローバル」メモリへアクセスすることができ、システムメモリ104には、ホストインターフェイス206を経てアクセスできる。PPU202の外部の任意のメモリをグローバルメモリとして使用できることを理解されたい。
[0036]一実施形態では、各処理エンジン302は、マルチスレッド型であり、例えば、ローカルレジスタファイル304の指定レーンの異なる部分における各スレッドに関連した現在状態情報を維持することにより、ある数G(例えば、24)までのスレッドを同時に実行することができる。処理エンジン302は、異なるスレッドからのインストラクションを効率のロスなく任意のシーケンスで発行できるように、あるスレッドから別のスレッドへ急速にスイッチするように設計されるのが好都合である。各スレッドは、異なるコンテクストに対応するので、各サイクルに異なるスレッドが発行されるときに複数のサイクルにわたって複数のコンテクストを処理することができる。
[0037]インストラクションユニット312は、所与の処理サイクルに対して、P個の処理エンジン302の各々へインストラクション(INSTR)が発行されるように構成される。各処理エンジン302は、複数のコンテクストが同時に処理されるときに所与の処理サイクルに対して異なるインストラクションを受け取ることができる。P個の処理エンジン302の全部が単一のコンテクストを処理するときに、コア208は、P路(P-way)SIMDマイクロアーキテクチャーを実施する。又、各処理エンジン302がマルチスレッド型で、G個までのスレッドを同時にサポートするので、この実施形態のコア208は、P*G個までのスレッドを同時に実行させることができる。例えば、P=16及びG=24の場合に、コア208は、単一のコンテクストに対して384個までの同時スレッドをサポートするか、或いはコンテクストに割り当てられる処理エンジン302の数をNとすれば、各コンテクストに対してN*24個の同時スレッドをサポートする。
[0038]コア208のオペレーションは、ワーク配布ユニット200を経て制御されるのが好都合である。ある実施形態では、ワーク配布ユニット200は、処理されるべきデータ(例えば、プリミティブデータ、頂点データ、及び/又はピクセルデータ)に対するポインタと、データをどのように処理するか(例えば、どんなプログラムを実行すべきか)を定義するデータ又はインストラクションを含むプッシュバッファの位置とを受け取る。ワーク配布ユニット210は、処理されるべきデータを共有メモリ306へロードすると共に、パラメータをパラメータメモリ308へロードすることができる。又、ワーク配布ユニット210は、インストラクションユニット312における各新たなコンテクストを初期化し、次いで、コンテクストの実行を開始するようにインストラクションユニット312に通知する。インストラクションユニット312は、インストラクションプッシュバッファを読み取り、そしてインストラクションを実行して、処理されたデータを発生する。コンテクストの実行が完了すると、コア208は、ワーク配布ユニット210に通知するのが好都合である。次いで、ワーク配布ユニット210は、他のプロセスを開始し、例えば、共有メモリ306から出力データを検索し、及び/又は付加的なコンテクストの実行に対してコア208を準備することができる。
[0039]ここに述べる並列処理ユニット及びコアアーキテクチャーは、例示に過ぎず、その変更や修正が考えられることが明らかである。又、いかなる数の処理エンジンが含まれてもよい。ある実施形態では、各処理エンジン302は、それ自身のローカルレジスタファイルを有し、スレッド当たりのローカルレジスタファイルエントリーの割り当ては、固定もできるし、又は希望の通りに構成もできる。特に、ローカルレジスタファイル304のエントリーは、各コンテクストを処理するために割り当てられてもよい。更に、1つのコア208しか示されていないが、PPU202は、いかなる数のコア208を含んでもよく、それらコアは、互いに同じ設計のものであって、実行の振舞いが、どのコア208が特定の処理タスクを受け取るかに依存しないようにするのが好都合である。各コア208は、他のコア208とは独立して動作すると共に、それ自身の処理エンジン、共有メモリ、等を有するのが好都合である。
グラフィックパイプラインアーキテクチャー
[0040]図4は、本発明の1つ以上の態様に基づくグラフィック処理パイプライン400の概念図である。PPU202は、グラフィック処理パイプライン400を形成するように構成できる。例えば、コア208は、頂点処理ユニット444、幾何学的処理ユニット448、及び断片処理ユニット460のうちの1つ以上の機能を遂行するように構成できる。データアッセンブラー442、プリミティブアッセンブラー446、ラスタライザー455及びラスタオペレーションユニット465の機能も、コア208により遂行することができる。或いは又、グラフィック処理パイプライン40は、頂点処理ユニット444、幾何学的処理ユニット448、断片処理ユニット460、データアッセンブラー442、プリミティブアッセンブラー446、ラスタライザー455、及びラスタオペレーションユニット465のうちの1つ以上に対して専用の処理ユニットを使用して実施することができる。
[0041]データアッセンブラー442は、高次表面、プリミティブ、等に対する頂点データを収集し、そしてその頂点データを頂点処理ユニット444へ出力する処理ユニットである。頂点処理ユニット444は、頂点シェーダープログラムを実行して、頂点シェーダープログラムにより指定されるように頂点データを変換するように構成されたプログラム可能な実行ユニットである。例えば、頂点処理ユニット444は、頂点データを、オブジェクトベースの座標表現(オブジェクトスペース)から、それとは別のものをベースとする座標システム、例えば、ワールドスペース又は正規化された装置座標(NDC)スペースへと変換するようにプログラムすることができる。頂点処理ユニット444は、PPメモリ204又はシステムメモリ104に記憶されたデータを、頂点データの処理に使用するために読み取ることができる。
[0042]プリミティブアッセンブラー446は、頂点処理ユニット444から処理された頂点データを受け取り、そしてグラフィックプリミティブ、例えば、点、線、三角形、等を、幾何学的処理ユニット448により処理するために構成する。幾何学的処理ユニット448は、幾何学的シェーダープログラムを実行して、幾何学的シェーダープログラムにより指定されるようにプリミティブアッセンブラー446から受け取ったグラフィックプリミティブを変換するように構成されたプログラム可能な実行ユニットである。例えば、幾何学的処理ユニット448は、グラフィックプリミティブを1つ以上の新たなグラフィックプリミティブへ細分化し、そしてその新たなグラフィックプリミティブをラスタ化するのに使用される平面方程式係数のようなパラメータを計算する。本発明のある実施形態では、幾何学的処理ユニット448は、幾何学的システムにおけるエレメントを追加又は削除することもできる。幾何学的処理ユニット448は、新たなグラフィックプリミティブを指定するパラメータ及び頂点をラスタライザー455又はメモリインターフェイス214へ出力する。幾何学的処理ユニット448は、PPメモリ204又はシステムメモリ104に記憶されたデータを、幾何学的データの処理に使用するために読み取ることができる。
[0043]ラスタライザー455は、新たなグラフィックプリミティブをスキャン変換し、断片及びカバレージデータを断片処理ユニット260へ出力する。アンチエイリアシングを使用して、映像データを発生するときには、ラスタライザー455は、サブピクセルサンプルカバレージデータを発生するように構成される。ハイブリッドアンチエイリアシングを使用するときに、ラスタライザー455内に存在するハイブリッドアンチエイリアス制御ユニット500は、図5C及び6を参照して説明するように、各プリミティブを処理するのに使用される断片処理ユニット460を通してパスの数を決定するように構成される。
[0044]断片処理ユニット460は、断片シェーダープログラムを実行して、ラスタライザー455から受け取った断片を、その断片シェーダープログラムにより指定されたように変換するよう構成されたプログラム可能な実行ユニットである。例えば、断片処理ユニット460は、パースペクティブの修正、テクスチャマッピング、シェーディング、ブレンディング、等のオペレーションを遂行して、シェーディングされた断片を発生するようにプログラムされ、それら断片は、ラスタオペレーションユニット465へ出力される。断片処理ユニット460は、PPメモリ204又はシステムメモリ104に記憶されたデータを、断片データの処理に使用するために読み取ることができる。断片は、ハイブリッドアンチエイリアス制御ユニットにより選択されたサンプリングレートに基づいて、ピクセル、サンプル、又はスーパーサンプルクラスターの粒度でシェーディングすることができる。
[0045]メモリインターフェイス214は、グラフィックメモリに記憶されたデータに対する読み取り要求を発生し、そしてバイリニア、トリリニア、非等方性、等のテクスチャフィルタリングオペレーションを遂行する。本発明のある実施形態では、メモリインターフェイス214は、データを解凍するように構成できる。特に、メモリインターフェイス214は、DXTフォーマットで表現された圧縮データのような固定長さブロックエンコードデータを解凍するように構成できる。ラスタオペレーションユニット465は、ステンシル、zテスト、等のラスタオペレーションを遂行して、ピクセルデータを、処理されたグラフィックデータとしてグラフィックメモリに記憶するために出力する処理ユニットである。処理されたグラフィックデータは、ディスプレイ装置110に表示するか、或いはCPU102又は並列処理サブシステム112によって更に処理するために、グラフィックメモリ、例えば、PPメモリ204及び/又はシステムメモリ104に記憶される。本発明のある実施形態では、ラスタオペレーションユニット465は、メモリに書き込まれるz又はカラーデータを圧縮すると共に、メモリから読み取られたz又はカラーデータを解凍するように構成される。
ハイブリッドアンチエイリアシング
[0046]上述したように、PPU202は、種々のサンプリングレートでシェーディングを遂行して、映像クオリティを改善するか又はシェーディング性能を改善するように構成することができる。ハイブリッドアンチエイリアス制御ユニットは、プリミティブ内の各ピクセルをシェーディングするのに使用されるシェーダーパスの数を決定する。ピクセル当たり1つ以上のマルチサンプル(サブピクセルサンプル)のスーパーサンプルクラスターが、各パスに対して断片処理ユニット460として構成されたコア208により処理されて、シェーディングされた単一のカラー値を発生し、これが、スーパーサンプルクラスターにおける全てのマルチサンプルに対して複写される。シーンがレンダリングされた後に、スーパーサンプルクラスターのサンプルが、アンチエイリアスされた映像を発生するように合成される。
[0047]各プリミティブに対するサブピクセルサンプル及びシェーダーパスの数は、映像クオリティを改善するように増加される。サブピクセルサンプルの数は、アプリケーションが起動されたときに決定され、レンダーターゲット(映像バッファ)の各ピクセルに対して一貫したものである。ハイブリッドアンチエイリアス制御ユニットは、レンダリング状態、例えば、アルファテストイネーブル/ディスエイブル、テクスチャマップコンテンツ、ユーザ付与クオリティ/性能制御、等に基づいて、シェーディングパスの数をダイナミックに決定することができる。
[0048]図5Aは、本発明の1つ以上の態様に基づくピクセル501内のスーパーサンプルクラスター503及び511並びにマルチサンプル502、504及び513を示す。8サブピクセルサンプルのアンチエイリアシングが使用されるときには、マルチサンプル及びスーパーサンプルクラスターの種々の異なる組み合わせを使用して、8個のサブピクセルサンプルを発生することができる。図5Aに示す例では、3つのスーパーサンプルクラスター503及びスーパーサンプルクラスター511は、各々、ピクセル501の全部で8つのサブピクセルサンプル位置に対して、スーパーサンプルクラスター511のマルチサンプル502及び504のような2つのマルチサンプルを含む。他の8サブピクセルサンプル構成は、1つのマルチサンプルを各々伴う8つ程度のスーパーサンプルクラスターを含むか、又は8つのマルチサンプルを伴う1つ程度のスーパーサンプルクラスターを含む。シェーディングは、スーパーサンプルクラスターごとに一度遂行され、そのシェード値、例えば、カラーが、スーパーサンプルクラスター内の全てのマルチサンプルに対して記憶される。
[0049]シェーダー属性は、スーパーサンプルクラスターにおける特定のマルチサンプルの位置においてサンプリングされてもよいし、或いはスーパーサンプルクラスター内又はその付近の他の位置でサンプリングされてもよい。例えば、図5Aでは、断片属性(カラー、テクスチャ座標、等)が、スーパーサンプルクラスター511内のマルチサンプル502のような内実のマルチサンプル位置においてサンプリングされる。更に、断片がスーパーサンプルクラスターを一部分しかカバーしないときには、属性がサンプリングされる位置を、スーパーサンプルクラスター内のカバーされたマルチサンプルの領域内に存在するように調整するのが好都合である。これは、セントロイドサンプリングとして通常知られているが、この用語は、ここでは、全ピクセル断片ではなく、スーパーサンプルクラスターに適用される。
[0050]図5Bは、本発明の1つ以上の態様に基づくスーパーサンプルクラスター511内の断片509及びセントロイド位置517を示す。本発明のある実施形態では、属性が評価される位置を、断片により実際にカバーされるスクリーンエリアに良く対応するように変更するために、セントロイドサンプリングが使用される。本発明のある実施形態では、サンプル補間ユニット510は、特定のマルチサンプル位置又は近似セントロイド位置で各スーパーサンプルクラスターをサンプリングするように構成できる。
[0051]セントロイドは、カバーされたマルチサンプルの幾何学的セントロイドでもよいし、又は例えば、完全にカバーされたスーパーサンプルクラスターのセントロイドに最も近いスーパーサンプルクラスター内のカバーされたマルチサンプルを選択することにより近似されてもよい。例えば、セントロイド位置517は、マルチサンプル502の位置が断片509の中心付近ではなく縁付近にあるので、スーパーサンプルクラスター511に対するサンプルされたカラーを表すのに使用されるスーパーサンプルクラスター511の幾何学的中心において計算されたマルチサンプル位置である。マルチサンプル502と比較される断片カラーをより正確に表すためにセントロイド位置517においてシェード値が計算される。
[0052]図5Cは、本発明の1つ以上の態様に基づく、ラスタライザー455、断片処理ユニット460、及びラスタオペレーションユニット465を含むグラフィック処理パイプライン400の一部分のブロック図である。ラスタライザー455、断片処理ユニット460、及びラスタオペレーションユニット465内には、他の処理ユニットが含まれてもよい。これら他の処理ユニットは、一般的な従来設計のものであるので、図5Cには示されておらず、本発明にとって重要ではないので、詳細な説明は省略する。
[0053]ラスタライザー455は、幾何学的処理ユニット448からプリミティブを受け取り、そのプリミティブが交差するピクセルごとに断片を発生する。ハイブリッドアンチエイリアス制御ユニット500(任意であるがラスタライザー455内にある)は、レンダリング状態、例えば、アルファテストイネーブル/ディスエイブル、テクスチャマップコンテンツ、ユーザ付与クオリティ/性能制御、等に基づいて、各プリミティブの断片を処理するのに使用されるシェーダーパスの数をダイナミックに決定するよう構成できる。
[0054]ハイブリッドアンチエイリアス制御ユニット500は、より高いシェーディングレートから利益を得るプリミティブに対してより多くのシェーディングパスを遂行しそして他のプリミティブに対してシェーディングレートを減少することによりアンチエイリアシング効率を改善する。ハイブリッドアンチエイリアス制御ユニット500は、種々のクオリティ設定で動作するように、ユーザ、アプリケーション、又は装置ドライバ103により構成することができる。これらは、最低のクオリティ設定「マルチサンプル−常時」から最高のクオリティ設定「スーパーサンプル−常時」までの範囲である。中間クオリティ設定は、シェーディングパスの数を決定する際にレンダーパイプライン状態を考慮することができる。例えば、アルファテスト又はシェーダーピクセルキルがイネーブルされる場合には、より多くのシェーディングパスが望まれる。逆に、高い性能が指定されるときには、アルファテスト及びシェーダーピクセルキルがディスエイブルされ、ハイブリッドアンチエイリアス制御ユニット500によりサンプリングレートを下げることができる。又、ハイブリッドアンチエイリアス制御ユニット500は、シェーディングパスの数を決定する際に、ピクセルシェーダー又はテクスチャサンプラー設定の特性も考慮することができる。当業者であれば、シェーディングパスの数を決定するためにハイブリッドアンチエイリアス制御ユニット500によって種々様々な基準を使用できることが明らかであろう。従来のグラフィックシステムでは、ユーザ付与設定又は固定の設定に基づいてシーン内の全てのプリミティブに対してサンプリングレートが決定される。更に、従来のシステムに対するサンプリングは、マルチサンプリング又はスーパーサンプリングに制限され、中間の代替物はない。
[0055]一実施形態では、ラスタライザー455は、2x2クオドのピクセル断片を発生し、これらは、ハイブリッドアンチエイリアス繰り返しユニット515によって受け取られる。ハイブリッドアンチエイリアス制御ユニット500がパス=1にセットすると(即ち、マルチサンプリングのとき)、ハイブリッドアンチエイリアス繰り返しユニット515は、これらのクオドを変更せずに断片処理ユニット460へ通す。しかしながら、ハイブリッドアンチエイリアス制御ユニット500がパスをN>1にセットすると、ハイブリッドアンチエイリアス繰り返しユニット515は、シェーダーパスに対応するパス数を含めて、複数回、各クオドを断片処理ユニット460へ出力する。ハイブリッドアンチエイリアス繰り返しユニット515は、断片処理ユニット460へ送られるカバレージをマスクし、現在パスに対応するスーパーサンプルクラスター内のマルチサンプルしかイネーブルされないようにする。他の実施形態では、断片処理ユニット460は、ハイブリッドアンチエイリアス繰り返しユニット515によりそれに与えられるパス数に基づいてカバレージをマスクすることができる。他の実施形態は、2x2断片クオド以外の領域、例えば、単一ピクセル、4x4断片タイル、等にわたって繰り返せることに注意されたい。プリミティブではなくピクセル(クオド)の領域にわたる繰り返しが効果的である。というのは、テクスチャマップデータは、特定のクオドに対するその後のシェーダーパスに対して再使用し易いが、それより大きいプリミティブにわたる繰り返しは、例えば、PPメモリ204又はシステムメモリ104のようなメモリからテクスチャデータを再フェッチさせることができるからである。
[0056]重要なことに、断片を発生するために必要とされる幾何学的計算は、シェーダーパスごとに繰り返されない。対照的に、マルチサンプルバッファへのスーパーサンプルに対してサンプルマスクを使用する従来のシステムは、典型的に、シェーダーパスごとに、幾何学的計算を繰り返す。断片処理ユニット460においてサンプルされるプリミティブ属性は、ハイブリッドアンチエイリアシングパスの数に関わらず、一度計算されるだけでよいことに注意されたい。というのは、それらは、その後に繰り返されるクオドによって参照され、次いで、破棄することができるからである。
[0057]断片処理ユニット460におけるサンプルルックアップテーブルは、ハイブリッドアンチエイリアシングパラメータ及びパス数を使用して、補間された断片パラメータがサンプルされる場所を決定する。サンプルルックアップテーブル505は、各スーパーサンプルクラスターに対してセントロイド位置又はマルチサンプル位置を選択することができる。マルチサンプル位置は、サンプル補間ユニット510へ出力され、この補間ユニットは、スーパーサンプルクラスターごとに、即ちピクセルクオド内の各ピクセルに対する1セットの補間パラメータごとに、1つ以上の補間パラメータ、例えば、カラーチャンネル(赤、緑、青、アルファ)、テクスチャ座標、等を計算する。シェーダー520は、当業者に知られた技術を使用して、ピクセルクオド内の各ピクセルに対する補間パラメータのセットを処理し、断片シェーダープログラム、等を実行して、スーパーサンプルクラスターごとに、シェードピクセル値、例えば、カラーを発生する。
[0058]シェーディング中に、各スーパーサンプルクラスターに対するサブピクセルサンプルを、アルファテスト又はシェーダーピクセルキルの結果として排除(選別又は除外)し、ピクセルキル又はアルファテスト結果に基づいて後シェーダーカバレージを発生するようにラスタ発生カバレージを変更することができる。スーパーサンプルクラスターは、シェーダー520を通して個別のパスにおいて処理されるので、スーパーサンプルクラスターは、アルファテスティング中に個々に排除することができる。対照的に、従来のマルチサンプリングを使用して、単一シェーディングパスにおける全てのサブピクセルサンプルを処理するときには、全てのサブピクセルサンプルが保持されるか又は排除され、粗いアルファテスティング粒度を生じて、クオリティの低い映像を発生することになる。
[0059]シェーダー520は、シェードピクセル値及びサブピクセルカバレージ(おそらくラスタライザー455により与えられるカバレージに比して変更されている)をカラーバッファ535及びカバレージ総計器530へ各々出力する。カバレージ総計器530は、シェーダーパスごとに後シェーダーカバレージを累積して、ピクセルごとに集計されたカバレージ情報を発生する。カラーバッファ535は、ピクセルごとにシェード値を累積する。最後のシェーダーパスに対するシェード値が受け取られると、集計カバレージ情報がラスタオペレーションユニット465へ出力される。ピクセルクオドに対するシェード値は、集計カバレージ情報と共に出力されてもよいし、又は後で、例えば、ラスタオペレーションユニット645によりzテストが完了した後に、出力されてもよい。本発明の他の実施形態では、カバレージ総計器530及びカラーバッファ535を省略してもよい。
[0060]カバレージを集計しそしてカラー値をカバーバッファへ合体することは、1つのメモリトランザクションを使用して複数のサンプルを書き込んだり読み取ったりできるように、各ピクセルのサンプルを一緒にメモリにパックするシステムでは、好都合である。他の実施形態では、カバレージ総計器530を省略してもよい。カバレージ総計器530は、ピクセルのためのサンプル値をメモリに隣接して記憶しないシステムでは、あまり好都合ではない。
[0061]ラスタオペレーションユニット465内の任意のz/カラー圧縮ユニット550は、集計されたカバレージ情報及びz値又はzの別の表現或いは(zテストに続く)断片の深さ値を受け取り、ピクセルの領域に対する圧縮z値を発生する。又、z/カラー圧縮ユニット550は、断片に対する集計カラー値も受け取り、ピクセルの領域に対する圧縮カラー値を発生する。圧縮は、ピクセルのより大きなグループに適用されたときに改善することができる。それ故、結果を圧縮する前に、多数のピクセルクオドを一緒に集計して、zテストすることができる。重要なことに、ハイブリッドアンチエイリアシングは、z圧縮の有効性を除外も減少もしない。z圧縮は、zバッファにアクセスするためのメモリ帯域巾要件、及びある実施形態では、メモリ占有面積も減少するように、効果的に使用される。
[0062]図6は、本発明の1つ以上の態様に基づくハイブリッドアンチエイリアシングを遂行するための方法ステップのフローチャートである。ステップ610において、ハイブリッドアンチエイリアス制御ユニット500は、プリミティブを受け取る。ステップ615において、ハイブリッドアンチエイリアス制御ユニット500は、ハイブリッドアンチエイリアシングがイネーブルされたかどうか決定し、もしそうでなければ、従来のアンチエイリアシングを使用して断片が処理される。ステップ615において、ハイブリッドアンチエイリアシングがイネーブルされた場合には、次いで、ステップ635において、ハイブリッドアンチエイリアス制御ユニット500は、プリミティブに対するハイブリッドアンチエイリアスパラメータを決定する。より詳細には、ハイブリッドアンチエイリアス制御ユニット500は、プリミティブが交差する各ピクセルをシェーディングするときに使用されるべきスーパーサンプルクラスター(シェーダーパス)の数を決定する。
[0063]ステップ640において、ラスタライザー455は、プリミティブのカバーされた部分に対してサンプルレベルカバレージを発生する。このカバレージの粒度は、粗いか又は微細であるが、少なくとも、ピクセルクオドのサイズである。ラスタライザー455は、プリミティブに交差するクオドに対するカバレージ情報をハイブリッドアンチエイリアス繰り返しユニット515へ出力する。ハイブリッドアンチエイリアス繰り返しユニット515は、複数のパスでクオドをシェーディングするためにハイブリッドアンチエイリアスパラメータに基づいて各クオドを拡張する。ハイブリッドアンチエイリアス繰り返しユニット515は、カバレージ情報に基づいて、スーパーサンプルクラスターの全てのマルチサンプルがカバーされないときにシェーダーパスをスキップするように構成される。ステップ643において、ハイブリッドアンチエイリアス繰り返しユニット515は、パス番号(第1、第2、等)を決定し、ピクセルクオド及びパス番号を断片処理ユニット460へ出力する。上述したように、パスの数が1より多いときには、ハイブリッドアンチエイリアス繰り返しユニット515は、カバレージ情報にマスクすることができる。サンプルルックアップテーブル505は、断片パラメータを補間するのに使用されるスーパーサンプルクラスター内の場所の指示を含めて、マルチサンプル位置に対するプログラム値を読み取るためにパス番号及びマルチサンプルの数を使用してインデックスされる。補間されるパラメータは、サンプル補間ユニット510によりスーパーサンプルクラスターに対して計算される。
[0064]ステップ645において、断片処理ユニット460は、ピクセルクオドをシェーディングし、各スーパーサンプルクラスターに対するシェード値、即ちピクセルクオドの各ピクセルに対する1つのシェード値を発生する。スーパーサンプルクラスター内で、シェード値は、プリミティブによりカバーされるマルチサンプルごとに使用される。又、断片処理ユニット460は、ピクセルクオドに対する後シェーダーカバレージも出力する。この後シェーダーカバレージは、ラスタ化されたピクセルカバレージ情報とは異なってもよい。というのは、上述したように、シェーディング中にマルチサンプルが排除され得るからである。
[0065]ステップ650において、ハイブリッドアンチエイリアス繰り返しユニット515は、別のシェーダーパスを使用してピクセルクオドを処理するかどうか決定し、もしそうであれば、別のシェーダーパス(第2、第4、等)に対してステップ643及び645が繰り返される。ステップ650において、ピクセルクオドを処理するために別のシェーダーパスが必要とされないことをハイブリッドアンチエイリアス繰り返しユニット515が決定した場合には、ステップ660において、カバレージ集計器530がシェーダーパスの各々に対して後シェーダーカバレージを合成して、ピクセルクオドに対する集計したカバレージ情報を発生する。又、ステップ660において、カバレージ集計器530は、シェーダーパスの各々に対して後シェーダーカラー値を合成して、ピクセルクオドに対する集計したカラー値を発生することもできる。カバレージ集計器530は、マルチクオドレベルにおいて後シェーダーカラー及びカバレージ情報を集計するように構成することができる。ステップ665において、ラスタオペレーションユニット465は、ラスタオペレーションを遂行して、どのシェード値がフレームバッファに書き込まれるか決定する。ラスタオペレーションは、クオド又はマルチクオドレベルにおいて行うことができる。ラスタオペレーションユニット465内のz/カラー圧縮ユニット550は、z及び/又はカラーデータがzバッファ及び/又はカラーバッファに記憶される前にピクセルクオドに対してz及び/又はカラーデータを圧縮するのに使用できる。
[0066]ステップ670において、ラスタライザー455は、別のピクセルクオドがプリミティブに交差するかどうか決定し、もしそうであれば、次いで、ステップ640において、ラスタライザー455は、プリミティブによりカバーされる異なるピクセルクオドを処理する。ステップ670において、プリミティブにより交差される全てのピクセルクオドがシェーディングされたとラスタライザー455が決定した場合には、ステップ675において、プリミティブの処理が完了となる。パイプラインシステムでは、図6に示すステップの1つ以上を、異なるクオドに対して並列に遂行することができる。
[0067]ハイブリッドアンチエイリアス制御ユニット500は、各プリミティブのハイブリッドアンチエイリアスパラメータ、例えば、ピクセル当たりのスーパーサンプルクラスターの数を、レンダリング状態、例えば、アルファテストイネーブル/ディスエイブル、テクスチャマップコンテンツ、ユーザ付与クオリティ/性能制御、等に基づいてダイナミックに決定することができる。レンダリング状態に基づいてアンチエイリアシングを適応させることで、効率が改善される。というのは、クオリティの高いアンチエイリアシングから利益を得るプリミティブは、より多くのサンプルでシェーディングされ、他のプリミティブは、より少ないサンプルでシェーディングされ、映像のクオリティ及び性能を最適化するからである。
[0068]本発明は、特定の実施形態を参照して上述された。しかしながら、当業者であれば、特許請求の範囲に述べた本発明の広い精神及び範囲から逸脱せずに種々の変更や交換がなされ得ることが理解されよう。本発明の一実施形態は、コンピュータシステムに使用するためのプログラム製品として実施することができる。プログラム製品のプログラム(1つ又は複数)は、(ここに述べる方法を含む)実施形態の機能を定義し、そして様々なコンピュータ読み取り可能な記憶媒体に収容することができる。ここに例示するコンピュータ読み取り可能な記憶媒体は、(i)情報が永久的に記憶される書き込み不能の記憶媒体(例えば、コンピュータ内のリードオンリメモリ装置、例えば、CD−ROMドライブにより読み取り可能なCD−ROMディスク、フラッシュメモリ、ROMチップ、又は任意の形式のソリッドステート不揮発性半導体メモリ)、及び(ii)変更可能な情報が記憶される書き込み可能な記憶媒体(例えば、ディスケットドライブ又はハードディスクドライブ内のフロッピーディスク、又は任意の形式のソリッドステートランダムアクセス半導体メモリ)を含むが、これらに限定されない。従って、以上の説明及び添付図面は、例示のためのものであって、それに限定されるものではない。
100・・・コンピュータシステム、102・・・中央処理ユニット(CPU)、104・・・システムメモリ、105・・・メモリブリッジ、106・・・通信経路、107・・・I/Oブリッジ、108・・・ユーザ入力装置、110・・・ディスプレイ装置、112・・・並列処理サブシステム、113・・・通信経路、114・・・システムディスク、116・・・スイッチ、118・・・ネットワークアダプタ、120・・・アドインカード、121・・・アドインカード、202・・・並列処理ユニット(PPU)、204・・・PPメモリ、206・・・ホストインターフェイス、208・・・コア、210・・・ワーク配布ユニット、212・・・フロントエンド、214・・・メモリインターフェイス、302・・・処理エンジン、304・・・ローカルレジスタファイル、306・・・共有メモリ、308・・・パラメータメモリ、312・・・インストラクションユニット、400・・・グラフィック処理パイプライン、442・・・データアッセンブラー、444・・・頂点処理ユニット、446・・・プリミティブアッセンブラー、448・・・幾何学的処理ユニット、455・・・ラスタライザー、460・・・断片処理ユニット、465・・・ラスタオペレーションユニット、500・・・ハイブリッドアンチエイリアス制御ユニット、501・・・ピクセル、502・・・マルチサンプル、503・・・スーパーサンプルクラスター、504・・・マルチサンプル、505・・・サンプルルックアップテーブル、509・・・断片、510・・・サンプル補間ユニット、511・・・スーパーサンプルクラスター、513・・・マルチサンプル、515・・・ハイブリッドアンチエイリアス繰り返しユニット、517・・・セントロイド位置、520・・・シェーダー、530・・・カバレージ集計器、535・・・カラーバッファ、550・・・カラー/Z圧縮ユニット

Claims (10)

  1. ハイブリッドアンチエイリアシングを使用してグラフィックプリミティブをシェーディングするように構成されたコンピューティング装置において、
    ラスタライザーと、断片シェーディングユニットとを備え、
    前記ラスタライザーが、ハイブリッドアンチエイリアス制御ユニットを含み、
    このハイブリッドアンチエイリアス制御ユニットが、
    前記グラフィックプリミティブを受け取り、
    前記グラフィックプリミティブに交差する各ピクセルをアンチエイリアスするように使用されるスーパーサンプルクラスターの数を決定し、
    前記スーパーサンプルクラスターの各1つに対して前記グラフィックプリミティブを処理するように使用されるマルチサンプルの数を決定する、
    ように構成されており、
    前記断片シェーディングユニットが、前記ラスタライザーに結合されており、この断片シェーディングユニットを通る複数のパスを使用して前記グラフィックプリミティブをシェーディングするように構成されており、
    グラフィックプリミティブに交差する各ハイブリッドアンチエイリアス処理ピクセルを発生するのに使用される複数のパスの数が、スーパーサンプルクラスターの数以下である、コンピューティング装置。
  2. 前記スーパーサンプルクラスターの数が、前記コンピューティング装置のレンダリング状態に基づいて決定される、請求項1に記載のコンピューティング装置。
  3. 前記レンダリング状態が、高クオリティモード設定、高性能設定、アルファテスト設定、及び高周波数コンテンツを伴うテクスチャマップの使用の1つ以上を含む、請求項2に記載のコンピューティング装置。
  4. 前記断片シェーディングユニットが、更に、前記スーパーサンプルクラスターの各1つに対してグラフィックプリミティブによりどのマルチサンプルがカバーされるか指示する後シェーダーカバレージを発生するように構成されている、請求項1に記載のコンピューティング装置。
  5. ラスタオペレーションユニットを更に備え、
    前記ラスタオペレーションユニットが、前記断片シェーディングユニットに結合されており、前記後シェーダーカバレージに基づき、グラフィックプリミティブによりカバーされるマルチサンプルの各1つに対してグラフィックプリミティブをzテストして、zテスト値を発生するように構成されている、請求項4に記載のコンピューティング装置。
  6. 前記ラスタオペレーションユニットが、更に、前記グラフィックプリミティブの各1つに交差するzバッファの一部分に対して前記zテスト値を圧縮するように構成されている、請求項5に記載のコンピューティング装置。
  7. 前記グラフィックプリミティブの第1のプリミティブに交差する各ピクセルをアンチエイリアシングするのに使用されるスーパーサンプルクラスターの数が、前記グラフィックプリミティブの第2のプリミティブに交差する各ピクセルをアンチエイリアシングするのに使用されるスーパーサンプルクラスターの数とは異なる、請求項1に記載のコンピューティング装置。
  8. グラフィックプリミティブに交差する各ハイブリッドアンチエイリアス処理ピクセルを発生するのに使用される複数パスの数が、前記グラフィックプリミティブによりカバーされる少なくとも1つのマルチサンプルを伴わないスーパーサンプルクラスターに対するパスを含まない、請求項1に記載のコンピューティング装置。
  9. 前記断片シェーディングユニットが、更に、前記スーパーサンプルクラスターの各1つにおけるマルチサンプルの1つのみに対してシェード値を計算し、そして同じスーパーサンプルクラスター内の他のマルチサンプルに対してシェード値を複写することにより、前記グラフィックプリミティブをシェーディングするように構成されている、請求項1に記載のコンピューティング装置。
  10. 前記断片シェーディングユニットは、更に、前記スーパーサンプルクラスターのうちの第1スーパーサンプルクラスターに対するシェード値を、
    前記第1スーパーサンプルクラスター内の第1マルチサンプルの位置を使用し、
    グラフィックプリミティブによりカバーされる前記第1スーパーサンプルクラスター内のマルチサンプルの幾何学的セントロイドであるセントロイドを使用し、又は
    グラフィックプリミティブによりカバーされ且つ前記第1スーパーサンプルクラスターの幾何学的セントロイドに最も近い前記第1スーパーサンプルクラスター内のマルチサンプルである近似セントロイドを使用する、
    ことにより、計算するように構成されている、請求項1に記載のコンピューティング装置。
JP2009158615A 2008-07-03 2009-07-03 ハイブリッドマルチサンプル/スーパーサンプルアンチエイリアシング Active JP4744624B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/167,997 2008-07-03
US12/167,998 2008-07-03
US12/167,997 US8605086B2 (en) 2008-07-03 2008-07-03 Hybrid multisample/supersample antialiasing
US12/167,998 US8605087B2 (en) 2008-07-03 2008-07-03 Hybrid multisample/supersample antialiasing

Publications (2)

Publication Number Publication Date
JP2010020764A true JP2010020764A (ja) 2010-01-28
JP4744624B2 JP4744624B2 (ja) 2011-08-10

Family

ID=41705532

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009158615A Active JP4744624B2 (ja) 2008-07-03 2009-07-03 ハイブリッドマルチサンプル/スーパーサンプルアンチエイリアシング

Country Status (3)

Country Link
JP (1) JP4744624B2 (ja)
KR (1) KR101009557B1 (ja)
TW (1) TWI425440B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013137756A (ja) * 2011-12-05 2013-07-11 Arm Ltd コンピュータグラフィックスを処理する方法およびコンピュータグラフィックスを処理するための装置
JP2013536490A (ja) * 2010-06-21 2013-09-19 マイクロソフト コーポレーション テキストレンダリングのためのルックアップテーブル
JP2013539095A (ja) * 2010-07-19 2013-10-17 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド アンチエイリアシングされたサンプルの分割ストレージ
JP2017516200A (ja) * 2014-04-05 2017-06-15 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー オブジェクト及び/またはプリミティブ識別子を追跡することによるグラフィック処理の向上

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101926570B1 (ko) 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US9569883B2 (en) * 2013-12-12 2017-02-14 Intel Corporation Decoupled shading pipeline
WO2015108218A1 (ko) * 2014-01-20 2015-07-23 (주)넥셀 그래픽 처리 장치 및 방법
US9934606B2 (en) * 2014-09-16 2018-04-03 Intel Corporation Deferred coarse pixel shading
US9466124B2 (en) 2014-11-10 2016-10-11 Intel Corporation Compression using index bits in MSAA
KR102680270B1 (ko) 2016-12-16 2024-07-01 삼성전자주식회사 그래픽스 처리 장치 및 그래픽스 처리 장치에서 그래픽스 파이프라인을 처리하는 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06243247A (ja) * 1993-02-18 1994-09-02 Matsushita Electric Ind Co Ltd 形状記述装置
JPH07134776A (ja) * 1993-05-28 1995-05-23 Nippon Yunishisu Kk 画像レンダリング方法とその装置
JPH0877385A (ja) * 1994-08-29 1996-03-22 Internatl Business Mach Corp <Ibm> コンピュータ・グラフィクス装置
JP2003058905A (ja) * 2001-08-21 2003-02-28 Nintendo Co Ltd グラフィックスレンダリングシステムにおいて視覚的に重要なz成分の精度を最大化しz近傍クリッピングを回避するためのz近傍範囲におけるz値のクランピング
WO2006056806A1 (en) * 2004-11-29 2006-06-01 Arm Norway As Processing of computer graphics

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6768491B2 (en) * 2001-12-21 2004-07-27 Ati Technologies Inc. Barycentric centroid sampling method and apparatus
US7495672B2 (en) * 2002-12-20 2009-02-24 Telefonaktiebolaget Lm Ericsson (Publ) Low-cost supersampling rasterization
EP1480171B1 (en) * 2003-05-22 2016-11-02 Telefonaktiebolaget LM Ericsson (publ) Method and system for supersampling rasterization of image data
US6967663B1 (en) * 2003-09-08 2005-11-22 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
US7173631B2 (en) * 2004-09-23 2007-02-06 Qualcomm Incorporated Flexible antialiasing in embedded devices
US8879635B2 (en) * 2005-09-27 2014-11-04 Qualcomm Incorporated Methods and device for data alignment with time domain boundary
US20080143720A1 (en) * 2006-12-13 2008-06-19 Autodesk, Inc. Method for rendering global illumination on a graphics processing unit

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06243247A (ja) * 1993-02-18 1994-09-02 Matsushita Electric Ind Co Ltd 形状記述装置
JPH07134776A (ja) * 1993-05-28 1995-05-23 Nippon Yunishisu Kk 画像レンダリング方法とその装置
JPH0877385A (ja) * 1994-08-29 1996-03-22 Internatl Business Mach Corp <Ibm> コンピュータ・グラフィクス装置
JP2003058905A (ja) * 2001-08-21 2003-02-28 Nintendo Co Ltd グラフィックスレンダリングシステムにおいて視覚的に重要なz成分の精度を最大化しz近傍クリッピングを回避するためのz近傍範囲におけるz値のクランピング
WO2006056806A1 (en) * 2004-11-29 2006-06-01 Arm Norway As Processing of computer graphics

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013536490A (ja) * 2010-06-21 2013-09-19 マイクロソフト コーポレーション テキストレンダリングのためのルックアップテーブル
US9129441B2 (en) 2010-06-21 2015-09-08 Microsoft Technology Licensing, Llc Lookup tables for text rendering
JP2013539095A (ja) * 2010-07-19 2013-10-17 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド アンチエイリアシングされたサンプルの分割ストレージ
JP2013137756A (ja) * 2011-12-05 2013-07-11 Arm Ltd コンピュータグラフィックスを処理する方法およびコンピュータグラフィックスを処理するための装置
US9805447B2 (en) 2011-12-05 2017-10-31 Arm Limited Methods of and apparatus for processing computer graphics
JP2017516200A (ja) * 2014-04-05 2017-06-15 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー オブジェクト及び/またはプリミティブ識別子を追跡することによるグラフィック処理の向上

Also Published As

Publication number Publication date
KR101009557B1 (ko) 2011-01-18
KR20100004890A (ko) 2010-01-13
TW201007610A (en) 2010-02-16
TWI425440B (zh) 2014-02-01
JP4744624B2 (ja) 2011-08-10

Similar Documents

Publication Publication Date Title
US8605087B2 (en) Hybrid multisample/supersample antialiasing
US8605086B2 (en) Hybrid multisample/supersample antialiasing
JP4744624B2 (ja) ハイブリッドマルチサンプル/スーパーサンプルアンチエイリアシング
US9947084B2 (en) Multiresolution consistent rasterization
JP5303787B2 (ja) 単一パステセレーション
US9734548B2 (en) Caching of adaptively sized cache tiles in a unified L2 cache with surface compression
US9542189B2 (en) Heuristics for improving performance in a tile-based architecture
CN105321199B (zh) 图形处理流水线及其操作方法与介质
US9153209B2 (en) Method and system for generating a displacement map from a normal map
US9953455B2 (en) Handling post-Z coverage data in raster operations
CN104050706B (zh) 用于低功率图形渲染的像素着色器旁路
CN103871019B (zh) 用于处理路径图像以促进光栅化的方法和设备
TWI645371B (zh) 在上游著色器內設定下游著色狀態
CN105321143A (zh) 来自片段着色程序的采样掩膜的控制
US9396515B2 (en) Rendering using multiple render target sample masks
US9721381B2 (en) System, method, and computer program product for discarding pixel samples
US9342891B2 (en) Stencil then cover path rendering with shared edges
EP3926577B1 (en) Input/output filter unit for graphics processing unit
CN104050619B (zh) 具有共享边缘的模板然后覆盖路径渲染

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110404

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110510

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4744624

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250