(57)【要約】【課題】  レンダリングされている現在幾何学形状に適したピクセルシェーディングレートを使用するシステム及び方法を提供する。【解決手段】  プリミティブのシェーディング中にピクセルサンプリングレートをダイナミックに調整するためのシステム及び方法は、映像クオリティを改善するか又はシェーディング性能を高めることができる。ハイブリッドアンチエイリアシングは、ピクセル断片当たりにシェーディングされるサンプルの数を選択することにより遂行される。スーパーサンプル及びマルチサンプルアンチエイリアシングの組み合わせが使用され、断片シェーダーパイプラインを通る各パスに対してサブピクセルサンプル（マルチサンプル）のクラスターが処理される。各クラスターにおけるマルチサンプル及びシェーダーパスの数は、レンダリング状態に基づきプリミティブごとにダイナミックに決定することができる。【選択図】図５Ｃ
2010020764.tif 000002
【特許請求の範囲】
【請求項１】
ハイブリッドアンチエイリアシングを使用してグラフィックプリミティブをシェーディングするように構成されたコンピューティング装置において、
ラスタライザーと、断片シェーディングユニットとを備え、
前記ラスタライザーが、ハイブリッドアンチエイリアス制御ユニットを含み、
このハイブリッドアンチエイリアス制御ユニットが、
前記グラフィックプリミティブを受け取り、
前記グラフィックプリミティブに交差する各ピクセルをアンチエイリアスするように使用されるスーパーサンプルクラスターの数を決定し、
前記スーパーサンプルクラスターの各１つに対して前記グラフィックプリミティブを処理するように使用されるマルチサンプルの数を決定する、
ように構成されており、
前記断片シェーディングユニットが、前記ラスタライザーに結合されており、この断片シェーディングユニットを通る複数のパスを使用して前記グラフィックプリミティブをシェーディングするように構成されており、
グラフィックプリミティブに交差する各ハイブリッドアンチエイリアス処理ピクセルを発生するのに使用される複数のパスの数が、スーパーサンプルクラスターの数以下である、コンピューティング装置。
【請求項２】
前記スーパーサンプルクラスターの数が、前記コンピューティング装置のレンダリング状態に基づいて決定される、請求項１に記載のコンピューティング装置。
【請求項３】
前記レンダリング状態が、高クオリティモード設定、高性能設定、アルファテスト設定、及び高周波数コンテンツを伴うテクスチャマップの使用の１つ以上を含む、請求項２に記載のコンピューティング装置。
【請求項４】
前記断片シェーディングユニットが、更に、前記スーパーサンプルクラスターの各１つに対してグラフィックプリミティブによりどのマルチサンプルがカバーされるか指示する後シェーダーカバレージを発生するように構成されている、請求項１に記載のコンピューティング装置。
【請求項５】
ラスタオペレーションユニットを更に備え、
前記ラスタオペレーションユニットが、前記断片シェーディングユニットに結合されており、前記後シェーダーカバレージに基づき、グラフィックプリミティブによりカバーされるマルチサンプルの各１つに対してグラフィックプリミティブをｚテストして、ｚテスト値を発生するように構成されている、請求項４に記載のコンピューティング装置。
【請求項６】
前記ラスタオペレーションユニットが、更に、前記グラフィックプリミティブの各１つに交差するｚバッファの一部分に対して前記ｚテスト値を圧縮するように構成されている、請求項５に記載のコンピューティング装置。
【請求項７】
前記グラフィックプリミティブの第１のプリミティブに交差する各ピクセルをアンチエイリアシングするのに使用されるスーパーサンプルクラスターの数が、前記グラフィックプリミティブの第２のプリミティブに交差する各ピクセルをアンチエイリアシングするのに使用されるスーパーサンプルクラスターの数とは異なる、請求項１に記載のコンピューティング装置。
【請求項８】
グラフィックプリミティブに交差する各ハイブリッドアンチエイリアス処理ピクセルを発生するのに使用される複数パスの数が、前記グラフィックプリミティブによりカバーされる少なくとも１つのマルチサンプルを伴わないスーパーサンプルクラスターに対するパスを含まない、請求項１に記載のコンピューティング装置。
【請求項９】
前記断片シェーディングユニットが、更に、前記スーパーサンプルクラスターの各１つにおけるマルチサンプルの１つのみに対してシェード値を計算し、そして同じスーパーサンプルクラスター内の他のマルチサンプルに対してシェード値を複写することにより、前記グラフィックプリミティブをシェーディングするように構成されている、請求項１に記載のコンピューティング装置。
【請求項１０】
前記断片シェーディングユニットは、更に、前記スーパーサンプルクラスターのうちの第１スーパーサンプルクラスターに対するシェード値を、
前記第１スーパーサンプルクラスター内の第１マルチサンプルの位置を使用し、
グラフィックプリミティブによりカバーされる前記第１スーパーサンプルクラスター内のマルチサンプルの幾何学的セントロイドであるセントロイドを使用し、又は
グラフィックプリミティブによりカバーされ且つ前記第１スーパーサンプルクラスターの幾何学的セントロイドに最も近い前記第１スーパーサンプルクラスター内のマルチサンプルである近似セントロイドを使用する、
ことにより、計算するように構成されている、請求項１に記載のコンピューティング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明の実施形態は、一般に、グラフィック処理のためのアンチエイリアシング技術に係り、より詳細には、ピクセル断片当たりにシェーディングされるサンプルの数をダイナミックに調整することに係る。
【背景技術】
【０００２】
[0002]従来、グラフィックプロセッサは、マルチサンプリング又はスーパーサンプリングのいずれかによりアンチエイリアシングを遂行するように構成される。マルチサンプリングでは、各ピクセル断片が一回シェーディングされ、それにより得られるカラー値が、カバーされる全てのサブピクセルサンプルに対して複写される。スーパーサンプリングでは、各ピクセル断片が、カバーされるサブピクセルサンプルごとに一回づつ、Ｎ回シェーディングされる。
【０００３】
[0003]マルチサンプリングは、プリミティブのエッジをアンチエイリアシングするのに良く適している。というのは、ここで重要なことは、到来するプリミティブによってどのサンプルがカバーされるか、だからである。テクスチャは、典型的に、前フィルタリングされ、従って、シェーディングされるカラー値は、ピクセル当たり一回のシェーディングで足りるように充分低い空間的周波数を有する。しかしながら、テクスチャ化アルファトランスパレンシー及び高周波スペキュラーハイライトのような幾つかの効果は、ピクセルより高い周波数を有することがあり、エイリアシング欠陥を回避するにはピクセルより高い周波数でシェーディングを行うことを要求する。これら形式のエイリアシングを回避するためにスーパーサンプリングが典型的に要求される。しかしながら、ピクセル内のサンプルごとのシェーディングは、著しく経費がかかる。というのは、シェーディングは、典型的に、レンダリングにおいて最も経費のかかる動作だからである。又、あるスーパーサンプリングの具現化では、入力プリミティブを、サブピクセルサンプルごとに一回づつ、複数回処理することを要求し、これは、付加的な非効率化を招く。上述したエイリアシングの原因を軽減するには、ピクセル当たり一回より高いがサンプルごとに一回よりは低いシェーディングレートで充分である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0004]従って、この技術で要望されるのは、レンダリングされている現在幾何学形状に適したピクセルシェーディングレートを使用するシステム及び方法である。シェーディングレートは、映像クオリティを改善するように減少されてもよいし、又はシェーディング性能を改善するように減少されてもよい。
【課題を解決するための手段】
【０００５】
[0005]プリミティブのシェーディング中にピクセルサンプリングレートをダイナミックに調整するためのシステム及び方法は、映像クオリティを改善するか又はシェーディング性能を高めることができる。シェーディングレートは、ピクセル当たり一回（マルチサンプリング）からサンプル当たり一回（スーパーサンプリング）までのどこかに或いはそれらの間のどこかに変化させて、映像クオリティを改善するか又はシェーディング性能を高めることができる。レンダーターゲット（映像バッファ）に対するピクセル当たりのサンプルの指定数が与えられると、シェーダーパスの数がダイナミックに選択される。スーパーサンプル及びマルチサンプルアンチエイリアシングの組み合わせが使用され、サブピクセルサンプル（マルチサンプル）のクラスターが断片シェーダーのパスごとに処理される。スーパーサンプルクラスターがピクセルごとに合成され、アンチエイリアスされたピクセルを発生する。
【０００６】
[0006]ピクセル当たり複数のサンプルを発生するように構成されたコンピューティング装置においてハイブリッドアンチエイリアシングを使用してプリミティブをシェーディングするための本発明の方法の種々の実施形態は、グラフィックプリミティブを受け取り、そしてそのグラフィックプリミティブに交差する各ピクセルをアンチエイリアスするのに使用されるスーパーサンプルクラスターの数を決定することを含む。グラフィックプリミティブは、コンピューティング装置内の断片シェーディングユニットを通る複数のパスを使用してシェーディングされ、グラフィックプリミティブに交差する各ハイブリッドアンチエイリアス処理ピクセルを発生するのに使用される複数のパスの数は、スーパーサンプルクラスターの数以下である。
【０００７】
[0007]本発明の種々の実施形態は、ハイブリッドアンチエイリアシングを使用してグラフィックプリミティブをシェーディングするように構成されたコンピューティング装置を備えている。このコンピューティング装置は、断片シェーディングユニットに結合されたラスタライザーを備えている。このラスタライザーは、グラフィックプリミティブを受け取って、そのグラフィックプリミティブに交差する各ピクセルをアンチエイリアスするのに使用されるスーパーサンプルクラスターの数を決定するように構成されたハイブリッドアンチエイリアス制御ユニットを備えている。断片シェーディングユニットは、複数のパスを使用してグラフィックプリミティブをシェーディングするように構成され、グラフィックプリミティブに交差する各ハイブリッドアンチエイリアス処理ピクセルを発生するのに使用される複数のパスの数は、スーパーサンプルクラスターの数以下である。
【０００８】
[0008]上述した本発明の特徴を詳細に理解できるように、前記で簡単に要約した本発明について、幾つかを添付図面に例示した実施形態を参照して、より特定して説明する。しかしながら、添付図面は、本発明の典型的な実施形態のみを例示するもので、それ故、本発明の範囲をそれに限定するものではなく、本発明は、同等の効果を発揮できる他の実施形態も包含できるものであることに注意されたい。
【図面の簡単な説明】
【０００９】
【図１】本発明の１つ以上の態様を実施するように構成されたコンピュータシステムを示すブロック図である。
【図２】本発明の１つ以上の態様に基づく図１のコンピュータシステムのための並列処理サブシステムのブロック図である。
【図３】本発明の１つ以上の態様に基づく図２の並列処理サブシステムのためのコアのブロック図である。
【図４】本発明の１つ以上の態様に基づくグラフィック処理パイプラインの概念図である。
【図５Ａ】本発明の１つ以上の態様に基づくピクセル内のスーパーサンプルクラスター及びマルチサンプル位置を示す。
【図５Ｂ】本発明の１つ以上の態様に基づくマルチサンプルクラスター内の断片及びセントロイド位置を示す。
【図５Ｃ】本発明の１つ以上の態様に基づくグラフィック処理パイプラインの一部分のブロック図である。
【図６】本発明の１つ以上の態様に基づくハイブリッドアンチエイリアシングを遂行するための方法ステップのフローチャートである。
【発明を実施するための形態】
【００１０】
[0017]以下の説明では、本発明をより完全に理解するために多数の特定の細部について説明する。しかしながら、当業者であれば、これらの特定の細部の１つ以上がなくても、本発明を実施できることが明らかであろう。他の点について、本発明を不明瞭にしないために、良く知られた特徴は、説明しない。
【００１１】
システムの概略
[0018]図１は、本発明の１つ以上の態様を実施するように構成されたコンピュータシステム１００を示すブロック図である。このコンピュータシステム１００は、メモリブリッジ１０５を含むバス経路を経て通信する中央処理ユニット（ＣＰＵ）１０２及びシステムメモリ１０４を備えている。例えば、ノースブリッジ(Northbridge)チップでよいメモリブリッジ１０５は、バス又は他の通信経路１０６（例えば、ハイパートランスポートリンク）を経てＩ／Ｏ（入力／出力）ブリッジ１０７に接続される。例えば、サウスブリッジ(Southbridge)チップでよいＩ／Ｏブリッジ１０７は、１つ以上のユーザ入力装置１０８（例えば、キーボード、マウス）からユーザ入力を受け取り、そしてその入力を、経路１０６及びメモリブリッジ１０５を経てＣＰＵ１０２へ転送する。メモリブリッジ１０５には、バス又は他の通信経路１１３（例えば、ＰＣＩエクスプレス、アクセラレーテッドグラフィックポート又はハイパートランスポートリンク）を経て並列処理サブシステム１１２が結合され、一実施形態では、この並列処理サブシステム１１２は、ディスプレイ装置１１０（例えば、従来のＣＲＴ又はＬＣＤベースのモニタ）へピクセルを配送するグラフィックサブシステムである。システムメモリ１０４に記憶される装置ドライバ１０３は、ＣＰＵ１０２により実行されるプロセス、例えば、アプリケーションプログラムと、並列処理サブシステム１１２との間をインターフェイスし、並列処理サブシステム１１２により実行するために必要に応じてプログラム命令を変換する。
【００１２】
[0019]Ｉ／Ｏブリッジ１０７には、システムディスク１１４も接続される。スイッチ１１６は、Ｉ／Ｏブリッジ１０７と、他のコンポーネント、例えば、ネットワークアダプタ１１８及び種々のアドイン(add-in)カード１２０及び１２１との間の接続を与える。又、Ｉ／Ｏブリッジ１０７には、ＵＳＢ又は他のポート接続部、ＣＤドライブ、ＤＶＤドライブ、フィルムレコーディング装置、等を含む他のコンポーネント（明確に示さず）を接続することもできる。図１における種々のコンポーネントを相互接続する通信経路は、適当なプロトコル、例えば、ＰＣＩ（周辺コンポーネント相互接続）、ＰＣＩ−エクスプレス（ＰＣＩ−Ｅ）、ＡＧＰ（アクセラレーテッドグラフィックポート）、ハイパートランスポート、或いは他のバス又はポイント・ツー・ポイント通信プロトコルを使用して実施することができ、そして異なる装置間の接続は、この技術で知られたように異なるプロトコルを使用することができる。
【００１３】
[0020]並列処理サブシステム１１２の一実施形態が図２に示されている。この並列処理サブシステム１１２は、１つ以上の並列処理ユニット（ＰＰＵ）２０２を備え、その各々は、ローカル並列処理（ＰＰ）メモリ２０４に結合される。一般的に、並列処理サブシステムは、多数ＵのＰＰＵを含み、但し、Ｕ≧１である。（ここで、同じオブジェクトの複数のインスタンスは、オブジェクトを識別する参照番号と、必要に応じてインスタンスを識別するカッコ内の数字とで示される。）ＰＰＵ２０２及びＰＰメモリ２０４は、例えば、プログラム可能なプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、及びメモリ装置のような１つ以上の集積回路装置を使用して実施することができる。
【００１４】
[0021]ＰＰＵ２０２（０）について詳細に示すように、各ＰＰＵ２０２は、メモリブリッジ１０５へ接続される（又は別の実施形態では、ＣＰＵ１０２へ直結される）通信経路１１３を経てシステム１００の残り部分と通信するホストインターフェイス２０６を備えている。一実施形態では、通信経路１１３は、この技術で知られたように、各ＰＰＵ２０２に専用レーンが割り当てられるＰＣＩ−Ｅリンクである。又、他の通信経路が使用されてもよい。ホストインターフェイス２０６は、通信経路１１３へ送信するためにパケット（又は他の信号）を発生し、又、通信経路１１３から全ての到来パケット（又は他の信号）も受信して、それをＰＰＵ２０２の適当なコンポーネントへ向ける。例えば、処理タスクに関連したコマンドをフロントエンドユニット２１２に向ける一方、メモリオペレーション（例えば、ＰＰメモリ２０４からの読み取り又はそこへの書き込み）に関連したコマンドをメモリインターフェイス２１４に向けることができる。ホストインターフェイス２０６、フロントエンドユニット２１２、及びメモリインターフェイス２１４は、一般的に従来設計のものでよく、本発明にとって重要でないので、詳細な説明は省く。
【００１５】
[0022]各ＰＰＵ２０２は、高度な並列プロセッサを有利に実施する。ＰＰＵ２０２(０)について詳細に示すように、ＰＰＵ２０２は、多数Ｃのコア２０８を含み、但し、Ｃ≧１である。各処理コア２０８は、非常に多数（例えば、数十又は数百）のスレッドを同時に実行することができ、各スレッドは、プログラムのインスタンスであり、マルチスレッド型処理コア２０８の一実施形態を以下に説明する。コア２０８は、フロントエンドユニット２１２から処理タスクを定義するコマンドを受け取るワーク配布ユニット２１０を経て、実行されるべき処理タスクを受け取る。このワーク配布ユニット２１０は、ワーク配布のための種々のアルゴリズムを実施することができる。例えば、一実施形態では、ワーク配布ユニット２１０は、各コア２０８から、そのコアが新たな処理タスクを受け容れるに充分なリソースを有するかどうか指示する「レディ」信号を受け取る。新たな処理タスクが到着すると、ワーク配布ユニット２１０は、レディ信号をアサートしているコア２０８にタスクを指定し、レディ信号をアサートしているコア２０８がない場合には、ワーク配布ユニット２１０は、コア２０８によりレディ信号がアサートされるまで、新たな処理タスクを保持する。当業者であれば、他のアルゴリズムも使用できると共に、ワーク配布ユニット２１０が到来する処理タスクを配布する特定のやり方は、本発明にとって重要ではないことが明らかであろう。
【００１６】
[0023]コア２０８は、種々の外部メモリ装置を読み取ったりそこに書き込んだりするためにメモリインターフェイス２１４と通信する。一実施形態では、メモリインターフェイス２１４は、ローカルＰＰメモリ２０４と通信するためのインターフェイスと、ホストインターフェイスへの接続とを含み、これにより、コア２０８は、システムメモリ１０４、又はＰＰＵ２０２に対してローカルではない他のメモリと通信することができる。メモリインターフェイス２１４は、一般的に従来設計のものでよく、詳細な説明は、省く。
【００１７】
[0024]コア２０８は、これに限定されないが、直線的及び非直線的なデータ変換、ビデオ及び／又はオーディオデータのフィルタリング、モデリングオペレーション（例えば、物理の法則を適用して、オブジェクトの位置、速度及び他の属性を決定する）、映像レンダリングオペレーション（例えば、頂点シェーダー、幾何学的シェーダー及び／又はピクセルシェーダープログラム）、等を含む種々様々なアプリケーションに関する処理タスクを実行するようにプログラムすることができる。ＰＰＵ２０２は、システムメモリ１０４及び／又はローカルＰＰメモリ２０４からのデータを内部（オンチップ）メモリへ転送し、そのデータを処理し、そしてその結果データをシステムメモリ１０４及び／又はローカルＰＰメモリ２０４へ書き戻すことができ、このようなデータは、例えば、ＣＰＵ１０２又は別の並列処理サブシステム１１２を含む他のシステムコンポーネントによりアクセスすることができる。
【００１８】
[0025]再び、図１を参照すれば、ある実施形態において、並列処理サブシステム１１２内のＰＰＵ２０２は、その幾つか又は全部が、レンダリングパイプラインを伴うグラフィックプロセッサであって、ＣＰＵ１０２及び／又はシステムメモリ１０４によりメモリブリッジ１０５及びバス１１３を経て供給されたグラフィックデータからピクセルデータを発生し、ローカルＰＰメモリ２０４（例えば、従来のフレームバッファを含むグラフィックメモリとして使用できる）と相互作用してピクセルデータを記憶及び更新し、そのピクセルデータをディスプレイ装置１１０へ配送し、等々に関連した種々のタスクを遂行するように構成することができる。ある実施形態では、並列処理サブシステム１１２は、グラフィックプロセッサとして動作する１つ以上のＰＰＵ２０２、及び汎用の計算に使用される１つ以上の他のＰＰＵ２０２を含むことができる。ＰＰＵ２０２は、同じものでも異なるものでもよく、そして各ＰＰＵ２０２は、それ自身の専用のＰＰメモリ装置（１つ又は複数）を有してもよいし、専用のＰＰメモリ装置を有していなくてもよい。
【００１９】
[0026]動作に際して、ＣＰＵ１０２は、システム１００のマスタープロセッサであり、他のシステムコンポーネントのオペレーションを制御し整合させる。特に、ＣＰＵ１０２は、ＰＰＵ２０２のオペレーションを制御するコマンドを発行する。ある実施形態では、ＣＰＵ１０２は、各ＰＰＵ２０２のためのコマンドのストリームをプッシュバッファ（図１には明確に示さず）に書き込み、このプッシュバッファは、システムメモリ１０４や、ＰＰメモリ２０４や、或いはＣＰＵ１０２及びＰＰＵ２０２の両方にアクセス可能な別の記憶位置に配置することができる。ＰＰＵ２０２は、プッシュバッファからコマンドストリームを読み取り、そしてＣＰＵ１０２のオペレーションとは非同期でそれらコマンドを実行する。それ故、ＰＰＵ２０２は、ＣＰＵ１０２からの処理をオフロードし、システム１００の処理スループット及び／又は性能を高めるように構成することができる。
【００２０】
[0027]ここに示すシステムは、例示に過ぎず、変更や修正がなされ得ることが明らかであろう。ブリッジの数及び配列を含む接続トポロジーは、必要に応じて変更することができる。例えば、ある実施形態では、システムメモリ１０４は、ブリッジを経ずに、ＣＰＵ１０２へ直結され、他の装置は、メモリブリッジ１０５及びＣＰＵ１０２を経てシステムメモリ１０４と通信する。他の別のトポロジーでは、並列処理サブシステム１１２は、Ｉ／Ｏブリッジ１０７へ接続されるか、又はメモリブリッジ１０５ではなく、ＣＰＵ１０２へ直結される。更に別の実施形態では、Ｉ／Ｏブリッジ１０７及びメモリブリッジ１０５が１つのチップへ一体化されてもよい。ここに示す特定のコンポーネントは、任意のものであり、例えば、いかなる数のアドインカード又は周辺装置がサポートされてもよい。ある実施形態では、スイッチ１１６が除去され、ネットワークアダプタ１１８及びアドインカード１２０、１２１がＩ／Ｏブリッジ１０７に直結される。
【００２１】
[0028]ＰＰＵ２０２とシステム１００の残り部分との接続を変更することもできる。ある実施形態では、ＰＰシステム１１２は、システム１００の拡張スロットに挿入できるアドインカードとして実施される。他の実施形態では、ＰＰＵ２０２は、単一チップ上で、メモリブリッジ１０５又はＩ／Ｏブリッジ１０７のようなバスブリッジと一体化することができる。更に別の実施形態では、ＰＰＵ２０２の幾つかの又は全部のエレメントを単一チップ上でＣＰＵ１０２と一体化することができる。
【００２２】
[0029]ＰＰＵには、ローカルメモリを含まずに、任意の量のローカルＰＰメモリを設けることができ、そしてローカルメモリ及びシステムメモリを任意の組合せで使用することができる。例えば、ＰＰＵ２０２は、一体化メモリアーキテクチャー（ＵＭＡ）実施形態ではグラフィックプロセッサであり、このような実施形態では、専用のグラフィック（ＰＰ）メモリがほとんど又は全く設けられず、又、ＰＰＵ２０２は、システムメモリを排他的又はほぼ排他的に使用する。ＵＭＡ実施形態では、ＰＰＵ２０２は、ブリッジチップ又はプロセッサチップに一体化されてもよく、或いは例えば、ブリッジチップを経てＰＰＵをシステムメモリに接続する高速リンク（例えば、ＰＣＩ−Ｅ）を伴う個別のチップとして設けられてもよい。
【００２３】
[0030]上述したように、並列処理サブシステムには、任意の数のＰＰＵを含ませることもできる。例えば、複数のＰＰＵを単一のアドインカードに設けることもできるし、又は複数のアドインカードを通信経路１１３に接続することもできるし、或いは１つ以上のＰＰＵをブリッジチップに一体化することもできる。複数ＰＰＵシステムのＰＰＵは、互いに同じものでもよいし異なるものでもよく、例えば、異なるＰＰＵは、異なる数のコア、異なる量のローカルＰＰメモリ、等を有してもよい。複数のＰＰＵ２０２が存在する場合には、それらを並列に動作させて、単一ＰＰＵで可能なものより高いスループットでデータを処理することができる。１つ以上のＰＰＵ２０２を合体するシステムは、デスクトップ、ラップトップ又はハンドヘルドパーソナルコンピュータ、サーバー、ワークステーション、ゲームコンソール、埋め込まれたシステム、等々を含む種々の構成及びフォームファクタで実施することができる。
【００２４】
コアの概略
[0031]図３は、本発明の１つ以上の態様に基づく図２の並列処理サブシステム１１２のコア２０８のブロック図である。ＰＰＵ２０２は、非常に多数のスレッドを並列に実行するように構成されたコア２０８（又は複数コア２０８）を備え、ここで、「スレッド(thread)」という語は、コンテクストのインスタンス、即ち入力データの特定セットに対して実行される特定プログラムを指す。ある実施形態では、単一インストラクション複数データ（ＳＩＭＤ）のインストラクション発行技術を使用して、複数の独立したインストラクションユニットを設けずに、非常に多数のスレッドの並列実行がサポートされる。
【００２５】
[0032]一実施形態では、各コア２０８は、単一インストラクションユニット３１２からＳＩＭＴインストラクションを受け取るように構成されたＰ個（例えば、８個、１６個、等）の並列処理エンジン３０２のアレイを含む。各処理エンジン３０２は、機能的ユニット（例えば、演算論理ユニット、等）の同じセットを含むのが好都合である。機能的ユニットは、この技術で知られたように、手前のインストラクションが終了する前に新たなインストラクションを発行できるようなパイプライン型のものでよい。機能的ユニットの任意の組合せを設けることもできる。ある実施形態では、機能的ユニットは、整数及び浮動小数点演算（例えば、加算及び乗算）、比較演算、ブール演算（ＡＮＤ、ＯＲ、ＸＯＲ）、ビットシフト、及び種々の代数関数（例えば、平面補間、三角法、指数関数、及び対数関数、等）の組合せ、を含む種々のオペレーションをサポートし、そして同じ機能的ユニットハードウェアをレバレッジして、異なるオペレーションを遂行することができる。
【００２６】
[0033]各処理エンジン３０２は、ローカル入力データ、中間結果、等を記憶するためにローカルレジスタファイル（ＬＲＦ）３０４のスペースを使用する。一実施形態では、ローカルレジスタファイル３０４は、ある数のエントリーを各々有するＰ個のレーンに物理的又は論理的に分割される（各エントリーは、例えば、３２ビットワードを記憶する）。各処理エンジン３０２に１つのレーンが指定されると共に、異なるレーンの対応エントリーに、同じプログラムを実行する異なるスレッドに対するデータをポピュレートさせて、ＳＩＭＤ実行を容易にすることができる。ある実施形態では、各処理エンジン３０２は、それに指定されたレーンのＬＲＦエントリーにしかアクセスできない。ローカルレジスタファイル３０４におけるエントリーの全数は、処理エンジン３０２当たり複数の同時スレッドをサポートするに充分なほど大きいのが好都合である。
【００２７】
[0034]又、各処理エンジン３０２は、コア２０８内の全処理エンジン３０２間に共有されるオンチップ共有メモリ３０６へアクセスすることができる。共有メモリ３０６は、望ましい大きさのものでよく、ある実施形態では、いずれの処理エンジン３０２も、等しく低い待ち時間（例えば、ローカルレジスタファイル３０４へのアクセスに匹敵する）で、共有メモリ３０６内の任意の位置から読み取り又はそこに書き込むことができる。ある実施形態では、共有メモリ３０６は、共有レジスタファイルとして実施され、他の実施形態では、共有メモリ３０６は、共有キャッシュメモリを使用して実施することができる。
【００２８】
[0035]共有メモリ３０６に加えて、ある実施形態では、付加的なオンチップパラメータメモリ及び／又はキャッシュ（１つ又は複数）３０８も設けられ、これは、例えば、従来のＲＡＭ又はキャッシュとして実施されてもよい。パラメータメモリ／キャッシュ３０８は、例えば、複数のスレッドにより必要となることのある状態パラメータ及び／又は他のデータ（例えば、種々の定数）を保持するのに使用できる。又、処理エンジン３０２は、メモリインターフェイス２１４を経て、例えば、ＰＰメモリ２０４及び／又はシステムメモリ１０４を含むオフチップ「グローバル」メモリへアクセスすることができ、システムメモリ１０４には、ホストインターフェイス２０６を経てアクセスできる。ＰＰＵ２０２の外部の任意のメモリをグローバルメモリとして使用できることを理解されたい。
【００２９】
[0036]一実施形態では、各処理エンジン３０２は、マルチスレッド型であり、例えば、ローカルレジスタファイル３０４の指定レーンの異なる部分における各スレッドに関連した現在状態情報を維持することにより、ある数Ｇ（例えば、２４）までのスレッドを同時に実行することができる。処理エンジン３０２は、異なるスレッドからのインストラクションを効率のロスなく任意のシーケンスで発行できるように、あるスレッドから別のスレッドへ急速にスイッチするように設計されるのが好都合である。各スレッドは、異なるコンテクストに対応するので、各サイクルに異なるスレッドが発行されるときに複数のサイクルにわたって複数のコンテクストを処理することができる。
【００３０】
[0037]インストラクションユニット３１２は、所与の処理サイクルに対して、Ｐ個の処理エンジン３０２の各々へインストラクション（ＩＮＳＴＲ）が発行されるように構成される。各処理エンジン３０２は、複数のコンテクストが同時に処理されるときに所与の処理サイクルに対して異なるインストラクションを受け取ることができる。Ｐ個の処理エンジン３０２の全部が単一のコンテクストを処理するときに、コア２０８は、Ｐ路(P-way)ＳＩＭＤマイクロアーキテクチャーを実施する。又、各処理エンジン３０２がマルチスレッド型で、Ｇ個までのスレッドを同時にサポートするので、この実施形態のコア２０８は、Ｐ＊Ｇ個までのスレッドを同時に実行させることができる。例えば、Ｐ＝１６及びＧ＝２４の場合に、コア２０８は、単一のコンテクストに対して３８４個までの同時スレッドをサポートするか、或いはコンテクストに割り当てられる処理エンジン３０２の数をＮとすれば、各コンテクストに対してＮ＊２４個の同時スレッドをサポートする。
【００３１】
[0038]コア２０８のオペレーションは、ワーク配布ユニット２００を経て制御されるのが好都合である。ある実施形態では、ワーク配布ユニット２００は、処理されるべきデータ（例えば、プリミティブデータ、頂点データ、及び／又はピクセルデータ）に対するポインタと、データをどのように処理するか（例えば、どんなプログラムを実行すべきか）を定義するデータ又はインストラクションを含むプッシュバッファの位置とを受け取る。ワーク配布ユニット２１０は、処理されるべきデータを共有メモリ３０６へロードすると共に、パラメータをパラメータメモリ３０８へロードすることができる。又、ワーク配布ユニット２１０は、インストラクションユニット３１２における各新たなコンテクストを初期化し、次いで、コンテクストの実行を開始するようにインストラクションユニット３１２に通知する。インストラクションユニット３１２は、インストラクションプッシュバッファを読み取り、そしてインストラクションを実行して、処理されたデータを発生する。コンテクストの実行が完了すると、コア２０８は、ワーク配布ユニット２１０に通知するのが好都合である。次いで、ワーク配布ユニット２１０は、他のプロセスを開始し、例えば、共有メモリ３０６から出力データを検索し、及び／又は付加的なコンテクストの実行に対してコア２０８を準備することができる。
【００３２】
[0039]ここに述べる並列処理ユニット及びコアアーキテクチャーは、例示に過ぎず、その変更や修正が考えられることが明らかである。又、いかなる数の処理エンジンが含まれてもよい。ある実施形態では、各処理エンジン３０２は、それ自身のローカルレジスタファイルを有し、スレッド当たりのローカルレジスタファイルエントリーの割り当ては、固定もできるし、又は希望の通りに構成もできる。特に、ローカルレジスタファイル３０４のエントリーは、各コンテクストを処理するために割り当てられてもよい。更に、１つのコア２０８しか示されていないが、ＰＰＵ２０２は、いかなる数のコア２０８を含んでもよく、それらコアは、互いに同じ設計のものであって、実行の振舞いが、どのコア２０８が特定の処理タスクを受け取るかに依存しないようにするのが好都合である。各コア２０８は、他のコア２０８とは独立して動作すると共に、それ自身の処理エンジン、共有メモリ、等を有するのが好都合である。
【００３３】
グラフィックパイプラインアーキテクチャー
[0040]図４は、本発明の１つ以上の態様に基づくグラフィック処理パイプライン４００の概念図である。ＰＰＵ２０２は、グラフィック処理パイプライン４００を形成するように構成できる。例えば、コア２０８は、頂点処理ユニット４４４、幾何学的処理ユニット４４８、及び断片処理ユニット４６０のうちの１つ以上の機能を遂行するように構成できる。データアッセンブラー４４２、プリミティブアッセンブラー４４６、ラスタライザー４５５及びラスタオペレーションユニット４６５の機能も、コア２０８により遂行することができる。或いは又、グラフィック処理パイプライン４０は、頂点処理ユニット４４４、幾何学的処理ユニット４４８、断片処理ユニット４６０、データアッセンブラー４４２、プリミティブアッセンブラー４４６、ラスタライザー４５５、及びラスタオペレーションユニット４６５のうちの１つ以上に対して専用の処理ユニットを使用して実施することができる。
【００３４】
[0041]データアッセンブラー４４２は、高次表面、プリミティブ、等に対する頂点データを収集し、そしてその頂点データを頂点処理ユニット４４４へ出力する処理ユニットである。頂点処理ユニット４４４は、頂点シェーダープログラムを実行して、頂点シェーダープログラムにより指定されるように頂点データを変換するように構成されたプログラム可能な実行ユニットである。例えば、頂点処理ユニット４４４は、頂点データを、オブジェクトベースの座標表現（オブジェクトスペース）から、それとは別のものをベースとする座標システム、例えば、ワールドスペース又は正規化された装置座標（ＮＤＣ）スペースへと変換するようにプログラムすることができる。頂点処理ユニット４４４は、ＰＰメモリ２０４又はシステムメモリ１０４に記憶されたデータを、頂点データの処理に使用するために読み取ることができる。
【００３５】
[0042]プリミティブアッセンブラー４４６は、頂点処理ユニット４４４から処理された頂点データを受け取り、そしてグラフィックプリミティブ、例えば、点、線、三角形、等を、幾何学的処理ユニット４４８により処理するために構成する。幾何学的処理ユニット４４８は、幾何学的シェーダープログラムを実行して、幾何学的シェーダープログラムにより指定されるようにプリミティブアッセンブラー４４６から受け取ったグラフィックプリミティブを変換するように構成されたプログラム可能な実行ユニットである。例えば、幾何学的処理ユニット４４８は、グラフィックプリミティブを１つ以上の新たなグラフィックプリミティブへ細分化し、そしてその新たなグラフィックプリミティブをラスタ化するのに使用される平面方程式係数のようなパラメータを計算する。本発明のある実施形態では、幾何学的処理ユニット４４８は、幾何学的システムにおけるエレメントを追加又は削除することもできる。幾何学的処理ユニット４４８は、新たなグラフィックプリミティブを指定するパラメータ及び頂点をラスタライザー４５５又はメモリインターフェイス２１４へ出力する。幾何学的処理ユニット４４８は、ＰＰメモリ２０４又はシステムメモリ１０４に記憶されたデータを、幾何学的データの処理に使用するために読み取ることができる。
【００３６】
[0043]ラスタライザー４５５は、新たなグラフィックプリミティブをスキャン変換し、断片及びカバレージデータを断片処理ユニット２６０へ出力する。アンチエイリアシングを使用して、映像データを発生するときには、ラスタライザー４５５は、サブピクセルサンプルカバレージデータを発生するように構成される。ハイブリッドアンチエイリアシングを使用するときに、ラスタライザー４５５内に存在するハイブリッドアンチエイリアス制御ユニット５００は、図５Ｃ及び６を参照して説明するように、各プリミティブを処理するのに使用される断片処理ユニット４６０を通してパスの数を決定するように構成される。
【００３７】
[0044]断片処理ユニット４６０は、断片シェーダープログラムを実行して、ラスタライザー４５５から受け取った断片を、その断片シェーダープログラムにより指定されたように変換するよう構成されたプログラム可能な実行ユニットである。例えば、断片処理ユニット４６０は、パースペクティブの修正、テクスチャマッピング、シェーディング、ブレンディング、等のオペレーションを遂行して、シェーディングされた断片を発生するようにプログラムされ、それら断片は、ラスタオペレーションユニット４６５へ出力される。断片処理ユニット４６０は、ＰＰメモリ２０４又はシステムメモリ１０４に記憶されたデータを、断片データの処理に使用するために読み取ることができる。断片は、ハイブリッドアンチエイリアス制御ユニットにより選択されたサンプリングレートに基づいて、ピクセル、サンプル、又はスーパーサンプルクラスターの粒度でシェーディングすることができる。
【００３８】
[0045]メモリインターフェイス２１４は、グラフィックメモリに記憶されたデータに対する読み取り要求を発生し、そしてバイリニア、トリリニア、非等方性、等のテクスチャフィルタリングオペレーションを遂行する。本発明のある実施形態では、メモリインターフェイス２１４は、データを解凍するように構成できる。特に、メモリインターフェイス２１４は、ＤＸＴフォーマットで表現された圧縮データのような固定長さブロックエンコードデータを解凍するように構成できる。ラスタオペレーションユニット４６５は、ステンシル、ｚテスト、等のラスタオペレーションを遂行して、ピクセルデータを、処理されたグラフィックデータとしてグラフィックメモリに記憶するために出力する処理ユニットである。処理されたグラフィックデータは、ディスプレイ装置１１０に表示するか、或いはＣＰＵ１０２又は並列処理サブシステム１１２によって更に処理するために、グラフィックメモリ、例えば、ＰＰメモリ２０４及び／又はシステムメモリ１０４に記憶される。本発明のある実施形態では、ラスタオペレーションユニット４６５は、メモリに書き込まれるｚ又はカラーデータを圧縮すると共に、メモリから読み取られたｚ又はカラーデータを解凍するように構成される。
【００３９】
ハイブリッドアンチエイリアシング
[0046]上述したように、ＰＰＵ２０２は、種々のサンプリングレートでシェーディングを遂行して、映像クオリティを改善するか又はシェーディング性能を改善するように構成することができる。ハイブリッドアンチエイリアス制御ユニットは、プリミティブ内の各ピクセルをシェーディングするのに使用されるシェーダーパスの数を決定する。ピクセル当たり１つ以上のマルチサンプル（サブピクセルサンプル）のスーパーサンプルクラスターが、各パスに対して断片処理ユニット４６０として構成されたコア２０８により処理されて、シェーディングされた単一のカラー値を発生し、これが、スーパーサンプルクラスターにおける全てのマルチサンプルに対して複写される。シーンがレンダリングされた後に、スーパーサンプルクラスターのサンプルが、アンチエイリアスされた映像を発生するように合成される。
【００４０】
[0047]各プリミティブに対するサブピクセルサンプル及びシェーダーパスの数は、映像クオリティを改善するように増加される。サブピクセルサンプルの数は、アプリケーションが起動されたときに決定され、レンダーターゲット（映像バッファ）の各ピクセルに対して一貫したものである。ハイブリッドアンチエイリアス制御ユニットは、レンダリング状態、例えば、アルファテストイネーブル／ディスエイブル、テクスチャマップコンテンツ、ユーザ付与クオリティ／性能制御、等に基づいて、シェーディングパスの数をダイナミックに決定することができる。
【００４１】
[0048]図５Ａは、本発明の１つ以上の態様に基づくピクセル５０１内のスーパーサンプルクラスター５０３及び５１１並びにマルチサンプル５０２、５０４及び５１３を示す。８サブピクセルサンプルのアンチエイリアシングが使用されるときには、マルチサンプル及びスーパーサンプルクラスターの種々の異なる組み合わせを使用して、８個のサブピクセルサンプルを発生することができる。図５Ａに示す例では、３つのスーパーサンプルクラスター５０３及びスーパーサンプルクラスター５１１は、各々、ピクセル５０１の全部で８つのサブピクセルサンプル位置に対して、スーパーサンプルクラスター５１１のマルチサンプル５０２及び５０４のような２つのマルチサンプルを含む。他の８サブピクセルサンプル構成は、１つのマルチサンプルを各々伴う８つ程度のスーパーサンプルクラスターを含むか、又は８つのマルチサンプルを伴う１つ程度のスーパーサンプルクラスターを含む。シェーディングは、スーパーサンプルクラスターごとに一度遂行され、そのシェード値、例えば、カラーが、スーパーサンプルクラスター内の全てのマルチサンプルに対して記憶される。
【００４２】
[0049]シェーダー属性は、スーパーサンプルクラスターにおける特定のマルチサンプルの位置においてサンプリングされてもよいし、或いはスーパーサンプルクラスター内又はその付近の他の位置でサンプリングされてもよい。例えば、図５Ａでは、断片属性（カラー、テクスチャ座標、等）が、スーパーサンプルクラスター５１１内のマルチサンプル５０２のような内実のマルチサンプル位置においてサンプリングされる。更に、断片がスーパーサンプルクラスターを一部分しかカバーしないときには、属性がサンプリングされる位置を、スーパーサンプルクラスター内のカバーされたマルチサンプルの領域内に存在するように調整するのが好都合である。これは、セントロイドサンプリングとして通常知られているが、この用語は、ここでは、全ピクセル断片ではなく、スーパーサンプルクラスターに適用される。
【００４３】
[0050]図５Ｂは、本発明の１つ以上の態様に基づくスーパーサンプルクラスター５１１内の断片５０９及びセントロイド位置５１７を示す。本発明のある実施形態では、属性が評価される位置を、断片により実際にカバーされるスクリーンエリアに良く対応するように変更するために、セントロイドサンプリングが使用される。本発明のある実施形態では、サンプル補間ユニット５１０は、特定のマルチサンプル位置又は近似セントロイド位置で各スーパーサンプルクラスターをサンプリングするように構成できる。
【００４４】
[0051]セントロイドは、カバーされたマルチサンプルの幾何学的セントロイドでもよいし、又は例えば、完全にカバーされたスーパーサンプルクラスターのセントロイドに最も近いスーパーサンプルクラスター内のカバーされたマルチサンプルを選択することにより近似されてもよい。例えば、セントロイド位置５１７は、マルチサンプル５０２の位置が断片５０９の中心付近ではなく縁付近にあるので、スーパーサンプルクラスター５１１に対するサンプルされたカラーを表すのに使用されるスーパーサンプルクラスター５１１の幾何学的中心において計算されたマルチサンプル位置である。マルチサンプル５０２と比較される断片カラーをより正確に表すためにセントロイド位置５１７においてシェード値が計算される。
【００４５】
[0052]図５Ｃは、本発明の１つ以上の態様に基づく、ラスタライザー４５５、断片処理ユニット４６０、及びラスタオペレーションユニット４６５を含むグラフィック処理パイプライン４００の一部分のブロック図である。ラスタライザー４５５、断片処理ユニット４６０、及びラスタオペレーションユニット４６５内には、他の処理ユニットが含まれてもよい。これら他の処理ユニットは、一般的な従来設計のものであるので、図５Ｃには示されておらず、本発明にとって重要ではないので、詳細な説明は省略する。
【００４６】
[0053]ラスタライザー４５５は、幾何学的処理ユニット４４８からプリミティブを受け取り、そのプリミティブが交差するピクセルごとに断片を発生する。ハイブリッドアンチエイリアス制御ユニット５００（任意であるがラスタライザー４５５内にある）は、レンダリング状態、例えば、アルファテストイネーブル／ディスエイブル、テクスチャマップコンテンツ、ユーザ付与クオリティ／性能制御、等に基づいて、各プリミティブの断片を処理するのに使用されるシェーダーパスの数をダイナミックに決定するよう構成できる。
【００４７】
[0054]ハイブリッドアンチエイリアス制御ユニット５００は、より高いシェーディングレートから利益を得るプリミティブに対してより多くのシェーディングパスを遂行しそして他のプリミティブに対してシェーディングレートを減少することによりアンチエイリアシング効率を改善する。ハイブリッドアンチエイリアス制御ユニット５００は、種々のクオリティ設定で動作するように、ユーザ、アプリケーション、又は装置ドライバ１０３により構成することができる。これらは、最低のクオリティ設定「マルチサンプル−常時」から最高のクオリティ設定「スーパーサンプル−常時」までの範囲である。中間クオリティ設定は、シェーディングパスの数を決定する際にレンダーパイプライン状態を考慮することができる。例えば、アルファテスト又はシェーダーピクセルキルがイネーブルされる場合には、より多くのシェーディングパスが望まれる。逆に、高い性能が指定されるときには、アルファテスト及びシェーダーピクセルキルがディスエイブルされ、ハイブリッドアンチエイリアス制御ユニット５００によりサンプリングレートを下げることができる。又、ハイブリッドアンチエイリアス制御ユニット５００は、シェーディングパスの数を決定する際に、ピクセルシェーダー又はテクスチャサンプラー設定の特性も考慮することができる。当業者であれば、シェーディングパスの数を決定するためにハイブリッドアンチエイリアス制御ユニット５００によって種々様々な基準を使用できることが明らかであろう。従来のグラフィックシステムでは、ユーザ付与設定又は固定の設定に基づいてシーン内の全てのプリミティブに対してサンプリングレートが決定される。更に、従来のシステムに対するサンプリングは、マルチサンプリング又はスーパーサンプリングに制限され、中間の代替物はない。
【００４８】
[0055]一実施形態では、ラスタライザー４５５は、２ｘ２クオドのピクセル断片を発生し、これらは、ハイブリッドアンチエイリアス繰り返しユニット５１５によって受け取られる。ハイブリッドアンチエイリアス制御ユニット５００がパス＝１にセットすると（即ち、マルチサンプリングのとき）、ハイブリッドアンチエイリアス繰り返しユニット５１５は、これらのクオドを変更せずに断片処理ユニット４６０へ通す。しかしながら、ハイブリッドアンチエイリアス制御ユニット５００がパスをＮ＞１にセットすると、ハイブリッドアンチエイリアス繰り返しユニット５１５は、シェーダーパスに対応するパス数を含めて、複数回、各クオドを断片処理ユニット４６０へ出力する。ハイブリッドアンチエイリアス繰り返しユニット５１５は、断片処理ユニット４６０へ送られるカバレージをマスクし、現在パスに対応するスーパーサンプルクラスター内のマルチサンプルしかイネーブルされないようにする。他の実施形態では、断片処理ユニット４６０は、ハイブリッドアンチエイリアス繰り返しユニット５１５によりそれに与えられるパス数に基づいてカバレージをマスクすることができる。他の実施形態は、２ｘ２断片クオド以外の領域、例えば、単一ピクセル、４ｘ４断片タイル、等にわたって繰り返せることに注意されたい。プリミティブではなくピクセル（クオド）の領域にわたる繰り返しが効果的である。というのは、テクスチャマップデータは、特定のクオドに対するその後のシェーダーパスに対して再使用し易いが、それより大きいプリミティブにわたる繰り返しは、例えば、ＰＰメモリ２０４又はシステムメモリ１０４のようなメモリからテクスチャデータを再フェッチさせることができるからである。
【００４９】
[0056]重要なことに、断片を発生するために必要とされる幾何学的計算は、シェーダーパスごとに繰り返されない。対照的に、マルチサンプルバッファへのスーパーサンプルに対してサンプルマスクを使用する従来のシステムは、典型的に、シェーダーパスごとに、幾何学的計算を繰り返す。断片処理ユニット４６０においてサンプルされるプリミティブ属性は、ハイブリッドアンチエイリアシングパスの数に関わらず、一度計算されるだけでよいことに注意されたい。というのは、それらは、その後に繰り返されるクオドによって参照され、次いで、破棄することができるからである。
【００５０】
[0057]断片処理ユニット４６０におけるサンプルルックアップテーブルは、ハイブリッドアンチエイリアシングパラメータ及びパス数を使用して、補間された断片パラメータがサンプルされる場所を決定する。サンプルルックアップテーブル５０５は、各スーパーサンプルクラスターに対してセントロイド位置又はマルチサンプル位置を選択することができる。マルチサンプル位置は、サンプル補間ユニット５１０へ出力され、この補間ユニットは、スーパーサンプルクラスターごとに、即ちピクセルクオド内の各ピクセルに対する１セットの補間パラメータごとに、１つ以上の補間パラメータ、例えば、カラーチャンネル（赤、緑、青、アルファ）、テクスチャ座標、等を計算する。シェーダー５２０は、当業者に知られた技術を使用して、ピクセルクオド内の各ピクセルに対する補間パラメータのセットを処理し、断片シェーダープログラム、等を実行して、スーパーサンプルクラスターごとに、シェードピクセル値、例えば、カラーを発生する。
【００５１】
[0058]シェーディング中に、各スーパーサンプルクラスターに対するサブピクセルサンプルを、アルファテスト又はシェーダーピクセルキルの結果として排除（選別又は除外）し、ピクセルキル又はアルファテスト結果に基づいて後シェーダーカバレージを発生するようにラスタ発生カバレージを変更することができる。スーパーサンプルクラスターは、シェーダー５２０を通して個別のパスにおいて処理されるので、スーパーサンプルクラスターは、アルファテスティング中に個々に排除することができる。対照的に、従来のマルチサンプリングを使用して、単一シェーディングパスにおける全てのサブピクセルサンプルを処理するときには、全てのサブピクセルサンプルが保持されるか又は排除され、粗いアルファテスティング粒度を生じて、クオリティの低い映像を発生することになる。
【００５２】
[0059]シェーダー５２０は、シェードピクセル値及びサブピクセルカバレージ（おそらくラスタライザー４５５により与えられるカバレージに比して変更されている）をカラーバッファ５３５及びカバレージ総計器５３０へ各々出力する。カバレージ総計器５３０は、シェーダーパスごとに後シェーダーカバレージを累積して、ピクセルごとに集計されたカバレージ情報を発生する。カラーバッファ５３５は、ピクセルごとにシェード値を累積する。最後のシェーダーパスに対するシェード値が受け取られると、集計カバレージ情報がラスタオペレーションユニット４６５へ出力される。ピクセルクオドに対するシェード値は、集計カバレージ情報と共に出力されてもよいし、又は後で、例えば、ラスタオペレーションユニット６４５によりｚテストが完了した後に、出力されてもよい。本発明の他の実施形態では、カバレージ総計器５３０及びカラーバッファ５３５を省略してもよい。
【００５３】
[0060]カバレージを集計しそしてカラー値をカバーバッファへ合体することは、１つのメモリトランザクションを使用して複数のサンプルを書き込んだり読み取ったりできるように、各ピクセルのサンプルを一緒にメモリにパックするシステムでは、好都合である。他の実施形態では、カバレージ総計器５３０を省略してもよい。カバレージ総計器５３０は、ピクセルのためのサンプル値をメモリに隣接して記憶しないシステムでは、あまり好都合ではない。
【００５４】
[0061]ラスタオペレーションユニット４６５内の任意のｚ／カラー圧縮ユニット５５０は、集計されたカバレージ情報及びｚ値又はｚの別の表現或いは（ｚテストに続く）断片の深さ値を受け取り、ピクセルの領域に対する圧縮ｚ値を発生する。又、ｚ／カラー圧縮ユニット５５０は、断片に対する集計カラー値も受け取り、ピクセルの領域に対する圧縮カラー値を発生する。圧縮は、ピクセルのより大きなグループに適用されたときに改善することができる。それ故、結果を圧縮する前に、多数のピクセルクオドを一緒に集計して、ｚテストすることができる。重要なことに、ハイブリッドアンチエイリアシングは、ｚ圧縮の有効性を除外も減少もしない。ｚ圧縮は、ｚバッファにアクセスするためのメモリ帯域巾要件、及びある実施形態では、メモリ占有面積も減少するように、効果的に使用される。
【００５５】
[0062]図６は、本発明の１つ以上の態様に基づくハイブリッドアンチエイリアシングを遂行するための方法ステップのフローチャートである。ステップ６１０において、ハイブリッドアンチエイリアス制御ユニット５００は、プリミティブを受け取る。ステップ６１５において、ハイブリッドアンチエイリアス制御ユニット５００は、ハイブリッドアンチエイリアシングがイネーブルされたかどうか決定し、もしそうでなければ、従来のアンチエイリアシングを使用して断片が処理される。ステップ６１５において、ハイブリッドアンチエイリアシングがイネーブルされた場合には、次いで、ステップ６３５において、ハイブリッドアンチエイリアス制御ユニット５００は、プリミティブに対するハイブリッドアンチエイリアスパラメータを決定する。より詳細には、ハイブリッドアンチエイリアス制御ユニット５００は、プリミティブが交差する各ピクセルをシェーディングするときに使用されるべきスーパーサンプルクラスター（シェーダーパス）の数を決定する。
【００５６】
[0063]ステップ６４０において、ラスタライザー４５５は、プリミティブのカバーされた部分に対してサンプルレベルカバレージを発生する。このカバレージの粒度は、粗いか又は微細であるが、少なくとも、ピクセルクオドのサイズである。ラスタライザー４５５は、プリミティブに交差するクオドに対するカバレージ情報をハイブリッドアンチエイリアス繰り返しユニット５１５へ出力する。ハイブリッドアンチエイリアス繰り返しユニット５１５は、複数のパスでクオドをシェーディングするためにハイブリッドアンチエイリアスパラメータに基づいて各クオドを拡張する。ハイブリッドアンチエイリアス繰り返しユニット５１５は、カバレージ情報に基づいて、スーパーサンプルクラスターの全てのマルチサンプルがカバーされないときにシェーダーパスをスキップするように構成される。ステップ６４３において、ハイブリッドアンチエイリアス繰り返しユニット５１５は、パス番号（第１、第２、等）を決定し、ピクセルクオド及びパス番号を断片処理ユニット４６０へ出力する。上述したように、パスの数が１より多いときには、ハイブリッドアンチエイリアス繰り返しユニット５１５は、カバレージ情報にマスクすることができる。サンプルルックアップテーブル５０５は、断片パラメータを補間するのに使用されるスーパーサンプルクラスター内の場所の指示を含めて、マルチサンプル位置に対するプログラム値を読み取るためにパス番号及びマルチサンプルの数を使用してインデックスされる。補間されるパラメータは、サンプル補間ユニット５１０によりスーパーサンプルクラスターに対して計算される。
【００５７】
[0064]ステップ６４５において、断片処理ユニット４６０は、ピクセルクオドをシェーディングし、各スーパーサンプルクラスターに対するシェード値、即ちピクセルクオドの各ピクセルに対する１つのシェード値を発生する。スーパーサンプルクラスター内で、シェード値は、プリミティブによりカバーされるマルチサンプルごとに使用される。又、断片処理ユニット４６０は、ピクセルクオドに対する後シェーダーカバレージも出力する。この後シェーダーカバレージは、ラスタ化されたピクセルカバレージ情報とは異なってもよい。というのは、上述したように、シェーディング中にマルチサンプルが排除され得るからである。
【００５８】
[0065]ステップ６５０において、ハイブリッドアンチエイリアス繰り返しユニット５１５は、別のシェーダーパスを使用してピクセルクオドを処理するかどうか決定し、もしそうであれば、別のシェーダーパス（第２、第４、等）に対してステップ６４３及び６４５が繰り返される。ステップ６５０において、ピクセルクオドを処理するために別のシェーダーパスが必要とされないことをハイブリッドアンチエイリアス繰り返しユニット５１５が決定した場合には、ステップ６６０において、カバレージ集計器５３０がシェーダーパスの各々に対して後シェーダーカバレージを合成して、ピクセルクオドに対する集計したカバレージ情報を発生する。又、ステップ６６０において、カバレージ集計器５３０は、シェーダーパスの各々に対して後シェーダーカラー値を合成して、ピクセルクオドに対する集計したカラー値を発生することもできる。カバレージ集計器５３０は、マルチクオドレベルにおいて後シェーダーカラー及びカバレージ情報を集計するように構成することができる。ステップ６６５において、ラスタオペレーションユニット４６５は、ラスタオペレーションを遂行して、どのシェード値がフレームバッファに書き込まれるか決定する。ラスタオペレーションは、クオド又はマルチクオドレベルにおいて行うことができる。ラスタオペレーションユニット４６５内のｚ／カラー圧縮ユニット５５０は、ｚ及び／又はカラーデータがｚバッファ及び／又はカラーバッファに記憶される前にピクセルクオドに対してｚ及び／又はカラーデータを圧縮するのに使用できる。
【００５９】
[0066]ステップ６７０において、ラスタライザー４５５は、別のピクセルクオドがプリミティブに交差するかどうか決定し、もしそうであれば、次いで、ステップ６４０において、ラスタライザー４５５は、プリミティブによりカバーされる異なるピクセルクオドを処理する。ステップ６７０において、プリミティブにより交差される全てのピクセルクオドがシェーディングされたとラスタライザー４５５が決定した場合には、ステップ６７５において、プリミティブの処理が完了となる。パイプラインシステムでは、図６に示すステップの１つ以上を、異なるクオドに対して並列に遂行することができる。
【００６０】
[0067]ハイブリッドアンチエイリアス制御ユニット５００は、各プリミティブのハイブリッドアンチエイリアスパラメータ、例えば、ピクセル当たりのスーパーサンプルクラスターの数を、レンダリング状態、例えば、アルファテストイネーブル／ディスエイブル、テクスチャマップコンテンツ、ユーザ付与クオリティ／性能制御、等に基づいてダイナミックに決定することができる。レンダリング状態に基づいてアンチエイリアシングを適応させることで、効率が改善される。というのは、クオリティの高いアンチエイリアシングから利益を得るプリミティブは、より多くのサンプルでシェーディングされ、他のプリミティブは、より少ないサンプルでシェーディングされ、映像のクオリティ及び性能を最適化するからである。
【００６１】
[0068]本発明は、特定の実施形態を参照して上述された。しかしながら、当業者であれば、特許請求の範囲に述べた本発明の広い精神及び範囲から逸脱せずに種々の変更や交換がなされ得ることが理解されよう。本発明の一実施形態は、コンピュータシステムに使用するためのプログラム製品として実施することができる。プログラム製品のプログラム（１つ又は複数）は、（ここに述べる方法を含む）実施形態の機能を定義し、そして様々なコンピュータ読み取り可能な記憶媒体に収容することができる。ここに例示するコンピュータ読み取り可能な記憶媒体は、（ｉ）情報が永久的に記憶される書き込み不能の記憶媒体（例えば、コンピュータ内のリードオンリメモリ装置、例えば、ＣＤ−ＲＯＭドライブにより読み取り可能なＣＤ−ＲＯＭディスク、フラッシュメモリ、ＲＯＭチップ、又は任意の形式のソリッドステート不揮発性半導体メモリ）、及び（ii）変更可能な情報が記憶される書き込み可能な記憶媒体（例えば、ディスケットドライブ又はハードディスクドライブ内のフロッピーディスク、又は任意の形式のソリッドステートランダムアクセス半導体メモリ）を含むが、これらに限定されない。従って、以上の説明及び添付図面は、例示のためのものであって、それに限定されるものではない。
【符号の説明】
【００６２】
１００・・・コンピュータシステム、１０２・・・中央処理ユニット(ＣＰＵ)、１０４・・・システムメモリ、１０５・・・メモリブリッジ、１０６・・・通信経路、１０７・・・Ｉ／Ｏブリッジ、１０８・・・ユーザ入力装置、１１０・・・ディスプレイ装置、１１２・・・並列処理サブシステム、１１３・・・通信経路、１１４・・・システムディスク、１１６・・・スイッチ、１１８・・・ネットワークアダプタ、１２０・・・アドインカード、１２１・・・アドインカード、２０２・・・並列処理ユニット(ＰＰＵ)、２０４・・・ＰＰメモリ、２０６・・・ホストインターフェイス、２０８・・・コア、２１０・・・ワーク配布ユニット、２１２・・・フロントエンド、２１４・・・メモリインターフェイス、３０２・・・処理エンジン、３０４・・・ローカルレジスタファイル、３０６・・・共有メモリ、３０８・・・パラメータメモリ、３１２・・・インストラクションユニット、４００・・・グラフィック処理パイプライン、４４２・・・データアッセンブラー、４４４・・・頂点処理ユニット、４４６・・・プリミティブアッセンブラー、４４８・・・幾何学的処理ユニット、４５５・・・ラスタライザー、４６０・・・断片処理ユニット、４６５・・・ラスタオペレーションユニット、５００・・・ハイブリッドアンチエイリアス制御ユニット、５０１・・・ピクセル、５０２・・・マルチサンプル、５０３・・・スーパーサンプルクラスター、５０４・・・マルチサンプル、５０５・・・サンプルルックアップテーブル、５０９・・・断片、５１０・・・サンプル補間ユニット、５１１・・・スーパーサンプルクラスター、５１３・・・マルチサンプル、５１５・・・ハイブリッドアンチエイリアス繰り返しユニット、５１７・・・セントロイド位置、５２０・・・シェーダー、５３０・・・カバレージ集計器、５３５・・・カラーバッファ、５５０・・・カラー／Ｚ圧縮ユニット
【図１】
2010020764.tif 000003
【図２】
2010020764.tif 000004
【図３】
2010020764.tif 000005
【図４】
2010020764.tif 000006
【図５Ａ】
2010020764.tif 000007
【図５Ｂ】
2010020764.tif 000008
【図５Ｃ】
2010020764.tif 000009
【図６】
2010020764.tif 000010
【外国語明細書】
2010020764000001.pdf