(57)【要約】【課題】表示されるべき画像のサンプリング用に16倍サンプリングマスクが使われる場合、フラグメントが生成されレンダリングされて、カバーされる各サンプリングポジションごとに、レンダリング用フラグメントデータを生成するグラフィックス処理システムを提供すること。【解決手段】ただし、16倍サンプリングマスク(81、84、86、89)は、そのサンプリング点を、レンダリングされるべきであるフラグメントと関連づける目的のために、2レベルの階層に分けることができる。すなわち、フラグメント(82、85、88)が16倍サンプリングマスクの16個すべてのサンプリング点に関連づけられた第1のレベル、およびフラグメント(91、92)が16倍サンプリングマスクの4個のサンプリング点のみに関連づけられた第2のレベルである。【選択図】図８
2010102713.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス処理システムにおいて表示用にコンピュータグラフィックスを処理する方法であって、
グラフィックスフラグメントを生成しレンダリングして、表示されるべき画像のサンプリング点に関するレンダリング用グラフィックスデータを生成するステップを含み、
レンダリングされる各グラフィックスフラグメントが、表示されるべき前記画像のサンプリング点セットを各グラフィックスフラグメントに関連づけており、前記フラグメントに関連づけられた前記サンプリング点セットの前記サンプリング点の1つまたは複数に関するレンダリング用グラフィックスデータを生成するのに使われるべきであり、
レンダリングされる前記グラフィックスフラグメントは、異なる数のサンプリング点を含むサンプリング点セットに関連づけることができる方法。
【請求項２】
グラフィックスフラグメントに関連づけられた各サンプリング点セットが、前記画像がその上にまたはそれを介して表示されるべきである出力装置の、所与の画素に関するサンプリング点セットに、または画素の一部に関するサンプリング点セットに対応する、請求項1に記載の方法。
【請求項３】
4サンプリング点セットまたは16サンプリング点セットにグラフィックスフラグメントを関連づけることができる、請求項1または2に記載の方法。
【請求項４】
フラグメントを関連づけることができるより小さい各サンプリング点セットが、フラグメントを関連づけることができるより大きいサンプリング点セットのある特定の部分またはサブリージョンに対応し、または表す、請求項1から3のいずれか一項に記載の方法。
【請求項５】
処理されるべき前記画像に適用されるべきであるサンプリングマスクの前記サンプリング点すべてに対応するサンプリング点セットに、または処理されるべき前記画像に適用されるべきである前記サンプリングマスクの前記サンプリング点サブセットに対応するサンプリング点セットに、グラフィックスフラグメントを関連づけることができる、請求項1から4のいずれか一項に記載の方法。
【請求項６】
処理されるプリミティブによるサンプリング点セットのカバレージに基づいて、所与のフラグメントに関連づけるための前記サンプリング点セットを選択するステップを含む、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記フラグメントと対応する前記サンプリング点セット中の前記サンプリング点のどれをレンダリングするのに、各グラフィックスフラグメントが使われているかを示すデータに前記フラグメントを関連づけるステップを含む、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記フラグメントと対応する前記サンプリング点セット中の前記サンプリング点のどれをレンダリングするのに、前記フラグメントが使われているかを示す前記データが、前記フラグメントがレンダリングするのに使われている前記カバーされるサンプリングポジションを示すカバレージマスクを含み、
前記カバレージマスク中の各ポジションが、第1の個数のサンプリング点を表すこのようなカバレージマスクに、または前記カバレージマスク中の各ポジションが第2の異なる個数のサンプリング点を表すカバレージマスクに、フラグメントを関連づけることができる、請求項7に記載の方法。
【請求項９】
表示用にグラフィックスを処理する方法であって、
前記フラグメントがレンダリングするのに使われている前記カバーされるサンプリングポジションを示すカバレージマスクを、レンダリングされるべき各グラフィックスフラグメントに関連づけるステップを含み、
このような各カバレージマスクが、所与のサンプリング点または複数のサンプリング点がカバーされるかどうかを示すのにそれぞれ用いることができる複数のポジションをもち、
前記カバレージマスク中の各ポジションが、前記画像の第1の個数のサンプリング点を表すこのようなカバレージマスクに、または前記カバレージマスク中の各ポジションが前記画像の第2の異なる個数のサンプリング点を表すカバレージマスクに、フラグメントを関連づけることができる方法。
【請求項１０】
グラフィックスフラグメントを生成しレンダリングして、表示されるべき画像のサンプリング点に関するレンダリング用グラフィックスデータを生成する手段を備え、
レンダリングされる各グラフィックスフラグメントが、表示されるべき前記画像のサンプリング点セットを各グラフィックスフラグメントに関連づけており、前記フラグメントに関連づけられた前記サンプリング点セットの前記サンプリング点の1つまたは複数に関するレンダリング用グラフィックスデータを生成するのに使われるべきであり、
レンダリングされる前記グラフィックスフラグメントは、異なる数のサンプリング点を含むサンプリング点セットに関連づけることができるグラフィックス処理システム。
【請求項１１】
グラフィックスフラグメントに関連づけられた各サンプリング点セットが、前記画像がその上にまたはそれを介して表示されるべきである出力装置の、所与の画素に関するサンプリング点セットに、または画素の一部に関するサンプリング点セットに対応する、請求項10に記載のシステム。
【請求項１２】
4サンプリング点セットまたは16サンプリング点セットにグラフィックスフラグメントを関連づけることができる、請求項10または11に記載のシステム。
【請求項１３】
フラグメントを関連づけることができるより小さい各サンプリング点セットが、フラグメントを関連づけることができるより大きいサンプリング点セットのある特定の部分またはサブリージョンに対応し、または表す、請求項10から12のいずれか一項に記載のシステム。
【請求項１４】
処理されるべき前記画像に適用されるべきであるサンプリングマスクの前記サンプリング点すべてに対応するサンプリング点セットに、または処理されるべき前記画像に適用されるべきである前記サンプリングマスクの前記サンプリング点サブセットに対応するサンプリング点セットに、グラフィックスフラグメントを関連づけることができる、請求項10から13のいずれか一項に記載のシステム。
【請求項１５】
処理されるプリミティブによるサンプリング点セットのカバレージに基づいて、所与のフラグメントに関連づけるための前記サンプリング点セットを選択する手段を備える、請求項10から14のいずれか一項に記載のシステム。
【請求項１６】
前記フラグメントと対応する前記サンプリング点セット中の前記サンプリング点のどれをレンダリングするのに、各グラフィックスフラグメントが使われているかを示すデータに前記フラグメントを関連づける手段を備える、請求項10から15のいずれか一項に記載のシステム。
【請求項１７】
前記フラグメントと対応する前記サンプリング点セット中の前記サンプリング点のどれをレンダリングするのに、前記フラグメントが使われているかを示す前記データが、前記フラグメントがレンダリングするのに使われている前記カバーされるサンプリングポジションを示すカバレージマスクを含み、
前記カバレージマスク中の各ポジションが、第1の個数のサンプリング点を表すこのようなカバレージマスクに、または前記カバレージマスク中の各ポジションが第2の異なる個数のサンプリング点を表すカバレージマスクに、フラグメントを関連づけることができる、請求項16に記載のシステム
【請求項１８】
各フラグメントがレンダリングするのに使われている前記カバーされるサンプリングポジションを示すカバレージマスクを、レンダリングされるべきグラフィックスフラグメントに関連づける手段を備え、
このような各カバレージマスクが、所与のサンプリング点または複数のサンプリング点がカバーされるかどうかを示すのにそれぞれ用いることができる複数のポジションをもち、
前記カバレージマスク中の各ポジションが、前記画像の第1の個数のサンプリング点を表すこのようなカバレージマスクに、または前記カバレージマスク中の各ポジションが前記画像の第2の異なる個数のサンプリング点を表すカバレージマスクに、フラグメントを関連づけることができるグラフィックス処理システム。
【請求項１９】
プログラム要素がデータ処理手段において稼働されると、請求項1から9のいずれか一項に記載の方法を実施するコンピュータソフトウェアコード部分を備えるコンピュータプログラム要素。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスの処理に関し、詳細には、コンピュータグラフィックスを処理するときにアンチエイリアシングを行う方法および機器に関する。
【背景技術】
【０００２】
本発明を、3次元グラフィックスの処理を特に参照して説明するが、2次元グラフィックスの処理にも同等に適用可能であることが当業者には理解されよう。
【０００３】
当該分野において公知であるように、3Dグラフィックス処理は普通、3Dグラフィックス処理動作をより簡単に行わせるように、最初に、表示されるべきシーンをいくつかの類似基本構成要素(いわゆる「プリミティブ」)に分割することによって行われる。こうした「プリミティブ」は一般に、三角形など、単純な多角形の形である。
【０００４】
表示されるべきシーン用プリミティブは一般に、グラフィックス処理システム向けのアプリケーションプログラムインタフェースによって、グラフィックスの表示を要求するアプリケーション(たとえばゲーム)から受信されるグラフィックス描画命令(リクエスト)を使って生成される。
【０００５】
各プリミティブはこの段階では一般に、頂点セットによって定義され、頂点セットとして表される。プリミティブ用の各頂点は、頂点を表すデータ(ポジション、色、テクスチャおよび他の属性データなど)のセットを各頂点に関連づけている。このデータは次いで、たとえば、表示用に頂点(頂点と関係するプリミティブ(群))をラスター化しレンダリングする際に使われる。
【０００６】
シーン用のプリミティブおよびそれらの頂点は、生成され定義されると、たとえば、シーンを表示するように、グラフィックス処理システムによって処理することができる。
【０００７】
このプロセスは基本的に、処理されるべきシーン領域をカバーするサンプリング点配列のどのサンプリング点がプリミティブによってカバーされるか決定すること、および次いで、各サンプリング点がそのサンプリング点の所にプリミティブを表すために(たとえば、その色などによって)呈すべき外観を決定することを伴う。こうしたプロセスは一般に、それぞれ、ラスター化およびレンダリングと呼ばれる。
【０００８】
ラスター化プロセスは、プリミティブ用に使われるべきであるサンプルポジション(すなわち、表示されるべきシーン中でプリミティブを表すのに使われるべきサンプル点の(x, y)ポジション)を決定する。この決定は通常、プリミティブの頂点のポジションを用いて行われる。
【０００９】
レンダリングプロセスは次いで、サンプル点の所にプリミティブを表示するのに必要な、赤、緑および青(RGB)色値ならびに「アルファ」(透明度)値などのデータを派生する(すなわち、各サンプル点に「陰影をつける」)。この派生は、当該分野において公知であるように、テクスチャの適用、サンプル点データの値のブレンディングなどを伴う。
【００１０】
(3Dグラフィックスの文献において、「ラスター化」という用語は時には、サンプルポジションへのプリミティブ変換およびレンダリング両方を意味するのに使われる。ただし、本明細書では、「ラスター化」は、プリミティブデータをサンプリング点アドレスにのみ変換することを指すのに使われる)。
【００１１】
こうしたプロセスは通常、グラフィックス処理動作(レンダリングなど)が行われる対象である「フラグメント」と一般に呼ばれる別々のグラフィカルエンティティとしてサンプリング点を「表す」ことによって行われる。各サンプリング点は、実質的に、当該のサンプリング点の所でプリミティブをレンダリングするのに使われるフラグメントによって表される。「フラグメント」は、レンダリングプロセス(レンダリングパイプライン)を通過するグラフィカルエンティティである。
【００１２】
(「フラグメント」はしたがって、事実上、プリミティブの所与のスクリーン空間サンプル点の所で補間されるプリミティブデータセットである(このセットをフラグメントに関連づけている)。フラグメントは、当該のサンプル点(フラグメントポジション)の所のプリミティブに陰影をつけることを要求される個々のプリミティブおよび他の状態データも含み得る。各グラフィックスフラグメントは合理的には、処理される際はシーンの「画素」と効果的に等価であるとみなすことができよう)。
【００１３】
各グラフィックス「フラグメント」は、最終表示における単一の画素(ピクチャ要素)に対応し得る(というのは、画素は最終表示において単一のものなので、グラフィックスプロセッサが動作する(レンダリングする)対象である「フラグメント」と、ディスプレイの画素との間に1対1のマッピングが存在し得るからである)。ただし、たとえば縮小など特定の形の後処理が、最終画像の表示に先立って、レンダリングされる画像に対して行われる場合は、フラグメントとディスプレイ画素との間に1対1対応がないケースもあり得る。
【００１４】
表示用にグラフィックスを処理する際(コンピュータ生成画像を表示する際)に遭遇する1つの問題は、表示画像が、使われるディスプレイ、たとえばモニタやプリンタの別々の画素位置に量子化されることである。この問題により、表示される画像の解像度が制限され、たとえば、出力表示装置の解像度が滑らかなラインを表示するのに十分なほど高くない場合は、望ましくない視覚的アーティファクトを生じ得る。こうした効果は一般に、「エイリアシング」と呼ばれる。
【００１５】
図1は、このようなエイリアシング効果を示す。図1の左側は、描画されるべき画像を示し、右側は、表示される実際の画像を示す。見ると分かるように、白色オブジェクトの所望される滑らかな曲線は実際には、ディスプレイ上にギザギザの外観を呈する。これがエイリアシングである。(図1において、各正方形は、ディスプレイの画素を表し、×印は、その画素位置に対する色値が決定される(サンプリングされる)各(x, y)画素位置にある点を表す。たとえば、図1の画素Aは、その画素位置に対する色サンプリング点が白色オブジェクト中にあるので、完全な白色として描画される。図1では、対象となっている画素に対するサンプルの×印のみを示してあるが、実際にはすべての画素がサンプリングされることに留意されたい)。
【００１６】
裸眼に見えるすべてのエイリアシングアーティファクトは、十分に高い解像度のディスプレイを使うことによって取り除くことができるであろう。ただし、電子ディスプレイおよびプリンタの解像度は通常制限され、したがって多くのグラフィックス処理システムは、他の技法を用いて、エイリアシングの効果をなくし、または低減させることを試みる。このような技法は通常、アンチエイリアシング技法と呼ばれる。
【００１７】
公知の1つのアンチエイリアシング技法は、スーパーサンプリングまたはオーバーサンプリングと呼ばれる。
【００１８】
このような構成では、最終表示の1つの画素につき複数のサンプリング点(ポジション)があり、(カバーされる)個々の各サンプリング点に(たとえば、各サンプリング点を別個のフラグメントとしてレンダリングすることによって)、別個のカラーサンプルがとられる。これには、レンダリングプロセス中にプリミティブによってカバーされるディスプレイ画素の各サンプリング点用に、異なるカラーサンプルがとられるという効果がある。
【００１９】
上記のことは、ディスプレイの各画素用に複数のカラーサンプルがとられることを意味する(各サンプリング点に別個の色値がレンダリングされるので、画素用の各サンプリング点用に1つ)。こうした複数のカラーサンプルは次いで、画素が表示される際に画素に対して単一の色に合成される。この合成には、当該の画素位置にある元の画像からの色値を平滑化し、または平均化するという効果がある。
【００２０】
図2は、スーパーサンプリングプロセスを示す。図2に示す例において、4個のサンプル点が、ディスプレイ中の各画素に対して決定され、別個のカラーサンプルが、レンダリングプロセス中に各サンプル点に対してとられる。(このような各サンプルはしたがって、実質的には「サブ画素」とみなしてよく、ディスプレイ中の各画素は、このような4個のサブ画素からなる)。所与の画素に対する4個の色値サンプル(サブ画素)は次いで、ディスプレイ中の画素用に使われる最終色が、画素に対してとられる4個のカラーサンプルの色の適切な平均(ブレンド)となるように合成される(ダウンフィルタリングされる)。
【００２１】
上記の合成には、表示される画像を平滑化する効果があり、たとえば、エイリアシングアーティファクトを、中間の色調で囲むことによって目立たないようにする。このことは、図2で分かるであろう。図2で、画素Aは、ここでは2つの「白色」サンプルおよび2つの「黒色」サンプルを有するので、表示画像中では50%の「白色」に設定される。このようにして、白色オブジェクトの輪郭付近の画素は、たとえば、何個のサンプルがエッジの各側にあることが分かっているかに基づいて、より滑らかなエッジを生じるようにぼかされる。
【００２２】
スーパーサンプリングは実質的に、ディスプレイ用に実際に使われるよりもはるかに高い解像度でスクリーン画像を処理し、次いで、処理された画像を、表示される前に最終解像度までスケーリングしフィルタリングする(ダウンサンプリングする)。これには、エイリアシングアーティファクト減少で画像を改良する効果があるが、より多大な処理能力および/または時間を要求する。というのは、グラフィックス処理システムは実質的に、存在するサンプルと同程度に多くのフラグメントを(たとえば、4倍スーパーサンプリングに対して(すなわち、各ディスプレイ画素に対して4個のサンプルがとられる場合)、処理要件は、スーパーサンプリングが行われない場合の4倍になるように)処理しなければならないからである。
【００２３】
したがって、画像品質をある程度向上させると同時に、フルスーパーサンプリングより処理要件の少ない、他のアンチエイリアシング技法が提案されている。
【００２４】
このような一般的技法の1つは、「マルチサンプリング」と呼ばれる。
【００２５】
マルチサンプリングのケースでは、画像がフラグメントにラスター化される際に(ラスター化段階で)所与のプリミティブがサンプリング点をカバーするかどうか判定するために、多数のサンプリング点が、ディスプレイ画素ごとにさらに検査される。したがって、マルチサンプリングシステムにおけるプリミティブのサンプリング点カバレージは、「スーパーサンプリング」システムと同様の方式で決定される(したがって、プリミティブの外側の幾何学的エッジのポジションは依然として、マルチサンプリングシステムにおいて実質的に「スーパーサンプリングされる」(オーバーサンプリングされる))。
【００２６】
ただし、マルチサンプリングシステムのレンダリングプロセスでは、当該のプリミティブによってカバーされる、所与のディスプレイ画素に対するサンプリング点にはすべて、同じ単一の共通データ(たとえば深さ値、色値など)のセットが割り振られる(スーパーサンプリングのケースでのように、それぞれが独自の別個のデータセットを有するのではない)。
【００２７】
したがって、マルチサンプリングでは、最終表示を成すことになる画素ごとにやはり複数のサンプルがとられるが、(フルスーパーサンプリングシステムのケースでように)「画素」をレンダリングする際に各サンプルごとに別個の色値を決定するのではなく、単一の色値が、最終画像中の同じオブジェクトに属すことが分かっている、ディスプレイ画素用のサンプルすべてに対して決定され適用される。言い換えると、マルチサンプリングは、シーン中の所与のオブジェクト用の所与のディスプレイ画素に対して単一の色値を算出し、この色値は、(サンプルごとに別個の色値が決定されるスーパーサンプリングとは対照的に)そのオブジェクトによってカバーされる、ディスプレイ画素のすべてのサンプル(サブ画素)に適用される(すべてのサンプル用に再利用される)。
【００２８】
所与のディスプレイ画素用の多数のサンプルに対してただ1つの色値が使われるので、マルチサンプリングは、スーパーサンプリングよりも処理集中型ではなく、したがって、スーパーサンプリングより速い処理および実行を可能にする。ただし、オブジェクトの輪郭は依然としてより高い解像度でサンプリングされるが、色に関してはそうではないので、スーパーサンプリングと比較して、表示画像の品質が低下する。
【００２９】
これに関わらず、多くのグラフィックス処理システムは、マルチサンプリングアンチエイリアシング技法を用いる。というのは、マルチサンプリングは概して、レンダリングされる画像において妥当な(かつ、マルチサンプリングもスーパーサンプリングも全く行われない場合と比較して、改良された)アンチエイリアシングを行うが、フルスーパーサンプリングが伴う大幅な余分処理および計算負荷がないからである。
【００３０】
スーパーサンプリングおよびマルチサンプリング構成両方において、ディスプレイ画素ごとにより多くのサンプルをとることによって、アンチエイリアシング性能を向上することも可能であろう。たとえば、ディスプレイ画素ごとに4個のサンプルをとる(4倍アンチエイリアシング)のではなく、代わりに16個のサンプルをとることもできよう(16倍アンチエイリアシング)。ただし、こうすると、処理要件が劇的に(4倍から16倍になる場合、4倍だけ)増すという影響が出る。というのは、個数が増大したサンプルを処理するために、より多くのフラグメントが処理される必要があり、したがってこのやり方は必ずしも望ましいわけでも可能なわけでもないからである。
【発明の概要】
【発明が解決しようとする課題】
【００３１】
本出願人はしたがって、アンチエイリアシング技法には、実行上の不利益があまり高くない改良が残っていると考える。
【課題を解決するための手段】
【００３２】
本発明の第1の態様によると、表示用にグラフィックスを処理する方法が提供され、この方法は、
グラフィックスフラグメントを生成しレンダリングして、表示されるべき画像のサンプリング点に関するレンダリング用グラフィックスデータを生成することを含み、
レンダリングされる各グラフィックスフラグメントが、表示されるべき画像のサンプリング点セットを各グラフィックスフラグメントに関連づけており、フラグメントに関連づけられたサンプリング点セットのサンプリング点の1つまたは複数に関するレンダリング用グラフィックスデータを生成するのに使われるべきであり、
レンダリングされるグラフィックスフラグメントは、異なる数のサンプリング点を含むサンプリング点セットに関連づけることができる。
【００３３】
本発明の第2の態様によると、グラフィックス処理システムが提供され、このシステムは、
グラフィックスフラグメントを生成しレンダリングして、表示されるべき画像のサンプリング点に関するレンダリング用グラフィックスデータを生成する手段を備え、
レンダリングされる各グラフィックスフラグメントが、表示されるべき画像のサンプリング点セットを各グラフィックスフラグメントに関連づけており、フラグメントに関連づけられたサンプリング点セットのサンプリング点の1つまたは複数に関するレンダリング用グラフィックスデータを生成するのに使われるべきであり、
レンダリングされるグラフィックスフラグメントは、異なる数のサンプリング点を含むサンプリング点セットに関連づけることができる。
【００３４】
本発明において、画像は、画像のサンプリング点セットにそれぞれが対応するフラグメントをレンダリングすることによって、表示用に処理される。ただし、本発明において、画像用にレンダリングされるフラグメントは、異なる数のサンプリング点を含むサンプリング点セットに関連づける(そのセットに対応し、そのセットを表す)ことができる。たとえば(かつ、後でさらに論じるように、)好ましい一実施形態では、レンダリングされる所与のフラグメントは、画像の4個のサンプリング点を含むサンプリング点セットに関連づけることもでき、画像の16個のサンプリング点を含むサンプリング点セットに関連づけることもできる。
【００３５】
本発明はしたがって、レンダリングされるはずの個々のフラグメントを、異なる数のサンプリング点を表すのに用いることができる構成を提供する。こうすることによって、とりわけ、所与の数のサンプリング点をレンダリングするレンダリングプロセス(パイプライン)を介して送られる必要があるフラグメントの数に関して柔軟性が実現される。
【００３６】
たとえば、各フラグメントが常に4個のサンプリング点(4倍サンプリングマスク)に対応するシステムでは、16倍サンプリングを達成するためには、(上述したように、実行上の不利益を伴いながら)4倍の数のフラグメントをレンダリングしなければならないであろう。
【００３７】
ただし本発明では、たとえば、上述したように、4個または16個のサンプリング点を表すのに所与のフラグメントを用いることができる場合に、16倍サンプリングを用いることを望むのであれば、たとえば、同じプリミティブが所与の16倍サンプリングマスクの16個すべてのサンプリング点をカバーすることが分かっているなら、そうするために4個のフラグメントを用いる必要なく、16サンプリング点セットを関連づけさせた単一フラグメントを、カバーされる16倍マスクの16個すべてのサンプリング点をレンダリングするのに用いることができる。一方、所与のプリミティブが所与の16倍マスクの16個すべてのサンプリング点はカバーしない場合、その16倍マスクは代わりに、レンダリングプロセスにおいて反映されるべきマスクの16個のサンプリング点の不完全なカバレージを可能にするために、たとえば、4個のサンプリング点にそれぞれが対応するフラグメントを使ってレンダリングすればよい。
【００３８】
したがって本発明は、とりわけ、使われるべきサンプリングレート(アンチエイリアシングレートなど)を効果的に増大させることができるが、増大したサンプリングレートに完全に合致するように、レンダリングされるフラグメントの数を徹底的に増大させる必要はない。というのは、本発明は、比較的数の多いサンプリング点をレンダリングするのに、一部のフラグメントを使われるようにし、そうすることによって、そうしたサンプリング点をレンダリングするために、比較的数の多いフラグメントを代わりにレンダリングする必要をなくすからである。具体的には、サンプリングレートの増大に対して、本発明は依然として、レンダリングされるフラグメントの数の増加を要求するのは事実であるが、この増加は、本発明が利用されず、レンダリングされるフラグメントの数が単にサンプリングレート増大を達成するように増やされるよりも少ないフラグメント数増加となる。
【００３９】
さらに、本出願人は、サンプリングレート増大のために本発明においてレンダリングされるべきフラグメントの数の増加は、実際には比較的小さくなると認識している。というのは、ほとんどの場合、画像をサンプリングするのに使われる比較的高いサンプリングレートのマスクは、所与のプリミティブによって完全にカバーされることになるので、依然として単一フラグメント(ただし、より多くのサンプリング点を表す)を使ってレンダリングすることができ、したがってより高いサンプリングレートを達成するために追加フラグメントのレンダリングを要求しないからである。
【００４０】
本出願人はしたがって、本発明はより高レートのアンチエイリアシングを達成させ得るが、グラフィックスプロセッサのサイズおよびパワーの大幅な増加は必要とせず、あるとしても、比較的小さい性能低下のみを伴うと考える。
【００４１】
ここで、本発明において、フラグメントは、使用中の異なる数のサンプリング点を含むサンプリング点セットに動的に関連づけることができることが理解されよう。したがって、たとえば、レンダリングされる所与のどの画像(フレーム)に対しても、その画像をレンダリングするために生成されるフラグメントは(好ましくは)、異なる数のサンプリング点を有するサンプリング点セットに関連づけることができる。最も好ましくは、レンダリングされる所与のどのプリミティブに対しても、そのプリミティブをレンダリングするのに使われるフラグメントは、異なる数のサンプリング点を有するサンプリング点セットに関連づけることができる。最も好ましくは、フラグメントは、異なる数のサンプリング点を有するサンプリング点セットに、たとえば、かつ好ましくは、さらに後で論じるように、当該のサンプリング点のプリミティブによるカバレージに基づいて選択的に関連づけることができる。
【００４２】
各フラグメントに関連づけられたサンプリング点セットは、所望通り選択してよい。当該分野において公知であるように、各サンプリング点セット(およびしたがって、各サンプリング点)は、表示されるべき画像中の位置(x, yポジション)を表すことになる。
【００４３】
各サンプリング点セット中のサンプル点のパターンおよび(相対的)ポジション(サンプリングパターン)は、所望通り選択してよい。たとえば、整列グリッドサンプリングなど、公知の適切などのアンチエイリアシングサンプリングパターンを使ってもよい。最も好ましくは、当該分野において公知であるように、より優れたサンプリング効果をもたらすので、回転グリッドサンプリングパターンが使われる。
【００４４】
通常そうであるように、複数の画素を含むディスプレイまたは出力を有する出力装置上に画像が表示されるべきである場合、レンダリングされるべきフラグメントと関連づけることができる各サンプリング点セットは好ましくは、出力装置(たとえば、ディスプレイ)の所与の画素(画素の位置)に対するサンプリング点セットに、または出力装置(たとえば、ディスプレイやプリンタ)の画素(たとえば、サブ画素)の一部に対するサンプリング点セットに対応する。後者の構成において、サンプリング点セットのうち複数からなるグループは好ましくは、ディスプレイの画素に対する全体的サンプリング点セットを成す。こうした構成において、各フラグメントは、出力装置(たとえば、ディスプレイやプリンタ)の所与の画素に関するフラグメントデータを効果的にレンダリングすることになる。
【００４５】
レンダリングされるべきグラフィックスフラグメントが対応し得る(表し得る)サンプリング点セット中のサンプリング点の数は、所望通り選択してよい。たとえば、異なる数のサンプリング点、たとえば1個のサンプリング点を含むセット、4個のサンプリング点を含むセット、16個のサンプリング点を含むセット、64個のサンプリング点を含むセットなどをそれぞれが含む、多様なレベルのサンプリング点セットがあり得る。特に好ましい実施形態では、グラフィックスフラグメントと対応し得る各サンプリング点セットは、複数のサンプリング点を含む。好ましくは、グラフィックスフラグメントは、4個または16個のサンプリング点のセットに関連づければよい。
【００４６】
特に好ましい実施形態では、フラグメントと関連づけることができるサンプリング点個数(レベル)のセットは、2通りしかない。最も好ましくは、こうしたセットは、4個のサンプリング点からなるセットおよび16個のサンプリング点からなるセットである。
【００４７】
好ましくは、異なる個数をもつ各サンプリング点セット中のサンプリング点の数は、階層中のすぐ隣の、1つのサンプリング点セット(または複数のセット)中のサンプリング点の数に、同じ倍数によって関連する。好ましくは、各セットは、次に少ない個数をもつ隣接セットの4倍のサンプリング点を有する。
【００４８】
同様に、フラグメントと対応し得るサンプリング点の小さい方の各セットは好ましくは、大きい方のサンプリング点セットのある特定の部分またはサブリージョン、たとえば大きい方のサンプリング点セットのある特定の行または列に対応し、または表す。このような特に好ましい構成において、サンプリング点の小さい方の各セットは、そのすぐ隣にある大きい方のサンプリング点セットの四半分すなわち4分の1を表し、かつそれに対応する。したがって、たとえば、所与のフラグメントを16個のサンプリング点からなるセットまたは4個のサンプリング点からなるセットに関連づけることができる場合、4個のサンプリング点からなる各セットは好ましくは、16個のサンプリング点からなるセットの四半分すなわち4分の1を表すのに使うことができる。
【００４９】
特に好ましい実施形態では、フラグメントと関連づけることができるサンプリング点セットはそれぞれ、サンプリングマスク(アンチエイリアシングマスク)に、またはこのようなマスクの一部に対応し、これらは、当該のグラフィックス処理システムにおいてレンダリングされるべき画像に適用することができ、かつそうすることを意図している。当該分野において公知であるように、画像が表示用にレンダリングされるべきであるとき、通常、サンプリング点セットを表す予め定義されたサンプリングマスクは、画像をサンプリングするために、画像に繰り返し適用される。通常、かつ好ましくは、各サンプリングマスク適用は、意図された出力装置(たとえば、ディスプレイやプリンタ)の所与の出力画素に対応することになる。
【００５０】
したがって、たとえば、好ましくは、16倍サンプリング(たとえば、かつ好ましくは、マルチサンプリング)マスクおよび4個のサンプリング点からなるセットに対応し、4倍サンプリングマスクにも16倍サンプリングマスクの四半分にも対応し得る16個のサンプリング点からなるセットは、フラグメントに関連づけることができる。
【００５１】
したがって、特に好ましい実施形態では、所与のグラフィックスフラグメントは、レンダリングされるべき画像に適用されるべきであるサンプリングマスク(またはアンチエイリアシングマスク)のサンプリング点すべてに関連づける(かつ、サンプリング点すべてをレンダリングするのに使う)こともでき、レンダリングされるべき画像に適用されるべきであるサンプリングマスクのサンプリング点サブセットに関連づける(かつ、サブセットをレンダリングするのに使う)こともできる。言い換えると、好ましくは、画像への所与のサンプリングマスク適用は、サンプリングマスク全体を表す単一フラグメントを使っても、サンプリングマスクのサブセットを表す1つのフラグメントまたは複数のフラグメントを使っても、このようなフラグメントの組合せによってもレンダリングすることができる。
【００５２】
同様に、サンプリングマスクの所与の事例は好ましくは、サンプリングマスク全体に対応するフラグメントを使って、かつ/または、たとえばサンプリングマスクの行、列、もしくは好ましくは四半分すなわち4分の1に対応する、サンプリングマスクの特定のサブリージョンもしくは部分に対応するフラグメントを使ってレンダリングすることができる。
【００５３】
こうした構成において、本発明は実質的に、16倍マスクなど、所与のサンプリングマスク(たとえば、マルチサンプリングマスク)を、単一フラグメントによって表させ、そのようなフラグメントとして処理させ、または複数のフラグメントとして処理させる(たとえば、1つまたは複数のより小さいレンダリング用フラグメントに分割させる)ことが理解されよう。実質的に、サンプリングマスクは、レンダリング目的のために、2通り(以上の)レベルで表すことができる。そうすることによって、たとえば、マスク全部がカバーされる場合、このマスクは、(1つの「レベル」で)単一フラグメントとしてレンダリングすることができるが、部分的にのみカバーされる場合は、たとえば、1つまたは複数のより大きい「パッチ」および/またはより小さい「パッチ」として、たとえばより少ないサンプリング点個数に関連づけられたフラグメントを使って(より低いレベルで)レンダリングする(より小さいレンダリング用パッチに分ける)ことができる。これは、上述した通りに有利である。
【００５４】
したがって、本発明の第3の態様によると、サンプリング点セットを含むサンプリングマスクが、表示されるべき画像のサンプリング用に表示されるべき画像に適用されるべきである、グラフィックス処理システムにおいて表示用にグラフィックスを処理する方法が提供され、この方法において、
画像への所与のサンプリングマスク適用に対応するサンプリング点セットは、単一フラグメントを使って、または複数のフラグメントを使って、そのサンプリング点セットに関するレンダリング用グラフィックスデータを生成するようにレンダリングすることができる。
【００５５】
本発明の第4の態様によると、サンプリング点セットを含むサンプリングマスクが、表示されるべき画像のサンプリング用に表示されるべき画像に適用されるべきであるグラフィックス処理システムが提供され、このシステムにおいて、
画像への所与のサンプリングマスク適用に対応するサンプリング点セットは、単一フラグメントを使って、または複数のフラグメントを使って、そのサンプリング点セットに関するレンダリング用グラフィックスデータを生成するようにレンダリングすることができる。
【００５６】
同様に、本発明の第5の態様によると、グラフィックス処理システムにおける表示のために画像を処理する方法が提供され、この方法は、
サンプリング点セットを含むサンプリングマスクを、表示されるべき画像に適用して、表示されるべき画像をサンプリングすること、および
表示用画像のサンプリング点に関するレンダリング用フラグメントデータを生成するために、グラフィックフラグメントを生成しレンダリングすることを含み、
レンダリングされる各フラグメントは、サンプリングマスクのサンプリング点すべてに対応するサンプリング点セットまたはサンプリングマスクのサンプリング点サブセットに対応するサンプリング点セットを各フラグメントに関連づけていてよい。
【００５７】
本発明の第6の態様によると、
サンプリング点セットを含むサンプリングマスクを、表示されるべき画像のサンプリング用に表示されるべき画像に適用する手段と、
グラフィックスフラグメントを生成しレンダリングして、表示用画像のサンプリング点に関するレンダリング用フラグメントデータを生成する手段と、
レンダリングされる各フラグメントに、サンプリングマスクのサンプリング点すべてに対応するサンプリング点セット、またはサンプリングマスクのサンプリング点サブセットに対応するサンプリング点セットを関連づける手段とを備えるグラフィックス処理システムが提供される。
【００５８】
こうした本発明の態様および実施形態は、必要に応じて、本明細書に記載の本発明の好ましい特徴および任意選択の特徴の任意の1つまたは複数あるいはすべてを含んでもよく、かつ好ましくは、実際に含むことが当業者には理解されよう。したがって、たとえば、アンチエイリアシングマスクは好ましくは、16個のサンプリング点を含み、好ましくは16個または4個のサンプリング点に対応するフラグメントを使ってレンダリングすることができる。
【００５９】
好ましくは、アンチエイリアシングマスクは、マスク全体を表すフラグメントを使っても、サンプリングマスクのある特定のサブリージョンまたは部分を表すフラグメントを使ってもレンダリングすることができる。
【００６０】
最も好ましくは、適用されるサンプリングマスクの所与の事例は、マスクのサンプリング点すべてを表す単一フラグメントを使ってレンダリングすることもでき、マスクのより小さい部分またはサブリージョン(たとえば、四半分すなわち4分の1)に対応する1つまたは複数のフラグメントを使ってレンダリングすることもでき、マスクのサンプリング点すべてを表すフラグメントおよびサンプリングマスクのより小さい部分またはサブリージョンに対応する1つまたは複数のフラグメント両方を使ってレンダリングすることもできる。
【００６１】
本発明において、フラグメントは、異なる数のサンプリング点を含むサンプリング点セットに関連づけることができるが、通常かつ好ましくは、本発明が利用される際にフラグメントと関連づけることができる異なる個数をもつサンプリング点セット中の個々のサンプリング点は常に、何個のサンプリング点が各セット中にあるかに関わらず、異なる個数をもつサンプリング点セットすべてに対して同じサンプリング解像度になる。
【００６２】
したがって、たとえば、16倍サンプリングマスクが画像に適用される場合、本発明は、たとえば、マスクの16点すべてをレンダリングするのに、16個のサンプリング点に対応する1個のフラグメントを用いるか、あるいはたとえば、マスクのサンプリング点をレンダリングするのに、たとえばマスクの4個のサンプリング点にそれぞれが対応する1つまたは複数のフラグメントを用いることになる。ただし、各セットの個々のサンプリング点はそれ自体が常に、同じサンプリング解像度をそれぞれ表す。単に、所与のフラグメントは、そうしたサンプリング点のうちより多くのものも少ないものもレンダリングするのに使うことができるのである。
【００６３】
したがって、特に好ましい実施形態では、本発明においてフラグメントと関連づけることができるサンプリング点セット中のサンプリング点はそれぞれ、サンプリングされる画像中で同じサンプリング解像度を表す。
【００６４】
本発明において、所与のグラフィックスフラグメントは、異なる数のサンプリング点を含むサンプリング点セットに関連づけることができる。同等に、所与のサンプリングマスクは、たとえば、単一フラグメントを使っても、複数のフラグメントを使っても、かつ/またはサンプリングマスクの異なるサブポーションを表すフラグメントを使っても処理することができる。したがって、フラグメント(群)に関連づけられるべきサンプリング点の数は、使用中、動的に変えることができる。この変更は好ましくは、所与の画像が表示用に処理されるとき、選択的に行えばよい。
【００６５】
したがって、本発明は好ましくは、レンダリングされるべきフラグメントに関連づけられるべきサンプリング点セットを選択するステップまたは手段を含む。
【００６６】
同様に、本発明は好ましくは、サンプリングマスクのサンプリング点すべてを表す単一フラグメントとして、あるいはサンプルマスクのサンプリング点サブセットをそれぞれが表す1つまたは複数のフラグメントとして、あるいはサンプリングマスクのサンプリング点すべてを表すフラグメントと、サンプリングマスクのサンプリング点サブセットをそれぞれが表す1つまたは複数のフラグメントとの組合せとして、表示されるべき画像に適用されるサンプリングマスクのサンプリング点セットを選択的に処理するステップまたは手段を含む。
【００６７】
したがって、特に好ましい実施形態では、本発明は、サンプリングマスクのサンプリング点すべてに対応するサンプリング点セットまたはサンプリングマスクのサンプリング点サブセットに対応するサンプリング点セットを、レンダリングされる各フラグメントに選択的に関連づけるステップまたは手段を含む。
【００６８】
どのサンプリング点セットを所与のフラグメントに関連づけるべきかという選択、およびサンプリングマスクの所与の事例をどのように処理するべきかという選択は好ましくは、処理される(サンプリングされる)プリミティブによる、サンプリング点セットの、かつ/またはサンプリングマスクのカバレージに基づく。
【００６９】
したがって、たとえば、かつ好ましくは、所与のサンプリングマスク(サンプリング点セット)は、プリミティブによって完全にカバーされる場合、好ましくは、サンプリングマスクのサンプリング点すべてに対応する単一フラグメントを使ってレンダリングされる。ただし、サンプリングマスクがサンプリングされるプリミティブによって完全にはカバーされない場合、サンプルマスクは代わりに、たとえば、サンプリングマスクのサブパッチにそれぞれが対応する1つまたは複数のフラグメントとして処理すればよい。
【００７０】
したがって、特に好ましい実施形態では、本発明は、レンダリングされるべきプリミティブによるサンプリング点セットのカバレージを判定するステップまたは手段と、サンプリングされるプリミティブによるサンプリング点の判定されたカバレージに基づいて、レンダリングされるべきフラグメントに関連づけられるべきサンプリング点の数を選択するステップまたは手段とを含む。
【００７１】
同様に、本発明は好ましくは、レンダリングされるべきプリミティブによる、サンプリング点セットを含むサンプリングマスクのカバレージを判定するステップまたは手段と、サンプリングマスクに対応するサンプリング点セットを、サンプリングマスクのサンプリング点すべてに対応する単一フラグメントとして、あるいはサンプリングマスクのサンプリング点サブセットに対応する1つまたは複数のフラグメントとして、あるいはその組合せとして、レンダリングされるべきプリミティブによるサンプリングマスクのカバレージに基づいて選択的にレンダリングするステップまたは手段とを含む。
【００７２】
したがって、特に好ましい実施形態では、本発明は、
複数のサンプリング点からなるセットのサンプリング点ごとに、グラフィックスプリミティブがサンプリング点をカバーするかどうか判定することによって、かつ
プリミティブがサンプリング点セットのサンプリング点すべてをカバーする場合、レンダリングされるべき複数のサンプリング点からなるセットに対応する単一のグラフィックスフラグメントを生成して、サンプリング点に関するレンダリング用フラグメントデータを生成することによって、あるいは
プリミティブがサンプリング点セットのサンプリング点すべてはカバーしない場合、レンダリング用のサンプリング点セットのサンプリング点すべてまたはサブセットに関連づけられた1つもしくは複数のフラグメントを選択的に生成して、サンプリング点に関するレンダリング用フラグメントデータを生成することによって、表示されるべき画像のグラフィックスプリミティブを処理するステップまたは手段を含む。
【００７３】
本発明の作用における多くのケースでは、フラグメントが対応するサンプリング点セットは、サンプリングされるオブジェクト(たとえば、プリミティブ)によって完全にカバーされることになるが、これは常に成り立つわけではなく、そのようなケースでは、フラグメントに関連づけられたサンプリング点すべてではなく一部のみが、たとえば、当該のプリミティブによってカバーされることが理解されよう。後者のケースでは、当該分野において公知であるように、フラグメントに関するレンダリング用フラグメントデータは、(プリミティブによって)カバーされるサンプリング点に対して使われるべきであるが、(プリミティブによって)カバーされないサンプリング点に対しては使われないべきである(というのは、そうしたサンプリング点は実際には、たとえば別の画像プリミティブによってカバーされることになるからである)。たとえば、レンダリング用フラグメントデータを、カバーされないサンプルポジション向けにレンダリング用フラグメントデータ配列に格納する必要はないであろう。
【００７４】
したがって、特に好ましい実施形態では、各グラフィックスフラグメントは、フラグメントが対応するサンプリング点セット中のサンプリング点のどれが(たとえば、かつ好ましくは、サンプリングされるプリミティブによって)カバーされるか、すなわち、実質的には、フラグメントが対応するサンプリング点セット中のサンプリング点のどれをレンダリングするのにフラグメントが使われているかを示すデータを各フラグメントに関連づけている。本システムは好ましくは、次いで、レンダリング用フラグメントデータを示されたカバーされるサンプルポジション向けであって、フラグメントに関連づけられた残りのサンプルポジション向けではなく、フラグメントデータ配列に格納するように動作する。
【００７５】
カバーされるどのサンプル点をレンダリングするのにフラグメントが使われているかを示す情報は好ましくは、レンダラを通過するフラグメントに関するフラグメントデータ(フラグメントに関するRGBおよびアルファ値など)に関連づけられ、またはそのデータの一部である。この情報は好ましくは、フラグメントに関連づけられたサンプルポジションセットの各サンプルポジションに関して、そのサンプルポジションがカバーされるかどうか、すなわち、実質的には、フラグメントがそのサンプル点をレンダリングするのに使われているかどうか(すなわち、そのフラグメントのデータがそのサンプル点向けに格納されるべきかどうか)を示すカバレージマスクの形である。好ましくは、このカバレージマスクは、サンプリングポジションを表すビットマップの形である。
【００７６】
この構成は、所与のフラグメントを適切なサンプル点に関連づける、特に好都合なやり方であることが分かっている。
【００７７】
こうした構成において、各サンプルポジションのカバレージを、(たとえば、16個のサンプリング点からなるセットに対応するフラグメントに対して16ポジションのカバレージマスクを使うために、かつ4個のサンプリング点からなるセットに対応するフラグメントに対して4ポジションのカバレージマスクを使うために)フラグメントに関連づけられたカバレージ情報中で個々に指定することが可能であろうが、好ましい実施形態では、カバレージ情報(マスク)は、複数のサンプルポジションをまとめて(好ましくは、単一ビットで)カバレージを(選択的に)示し得る。こうすることにより、フラグメントがより多くのサンプリングポジションに対応する場合であっても、より小さいカバレージマスクなどが使われるようになる。
【００７８】
最も好ましくは、実際のサンプリングポジション何個をフラグメントが表し得るかに関わらず、各フラグメントは、(カバーされる、またはされないものとしてカバレージマスクが示し得るサンプリングポジションの数に関して)同じサイズをもつカバレージマスクに関連づけられる。言い換えると、フラグメントとともに使われるカバレージ情報(マスク)は好ましくは、カバーされる、またはされないものとして示すことができる一定数のポジション(たとえば、かつ好ましくは、4個)をもつことができ、このような各ポジションは、当該のフラグメントに関連づけられたサンプリング点セット中に何個のサンプリング点があるかに依存して、1つまたは複数のサンプリング点を表す。
【００７９】
特に好ましいこのような実施形態において、各フラグメントは、4個の可能なサンプリングポジションを表すカバレージ情報(カバレージマスク)を各フラグメントに関連づけており、カバレージマスクのこのような各ポジションは、単一のサンプリング点(フラグメントが4個のサンプリング点からなるセットに関連づけられる場合)、または4個のサンプリング点(フラグメントが16個のサンプリング点からなるセットに関連づけられる場合)を表し得る。
【００８０】
このような構成は、それだけで新規かつ有利であり得ると思われる。
【００８１】
したがって、本発明の第7の態様によると、
レンダリングされるべきグラフィックスフラグメントに、各フラグメントがレンダリングするのに使われている、カバーされるサンプリングポジションを示すカバレージマスクを関連づけることを含む、表示用にグラフィックスを処理する方法が提供され、この方法では、
各カバレージマスクは、サンプリング点がカバーされるかどうかを示すのにそれぞれが使われ得るいくつかのポジションをもち、
フラグメントは、カバレージマスク中のこのような各ポジションが、画像の第1の数のサンプリング点を表すカバレージマスクに選択的に、またはカバレージマスク中のこのような各ポジションが画像の第2の、異なる数のサンプリング点を表すカバレージマスクに関連づけることができる。
【００８２】
本発明の第8の態様によると、グラフィックス処理システムが提供され、このシステムは、
各フラグメントがレンダリングするのに使われているカバーされるサンプリングポジションを示すカバレージマスクを、レンダリングされるべきグラフィックスフラグメントに関連づける手段を備え、
各カバレージマスクが、サンプリング点がカバーされるかどうかを示すのにそれぞれ用いることができるいくつかのポジションをもち、
カバレージマスク中のこのような各ポジションが、画像の第1の個数のサンプリング点を表すカバレージマスクに、またはカバレージマスク中のこのような各ポジションが画像の第2の異なる個数のサンプリング点を表すカバレージマスクに、フラグメントを選択的に関連づけることができる。
【００８３】
こうした本発明の態様および実施形態は、必要に応じて、本明細書に記載の本発明の好ましい特徴および任意選択の特徴のうち任意の1つまたは複数あるいはすべてを含んでよく、かつ好ましくは、実際に含むことが当業者には理解されよう。したがって、たとえば、各カバレージマスクポジションは好ましくは、1個または4個のサンプリング点を表し得る。同様に、カバレージマスクは好ましくは、4個のポジションからなるビットマップの形である。
【００８４】
すべてのフラグメントに対して同じカバレージマスク構造が使われる場合、フラグメントが何個のサンプリングポジションを表すかに関わらず、好ましくは、カバレージマスク(情報)中の各ポジションは、サンプリング点セット中の対応する1つのポジションまたはポジションセットを表す。したがって、たとえば、4ポジションのカバレージマスクが使われ、フラグメントを4個または16個のサンプリング点に関連づけることができる場合、16サンプリング点フラグメントに対して使われるときのカバレージマスク中の各ポジションは好ましくは、そのポジションに対応する16サンプリング点セットの4個のサンプリング点の四半分すなわち4分の1を表す。
【００８５】
所与のフラグメントが対応するサンプリング点のカバレージに関する情報と同様に、本発明では、たとえば、フラグメントが対応するサンプリング点セットのサイズ、および/または、たとえば、フラグメントが対応する所与のサンプリングマスク中のサブセット(サブポジション)を示す情報を提供することが必要な場合があり得る。この情報は、たとえば、既存のフラグメントデータフィールド中で利用可能であり得る予備容量を用いて、たとえば、当該のフラグメントに再度関連づけることによって、所望に応じて提供してよい。
【００８６】
16倍サンプリングマスクおよびこのようなマスクの四半分を表すフラグメントの使用を具体的に参照して上記構成について記載したが、他の構成が当然ながら可能であり、好ましい一実施形態では、他の構成が用いられる。
【００８７】
たとえば、所望される場合、フラグメントに対して4ビットポジションカバレージマスクを用いる異なるやり方で、16倍サンプリングマスクを表すことが可能であろう。たとえば、カバレージマスク中の各ビットポジションは、16倍マスクの4分の1を表さないことが必要であるが、たとえば、16倍マスクの行または列あるいは他の何らかの部分を表すことはできる。
【００８８】
サンプリングマスクの複数のレベルの再分割を行うことも可能であり(かつ、好ましい一実施形態では、この再分割が行われ)、そうすることによって、たとえば、システムは、64倍「パッチ」として、1つまたは複数の16倍「サブパッチ」として、かつ/あるいは1つまたは複数の4倍「サブパッチ」などとして表すことができる64倍サンプリングマスクを使うことができよう。たとえば、所望される場合は、32倍および/または8倍「サブパッチ」を提供するように、どのサンプリングマスク再分割も一方向でのみ行うことも同様に可能である(かつ、好ましい一実施形態では、そのように行われる)。
【００８９】
また、たとえば、非(「ゼロ」)カバレージを指すカバレージマスクは、代わりに(ゼロカバレージではなく)、たとえば異なる形のカバレージマスクに対応する別のカバレージパターンを表すものとして定義してよく、ここで、場合によっては、実際にはゼロのカバレージを有するフラグメントを、(カバレージ「ゼロ」マスクが事実上「予備」カバレージマスク値となるように)レンダリングプロセスを介して決して送りたくない場合もある。
【００９０】
本発明において、たとえば、適用されるサンプリングマスクの所与の事例はたとえば、マスクのサンプリング点すべてを表す単一フラグメントとしてレンダリングすることもでき、たとえば、マスクのより小さい部分に対応する1つまたは複数のフラグメントとしてレンダリングすることもでき、この2つの組合せでもよいことが理解されよう。したがって、マスク全体に対応する単一フラグメントを使って「マスク」がレンダリングされるかどうかに関わらず、レンダリングされる同じデータ値(たとえば、結果として生じる色値)が、適切なサンプリング点に対して確実に生成されるようにすることが望ましい場合がある。
【００９１】
したがって、好ましい実施形態では、フラグメントの処理は、サンプリング点をレンダリングするのに使われるフラグメントに関連づけられたサンプリング点セット中のサンプリング点の数に関わらず(たとえば、かつ好ましくは、サンプリングマスクの所与の事例が単一フラグメントを使ってレンダリングされているか、あるいは1つまたは複数のサブパッチとしてレンダリングされているかに関わらず)、レンダリングされる同じフラグメントデータ値が、それぞれの各サンプリング点に対して生成され得る(かつ、される)ように設計される。
【００９２】
したがって、好ましい実施形態では、重心マッピングが無効にされた場合、フラグメントに関連づけられたサンプリング点セット中に何個のサンプリング点があるかに関わらず(すなわち、とりわけ、フルサンプリングマスクよりも少ないサンプリング点を含むサンプリング点セットに関連づけられたフラグメントが(すなわち、サンプリングマスクがより小さい「パッチ」を使って処理されている場合)、フルサンプリングマスクを表すフラグメントと同じ重心座標を使うように)、同じ重心座標が各フラグメントに対して使われる。こうすることにより、より小さい各「パッチ」フラグメントに対するテクスチャ座標が、サンプリングマスクのすべてのサンプリング点に対して単一フラグメントが使われるときと同じになるという効果があるはずである。実際、テクスチャキャッシュがより多くのヒットを経るはずなので、処理を高速化するという効果もあるはずである。
【００９３】
一方、重心マッピングが有効にされた場合、重心マッピングは好ましくは、サンプリングマスクのサブセット(サブパッチ)に対応する各フラグメントに個々に適用される。
【００９４】
一部のグラフィックスプロセッサが、フラグメントを、2×2グループなど、特定のグループに分けてレンダリングし、たとえば、レンダリングプロセス用に使われるべき、派生物の派生など、データを生成する目的のために、特定のグループ構成または順序を要求するケースもある。サンプリングマスクのサブセットにそれぞれが対応するフラグメントがレンダリングされているケースでは、フラグメントは、必要な場合、好ましくは、適切にグループ化して(たとえば、2×2グループとして)レンダリングプロセスを通して処理され、各グループ化はたとえば、正しいデータ、たとえば、派生による生成結果を保存するように、たとえば、グループ中の適切なポジションに、それぞれの各オリジナルサンプリングマスクにあるサンプリング点を表すフラグメントを含む。
【００９５】
代替的または追加的には、付加情報(データ)が、(たとえば、このようなデータを、レンダリングされるべきフラグメントの冗長なサンプリング点ポジションに置くことによって)レンダリングされるべき1つのフラグメントまたは複数のフラグメントとともに含まれてもよく、他のフラグメントやサンプリングマスク適用などに依存し得る、派生物など、レンダリングされているフラグメントに対して必要とされるデータを、フラグメントがレンダリングされるときに依然として派生させるようにする。
【００９６】
本発明におけるフラグメントの生成およびレンダリングは、適切かつ所望のどのやり方でも行うことができ、たとえば、適切かつ所望のどのラスター化、次いでレンダリングプロセスも伴い得る。レンダリングプロセスは、たとえば、フラグメント陰影づけ、ブレンディング、テクスチャマッピングなどを含み得る。
【００９７】
単一または複数のフラグメントなどへのサンプリングマスクの「割振り」は、適切かつ所望のどのやり方でも同様に行うことができる。この割振りは好ましくは、ラスター化プロセスの一部として、またはラスター化の後だがフラグメントが「陰影づけ」(レンダリング)パイプラインに入る前に行われ、この方がより好都合であろう。
【００９８】
各フラグメントおよびサンプリング点に関して決定され格納されるレンダリング用フラグメントデータは、当該分野において公知であるように、適切なサンプルデータ配列に格納されるべきである。この配列は、当該分野において公知であるように、たとえば、サンプリングポジションの2次元配列を表すべきであり、この配列は次いで、たとえば、画素の2D配列を表示するように、適切に処理することができる。
【００９９】
たとえば4倍サンプリングとは対照的に16倍サンプリングで画像を処理するのに本発明が用いられる場合、レンダリング用フラグメントデータをサンプリングポジションの4倍だけ生じることになることが当業者には理解されよう。
【０１００】
上記のようにするために、レンダリング用フラグメントデータ配列のサイズを単に増大させることが可能であろう。ただし、好ましい一実施形態では、より高いサンプリングレートが使われる場合、レンダリング用フラグメントデータは、圧縮された形で格納される。こうすることにより、レンダリング用フラグメントデータ配列のサイズを増大させる必要がなくなり得るが、出力画像品質にとっては依然としてあまり不利益でないはずである。というのは、圧縮はサブディスプレイ画素レベルであり、したがっていかなる圧縮アーティファクトも非常にまれにしかディスプレイ画素レベルには継承されないからである。
【０１０１】
ここで、上記から理解されるように、本発明は、それぞれのサンプリング点に関するレンダリング用グラフィックスデータを生成するような、フラグメントの生成およびレンダリングに(たとえば、そのデータを表示するために、既に生成されているサンプルデータを読み取るプロセスにではなく)関することに留意されたい。そのようにして生成されたレンダリングデータは次いで、上述したように、タイルおよび/またはフレームバッファなど、適切なサンプルデータ配列またはバッファに格納され、当該分野において公知であるように、引き続き表示装置に提供される。当該分野において公知であるように、所望される場合は、サンプルバッファからフレームバッファおよび/または出力ディスプレイに、固定または可変方式でダウンサンプリングが起こり得る。
【０１０２】
表示されるべき画像は通常、複数のプリミティブからなるので、実際には本発明の方法は、画像を成す各プリミティブに対して繰り返されることになり、その結果最終的に、適切なレンダリング用フラグメントデータセットが、画像全体(または、たとえばタイルベースのレンダリングシステムでは画像の適切な一部)を表示するのに必要とされる、画像の各サンプリング点に対して生成されており、このデータは次いで、たとえば、表示用にダウンサンプリングすればよいことが理解されよう。好ましくは、同じサイズをもつサンプルマスクが、サンプリングされる画像全体に渡って適用される。
【０１０３】
所与のグラフィックスプロセッサを、本発明のやり方で常に動作するように設計してもよい。ただし、好ましい実施形態では、グラフィックスプロセッサを、本発明のやり方で動作するように選択的に設定することができるような構成となる。
【０１０４】
最も好ましくは、グラフィックスプロセッサは、本発明のやり方で動作し得るか、または各フラグメント用に固定サンプリング点セットを使って画像をレンダリングし得る。たとえば、特に好ましい実施形態では、本発明のやり方で動作し得るグラフィックスプロセッサは、4倍サンプリングマスクを使って(このケースでは、本発明は用いられない)、または16倍サンプリングマスクを使って、表示用に画像を処理するように選択的に設計することができ、このケースでは、本発明が用いられる。
【０１０５】
最も好ましくは、こうした異なる動作モードは、グラフィックス処理を求めているアプリケーションによって設定することができる。したがって、たとえば、アプリケーション開発者に、たとえば「通常の」4倍マルチサンプリングまたは本発明を用いる16倍マルチサンプリングを選ばせることができる。実際、プロセッサハードウェアに対する大幅な変更の必要なく、マルチサンプリングなどの異なるレートの使用を容易にすることが、本発明の利点である。
【０１０６】
特に好ましい実施形態では、本発明の様々な機能は、表示装置用のフレームバッファに書かれるデータを生成し出力する単一のグラフィックス処理プラットフォーム上で成し遂げられる。
【０１０７】
本発明は、「パイプライン式」構成を有するレンダラ(このケースでは、レンダラは、レンダリングパイプラインの形である)など、どの形または設計のレンダラにも適用可能である。好ましい実施形態では、ハードウェアグラフィックスレンダリングパイプラインに適用される。本発明の様々な機能および要素などは、たとえば、かつ好ましくは、適切な機能ユニット、処理論理、プロセッサ、回路設計、処理回路設計、マイクロプロセッサ構成などによって、所望に応じて実装することができる。
【０１０８】
本発明は、即時モードレンダリング、据置きモードレンダリング、タイルベースのレンダリングなど、すべての形のレンダリングに適用可能であるが、据置きモードレンダリングを用いるグラフィックスレンダラに、かつ具体的にはタイルベースのレンダラに特に適用可能である。
【０１０９】
上記から理解されるように、本発明は、排他的ではないが特に、3Dグラフィックスプロセッサおよび処理装置に適用可能であり、したがって、3Dグラフィックスプロセッサおよび本明細書に記載する本発明の態様の任意の1つまたは複数の機器を含み、またはそれによって操作される3Dグラフィックス処理プラットフォームに及ぶ。上で論じた具体的な機能を成し遂げることが必要な任意のハードウェアを仮定すると、このような3Dグラフィックスプロセッサは、3Dグラフィックスプロセッサが含む一般的な機能ユニットなどの任意の1つまたは複数あるいはすべてを含んでもよい。
【０１１０】
本発明は、2Dグラフィックスプロセッサに、かつ2Dグラフィックス処理にも同様に及ぶ。
【０１１１】
本発明の記載する態様および実施形態はすべて、必要に応じて、本明細書に記載する好ましい特徴および任意選択の特徴の任意の1つまたは複数あるいはすべてを含んでよく、好ましくは実際に含むことも当業者には理解されよう。
【０１１２】
本発明による方法は、ソフトウェア、たとえばコンピュータプログラムを少なくとも部分的に使って実装することができる。したがって、それ以外の態様の観点からは、本発明は、データ処理手段にインストールされると、本明細書に記載する方法を行うように特に適合されたコンピュータソフトウェアと、プログラム要素がデータ処理手段上で稼働されると、本明細書に記載する方法を実施するためのコンピュータソフトウェアコード部分を含むコンピュータプログラム要素と、プログラムがデータ処理システム上で稼働されると、本明細書に記載する1つの方法または複数の方法のステップすべてを実施するように適合されたコード手段を備えるコンピュータプログラムとを提供することが分かる。データプロセッサは、マイクロプロセッサシステム、プログラム可能FPGA(フィールドプログラム可能ゲートアレイ)などでよい。
【０１１３】
本発明は、データ処理手段を備えるグラフィックスプロセッサ、レンダラまたはマイクロプロセッサシステムを操作するのに使われると、前記データ処理手段とともに、前記プロセッサ、レンダラまたはシステムに本発明の方法のステップを行わせるようなソフトウェアを備えるコンピュータソフトウェアキャリアにも及ぶ。このようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROMまたはディスクなどの物理的記憶媒体でもよく、ワイヤー経由の電子信号、光信号またはたとえば衛星などへの無線信号などの信号でもよい。
【０１１４】
本発明の方法のすべてのステップが、コンピュータソフトウェアによって行われる必要があるわけではなく、したがって、さらに広い態様からは、本発明は、コンピュータソフトウェアおよび本明細書において説明する方法のステップの少なくとも1つを行うコンピュータソフトウェアキャリア上にインストールされるようなソフトウェアを提供することがさらに理解されよう。
【０１１５】
本発明はしたがって、コンピュータシステムとともに使うためのコンピュータプログラム製品として適切に実施することができる。このような実装形態は、コンピュータ可読媒体、たとえば、ディスケット、CD-ROM、ROM、またはハードディスクなどの有形媒体上に固定された、あるいは光またはアナログ通信回線を含むが、それに限定されない有形媒体を介して、あるいはマイクロ波、赤外線または他の伝送技法を含むが、それに限定されないワイヤレス技法を用いて無形にモデムまたは他のインタフェース装置経由でコンピュータシステムに送信可能な一連のコンピュータ可読命令を含み得る。この一連のコンピュータ可読命令は、本明細書において前述した機能性の全部または一部を実施する。
【０１１６】
このようなコンピュータ可読命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムと使用するために、いくつかのプログラミング言語で書くことができることが、当業者には理解されよう。さらに、このような命令は、半導体、磁気、または光を含むが、それに限定されない、任意の現在または未来のメモリ技術を用いて格納することも、光、赤外線、またはマイクロ波を含むが、それに限定されない任意の現在または未来の通信技術を用いて伝送することもできる。このようなコンピュータプログラム製品は、たとえば、システムROMや固定ディスク上にコンピュータシステムとともに予め組み込まれた、添付の印刷または電子ドキュメンテーション、たとえば、市販のソフトウェアとともに取外し可能媒体として配布され得ることも、ネットワーク、たとえばインターネットやワールドワイドウェブを介してサーバまたは電子掲示板から配布され得ることも企図される。
【０１１７】
本発明のいくつかの好ましい実施形態について、例示の目的でのみ、添付の図面を参照して説明する。
【図面の簡単な説明】
【０１１８】
【図１】エイリアシングの効果を概略的に示す図である。
【図２】スーパーサンプリングアンチエイリアシング技法を概略的に示す図である。
【図３】表示されるべき画像を概略的に示す図である。
【図４】本発明の実施形態において使用するための例示的なサンプリングパターンを示す図である。
【図５】本発明に従って操作することができるグラフィックス処理プラットフォームの実施形態を示す図である。
【図６】図3の画素を示す拡大図である。
【図７】本発明の実施形態においてレンダリングされるべきフラグメントに関連づけられたデータを示す図である。
【図８】本発明の実施形態における、異なる数のサンプリング点セットとの、フラグメントの関連づけを概略的に示す図である。
【図９】本発明の実施形態においてレンダリングされるべきフラグメントに関連づけられたデータを示す図である。
【図１０】本発明のさらに好ましい構成を概略的に示す図である。
【図１１】本発明のさらに好ましい構成を概略的に示す図である。
【発明を実施するための形態】
【０１１９】
次に、本発明の好ましい実施形態について、表示用の3Dグラフィックスの処理という状況において説明する。ただし、本発明は3Dグラフィックスの処理には限定されず、他の応用も可能であることが当業者には理解されよう。
【０１２０】
当該分野において公知であり、かつ上述したように、3Dグラフィックス画像は、表示されるべきであるとき、一般には、最初に一連のプリミティブ(多角形)として定義され、こうしたプリミティブは次いで、グラフィックスレンダリングのためにグラフィックスフラグメントに分割される(ラスター化される)。通常の3Dグラフィックスレンダリング動作の間、レンダラは、各フラグメントに関連づけられた(たとえば)色(赤、緑および青、すなわちRGB)ならびに透明度(アルファ、a)データを、フラグメントを正しく表示することができるように修正することになる。フラグメントがレンダラを完全に通過すると、フラグメントに関連づけられたデータ値がメモリに格納され、表示用の出力の準備が整う。
【０１２１】
本発明は特に、グラフィックス画像を表示する際のアンチエイリアシング動作を容易にすることに関する。当該分野において公知であるように、アンチエイリアシングは、表示されるべき画像の複数のサンプルをとり、次いで、そうしたサンプルをディスプレイの出力解像度までダウンサンプリングすることによって行われる。
【０１２２】
図3は、本実施形態において用いられる基本アンチエイリアシング構成を概略的に示しており、表示されるべき画像へのサンプリングマスク34の適用の繰返しを示す。サンプリングマスク34の各適用は、表示されるときの画像の画素に対応する。
【０１２３】
各サンプリングマスクは、当該分野において公知であるように、当該の出力画素用に画像をサンプリングし、したがって画素が最終表示においてどのように表示されるべきか決定するのに使われることになるサンプリング点セットを含む。
【０１２４】
本実施形態では、サンプリングマスク34の各事例は、16個のサンプリング点をとってもよく、画像の4個のサンプリング点をとってもよい。こうしたサンプリングマスクの拡大図を示す図4は、このことを示している。
【０１２５】
図4は、16個のサンプリングポジション35からなる配列をそれぞれが表す2つの16倍サンプリングマスク37、38を示す。第1のマスク37は、サンプリングポジション35からなる整列グリッドを有し、第2のマスク38は、サンプリングポジションからなる回転グリッドを有する。図4は、対応する2つの4倍サンプリングマスク39(整列グリッドを有する)、34(回転グリッドを有する)も示し、こうしたマスクはそれぞれ、4個のサンプリングポジション36からなるセットを表す。
【０１２６】
さらに後で論じるように、本実施形態では、画像は、図4に示す4倍サンプリングマスクのいずれか、または16倍サンプリングマスクのいずれかを使って処理することができる。
【０１２７】
図3は、単一プリミティブ32の形でサンプリングマスク配列30に重ねられた画像も示す。(ここで、画像は、分かりやすくするために単一プリミティブを備えるものとして図3に示してあるが、実際には、当該分野において公知であるように、画像は多くの重なったプリミティブを備えてもよく、かつ通常は備えることが理解されよう)。図3から分かるように、プリミティブ32は、サンプリングマスク配列30中のサンプリングマスクのいくつかを完全に覆うが、他のサンプリングマスクに関しては、そのいくつかのマスクの一部を通過するだけである。
【０１２８】
画像のプリミティブ32を処理するために、レンダリングシステムは本質的に、各サンプリングマスク適用の各サンプル点セットのサンプル点のうちどれがプリミティブ32によってカバーされるかをラスター化段階で決定し、次いで、そうしたカバーされたサンプル点のデータをレンダリングし格納することになり、そうすることによって、プリミティブ32の画像を表示装置上に適切に表示することができる。
【０１２９】
次に、本実施形態におけるやり方によって表示するためのプリミティブ32の画像の処理について、本発明に従って操作することができる3Dグラフィックス処理プラットフォームの実施形態を概略的に示す図5を参照して説明する。図5に示す3Dグラフィックス処理プラットフォームは、タイルベースのレンダラであるが、他のレンダリング構成を用いてよいことが当業者には理解されよう(実際、本発明は2次元グラフィックス処理にも同等に適用可能である)。
【０１３０】
図5に示すグラフィックス処理プラットフォームは、レンダリング用のグラフィックスプリミティブを受け取り、プリミティブのレンダリング用に適したポジションにあるグラフィックスフラグメントにプリミティブデータを変換するラスター化機構50を含む。
【０１３１】
その他に、ラスター化機構50からレンダリング用のグラフィックスフラグメントを受け取り、いくつかのレンダリング操作、たとえばテクスチャマッピング、フォギング、ブレンディングなどを、上記グラフィックスフラグメントに加えて、フラグメントの表示用に適したフラグメントデータを生成するレンダリングパイプラインの形のレンダラ51がある。レンダラ51からのレンダリング用フラグメントデータは、後続処理のためにレンダリングパイプラインのタイルバッファ52に格納される。
【０１３２】
タイルバッファ52は、当該分野において公知であるように、表示されるべき画像の一部を表すフラグメントデータの配列を格納する。各タイルが処理されると、そのデータは適切な記憶装置にエクスポートされ、次いで次のタイルが処理され、十分なタイルが処理されて画像全体を表示するまで、以下同様に続く。
【０１３３】
本実施形態では、3つのタイルバッファ52が提供される。各タイルバッファは、そのフラグメントデータを32×32配列(すなわち、表示されるべき画像中のサンプルポジションの32×32配列に対応する)に格納する。こうしたタイルバッファは、別個のバッファとして提供することもでき、実際には、すべてが、より大きい同じバッファの一部でもよい。こうしたバッファは、グラフィックス処理プラットフォーム(チップ)上に(プラットフォームに対してローカルに)構成される。
【０１３４】
タイルバッファ52にあるデータは、当該分野において公知であるように、ダウンサンプリングユニット53に入力され、そこから、表示装置55上に表示するために表示装置55のフレームバッファ54(グラフィックス処理プラットフォーム自体の上になくてもよい)に出力される。表示装置55は、たとえば、コンピュータモニタやプリンタなど、画素配列を含むディスプレイを備え得る。
【０１３５】
ダウンサンプリングユニット53は、タイルバッファに格納されたフラグメントデータを、表示装置55向けの適切な解像度にダウンサンプリングする(すなわち、表示装置の画素に対応する画素データ配列が生成されるようにする)。
【０１３６】
したがって、各32×32データポジションタイルバッファは、たとえば、タイルバッファとディスプレイフレームバッファとの間で4倍ダウンサンプリングが用いられる(というのは、このケースにおいて、各画素は4個のサンプリング点を各画素に実質的に関連づけさせることになるので)、表示されるべき画像中の16×16画素配列に対応することになる。
【０１３７】
本実施形態では、3つのタイルバッファのうち2つが、各サンプリング点に関する色(赤、緑、青)値を格納するのに使われ(この目的のために1つのタイルバッファを使うことも可能であろうが、2つが好まれる)、1つのタイルバッファが、各サンプリング点に関するZ(深さ)値およびステンシル値を格納するのに使われる。他の構成も、当然ながら可能であろう。
【０１３８】
本実施形態では、タイルバッファ52中の個々の各サンプル(データ)ポジションに対して(すなわち、個々の各サンプル点に対して)別個のフラグメントをレンダリングするのではなく、複数のサンプリング点からなる1セットに対して1つのフラグメントがレンダリングされる。
【０１３９】
このプロセスについて、表示されるべき画像に対して、4個のサンプルポジションを有するサンプリングマスク(すなわち、4倍サンプリングマスク)が適用されるべきである場合において、最初に説明する。
【０１４０】
この場合、所与のサンプリングマスク適用に対応する、4個のサンプル点からなる各セットに対して、1つのフラグメントがレンダリングされる。言い換えると、所与のサンプリングマスク適用のサンプル点セットの(したがって、画像中の画素の)4個すべてのサンプル点をレンダリングするのに、一度に単一のフラグメントが使われる。
【０１４１】
次いで、フラグメントがレンダリングされると、レンダリング用フラグメントデータは、適切なサンプルポジションにある多数のコピーとしてタイルバッファ52に格納され、サンプリングマスクの個々の各サンプルポジションに対して別個のフラグメントデータセットを提供するようにする。
【０１４２】
したがって、本例において、図3に示すプリミティブ32を含む画像を考えると、ラスター化機構50は、そのプリミティブをグラフィックス処理システムから受け取り、次いで、画像のどのサンプリング点セット(すなわち、実質的には配列30中のサンプリングマスク34のどの適用)が、プリミティブ32によってカバーされるサンプリング点を含むか決定することになる。(この決定は、当該分野において公知である適切などのやり方で行ってもよい)。ラスター化機構50は次いで、プリミティブ32によってカバーされるサンプリング点を含むことが分かっている各サンプリングマスク適用に対してフラグメントを生成することになる。機構50は次いで、そうしたフラグメントをレンダリング用にレンダラ51に渡すことになる。
【０１４３】
図7は、レンダリングされる前に各フラグメント用に生成され、レンダラ51を通過するデータ70を概略的に示す。図7に示すように、各フラグメントに関連づけられたデータは、とりわけ、フラグメントのx, yポジション71(フラグメントが対応するサンプリング点セットの画像中の(本実施形態では実際には、画像中の適切な画素の)x, yポジションを表す(サンプリングマスクの適用))を、フラグメントに関する色(RGB)、透明度(アルファ)、深さ(z)およびステンシル値など、必要なフラグメント対応データ72とともに含む。このフラグメント対応データ72は、当該分野において公知であるように、レンダラ51のレンダリングユニットによって使われ、適切に修正されて、フラグメントに関する出力フラグメントデータセットを与え、このセットは次いで、タイルバッファ52に格納される。
【０１４４】
フラグメントに関連づけられたデータ70は、フラグメントが対応するサンプル点セット(サンプルマスク)中のサンプルポジションをそれぞれ表すビット配列の形をしたカバレージマスク73も含む。ビット配列カバレージマスク73中の各ポジションは、ラスター化段階で、当該のプリミティブによって対応するサンプルポジションがカバーされることが分かっている場合は「1」に、当該のプリミティブによってサンプルポジションがカバーされない場合は「0」にセットされる。これにより、レンダリングプロセスは、所与のフラグメントに関連づけられたサンプル点のどれが、当該のプリミティブ32によって実際にカバーされるのかを知ることができ、その結果、レンダリングプロセスは、確実に、フラグメントに関するレンダリング用フラグメントデータが、プリミティブによってカバーされるサンプル点のみに使われる(かつ、たとえば格納される)ようにし得る。
【０１４５】
このことは、図3から分かるように、サンプリングマスク34の適用に関するサンプリング点セットのサンプリング点すべてが必ずしもプリミティブによってカバーされることにはならないので、必要となる。
【０１４６】
たとえば、レンダリングされるべきプリミティブ32に関係した、図3のサンプリングマスク適用(画素)33に対するサンプリング点セットの拡大図を示す図6に示すように、サンプルマスク33に対する4個のサンプリング点からなるセットのうち、サンプリング点43、44はプリミティブ32によってカバーされるが、サンプリング点45、46はそのプリミティブによってカバーされないことが分かる。
【０１４７】
ラスター化機構50はしたがって、サンプリングマスク33に対するサンプルポジションのセットに関して、レンダリング用のフラグメントを生成することになる。というのは、そのサンプルポジションセットは、プリミティブ32によってカバーされる2つのサンプルポジション43、44を含むからである。ただし、プリミティブ32はサンプルポジション43、44をカバーするだけなので、サンプルポジション45、46ではなくサンプルポジション43、44に関するレンダリング用フラグメントデータのみが、タイルバッファ52に格納されるべきである。
【０１４８】
したがって、図6に示すサンプルマスク(画素)33に関するサンプルポジションセットに対して、ラスター化機構は、サンプルポジション43、44がフラグメント70によってレンダリングされている最中であるが、サンプルポジション45、46は(プリミティブ32によってカバーされないので)フラグメントによってレンダリングされている最中ではないことを示すために、「0101」という形(図7に示す)のカバレージマスク73を生成することになる。
【０１４９】
したがって、ラスター化機構50は、レンダリング用にプリミティブ32を受け取ると、最初に、配列30のどのサンプリング点セット(サンプリングマスク)が、プリミティブ32によってカバーされるサンプリング点を含むか決定し、そうしたサンプリング点セットそれぞれに対して、図7に示す形のデータを関連づけてあるフラグメントを生成することになる。
【０１５０】
各フラグメントは次いで、レンダリングのためにレンダラ51に渡されることになる。本実施形態では、フラグメントは、2×2フラグメントのブロックに入れられて、レンダリングのためにレンダラ51に送られ、すなわち、そうすることによって、レンダリングエンジンは実質的に、2個のフラグメントの幅と2個のフラグメントの高さをもつ、4個のフラグメントブロックにあるフラグメントを処理する。レンダラ内でフラグメントを1つずつ処理するなど、他の構成も当然ながら可能であろう。
【０１５１】
レンダラ51は、当該分野において公知であるように、受け取ったフラグメントに対してレンダリング動作を行うことになる。こうしたレンダリング動作は、たとえば、各フラグメントに関する最終的レンダリング用フラグメントデータを与えるような、フラグメントの色(RGB)および透明度(A)値の修正を含むことになる。本実施形態では、レンダラ51は、各フラグメントに関連づけられたテクスチャポジションデータ(s, t)に基づいてテクスチャマッピングプロセスを行うテクスチャマッピング段階を含む(図7には示さない)。
【０１５２】
本実施形態では、フラグメントに適用されることになるテクスチャ(色)を決定するのにテクスチャマッピングプロセスが使う画像中のポジションは、共同でレンダリングするのにフラグメントが使われている、すなわち、「重みづけされた」テクスチャサンプルポジションが使われる、カバーされたサンプリング点の画像中の位置(ポジション)に従って選択される。
【０１５３】
他のテクスチャサンプルポジション構成が、当然ながら可能であろう。たとえば、すべてのテクスチャルックアップは、単に当該のサンプリングパターンの中心にとることができよう。
【０１５４】
ここで、各フラグメントはテクスチャルックアップを一度受けるので、本実施形態では、各フラグメントが対応するサンプリング点セットは、テクスチャルックアップを共同で一度受け(すなわち、テクスチャ化動作が、フラグメントに関連づけられたサンプリング点セットのサンプル点すべてに対して用いられる)、すなわち、サンプリング点セットは、実質的にはマルチサンプリングなやり方で処理されることが理解されよう。
【０１５５】
フラグメントがレンダリングされると、フラグメントのデータは、タイルバッファ52に適切に格納される必要がある。本実施形態によると、レンダリングされる各フラグメントに関するデータは、各フラグメントに関連づけられたカバレージマスク73によって示される、タイルバッファ配列中の適切なサンプルポジション(群)に格納される。したがって、図7に例示するフラグメント70のケースでは、たとえば、そのフラグメントに関するレンダリング用データは、それ以外の2つのサンプルポジションではなく、フラグメント70に関連づけられた、タイルバッファ52内のサンプルポジションの2つに格納されることになる。
【０１５６】
タイルバッファ52に格納されるフラグメントデータは、上述したように、各サンプルポジションに関する色(RGB)、透明度(A)、深さ(Z)およびステンシル値を含む。このデータは、適切などの形で格納してもよい。
【０１５７】
当該分野において公知であるように、タイルバッファに格納されるべきである、新たにレンダリングされるフラグメントデータは、タイルバッファに既に格納されているデータとブレンドされる必要がある場合があり、通常ブレンドされる必要があることが当業者には理解されよう。したがって、複数のサンプルポジションを共同でレンダリングするのに所与のフラグメントが使われている(すなわち、フラグメントにあるデータがタイルバッファ内の複数のサンプルポジションに格納されるように)場合、このブレンディング動作は、この動作を達成するのに適したやり方で、すなわち、新たにレンダリングされるフラグメントデータをタイルバッファ内の適切な各サンプルポジションに適切にブレンドするように行われるべきである。したがって、たとえば、ブレンディング動作は、たとえば、適切に「並列な」方式で、レンダリングされるフラグメントデータを複数の並列タイルバッファにブレンドするように行うことができよう。
【０１５８】
このプロセスは、プリミティブ32に関するフラグメントすべてに対して完了されると、画像の後続プリミティブに対して繰り返せばよい(というのは、上述したように、画像は通常、単一のプリミティブ32だけではなく複数のプリミティブからなるからである)。このプロセスは、タイルバッファ52が適切なデータをそのサンプルポジションそれぞれに格納させるまで、画像のプリミティブすべてに対して繰り返される。
【０１５９】
タイルバッファに格納されたデータは次いで、当該分野において公知であるように、ダウンサンプリングのためにダウンサンプリングユニット53にエクスポートし、引き続き表示のためにフレームバッファ54にエクスポートすればよい。このダウンサンプリングは、適切などのやり方でも起こり得る。本実施形態では、データをダウンサンプリングするのに、データの線形ブレンディングが用いられる。ただし、所望される場合は、他の構成が可能であろう。
【０１６０】
この構成において、ダウンサンプリングユニット53は、4倍ダウンサンプリングのサンプリング動作を行い、すなわち、そうすることによって、タイルバッファ52に格納された4個のデータエントリ(すなわち、2×2個のサンプルポジション)がフレームバッファ54向けの単一の出力データ値(画素)にダウンサンプリングされるようにする。これは、ダウンサンプリングユニット53向けの通常動作モードである。というのは、このモードでは、出力画像の各画素(図3に示す)にとられる(4倍サンプリングマスクが使われているので)4個のサンプルに対応する4個のサンプル値をとり、こうした値を単一の値にダウンサンプリングすることになるからである。この構成では、32×32配列タイルバッファ52はしたがって、フレームバッファ54内の16×16画素配列にダウンサンプリングされる(かつ対応する)ことになる。
【０１６１】
必要とされる場合、ダウンサンプリングユニット53は、ユニット53がフレームバッファ54に出力するデータに、適切なガンマ補正を適用することもできるが、これは、たとえば、フラグメント陰影づけ動作としても、または他の適切かつ所望のどのやり方でも行ってもよい。
【０１６２】
表示されるべき画像が複数の重なったプリミティブを含む場合、当該分野において公知であるように、事実、所与のいずれかのプリミティブが所与のサンプリング点の所で実際に見つかるかどうかをレンダリングプロセスが決定することも必要になる。本実施形態では、この決定は、当該分野において公知であるように、フラグメントがレンダリングされるとき、その深さ(z)値を比較することによって行われる。具体的には、新規フラグメントがレンダリングされることになると、そのフラグメントに関連づけられた深さ(z)値が、フラグメントが対応するサンプルポジションに関してタイルバッファ52に既に格納されているフラグメントデータの深さ値と比較され、この比較が、新規フラグメントが見つからないことを示す場合、新規フラグメントはそれ以上処理されない。一方、深さ値の比較が、事実、新規フラグメントが、タイルバッファ52に現在格納されているフラグメントの代わりに見つかったことを示す場合、新規フラグメントがレンダリングされ、そのレンダリング用フラグメントデータが、適切なサンプルポジションに関する既存のデータの代わりにタイルバッファ52に格納される。
【０１６３】
上記は、表示されるべき画像に4倍サンプリングマスクが適用される場合の本実施形態の作用について説明している。ただし、上述したように、本実施形態では、表示されるべき画像をサンプリングする際、16倍サンプリングマスクを使うことも可能である。16倍サンプリングマスクが使われる場合の本実施形態の作用について、次に説明する。
【０１６４】
本実施形態において、画像のサンプリング用に16倍サンプリングマスクが使われる場合、グラフィックスプロセッサの動作は、4倍サンプリングマスクが使われている状況に関して上述したのと本質的に同じである。したがって、サンプリングマスクが画像に適用され、サンプルがとられ、フラグメントが生成されレンダリングされて、カバーされる各サンプリングポジションに関するレンダリング用フラグメントデータを生成し、レンダリングされたサンプルが適切にダウンサンプリングされて、表示用の出力画素を生じる。
【０１６５】
したがって、特段の指定がない限り、16倍サンプリングマスクが使われているときのグラフィックス処理システムの動作は、4倍サンプリングマスクが使われているときの動作と同じである。したがって、以下の説明では、2つの動作モードの間の違いに焦点を当てる。
【０１６６】
16倍サンプリングマスクが使われているときの本実施形態における動作の主な違いは、レンダリングされるときの所与のフラグメントは、所与の16倍サンプリングマスク適用の16個すべてのサンプリングポジションに関連づけることもでき、16倍サンプリングマスクの4個のサンプリングポジションにのみ関連づけることもできることである。
【０１６７】
具体的には、16倍サンプリングマスクは、そのサンプリング点を、レンダリングされるべきであるフラグメントに関連づける目的のために、2つのレベルの階層に分けることができる。すなわち、フラグメントが16倍サンプリングマスクの16個すべてのサンプリング点に関連づけられる第1のレベル、およびフラグメントが16倍サンプリングマスクの4個のサンプリング点にのみ関連づけられる第2のレベルである。
【０１６８】
これによる影響は、上述したように、所与のどのサンプリングマスク適用に関しても、たとえば、サンプリングされるプリミティブによってサンプリングマスクが完全にカバーされる場合、サンプリングマスクの16個すべてのサンプリング点に対応する単一フラグメントを、サンプリングマスクをレンダリングするのに使うことができ、プリミティブによってサンプリングマスクが部分的にのみカバーされる場合、マスクは、たとえば、16倍サンプリングマスクの4個のサンプリングポジションにそれぞれが対応し、別個のフラグメントを使ってレンダリングされるさらに小さいパッチに下位分割することができることである。したがって、完全にカバーされたサンプリングマスクは、単一フラグメントとしてレンダリングされることになり、部分的にカバーされたサンプリングマスクは、1〜4個のフラグメントとして扱われる。
【０１６９】
グラフィックスプロセッサは、サンプリングされる(ラスター化される)プリミティブ(画像)による各サンプリングマスク適用のカバレージを、ラスター化段階で決定し、次いで、各サンプリングマスク適用のサンプリングポジションを、サンプリングされるプリミティブによる16倍サンプリングマスクのサンプリングポジションのカバレージに応じて、サンプリングマスクの16個すべてのサンプリングポジションに対応する単一フラグメントとして、または16倍サンプリングマスクの4個のサンプリングポジションに対応する1つもしくは複数のフラグメントとして、または16個すべてのサンプリングポジションに対応するフラグメントと4個のサンプリングポジションに対応する1つもしくは複数のフラグメントとの組合せとして、選択的に処理しレンダリングする。
【０１７０】
図8は、このプロセスを示し、所与の16倍サンプリングマスク適用の異なるカバレージ、およびサンプリングマスクのサンプリングポジションをレンダリングするためにレンダリングされるべきフラグメントに関連づけられた対応するサンプリング点「パッチ」の例を示す。
【０１７１】
図8において、レベル「0」の出力パッチは、16倍サンプリングマスクの16個すべてのサンプリングポジションに関連づけられたフラグメントを表す。レベル「1」の出力パッチは、16倍サンプリングマスクの4個のサンプリングポジションに関連づけられたフラグメントを表す。図8に示すように、本実施形態では、レベル1であり4サンプリングポジションの各フラグメントは、16倍サンプリングマスクのある特定の4分の1に対応する。
【０１７２】
したがって、図8の第1の例80に示すように、16倍サンプリングマスク81が、サンプリングされるプリミティブによって完全にカバーされる場合、サンプリングマスクは、単一のレベル0出力パッチとして、すなわち、サンプリングマスク81の16個すべてのサンプリング点に対応する単一フラグメント82としてレンダリングされる。この場合、図8に示すように、サンプリングポジションすべてがカバーされるので、フラグメント82は、そのすべてのサンプリングポジションをカバーさせているものとして示される。
【０１７３】
図8に示す第2の例83では、16倍サンプリングマスク84の下半分がカバーされている。この場合、サンプリングマスク84はやはり、サンプリングマスク84の16個すべてのサンプリング点に対応する、単一のレベル0フラグメント85を使ってレンダリングすればよいが、この場合は、フラグメント85に関連づけられたカバレージ情報は、図8に示すように、サンプリングマスクの下半分のみがカバーされることを示す。
【０１７４】
図8の例86も同様の状況を示すが、この場合は、16倍サンプリングマスク87の右側がカバーされている。この場合、サンプリングマスクはやはり、サンプリングマスク87の16個すべてのサンプリング点に対応する単一フラグメント88としてレンダリングされるが、フラグメント88に関連づけられたカバレージ情報は、カバーされるのはサンプリングマスクの右半分であることを示す。
【０１７５】
図8に示す次の例90では、16倍サンプリングマスク89は、やはり部分的にカバーされるが、この場合、サンプリングマスク89のどの四半分(4分の1)も完全にカバーされないようなカバレージとなる。この場合、サンプリングマスク89はしたがって、カバーされるサンプルポジションがあるサンプリングマスク89のそれぞれの下側の四半分の4個のサンプリング点にそれぞれが対応する、2つのレベル1フラグメント91、92を生成することによってレンダリングされる。フラグメント91は、四半分93に対応し、フラグメント92は、四半分94に対応する。サンプルマスク89の上半分のレンダリング用にフラグメントを生成する必要はない。というのは、サンプルマスクのその部分は、カバーされないからである。
【０１７６】
図8の例95は、サンプルマスク96が部分的にカバーされるそれ以外の状況を示す。
【０１７７】
この場合、サンプルマスク96の左上の四半分を除くすべてが完全にカバーされているので、それらのサンプルポジションは、図8に示すように、適切なレベル0(すなわち、16サンプリング点)フラグメント97を使ってレンダリングすることができる。
【０１７８】
部分的にカバーされる、サンプリングマスク97の左上の四半分が次いで、単一のレベル1の4サンプリング点フラグメント98を使ってレンダリングされる。やはり、フラグメント97、98に関連づけられたカバレージ情報は、フラグメントが対応するどのサンプリングポジションがプリミティブによってカバーされるかを示すことが、図8から分かる。
【０１７９】
(ここで、図8の、カバーされるサンプリングポジションの異なる陰影づけは、そうしたサンプリングポジションをレンダリングするのに使われる異なるフラグメントレベルを示すのに用いられることに留意されたい。このことは、サンプリングポジションが異なるプリミティブによってカバーされることを示すのではない)。
【０１８０】
図8の例99は、16倍サンプリングマスク100の右下の四半分は完全にカバーされているが、残りの四半分は部分的にのみカバーされている状況を示す。この場合、サンプリングマスク100は、サンプリングマスク100の右下の四半分のサンプリングポジションをレンダリングするために、レベル0の16サンプリングポジションフラグメント101を使って、かつサンプリングマスク100の残りの四半分をレンダリングするために、レベル1の3個の4サンプリング点フラグメント102、103、104を使ってレンダリングされる。
【０１８１】
図8の例105はやはり、16倍サンプリングマスク106が部分的にカバーされる異なる状況を示す。この場合、サンプリングマスク106の左下の四半分はカバーされないが、残りの四半分は、カバーされるサンプリング点を含む。この状況は、カバーされるサンプリングポジションを含むそれぞれの四半分に対応する、レベル1の3個の4サンプリング点フラグメント107、108、109を生成することによってレンダリングされる。
【０１８２】
最後に、図8の例110は、16倍サンプリングマスク111の右上および左下の四半分は完全にカバーされるが、他の四半分は部分的にのみカバーされる状況を示す。この場合、サンプリングマスク111は、サンプリングマスク111の右上および左下の四半分のサンプリングポジションをレンダリングするために、レベル0の16サンプリングポジションフラグメント112を使って、かつ16倍サンプリングマスク111のもう一方の四半分のカバーされるサンプリングポジションをレンダリングするために、レベル1の2つの4サンプリングポジションフラグメント113、114を使ってレンダリングされる。
【０１８３】
図8に示すように、4倍サンプリングマスクの使用に関係して上述したように、フラグメントが対応するサンプルポジションのどれがカバーされるかを、各フラグメントに対して示すことが必要である。これは、上述し、かつ図7に示すように、各フラグメントに関連づけられたカバレージマスクを使って行われる。
【０１８４】
図9は、このことを示す。
【０１８５】
したがって、たとえば、図9に示すように、16倍サンプリングマスクに対応し、完全にカバーされるフラグメント82の場合、このフラグメントは、レンダリングされるときに、フラグメントにカバレージマスク「1111」を関連づけさせている。同様に、フル16倍サンプリングマスクを表す部分的にカバーされるフラグメント85は、カバーされるのはサンプリングマスクの下半分であることを示すためのカバレージマスク「0011」を有し、やはりフル16倍サンプリングマスクを表すフラグメント88は、そのカバレージマスクとして、サンプリングマスクの右半分がカバーされることを示すための「0101」を有する。
【０１８６】
こうした例それぞれにおいて、フラグメントは、16倍サンプリングマスクの16個すべてのサンプリング点を表し、レンダリングするのに使われているが、各フラグメントに関連づけられたカバレージマスク73によって表される4つのカバレージポジションしかないことに留意されたい。それぞれの各カバレージマスクポジションはしたがって、実際には、サンプリングマスクの四半分(4分の1)、すなわち4個のサンプリング点がカバーされるかどうかを示す。
【０１８７】
カバレージマスク73中の所与のポジションは実際、4つのサンプリングポジションに対応し得るという可能性を認めるために、各フラグメントは、レベル0フラグメント、すなわち、カバレージマスクの16個すべてのサンプリング点を表すフラグメントを示すように「0」にセットされる(したがって、その各カバレージマスク73ポジションに対して、サンプリングマスクの四半分の4個のサンプリング点を表す)、またはフラグメントが4個のサンプリング点のみに対応するレベル1フラグメントであることを示すように「1」にセットされる(したがって、そのカバレージマスク73中の各ポジションに対して、単一のサンプリング点を表す)フィールド120を示すレベルまたは階層をフラグメントに関連づけている。
【０１８８】
フラグメント82、85、88のケースでは、図9に示すように、この階層フィールド120は、サンプリングマスクの16個すべてのサンプリング点に対応するとともに、それをレンダリングするのに使われるレベル0のフラグメントであることを示すように、「0」にセットされる。
【０１８９】
図9は、図8のフラグメント91、92に関するフラグメントデータも示す。この場合、フラグメント91は、フラグメントの下半分がカバーされるのでカバレージマスク「0011」をもち、フラグメント92はカバレージマスク「0111」をもつ。こうしたフラグメントはまた、それぞれ、レベル1のフラグメントであること、すなわち、フラグメントが4つのサンプリングポジションにのみ対応することを示すように、その階層フィールド120を「1」にセットさせている。
【０１９０】
図9は最終的に、図8に示すサンプリングマスク111のレンダリング用に生成されたフラグメントも示す。この場合、上述したように、カバレージマスク「0110」およびレベルフィールド「0」をもつ第1のレベル0の16サンプリング点フラグメント112、ならびにそれぞれサンプリングマスク「0001」、「1000」を有するとともにそのレベルフィールド120が「1」にセットされた2つのレベル1フラグメント(それぞれ4個のサンプリング点に対応する)113、114がある。
【０１９１】
本実施形態におけるフラグメントデータの設計の仕方により、フラグメントが16個のサンプリングポジションに対応し得る場合であっても4ビットカバレージマスクの使用が可能になることが分かる。こうすることにより、たとえば、このようなフラグメントに対して16ビットカバレージマスクを使わなければならない必要がなくなる。フラグメントの「レベル」(すなわち、フラグメントが何個のサンプリング点に対応するか)を示すのに、追加ビットが使われるが、これには依然として、16ビットカバレージマスクが使われた場合よりも少ない追加データは要求される。
【０１９２】
4個のサンプリング点のみを表すレベル1フラグメントごとに、16倍サンプリングマスクのどの四半分(4分の1)にそのフラグメントが対応するかを示すことが必要な場合もあり得る。この情報は、たとえば、この目的のために追加されるフラグメントデータの具体的なフィールド中の、またはフラグメントデータの既存のフィールド中の2ビットを使って提供することができる。ただし、フラグメントが対応する四半分を示すためにこうした追加の2ビットを用いても、各フラグメントに対してフル16ポジションカバレージマスクを使うよりも少ないデータ容量は依然として要求される。
【０１９３】
当然ながら、所望される場合は、フラグメントに対して4ビットポジションカバレージマスクを用いて、異なるやり方で16倍サンプリングマスクを表すことが可能であろう。たとえば、カバレージマスク中の各ビットポジションは、16倍マスクの4分の1を表す必要はないが、たとえば、16倍マスクの行または列、あるいは他の何らかの部分を表すことはできよう。
【０１９４】
サンプリングマスクの複数のレベルの再分割を行うことも可能であろう。そうすることによって、たとえば、システムは、64倍「パッチ」として、1つもしくは複数の16倍「サブパッチ」として、および/または1つもしくは複数の4倍「サブパッチ」などとして表すことができる64倍サンプリングマスクを使うことができる。所望される場合は、たとえば、32倍および/または8倍「サブパッチ」を生じるように、一方向のみの任意のサンプリングマスク再分割を行うことも可能であろう。
【０１９５】
また、たとえば、(「ゼロ」)カバレージを指さないカバレージマスクは、たとえば異なる形のカバレージマスクに対応する、(ゼロカバレージではなく)代わりに別のカバレージパターンを表すものとして定義することができよう。ここで、場合によっては、実際には(カバレージ「ゼロ」マスクが実質的に「予備」カバレージマスク値であるように)レンダリングプロセスを通じてゼロのカバレージを有するフラグメントを送ることが望まれることは決してないであろう。
【０１９６】
各カバレージマスク適用のレンダリング用フラグメントは、図8、9に関連して上述したように生成され設計されると、通常方式でのレンダリングのためにレンダリングパイプラインに送られる。フラグメントがレンダリングされると、そのレンダリング用フラグメントデータは、タイルバッファ52に適切に格納され、最終的には、上で論じたやり方で、表示用にダウンサンプリングされる。
【０１９７】
この場合、各「出力」画素ごとに16個のサンプリングポジションがあることになるので、16倍ダウンサンプリングが適用されることになる。
【０１９８】
上記のダウンサンプリングを容易にするために、本実施形態では、ダウンサンプリングユニット53が、2通りのレベルのダウンサンプリング、すなわち、4倍または16倍ダウンサンプリングを、タイルバッファ52に格納されたデータに選択的に適用することができるように構成される。本実施形態では、適用されるべきダウンサンプリングのレベルは、フレーム単位で設定され、レンダリングプロセスがレンダリング用フレームを受け取ったときにルックアップすることができる適切なレジスタに格納される。
【０１９９】
本実施形態の好ましい一構成では、16倍サンプリングマスクが使われている(すなわち、1つの出力画素につき4個のサンプル(4倍サンプリングマスクが使われる場合のケース)ではなくここでは1つの出力画素につき16個のサンプルがあるとしても、各タイルバッファが16×16の出力画素配列に依然として対応するように)ときに、レンダリング用フラグメントデータを同じ画素解像度でタイルバッファに格納させるために、16倍サンプリングマスクが使われているときの各サンプリングポジションに関するレンダリング用フラグメントデータが圧縮される。この圧縮には、適切などのデータ圧縮技法を用いてもよい。
【０２００】
この圧縮は、16倍サンプリングマスクを使うときは、4倍サンプリングマスクを使うときと比較して、品質、たとえば色の精度のある程度の低下があり得ることを実際に意味するが、このようなどの品質損失もサブ出力画素レベルでは存在するので、圧縮の結果生じるどのアーティファクトも、存在するとしても、非常にまれにしか出力画素レベルには継承されないはずである。
【０２０１】
本実施形態では、16倍サンプリングマスクが使われている場合は、フル16倍サンプリングマスク処理(すなわち、サンプリング点が本実施形態でのようにまとめては処理されない)との整合性に関して、重心マッピングが無効にされた場合、レンダリングプロセスを通して送られるフラグメントそれぞれに関する重心座標は、同じになるように設定される。こうすることにより、各サブサンプリングマスクフラグメントが、通常のl6倍サンプリングが有するのと同じテクスチャ座標ルックアップを確実に実現するようになるはずである。(テクスチャキャッシュがより多くのヒットを経験すると、処理も高速化されるはずである)。
【０２０２】
一方、重心マッピングが有効にされた場合、重心マッピングは、フラグメントごとに個々に行われる(各フラグメントは、独自のテクスチャ座標を得る)。
【０２０３】
また、上述したように、本実施形態では、レンダリングプロセスは、フラグメントを2×2グループでレンダリングする。重心マッピングが有効にされない場合、上述したように重心座標がすべてのサブマスクフラグメントに対して固定されることになるので、2×2個のフラグメントそれぞれに対して同じサブマスクフラグメントをパイプライン下流に送る必要はない場合がある。ただし、依然として、たとえば、派生物を派生する目的で、各2×2グループでレンダリングされるフラグメントの何らかの順序づけまたは設計が存在する必要があり得る。
【０２０４】
この場合、好ましくは、処理される各2×2フラグメントグループは、正しい、たとえば派生による生成結果を保存するように、グループ中の適切なポジションに、適切なそれぞれのオリジナルサンプリングマスク適用によるサンプリング点を表すフラグメントを含む。これは、そうするためにラスター化機構を適切に設計することによって達成することができる。
【０２０５】
図10はこのことを示し、レンダリングプロセスを通したその設計を有する2×2のグループ化として処理されるべきである2×2のサンプリング(画素)グリッドを示す。したがって、個々のサンプリングマスク適用が、その適切なフラグメント(パッチ)にレンダリング用に分割されると、このようなフラグメントの各グループは、2×2のフラグメントグループ中のそれぞれの各ポジションに、2×2サンプリングマスク(画素)グリッド130中での対応するサンプリングマスク適用をレンダリングするのに使われているフラグメントに対応するフラグメントを含むように、図10に示すように設計される。
【０２０６】
したがって、たとえば、図10に示すように、処理される第1の2×2フラグメントグループ131は、サンプリングマスク133に対応する第1のレベル0フラグメント132、サンプリングマスク135に対応するレベル0の16サンプリングポジションフラグメント134、サンプリングマスク137に対応するレベル0フラグメント136、およびサンプリングマスク139に対応するレベル1(4サンプリングポジション)フラグメント138を含む。
【０２０７】
同様に、レンダリングされるべき第2の2×2フラグメントグループ132は、サンプリングマスク133に対応するレベル0フラグメント140、サンプリングマスク135に対応するレベル1(4サンプリングポジション)フラグメント141、サンプリングマスク137に対応するレベル1フラグメント142、およびサンプリングマスク139に対応するレベル1フラグメント143を含む。
【０２０８】
ただし、図10に示すように、重心マッピングが有効にされない場合、各2×2フラグメントグループ内でのフラグメントの順序自体は、無作為でよい。
【０２０９】
図10は、所与の2×2サンプリングマスクグループ化における2×2サンプリングマスク適用(画素)すべてがカバーされる状況を示す。ただし、2×2サンプリングマスク(画素)グリッド中のサンプリングマスク適用のただ1つがカバーされる場合、本実施形態において代替構成が用いられる。これについては、図11に示す。
【０２１０】
図11に示すように、この場合、2×2サンプリングマスク(画素)グリッド151のただ1つのサンプリングマスク適用150がカバーされている。この場合、サンプリングマスク150は、サンプルマスク150の対応する4分の1をそれぞれが表す2×2のフラグメント152からなるグループとして処理される。
【０２１１】
ただし、適切な派生的生成などを依然として可能にするために、2×2フラグメントグループ化152が同じサンプルマスク150にあるフラグメントのみを含む場合であっても、カバレージマスクおよびカバーされないフラグメント(具体的には、2×2フラグメントグループ化152では全くカバーされないフラグメント153)が、派生物などを派生させるのに必要とされる適切な情報を格納するのに使われる。
【０２１２】
上記は、表示されるべき画像の4倍マルチサンプリングまたは16倍マルチサンプリングを行うのに、本実施形態をどのように用いればよいかについて説明している。本実施形態のグラフィックスプロセッサの使用において、処理のためにグラフィックスプロセッサに画像を送るアプリケーションは、どちらの形のマルチサンプリング(4倍または16倍)が画像に対して用いられるべきであるかを示し、グラフィックプロセッサは、それに従ってそれ自体を設計し動作することになる。
【０２１３】
上記のことから、本発明は、その好ましい実施形態では少なくとも、本質的に、4倍マルチサンプリング(アンチエイリアシング)を実施するように設計されるアーキテクチャを用いて、16倍マルチサンプリング(アンチエイリアシング)を達成させることが分かる。したがって、ユーザには、正規の4倍マルチサンプリングか、または所有する16倍マルチサンプリングを選択するという選択肢があり、おそらく性能低下はわずかだが、いずれの場合でも、4倍ダウンサンプリングを伴う4倍マルチサンプリングを用いることによって達成されるフル16倍マルチサンプリングより速く、ダウンサンプリングを伴わないフル16倍マルチサンプリングを用いることによって達成されるフル16倍マルチサンプリングよりはるかにコストが低い。
【０２１４】
したがって、本発明により、16倍サンプリングを達成するために、グラフィックスプロセッサコアのサイズを増大させる必要をなくすことができ、したがって、たとえば、より少ないパワー使用で16倍サンプリングを達成させることができる。本発明により、たとえば、フル16倍サンプリングされたタイルバッファを使うシステムに勝るパワー利点が実現される。
【０２１５】
本発明はしたがって、より高レートのアンチエイリアシングを達成させるが、グラフィックスプロセッサのサイズおよびパワー使用を大幅に増大する必要はない。さらに、ほとんどの画素が完全にカバーされるので、いかなる性能低下もごくわずかになるはずである。
【０２１６】
このことは、本発明の好ましい実施形態において、サンプリングマスク全部がカバーされる場合、サンプリングマスクがサンプリングマスク全体に対応する単一フラグメントとしてパイプラインを介して送られるが、サンプリングマスクのいくつかの部分のみがカバーされる場合は、より小さいパッチに分け、サンプリングマスクのサブパッチをそれぞれが表すフラグメントを使ってレンダリングすればよいように、少なくとも、サンプリングマスクを別個のレベルに分割することによって達成される。
【符号の説明】
【０２１７】
30  サンプリングマスク配列
32  プリミティブ
34  サンプリングマスク
35  サンプリングポジション
36  サンプリングポジション
37  16倍サンプリングマスク
38  16倍サンプリングマスク
39  4倍サンプリングマスク
43  サンプルポジション
44  サンプルポジション
45  サンプルポジション
46  サンプルポジション
50  ラスター化機構
51  レンダラ
52  タイルバッファ
53  ダウンサンプリングユニット
54  フレームバッファ
55  表示装置
70  データ、フラグメント
72  フラグメント対応データ
73  カバレージマスク
71  ポジション
81  サンプリングマスク
82  フラグメント
84  サンプリングマスク
85  フラグメント
87  サンプリングマスク
88  フラグメント
89  サンプリングマスク
91  フラグメント
92  フラグメント
96  サンプルマスク
97  フラグメント
98  フラグメント
100  サンプリングマスク
102  フラグメント
103  フラグメント
104  フラグメント
106  サンプリングマスク
107  フラグメント
108  フラグメント
109  フラグメント
111  サンプリングマスク
112  フラグメント
113  フラグメント
114  フラグメント
120  フィールド
130  グリッド
131  フラグメントグループ
132  フラグメント
133  サンプリングマスク
134  フラグメント
135  サンプリングマスク
136  フラグメント
137  サンプリングマスク
138  フラグメント
139  サンプリングマスク
140  フラグメント
141  フラグメント
142  フラグメント
143  フラグメント
150  サンプリングマスク
151  グリッド
152  フラグメント
153  フラグメント
【図１】
2010102713.tif 000003
【図２】
2010102713.tif 000004
【図３】
2010102713.tif 000005
【図４】
2010102713.tif 000006
【図５】
2010102713.tif 000007
【図６】
2010102713.tif 000008
【図７】
2010102713.tif 000009
【図８】
2010102713.tif 000010
【図９】
2010102713.tif 000011
【図１０】
2010102713.tif 000012
【図１１】
2010102713.tif 000013
【外国語明細書】
2010102713.tif 000014
2010102713.tif 000015
2010102713.tif 000016
2010102713.tif 000017
2010102713.tif 000018
2010102713.tif 000019
2010102713.tif 000020
2010102713.tif 000021
2010102713.tif 000022
2010102713.tif 000023
2010102713.tif 000024
2010102713.tif 000025
2010102713.tif 000026
2010102713.tif 000027
2010102713.tif 000028
2010102713.tif 000029
2010102713.tif 000030
2010102713.tif 000031
2010102713.tif 000032
2010102713.tif 000033
2010102713.tif 000034
2010102713.tif 000035
2010102713.tif 000036
2010102713.tif 000037
2010102713.tif 000038
2010102713.tif 000039
2010102713.tif 000040
2010102713.tif 000041
2010102713.tif 000042
2010102713.tif 000043
2010102713.tif 000044
2010102713.tif 000045
2010102713.tif 000046
2010102713.tif 000047
2010102713.tif 000048
2010102713.tif 000049
2010102713.tif 000050
2010102713.tif 000051
2010102713.tif 000052
2010102713.tif 000053
2010102713.tif 000054
2010102713.tif 000055
2010102713.tif 000056
2010102713.tif 000057
2010102713.tif 000058
2010102713.tif 000059
2010102713.tif 000060
2010102713.tif 000061
2010102713.tif 000062
2010102713.tif 000063
2010102713.tif 000064
2010102713.tif 000065
2010102713.tif 000066
2010102713.tif 000067
2010102713.tif 000068
2010102713.tif 000069
2010102713.tif 000070
2010102713.tif 000071
2010102713.tif 000072
2010102713.tif 000073
2010102713.tif 000074
2010102713.tif 000075
2010102713.tif 000076
2010102713.tif 000077
2010102713.tif 000078
2010102713.tif 000079
2010102713.tif 000080
2010102713.tif 000081
2010102713.tif 000082
2010102713.tif 000083
2010102713.tif 000084
2010102713.tif 000085
2010102713.tif 000086
2010102713.tif 000087
2010102713.tif 000088