(57)【特許請求の範囲】
【請求項１】
グラフィックデータに基づくシーンを表示するためのレンダリングを実行するコンピュータシステムにおいて、表示する画面内の画素に生じるエイリアシングを低減するために前記グラフィックデータを処理する方法であって、
各画素を、それぞれ当該画素および当該画素の周囲近傍の画素内に分布するサブピクセルサンプルの各値に基づき、エッジ画素のグループを含む１又は複数のグループに分類して、各グループの画素をそのグループ専用のフィルタでフィルタ処理し、
エッジ画素のグループとして分類されたグループのそれぞれに対し、前記フィルタ処理のためにそのグループのエッジの方向を示す数値の近似値を求める、方法。
【請求項２】
請求項１に記載の方法であって、前記サブピクセルサンプルには、スーパーサンプリング、マルチサンプリング、及びガバレッジサンプリングの中から選択された１又は複数のアンチエイリアシング方法を用いて生成されたサンプルが含まれる方法。
【請求項３】
請求項１に記載の方法であって、前記エッジ画素のグループのエッジの方向を示す数値の近似値は、当該エッジの法線方向の近似値である方法。
【請求項４】
請求項１に記載の方法であって、前記エッジ画素のグループのエッジの方向を示す数値の近似値を求める処理には、複数のサブピクセルサンプルの各値に適合するように線形関数を調整する処理が含まれる方法。
【請求項５】
請求項４に記載の方法であって、更に、前記エッジの方向を示す数値の近似値の精度を評価することによって、エッジ画素をエッジ画素又は非エッジ画素のいずれかとして再分類することが含まれる方法。
【請求項６】
請求項１に記載の方法であって、更に、最大値しきい値処理（ＭＤＴ）を用いて画素を分類することが含まれる方法。
【請求項７】
請求項６に記載の方法であって、更に、ＭＤＴ非エッジ画素がエッジ画素に接触する場合に、ＭＤＴ非エッジ画素をエッジ画素として細分類することが含まれる方法。
【請求項８】
請求項５に記載の方法であって、更に、更なる処理を必要とする画素及び更なる処理を必要としない画素のマスクを生成することが、含まれる方法。
【請求項９】
請求項５に記載の方法であって、更に、各エッジ画素に対し、当該エッジ画素及びそのエッジ画素の近傍から取得した複数のサブピクセルサンプルにフィルタを適用して画素値を計算することが含まれる方法。
【請求項１０】
請求項９に記載の方法であって、前記フィルタは、エッジの法線方向の近似値に基づき計算されたサンプル重みを利用することによってエッジ位置を復元するものである方法。
【請求項１１】
グラフィックスプロセッサと、
グラフィックスプロセッサによってアクセス可能なメモリ装置であって、グラフィックスプロセッサ上で実行されるとアンチエイリアシング方法を実施するシェーダプログラムを含む命令を記憶しているメモリ装置とが含まれるシステムであって、当該方法では、
各画素を、それぞれ当該画素および当該画素の周囲近傍の画素内に分布するサブピクセルサンプルの各値に基づき、エッジ画素のグループを含む１又は複数のグループに分類して、各グループの画素をそのグループ専用のフィルタでフィルタ処理し、
エッジ画素のグループとして分類されたグループのそれぞれに対し、前記フィルタ処理のためにそのグループのエッジの方向を示す数値の近似値を求める、システム。
【請求項１２】
請求項１１に記載のシステムであって、前記サブピクセルサンプルには、スーパーサンプリング、マルチサンプリング、及びカバレッジサンプリングの中から選択された１又は複数のアンチエイリアシング方法を用いて生成されたサンプルが含まれるシステム。
【請求項１３】
グラフィックスプロセッサと、
グラフィックスプロセッサによってアクセス可能なメモリ装置であって、グラフィックスプロセッサ上で実行されるとアンチエイリアシング方法を実施するシェーダプログラムを含む命令を記憶しているメモリ装置と、
前記グラフィックスプロセッサ上において複数のレンダリングパスを用いて前記アンチエイリアシング方法を実施するソフトウェアドライバとが含まれるシステムであって、
前記アンチエイリアシング方法では、
アンチエイリアシングに用いられる複数のサブピクセルサンプルのデータを受信し、
前記サブピクセルサンプルの各値に基づき、非エッジ画素を識別することを含むエッジマスク処理を実行し、
前記サブピクセルサンプルの各値に基づき、エッジ画素を識別することを含むフィルタマスク処理を実行し、
前記フィルタマスク処理により識別した各エッジ画素のエッジの法線方向に基づく強化フィルタを用いて、エッジのサブピクセルサンプルをフィルタ処理し、
周知のフィルタアルゴリズムを用いて非エッジのサブピクセルサンプルをフィルタ処理し、
前記複数のレンダリングパスには、エッジ画素を含まないタイルのみを通す第１パスが含まれる、システム。
【請求項１４】
請求項１３に記載のシステムであって、前記複数のレンダリングパスには、更に、少なくとも１つのエッジを含むタイルのみを通す第２パスが含まれ、また、シェーダが周知の分解処理を実行し、同時にエッジ画素を識別するシステム。
【請求項１５】
請求項１４に記載のシステムであって、第２パスには、内部画素があればそれらを消去するために実施される最大差しきい値処理（ＭＤＴ）が含まれるシステム。
【発明の詳細な説明】
【関連出願】
【０００１】
本願は、２００８年４月４日出願の米国特許仮出願第６１／０４２，６０８号の優先権を主張し、その全文を参照により本明細書に援用する。
【技術分野】
【０００２】
本明細書に開示する実施形態は、グラフィックスデータ処理の分野に関する。
【背景技術】
【０００３】
エイリアシングは、コンピュータグラフィックスの基本的な問題である。アンチエイリアシングは、エイリアシング問題、即ち、アンダーサンプリングによる高周波雑音を軽減する。現在のアンチエイリアシング法は、通常、リアルタイム・レンダリングの場合、特に、ゲームの場合、高価である。しかしながら、現代のグラフィックスハードウェアの性能は、アンチエイリアシングが贅沢ではなく、当然の機能であるという程度まで達している。例えば、グラフィックスのベンチマークレビューによれば、中間価格帯のハードウェアの場合でさえ、２Ｘマルチサンプル・アンチエイリアシングが、今では最低条件である。
【０００４】
アンチエイリアシングについて幾つかの手法が開発されている。既知の解決策では、通常、画素のサブサンプルにボックスフィルタを用いるが、これによって表示結果が或る程度改良される。現代のグラフィックスハードウェアにおいて人気がある２つのアンチエイリアシング法は、スーパーサンプリング及びマルチサンプル・アンチエイリアシング（ＭＳＡＡ）である。スーパーサンプリングは、通常、より高い解像度でシーンをレンダリングし、そして、対象解像度に合わせてダウンサンプリングすることによって実施される。スーパーサンプリングは、性能及びメモリ帯域幅の双方の点で高価であるが、その結果は、シーン全体がより高い解像度でレンダリングされるため、高い品質を有する傾向がある。ダウンサンプリングは、分解処理（ｒｅｓｏｌｖｅ）と呼ばれる処理ステップで実施されるが、これは、フィルタ処理によるサンプルの集約である。ＭＳＡＡは、スーパーサンプリングの他の選択肢であり、現在の民生用ＧＰＵでのリアルタイム・グラフィックス用アンチエイリアシングの最も有力な方法である。第３の手法も最近導入されたものであり、カバレッジサンプリングと呼ばれる。この方法では、メモリ所要量を低減して、ＭＳＡＡと同様な品質レベルを生み出すことを目指している。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マルチサンプリング手法では、画素における１又は複数のサブサンプルがポリゴンによって覆われる時はいつでも、そのポリゴンの単一色の寄与分をその画素について計算し、この色値が、覆われた各サブサンプル位置について記憶される。このデータが記憶されるバッファは、ＭＳＡＡ色バッファと呼ばれる。深度バッファリングを実施する場合、更に、各サブサンプルについて固有の深度値を計算し、これをＭＳＡＡ深度バッファに記憶する。シーンの表示準備が整うと、分解処理を実施する（深度情報は画面に表示されないため、通常、ＭＳＡＡ色バッファだけを分解処理する）。ほとんどの実施例では、サブサンプル情報を平均する単純ボックスフィルタを用いる。ハードウェアＭＳＡＡモードは、サンプリング格子のパターンによって特徴付けられる。ほとんどのグラフィックスハードウェアユニットは、不均一な格子を用いる。図１Ａは、アンチエイリアシングパターンの例１０２、１０４、及び１０６を示す。図１Ｂでは、左の画素１０８は、プリミティブによる寄与領域を示す。この領域は、ＭＳＡＡでは、画素１１０に示すように、サブピクセルサンプルを用いることによって近似する。
【０００６】
単にサンプルの数を増やすことによって、画像品質を上げることが可能である。しかしながら、サンプル数が増加するにつれて、メモリ及び処理コストは、大幅に増大する。従って、サンプル数を増加させることなく、既存のグラフィックス処理ハードウェアを有益に利用することによって、アンチエイリアシング品質を改良する方法を提供することが望ましい。
【課題を解決するための手段】
【０００７】
本発明によるアンチエイリアシングのためのフィルタ処理方法には、コンピュータシステムにおいてグラフィックデータを処理する方法が含まれる。本方法には、各画素を、それぞれ当該画素および当該画素の周囲近傍の画素内に分布するサブピクセルサンプルの各値に基づき、エッジ画素のグループを含む１又は複数のグループに分類することと、各グループの画素をそのグループ専用のフィルタでフィルタ処理することと、エッジ画素のグループとして分類されたグループのそれぞれに対し、前記フィルタ処理のためにそのグループのエッジの方向を示す数値の近似値を求めることとが含まれる。
【０００８】
上記方法の一実施形態では、サブピクセルサンプルに、スーパーサンプリング、マルチサンプリング、及びカバレッジサンプリングの中から選択された１又は複数のアンチエイリアシング方法を用いて生成されたサンプルが含まれる。
【０００９】
上記方法の一実施形態では、エッジ画素のグループのエッジの方向を示す数値の近似値を、エッジの法線方向の近似値とする。
他の一実施形態では、エッジ画素のグループのエッジの方向を示す数値の近似値を求める処理に、複数のサブピクセルサンプルの値に適合するように線形関数を調整することが含まれる。さらに、この実施形態には、エッジの方向を示す数値の近似値の精度を評価することによって、エッジ画素をエッジ又は非エッジ画素のいずれかとして再分類することを含めることができる。
【００１０】
上記方法の一実施形態には、更に、最大差しきい値処理（ＭＤＴ）を用いて画素を分類することが含まれる。またこの実施形態には、更に、ＭＤＴ非エッジ画素がエッジ画素に接触する場合に、ＭＤＴ非エッジ画素をエッジ画素として再分類することを含めることができる。
【００１１】
上記方法の一実施形態には、更に、更なる処理を必要とする画素及び更なる処理を必要としない画素のマスクを生成することが含まれる。
他の一実施形態には、更に、各エッジ画素に対し、当該エッジ画素及びそのエッジ画素の近傍から取得した複数のサブピクセルサンプルにフィルタを適用して画素値を計算することが含まれる。一実施形態では、このフィルタは、エッジの法線方向の近似値に基づき計算されたサンプル重みを利用することによってエッジ位置を復元する。
【００１２】
本発明による第１のシステムには、グラフィックスプロセッサと、グラフィックスプロセッサによってアクセス可能なメモリ装置とが含まれ、メモリ装置には、グラフィックスプロセッサ上で実行されるとアンチエイリアシング方法を実施するシェーダプログラムを含む命令が保存される。当該方法には、各画素を、それぞれ当該画素および当該画素の周囲近傍の画素内に分布するサブピクセルサンプルの各値に基づき、エッジ画素のグループを含む１又は複数のグループに分類することと、各グループの画素をそのグループ専用のフィルタでフィルタ処理することと、エッジ画素のグループとして分類されたグループのそれぞれに対し、前記フィルタ処理のためにそのグループのエッジの方向を示す数値の近似値を求めることとが含まれる。
【００１３】
本発明による第２のシステムには、グラフィックプロセッサおよびメモリ装置のほか、グラフィックスプロセッサ上において複数のレンダリングパスを用いてアンチエイリアシング方法を実施するソフトウェアドライバが含まれる。このシステムにおけるアンチエイリアシング方法には、アンチエイリアシングに用いられる複数のサブピクセルサンプルのデータを受信することと、これらのサブピクセルサンプルの各値に基づき、非エッジ画素を識別することを含むエッジマスク処理を行うことと、前記サブピクセルサンプルの各値に基づきエッジ画素を識別することを含むフィルタマスク処理を行うことと、フィルタマスク処理により識別した各エッジ画素の法線方向に基づく強化フィルタを用いて、エッジのサブピクセルサンプルをフィルタ処理することと、周知のフィルタアルゴリズムを用いて非エッジのサブピクセルサンプルをフィルタ処理することとが含まれる。また、複数のレンダリングパスには、エッジ画素を含まないタイルのみを通す第１パスが含まれる。
【図面の簡単な説明】
【００１４】
【図１Ａ】従来技術におけるアンチエイリアシングパターンの例を示す図である。
【図１Ｂ】プリミティブによる寄与領域、及びＭＳＡＡにおいてサブピクセルサンプルを用いることによって近似された領域を示す図である。
【図２】システム内の様々な構成要素を示すブロック図である。
【図３】一実施形態による統合モデルを示す図である。
【図４】一実施形態による潜在的問題画素を除去するために用いるパターンマスク例Ａ、Ｂ、Ｃ、及びＤを示す図である。
【図５】一実施形態による統合モデルを示す図である。
【図６】一実施形態による様々なドライバパスを示す図である。                    図面は、特許請求の通りに本発明を開示する目的で様々な実施形態の態様を表すが、決して限定的であることを意図していない。
【発明を実施するための形態】
【００１５】
グラフィックスハードウェアの発展により、プログラム可能なユニットの能力や汎用性が増すにつれて、より多くの固定機能動作がシェーダプログラムを用いて実現されつつある。これらのシェーダユニットにおいて、多くのポスト・レンダリング効果（例えば、移動時の被写体ブレ）を実現できることが既に分かっている。本明細書に開示する実施形態は、プログラム可能なアンチエイリアシング（ＡＡ）機能を含んでおり、この機能には、サンプル数を増やすことなくアンチエイリアシング及び画像品質を向上させる改良されたフィルタ処理ソフトウェアとハードウェア資源の改良された使用法とが含まれる。
【００１６】
最新世代のグラフィックスハードウェアは、マルチサンプル・アンチエイリアシング（ＭＳＡＡ）レンダリングデータへの直接アクセスを提供する。画素のサブサンプル値を利用することによって、プログラム可能なグラフィックス処理装置（ＧＰＵ）のシェーダユニットを用いて、処理能力の高い再構成フィルタを演算できる。実施形態には、ＧＰＵでのリアルタイム・レンダリング用の適応型アンチエイリアシングフィルタが含まれる。品質改良は、隣接画素サンプルからの情報を用いて、画素内におけるサブピクセルの位置及びプリミティブエッジの法線方向の近似値の双方を演算することによって達成される。
【００１７】
本明細書に述べるアンチエイリアシングのためのフィルタ処理方法及び装置の実施形態は、レンダリング後に、ＭＳＡＡバッファに記憶されたデータを入力として用いることによって、既存の改良されたハードウェアを利用する。そして、標準のハードウェア・ボックス・フィルタは、シェーダを用いて実現される更に処理能力の高い分解処理に置き換えられる。実施形態では、グラフィック処理装置（ＧＰＵ）のハードウェアによって生成される既存のサンプルを用いて、シーンエッジを見つける。単一画素より大きな領域からのサンプルを用いて、エッジ位置及びエッジ法線方向の近似値を計算する。法線方向の寄与サンプル上の非線形フィルタにより、最終的な結果が得られる。
【００１８】
図２は、ＧＰＵ２０２及びＣＰＵ２１４を含むシステム２００の様々な構成要素のブロック図である。図２は、開示及び特許請求対象の発明を具現化するシステムの例を示し、限定的であることを意図するものではない。ＧＰＵ２０２は、様々なドライバ２０４、メモリコントローラ２０８、及び様々なクライアント２０６を含む。クライアント２０６は、メモリコントローラ２０８と通信を行う。メモリコントローラ２０８は、クライアント２０６によるローカルメモリ２１０（例えば、ビデオメモリ）へのアクセスを制御し、また、クライアント２０６によるバス２１８へのアクセスを制御する。具体的には、メモリコントローラ２０８は、いつ、どのクライアント２０６がローカルメモリ２１０と通信を行うか、また、どのクライアント２０６がバス２１８と通信を行うか決定する。一実施形態では、ローカルメモリ２１０は、本明細書において更に述べるように、複数のシェーダプログラム２２２を記憶する。しかしながら、他の実施形態では、シェーダプログラムは、ＧＰＵ２０２においてオンチップの形態で記憶し得る。更に他の実施形態では、シェーダ２２２は、バス２１８を介しブリッジ２１２を通してアクセス可能なシステムメモリ２１６に記憶し得る。更に他の実施形態では、シェーダ２２２は、システムのメモリ装置を組み合わせて記憶してもよい。
【００１９】
［エッジ誘導・方向適応型アンチエイリアシングフィルタ：概要］
＜アンチエイリアシングの枠組み＞
コンピュータグラフィックスにおいて、表示装置の有限の解像度に起因するオブジェクトのエッジのギザギザになった外観（ギザギザ）をエイリアシングと称する。より正確には、エイリアシングは、高周波数信号のサンプリング速度が遅すぎて、その信号をフィルタ処理によって正しく再構成できない現象を意味する。フィルタ処理後、高周波数信号は、より低い周波数の信号として再構成データ中に出現する（高周波数データが「エイリアシング」によってより低い周波数になって、雑音として画像に現れる）。コンピュータグラフィックスの望ましくないエイリアシング・アーティファクトは、レンダリングプロセス時、複数のソースから生じることがあり、アンチエイリアシングは、フレームバッファ操作を用いて画像からエイリアシングの可視の影響を除去しようとする。本実施形態には、この目的を達成するフィルタが含まれる。以下の議論は、信号をデジタル化して表示用フレームバッファに入れることに焦点を当てる。アンチエイリアシング（ＡＡ）を全く行わない場合、ｖを連続画面空間における位置［ｘ，ｙ］とすると、ＲＧＢ空間において連続信号ｆ＝ｆ（ｖ）をデジタル化し表示するモデルは、次のようになる。
【００２０】
【数１】
0005520286.tif 000002
【００２１】
Ｄｃｏｍｂは、ディラックのくし型関数（インパルス列）であり、＿は、連続畳み込みを表し、ｂｏｘＬＣＤは、表示装置の画素に対応するボックスフィルタカーネルであり、比較的低解像度のＬＣＤ表示装置を仮定している（ＬＣＤの離散的な素子に対して、ＣＲＴ表示装置では、画素は独立ではなく、隣接画素へはみ出し得る）。ｆがサンプリング速度の半分（ナイキストの定理）に適切に帯域制限されていない場合、Ｄｃｏｍｂによるサンプリングにより、エイリアシングが生じる。周波数領域において、ｆのフーリエ変換
【数２】
0005520286.tif 000003
は、他のディラックのくし型関数であるＤｃｏｍｂの変換と畳み込みされる。
【数３】
0005520286.tif 000004
の複製間の重なりは、アンダーサンプリングによる雑音である。従って、ＡＡの一般モデルは、次のようになる。
【００２２】
【数４】
0005520286.tif 000005
【００２３】
上式において、ｆｉｌｔｅｒは、ｆを帯域制限して雑音を低減するプレフィルタとして用いられる。通常、グラフィックスでは、ボックスフィルタをｆｉｌｔｅｒに用いるが、これは、画素における信号の統合に対応する。プレフィルタとしてのボックスが望ましいものではないということには、議論の余地があり、更に帯域制限するフィルタを用いるべきである。しかしながら、ゲームグラフィックスの場合、より狭い通過帯域のフィルタは、ぶれの影響のため必ずしも望ましいとは限らず、また、通常、計算すると高価になる。一実施形態は、ボックスフィルタの使用に基づくが、異なるプレフィルタに拡張可能である。アンチエイリアシングの１つの目的は、ｆ＊ｂｏｘの結果、即ち、画素におけるｆの積分値を推定することである。実際には、ｆは、連続的ではなく、むしろスーパーサンプリング又はＭＳＡＡ格子に基づくｆのサンプルである。これらの格子は、通常、不均一であるが、本明細書に述べるアルゴリズムは、任意の格子で機能する。
【００２４】
＜アルゴリズム概要＞
一実施形態において、アルゴリズムの後半の段階は、プリミティブによって部分的に覆われた画素（即ち、エッジ画素）に適用される。プリミティブによって完全に覆われた画素は、アルゴリズムの初期段階で検出され、通常の方法で処理される。完全に覆われた（内部の）画素は、通常、テクスチャが付されるが、テクスチャ・エッジは、プレフィルタ処理又は他の手段による処理が可能なため無視する。部分的に覆われた画素の場合、長いエッジ（幾つかの画素にわたって延在するエッジ）の中間にある画素は、最も注目されるものであり、この場合、ぎざぎざが最も良く見える。その画素でエッジの曲率が大きくないとすると、信号は、画素の近傍において以下の関数によって近似し得る。
【００２５】
【数５】
0005520286.tif 000006
【００２６】
上式において、
【数６】
0005520286.tif 000007
は、スカラ引数の色空間への写像である。また、ｇ，ｖ∈Ｒ２は、それぞれ、勾配近似値及び点位置［ｘ，ｙ］である。ｇは、局所近傍において一定である。〈，〉は、内積を表す。
【００２７】
＜確率的統合＞
式（３）の仮定の下で、以下の近似を用いてよい。等値線にほぼ沿う勾配配向の矩形の作図は、２辺がｇに直交する画素周辺の外接正方形を得ることによって、そして、それが画素を中心とする３×３画素格子の境界とぶつかるまで、それをｇに直交する方向に突き出すことによって行われる。
【００２８】
次に、矩形内の全てのサンプル位置ｖｉを考える。サンプルｖｉの重みｗｉを計算するために、（３）の仮定の下で、ｇ（ｓ．ｔ．〈ｇ，ｖ〉）＝〈ｇ，ｖｉ〉に直交してサンプルを通過する直線を考える。演算重みｗｉは、画素によって囲まれたこの直線の線分の長さに等しい。従って、画素の総合的な結果は、次のようになる。
【００２９】
【数７】
0005520286.tif 000008
【００３０】
統合モデルを図３に示す。
１）画素周辺に、２辺がｇと直交する（⊥ｇ）正方形３０２を作図する。
２）３×３画素の境界３０４にぶつかるまで、⊥ｇの方向に矩形を延長する。
３）各サンプルｖｉについて、そのサンプルを通過し⊥ｇである直線からの線分であって画素に内接する線分の重みはｗｉである。
４）式（４）を用いて、画素の色を計算する。
【００３１】
サンプル数を増やすと、それらが均一に分散しているという前提であれば、統合近似を改良できる。しかしながら、実際のシーンでのエッジはそれほど遠くに延在しない可能性があるので、あまり極端に矩形を大きくすべきではない。他の選択肢として、画素から遠いサンプルになるほど重みを低減できるが、視覚的に、また、実験で分かるように、上述した重み付けは良好に機能し、品質の達成に良好な性能を発揮する。
【００３２】
＜勾配計算＞
この統合モデルを実現するために、モデルに適用可能な画素並びにエッジの概算の勾配を求める。幾つかの画素の場合、異なる色チャネルは、実際には異なる勾配を有し得るが、一実施形態によれば、妥当な近似値（式３）を求めることが目的となる。
【００３３】
上記のｆ（ｖ）を用いて、色サンプルに合致するように線形関数を調整することによって、勾配の近似値を求める。
【００３４】
【数８】
0005520286.tif 000009
【００３５】
上式において、Ｃ１，Ｃ０∈Ｒ３は、幾つかの一定の色（ＲＧＢ）であり、ｆ（ｖｉ）は、色サンプルである。標準的な最小二乗法を用いてＣ１、Ｃ０、及びｇについてＦを最小にすることによって、勾配の近似値を見つける。ｇの解が一意ではない又はゼロに等しい場合、画素を無視する。
【００３６】
この統合の精度は、勾配の近似値の精度に依存するが、勾配の推定値の誤差に起因する誤差が、依然として適切な結果を生成することが判明した。エッジ検出のための差分法とは異なり、この勾配の近似値は、雑音に影響されにくい。
【００３７】
図４は、潜在的な問題画素を除去するために用いられるパターンマスクＡ、Ｂ、Ｃ、及びＤの例を示す図である。Ｘはエッジを表し、Ｏは非エッジを表す。空の格子空間は、エッジ又は非エッジのどちらでもよい。エッジ画素（中心にある）は、その隣接画素がパターンの内の１つに合致しない場合、処理から排除される。
【００３８】
＜しきい値処理＞
関心の対象は、曲率の大きいエッジ（即ち、角）であって、この場合、上記の最小二乗問題の一意の解が依然として存在する。等値線は局所的に直線であるか、又は曲率が小さいと仮定することから、この統合方法で急な角をフィルタ処理すると、好ましくないぶれが生じ得る。これらの事例から潜在的ぶれを低減するには、以下のしきい値を用いることによって、画素を更なる処理から阻止できる。
【００３９】
【数９】
0005520286.tif 000010
【数１０】
0005520286.tif 000011
【００４０】
画素は、比較的小さなしきい値を用いて式（７）が成り立つ場合に合格となる。このことは、式（３）の近似が妥当であることを意味する。更に、しきい値を調整することによって、ぶれの量を制御することもできる。
【００４１】
＜マスク処理＞
先に、式（７）のしきい値処理を用いて、潜在的な問題画素を除去した。最適化として、更に、画像内のエッジパターンを見ることによって、候補画素を除去し得る。このプロセスは、曲率の大きい等値線の事例を除外して細部の損失を防止すること、並びに、非エッジ画素の事例を除外して性能を改良することを目標にする。本実施例では、勾配を求める前に行う。
【００４２】
候補画素を中心としたエッジ画素及び非エッジ画素の３×３格子パターンを所望のパターンと照合する。例えば、３×３格子の全画素がエッジに分類された場合、候補画素は、内部エッジである可能性が極めて高く、後の処理から除外される。他の例は、角（２×２の範囲のエッジ）であり、これは、長いエッジモデルに適合しない。図４は、エッジを分類して処理するために用いられるパターンマスクの一部を示す。
【００４３】
プロセス全体の中で除外された画素は、いずれも、標準的ボックスフィルタ分解処理を用いて分解される。我々の実験では、本方法で評価されて標準的な分解処理の画素に隣接する画素は、エッジに沿って一貫した色勾配を生成することが判明した。
【００４４】
＜実施例及び成果＞
一実施形態例による実施例では、フィルタ処理アルゴリズムの各部に対応する４つのシェーダパスを用いる。シェーダは、ＤｉｒｅｃｔＸ  ＨＬＳＬ  Ｐｉｘｅｌ  Ｓｈａｄｅｒ  ４．１を用いて開発された。アルゴリズムの全ての部分が、外部テーブルによらずシェーダで演算される。重みは、動的に算出される。
【００４５】
アルゴリズムの実施形態は、シェーダプロセッサの数に応じて規模が変わるため、将来のハードウェアの改良や機能により、レンダリング時間も改良されるであろう。
【００４６】
＜実施例＞
一実施形態では、アンチエイリアシング法は、ＡＴＩ  Ｒａｄｅｏｎ  ＨＤ  ２９００シリーズ及びＡＴＩ  Ｒａｄｅｏｎ  ＨＤ  ３８００シリーズのグラフィックス処理ハードウェア（特殊用途グラフィックスプロセッサ）に実装されるが、実施形態は、それに限定されない。この実施例は、ハードウェア用の「カスタムフィルタ」アンチエイリアシングモードを含む。高度アンチエイリアシングフィルタは、既存のＭＳＡＡサンプルでシェーダを用いる。４×ＡＡ及び８×ＡＡバッファでは、それぞれ最大１２個及び２４個のサンプルがフィルタに用いられる。
【００４７】
概念的には、本アルゴリズムは、エッジの発見、勾配計算、及び分解処理／フィルタ処理を含む様々な段階として見なすことができる。以下、１つの実施例についてのみ述べるが、他の実施例も、本特許請求対象の発明の範囲内にあり、例えば、本アルゴリズムは、品質のために性能を犠牲にするように、又は、その逆になるように調整可能である。
【００４８】
＜エッジマスク＞
この段階では、エッジである画素だけを識別する。非エッジ画素は、その画素用のＭＳＡＡバッファの全サンプルが、同じであることを特徴とする。エッジ画素は、それ以外の全てである（例えば、少なくとも１つのサンプルが異なっている）。
【００４９】
＜フィルタマスク＞
この段階では、全エッジ画素を識別する。後半の処理段階を高速化し、望ましくないアーティファクトを最終画像に持ち込む可能性を回避するために、オブジェクトの輪郭画素のみにアンチエイリアシングフィルタを適用することが望ましい。従って、幾何学的形状及びフォント等のオブジェクトの内部エッジは、できるだけアルゴリズムの後半の段階によって回避すべきである。このステップは、周辺の画素を見ることによって、識別されたエッジを洗練する。一実施形態では、周辺の８画素を見て、幾つかの画素パターンに基づき、解析対象の画素の分類を変更し得る。
【００５０】
＜勾配＞
この段階では、フィルタの勾配を計算する。勾配は、３×３画素領域の３＊３＊ｎ個の全サンプルに合致するように平面を調整することによって求め得る。これは、以下の式を最小にし、勾配について解くことによって行う。
【００５１】
【数１１】
0005520286.tif 000012
前処理ステップを用いると、各成分の和及び色ベクトルの大きさを計算し得る。
【００５２】
＜Ｅｄ＿ｇ＞
この段階では、サンプルの実際のフィルタ処理を行う。強化フィルタ又は標準的分解（平均）処理のいずれかを画素に適用する。
【００５３】
フィルタ処理の前に、傾斜しきい値処理を用いて、フィルタ処理を保証するのに充分な傾斜があるかどうかを判断する。厳密な傾斜は再構成できないことから、平均的な傾斜がサンプルに合致するように調整する。図５は、一実施形態による統合モデルを示す図である。図５において、回転したボックス５０２は、フィルタカーネルである。サンプルは、「Ｘ」によって表し、重みは、斜線５０４で示す。
【００５４】
予めエッジとして分類され、しきい値を超える画素は、いずれも強化フィルタカーネル又はエッジ画素フィルタを用いて、フィルタ処理する。他の全ての画素には、標準的な分解処理を用いる。
【００５５】
強化フィルタ処理の場合、重みをサンプルに割り当て、そして、合算する。いま、用いられているフィルタカーネルは、対象の画素を囲む矩形であり、また、エッジが３×３画素格子と交わる時に境界が定まる。図５は、一例である。これは、確率論的な統合を用いて計算した非線形フィルタである。図５において、重みは、画素５０６によって囲まれた斜線５０４の長さによって決定される。実質的に、サンプルの重みは、中心線からの距離（最大重み）によって変倍される。
【００５６】
＜ドライバの実施例及び最適化＞
実際のドライバの実施例の一実施形態では、メモリの帯域幅をならすために、幾つかの段階をまとめてよい。また、画素を消去するために、深度バッファを用いる。更に、標準的なアンチエイリアシングの実施例に適合させるために、ガンマや逆ガンマ補正を用いてＭＳＡＡサンプルの読み出しや最終出力の書き込みを行う。
【００５７】
サンプル位置は、変化すると自動的にシェーダに反映されるように、ドライバから直接取得する。
【００５８】
・プレパス
色バッファを解凍し、エッジマスクバッファをクリアする。
図６は、一実施形態による様々なドライバパスを示す図である。
【００５９】
・パス１
シェーダでは、標準分解処理、エッジ検出（最小値／最大値が等しくない場合）、及びピックスプレ（ｐｉｘｐｒｅ）を同時に演算する。これらのステップでは、動作が重複し、更に、サンプルは、最終的なパスまでの間に、ここで１度だけ読み出せばよい。
【００６０】
最適化としては、上述の傾斜しきい値処理と混同すべきでないが、一実施形態においては、内部画素があればそれを消去する目的で、最大（ｍａｘ）差しきい値処理（ＭＤＴ）を用いることができる。この考え方は、最小値のサンプルと最大値のサンプルとの間の差異が或るしきい値より小さい場合、その画素は、内部画素である可能性が極めて高いということである。サンプルの分類を誤ったとしても、各サンプルは色が互いに非常に近いことから、強化フィルタであっても結果を改良していない可能性がかなり高い。一実施形態では、このしきい値は、定数で設定される。
【００６１】
この時点で、フレームバッファは、標準ＡＡ分解処理バッファと一致すべきである。サンプルは、既に読み出されており、また、標準分解処理を行う命令は、ｐｉｘｐｒｅ計算とほとんど同じであることから、レンダリングコストは、追加の乗算及び書込みのみとなる。余分な枝路が最終シェーダに必要ではなく（レンダリング対象の画素が劇的に減少し）、また、分類に誤りがあった場合に起こり得る最悪の結果は、標準分解処理によって得られる結果であることも、利点として加えられる。
【００６２】
・パス２
このパス６０６は、深度バッファのみを出力する。このパス及び後続のパスは、ビューポートを用いてエッジ画素を消去する。
直前のパスにおけるしきい値を用いた非エッジ画素の誤分類の可能性を防ぐために、エッジ画素がＭＤＴ非エッジ画素に接触する場合、その画素は、エッジとして再分類し得る。しかし、例えば、このパスにおいて、オフになっていたかもしれない単体のエッジがＭＤＴ非エッジに接触する場合、これが更なる誤分類になる危険性がある。これの最悪の結果は、性能の低下である。
【００６３】
・パス３
一実施形態において、深度バッファを用いて、動作状態及び非動作状態の画素をマスクする。動作状態の画素は、更なる処理段階が必要な画素として定義され、非動作状態の画素は、更なる処理が必要ではない画素として定義される。パス６０８の深度バッファは、アーリーＺ（ｅａｒｌｙ−Ｚ）でこのパスの画素を消去する。勾配シェーダも、上述したｅｄ＿ｇステップの傾斜しきい値処理を含み、これにより、更に、幾つかの画素を除去し得る。従って、Ｒｅ−Ｚ及びシェーダのｔｅｘｋｉｌｌを用いることによって、追加のＺ面を次のパス用に生成し得る。（Ｒｅ−Ｚ機能は、アーリーＺ及び二次レイトＺ（ｌａｔｅ  Ｚ）の動作を実施する）。
【００６４】
・パス４
パス１（６０４）より、フレームバッファには、既に標準のＡＡ分解値が与えられている。パス６１０では、深度バッファ、及びパス４（６０８）で生成したｚ面に等しいｚを用いて、強化ＡＡフィルタ処理を必要とする画素だけをレンダリングする。
【００６５】
実施形態は、アーリーＺで画素を消去すると同時にＺへ書き込むという利点を提供する。これにより、レンダリング対象の画素を連続的に洗練することによって、全てのパスが最適化される。従って、レンダリング時間は、フレーム内のエッジが接触する画素の数に依存する。上述した方法の他の利点は、色バッファの展開がより高速になる点である。
【００６６】
本明細書に開示するアンチエイリアシングのためのフィルタ処理方法及び装置には、グラフィックスデータを処理する方法が含まれる。本方法には、画素サンプルの値及び周辺近傍の画素サンプルの値に基づき、画素を１又は複数のグループに分類することと、各グループの画素をそのグループ専用のフィルタでフィルタ処理することとが含まれる。
【００６７】
一実施形態において、サンプルには、スーパーサンプリング、マルチサンプリング、及びカバレッジサンプリングからなる群から選択された１又は複数のアンチエイリアシング法を用いて生成されたサンプルが含まれる。
【００６８】
一実施形態では、更に、２つの画素グループをエッジ画素及び非エッジ画素として定義することが含まれる。
【００６９】
一実施形態では、グループが、エッジ画素として分類され、また、本方法には、更に、エッジ画素のエッジ方向の近似を求めることが含まれる。
【００７０】
一実施形態では、エッジ画素のエッジ方向の近似は、エッジの法線方向の近似を含む。
【００７１】
一実施形態では、エッジ方向の近似を計算することには、サンプルの値に合致するように線形関数を調整することが含まれる。
【００７２】
一実施形態には、更に、近似の精度を評価することによって、エッジ画素をエッジ又は非エッジ画素のいずれかとして再分類することが含まれる。
【００７３】
一実施形態には、更に、最大差しきい値処理（ＭＤＴ）を用いて画素を分類することが含まれる。
【００７４】
一実施形態には、更に、ＭＤＴ非エッジ画素がエッジ画素に接触する場合に、ＭＤＴ非エッジ画素をエッジ画素として再分類することが含まれる。
【００７５】
一実施形態には、更に、動作状態の画素及び非動作状態の画素のマスクを生成することが含まれる。
【００７６】
一実施形態には、更に、各エッジ画素及びそのエッジ画素の近傍から取得したサンプルにフィルタを適用して、画素値を計算することが含まれる。
【００７７】
一実施形態では、フィルタは、エッジの法線方向の近似に基づき計算されたサンプルの重みを利用することによって、エッジ位置を復元する。
【００７８】
本明細書に開示するアンチエイリアシングのためのフィルタ処理方法及び装置には、更に、グラフィックスプロセッサと、グラフィックスプロセッサによってアクセス可能なメモリ装置から構成されるシステムが含まれる。メモリ装置には、グラフィックスプロセッサ上で実行されるとアンチエイリアシング法を実施するシェーダプログラムを含む命令が記憶されている。アンチエイリアシング法には、画素サンプル値及び周辺近傍の画素サンプル値に基づき、画素を１又は複数のグループに分類することと、各グループの画素をそのグループ専用のフィルタでフィルタ処理することとが含まれる。
【００７９】
一実施形態において、サンプルには、スーパーサンプリング、マルチサンプリング、及びカバレッジサンプリングからなる群から選択された１又は複数のアンチエイリアシング法を用いて生成されたサンプルが含まれる。
【００８０】
一実施形態には、更に、２つの画素グループをエッジ画素及び非エッジ画素として定義することが含まれる。
【００８１】
本明細書に開示するアンチエイリアシングのためのフィルタ処理方法及び装置においては、グループがエッジ画素として分類され、また、本方法には、更に、エッジの法線方向の近似を求めることが含まれる。
【００８２】
本明細書に開示するアンチエイリアシングのためのフィルタ処理方法及び装置には、更に、グラフィックスプロセッサと、グラフィックスプロセッサによってアクセス可能なメモリ装置とから構成されるシステムが含まれる。メモリ装置には、グラフィックスプロセッサ上で実行されるとアンチエイリアシング法を実施するシェーダプログラムを含む命令が記憶されている。アンチエイリアシング法には、アンチエイリアシング画素サンプルを受信することと、サンプルから非エッジ画素を識別することが含まれるエッジマスク処理を行うことと、サンプルからエッジ画素を識別することが含まれるフィルタマスク処理を行うことと、各エッジ画素のエッジの法線方向に基づき誘導フィルタを用いてエッジサンプルをフィルタ処理することと、標準のフィルタアルゴリズムを用いて非エッジサンプルをフィルタ処理することとが含まれる。
【００８３】
一実施形態には、更に、ソフトウェアドライバが含まれる。また、アンチエイリアシング法は、ドライバによってグラフィックスプロセッサにおいて複数のレンダリングパスを用いて実施され、複数のレンダリングパスには、エッジ画素を含まないタイルだけを通す第１パスが含まれる。
【００８４】
一実施形態では、複数のレンダリングパスには、更に、少なくとも１つのエッジを含むタイルだけを通す第２パスが含まれ、また、シェーダは、標準の分解処理を演算し、同時にエッジ画素を識別する。
【００８５】
一実施形態では、第２パスには、内部画素があればそれらを消去するために実施される最大差しきい値処理（ＭＤＴ）が含まれる。
【００８６】
本明細書に開示するアンチエイリアシングのためのフィルタ処理方法及び装置には、グラフィックス処理システムで実行されるとアンチエイリアシング法を実施させる命令が記憶されているコンピュータ可読媒体が含まれる。アンチエイリアシング法には、複数のアンチエイリアシング用サンプルを受信することと、エッジ画素を識別することと、エッジ画素フィルタを用いてエッジ画素をフィルタ処理することとが含まれる。エッジ画素を識別することには、画素のアンチエイリアシング用サンプルが同一である場合に当該画素をエッジ画素として分類することと、画素周辺の画素を調査し、その調査に基づき、画素の分類を変更するかどうかを判断することとが含まれる。エッジ画素フィルタを用いてエッジ画素をフィルタ処理することには、各サンプルに重みを割り当てることが含まれる。
【００８７】
一実施形態において、複数のサンプルには、スーパーサンプリング、マルチサンプリング、及びカバレッジサンプリングからなる群から選択された１又は複数のアンチエイリアシング法を用いて生成されたサンプルが含まれる。
【００８８】
上述した実施形態の態様は、任意の様々な回路にプログラムされる機能として実現し得る。これらの回路は、例えば、限定はしないが、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）、プログラム可能なアレイ論理（ＰＡＬ）素子、電気的にプログラム可能な論理及びメモリ素子、及び標準的なセルベースの素子等のプログラム可能な論理素子（ＰＬＤ）、並びに特定用途向け集積回路（ＡＳＩＣ）及びフル・カスタム集積回路を含む。本実施形態の態様を実現するための幾つかの他の可能性には、メモリ（電子的に消去可能でプログラム可能な読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ等）を備えたマイクロコントローラ、組み込み式マイクロプロセッサ、ファームウェア、ソフトウェア等が含まれる。更に、本実施形態の態様は、ソフトウェアベースの回路エミュレーションを有するマイクロプロセッサ、離散論理回路（順次及び組み合わせ）、カスタムデバイス、ファジィ（ニューラル）論理回路、量子素子、及び上記素子タイプの任意の組み合わせで具現化し得る。もちろん、根底にあるデバイス技術は、様々な構成要素のタイプで提供し得る。例えば、相補型金属酸化物半導体（ＣＭＯＳ）等の金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）技術、エミッタ結合形論理回路（ＥＣＬ）等のバイポーラ技術、ポリマー技術（例えば、シリコン共役ポリマー及び金属共役ポリマーの金属構造）、アナログ及びデジタルの混在等を含む。
【００８９】
特に文脈上明らかに必要でない限り、詳細な説明及び特許請求の範囲全体において、「含まれる」「含む」等の語は、排他的または網羅的意味とは反対に、包含的意味で、即ち、「含むが限定しない」という意味で解釈するものとする。単数または複数を用いる語は、それぞれ複数および単数も含む。また、「本明細書において」、「以下に」「上記」「下記」という語、および同様な趣旨の語は、本願で用いる場合、本願全体を指すものであり、本願のいずれか特定の部分を指すものではない。「又は」という語を用いて、一覧の２つ以上の項目を参照する場合、その語は、その語の次の解釈の全て、即ち、一覧の項目のいずれか、一覧の項目の全て、及び一覧の項目の任意の組合せを網羅する。
【００９０】
本方法及びシステムの例示的実施形態の上記の説明は、網羅的であったり、開示した通りの形態に本発明を限定したりしようとするものではない。本方法及びシステムの特定の実施形態及び例は、例示の目的のために本明細書に述べており、様々な等価な変更は、当業者が認識するように、本発明の範囲内で可能である。一例として、本明細書では全般的に、アンチエイリアシングを、ハードウェア上で一連のステップとして実行されるアルゴリズムとして述べたが、これらのステップは、記述した以外の順序で実行してもよい。更に、ドライバ、深度バッファ等、名前を挙げた特定のハードウェア又はソフトウェア構成要素は、排他的又は限定的であることを意味しない。
【００９１】
本明細書で提供した本開示の教示内容は、上述したような、グラフィックス処理又は映像処理を含むシステムだけでなく、他のシステムに適用し得る。上述した様々な動作は、極めて多種多様なアーキテクチャで実施することができ、また、記述したものとは異なる方法で分配することができる。更に、多くの構成について本明細書で述べたが、いずれも限定的又は排他的であることを意図していない。
【００９２】
他の実施形態では、本明細書に述べたハードウェア及びソフトウェアの能力の一部又は全ては、プリンタ、カメラ、テレビ、デジタル多用途ディスク（ＤＶＤ）プレーヤ、ＤＶＲ又はＰＶＲ、ハンドヘルド装置、携帯電話、又は何らかの他の装置に存在してよい。上述した様々な実施形態の要素及び作用は、組み合わせて、他の実施形態を提供し得る。これらの変更及び他の変更は、上述の詳細な説明に鑑みて、本方法及びシステムに対して行い得る。
【００９３】
一般的に、以下の特許請求の範囲において用いる用語は、明細書及び特許請求の範囲に開示する特定の実施形態に本方法及びシステムを限定すると解釈すべきでなく、請求の範囲の下で動作する任意の処理システム及び方法を含むと解釈すべきである。従って、本方法及びシステムは、本開示によって限定されず、その代わり、本方法及びシステムの範囲は、特許請求の範囲によって全体的に決定されるものである。
【００９４】
本方法及びシステムの幾つかの態様を幾つかの請求項の形式で以下に提示するが、本発明者らは、本方法及びシステムの様々な態様を任意の数の請求項形式で考えている。例えば、本方法及びシステムの１つの態様だけがコンピュータ可読媒体で具現化されるように説明されているとしても、他の態様も同様に、コンピュータ可読媒体で具現化し得る。コンピュータ可読媒体には、コンピュータによって読取可能な任意のデータ記憶体、例えば、様々な種類のコンパクトディスク（ＣＤ−ＲＯＭ）、追記型のオーディオ及びデータ記憶装置（ＣＤ−Ｒ）、書き換え可能媒体（ＣＤ−ＲＷ）、ＤＶＤ（デジタル多用途ディスク又はデジタル映像ディスク）、並びに任意の種類の既知のコンピュータメモリデバイスが含まれる。そのようなコンピュータ可読媒体は、コンピュータ処理装置（例えば、パーソナルコンピュータ、携帯情報端末、ＰＶＲ、移動装置等）によって実行される命令、又は実行されると装置（ＧＰＵ、ＡＳＩＣ、等）を生成するように構成された命令（例えば、Ｖｅｒｉｌｏｇ又はハードウェア記述言語等）、又は動作すると上述の態様を実施するソフトウェアアプリケーションを記憶し得る。従って、本発明者らは、本願の出願後に、追加の請求項を加えて、本方法及びシステムの他の態様のそのような追加の請求項形態を随伴する権利を留保する。
【図１Ａ】
0005520286.tif 000013
【図１Ｂ】
0005520286.tif 000014
【図２】
0005520286.tif 000015
【図３】
0005520286.tif 000016
【図４】
0005520286.tif 000017
【図５】
0005520286.tif 000018
【図６】
0005520286.tif 000019