(57)【特許請求の範囲】
【請求項１】
グラフィックスレンダリングシステムでアルファテストを実行する方法であって、1つまたは複数のフラグメントのアルファテストを、
当該の前記1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントの個々のアルファ値を生成するステップと、
サンプリングポイントごとに個別に、前記サンプリングポイントについて生成された前記個々のアルファ値を使用して、アルファテストを実行するステップと
によって実行するステップを含む方法。
【請求項２】
個々のアルファ値がそれについて生成される前記サンプリングポイントが、ラスタ化ステージでプリミティブのカバレッジを判定するのに使用されるサンプリングポイントに対応する、請求項1に記載の方法。
【請求項３】
前記サンプリングポイントが、複数のフラグメントのグループに関するものである、請求項1または請求項2に記載の方法。
【請求項４】
表示されるイメージのグラフィックスプリミティブを処理する方法であって、
表示のために前記プリミティブをレンダリングするためにグラフィックスフラグメントのセットを生成するステップと、
各レンダリングされるグラフィックスフラグメントのレンダリングされたフラグメントデータのセットを判定するために前記プリミティブについて生成されたグラフィックスフラグメントをレンダリングするステップと、
前記レンダリングプロセスの一部として1つまたは複数のフラグメントに関してアルファテストを実行するステップと
を含み、前記アルファテストが、
当該の前記1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントの個々のアルファ値を生成するステップと、
アルファ値がそれのために生成されたサンプリングポイントごとに個別に、前記サンプリングポイントについて生成された前記個々のアルファ値を使用してアルファテストを実行するステップと
によって実行される、方法。
【請求項５】
当該の前記フラグメントに関連するアルファ値から各サンプリングポイントでの前記アルファ値を推定することによって前記サンプリングポイントについて前記個々のアルファ値を生成するステップを含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
当該の前記フラグメントについて定義されたアルファ値と当該の前記フラグメントの1つまたは複数の隣接するフラグメントについて定義された1つまたは複数の前記アルファ値とを使用して前記サンプリングポイントについて前記アルファ値を生成するステップを含む、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記アルファテストが、前記サンプリングポイントを破棄するかどうかを判断するのに使用される、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記フラグメントがどのサンプリングポイントをレンダリングするのに使用されているのかを示すデータを各フラグメントに関連付けるステップと、前記アルファテストの結果として破棄されるサンプル位置を示すようにこのデータを変更するのに前記アルファテスト結果を使用するステップとを含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
アルファテストによって導入されるエッジが当該の前記1つまたは複数のフラグメントを通過し得るかどうかを査定するために個々のサンプル位置に対する前記アルファテストを使用するステップを含む、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
グラフィックスレンダリングシステムでアルファテストを実行するシステムであって、  アルファテストを受けるフラグメントまたはフラグメントのグループの1つまたは複数のサンプリングポイントの個々のアルファ値を生成する手段と、
サンプリングポイントごとに個別に、前記サンプリングポイントについて生成された前記個々のアルファ値を使用して、アルファテストを実行する手段と
を含むシステム。
【請求項１１】
個々のアルファ値がそれについて生成される前記サンプリングポイントが、ラスタ化ステージでプリミティブのカバレッジを判定するのに使用されるサンプリングポイントに対応する、請求項10に記載のシステム。
【請求項１２】
前記サンプリングポイントが、複数のフラグメントのグループに関するものである、請
求項10または請求項11に記載のシステム。
【請求項１３】
表示されるイメージのグラフィックスプリミティブを処理するシステムであって、
表示のために前記プリミティブをレンダリングするためにグラフィックスフラグメントのセットを生成する手段と、
各レンダリングされるグラフィックスフラグメントのレンダリングされたフラグメントデータのセットを判定するために前記プリミティブについて生成されたグラフィックスフラグメントをレンダリングする手段と、
前記レンダリングプロセスの一部として1つまたは複数のフラグメントに関してアルファテストを実行する手段と
を含み、前記アルファテストを実行する前記手段が、
当該の前記1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントの個々のアルファ値を生成する手段と、
サンプリングポイントごとに個別に、前記サンプリングポイントについて生成された前記個々のアルファ値を使用してアルファテストを実行する手段と
を含む、システム。
【請求項１４】
当該の前記フラグメントに関連するアルファ値から各サンプリングポイントでの前記アルファ値を推定することによって前記サンプリングポイントについて前記個々のアルファ値を生成する手段を含む、請求項10から13のいずれか一項に記載のシステム。
【請求項１５】
当該の前記フラグメントについて定義されたアルファ値と当該の前記フラグメントの1つまたは複数の隣接するフラグメントについて定義された1つまたは複数の前記アルファ値とを使用して前記サンプリングポイントについて前記アルファ値を生成する手段を含む、請求項10から14のいずれか一項に記載のシステム。
【請求項１６】
前記アルファテストが、前記サンプリングポイントを破棄するかどうかを判断するのに使用される、請求項10から15のいずれか一項に記載のシステム。
【請求項１７】
前記フラグメントがどのサンプリングポイントをレンダリングするのに使用されているのかを示すデータを各フラグメントに関連付ける手段と、前記アルファテストの結果として破棄されるサンプル位置を示すようにこのデータを変更するのに前記アルファテスト結果を使用する手段とを含む、請求項10から16のいずれか一項に記載のシステム。
【請求項１８】
アルファテストによって導入されるエッジが当該の前記1つまたは複数のフラグメントを通過し得るかどうかを査定するために個々のサンプル位置に対する前記アルファテストを使用する手段を含む、請求項10から17のいずれか一項に記載のシステム。
【請求項１９】
コンピュータプログラム要素がデータ処理手段上で実行される時に請求項1から9のいずれか一項に記載の方法を実行するコンピュータソフトウェアコード部分を含む前記コンピュータプログラム要素。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスの処理に関し、具体的には、コンピュータグラフィックスを処理する時にアンチエイリアシングを実行する方法および装置に関する。
【背景技術】
【０００２】
本発明を、特に3次元グラフィックスの処理に関して説明するが、当業者によって了解されるとおり、本発明は、2次元グラフィックスの処理にも同等に適用可能である。
【０００３】
当技術分野で既知のとおり、3Dグラフィックス処理は、通常、まず表示されるシーンを複数の類似する基本コンポーネント(いわゆる「プリミティブ（primitive）」)に分割して、3Dグラフィックス処理動作をより簡単に実行できるようにすることによって実行される。これらの「プリミティブ」は、通常、三角形などの単純なポリゴン(多角形)の形であり、通常は、その頂点を定義することによって記述される。
【０００４】
表示すべきシーンを複数のグラフィックスプリミティブに分割したならば、それらのグラフィックスプリミティブは、通常、当技術分野で既知のとおり、通常は「フラグメント」と称する別個のグラフィックエンティティまたはグラフィック要素にさらに分割され、これらのフラグメントに対して、実際のグラフィックス処理動作(レンダリング動作など)が実行される。そのようなグラフィックスフラグメントのそれぞれは、プリミティブ内の所定の1つまたは複数の位置を表し、これらに対応し、事実上、当該の1つまたは複数の位置のデータ(色値および深さ値など)のセットを含む。
【０００５】
各グラフィックスフラグメント(データ要素)は、最終的なディスプレイ内の単一のピクセル(picture element、画素)に対応するものとすることができる(ピクセルは表示される最終的なピクチャ内の特異点なので、3Dグラフィックスプロセッサが操作する「フラグメント」とディスプレイ内のピクセルとの間の1対1写像があり得るので)。しかし、たとえば、特に最終イメージを表示する前にレンダリングされたイメージに対してダウンスケーリングなどの特定の形の後処理が実行される場合に、「フラグメント」と「ピクセル」との間に1対1対応がない場合があり得る。
【０００６】
したがって、通常実行される3Dグラフィックス処理の2つの態様は、グラフィックスフラグメント位置データへのグラフィックス「プリミティブ」(またはポリゴン)位置データの「ラスタ化」(すなわち、表示されるシーン内の各プリミティブを表すのに使用されるグラフィックスフラグメントの(x,y)位置の判定)と、その後の、ディスプレイスクリーンでの表示のための「ラスタ化された」フラグメントの「レンダリング」(すなわち、フラグメントのカラリング、シェーディングなど)とである。
【０００７】
(3Dグラフィックス文献では、用語「ラスタ化」または「ラスタライゼーション」が、時々、フラグメントへのプリミティブ変換とレンダリングとの両方を意味するのに使用される。しかし、本明細書では、「ラスタ化」は、フラグメントアドレスへのプリミティブデータの変換だけを指すのに使用される。)
【０００８】
ラスタ化プロセスは、基本的に、事実上表示されるシーンにオーバーレイされるサンプリングポイントのアレイについて、当該のプリミティブがアレイ内のサンプリングポイントのうちのどれをカバーするかを判定することを伴う。次に、適当な(x,y)位置(1つまたは複数)を有するフラグメントが、そのプリミティブによってカバーされることがわかったサンプリングポイントをレンダリングするために生成される。
【０００９】
レンダリングプロセスは、基本的に、各フラグメントを表示するのに必要なデータを導出することを伴う。そのようなデータは、通常、各フラグメントの赤、緑、および青(RGB)色値(基本的にディスプレイ上のフラグメントの色を決定する)と、各フラグメントのいわゆる「アルファ」(透明度)値とを含む。
【００１０】
当技術分野で既知のとおり、このデータは、通常、直線の形またはパイプライン化された形で次々に各フラグメント(すなわち、そのフラグメントのデータ)に対して個々のレンダリングプロセス(ステップ)を実行することによって導出される。したがって、たとえば、各フラグメントは、まず、たとえばフラグメントの(x,y)位置とそのフラグメントが属するプリミティブの頂点について記録された色データおよび透明度データとに基づいて、初期RGB値およびアルファ値を割り当てられる。テクスチャリング、フォギング、およびブレンディングなどの動作が、その後、フラグメントデータに対して連続して実行される。これらの動作は、フラグメントごとにセットされた初期RGB値およびアルファ値を変更し、最後の処理動作の後に、各フラグメントが、そのフラグメントをディスプレイスクリーン上に正しく表示することを可能にするのに適当なRGB値およびアルファ値のセットを有するようにする。
【００１１】
表示のためにグラフィックスを処理する時(コンピュータ生成イメージを表示する時)に出会う問題の1つは、表示されるイメージが、使用されるディスプレイ、たとえばモニタまたはプリンタの別個のピクセル位置に量子化されることである。これは、表示されるイメージの解像度を制限し、たとえば出力ディスプレイデバイスの解像度が滑らかな線を表示するのに十分には高くない場合に、望まれない視覚的アーチファクトを作る可能性がある。これらの影響を、一般に「エイリアシング」と称する。
【００１２】
図1に、そのようなエイリアシングの影響を示す。図1の左側に、描かれるべきイメージを示し、右側に、表示される実際のイメージを示す。図からわかるように、白いオブジェクトの所望の滑らかな曲線が、実際にはディスプレイではジグザグの外見を有する。これがエイリアシングである。(図1では、各正方形が、ディスプレイの1ピクセルを表し、十字が、ピクセル位置の色値が決定される(サンプリングされる)各(x,y)ピクセル位置の点を表す。たとえば、図1のピクセルAは、そのピクセル位置での色サンプリングポイントが白オブジェクト内に含まれるので、完全に白として描かれる。図1では、重要なピクセルのサンプル十字だけが描かれているが、実際には、すべてのピクセルがサンプリングされることに留意されたい)。
【００１３】
すべてのエイリアシングアーチファクト(裸眼に可視であり得る)は、十分に高解像度のディスプレイを使用することによって除去できるはずである。しかし、電子ディスプレイおよびプリンタの解像度は、通常は限られており、したがって、多数のグラフィックス処理システムは、他の技法を使用して、エイリアシングの影響を除去するか減らすことを試みる。そのような技法を、通常はアンチエイリアシング技法と称する。
【００１４】
1つの既知のアンチエイリアシング技法を、スーパーサンプリングまたはオーバーサンプリングと称する。
【００１５】
そのような配置では、最終的なディスプレイの1ピクセルあたりに複数のサンプリングポイント(位置)があり、別々の色サンプルが、(カバーされる)個々のサンプリングポイントごとに(たとえば、別々のフラグメントとして各サンプリングポイントをレンダリングすることによって)とられる。これの効果は、異なる色サンプルが、レンダリングプロセス中に、1プリミティブによってカバーされる1ピクセルのサンプリングポイントごとにとられることである。
【００１６】
これは、複数の色サンプルが、ディスプレイのピクセル位置ごとにとられる(ピクセルのサンプリングポイントごとに1つ、というのは、別々の色値が、サンプリングポイントごとにレンダリングされるので)ことを意味する。これらの複数の色サンプルは、ピクセルが表示される時にそのピクセルの単一の色に組み合わされる。これは、当該のピクセル位置でのオリジナルイメージからの色値を平滑化しまたは平均化するという効果を有する。
【００１７】
図2にスーパーサンプリングプロセスを示す。図2に示された例では、4つのサンプルポイントが、ディスプレイ内のピクセルごとに決定され、別々の色サンプルが、レンダリングプロセス中にサンプルポイントごとにとられる(そのような各サンプルは、したがって、効果的に「サブピクセル」とみなすことができ、ディスプレイ内の各ピクセルは、4つのそのようなサブピクセルから構成される)。次に、所定のピクセルの4つの色値サンプル(サブピクセル)が組み合わされ(ダウンフィルタリングされ)、ディスプレイ内のピクセルに使用される最終的な色が、そのピクセルについてとられた4つの色サンプルの色の適当な平均値(ブレンド)になる。
【００１８】
これは、表示されるイメージを滑らかにするという効果を有し、たとえば、色の中間の陰影によってエイリアシングアーチファクトを囲むことによって、エイリアシングアーチファクトを目立たなくする。これは、図2に見ることができ、図2では、ピクセルAが、今や2つの「白」サンプルおよび2つの「黒」サンプルを有し、したがって、表示されるイメージでは50%「白」にセットされる。この形で、白いオブジェクトのエッジ付近のピクセルが、たとえば何個のサンプルがエッジの各側に含まれることがわかるかに基づいて、より滑らかなエッジを作るようにぼかされる。
【００１９】
スーパーサンプリングは、事実上ディスプレイで実際に使用されるものよりはるかに高い解像度でスクリーンイメージを処理し、その後、処理されたイメージを、表示される前に最終的な解像度にスケーリングし、フィルタリングする(ダウンサンプリング)。これは、減らされたエイリアシングアーチファクトを有する改善されたイメージをもたらすという効果を有するが、より高い処理能力および/またはより長い処理時間を必要とする。というのは、グラフィックス処理システムが、実際に、サンプルと同数のフラグメントを処理しなければならないからである(たとえば、4xスーパーサンプリング(すなわち、ピクセル位置ごとに4つのサンプルがとられる)について、処理要件が、スーパーサンプリングがない場合より4倍高くなる)。
【００２０】
したがって、イメージ品質のある改善を提供しながら、フルスーパーサンプリングより少ない処理要件を有する他のアンチエイリアシング技法が、提案されてきた。
【００２１】
1つの一般的なそのような技法を、「マルチサンプリング」と称する。
【００２２】
マルチサンプリングの場合に、複数のサンプリングポイントが、やはりピクセルごとにテストされて、イメージがフラグメントにラスタ化される時(ラスタ化ステージで)に、所定のプリミティブがサンプリングポイントをカバーするか否かが判定される。したがって、マルチサンプリングシステムでのプリミティブのサンプリングポイントカバレッジは、「スーパーサンプリング」システムに似た形で判定される(したがって、プリミティブの外側幾何エッジの位置は、それでも、マルチサンプリングシステムで効果的に「スーパーサンプリング」(オーバーサンプリング)される)。
【００２３】
しかし、マルチサンプリングシステムのレンダリングプロセスでは、当該のプリミティブによってカバーされる所定のピクセルのすべてのサンプリングポイントが、フラグメントデータ(たとえば、深さ値、色値など)の同一の単一の共通のセットを割り当てられる(スーパーサンプリングの場合のようにフラグメントデータのそれ自体の別々のセットをそれぞれが有するのではなく)。
【００２４】
したがって、マルチサンプリングでは、複数のサンプルが、やはり、最終的なディスプレイを構成する画素ごとにとられるが、「ピクセル」をレンダリングする時にサンプルごとに別々の色値を判定する(フルスーパーサンプリングシステムの場合のように)のではなく、単一の色値が、判定され、最終的なイメージ内の同一のオブジェクトに属するとわかったピクセルのすべてのサンプルに適用される。言い換えると、マルチサンプリングは、シーン内の所定のオブジェクトの所定のピクセルの単一の色値を計算し、その色値は、そのオブジェクトによってカバーされるピクセルのすべてのサンプル(サブピクセル)に適用される(再利用される)(別々の色値がサンプルごとに判定されるスーパーサンプリングとは異なって)。
【００２５】
単一の色値だけが所定のピクセルの複数のサンプルに使用されるので、マルチサンプリングは、スーパーサンプリングより処理集中型ではなく、したがって、スーパーサンプリングより高速の処理および性能を可能にすることができる。しかし、オブジェクトのエッジはそれでもより高い解像度でサンプリングされるが、色はそうではないので、スーパーサンプリングと比較して、表示されるイメージの品質の低下がある。
【００２６】
これにかかわりなく、多くのグラフィックス処理システムは、マルチサンプリングアンチエイリアシング技法を使用する。というのは、マルチサンプリングが、フルスーパーサンプリングに伴うかなりの余分の処理の負荷および計算の負荷なしで、全般的に、レンダリングされたイメージ内の適当な(およびマルチサンプリングまたはスーパーサンプリングが全くない時と比較して改善された)アンチエイリアシングを提供できるからである。
【００２７】
しかし、本出願人は、現在、既存マルチサンプリンググラフィックス処理配置の短所を理解した。この短所は、多数のグラフィックス処理システムで使用されている「アルファテスト」と称するプロセスに関連する。
【００２８】
当技術分野で既知のとおり、多くのグラフィックス処理システムは、事実上、レンダリングされるオブジェクトの透明度(または他のもの)を表すために「アルファ」または「アルファ値」と一般に称するプロパティを使用する。事実上、グラフィックス頂点およびフラグメントは、たとえば、いわゆるアルファ値をそれに関連付けられ、このアルファ値は、頂点およびフラグメントに関連する色(赤、緑、青)値に似ているが、その代わりに、頂点またはフラグメントなどのオブジェクトの「透明度」を表す。
【００２９】
所定のフラグメント値のアルファ値は、たとえば、そのフラグメントが属するプリミティブの頂点について定義されるアルファ値から導出され、そのフラグメントに適用されるテクスチャから導出され、あるいは、そのフラグメントに適用されるフラグメントシェーダ（shader）(ピクセルシェーダ)プログラムの計算から導出される。
【００３０】
グラフィックス処理でのアルファ値の一般的な使用は、表示されるシーン内の草木など、特に背景の繰り返されるパターンのレンダリングなどの「ビルボーディング（bill-boarding）」用である。アルファ値は、そのような特徴をテクスチャとしてシーンに効果的に適用するのに使用でき、テクスチャは、たとえば木の葉のそれぞれなどのプリミティブを定義することより低コストである可能性がある。
【００３１】
そのような処理は、通常、レンダリングプロセス中にいわゆる「アルファテスト」を実行することによって実行される。アルファテストは、通常、レンダリングパイプライン内の定義済みステップであり、通常、レンダリングされるフラグメントに関連するアルファ値をシーンおよび当該のアルファテストについて定義されたしきいアルファ値または基準アルファ値と比較し、その後、その比較を基礎として当該のフラグメントを残すか破棄することを含む。言い換えると、アルファテストは、定義されたしきいアルファ値または基準アルファ値を使用して、レンダリングされつつあるフラグメントを残すか破棄する(フラグメントをタイルバッファまたはフレームバッファに書き込むためまたは書き込まないようにするために)。
【００３２】
本出願人は、さらに、シーンがレンダリングされる時のアルファテストの実行の結果が、表示されるシーンにエッジを導入し得ることであることを理解した。エッジまたは線は、たとえば、アルファ値が、アルファテストで比較されるしきい値と交わる場所に作成され得る。
【００３３】
たとえば、アルファテスト基準値が、表示されるシーンを横切る1つまたは複数の線を効果的に定義する場合に、それが、所定のプリミティブのフラグメント(たとえば、所定のアルファ値を有する)がその線の片側で破棄されるが、その線の反対側では残されることをもたらし得る。同様に、フラグメントに関連するアルファ値が、プリミティブの表面にわたって漸進的に変化する場合に、やはり、効果的に、プリミティブを横切る線が生じ、その線の片側ではフラグメントが残され、その線の反対側ではフラグメントが破棄される場合がある。
【００３４】
したがって、これらのアルファテスト処理は、効果的に、プリミティブが表示される時にそのプリミティブについてまたはそのプリミティブ内に1つまたは複数の新しいエッジを存在させる可能性がある(ここで、そのようなアルファテストによって導入された「エッジ」が、ラスタ化ステージでは存在せず、導入されないが、その後、レンダリングプロセス中に、アルファテストが実行される時にのみ生じることに留意されたい)。
【００３５】
さらに、本出願人は、したがって、プリミティブの幾何外側エッジなど、すべての他のエッジがアンチエイリアシングされるのが望ましいのと同一の形で、アルファテストによって導入されるそのようなエッジがアンチエイリアシングされることが望ましいことを理解した。
【００３６】
しかし、マルチサンプリング式グラフィックス処理配置の場合に、上で述べたように、フラグメントがレンダリングされる時に、フラグメントデータの単一のセット(たとえば、色値(R値、G値、B値)およびアルファ値)が、導出され、所定のプリミティブによってカバーされるピクセルのすべてのサンプル位置に使用される。したがって、所定のピクセルのサンプリングポイントは、単一のアルファ値を関連付けられるのみであり、そのアルファ値は、そのピクセルのすべてのサンプル位置に使用される。
【００３７】
言い換えると、マルチサンプリング式グラフィックス処理配置では、あるピクセルのすべてのサンプルに共通して使用される単一のアルファ値だけが導出される。したがって、アルファテストが実行される時に、各サンプルが同一のアルファ値を有するので、すべてのサンプルが破棄されるかすべてのサンプルが破棄されないかのいずれかになり、事実上、そのピクセルは、アルファテストの結果として、全体として残されるか破棄されるかのいずれかになる。
【００３８】
本出願人は、これの結果が、アルファテストが実行される時に、そのテストが、ピクセル全体の保持または破棄のいずれかを引き起こすことを理解した。さらに、これは、アルファテストが、効果的にピクセルレベル解像度ですなわち1ピクセル全体ごとで実行されることを意味する。
【００３９】
これの影響は、アルファテストによって導入されるイメージ内のすべてのエッジが、オーバーサンプリング(スーパーサンプリング)された形では処理されず、したがって、アンチエイリアシングされない(上で述べたラスタ化時にオーバーサンプリング(スーパーサンプリング)された形で処理される幾何外側プリミティブエッジとは対照的に)ことである。
【００４０】
したがって、本出願人は、マルチサンプリング式グラフィックスレンダリングプロセスにおいてさえ、アルファテストによって導入されるエッジが、アンチエイリアシングされず、したがって、その外見がそれほどよくはないことを理解した。
【００４１】
(この問題は、完全にスーパーサンプリング式のグラフィックス処理配置では生じない傾向がある。というのは、その場合に、各「サンプル」が、効果的にそれ自体の色値およびアルファ値を有し、したがって、アルファテストが、いずれにせよより高いスーパーサンプリングされた解像度で実行される(したがって、アンチエイリアシングされる)からである。しかし、上で述べたように、スーパーサンプリングは、必ず望ましいまたは可能とは限らない可能性があり、多くの場合に、マルチサンプリング式グラフィックス処理配置が、品質と処理作業負荷との間のトレードオフとして好ましい)。
【発明の概要】
【発明が解決しようとする課題】
【００４２】
したがって、本出願人は、特にマルチサンプリング式グラフィックス処理配置でのアルファテストの処理に関して、マルチサンプリング式グラフィックス処理システムに対する改善の余地が残っていると考える。
【課題を解決するための手段】
【００４３】
本発明の第1の態様によれば、表示されるイメージのグラフィックスプリミティブを処理する方法であって、
複数のサンプリングポイントの複数のセットのサンプリングポイントごとにグラフィックスプリミティブがサンプリングポイントをカバーするかどうかを判定するステップと、
表示のためにプリミティブをレンダリングするためにグラフィックスフラグメントのセットを生成するステップであって、各グラフィックスフラグメントが、プリミティブによってカバーされるサンプリングポイントを含むことがわかった複数のサンプリングポイントのセットに対応し、プリミティブによってカバーされることがわかったサンプリングポイントのセットのサンプリングポイントに使用されるフラグメントデータのセットを定義する、ステップと、
各レンダリングされるグラフィックスフラグメントのレンダリングされたフラグメントデータのセットを判定するためにプリミティブについて生成されたグラフィックスフラグメントをレンダリングするステップと、
レンダリングプロセスの一部として1つまたは複数のフラグメントに関してアルファテストを実行するステップと
を含み、アルファテストが、
当該のフラグメントが対応する各カバーされるサンプリングポイントの個々のアルファ値を生成するステップと、
カバーされるサンプリングポイントごとに個別に、サンプリングポイントについて生成された個々のアルファ値を使用してアルファテストを実行するステップと
によって実行される、方法が提供される。
【００４４】
本発明の第2の態様によれば、表示されるイメージのグラフィックスプリミティブを処理するシステムであって、
複数のサンプリングポイントの複数のセットのサンプリングポイントごとにグラフィックスプリミティブがサンプリングポイントをカバーするかどうかを判定する手段と、
表示のためにプリミティブをレンダリングするためにグラフィックスフラグメントのセットを生成する手段であって、各グラフィックスフラグメントが、プリミティブによってカバーされるサンプリングポイントを含むことがわかった複数のサンプリングポイントのセットに対応し、プリミティブによってカバーされることがわかったサンプリングポイントのセットのサンプリングポイントに使用されるフラグメントデータのセットを定義する、手段と、
各レンダリングされるグラフィックスフラグメントのレンダリングされたフラグメントデータのセットを判定するためにプリミティブについて生成されたグラフィックスフラグメントをレンダリングする手段と、
レンダリングプロセスの一部として1つまたは複数のフラグメントに関してアルファテストを実行する手段と
を含み、アルファテストを実行する手段が、
当該のフラグメントが対応する各カバーされるサンプリングポイントの個々のアルファ値を生成する手段と、
カバーされるサンプリングポイントごとに個別に、サンプリングポイントについて生成された個々のアルファ値を使用してアルファテストを実行する手段と
を含む、システムが提供される。
【００４５】
本発明では、レンダリングプロセスは、表示されるイメージの複数のサンプリングポイントのセットにそれぞれが対応するグラフィックスフラグメントを操作(レンダリング)する(サンプリングポイントの各セットは、たとえば、通常、上で述べたように、最終的なディスプレイ内の1ピクセルに対応する)。
【００４６】
これの効果は、所定のフラグメントが、そのフラグメントが対応する(それをレンダリングするのに使用されようとしている)サンプリングポイントのセットの全サンプリングポイントに使用されるフラグメントデータの共通の単一のセットを定義し、提供することである。言い換えると、本発明は、マルチサンプリング式グラフィックス処理配置である。
【００４７】
しかし、アルファテストがレンダリングプロセスの一部としてフラグメントに対して実行される時に、従来技術のマルチサンプリングシステムでそうであるように、単一のアルファ値およびアルファ値比較テストがフラグメント全体に使用されるのではなく、本発明では、個々のアルファ値が、フラグメントが対応する(レンダリングに使用されようとしている)カバーされるサンプリングポイントごとに生成され、その後、アルファテストが、カバーされるサンプリングポイントごとに個別に実行される。
【００４８】
これの効果は、アルファテストが、各(カバーされる)サンプリングポイントについて、それに関して個別に(別々に)、当該のサンプリングポイントについて生成された個々のアルファ値を使用してすなわち、フラグメント(複数のサンプリングポイントのセットの)全体の解像度(レベル)ではなく事実上そのサンプリングポイントの解像度(レベル)で実行されることである。
【００４９】
これは、たとえば、従来技術のマルチサンプリング配置のように、アルファテストの結果としてフラグメント(サンプリングポイントのセットの)のサンプリングポイントのすべてを一緒に保持するか、又は、すべてを一緒に破棄することだけができるのではなく、アルファテストの結果として個々にフラグメント(サンプリングポイントのセットの)のサンプリングポイントを保持するか、又は、破棄することができることである。
【００５０】
これは、とりわけ、本発明において、レンダリングプロセスが完全にスーパーサンプリングされた形で動作するのではなく「マルチサンプリングされた」配置であるという事実にもかかわらず、アルファテストを、それでも、事実上、スーパーサンプリングに似た形で(すなわち、1ピクセルあたり複数の個々のサンプルを用いて)実行できることを意味する。
【００５１】
したがって、事実上、本発明では、完全にスーパーサンプリング式のシステムの必要なしに、1フラグメントあたり(したがって、ディスプレイの1ピクセルあたり)複数のアルファサンプルが使用可能である(サポートされる)。したがって、本発明は、完全に「スーパーサンプリング式の」レンダリングプロセスを有する必要なしに(したがって、完全にスーパーサンプリング式のシステムに関連する大きい作業負荷の増加なしに)、アルファテスティングによって導入されるエッジに対してアンチエイリアシングを実行することを可能にする。
【００５２】
本発明の第3の態様によれば、グラフィックスレンダリングシステムでアルファテストを実行する方法であって、レンダリングされるグラフィックスフラグメントが、それぞれ、プリミティブによってカバーされる表示されるイメージの複数のサンプリングポイントを表すことができるが、それぞれ、フラグメントについて使用される単一のアルファ値を当初に関連付けられ、方法が、フラグメントのアルファテストを、
当該のフラグメントが対応するカバーされる各サンプリングポイントの個々のアルファ値を生成するステップと、
カバーされるサンプリングポイントごとに個別に、サンプリングポイントについて生成された個々のアルファ値を使用して、アルファテストを実行するステップと
によって実行するステップを含む、方法が提供される。
【００５３】
本発明の第4の態様によれば、グラフィックスレンダリングシステムでアルファテストを実行するシステムであって、レンダリングされるグラフィックスフラグメントが、それぞれ、プリミティブによってカバーされる表示されるイメージの複数のサンプリングポイントを表すことができるが、それぞれ、フラグメントについて使用される単一のアルファ値を当初に関連付けられ、
当該のフラグメントが対応するカバーされる各サンプリングポイントの個々のアルファ値を生成する手段と、
カバーされるサンプリングポイントごとに個別に、サンプリングポイントについて生成された個々のアルファ値を使用して、アルファテストを実行する手段と
を含むシステムが提供される。
【００５４】
表示されるイメージについてとられる(したがってレンダリングされる各フラグメントに関連する)サンプリングポイントのセットは、望み通りに選択することができる。当技術分野で既知のとおり、サンプリングポイントの各セット(したがって各サンプリングポイント)は、表示されるイメージ内の異なる位置(x,y位置)を表す(各セット内のサンプリングポイントの相対位置を同一とすることができる(通常は同一になる)とはいえ)。
【００５５】
通常そうであるように、イメージが、複数のピクセルを含むディスプレイを有する出力デバイスに表示される場合に、サンプリングポイントの各セットは、好ましくは、ディスプレイの所定のピクセル(ピクセル位置)のサンプリングポイントのセットまたはディスプレイの1ピクセルの一部(たとえば、サブピクセル)のサンプリングポイントのセットに対応する。後者の配置では、サンプリングポイントの複数のセットのグループが、好ましくは、ディスプレイの1ピクセルのサンプリングポイントのセット全体を構成する。これらの配置では、各フラグメントが、効果的にディスプレイ内の所定のピクセルのフラグメントデータをレンダリングする。
【００５６】
サンプリングポイントのセットは、表示されるイメージの面積全体を表す(カバーする)ことができ、あるいは、たとえば、表示されるイメージ全体の一部だけを表す(およびカバーする)ことができる。後者の配置は、たとえば、イメージ(16×16ピクセルタイルなど)の別々の部分(タイル)が順番にレンダリングされ、その後、組み合わされて、最終的なイメージが表示される、タイルベースのレンダリングシステムで使用されるはずである。この場合に、イメージの所望のタイル(部分)を表すサンプリングポイントの複数のセットは、プリミティブを処理するのに使用され、処理は、必要な場合に、イメージの他のタイルについて繰り返されるはずである。
【００５７】
サンプリングポイントの各セットは、複数のサンプリングポイントを含む(すなわち、イメージ内の複数のサンプリング位置をカバーする)。サンプリングポイントの実際の個数は、望み通りに選択することができるが、4が好ましい数ではある。
【００５８】
サンプリングポイントの各セット内のサンプルポイントのパターンおよび(相対)位置(サンプリングパターン)は、望み通りに選択することができる。たとえば、順序付きグリッドスーパーサンプリング(ordered grid supersampling)など、任意の既知の適切なアンチエイリアシングサンプリングパターンを使用することができる。最も好ましくは、回転グリッドスーパーサンプリングパターン(rotated grid supersampling pattern)が使用される。というのは、これが、従来技術で既知のとおり、よりよいサンプリング効果をもたらすからである。したがって、各サンプルポイントがイメージ内の一意のx座標およびy座標を有することが好ましい。
【００５９】
1つの好ましい実施形態では、所定のプリミティブについてイメージをサンプリングするのに使用されるサンプリングポイントの各セットが、同一である(すなわち、同一の個数およびパターンのサンプリングポイントとサンプリングポイントの同一の相対位置とを使用する)。この場合に、サンプリングポイントのセットは、フラグメントごとに同一になる。
【００６０】
もう1つの好ましい実施形態では、所定のプリミティブについてイメージをサンプリングするのに使用されるサンプリングポイントのセットは、たとえばサンプリングポイントの個数および/またはサンプリングポイントの各セットに使用されるサンプリングパターンもしくは相対位置に関して、変更することができ、かつ/または異なる。最も好ましくは、サンプリングポイントのセットは、あるプリミティブをレンダリングするのに使用されるフラグメントの間で異なるものとすることができる。
【００６１】
1つの好ましい実施形態では、プリミティブをレンダリングするのに使用される各フラグメントが、サンプリングポイントの異なるセットに対応する。そのような配置では、事実上、単一のフラグメントだけが、生成され、サンプリングポイントの各セットのサンプリングポイントを共通してレンダリングするのに使用され、各フラグメントは、共通してサンプリングポイントの(異なる)セットの(複数の)サンプリングポイントをレンダリングする。
【００６２】
プリミティブをレンダリングするために生成されるグラフィックスフラグメントのセットは、表示のためにプリミティブを適当にレンダリングするために十分なフラグメントを含まなければならない。したがって、たとえば、プリミティブの一部が実際には最終的な表示で見られないことがわかっている場合に、プリミティブのその部分についてフラグメントを生成する必要はないはずである。同等に、あるプリミティブについてフラグメントが生成済みの場合であっても、最終的なイメージ内で実際には見られないすべてのフラグメントがレンダリングされないことが好ましい(これは、たとえば、当技術分野で既知のように、早期深さ(z)テスト（early depth (z)-test）を使用することによって査定することができる)。
【００６３】
各フラグメントおよびサンプリングポイントについて判定され、格納されるフラグメントデータは、任意の適切なそのようなデータとすることができる。そのデータは、少なくとも、たとえばディスプレイのピクセルを適当に表示することを可能にするために、RGB値およびアルファ値など、適当な色データおよび/または透明度データを含まなければならない(ここで、本明細書での「色データ」への言及が、モノクロームディスプレイまたは白黒ディスプレイに使用されるものなど、適当なグレイコードまたは類似するデータを含むことを理解されたい)。
【００６４】
少なくとも3次元グラフィックスの処理の場合に、判定され格納されるフラグメントデータは、好ましくは、フラグメントの(したがって、当該の1つまたは複数のサンプル位置の)深さ(Z)値をも含む。
【００６５】
いわゆるステンシルデータなどの他のフラグメントデータを、適宜(および望まれる場合に)判定し、格納することもできる(好ましくは判定され、格納される)。
【００６６】
レンダリングされるフラグメントデータは、当技術分野で既知のとおり、適当に、適当なフラグメントデータアレイに格納されなければならない。このアレイは、当技術分野で既知のとおり、たとえばピクセルの2Dアレイを表示するために適当に処理することのできる、たとえばフラグメント位置の2次元アレイを表さなければならない。フラグメントデータのアレイは、たとえば、表示されるイメージのサンプル位置のアレイに対応することができる。
【００６７】
本発明のアルファテストプロセスで使用される、あるフラグメントが対応する各(カバーされる)サンプリングポイントについて生成されるアルファ値は、任意の所望の適切な形で生成することができる。
【００６８】
ここで、本発明において、個々のアルファ値が、サンプルポイントごとに生成されることに留意されたい。言い換えると、アルファ値は、各(関連する)サンプルポイントについて別々に生成され、アルファ値生成プロセスは、各サンプルポイントに関して別々に実行される(たとえば、各サンプルポイントがフラグメントの当初に割り当てられるか定義されたアルファ値を単純に割り当てられるのではなく)。
【００６９】
したがって、各サンプルポイントは、それ自体のアルファ値生成プロセスを経験し、フラグメントが対応する他のサンプリングポイントに対して異なる、それのために生成されたアルファ値を有する傾向があり、好ましくはそれを有する(いくつかの場合に、サンプルポイントごとに生成されるアルファ値が、たとえばアルファ値がプリミティブにまたがってどのように変化するかに応じて、同一になる場合がありはするが)。したがって、好ましい実施形態では、サンプリングポイントごとに生成されるアルファ値は、フラグメントが対応する他のサンプリングポイントについて生成されるアルファ値と同一ではない。
【００７０】
特に好ましい実施形態では、サンプリングポイントの個々のアルファ値は、当該のフラグメントに関連し、かつ/またはレンダリングされる他のフラグメントに関連する1つまたは複数のアルファ値から各サンプリングポイントでのアルファ値を推定することによって生成される。たとえば、あるフラグメントが、所定のアルファ値を既に関連付けられている(たとえば、レンダリングプロセスの始めにそれのために定義された)場合に、本発明のアルファテストプロセスに使用されるそのフラグメントのサンプリングポイントのアルファ値は、好ましくは、少なくとも部分的に、そのフラグメントについて定義されたアルファ値を使用することによって生成される(推定される)。
【００７１】
したがって、特に好ましい実施形態で、あるフラグメントのサンプリングポイント(1つまたは複数)の個々のアルファ値は、レンダリングプロセス中に当該のフラグメントについて当初に定義される(単一の)アルファ値を使用して生成される。
【００７２】
特に好ましい実施形態では、生成されるアルファ値は、好ましくは、当該のフラグメントについて定義されたアルファ値および当該のフラグメントの1つまたは複数の隣接するフラグメント、好ましくは直接に隣接するフラグメントについて定義された1つまたは複数のアルファ値など、レンダリングされる複数のフラグメントについて定義された初期アルファ値を使用して生成される。
【００７３】
1つの好ましい実施形態では、当該のフラグメントを含むフラグメントの2×2ブロック(2フラグメント幅×2フラグメント高さのブロック)のアルファ値が、各サンプリングポイントの個々のアルファ値を生成(推定)するのに使用される(たとえば、好ましくは、バイリニアフィルタリングプロセスまたは類似物を使用することによって)。したがって、好ましくは、4つのフラグメントについて定義される初期アルファ値が、サンプリング位置の個々のアルファ値を生成するのに使用される。
【００７４】
もちろん、他の配置が可能である。たとえば、アルファ値生成プロセスに使用されるフラグメントについて定義される初期アルファ値の数が多ければ多いほど、所定のサンプリングポイントに関するアルファ値の推定をより正確にすることができる(しかし、その一方で、推定プロセスが、より処理集中型になる可能性がある)。たとえば、フラグメントの3×3ブロックの当初にセットされたアルファ値を使用することができる。たとえば、望まれる場合に、直接に隣接するフラグメントではなく、当該のフラグメントからさらに離されたフラグメントについて定義されたアルファ値を使用することも可能である。
【００７５】
サンプリングポイントのアルファ値は、任意の適切な所望の形で、1つまたは複数のフラグメントについて当初に定義されるか導出された単一のアルファ値から生成することができる。事実上、目的は、可能である限り、サンプリングポイントでのアルファ値を推定する(再作成する)ことであり、各サンプルポイントでのアルファ値の推定値を与えることができる任意の適切な関数を、これを行うのに使用することができる。その代わりに、たとえば表示されるシーンのアルファ値がシーンにまたがって滑らかに変換するのかより不規則に変化するのかに関して、異なる推定関数が、ある種の状況に他の関数よりよく適する可能性がある場合がある。
【００７６】
特に好ましい実施形態で、フラグメントのサンプリングポイントのアルファ値は、そのフラグメントの中央でのアルファ値としてそのフラグメントについて定義された当初の単一のアルファ値をとることと、そのフラグメントの中央点と比較した当該のサンプルポイントでのアルファ値の間の差を推定することと、サンプル位置に使用されるアルファ値を導出するためにそのフラグメントの当初の単一のアルファ値にアルファ値の推定された差を加算することとによって推定される。言い換えると、好ましい実施形態では、サンプルポイントでのアルファ値とフラグメントの中央でのアルファ値との間の差が、推定され、次に、フラグメントについて当初に定義されたか導出されたアルファ値と一緒に、サンプリングポイントのアルファ値を生成するのに使用される。
【００７７】
フラグメントの初期アルファ値および/またはフラグメントの中央について使用されるアルファ値は、たとえば、望まれる場合に、望み通りに、静的アルファ値、動的に変化する値、テクスチャ付きのまたは計算される値などとすることができる。
【００７８】
これらの配置では、フラグメントの中央でのアルファ値とサンプル位置でのアルファ値との間の差を、任意の望まれる形で導出し、または推定することができる。しかし、特に好ましい実施形態では、勾配推定法を使用する。言い換えると、好ましくは、フラグメントの中央からサンプルポイントまでの距離に関するアルファ値の変化の割合(傾き(導関数))が、推定されまたは判定され、その後、アルファ値の差を導出するのに使用される(フラグメントの中央からのサンプルポイントの距離に基づいて)。
【００７９】
これらの配置では、距離に関するアルファ値の変化の割合(傾き)を、望み通りに任意の適切な形で推定し、または導出することができる。特に好ましい実施形態では、これが、適当な隣接するフラグメントのアルファ値の間の差(およびそれらのフラグメントの中央点の間の距離)をとることによって行われる。
【００８０】
したがって、たとえば、x方向でのアルファ値の変化の割合(傾き)は、互いに関して位置xおよびx+1(またはx-1)にある2つのフラグメントのアルファ値をとることと、フラグメントのアルファ値の間の差および2つのフラグメントの中央の間のx軸に沿った距離を判定することと、x方向でのアルファ値の勾配の推定値を判定するためにアルファ値の差および距離を使用することとによって推定することができ、好ましくはこれによって推定される。好ましくは、類似するプロセスが、y方向でのアルファ値の勾配を推定するのに使用され、これらの2つの勾配を、その後、スクリーン上の任意の線に沿ったアルファ値の変化を推定するのに使用することができる。
【００８１】
一般に、既知のアルファ値およびアルファ値の差などを使用してアルファ値を導出する任意の適切なプロセスを、望み通りに使用することができる。
【００８２】
個々のアルファ値が、フラグメントが対応する(そのフラグメントがそれをレンダリングするのに使用されている)カバーされるサンプリングポイントごとに生成されなければならない。好ましい実施形態では、アルファ値は、プリミティブによってカバーされることがわかっている1つまたは複数のサンプリングポイントだけについて生成されるが、フラグメントが対応するサンプリングポイントのセットのすべてのサンプリングポイントについて、それらが当該のプリミティブによってカバーされるか否かにかかわりなく、アルファ値を単純に生成することが可能である。
【００８３】
サンプリングポイントごとに生成されたアルファ値は、各サンプリングポイントに関するアルファテストを実行するのに使用される。このアルファテストは、任意の所望の適切な形で実行することができ、当技術分野で既知のとおり、サンプリングポイントのために生成された個々のアルファ値を、当該のサンプリングポイントのアルファテストのために定義された(たとえば、好ましくは事前に決定された)各基準アルファ値またはしきいアルファ値と比較することを含むことができ、好ましくはそれを含む。望まれる場合には、単純なしきい値比較より複雑なテストを使用することもできる。
【００８４】
アルファテストに使用される基準アルファ値またはしきいアルファ値は、任意の適切なまたは所望のそのような値を含むことができ、任意の適切な所望の形で導出するか定義することができる。たとえば、全体として、表示のためのシーンまたはシーンの一部について定義された、固定された静的なしきいアルファ値があるものとすることができる。その代わりに、基準アルファ値またはしきいアルファ値を、なんらかの形で、たとえばシーン内の位置(x,y位置)に依存して、またはある他のパラメータもしくは要因に依存して、動的または変化するものとすることができる。
【００８５】
一般に、当該のサンプリングポイントの特定のアルファテストのために定義される(たとえば、事前に決定されるか使用中に導出されるかのいずれか)特定のアルファ値があり、そのしきいアルファ値または基準アルファ値は、たとえば全体としてシーンに関する単一の固定された基準アルファ値があるかどうかまたはアルファ値がシーンにまたがってある形で変化するかどうかに依存して、同一フラグメントの他のサンプリングポイントおよび/または他のフラグメントのサンプリングポイントのアルファテストに使用される基準アルファ値と同一または異なる値とすることができる。
【００８６】
各個々のサンプルポイントに関するアルファテスト比較の結果を、望み通りに使用することができる。1つの特に好ましい実施形態では、これらの結果は、当技術分野で既知のとおり、当該のサンプル位置を破棄する(または破棄しない)かどうかを判断するのに使用される。事実上、アルファテスト比較が、サンプル位置を保存しなければならないことを示す場合に、フラグメントの色値などが、そのサンプル位置のために保持される(サンプル位置に書き込まれる)(たとえば、フラグメントデータアレイ内)(すなわち、そのサンプル位置の最後の色に潜在的に影響することを許可される)が、アルファテスト比較が、サンプル位置を破棄しなければならないことを示す場合には、フラグメントの色値などは、当該のサンプル位置について保持されない(当該のサンプル位置に書き込まれない)。
【００８７】
これらの配置では、所定のサンプリング位置がアルファテストの結果として破棄されたかどうかを表示するか記録する、ある機構の必要がある場合があることを了解されたい。これは、任意の所望の適切な形で達成することができる。
【００８８】
しかし、特に好ましい実施形態では、各グラフィックスフラグメントは、そのフラグメントが対応するサンプリングポイントのセットのうちのどのサンプリングポイントが、それをレンダリングするためにそのフラグメントが使用されようとしているのか(すなわち、レンダリングされるフラグメントデータを(先を見越して)出力フラグメントデータアレイ内に格納しなければならない、そのフラグメントが対応するサンプリングポイントのセット内のサンプリングポイント)を示すデータを関連付けられる。このシステムは、示された選択されたサンプル位置について、レンダリングされたフラグメントデータをフラグメントデータアレイ内に適当に格納するが、フラグメントに関連する残りのサンプル位置については格納しないように動作する。
【００８９】
この配置では、フラグメントがそれをレンダリングするのに使用されようとしているサンプリングポイントを示すこのデータは、たとえば、好ましくは、当初に、当該のプリミティブによってカバーされることがわかっているサンプリング位置に基づき、これらに対応する。しかし、好ましくは、アルファテスト結果が、アルファテストの結果として破棄されなければならないサンプル位置を示すためにこのデータを変更するのに使用される。
【００９０】
フラグメントがそれをレンダリングするのに使用されようとしているサンプルポイントを示す情報は、好ましくは、レンダラを通過するフラグメントのフラグメントデータ(フラグメントのRGB値およびアルファ値など)に関連付けられるかその一部である。これは、好ましくは、フラグメントに関連するサンプル位置のセットのサンプル位置ごとに、フラグメントがそのサンプルポイントをレンダリングするのに使用されようとしているかどうか(すなわち、フラグメントのデータを(先を見越して)そのサンプルポイントについて格納しなければならないかどうか)を示すカバレッジマスクの形である。このマスクは、各サンプリングポイントのアルファテストの結果として変更することができ、好ましくは変更される。
【００９１】
この配置は、所定のフラグメントを適当なサンプルポイントに関連付ける特に便利な形であり、本発明の動作を容易にすることがわかっている。
【００９２】
上で述べたように、本発明のアルファテストは、1つの好ましい実施形態で、フラグメントに関連するサンプリング位置を保存するか破棄するのに使用されるが、アルファテストの結果の他の配置および使用が可能である。
【００９３】
たとえば、好ましい実施形態では、上記に加えてまたはその代わりに、個々のサンプル位置に対するアルファテストが、アルファテストによって導入されるエッジが当該のフラグメントを通過し得るかどうかを判定し、または推定するのに使用される。
【００９４】
これは、たとえば、フラグメントのサンプル位置のうちのいくつかが、アルファテスト比較に「合格する」(たとえば、基準アルファ値を超える)が、フラグメントの他のサンプル位置が、アルファテストに「合格しない」(たとえば、基準値未満である)かどうかを判定することによって行うことができる。これは、アルファテストによって導入されるエッジが、フラグメントを通過し得るまたは通過することを示すはずである。
【００９５】
エッジがどこにあるのかを計算するための幾何ベースのテストなど、他のエッジテスティング配置を、上記に加えてまたはその代わりに使用することができる。一般に、通常のラスタ化で行われるテストに類似する任意の線機能テストを、望まれる場合に、この目的のために、上記に加えてまたはその代わりに使用することができる。
【００９６】
したがって、好ましい実施形態で、本発明の形でのアルファテストは、アルファテストによって導入されるエッジがフラグメントを通過し得るかどうかを査定するのに使用される。
【００９７】
これらの配置で、アルファテストによって導入されるエッジがフラグメントを通過し得ることがわかる場合に、特に好ましい実施形態では、当該のフラグメントが、完全にスーパーサンプリングされた形で、もう一度レンダリングされる(レンダリングのために再発行される)。これは、たとえば、レンダリングプロセス(パイプライン)内のより以前の点にループバックし、フラグメントを、それぞれが単一のサブサンプル(サンプリングポイント)を表す複数のフラグメント(複数のコピー)に分割することによって行うことができる。
【００９８】
これは、シーンまたはプリミティブ全体をスーパーサンプリングされた形で処理する必要なしに(スーパーサンプリングされた形で処理されるものが、アルファテストエッジ上に横たわる危険性があると識別されたフラグメントだけなので)、アルファテストエッジをアンチエイリアシングする(それを「スーパーサンプリングする」ことによって)ことを可能にする。
【００９９】
実際に、本発明の概念の上記の配置および他の配置を、それ自体で新規であり有利であるものとすることができる。
【０１００】
したがって、本発明の第5の態様によれば、表示されるイメージのグラフィックスプリミティブを処理する方法であって、
表示のためにプリミティブをレンダリングするためにグラフィックスフラグメントのセットを生成するステップと、
各レンダリングされるグラフィックスフラグメントのレンダリングされたフラグメントデータのセットを判定するためにプリミティブについて生成されたグラフィックスフラグメントをレンダリングするステップと、
レンダリングプロセスの一部として1つまたは複数のフラグメントに関してアルファテストを実行するステップと
を含み、アルファテストが、
当該の1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントの個々のアルファ値を生成するステップと、
サンプリングポイントごとに個別に、サンプリングポイントについて生成された個々のアルファ値を使用してアルファテストを実行するステップと
によって実行される、方法が提供される。
【０１０１】
本発明の第6の態様によれば、表示されるイメージのグラフィックスプリミティブを処理するシステムであって、
表示のためにプリミティブをレンダリングするためにグラフィックスフラグメントのセットを生成する手段と、
各レンダリングされるグラフィックスフラグメントのレンダリングされたフラグメントデータのセットを判定するためにプリミティブについて生成されたグラフィックスフラグメントをレンダリングする手段と、
レンダリングプロセスの一部として1つまたは複数のフラグメントに関してアルファテストを実行する手段と
を含み、アルファテストを実行する手段が、
当該の1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントの個々のアルファ値を生成する手段と、
サンプリングポイントごとに個別に、サンプリングポイントについて生成された個々のアルファ値を使用してアルファテストを実行する手段と
を含む、システムが提供される。
【０１０２】
本発明の第7の態様によれば、グラフィックスレンダリングシステムでアルファテストを実行する方法であって、レンダリングされるグラフィックスフラグメントが、それぞれ、フラグメントに使用される単一のアルファ値を当初に関連付けられ、方法が、1つまたは複数のフラグメントのアルファテストを、
当該の1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントの個々のアルファ値を生成するステップと、
サンプリングポイントごとに個別に、サンプリングポイントについて生成された個々のアルファ値を使用して、アルファテストを実行するステップと
によって実行するステップを含む、方法が提供される。
【０１０３】
本発明の第8の態様によれば、グラフィックスレンダリングシステムでアルファテストを実行するシステムであって、レンダリングされるグラフィックスフラグメントが、それぞれ、フラグメントに使用される単一のアルファ値を当初に関連付けられ、
アルファテストを受けるフラグメントまたはフラグメントのグループの1つまたは複数のサンプリングポイントの個々のアルファ値を生成する手段と、
サンプリングポイントごとに個別に、サンプリングポイントについて生成された個々のアルファ値を使用して、アルファテストを実行する手段と
を含むシステムが提供される。
【０１０４】
当業者によって了解されるとおり、本発明のこれらの態様および実施形態は、適宜、本明細書で説明する本発明の好ましい特徴および任意選択の特徴のいずれか1つまたは複数またはすべてを含むことができ、好ましくは含む。したがって、たとえば、好ましくは、個々のアルファ値が、当該の1つまたは複数のフラグメントの複数のサンプリングポイントのそれぞれについて生成される。同様に、サンプリングポイントについて生成される個々のアルファ値は、好ましくは、上で述べた形で推定される(および、たとえば、複数のフラグメントまたはそれらのうちの複数について最初に定義されるか割り当てられるアルファ値(1つまたは複数)を少なくとも部分的に使用して生成される)。
【０１０５】
同様に、個々のアルファ値がそれについて生成されるサンプリングポイントが、ラスタ化ステージでプリミティブのカバレッジを判定するのに使用されるサンプリングポイントに対応することが好ましい。しかし、これらの配置でアルファテストエッジの存在についてテストするのに使用される(たとえば、下で述べるように)サンプリングポイントが、レンダリングされるプリミティブのカバレッジ(またはカバーされない)についてテストするためにラスタ化中に使用されるサンプリングポイントに対応することは、必要ではない。
【０１０６】
たとえば、1フラグメントまたは各フラグメントの角(すなわち、1つまたは複数のフラグメントの角(1つまたは複数)のサンプリングポイント)でのアルファ値は、これらの配置で生成することができ、好ましくは生成される(たとえば、アルファテストエッジがフラグメントを通過し得るか否かを判定するために)。フラグメントの角でのアルファ値をとることは、実際に、いくつかの応用例について、より信頼できるテストである可能性がある。
【０１０７】
同等に、サンプルポイント(たとえば、アルファテストエッジの存在に関するテスト)は、個別にフラグメントに関する(フラグメントのために担持される)必要があるのではなく、たとえば、複数のフラグメントのグループまたはブロックを査定して、たとえば、アルファテストエッジがフラグメントのブロックを通過し得るかどうかを査定することができる(ブロック内のすべてのフラグメントが、その後、それに従って、スーパーサンプリングされた形で処理のために再発行される(または再発行されない))。
【０１０８】
この場合に、個々のアルファ値が生成されるサンプル位置は、たとえば、全体としてのフラグメントのブロックまたはグループの複数のサンプルポイント(たとえば、好ましくは、ブロックの角)に対応することができ、好ましくは対応するが、たとえば、ブロック内の1つまたは任意の所定の個々のフラグメントに関して1つ(または実際には0個)のサンプルポイントだけがあってもよい。そのような配置は、フラグメントの2×2ブロックなどのフラグメントのブロックを一時にレンダリングするレンダリングシステムに特に適する可能性がある。
【０１０９】
本発明のこれらの実施形態および態様では、アルファ値比較(アルファテスト)を、任意の所望の適切な目的に使用することができる。
【０１１０】
特に好ましい実施形態では、比較結果は、上で述べたように、アルファテストによって導入されたエッジが当該の1つまたは複数のフラグメントを通過する可能性が高いかどうかを査定するのに使用される。これは、好ましくは、サンプリングポイントのすべてではなくいくつかがアルファテストに合格するか否かを査定することによって行われる(上で述べたように、いくつかのサンプルポイントが合格する(保存されるはずである)がいくつかが合格しない(破棄されるはずである)場合に、それが、アルファテストエッジが導入されることを暗示するからである)。最も好ましくは、上で述べたように、この基礎でアルファテストエッジを含むことがわかった任意のフラグメントまたはフラグメントのグループが、完全にスーパーサンプリングされた形でのレンダリングのために再発行される。
【０１１１】
この配置のこれらの態様および実施形態のアルファテスト配置は、上記に加えてまたはその代わりに、他の目的に使用することができる。たとえば、これらを、上で述べたように、アルファテスト結果(比較)を基礎としてフラグメントまたはフラグメントのグループを保持しまたは破棄するのに使用することができる。
【０１１２】
本発明を、上ではグラフィックレンダリングでのアルファテストの実行を特に参照して説明してきたが、本出願人は、本発明の原理および技法を、アルファ値だけではなく、他の状況およびパラメータに適用することもでき、たとえば、好ましくは、特定の1つまたは複数のパラメータあるいは属性の値が特定のサンプリングポイントもしくは位置について当初に定義されない場合、および/またはたとえば所定のフラグメントに関して定義される値の個数がそのフラグメントに関して考慮されねばならないサンプルポイントの個数より少ない場合に、適用することもできることを理解した。
【０１１３】
これは、たとえば、グラフィックス処理において、アルファテストの場合など、サンプルポイントに関して実行される保持テストまたは破棄テストがあり、レンダリングに関する当初に定義されるグラフィックスデータ(たとえば、フラグメント属性)が、当該の特定のサンプルポイントでのテストされる関連する1つまたは複数のパラメータの正確な値を与えない場合に、特にあてはまる可能性がある。
【０１１４】
たとえば、保持テストまたは破棄テストが、たとえばフラグメントの複数のサンプリングポイントの深さ値またはステンシル値に関してフラグメントシェーダ内で実行されなければならないが、そのフラグメントに関して当初に定義された単一の深さ値またはステンシル値だけがある場合がある。この場合に、アルファ値の導出に関して上で述べたものに類似する形で特定のサンプリングポイントに関する深さ値および/またはステンシル値を導出し、その後、アルファテストに関して上で述べたものに類似する形で各サンプリングポイントで(「アンチエイリアシングされた」形で)より正確に深さテストまたはステンシルテストを実行することができる。
【０１１５】
したがって、本発明を、グラフィックスレンダリングシステム内でアルファテスト以外にも適用できると思われる。
【０１１６】
したがって、本発明のもう1つの態様によれば、グラフィックスレンダリングシステムでパラメータテストを実行する方法であって、1つまたは複数のフラグメントに関するパラメータテストを
当該の1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントの個々のパラメータ値を生成するステップと、
サンプリングポイントごとに個別に、サンプリングポイントについて生成された個々のパラメータ値を使用してパラメータテストを実行するステップと
によって実行するステップを含む方法が提供される。
【０１１７】
本発明のもう1つの態様によれば、グラフィックスレンダリングシステムでパラメータテストを実行する装置であって、
1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントの個々のパラメータ値を生成する手段と、
各サンプリングポイントについて個別に、サンプリングポイントについて生成された個々のパラメータ値を使用してパラメータテストを実行する手段と
を含む装置が提供される。
【０１１８】
同様に、本発明のもう1つの態様によれば、表示されるイメージのグラフィックスプリミティブを処理する方法であって、
表示のためにプリミティブをレンダリングするためにグラフィックスフラグメントのセットを生成するステップと、
レンダリングされるグラフィックスフラグメントごとにレンダリングされたフラグメントデータのセットを判定するためにプリミティブについて生成されたグラフィックスフラグメントをレンダリングするステップと、
1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントについて個々のパラメータ値をレンダリングプロセス中に生成するステップと、
サンプリングポイントについて生成された個々のパラメータ値を、サンプリングポイントに関する後続処理のために使用するステップと
を含む方法が提供される。
【０１１９】
本発明のもう1つの態様によれば、表示されるイメージのグラフィックスプリミティブを処理するグラフィックス処理システムであって、
表示のためにプリミティブをレンダリングするためにグラフィックスフラグメントのセットを生成する手段と、
レンダリングされるグラフィックスフラグメントごとにレンダリングされたフラグメントデータのセットを判定するためにプリミティブについて生成されたグラフィックスフラグメントをレンダリングする手段と、
1つまたは複数のフラグメントの1つまたは複数のサンプリングポイントについて個々のパラメータ値をレンダリングプロセス中に生成する手段と、
サンプリングポイントについて生成された個々のパラメータ値を、サンプリングポイントに関する後続処理のために使用する手段と
を含むグラフィックス処理システムが提供される。
【０１２０】
当業者によって了解されるとおり、本発明のこれらの態様は、本明細書で説明する本発明の好ましい特徴および任意選択の特徴のいずれか1つまたは複数またはすべてを含むことができ、好ましくは含む。したがって、たとえば、当該の特定のパラメータおよびテストは、好ましくは、フラグメント(1つまたは複数)に関するサンプリングポイント(1つまたは複数)でのアルファ値、深さ値、および/またはステンシル値と、アルファテスト、深さテスト、および/またはステンシルテストである。同様に、当該のパラメータテストは、好ましくは、当該のサンプリングポイントを保持するのか、又は、破棄するのかを判断するのに使用される。
【０１２１】
同様に、個々のサンプリングポイントでの導出されたパラメータ値に関して実行されるテストは、好ましくは、サンプリングポイントについて個別に生成された1つまたは複数の個々のパラメータ値を1つまたは複数の各基準パラメータ値と比較することを含む。
【０１２２】
これらの配置で、望まれる場合に、深さ値とステンシル値との両方を導出し、その後、たとえば両方のパラメータ(属性)に関して比較テストを実行するなど、各サンプリングポイントで複数のパラメータまたは属性の値を導出する(およびテストする)ことも可能である。
【０１２３】
同様に、好ましくは、個々のパラメータ値は、当該の1つまたは複数のフラグメントについて、複数のサンプリングポイントおよび/またはカバーされるサンプリングポイントのそれぞれについて生成される。同様に、サンプリングポイントについて生成される個々のパラメータ値は、好ましくは、上で述べた形で推定される(および、たとえば、好ましくは、当該のフラグメントおよび/またはフラグメントのうちの複数について当初に定義されたかそれに割り当てられたパラメータ値(1つまたは複数)を少なくとも部分的に使用して生成される)。
【０１２４】
同様に、個々のパラメータ値がそれについて生成されるサンプリングポイントが、ラスタ化ステージでプリミティブのカバレッジを判定するのに使用されるサンプリングポイントに対応することが好ましい(これは必須ではないが)。
【０１２５】
一般に、本発明のこれらの態様および実施形態は、たとえば、プリミティブにまたがる既知の分布関数を有しない場合がある任意のフラグメント属性(たとえば、グラフィックスプログラマによってテクスチャを用いて任意に操作できるフラグメント属性など)に適用することができる。というのは、その場合に、グラフィックス処理システムが、当初に、各サンプリングポイントでのパラメータの正確な値を導出できない場合があるからである。同様に、本発明のこれらの態様および実施形態は、所定のパラメータまたは属性の値が、あるサンプルポイントで望まれるか要求されるが、そのサンプルポイントでの値がまだ定義されていない場合に必ず適用することができる。
【０１２６】
本発明を、主に単一のグラフィックスプリミティブの処理に関して説明してきたが、当業者によって了解されるとおり、表示されるイメージは、通常は複数のプリミティブから構成され、したがって、実際には、本発明の方法は、ディスプレイを構成するプリミティブごとに繰り返され、その結果、最終的に、フラグメントデータの適当なセットが、イメージ全体(または、たとえばタイルベースのレンダリングシステムでは、イメージの関連する部分)を表示するのに必要なイメージのサンプリングポイントごとに生成済みになり、そのデータを、その後、たとえば表示のためにダウンサンプリングすることができる。
【０１２７】
特に好ましい実施形態では、本発明のさまざまな機能が、ディスプレイデバイス用のフレームバッファに書き込まれるデータを生成し、出力する単一のグラフィックス処理プラットフォーム上で実行される。
【０１２８】
本発明は、「パイプライン式」配置を有するレンダラ(この場合に、レンダラは、レンダリングパイプラインの形になる)など、任意の形または構成のレンダラに適用可能である。好ましい実施形態では、本発明は、ハードウェアグラフィックスレンダリングパイプラインに適用される。本発明のさまざまな機能および要素などを、望み通りに、たとえば、好ましくは、適当な機能ユニット、処理ロジック、プロセッサ、マイクロプロセッサ配置などによって実施することができる。
【０１２９】
本発明は、直接モードレンダリング、遅延モードレンダリング、タイルベースのレンダリングなど、すべての形のレンダリングに適用可能であるが、遅延モードレンダリングを使用するグラフィックスレンダラおよび特にタイルベースのレンダラに特に適用可能である。
【０１３０】
上から了解されるとおり、本発明は、排他的にではないが特に、3Dグラフィックスプロセッサおよび3Dグラフィックス処理デバイスに適用可能であり、したがって、本明細書で説明される本発明の装置を含むか本明細書で説明される本発明の態様のうちの任意の1つまたは複数に従って動作する、3Dグラフィックスプロセッサおよび3Dグラフィックス処理プラットフォームに及ぶ。上で述べた特定の機能を実行するのに必要なすべてのハードウェアを条件として、そのような3Dグラフィックスプロセッサは、それ以外に、3Dグラフィックスプロセッサが含む通常の機能ユニットなどのうちのいずれか1つまたは複数またはすべてを含むことができる。
【０１３１】
本発明の説明された態様および実施形態のすべてが、適宜、本明細書で説明される好ましい特徴および任意選択の特徴のいずれか1つまたは複数またはすべてを含むことができ、好ましくは含むことも、当業者によって了解されるであろう。
【０１３２】
本発明による方法は、少なくとも部分的に、ソフトウェア、たとえばコンピュータプログラムを使用することによって実施することができる。したがって、さらなる態様から見た時に、本発明が、データ処理手段にインストールされた時に本明細書で説明される方法を実行するように特に適合されたコンピュータソフトウェアと、プログラム要素がデータ処理手段上で実行される時に本明細書で説明される方法を実行するコンピュータソフトウェアコード部分を含むコンピュータプログラム要素と、プログラムがデータ処理システム上で実行される時に本明細書で説明される1つまたは複数の方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムとを提供することがわかるであろう。データプロセッサは、マイクロプロセッサシステム、プログラマブルFPGA(フィールドプログラマブルゲートアレイ)などとすることができる。
【０１３３】
本発明は、データ処理手段を含むグラフィックスプロセッサ、レンダラ、またはマイクロプロセッサシステムを動作させるのに使用される時に、前記データ処理手段とあいまって、前記プロセッサ、レンダラ、またはシステムに本発明の方法のステップを実行させる上記ソフトウェアを含むコンピュータソフトウェア担体にも及ぶ。そのようなコンピュータソフトウェア担体は、ROMチップ、CD ROM、またはディスクなどの物理記憶媒体とすることができ、あるいは、ワイヤ上の電子信号、光信号、もしくは衛星へなどの無線信号または類似物などの信号とすることができる。
【０１３４】
さらに、本発明の方法のすべてのステップがコンピュータソフトウェアによって実行される必要があるのではなく、したがって、さらに広い態様から、本発明が、本明細書で示される方法のステップのうちの少なくとも1つを実行する、コンピュータソフトウェアおよびコンピュータソフトウェア担体上にインストールされた上記ソフトウェアを提供することを了解されたい。
【０１３５】
したがって、本発明は、コンピュータシステムと共に使用されるコンピュータプログラム製品として適切に実施することができる。そのような実施態様は、コンピュータ可読媒体、たとえばディスケット、CD-ROM、ROM、もしくはハードディスクなどの有形の媒体に固定されるか、あるいは、光通信回線もしくはアナログ通信回線を含むがこれらに限定はされない有形の媒体を介してまたはマイクロ波、赤外線もしくは他の伝送技法を含むがこれらに限定はされない無線技法を使用して無形でのいずれかでモデムもしくは他のインターフェースデバイスを介してコンピュータシステムに伝送可能であるかのいずれかの、一連のコンピュータ可読命令を含むことができる。この一連のコンピュータ可読命令は、本明細書で前に説明した機能性のすべてまたは一部を実施する。
【０１３６】
当業者は、そのようなコンピュータ可読命令を、多数のコンピュータアーキテクチャまたはオペレーティングシステムと共に使用される複数のプログラミング言語で記述できることを了解するであろう。さらに、そのような命令を、半導体、磁気、もしくは光を含むがこれらに限定されない現在または将来の任意のメモリテクノロジを使用して格納することができ、あるいは、光、赤外線、もしくはマイクロ波を含むがこれらに限定はされない現在または将来の任意の通信テクノロジを使用して伝送することができる。そのようなコンピュータプログラム製品を、付随する印刷文書または電子文書を伴う取り外し可能媒体、たとえばシュリンクラップされたソフトウェアとして配布でき、たとえばシステムROMまたは固定ディスク上でコンピュータシステムにプリロードでき、あるいは、ネットワーク、たとえばインターネットまたはワールドワイドウェブを介してサーバまたは電子掲示板から配布できることが、企図されている。
【０１３７】
本発明の複数の好ましい実施形態を、例としてのみ、添付図面を参照して説明する。
【図面の簡単な説明】
【０１３８】
【図１】エイリアシングの影響を概略的に示す図である。
【図２】スーパーサンプリングアンチエイリアシング技法を概略的に示す図である。
【図３】表示されるイメージを概略的に示す図である。
【図４】本発明の実施形態で使用される例示的なサンプリングパターンを示す図である。
【図５】本発明に従って動作できるグラフィックス処理プラットフォームの実施形態を示す図である。
【図６】図3のピクセルの拡大図を示す図である。
【図７】本発明の実施形態でレンダリングされるフラグメントに関連するデータを示す図である。
【図８】本発明によるアルファテスティング配置の実施形態を概略的に示す図である。
【図９】フラグメントに関連し、本発明の説明される実施形態でのアルファテストの結果として変更されるデータを概略的に示す図である。
【図１０】フラグメントに関連し、本発明の説明される実施形態でのアルファテストの結果として変更されるデータを概略的に示す図である。
【図１１】本発明によるアルファテスティング配置の実施形態を概略的に示す図である。
【発明を実施するための形態】
【０１３９】
本発明の好ましい実施形態を、これから、表示用の3Dグラフィックスの処理の文脈で説明する。しかし、当業者によって了解されるとおり、本発明は、3Dグラフィックスの処理に限定されず、他の応用をも有する。
【０１４０】
当技術分野で既知のとおり、また、上で述べたように、3Dグラフィックスイメージが表示される時に、そのイメージは、通常、まず一連のプリミティブ(ポリゴン)として定義され、このプリミティブは、次に、順番にグラフィックスレンダリングのためにグラフィックスフラグメントに分割(ラスタ化)される。通常の3Dグラフィックスレンダリング動作中に、レンダラは、(たとえば)各フラグメントに関連する色(赤、緑、および青すなわちRGB)データおよび透明度(アルファ、a)データを変更し、その結果、フラグメントを正しく表示できるようにする。フラグメントがレンダラを完全に通り抜けたならば、それに関連するデータ値は、メモリに格納され、表示のための出力の準備ができる。
【０１４１】
本発明は、特に、グラフィックスイメージを表示する時のアンチエイリアシング動作を容易にすることに関する。当技術分野で既知のとおり、アンチエイリアシングは、表示されるイメージの複数のサンプルをとり、その後、これらのサンプルをディスプレイの出力解像度にダウンサンプリングすることによって実行される。
【０１４２】
図3に、本実施形態で使用される基本的なアンチエイリアシング配置を概略的に示す。図3は、本実施形態では表示されるイメージの一部を表す(下でさらに述べるように、本実施形態がタイルベースのレンダリングシステムなので)(同等に、イメージのディスプレイ全体を表すためにピクセルのセットを考慮することができるが)ピクセルのアレイ30を概略的に示す。各ピクセルは、図3に示されているように、当該のピクセルについてイメージをサンプリングし、したがってピクセルが最終的なディスプレイにどのように表示されるのかを決定するのに使用される、4つのサンプリングポイントのセット31を含む。
【０１４３】
図3に示されているように、同一のサンプリングパターン31が、ピクセルアレイ30内のピクセルごとに使用される。この実施形態では、サンプリングパターンは、回転グリッドサンプリングパターンであるが、望まれる場合には、任意の他の適切なアンチエイリアシングサンプリングパターンを使用することができる。図4に、ピクセル内のサンプリングパターン内のサンプリングポイントの位置を示す単一ピクセルの拡大図を示す。
【０１４４】
図3に、単一のプリミティブ32の形でピクセルアレイ30にオーバーレイされたイメージも示す(ここで、イメージが、図3では、図を単純にするために単一のプリミティブを含むものとして図示されており、実際には、イメージは、当技術分野で既知のとおり、多数のオーバーラップするプリミティブを含むことができ、通常は含むことを了解されたい)。図3からわかるように、プリミティブ32は、ピクセルアレイ30内のピクセルのいくつかについて完全にオーバーレイするが、他のピクセルのうちのいくつかの一部分だけを通過する。
【０１４５】
イメージのプリミティブ32を処理するために、レンダリングシステムは、本質的に、ラスタ化ステージで、各ピクセルのサンプルポイントの各セット内のサンプルポイントのうちのどれがプリミティブ32によってカバーされるかを判定し、次に、これらのカバーされるサンプルポイントのデータをレンダリングし、格納し、その結果、プリミティブ32のイメージをディスプレイデバイス上に正しく表示できるようにする。
【０１４６】
本実施形態でのこの形での表示用のプリミティブ32のイメージの処理を、これから、図5を参照して説明するが、図5は、本発明に従って動作できる3Dグラフィックス処理プラットフォームの実施形態を概略的に示す。図5に示された3Dグラフィックス処理プラットフォームは、タイルベースのレンダラであるが、当業者によって了解されるとおり、他のレンダリング配置を使用することができる(実際に、本発明は、2次元グラフィックス処理にも同等に適用可能である)。
【０１４７】
図5に示されたグラフィックス処理プラットフォームは、ラスタライザ50を含み、ラスタライザ50は、レンダリングのためにグラフィックスプリミティブを受け取り、プリミティブデータを、そのプリミティブをレンダリングするための適当な位置を有するグラフィックスフラグメントに変換する。
【０１４８】
次に、レンダリングパイプラインの形のレンダラ51があり、レンダラ51は、ラスタライザ50からレンダリング用のグラフィックスフラグメントを受け取り、テクスチャマッピング、フォギング、ブレンディングなどの複数のレンダリング動作をこれらのグラフィックスフラグメントに適用して、フラグメントの表示用の適当なフラグメントデータを生成する。レンダラ51からのレンダリングされたフラグメントデータは、後続処理のためにレンダリングパイプラインのタイルバッファ52に格納される。
【０１４９】
タイルバッファ52は、当技術分野で既知のとおり、表示されるイメージの一部を表すフラグメントデータのアレイを格納する。イメージ全体を表示するのに十分なタイルが処理され終わるまで、各タイルが処理されたならば、そのデータが、適当なストレージにエクスポートされ、その後、次のタイルが処理され、以下同様である。
【０１５０】
本実施形態では、4つのタイルバッファ52が設けられる。各タイルバッファは、32×32アレイにそのフラグメントデータを格納する(すなわち、表示されるイメージ内のサンプル位置の32×32アレイに対応する)。これらのタイルバッファは、別々のバッファとして設けることができ、あるいは、実際には、すべてを同一のより大きいバッファの一部とすることができる。これらのタイルバッファは、グラフィックス処理プラットフォーム(チップ)上に配置される(そのプラットフォームにローカルである)。
【０１５１】
タイルバッファ52からのデータは、ダウンサンプリングユニット53に入力され、そこから、当技術分野で既知のとおり、ディスプレイデバイス55での表示のためにディスプレイデバイス55のフレームバッファ54(グラフィックス処理プラットフォーム自体には存在しなくてもよい)に出力される。ディスプレイデバイス55は、たとえば、コンピュータモニタなど、ピクセルのアレイを含むディスプレイを含むことができる。
【０１５２】
ダウンサンプリングユニット53は、タイルバッファに格納されたフラグメントデータを、ディスプレイデバイス55に適当な解像度にダウンサンプリングする(すなわち、ディスプレイデバイスのピクセルに対応するピクセルデータのアレイが生成されるようにする)。
【０１５３】
本実施形態では、イメージのサンプリングポイントは、タイルバッファ52内にそれら自体の個々のフラグメントデータエントリを有する。したがって、各32×32データ位置タイルバッファは、たとえば、タイルバッファとディスプレイフレームバッファとの間で4倍ダウンサンプリングが使用される場合に、表示されるイメージ内の16×16ピクセルアレイに対応する(その場合に、各ピクセルは、効果的に4つのサンプリングポイントを関連付けられるので)。
【０１５４】
この実施形態では、4つのタイルバッファのうちの2つが、各サンプリングポイントの色(赤、緑、青)値を格納するのに使用され(この目的に1つのタイルバッファを使用することが可能であるはずであるが、2つが好ましい)、1つのタイルバッファが、各サンプリングポイントのZ(深さ)値を格納するのに使用され、1つのタイルバッファが、各サンプリングポイントのステンシル値を格納するのに使用される。もちろん、他の配置が可能である。
【０１５５】
サンプリングポイントは、それぞれ、タイルバッファ52内にそれら自体の個々のフラグメントデータエントリを有するが、本実施形態では、タイルバッファ52内の個々のサンプル(データ)位置ごと(すなわち、個々のサンプルポイントごと)に別々のフラグメントをレンダリングするのではなく、1つのフラグメントが、イメージ内の所定のピクセルに対応する4つのサンプルポイントのセットごとにレンダリングされる。言い換えると、単一のフラグメントが、サンプルポイントのセットの4つすべてのサンプルポイント(したがって、イメージ内の1ピクセル)を一気に一緒にレンダリングするのに使用される、すなわち、所定のピクセルのサンプルポイントがすべて共通してレンダリングされるようにする。したがって、フラグメントがレンダリングされたならば、レンダリングされたフラグメントデータは、イメージの、とられる個々のサンプル位置ごとにフラグメントデータの別々のセットを提供するために、タイルバッファ52内の適当なサンプル位置の複数のコピーに格納される。
【０１５６】
したがって、現在の例では、図3に示されたプリミティブ32を含むイメージを考慮すると、ラスタライザ50は、グラフィックス処理システムからそのプリミティブを受け取り、次に、イメージのサンプリングポイントのどのセットが(すなわち、事実上、ピクセルアレイ30内のどのピクセルが)プリミティブ32によってカバーされるサンプリングポイントを含むか否かを判定する(これは、当技術分野で既知の任意の適当な形で実行することができる)。ラスタライザ50は、次に、プリミティブ32によってカバーされるサンプリングポイントを含むことがわかったサンプリングポイントのセットごとにフラグメントを生成する。ラスタライザ50は、次に、これらのフラグメントをレンダリングのためにレンダラ51に渡す。
【０１５７】
図7に、レンダリングされる前にフラグメントごとに生成され、レンダラ51を通過するデータ70を概略的に示す。図7に示されているように、各フラグメントに関連するデータは、とりわけ、フラグメントのx,y位置71(フラグメントが対応するサンプリングポイントのセットの(実際には、本実施形態では、イメージ内の関連するピクセルの)イメージ内のx,y位置を表す)を、フラグメントの色値(RGB)、透明度値(アルファ)、深さ値(z)、およびステンシル値など、必要なフラグメントごとのデータ72と一緒に含む。このフラグメントごとのデータ72は、当技術分野で既知のとおり、その後にタイルバッファ52に格納されるフラグメントのフラグメントデータの出力セットを提供するためにレンダラ51のレンダリングユニットによって使用され、適当に変更される。
【０１５８】
フラグメントに関連するデータ70は、フラグメントが対応するサンプルポイントのセット内のサンプル位置のそれぞれを表すビットアレイの形のカバレッジマスク73をも含む。ビットアレイカバレッジマスク73内の各位置には、対応するサンプル位置が当該のプリミティブによってカバーされることがラスタ化ステージでわかる場合に「1」がセットされ、サンプル位置が当該のプリミティブによってカバーされない場合に「0」がセットされる。これは、レンダリングプロセスが、所定のフラグメントに関連するサンプルポイントのうちのどれが当該のプリミティブ32によって実際にカバーされるかを知ることを可能にし、その結果、レンダリングプロセスが、あるフラグメントについてレンダリングされるフラグメントデータがそのプリミティブによってカバーされるサンプルポイントについてのみ使用される(かつ、たとえば格納される)ことを保証できるようになる。
【０１５９】
これが必要なのは、図3からわかるように、必ずしも、あるピクセルのサンプリングポイントのセットのサンプリングポイントのすべてがプリミティブによってカバーされるのではないからである。たとえば、レンダリングされるプリミティブ32に関して図3のピクセル33のサンプリングポイントのセットの拡大図を示す図6に示されているように、ピクセル33のサンプリングポイントのセットのうちで、サンプリングポイント43および44は、プリミティブ32によってカバーされるが、サンプリングポイント45および46は、そのプリミティブによってカバーされないことがわかる。したがって、ラスタライザ50は、サンプル位置のそのセットが、プリミティブ32によってカバーされる2つのサンプル位置43および44を含むので、ピクセル33のサンプル位置のセットのレンダリングのために1つのフラグメントを生成する。しかし、プリミティブ32は、サンプル位置43および44だけをカバーするので、レンダリングされるフラグメントデータは、これらのサンプル位置に関してのみタイルバッファ52に格納されねばならず、サンプル位置45および46に関して格納されてはならない。
【０１６０】
したがって、図6に示されたピクセル33のサンプル位置のセットに関して、ラスタライザは、形「1100」(図7に示されているように)のカバレッジマスク73を生成して、サンプル位置43および44がフラグメント70によってレンダリングされつつあるが、サンプル位置45および46がそのフラグメントによってレンダリングされてはいない(これらがプリミティブ32によってカバーされないので)ことを示す。
【０１６１】
したがって、ラスタライザ50は、レンダリングのためにプリミティブ32を受け取り、まずアレイ30のサンプリングポイントのどのセット(ピクセル)がプリミティブ32によってカバーされるサンプリングポイントを含むかを判定し、サンプリングポイントのこれらのセットのそれぞれについて、図7に示された形のデータを関連付けられたフラグメントを生成する。
【０１６２】
各フラグメントは、その後、レンダリングのために順番にレンダラ51に渡される。本実施形態では、フラグメントは、2×2フラグメントのブロックでレンダリングのためにレンダラ51に送られる、すなわち、レンダリングエンジンが、4フラグメント(ピクセル)ブロック(2ピクセル幅×2ピクセル高さ)でフラグメント(ピクセル)を効果的に処理するようにする。レンダラ内でフラグメント(ピクセル)を単独で処理するなど、他の配置が、もちろん可能である。
【０１６３】
レンダラ51は、当技術分野で既知のとおり、受け取るフラグメントに対してレンダリング動作を実行する。これらのレンダリング動作は、たとえば、フラグメントの色値(RGB)および透明度値(A)を変更して、各フラグメントの最終的なレンダリングされたフラグメントデータを提供することを含む。本実施形態では、レンダラ51は、各フラグメントに関連するテクスチャ位置データ(s,t)(これは、図7には図示されていない)に基づいてテクスチャマッピングプロセスを実行するテクスチャマッピングステージを含む。
【０１６４】
本実施形態では、テクスチャマッピングプロセスがフラグメントに適用されるテクスチャ(色)を決定するのに使用するイメージ内の位置は、フラグメントが共通してそれらをレンダリングするのに使用されているカバーされるサンプリングポイントのイメージ内の位置に従って選択される、すなわち、「重み付き」テクスチャサンプル位置が使用される。
【０１６５】
もちろん、他のテクスチャサンプル位置配置が可能である。たとえば、すべてのテクスチャルックアップ（look-up）を、単純に当該のサンプリングパターンの中央で行うことができる。
【０１６６】
各フラグメントが単一のテクスチャルックアップを受けるので、各フラグメントが対応するサンプリングポイントのセットが、共通して単一のテクスチャルックアップを受ける(すなわち、テクスチャリング動作が、フラグメントに関連するサンプリングポイントのセットのすべてのサンプルポイントについて使用される)すなわち、サンプリングポイントのセットが、効果的にマルチサンプリングされた形で処理されることを了解されたい。
【０１６７】
本実施形態のレンダリングプロセスのもう1つの部分は、アルファテストが、レンダリングされる各フラグメントに関して実行されることである。当技術分野で既知のとおり、アルファテストは、通常、フラグメントについて定義されたアルファ値をアルファテスト用に定義された基準アルファ値またはしきいアルファ値と比較することと、その後、その比較を基礎としてフラグメントの保存または破棄のいずれかを行うこととを含む。
【０１６８】
本実施形態では、アルファテスト処理は、上で述べたように各フラグメントが当初に単一のアルファ値をそれについて定義されるのみである場合があるという事実にもかかわらず、本明細書で述べるように「アンチエイリアシングされた」アルファテストプロセスを提供するために、本発明に従って変更される。
【０１６９】
図8、9、10、および11に、本実施形態のアルファテストプロセスを示す。
【０１７０】
図8に、図3からのピクセル80、81、82、および83に対応するピクセル80、81、82、および83の2×2ブロックを概略的に示す。図8の線84および85は、図3に示されたプリミティブのエッジ84および85に対応する。図8には、各ピクセル80、81、82、および83のそれぞれのサンプリングポイントも示されている。各フラグメントの中央点87、88、89、および90も、図8に示されている。
【０１７１】
上で述べたように、最初のラスタ化ステージで、プリミティブの幾何エッジ84および85が、各ピクセルのどのサンプリングポイントがそのプリミティブによってカバーされるかを判定するために、ピクセル80、81、82、および83のそれぞれのサンプリングポイントに対してテストされる。次に、フラグメントのセットが生成され、各フラグメントは、ディスプレイ内の所定のピクセルに対応し、そのピクセルの適当なデータを定義し、プリミティブが各ピクセルのどのサンプリング位置をカバーするかをも示す。
【０１７２】
したがって、現在の場合に、フラグメント80、81、82、および83のセットは、図9に概略的に示されているように、ラスタ化ステージでピクセル80、81、82、および83の2×2ブロックについて生成される。
【０１７３】
図9に示されているように、フラグメント80のカバレッジマスク73は、フラグメント80が対応するピクセルの2つのサンプリング位置がプリミティブによってカバーされることを示し、フラグメント81のカバレッジマスク73は、そのピクセルの3つのサンプリング位置がカバーされることを示し、以下同様である。
【０１７４】
やはり図9に示されているように、各フラグメント80、81、82、および83は、それについて当初に定義された単一の透明度(アルファ)値を有する。この値は、本実施形態では、プリミティブの頂点について定義されたアルファ値から導出されるが、当技術分野で既知の任意の適切な形で行うことができる。
【０１７５】
現在の例では、フラグメント80の透明度(アルファ)値が0.3であり、フラグメント81については1.0であり、フラグメント82については0.0であり、フラグメント83については0.3であると仮定される。もちろん、これらの値は、例示にすぎない。
【０１７６】
通常の過程では、フラグメントごとに定義されたこれらのアルファ値が、上で述べたように、アルファテストを基礎として全体としてフラグメント(したがってそのフラグメントが対応するピクセル)の保存または破棄のいずれかを行うために、アルファテスト用に定義された基準アルファ値との比較のために使用される。
【０１７７】
しかし、本実施形態では、および本発明によれば、アルファテストが実行される時に、アルファテストを実行するためにフラグメントごとに当初に定義されたアルファ値を単純に採用するのではなく、その代わりに、個々のアルファ値が、当該のフラグメントがそれをレンダリングするのに使用されているカバーされるサンプリング位置のそれぞれに関して生成される。その後、個々のサンプリング位置に関するアルファテストが、実行される。
【０１７８】
このプロセスを、フラグメント80のサンプリングポイント86のアルファ値の導出に関して示す。同一のプロセスが、当該のフラグメントについてプリミティブによってカバーされる各個々のサンプリングポイントに関して適用される。
【０１７９】
フラグメント80のサンプリングポイント86の個々のアルファ値を生成するために、まず、フラグメント80について当初に定義された単一のアルファ値0.3が、フラグメント80の中央87でのアルファ値としてとられる。
【０１８０】
その後、サンプリングポイント86でのアルファ値とフラグメント80の中央87でのアルファ値との間の差が、推定される。これは、スクリーンX,Y位置に関するアルファ値の傾き(導関数)を推定することによって行われる(この傾きは、その後、サンプリングポイント86とフラグメント80の中央87との間の既知の相対スクリーンX,Y距離を使用して中央87からサンプリングポイント86へのアルファ値の相対変化を導出するのに使用することができる)。
【０１８１】
位置に関するアルファ値の傾き(変化の割合)は、本実施形態では、フラグメント80の中央87でのアルファ値とフラグメント81の中央88でのアルファ値(フラグメント81について定義されたアルファ値1.0にされる)との間の差を判定することと、中央87と88との間のXでの既知のスクリーン距離とによってX方向でのアルファ値の傾きを導出することによって決定される。
【０１８２】
同様に、フラグメント80のY方向でのアルファ値の傾き(変化の割合)は、フラグメント80の中央87でのアルファ値とフラグメント82の中央89でのアルファ値(フラグメント82について定義されたアルファ値0.0にされる)との間の差を識別することと、フラグメント中央の間のY距離とによって決定される。
【０１８３】
生成されたXおよびYの導関数(変化の割合)は、次に、フラグメント80の中央87とサンプリングポイント86との間のスクリーン空間X距離およびY距離を乗算されて、中央87からサンプリングポイント86までのアルファ値の変化を与える。このアルファ値の推定された変化が、次に、フラグメント80の中央点87のアルファ値(すなわち、本実施形態ではフラグメント80について当初に定義されたアルファ値)に加算され、これによって、サンプルポイント86での「真の」アルファ値の推定値が導出される。
【０１８４】
その後、このプロセスは、フラグメント80の残りのカバーされるサンプル位置のそれぞれについて、および同様に他のフラグメントのカバーされるサンプル位置について繰り返される(この場合に、他のフラグメントの中央点でのアルファ値として各フラグメントの当初に定義されたアルファ値を使用するのではあるが。したがって、たとえば、フラグメント81の場合に、そのフラグメントの中央88でのアルファ値は、フラグメント81の当初に定義されたアルファ値1.0になるようにされる)。
【０１８５】
図11に、さらに、アルファ値導出プロセスを示す。図11に示されているように、サンプリング位置101、102、103、および104を有する所定のフラグメント100について、フラグメントについて当初に定義されたアルファ値105が、フラグメントの中央106でのアルファ値として採用され、フラグメント勾配(デルタ)107および108が、x方向およびy方向で導出され、その後、各サンプリングポイントでのアルファ値を与えるために中央点アルファ値105と共に使用される。
【０１８６】
望まれる場合に、各カバーされるサンプル位置のアルファ値を導出し、推定する他の配置を使用することができる。
【０１８７】
たとえば、アルファ値を推定する時にフラグメントの2×2ブロックの他のフラグメント81、82、および83のそれぞれについて、フラグメント80について導出されたXおよびYの勾配(変化の割合)を使用するのではなく、勾配(変化の割合)値の新しいセットを、類似する形でフラグメントごとに個別に生成することができる。
【０１８８】
したがって、たとえば、フラグメント81の場合に、X勾配を、フラグメント80の中央87でのアルファ値とフラグメント81の中央88でのアルファ値とを考慮することによって導出することができ、Y勾配を、フラグメント81の中央88でのアルファ値とフラグメント83の中央90でのアルファ値とを考慮することによって導出することができる。
【０１８９】
たとえば、フラグメント81の中央88でのアルファ値とフラグメント83の中央90でのアルファ値とを使用して、フラグメント80のY勾配を導出することなども可能である。同様に、望まれる場合に、図8に示されたものよりさらに離隔されたフラグメントのアルファ値を使用して、アルファ勾配を導出することができる。
【０１９０】
一般に、スクリーン空間X距離およびY距離に関するアルファ値の勾配(変化の割合)を導出する任意の適切な所望の技法を使用することができる。より洗練された技法は、サンプルポイントでのアルファ値のより正確な推定値を提供する可能性があるが、その一方で、より高い処理作業負荷を必要とする可能性がある。
【０１９１】
サンプル位置ごとに推定された個々のアルファ値は、その後、アルファテスト比較に使用される、すなわち、これらは、アルファテスト用に定義されたしきいアルファ値と比較される。したがって、たとえば、サンプル位置86の場合に、そのサンプル位置について推定されたアルファ値が、アルファテスト用に定義された基準アルファ値と比較される。これが、その後、各カバーされるサンプリング位置に関して別々に繰り返される。
【０１９２】
次に、個々のサンプルポイントに関するアルファテスト比較の結果が、アルファテスト比較を基礎とするさらなる処理からサンプル位置を保持するか、又は、破棄するかのいずれかを行うのに使用される。これは、アルファテストの結果として破棄されることが実際にわかったすべてのカバーされるサンプリングポイントを除外するために、当該のフラグメントに関連するカバレッジマスク73を変更することによって行われる。
【０１９３】
このプロセスは図10に示されており、図10には、アルファテスト比較が直線(効果的にアルファテストによって導入されたエッジ)91をもたらし、その直線91の上ではサンプルが現在の例でアルファテストの結果として破棄されることがわかるが、その直線91の下ではサンプルが保持されるという仮定のもとに、アルファテストの実行の後の図9に示されたフラグメント80、81、82、および83の結果のフラグメントデータセットが示されている。
【０１９４】
アルファテストによって導入されたエッジ91をもたらしたこのアルファテストおよびアルファしきい値の結果は、図9に示されているように、そのサンプル位置のカバレッジマスクビットを「1」から「0」に変更することによって、サンプリングポイント86がさらなる処理から除外される(すなわち、アルファテストに合格しなかった)ことを示すように、フラグメント80のカバレッジマスクが変更されることである。同様に、フラグメント81に関して、そのフラグメントのカバレッジマスクには、今は「0000」がセットされている。というのは、アルファテストが、プリミティブによってカバーされたそのフラグメントのサンプル位置のすべてを破棄したからである。フラグメント83の場合に、2つのサンプル位置がアルファテストによって破棄され、したがって、そのフラグメントのカバレッジマスクは、「1001」になる。
【０１９５】
この形で、全体として1ピクセルの4つのサンプリング位置のセットについて定義された単一の初期アルファ値だけがある場合があるという事実にもかかわらず、個々のアルファテストが、カバーされる各サンプリング位置ごとに実行され、その後、サンプリング位置を、このアルファテストの結果として個別に保持するか、又は、破棄することができる。これの効果は、アルファテストによって導入されるすべてのエッジが、効果的に「アンチエイリアシングされる」ことである(これらのエッジが、その位置に関してサンプリング位置のレベルで処理されるので)。
【０１９６】
フラグメントがレンダリングされたならば、そのデータを、タイルバッファ52に適当に格納する必要がある。本発明によれば、各レンダリングされたフラグメントのデータは、各フラグメントに関連するカバレッジマスク73によって示される、タイルバッファアレイ内の適当なサンプル位置(1つまたは複数)に格納される。したがって、たとえば、図7に例示されたフラグメント70の場合に、そのフラグメントのレンダリングされたデータは、タイルバッファ52内のサンプル位置のうちの2つに格納されるが、フラグメント70に関連する他の2つのサンプル位置には格納されない。
【０１９７】
タイルバッファ52に格納されるフラグメントデータは、上で述べたように各サンプル位置の色値(RGB)、透明度値(A)、深さ値(Z)、およびステンシル値を含む。このデータは、任意の適切な形で格納することができる。
【０１９８】
当業者によって了解されるとおり、タイルバッファに格納される、新たにレンダリングされたフラグメントデータは、当技術分野で既知のとおり、タイルバッファに既に格納されているデータとブレンディングすることができ、通常はブレンディングされる必要がある。したがって、所定のフラグメントが、共通して複数のサンプル位置をレンダリングするのに使用されている(すなわち、フラグメントからのデータがタイルバッファ内の複数のサンプル位置に格納されるようになる)場合に、このブレンディング動作は、これを達成するためすなわち、新たにレンダリングされたフラグメントデータをタイルバッファ内の各適当なサンプル位置に適当にブレンディングするために、適当な形で実行されなければならない。したがって、たとえば、ブレンディング動作を、たとえば、レンダリングされたフラグメントデータを複数の並列のタイルバッファにブレンディングするために、適当に「並列の」形で実行することができる。
【０１９９】
このプロセスが、プリミティブ32に関係付けられたすべてのフラグメントについて完了したならば、イメージの後続プリミティブについてこのプロセスを繰り返すことができる(上で述べたように、イメージは、通常は単一のプリミティブ32のみではなく、複数のプリミティブから構成されるので)。このプロセスは、タイルバッファ52がそのサンプル位置のそれぞれに適当なデータを格納されるまで、イメージのすべてのプリミティブについて繰り返される。
【０２００】
次に、タイルバッファに格納されたデータを、当技術分野で既知のとおり、ダウンサンプリングおよびその後の表示のためのフレームバッファ54へのエクスポートのためにダウンサンプリングユニット53にエクスポートすることができる。このダウンサンプリングは、任意の適切な形で行うことができる。本実施形態では、データの線形ブレンディングが、データをダウンサンプリングするのに使用される。しかし、望まれる場合には、他の配置が可能である。
【０２０１】
表示されるイメージが複数のオーバーラップするプリミティブを含む場合には、当技術分野で既知のとおり、レンダリングプロセスが、実際に任意の所定のプリミティブが実際に所定のサンプリングポイントで見られるかどうかを判定することも必要になる。本実施形態では、これは、当技術分野で既知のとおり、フラグメントがレンダリングされる時のフラグメントの深さ(z)値を比較することによって実行される。具体的に言うと、新しいフラグメントをレンダリングする時に、そのフラグメントに関連する深さ(z)値が、そのフラグメントが対応するタイルバッファ52内のサンプル位置について既に格納されているフラグメントデータの深さ値と比較され、その比較が、新しいフラグメントが見られないことを示す場合には、新しいフラグメントは、それ以上は処理されない。その一方で、深さ値の比較が、実際に新しいフラグメントがタイルバッファ52内に現在格納されているフラグメントの代わりに見られることを示す場合には、新しいフラグメントがレンダリングされ、そのレンダリングされたフラグメントデータが、タイルバッファ52内の適当なサンプル位置の既存データの代わりに格納される。
【０２０２】
ダウンサンプリングユニット53は、それがフレームバッファ54に出力するデータに対して適当なガンマ補正をも適用する。
【０２０３】
本発明および本実施形態に対する他の配置および変更が、もちろん可能である。たとえば、アルファテストおよび/またはアルファ値推定に関する、1フラグメントあたりまたは1ピクセルあたり4つを超えるサンプル位置を使用することができる。
【０２０４】
本実施形態で、アルファテストによって導入されたエッジが1つのフラグメントまたはフラグメントのブロックを通過する可能性が高いかどうかを査定するために、推定されたアルファテストを使用することも可能である。たとえば、図8に示された配置では、たとえばフラグメント83に関するアルファテスト比較の結果が、2つのサンプル位置が保持されるが2つが破棄されることを示す。それが、アルファテストによって導入されたエッジがそのフラグメントを通過することの表示になる。この種のテストに関して、たとえばプリミティブの外側幾何エッジのラスタ化に使用されるものと同一のサンプル位置を使用するのではなく、フラグメントの角に関してテストを実行することも可能である。
【０２０５】
そのような配置では、1つのフラグメントまたはフラグメントのブロックがアルファテストによって導入されたエッジを含む可能性が高いことがわかる場合に、好ましい実施形態では、当該のフラグメントまたはフラグメントのブロックが、好ましくは、完全にサブサンプリングされた基礎での(言い換えると、各サンプル位置が別々のフラグメントとして処理され、したがってそれ自体の個々の色値およびアルファ値などを含むようにする)レンダリングのために再発行される。
【０２０６】
上からわかるように、本発明は、少なくともその好ましい実施形態において、アルファテストによって導入されるエッジを、完全にスーパーサンプリングされた形でレンダリングするためにプリミティブを処理する必要なしにアンチエイリアシングできるシステムを提供する。たとえば、完全にスーパーサンプリングする方法とは異なって、本発明の方法は、アンチエイリアシングされたアルファテスト配置のために1ピクセルあたりまたは1フラグメントあたり複数の色値を計算することを必要とはしない。これは、たとえば、本発明が、完全にスーパーサンプリング式のシステムと比較して、付随する電力節約と共に、処理での計算の減少を容易にすることを意味する。
【０２０７】
これは、本発明の好ましい実施形態では、少なくとも、レンダリングされるフラグメントに関して複数の個々のサンプリングポイントの個々のアルファ値を再作成するために、レンダリングされる各フラグメントについて当初に定義された単一のアルファ値を使用することと、その後、これらの個々のサンプリングポイントに関して個別にアルファテストを実行することとによって達成される。
【０２０８】
上で述べたように、本発明および本実施形態を、特にグラフィックス処理システムでのアルファテストに関して説明したが、本発明を、特定のサンプルポイントでの属性値またはパラメータ値を知ることが望まれ、これらの値がまだ定義されていない他の状況に同等に適用することができる。したがって、たとえば、本発明を、特に、フラグメントシェーダ内など、グラフィックス処理システム内の深さテスティング動作および/またはステンシルテスティング動作に使用することができる。これらの場合に、アルファテスティングに関して上で説明した方法および技法を、当該の特定の1つまたは複数のパラメータに関して同様に適用することができる。
【符号の説明】
【０２０９】
30  ピクセルのアレイ
31  4つのサンプリングポイントのセット
32  プリミティブ
33  ピクセル
43  サンプリングポイント
44  サンプリングポイント
45  サンプリングポイント
46  サンプリングポイント
50  ラスタライザ
51  レンダラ
52  タイルバッファ
53  ダウンサンプリングユニット
54  フレームバッファ
55  ディスプレイデバイス
70  データ
71  x,y位置
72  フラグメントごとのデータ
73  カバレッジマスク
80  ピクセル
81  ピクセル
82  ピクセル
83  ピクセル
84  線
85  線
86  サンプリングポイント
87  中央点
88  中央点
89  中央点
90  中央点
91  直線
100  フラグメント
101  サンプリング位置
102  サンプリング位置
103  サンプリング位置
104  サンプリング位置
105  アルファ値
106  中央
107  フラグメント勾配(デルタ)
108  フラグメント勾配(デルタ)
【図３】
0005483893.tif 000002
【図４】
0005483893.tif 000003
【図５】
0005483893.tif 000004
【図６】
0005483893.tif 000005
【図７】
0005483893.tif 000006
【図８】
0005483893.tif 000007
【図９】
0005483893.tif 000008
【図１０】
0005483893.tif 000009
【図１１】
0005483893.tif 000010
【図１】
0005483893.tif 000011
【図２】
0005483893.tif 000012