(57)【特許請求の範囲】
【請求項１】
内蔵フレームバッファを含むグラフィクスチップにおけるエイリアス補正方法であって、
(a) 内蔵フレームバッファに超サンプリングイメージをストアし、
(b) そのストアしたイメージを内蔵フレームバッファからチップとは別の宛先へ転送し、そして
(c) イメージの転送プロセス中に、エイリアス補正したイメージを提供するためにイメージを再サンプリングする、方法。
【請求項２】
さらに、超サンプリングイメージを発生する際に使用するためのサンプリングパターンを規定し、そのサンプリングパターンはイメージの隣接ピクセル間で変化する、請求項１記載の方法。
【請求項３】
再サンプリングは、１ピクセルより大きいピクセルアパーチャを有するブレンドフィルタを使用する、請求項２記載の方法。
【請求項４】
さらに、サンプリングパターンに基づいてピクセルアパーチャを規定する、請求項３記載の方法。
【請求項５】
グラフィクスシステムにおいて超サンプリングピクセルをエイリアス補正する方法であって、
(a) イメージの複数の隣接ピクセルの各々毎に内蔵フレームバッファ中に超サンプリング位置を規定し、
(b) 前記超サンプリング位置の各々にカラーデータを割り当て、そして
(c) ステップ(a) で規定した位置から得られる少なくとも２つのサンプルからのカラーデータをブレンドしてピクセル最終カラー値を与え、
ピクセルに関連するカラーデータがグラフィクスチップ中に内蔵されているＲＡＭにストアされ、そしてステップ(c) は内蔵ＲＡＭからグラフィクスチップの外部のメモリへデータを転送する動作中に行われる、方法。
【請求項６】
ブレンドステップ(c) は１つまたはそれ以上のサンプルにブレンドの重みを割り当て、割り当てた重みに少なくとも部分的に基づいて、イネーブルしたサンプルをブレンドし、重みはＡＰＩプログラム関数を介して割り当てられる、請求項５記載の方法。
【請求項７】
ブレンドステップ(c) は７つのサンプルについて重みを割り当て、割り当てた重みに少なくとも部分的に基づいて７つのサンプルをブレンドし、重みはＡＰＩプログラム関数を介して割り当てられる、請求項５記載の方法。
【請求項８】
グラフィクスシステムにおいてフルシーンエイリアス補正をするための方法であって、
(a) 複数の隣接ピクセルの各々毎にピクセルに関連する３つの超サンプリングカラーデータ位置を規定し、
(b)第１のピクセルの直上の第２ピクセルの２つの超サンプリングカラー位置からのカラーデータおよび第１のピクセルの直下の第３ピクセルの２つの超サンプリングカラー位置からのカラーデータで、第１ピクセル内の３つの超サンプリングカラーデータ位置の各々に対応するカラーデータをブレンドし、そして
(c) ブレンドに対応するカラーを有する第１ピクセルを表示する、方法。
【請求項９】
ブレンドステップ(b) は少なくともカラーデータをブレンドするに際して用いた超サンプリングカラーデータ位置についてカラーブレンド重みを割り当てるステップ、および割り当てた重みに少なくとも部分的に基づいてブレンドしたカラーデータの加重平均を計算する、請求項８記載の方法。
【請求項１０】
各ピクセルが、プログラマブルに規定した位置によって識別される複数の超サンプリング部分に分割されるグラフィクスシステムにおいてピクセルをエイリアス補正する方法であって、
(a) 複数の隣接ピクセルの各々毎に複数の超サンプリング位置を規定し、そして
(b) ステップ(a) で規定した位置に対応する超サンプルのためのカラーデータを発生する適用範囲マスクを使用し、その適用範囲マスクはプリミティブフラグメントによって占有される各ピクセルの対応する部分に少なくとも部分的に基づいていて、さらに
(c) ステップ(a) で規定した位置から得られる少なくとも２つの選択した超サンプルからのカラーデータを、コピーアウト動作中に、ブレンドしてフィルタリングしたピクセルカラー値を与える、方法。
【請求項１１】
超サンプリングピクセルをエイリアス補正する装置であって、
ピクセルアレイの各ピクセル中の３つの超サンプリング位置をストアする内蔵フレームバッファを備え、各超サンプリング位置は対応するカラー値を有し、さらに
内蔵フレームバッファ中の情報が宛先に転送されている間に３つの超サンプリングカラー値を隣接ピクセルの超サンプリングカラー値とともにブレンドする１次元カラーデータブレンドフィルタを備える、装置。
【請求項１２】
内蔵フレームバッファは各ピクセル内において３つ以上の超サンプル位置をストアしない、請求項１１記載の装置。
【請求項１３】
フィルタは、各ピクセルに対応する超サンプリングカラー値を少なくとも１つの別の隣接ピクセルに対応する超サンプリングカラー値とともにブレンドする、請求項１１記載の装置。
【請求項１４】
フィルタは、垂直に配置された３つのピクセルに対応する超サンプリングカラー値をブレンドしてスクリーンピクセル出力を生成する、請求項１１記載の装置。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明はコンピュータグラフィクスに関し、より特定的には家庭用ビデオゲームプラットフォームのようなインタラクティブなグラフィクスシステムに関する。より詳細にいうと、この発明は、コンピュータグラフィクス表示からギザギザしたエッジを除去するためのエイリアス補正技術に関する。さらに特定的には、この発明は、グラフィクスシステムにおけるフルスクリーンエイリアス補正(full-scene anti aliasing)およびデフリッカリング(de-flickering)のための改良された方法および装置に関する。
【０００２】
【発明の背景】
多くの人々はかなりリアルな恐竜，エイリアン，生き生きとしたおもちゃおよび他の空想的な動物を含む映画をかつて見たことがある。そのようなアニメーションはコンピュータグラフィクスによって可能とされた。そのような技術を用いて、コンピュータグラフィクスのアーティストは、各オブジェクトがどのように見えるべきかや時間の経過とともに外見上どのように変化すべきかを特定し、コンピュータは、そのオブジェクトをモデル化してテレビジョンやコンピュータスクリーンのようなディスプレイに表示する。コンピュータは、表示される映像の各部分を、場面中の各オブジェクトの位置や向き，各オブジェクトを照らすように見える照明の方向，各オブジェクトの表面テクスチャ，および他の要素に正確に基づいて、色付けしまた形作るために必要な多くのタスクを実行する。
【０００３】
コンピュータグラフィクスの生成は複雑であるので、ここ数年前のコンピュータによって生成された３次元（３Ｄ）グラフィクスは、ほとんど高価な特殊なフライトシミュレータ，ハイエンドグラフィクスワークステーションおよびスーパーコンピュータに限られていた。大衆は映画や高価なテレビコマーシャルにおいてこれらのコンピュータシステムによって生成された映像のいくつかを見たが、大部分の人はグラフィクスを生成しているコンピュータに対して実際に相互作用をさせることはできない。たとえば、Nintendo64（登録商標）や今や利用可能であるパソコン用の種々の３Ｄグラフィクスカードのような比較的安価な３Ｄグラフィクスプラットフォームの利用によって、このすべてが変わった。今や、家庭や会社の比較的安価なコンピュータグラフィクスシステム上でエキサイティングな３Ｄアニメーションやシミュレーションに対して相互作用を及ぼすことができる。
【０００４】
グラフィクスシステムの設計者が過去に直面した問題は、表示したイメージ中のエイリアシングに関連する悪い視覚上の効果を如何に回避するかということである。最新のコンピュータグラフィクス表示装置は、ピクセルと呼ばれるカラードットのアレイを表示することによってイメージを作る。家庭用カラーテレビ受像機やコンピュータモニタはこの方法で動作する。この種のピクセル関連表示装置上でグラフィクスイメージを表示するとき、グラフィクスシステムおよび表示装置の固有の特性のために、階段効果が結果的に生じる。表示されたディジタルイメージは非常に小さいピクセルのアレイもしくはグリッドからなっているので、イメージ中のオブジェクトのエッジがギザギザしてあるいは階段状に見えてしまう。たとえば、スムーズなエッジがピクセルグリッドのために、階段状のまたはギザギザした線として見える。人々はこの階段状のもしくはギザギザしたエッジの効果を「ジャギー(jaggies) 」もしくは「ステアケーシング(staircasing) 」と呼ぶが、その技術的な名称は「エイリアシング(aliasing)」である。
【０００５】
エイリアシングはサンプリングに基づくシステムの固有の特徴である。レンダリングしたプリミティブのエッジや交点に沿ってジャギーが存在するとあまり面白くないイメージが結果的に生じる。さらに、テクスチャの「スイミング(swimming)」もしくは「フリッカリング(flickering)」のようなエイリアシングの他の視覚上の攪乱効果がレンダリングされたシーン全体に亘って生じる。これらのイライラする側面効果はアニメーション中において非常にしばしば気にかかる。
【０００６】
このエイリアシング問題を解決するために過去において多くの仕事がなされた。比較的高価なグラフィクスシステムは、エイリアシングの視覚効果を減じもしくは除去する「アンチエイリアシング(anti-aliasing: エイリアス補正）」を用いる。１つの共通のエイリアス補正技術は超サンプリング／ポストフィルタリングの方法に基づく。この方法を用いると、グラフィクスシステムは表示装置が表示できるサンプルより多いサンプル（サブピクセル）を有するサンプリングイメージを発生する。グラフィクスシステムは高解像度のサンプリングイメージをフィルタリングし、表示装置の解像度に合わせてそのイメージを再サンプリングする。サンプリング期間中、グラフィクスシステムは、表示装置上へそれを表示する前に、サンプリングイメージの解像度を故意に粗雑にする。或る例では、グラフィクスシステムは、スクリーン上に表示されるべきピクセルについて或る数のサブピクセルを発生し、そのサブピクセルをブレンドして対応するスクリーンピクセルを作る。
【０００７】
このようなエイリアス補正技術は、ジャグジーを減じることによってイメージの見かけを改善する。イメージがディスクリートなピクセルからなっていたとしても、ピクセルを不鮮明にしたりブレンドすることはエッジをスムーズにする。なぜなら、その方法が、ピクセルカラーパターンにおける一層緩やかな変化を与えるからである。結果として、見る者の目はエイリアシングが生じたエッジに比べてよりスムーズでより正確なものとしてエッジを知覚する。不鮮明にすることがエッジをより一層正確でかつリアルに見せるということは正確には直感的ではなく、これは正確には共通的に用いられるエイリアス補正技術が如何に動作するかということである。
【０００８】
しかしながら、残念なことに、上で述べた超サンプリング(super-sampling)によるエイリアス補正方法は、かなりの量のメモリや他のリソースを必要とする。たとえば、スクリーンピクセル毎にｎ個のサブピクセルをストアすることは、さもなければ必要がないサイズのｎ倍のメモリを必要とする。さらに、スクリーンピクセル毎にｎ個のサブピクセルを発生することは、グラフィクスパイプラインがたくさんの余分な仕事をしなければならないということである。また、ブレンド演算は非常に煩雑で、付加的な回路や他の処理リソースを必要とする。結果として、エイリアス補正に対する超サンプリングによる方法は、典型的には、ハイエンドワークステーションのような過去の高価なグラフィクスシステムにおいては見られたが、ビデオゲームプラットフォームのような安価なシステムにおいて使用するためには「高価」すぎた（要求される処理およびメモリリソースについて）。
【０００９】
他のエイリアス補正技術が過去に用いられていて、その技術は、計算の複雑さやメモリ要求を減じるように適用範囲(coverage)値を用いる。そのような技術は、アメリカ特許第５，７４２，２７７号に開示されている。この技術は、フレームバッファからのシルエットエッジ上に落ちるシルエットエッジピクセルについてカラー値を抽出することによって、シルエットエッジをエイリアス補正する方法を提供し、その抽出したカラー値がシルエットエッジピクセル内に落ちる１つまたはそれ以上の前面ポリゴンを表す。この技術は、シルエットエッジピクセルに最も近い隣接ピクセルのカラーに基づいてシルエットエッジピクセルの背面カラーを予測する。予測した背面カラーは１つまたはそれ以上の前面ポリゴンによって占有されないシルエットエッジピクセルの一部のカラーを表す。シルエットエッジピクセルの出力カラーは抽出したカラーと予測した背面カラーとの間を補間することによって決定される。このエイリアス補正技術はレンダリングしたシーンにおけるジャグジーを減じることができるが、所要の予測ステップが精度に関して明らかな欠点を持つ。
【００１０】
他のエイリアス補正方法がアメリカ特許第６，０７２，５００号および第５，６８４，９３９号に開示されている。この先行技術では、エイリアス補正した表示データを発生する方法は、複数の超サンプルを含むピクセルの現在の状態を表示するピクセルメモリをストアし、このピクセルメモリは複数のフィールドを有する領域マスクを含み、各フィールドは超サンプルの独特のものに関連付けられていて、そしてピクセルパケットを受信し、このピクセルパケットはピクセル中のポリゴン適用範囲を示し、そしてイメージメモリ中に第２のカラー値をストアし、この第２のカラー値は第１のカラー値の関数であり、現在のピクセル状態とピクセルパケットとに基づいて新たなピクセル状態を判断し、新たなピクセル状態に基づいてピクセルメモリを更新し、もしその新たなピクセル状態が各超サンプルのカラー値が第２のカラー値かまたは第３のカラー値のいずれかであるとき、第２のカラー値を有する超サンプルに関連するフィールドの各々がイメージメモリを識別する識別子をストアし、そしてピクセルメモリに基づいてエイリアス補正した表示データを作成する。この技術の１つの欠点は、ピクセルメモリにストアされるべき領域マスクを有することであり、これがピクセルメモリのサイズやコストを相応的に増大させる。
【００１１】
概略的にいうと、種々のフルシーンエイリアス補正（ＦＳＡＡ）技術が、成功の程度を変えながら、エイリアス補正問題を緩和するために開発されているが、より有効な方法のいくつか（たとえば従来の超サンプリングやピクセル毎のオブジェクト精度領域のサンプリングを含む）は、家庭用ビデオゲームプラットフォームのような低価格のグラフィクスシステム内において実現するためには、コンピュータ的でありすぎかつ効果である。低価格システムのために開発された他の技術は、部分的には有効ではあるが、精度の問題で苦しんでいる。したがって、過去に多くの仕事がなされたが、エイリアス補正におけるさらなる改良が望まれている。
【００１２】
【発明の概要】
この発明は、グラフィクスシステムにおけるエイリアス補正のための改良された技術および装置を提供することによって、この問題を解決する。
【００１３】
この発明の１つの局面によれば、内蔵フレームバッファを用いるエイリアス補正のための具体的な技術が開発された。たとえば、イメージデータ表現が内蔵フレームバッファから他の宛先へ転送される「コピーアウト」プロセス中のオンザフライでエイリアス補正を行う方法を発見した。そのような技術は、高効率でかつコスト的に有利なエイリアス補正方法を提供し、低価格システムにおいても実際に実現可能である。
【００１４】
以前に必要とされていたより少ない数のマルチサンプルを用いて高品質のエイリアス補正を達成した。典型的なマルチサンプル方法では「ｎ」サンプルと再構成のための１×１ボックスフィルタとを用いる。具体的なサンプリングパターン（すなわち、マルチサンプリング空間配置）と、いくつかのピクセルの間でいくつかのマルチサンプルを「共用する」具体的なフィルタ構成の組み合わせとを用いることによって、「ｎ」サンプリングパターンおよび１つのピクセル領域にのみまたがって広がる再構成／エイリアス補正フィルタより一層良好なエイリアス補正を達成することができる。
【００１５】
たとえば、ピクセル毎の３つのマルチサンプル、および１×２再構成フィルタ（すなわち、現在のピクセルの直上および直下の隣接ピクセル領域の半分に広がる垂直フィルタ）を用い、かつ特定のサンプリングパターンを用いることによって、垂直エッジ上の６サンプルエイリアス補正と等価なものを達成した。同じように、１．３３×２再構成フィルタと異なるサンプリングパターンとを用いることによって、垂直エッジ上の６サンプルエイリアス補正および水平エッジ上の４サンプルエイリアス補正と等価なものを達成した。より直感的なレベルで、ピクセル間のサンプリングパターンを故意に変更する（ジッタリング:jittering）ことによって、エッジに沿ったノイズを犠牲にしてよりよいエイリアス補正を達成し、次いで、エイリアス補正の目的のためのピクセル間でいくつかのマルチサンプルを共用しながら、再構成フィルタの大きさを１×１より大きくして付加的なノイズを減じもしくは除去し、それによって、フレームバッファ中にピクセルベースでストアする場合に比べてより一層のマルチサンプリングの効果を達成できる。このような、フレームバッファ中にストアするマルチサンプルの数を増やす必要なしにエイリアス補正の品質における劇的な向上は、家庭用ビデオゲームプラットフォームやパーソナルコンピュータのグラフィクスカードのような低価格グラフィクスシステムのために特別な利点を有する。
【００１６】
したがって、この発明の１つの局面によれば、内蔵フレームバッファに結合されたグラフィクス回路を含むグラフィクスシステムは、イメージのマルチサンプリングデータ表現をレンダリングし、そのレンダリングしたマルチサンプリングデータ表現を内蔵フレームバッファ中にストアする。次いで、エイリアス補正したイメージを提供するために、内蔵フレームバッファの内容を再サンプリングする。イメージを内蔵フレームバッファから他の位置へ転送するプロセス中にイメージ上にエイリアス補正フィルタを適用する。
【００１７】
この発明の他の局面によれば、複数のピクセルを含むイメージを発生する形式のグラフィクスシステムにおいて実現されるエイリアス補正方法は、複数のピクセルの各々に関連する複数のサンプルを有するイメージのマルチサンプリングデータ表現を発生する。そして、表示用のエイリアス補正イメージを作るために、そのマルチサンプリングデータ表現を再サンプリングする。再サンプリングは、複数のサンプルの少なくとも１つを複数のイメージピクセル中へブレンドすることを含む（すなわち、複数の再構成スクリーンピクセル間でマルチサンプルのいくつかを共用する）。
【００１８】
この発明によって提供されるさらに他の局面によれば、エイリアス補正方法においては、ピクセルアレイの各ピクセル中に複数の超サンプルを与える。ピクセルアレイの隣接ピクセル内における超サンプルの空間配置を変更し、アレイに、少なくとも２つの隣接ピクセルの超サンプルを含むピクセルアパーチャを有するエイリアス補正フィルタを適用する。
【００１９】
この発明によって提供されるより詳細な局面によれば、エイリアス補正方法は、
・内蔵フレームバッファ内において、ピクセルアレイの各ピクセル中で複数の（たとえば、３つの）超サンプリング位置を規定し、その超サンプリング位置は対応するカラー値を有し、そして
・内蔵フレームバッファを他の宛先へコピーアウトする動作中に１組のピクセル超サンプリングカラー値をブレンドする垂直カラーデータブレンドフィルタを適用する。
【００２０】
限定しない別の実施例の方法によれば、以下のものがこの発明の局面によって提供される追加的な特徴である。
【００２１】
・プログラマブルな超サンプリング位置の適用範囲マスクが超サンプリングイメージを効率的に発生する。
【００２２】
・内蔵フレームバッファから外部フレームバッファへのコピーアウト動作中に適用される１次元（たとえば、垂直）フィルタが超サンプリングイメージをブレンドするために使用され得る。
【００２３】
・隣接フィルタからの超サンプルがエイリアス補正ブレンドに含まれ得る。
【００２４】
・ブレンドにおける超サンプルの位置およびフィルタリングの重みがプログラマブルである。
【００２５】
この発明の他の局面は、グラフィクスシステムにおいてフルシーンエイリアス補正および／またはインタレースの表示のデフリッカリングを与えるためのピクセルデータ処理装置は次のものを含む。
【００２６】
・複数のピクセルについての超サンプリングピクセルデータを含むフレームバッファ、
・フレームバッファからの超サンプリングピクセルカラーデータを受けるように接続された複数のラインバッファ、および
・ラインバッファに結合されたマルチタップの選択可能な重み付けの(multi-tap selectable-weight)ブレンドフィルタ。ただし、このブレンドフィルタは、垂直配置のマルチピクセルフィルタサポート領域によって特徴付けられていて、そこでは、複数の垂直配置ピクセルからの１つまたはそれ以上のカラーデータサンプルがブレンドされてピクセルカラーを形成する。
【００２７】
この発明の局面に従って提供されるエイリアス補正装置の他の例は次のものを含む。
【００２８】
・ピクセルアレイの少なくとも１つのピクセル中において複数の超サンプリング位置を規定する少なくとも１つの記憶位置。この超サンプリング位置は対応するカラー値を有する。
【００２９】
・少なくとも１つのピクセル中における複数の超サンプリング位置の各々毎に、複数の超サンプリング位置が、レンダリングしたプリミティブフラグメント(primitive fragments)によってカバーされるかどうかを特定する適用範囲マスク。
【００３０】
・プログラマブルな重み付け関数に基づいて結果的に得られた超サンプリングカラー値の組をブレンドする１次元カラーデータブレンドフィルタ。
【００３１】
１つの具体的な、限定的でない装置において、記憶位置はピクセル中の３つの超サンプリング位置を規定する。フィルタは、ピクセルに対応する超サンプリング値を、そのピクセルに隣接する少なくとも１つの別のピクセルに対応する超サンプリングカラー値でブレンドする。フィルタは、３つの垂直配置ピクセルに対応する超サンプリングカラー値をブレンドしてスクリーンピクセル出力を作成する。
【００３２】
この発明の局面に従って提供される別の具体的なエイリアス補正技術は次のことによって動作する。
【００３３】
・複数の隣接ピクセルの各々毎にそのピクセルに関連する超サンプリングカラーデータを得るために３つのサンプル位置を規定すること。
【００３４】
・そのような位置に対応するサンプルをイネーブル／ディスエーブルするために適用範囲マスクを使用すること。その適用範囲マスクは、レンダリングしたプリミティブフラグメントによって占有される各ピクセルの対応する部分に少なくとも部分的に基づいている。
【００３５】
・ピクセルの最終カラー値を与えるために位置から得られる結果的なカラーデータをブレンドすること。
【００３６】
この発明の別の局面は、第１，第２，第３および第４および中心を有するピクセルクォードラプレットについて、エイリアス補正のための３つの超サンプリング位置の最適な組を規定する方法は、次のステップを含む。
【００３７】
・クォードラプレット中心に関連する以下の座標（範囲１−１２）でのピクセルクォードラプレットにおける第１ピクセルのための第１組の超サンプリング位置を規定し、（１２，１１）（４，７）（８，３）、
・クォードラプレット中心に関連する以下の座標（範囲１−１２）におけるピクセルクォードラプレットの第２ピクセルのための第２組の超サンプリング位置を規定し、（３，１１）（１１，７）（７，３）、
・クォードラプレット中心に関連する次の座標（範囲１−１２）におけるピクセルクォードラプレット中の第３ピクセルのための第３組の超サンプリング位置を規定し、（２，２）（１０，６）（６，１０）、そして
・クォードラプレット中心に関連する次の座標（範囲１−１２）でのピクセルクォードラプレットにおける第４ピクセルのための第４組の超サンプリング位置を規定する、（９，２）（１，６）（５，６）。
【００３８】
より詳細にいえば、この発明の好ましい実施例は、プログラマブルな位置での超サンプリング装置を実現しかつ選択可能な重み付けの垂直ピクセルサポート領域のブレンドフィルタを使用することによって、効率的なフルシーンエイリアス補正を提供する。２×２ピクセルグループ（クォードラプレット）のために、各超サンプリングピクセル内における３つのサンプルの位置が個別的に選択可能である。好ましくは、１２ビットのマルチサンプル適用範囲マスクを使用して、プリミティブのフラグメントおよび任意の予め計算したｚバッファによって占有される各ピクセルの部分に基づいてピクセルクォードラプレット内の１２サンプルのどれをイネーブルするかを決定する。各超サンプリングピクセルは、３つの垂直配置ピクセルからの７つのサンプルを結合するピクセルブレンドフィルタ装置を用いて、ローカルメモリから外部フレームバッファへのコピーアウト動作中にフィルタリングされる。３つのサンプルが現在のピクセルから取られ、２つのサンプルが現在のピクセルの直上のピクセルから取られ、２つのサンプルが現在のピクセルの直下のピクセルから取られる。ピクセルについての最終カラーを決定するために、イネーブルされたサンプルに基づいて加重平均が計算される。ブレンドフィルタにおいて用いられている重み付け係数がまた個別的にプログラマブルである。インタレースされたビデオ表示のために細い１ピクセル高の水平ラインのデフリッカリングが、交互のラインにおけるピクセルからのカラーサンプルをブレンドするためのピクセルブレンドフィルタを使用することによって達成される。
【００３９】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００４０】
【実施例】
図１は対話型（インタラクティブ）３Ｄコンピュータグラフィクスシステム５０の一例を示す。システム５０は対話型３Ｄビデオゲームをステレオ音声とともにプレイするのに用いられ得る。これはまた多様な他のアプリケーションにも用いられ得る。
【００４１】
この実施例において、システム５０は３次元世界のディジタル表現ないしモデルをインタラクティブにかつリアルタイムに処理することができる。システム５０は、任意の視点から、その世界の一部または全部を表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂまたは他の入力デバイスからのリアルタイム入力に応答して、視点をインタラクティブに変化できる。このことによって、ゲームプレーヤは、その世界内もしくは外の誰かの目を通してその世界を見ることができる。システム５０は、リアルタイム３Ｄインタラクティブ表示を必要としないアプリケーション（たとえば２Ｄ表示の発生やおよび／またはノンインタラクティブ表示）に使用できるが、高品質の３Ｄ映像を非常に速く表示する能力は、非常にリアルでエキサイティングなゲームプレイや他のグラフィクスインタラクションを創造するのに使用され得る。
【００４２】
システム５０を用いてビデオゲームまたは他のアプリケーションをプレイするために、ユーザはまず、主ユニット５４を、カラーテレビ５６または他の表示装置に、両者の間にケーブル５８を接続することによって、接続する。主ユニット５４はカラーテレビ５６を制御するためのビデオ信号およびオーディオ信号を発生する。ビデオ信号はテレビジョン画面５９上に表示されている映像を制御するものであり、オーディオ信号はテレビのステレオスピーカ６１Ｌおよび６１Ｒを通して音声として再生される。
【００４３】
ユーザはまた主ユニット５４を電源につなぐ必要がある。この電源は従来のＡＣアダプタ（図示せず）であってよく、そのＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、主ユニット５４を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例ではバッテリが用いられてもよい。
【００４４】
ユーザは主ユニット５４を制御するために手持ちコントローラ５２ａおよび５２ｂを用いる。コントロール６０は、たとえば、３Ｄ世界内においてテレビ５６に表示されているキャラクタが移動すべき方向（上または下、左または右、近づいてまたは遠ざかって）を指示するために使用され得る。コントロール６０は、また他のアプリケーションのための入力（たとえばメニュー選択，ポインタ／カーソル制御，その他）を与える。コントローラ５２は多様な形態をとり得る。この実施例においては、図示されるコントローラ５２は、各々ジョイスティック，押しボタンおよび／または方向スイッチのようなコントロール６０を含む。コントローラ５２は、ケーブルによって、もしくは電磁波（たとえば電波または赤外線）を介してワイヤレスで、主ユニット５４に接続され得る。
【００４５】
ゲームのようなアプリケーションをプレイするために、ユーザはビデオゲームもしくはプレイしたいと思う他のアプリケーションをストアしている適宜の記憶媒体６２を選択し、その記憶媒体を主ユニット５４のスロット６４に差し込む。記憶媒体６２は、たとえば、特別にエンコードされおよび／または記号化された光学的ならびに／もしくは磁気的ディスクであってよい。ユーザは主ユニット５４をオンするために電源スイッチ６６を操作し、主ユニットがその記憶媒体６２にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザは主ユニットに入力を与えるためにコントローラ５２を操作する。たとえば、コントロール６０を操作することによってゲームもしくは他のアプリケーションをスタートさせる。他のコントロール６０を動かすことによって、動画キャラクタを異なる方向に移動させ、または３Ｄ世界におけるユーザの視点を変化させる。記憶媒体６２にストアされている具体的なソフトウェアによって、コントローラ５２上の種々のコントロール６０は異なる時間で異なる機能を達成することができる。
全体システムの例
図２はシステム５０の例示的なコンポーネントのブロック図であり、重要なコンポーネントは、
・主プロセサ（ＣＰＵ）１１０、
・主メモリ１１２、および
・グラフィクス／オーディオプロセサ１１４
を含む。
【００４６】
この実施例において、主プロセサ１１０（たとえばＩＢＭパワーＰＣ７５０の改良版）は、手持ちコントローラ５２（および／または他の入力デバイス）からの入力をグラフィクス／オーディオプロセサ１１４を通して受ける。主プロセサ１１０はユーザ入力にインタラクティブに応答し、光ディスクドライブのような大容量記憶媒体アクセス装置１０６を介して、たとえば外部記憶媒体６２から供給されるビデオゲームもしくは他のプログラムを実行する。一例として、ビデオゲームプレイの状況では、主プロセサ１１０は、多様なインタラクティブ制御機能に加えて、衝突検出および動画処理を実行する。
【００４７】
この実施例では、主プロセサ１１０は３Ｄグラフィクス／オーディオコマンドを発生し、それらをグラフィクス／オーディオプロセサ１１４に送る。グラフィクス／オーディオプロセサ１１４はこれらのコマンドを処理し、ディスプレイ５９上での可視映像を生成し、ステレオスピーカ６１Ｒおよび６１Ｌもしくは他の適宜の音声発生デバイス上でのステレオ音声を生成する。
【００４８】
実施例のシステム５０はビデオエンコーダ１２０を含み、このビデオエンコーダは、グラフィクス／オーディオプロセサ１１４からの映像信号を受けて、その映像信号をコンピュータモニタや家庭用テレビ５６のような標準的な表示装置上での表示に適したアナログおよび／またはディジタルビデオ信号に変換する。システム１００はまたオーディオコーデック（圧縮器／伸長器）１２２を含み、このオーディオコーデックはディジタル化されたオーディオ信号を圧縮しかつ伸長するとともに、必要に応じてディジタルオーディオ信号のフォーマットとアナログオーディオ信号のフォーマットとの間で変換を行う。オーディオコーデック１２２はバッファ１２４を介してオーディオ入力を受けることができ、処理（たとえば、プロセサが生成したおよび／または大容量記憶媒体アクセス装置１０６のストリームオーディオ出力を介して受信した他のオーディオ信号とのミキシング）するために、そのオーディオ入力をグラフィクス／オーディオプロセサ１１４に与える。この実施例におけるグラフィクス／オーディオプロセサ１１４は、オーディオタスクに利用可能なオーディオメモリ１２６にオーディオ関連情報をストアすることができる。グラフィクス／オーディオプロセサ１１４は、結果的に得られるオーディオ出力信号を、圧縮およびアナログ信号への変換のために、オーディオコーデック１２２に与え、したがってそのオーディオ出力信号が（たとえばバッファアンプ１２８Ｌおよび１２８Ｒを介して）スピーカ６１Ｌおよび６１Ｒによって再生され得る。
【００４９】
グラフィクス／オーディオプロセサ１１４はシステム１００内に存在するであろう種々の付加的なデバイスと通信する能力を有する。たとえば、パラレルディジタルバス１３０は大容量記憶媒体アクセス装置１０６および／または他のコンポーネントと通信するために用いられる。シリアル周辺バス１３２は多様な周辺機器または、たとえば、
・ＰＲＯＭおよび／またはＲＴＣ（リアルタイムクロック）１３４、
・モデム１３６もしくは他のネットワークインタフェース（それはシステム１００を、プログラム命令および／またはデータがダウンロードもしくはアップロードされ得るインターネットあるいは他のディジタルネットワークのようなテレコミュニケーションネットワーク１３８に接続する）、および
・フラッシュメモリ１４０
を含む他のデバイスと通信する。
別の外部シリアルバス１４２は、付加的な拡張メモリ１４４（たとえばメモリカード）もしくは他のデバイスと通信するために使用され得る。コネクタが種々のデバイスをバス１３０，１３２および１４２に接続するために使用され得る。
グラフィクス／オーディオプロセサの例
図３は実施例のグラフィクス／オーディオプロセサ１１４を示すブロック図である。或る実施例においては、グラフィクス／オーディオプロセサ１１４はシングルチップＡＳＩＣであってよい。この実施例においては、グラフィクス／オーディオプロセサ１１４は、
・プロセサインタフェース１５０、
・メモリインタフェース／コントローラ１５２、
・３Ｄグラフィクスプロセサ１５４、
・オーディオディジタル信号プロセサ（ＤＳＰ）１５６、
・オーディオメモリインタフェース１５８、
・オーディオインタフェース／ミキサ１６０，
・周辺コントローラ１６２、および
・表示コントローラ１６４
を含む。
【００５０】
３Ｄグラフィクスプロセサ１５４はグラフィクス処理タスクを実行する。オーディオディジタル信号プロセサ１５６はオーディオ処理タスクを実行する。表示コントローラ１６４は主メモリ１１２からの映像情報にアクセスし、表示装置１０２上での表示のためにその映像情報をビデオエンコーダ１２０に与える。オーディオインタフェース／ミキサ１６０はオーディオコーデック１２２をインタフェースし、また異なるソースからのオーディオ（たとえば、大容量記憶媒体アクセス装置１０６からのオーディオストリーム，オーディオＤＳＰ１５６の出力，およびオーディオコーデック１２２を通して受ける外部オーディオ入力）をミックスすることができる。プロセサインタフェース１５０は主プロセサ１１０およびグラフィクス／オーディオプロセサ１１４の間のデータおよび制御インタフェースを提供する。
【００５１】
メモリインタフェース１５２はグラフィクス／オーディオプロセサ１１４とメモリ１１２との間のデータおよび制御インタフェースを提供する。この実施例においては、主プロセサ１１０は、プロセサインタフェース１５０およびグラフィクス／オーディオプロセサ１１４の一部であるメモリインタフェース１５２を介して、主メモリ１１２にアクセスする。周辺コントローラ１６２はグラフィクス／オーディオプロセサ１１４と上で述べた種々の周辺機器との間のデータおよび制御インタフェースを提供する。オーディオメモリインタフェース１５８はオーディオメモリ１２６とのインタフェースを提供する。
グラフィクスパイプラインの例
図４は図３の３Ｄグラフィクスプロセサ１５４をより詳細に示すグラフィクス処理システムを示す。この３Ｄグラフィクスプロセサ１５４は、とりわけ、コマンドプロセサ２００および３Ｄグラフィクスパイプライン１８０を含む。主プロセサ１１０はデータストリーム（たとえばグラフィクスコマンドストリームおよび表示リスト）をコマンドプロセサ２００に通信する。主プロセサ１１０はメモリレイテンシを最小化するために２レベルキャッシュ１１２を有し、さらにまたグラフィクス／オーディオプロセサ１１４に向けられたキャッシュされていないデータストリームのための書込収集(write-gathering)バッファ１１１を有する。この書込収集バッファ１１は部分キャッシュラインを全キャッシュラインに集め、バスの最大使用時に、グラフィクス／オーディオプロセサ１１４からのデータを１つのキャッシュラインに送る。
【００５２】
コマンドプロセサ２００は主プロセサ１１０からの表示コマンドを受け、それらを解剖し、メモリコントローラ１５２を介して共用メモリ１１２からのそのコマンドを処理するに必要な付加的なデータを入手する。コマンドプロセサ２００は、２Ｄおよび／または３Ｄ処理およびレンダリングのために、頂点コマンドのストリームをグラフィクスパイプライン１８０に与える。グラフィクスパイプライン１８０はこれらのコマンドに基づいて映像を生成する。結果として得られた映像情報は、表示コントローラ／ビデオインタフェースユニット１６４によるアクセスのために主メモリ１２０に転送され得て、この映像情報は表示装置１５６上にパイプライン１８０のフレームバッファ出力を表示する。
【００５３】
図５はグラフィクスプロセサ１５４を用いて実行される処理を図解的に示すブロック論理フロー図である。主プロセサ１０は、グラフィクスコマンドストリーム２１０，表示リスト２１２および頂点アレイ２１４を主メモリ１１２にストアし、ポインタをバスインタフェース１５０を介してコマンドプロセサ２００に送る。主プロセサ１１０は主メモリ１１０内に割り付けられた１つ以上のグラフィクスＦＩＦＯバッファ２１０にグラフィクスコマンドをストアする。このコマンドプロセサ２００は、
・同期／フロー制御および負荷バランスのためにグラフィクスコマンドを受けかつバッファするオンチップＦＩＦＯメモリバッファ２１６を介して主メモリ１１２からのコマンドストリーム、
・オンチップコールＦＩＦＯメモリバッファ２１８を介して主メモリ１１２からの表示リスト２１２、および
・コマンドストリームからおよび／または主メモリ１１２の頂点アレイ２１４からの頂点アトリビュート
を頂点キャッシュ２２０を介して取り込む。
【００５４】
コマンドプロセサ２００はコマンド処理動作２００ａを実行し、そのコマンド処理動作２００ａはアトリビュート形式を浮動小数点フォーマットに変換し、結果的に得られた完全頂点ポリゴンデータをレンダリング／ラスタライゼーションのためにグラフィクスパイプライン１８０に与える。プログラマブルメモリ調停回路１３０（グラフィクスメモリ要求調停回路：図４）は、グラフィクスパイプライン１８０，コマンドプロセサ２００および表示コントローラ／ビデオインタフェースユニット１６４の間での共用主メモリ１１２へのアクセスを調停する。
【００５５】
図４は、グラフィクスパイプライン１８０が
・変換ユニット３００、
・セットアップ／ラスタライザ４００、
・テクスチャユニット５００、
・テクスチャ環境ユニット６００、および
・ピクセルエンジン７００
を含むことを示す。
【００５６】
変換ユニット３００は多様な２Ｄおよび３Ｄ変換および他の動作３００ａ（図５）を実行する。変換ユニット３００は変換処理３００ａに用いられるマトリクスをストアするための１つ以上のマトリクスメモリ３００ｂを含む。変換ユニット３００は、入来する頂点毎のジオメトリをオブジェクト空間からスクリーン空間へ変換し、そして入来するテクスチャ座標を変換しかつ投影テクスチャ座標（３００ｃ）を計算する。変換ユニット３００はまたポリゴンクリッピング／カリング(clipping/culling)３００ｄを実行する。変換ユニット３００ｂによってまた達成される照明処理３００ｅが、この実施例では８つまでの独立した照明について、頂点毎に照明計算を行う。変換ユニット３００は、エンボス(embossed)タイプのバンプマッピング効果およびポリゴンクリッピング／カリング動作（３００ｄ）のために、テクスチャ座標を発生する（３００ｃ）。
【００５７】
セットアップ／ラスタライザ４００はセットアップユニットを含み、このセットアップユニットは、変換ユニット３００からの頂点データを受け、三角形セットアップ情報を、エッジラスタライゼーション，テクスチャ座標ラスタライゼーションおよびカラーラスタライゼーションを実行する１つ以上のラスタライザユニット（４００ｂ）に送る。
【００５８】
テクスチャユニット５００は、オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよく、たとえば、
・主メモリ１１２からのテクスチャ５０４の検索、
・たとえばマルチテクスチャ処理，ポストキャッシュテクスチャ伸長，テクスチャフィルタリング，エンボシング，投影テクスチャの使用を通しての陰影付け，およびアルファトランスパーレンシおよびデプスを用いるＢＬＩＴを含むテクスチャ処理（５００ａ）、
・バンプマッピング，偽(pseudo)テクスチャおよびテクスチャタイル(tiling)効果（５００ｂ）のためのテクスチャ座標置換を計算するバンプマップ処理、および
・間接テクスチャ処理（５００ｃ）
を含むテクスチャリングに関連する種々のタスクを実行する。
【００５９】
テクスチャユニット５００はテクスチャ環境処理（６００ａ）のためにフィルタされたテクスチャ値をテクスチャ環境ユニット６００に出力する。テクスチャ環境ユニット６００は、ポリゴンおよびテクスチャカラー／アルファ／デプスをブレンドし、また逆レンジベース(reverse range based)のフォグ効果を達成するために、テクスチャフォグ処理（６００ｂ）を実行する。テクスチャ環境ユニット６００はたとえばカラー／アルファ変調，エンボシング，詳細テクスチャ，テクスチャスワッピング，クランピングおよびデプスブレンディングに基づく多様な他の環境関連機能を実行するマルチステージ(multi stages)を提供する。
【００６０】
ピクセルエンジン７００はデプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を実行する。この実施例では、ピクセルエンジン７００はデータを埋め込み（オンチップ：内蔵）フレームバッファメモリ７０２にストアする。グラフィクスパイプライン１８０は、フレームバッファおよび／またはテクスチャ情報をローカルにストアするために１つ以上の内蔵ＤＲＡＭメモリ７０２を含む。ｚ比較７００ａは、現在有効なレンダリングモードに依存して、グラフィクスパイプライン１８０におけるより早いステージで実行される（たとえば、ｚ比較は、もしアルファブレンディングが要求されていないならば早くに実行され得る）。このピクセルエンジン７００は表示コントローラ／ビデオインタフェースユニット１６４による主メモリ１１２へのアクセスのために、オンチップフレームバッファ７０２を周期的に書き込むコピー動作７００ｃを含む。このコピー動作７００ｃはまた動的テクスチャ合成効果のために、埋め込みフレームバッファ７０２の内容を主メモリ１１２中のテクスチャにコピーするために使用され得る。エイリアス補正ないしアンチエイリアシング(anti-aliasing)および他のフィルタリングがコピーアウト動作中に実行され得る。最終的に主メモリ１１２にストアされるグラフィクスパイプライン１８０のフレームバッファ出力は、表示コントローラ／ビデオインタフェースユニット１６４によってフレーム毎に読み出される。表示コントローラ／ビデオインタフェース１６４は表示装置５６上での表示のためにディジタルＲＧＢピクセル値を与える。
エイリアス補正技術および装置の例
図６に示すように、エイリアス補正は実施例において２つの主要なフェーズで行われる。第１のフェーズはレンダリング中に生じ、超サンプリングした内蔵フレームバッファ（ＥＦＢ）中にイメージをラスタライズする（ブロック５５０）。コピーアウト動作中に行われる第２のフェーズは、超サンプルをフィルタリング／ブレンドしてスクリーンピクセル出力カラーを作る（ブロック５５２）。コピーアウトされたイメージは、次いで、表示装置５６上に表示される（ブロック５５４）。図７はこの発明の局面に従ったエイリアス補正のより詳細な概略ブロック図を提供する。このエイリアス補正は、現在の２×２ピクセルクォードラプレットについてピクセル毎に３つのマルチサンプリング位置を規定することによって開始する（ブロック５５２）。プログラマブルな制御レジスタが、１／１２ピクセルを単位とするサンプルの位置を決定するために使用される（ブロック５５０ａ−１）。マルチサンプル適用範囲マスクが、次いで、プリミティブによって占有されるピクセルの一部に基づいてサンプルをイネーブル／ディスエーブルするために作られる（ブロック５５０ｂ）。もし、先にｚ比較がイネーブルされていると、適用範囲マスクは、プリミティブのデプスによって影響を受ける（ブロック５５０ｂ）。フレームが終了しかつすべてのプリミティブが内蔵フレームバッファ内にレンダリングされると、ローカルメモリ（ＥＦＢ）から主メモリ（ＸＦＢ）へのコピーアウト動作中（ブロック５５２）に、垂直配置の３つの隣接ピクセルからのイネーブルされたサンプルからのカラーデータが、プログラマブルな重み係数を用いてブレンドされる（ブロック５５２ａ）。エイリアス補正されたピクセルカラーは、次いで、ビデオインタフェース回路によって主メモリから表示される（ブロック５５４）。
【００６１】
エイリアス補正の２つの基本的なフェーズ（ラスタライゼーションおよびフィルタリング）の各々を以下に詳細に説明する。
ラスタライズ／レンダリングフェーズ
第１エイリアス補正フェーズ（図６、ブロック５５０）は、ラスタライザ（４００ｂ）が内蔵フレームバッファ（ＥＦＢ）７０２へのエッジラスタライゼーションを行っているときに生じる。好ましくは、このラスタライザは、エッジおよびｚラスタライザであり、それは、現在の三角形もしくは他のプリミティブによって包含される各可視的ピクセルクォードラプレット内におけるプログラマブルな超サンプリング位置のためのｘ，ｙ，ｚおよび適用範囲マスク値を発生する。プリミティブの情報は、好ましくは、容易なラスタライゼーションに適した形式でセットアップユニット４００から受信する。このプロセスはイメージ中の各プリミティブ毎に繰り返す。
プログラマブルなサブピクセル位置を有するピクセルクォードラプレット
図８は実施例のプリミティブ（たとえば、三角形）６１２を重ねた例示的なピクセルクォードラプレット６１０を示す。このピクセルクォードラプレットは、２×２構成中に４つのピクセル（Ｐｉｘ００，Ｐｉｘ０１，Ｐｉｘ１０およびＰｉｘ１１）を含む。クォードラプレット６１０内の各ピクセル（たとえば、Ｐｉｘ００）中に、３つの超サンプリング位置（たとえば、Ｓ０，Ｓ１およびＳ２）がプログラマブルに選択されかつ特定される。この結果、ピクセルクォードラプレット６１０毎に、１２の超サンプリング位置ができる。上で述べたグラフィクスパイプラインがクォードラプレット中のピクセルを処理する間、他の配置がまた可能である。
【００６２】
如何に多くのピクセルが並列的に発生されるかに拘わらず、この実施例における各ピクセルＰｉｘは、複数の（たとえば、１つの具体例では３つの）サブピクセル(sub-pixel)を含む（図９参照）。実施例の構成において、ピクセルクォードラプレット中のこれらのサブピクセルの各々の位置はプログラマブルである。さらに、この実施例においては、数千のピクセルを含むピクセルアレイ中の各ピクセルクォードラプレットは、対応するプログラマブルな位置において、１２のそのようなサブピクセルを含む。図９において最も明らかにわかるように、クォードラプレット６１０の各ピクセル内の３つのサンプリング位置Ｓは各隣接ピクセル毎に異なる。図９は各ピクセル中の３つのサンプリング位置の１つの例を示す。この発明の局面によれば、エッジに沿ったノイズを犠牲にしてよりよいエイリアス補正を達成するように、ピクセル間のサンプリングパターン（たとえば、隣接ピクセル中におけるマルチサンプリング位置の空間配置）を変更する（「ジッタ」）ことができる。そして、ノイズを減じるために、再構成フィルタの大きさを１×１より大きくすることができる。再構成フィルタを１×１より大きくするということは、異なるピクセル間でいくつかのマルチサンプルが共用されるということを意味し、すなわち、それらは表示のための１つのスクリーンピクセルより以上のエイリアス補正したスクリーンピクセル出力カラーを与える。したがって、実際にフレームバッファ中にストアするより以上にピクセル毎のマルチサンプルの効果を得ることができる。或る場合においては、サンプリングパターンを注意深く構成することによって、付加的なフィルタがノイズをすべてキャンセルできてしまう。
【００６３】
プログラマは、グローバルレジスタを書き込むことによって、サブサンプリング位置を設定できる。この具体的な実施例においては、超サンプリング位置は、ピクセルクォードラプレットの中心から、ｘおよびｙの距離（たとえば、ピクセルサイズに関連する単位、すなわち１／１２ピクセル）として特定され得る。他の構成（たとえば、ピクセルクォードラプレットに基づかないもの）では、各ピクセル内でマルチサンプリング位置を特定するための異なる方法が使用可能である。各ピクセル中の超サンプルの各々の位置が実施例においてはプログラマブルであるので、各クォードラプレットのための具体的なサンプリング位置（Ｓ０−Ｓ１）は具体的なアプリケーションによって必要なように変更可能である。他方、別の実施例では、具体的に最適なマルチサンプリング位置の値が固定（たとえば、ハードウェア中にセット）され得て、そのために、アプリケーションのプログラマはそれについて心配する必要がない。したがって、実施例においてはサンプリング位置はプログラマブルであるけれども、ハードウェア結線した随意的なパターンがまたそのようなプログラマブル可能性に代えて使用できる。選択したパターンは、フレーム中の或る数の隣接ピクセルに亘って繰り返される。
【００６４】
この実施例においてピクセルアレイ内のマルチサンプルの具体的な空間配置を特定する１つの便利な方法は、ピクセルクォードラプレットの中心に関連するピクセルクォードラプレット内のマルチサンプルの位置を特定することである。図１０は、実施例において、クォードラプレット内の各ピクセルが１２×１２のグリッドにブレークダウンされたことを示す。各サンプルは、クォードラプレットの中心から特定したｘおよびｙの距離（１／１２ピクセルの単位で）を有する。したがって、ｘｓｉｊ，ｙｓｉｊ（ここでｊ＝０−２およびｉ＝０−３）が、クォードラプレットについてピクセルｉ中のマルチサンプリングの位置ｊの位置（ｘおよびｙ座標）を特定する。
【００６５】
図１１はクォードラプレット内の各ピクセル毎に好ましい例示のサンプル位置が示されたクォードラプレットの拡大図を示す。この好ましいパターンが決定され、或るアプリケーションのために良好な結果をもたらす。特に、この好ましいサンプリングパターンは、各ピクセル中の３つのマルチサンプルおよび１×２再構成フィルタの垂直フィルタ係数（１／１２，１／６，１／６，１／６，１／６，１／６，１／１２）（図１５および図１７参照）を提供し、そのフィルタは、隣接ピクセル中のマルチサンプル位置のジッタリングを通して、図１１のマルチサンプル配置パターン中へ故意に導入されたノイズをキャンセルする。「１×２」再構成フィルタによって、フィルタアパーチャが、水平方向（ｘ）において１つのピクセルにまたがってかつ垂直方向（ｙ）において２つのピクセルにまたがってそれぞれ広がる。すなわち、このフィルタの「アパーチャ(aperture)」は、現在のピクセルの直上のピクセルの半分の領域および現在のピクセルの直下のピクセルの半分の領域とともに、それの出力が発生されている現在のピクセルの全領域をカバーする。図１１のパターンは上で述べた適宜に構成された再構成フィルタとともに用いられるべきで、もし、図１１のパターンが対応のフィルタなしで用いられるならば、エイリアス補正をしないイメージより悪く見えてしまうことに注意されたい。
【００６６】
したがって、この発明の局面によれば、(a) マルチサンプルの数および位置ならびに(b) エイリアス補正（再構成）フィルタのアパーチャおよび重み付け係数の間に関係がある。具体的なサンプリングパターンと具体的なフィルタとの結合が、ピクセル毎の或る数のマルチサンプルのための「ｎ」サンプリングパターンおよび１×１フィルタだけに比べて、実質的によりよいエイリアス補正を与える。
【００６７】
図１１において、そしてクォードラプレットの中心からｘおよびｙ（距離）スケールのために数字１−１２が使用されるとすれば、好ましい位置は次のようである。
【００６８】
【表１】
0004698052.tif 000002
【００６９】
３つのサンプル点が図１１において各ピクセルの一番上からのそれらの相対的位置に基づいて０−２の番号が付けられていて、そのサンプルはクォードラプレットの中心からのそれらの距離ｙに基づいて番号が付けられる。この番号付けが以下に述べるフィルタリング動作中に考慮され、そこでは、各クォードラプレット中において最も大きいｙ値を有するピクセルをフィルタによって使用しない。
【００７０】
ピクセル毎のマルチサンプルの異なる数および／または異なるフィルタアパーチャを使用できるように他のサンプリングパターンが用いられてもよい。この発明の具体的な実施例においては、ピクセル毎の３つのサンプルおよび１×２再構成フィルタを使用するように選択した。具体的なサンプリングパターンを使用することによって、垂直エッジ上の６サンプルエイリアス補正と等価なものを達成することができる。しかしながら、他の実施例においては、異なるサンプリングパターンとともに１．３３×２再構成フィルタ（すなわち、発生されている現在のピクセルをまたがって水平ないしｘ方向に延びかつ現在のピクセルの左隣のピクセルの１／６および現在のピクセルの右隣のピクセルの１／６の領域をそれぞれカバーする水平および垂直再構成フィルタ）を用い、垂直エッジ上の６サンプルエイリアス補正および水平エッジ上の４サンプルエイリアス補正と等価なものを達成することができる。
【００７１】
他の実施例においては、他のサンプリングパターンがピクセル毎に４サンプルを有する構成および１．５×１．５再構成フィルタ内で使用できる。サンプリングパターンは各ピクセル毎にフレームバッファ中にストアされている４超サンプルだけで、水平および垂直エッジ上の６サンプルのエイリアス補正と等価なものを達成することができる。フィルタリングは僅かに重要であるが、エイリアス補正の品質における効果は大きい。主観テストは４サンプルおよび６サンプルの間で知覚される品質における非常に大きな飛躍を示し、そして品質曲線は、次いで、６サンプル以降では全く平坦である（たとえば、大部分のユーザは６サンプルと１６サンプルとの間の違いを言えない）。この技術は、したがって、（今日存在する低品質のエイリアス補正に対するものとして）４サンプルを使用する良好な品質のエイリアス補正を可能とし、良好な品質を達成するために、ピクセル毎の８マルチサンプルへ行く必要性を予測する。
【００７２】
エイリアス補正の知覚された可視品質は一般的には主観的であり、結果的に得られたイメージを見ている各個人の好みに幾分依存するものであることを留意すべきである。しかしながら、有利なパターンおよび対応するフィルタ寸法によって多くの看者に対して向上した可視品質を提供できることがわかった。具体的なパターンの選択は、一般的には、カットアンドエラーの手法を用いて行われる。しかしながら、次のようにしてパターンを選択する場合には、例示的な一般的基準を用いることができる。（１）垂直エッジを水平方向に動かすとき１つの新しいサンプルがたとえばピクセルの１／６毎にヒットし、それによって全く平らなグレースケールのステップを与えるようにパターンを設定する。（２）水平エッジを垂直方向に動かすとき１つの新しいサンプルがたとえばピクセルの１／６毎にヒットしそれによって全く平らなグレースケールのステップを与えるようにパターンを設定する。（３）サンプルが可能な限り広げられ、そのためにパターンを離れたところから見たときクラスタリングが見えないようにパターンを設定する。
マルチサンプル／空間配置をプログラムする技術の例
図１２は、詳細な実施例におけるクォードラプレット６１０中のマルチサンプルの位置の各々のｘおよびｙ座標をストアするための例示的なグローバルレジスタ（ＬＯＣ０−ＬＯＣ３）６１６ａ，６１６ｂ，６１６ｃおよび６１６ｄを示す。これらの位置は、たとえば、グラフィクスプロセサのためのアプリケーションプログラムインタフェース（ＡＰＩ）のコマンドを使用して、クォードラプレット中のピクセルの各々についてプログラムされ得る。これらのグローバルレジスタ６１６ａ，６１６ｂ，６１６ｃおよび６１６ｄは、ピクセルエンジンによってサンプル位置を特定するために使用される。次のものはこの目的のためにこれらの例示的なレジスタを設定するＡＰＩコマンドないし関数の例である。
【００７３】
【表２】
0004698052.tif 000003
【００７４】
この関数はエイリアス補正モードを設定する。アプリケーションはまたエイリアス補正のための適宜のピクセルフォーマットを設定する。このモードはプリミティブ毎ではなくフレーム毎である。SamplePts アレイはピクセルクォードラプレット毎のマルチサンプル点の位置を特定する。オフセットは１／１２ピクセルの単位で与えられる。ピクセル毎に３点ある。サンプル点は次のように特定される。
【００７５】
【表３】
0004698052.tif 000004
【００７６】
図１２はまた、マルチサンプリングがイネーブルされるかどうかを特定するビット(ms ＿en) を含む例示のグローバルレジスタ(Mode)６１８を示す。このms＿enビットはエイリアス補正のためにイネーブルされる。したがって、システムは、好ましくは、エイリアス補正モードの選択的な動作をイネーブルする。このレジスタ６１８はシステムの他のパラメータを特定するためにも使用され得る。たとえば、ntexビットは変換ユニットからセットアップユニットへパスされるテクスチャ座標セットの数や、テクスチャ座標のラスタライゼーションのためにセットアップユニットからラスタライゼーションユニットへパスされるテクスチャ座標セットの数を特定するために使用され得る。ncolビットは、変換ユニットからセットアップユニットへパスされるカラー値セットの数やカラーラスタライゼーションのためにセットアップユニットからラスタライザユニットへパスされるカラー値セットの数を特定するために使用され得る。reject＿enビットは三角形が前面または背面であるかどうかに基づいて三角形をどのようにリジェクトするかを特定する（リジェクトせず，前面リジェクト，背面リジェクトまたは全リジェクト）。flat＿enビットは、三角形がフラットシェーディングされることを特定するために使用される。n ＿tev ビットは現在規定されているテクスチャ環境（ＴＥＶ）演算の数を特定するために使用され得る。
適用範囲マスク
図１１に示すように適用範囲マスク６１４はピクセルクォードラプレット６１０について発生される。この適用範囲マスク６１４はラスタライズされているプリミティブフラグメント６１２の各々によってどの超サンプリング位置（Ｓ０−Ｓ２）がカバーされるかを特定する。この中で、「プリミティブフラグメント(primitive fragment)」は、エッジラスタライザ４００ｂによって現在評価されているピクセルに交差する、レンダリングしている現在のプリミティブの一部をいう。エッジラスタライザ４００ｂはプリミティブフラグメント６１２の各種エッジをラスタライズするプロセスにおいて適用範囲を決定する。この適用範囲マスク６１４はラスタライザ４００ｂによって発生されている現在のプリミティブのためのエッジ等価(equation)データに従って設定される。
【００７７】
実施例において、適用範囲マスク６１４は１２ビット、すなわちクォードラプレット中の各ピクセルについて３ビットを含み、３ビットの各々はピクセル中の異なるサブピクセルに対応している。適用範囲マスクビットは、クォードラプレット６１０中の各超サンプリング位置の各々をプリミティブフラグメントがカバーしているかどうかに基づいて設定する。
【００７８】
適用範囲マスク６１４は、超サンプルが現在のプリミティブフラグメントによってカバーされているかどうかに基づいて、プログラムされた超サンプリング位置に対応する超サンプルをイネーブル／ディスエーブルするために使用される。適用範囲マスクは、プリミティブフラグメントによって占有（カバー）される各ピクセルの超サンプリング位置や、プリミティブフラグメントによって占有（カバー）されていない超サンプリング位置を記録する。この情報は、実施例においては、以下に述べるＺバッファリング動作における効率的な改良を実現するために使用される。適用範囲マスクは内蔵フレームバッファ中に種々のマルチサンプルを発生する際に手助けとなるが、それらは本質的なものではなく、適用範囲マスクによらない他の技術が他の実施例において使用可能である。
Ｚバッファリング
開示した実施例の内蔵フレームバッファ７０２は、ｚ（デプス）バッファおよびカラーバッファを含む。実施例は、各超サンプリング位置Ｓのためのｚバッファリングを行うかどうかを判断するために適用範囲マスク６１４を使用する。もし、超サンプリング位置Ｓがプリミティブフラグメントによってカバーされていなければ、フレームバッファ７０２内の対応するｚ値およびカラー値は結局更新されることはないのであるから、そのサブサンプルについてｚ比較を行う必要はない。もし、超サンプリング位置Ｓがプリミティブフラグメントによってカバーされていれば、次いで、そのサブサンプリング位置においてプリミティブフラグメントが隠されているのか見えるようにされているのかを判断するためにそのサブサンプルについてｚ比較動作７００ａが行われ、そしてブレンド演算７００ｂが、もしそのｚ比較７００ａがピクセルフラグメントがそのサブサンプル位置で可視的であることを示しているなら、カラーを内蔵カラーフレームバッファへ条件付きでブレンドする。
【００７９】
実施例における配線の数を減じるために、２６．１のフォーマットを有する単一の２８ビットクォードラプレットＺ値およびフォーマットｓ２６．５を有するＺｘおよびＺｙがｚ比較７００ａへ送られる。このクォードラプレットＺ値は、ピクセルクォードラプレットの中心におけるピクセルＺの値である。２つの３２ビット加算器および２つの５×３２ビット乗算器が、次式を計算することによって各サブサンプル位置毎の平面式(plane equation)を解決し、ピクセルクォードラプレット中の１２サンプルについてクォードラプレットＺ値およびラスタライザ４００ｂから得られるスロープ情報を用いて外挿補間する。
【００８０】
【数１】
Ｚ（ｄｘ，ｄｙ）＝Ｚ＋（Ｚｘ）（ｄｘ）＋（Ｚｙ）（ｄｙ）
ここで、ｄｘおよびｄｙはピクセル数および超サンプリング位置に基づくものであり、オーバフローを防止するようにクランプが行われる。
【００８１】
上で述べたように、ｚ比較７００ａ′（図５参照）は現在有効なレンダリングモードに依存してグラフィクスパイプライン１８０におけるより早期のステージで行われ得る（たとえば、アルファテストが必要ないなら、Ｚ比較が行われる）。このような場合において、Ｚ比較７００ａ′はＺバッファリング（デプス比較および書き込み）を条件付きで、上で述べた平面式によって発生される外挿補間したＺ値上で行う。この動作の結果として、多数のビットおよび適用範囲マスク６１４がＺバッファリング動作のためにクリアされ、したがって、カラーフレームバッファの更新が生じるパイプライン中の後のステージへｚ比較の結果を適用範囲マスクが運ぶのが許容される。ピクセルクォードラプレットのｘ，ｙ位置とともに結果的に得られた適用範囲マスクがテクスチャブロック５００ａによるさらなる処理への予備的なテクスチャ座標ラスタライゼーションプロセスへパスされる。もし、「テクスチャ前Ｚ（Z before texture）」関数がイネーブルでなければ、Ｚ比較ブロック７００ａ（図５参照）がカラーのフレームバッファ７０２内への書き込みの前に、Ｚ比較および書き込みを行い、そして適用範囲マスクはＺ比較の結果によって変更されない（ただし、具体的なサブサンプリング位置についてＺ比較が必要かどうかを判断するためにはもちろん使用される）。
コピーアウトおよび垂直フィルタリングの例
１つのシーンのすべてのプリミティブが処理されかつ超サンプリングイメージが内蔵フレームバッファ（ＥＦＢ）中に上述の態様でレンダリングされると、エイリアス補正の第２フェーズ（図７、ブロック５５２参照）が以下に述べるように実行される。しかしながら、第２フェーズへ移る前に、例示の実施例のより一層良好な理解を与えるために、実施例の内蔵フレームバッファ（ＥＦＢ）の簡単な説明を行う。
内蔵フレームバッファ構成
この実施例においては、内蔵フレームバッファ（ＥＦＢ）は約２ＭＢのメモリ容量を有する。フレームバッファの最大ピクセル幅および高さは各ピクセルのサイズによって決定される。この実施例においては、次のものを含むいくつかの異なるピクセルサイズがある。
【００８２】
・４８ビットカラーおよびｚ
・９６ビット超サンプルカラーおよびＺ
フォーマットは好ましくはＡＰＩを用いて設定される。この目的のためのＡＰＩ関数の例を以下に示す。
【００８３】
【表４】
0004698052.tif 000005
【００８４】
この関数はフレームバッファのフォーマットを設定する。この関数は任意の描画動作が行われる前にコールされる。ピクセルフォーマットはこの実施例においてフレームの途中では変更されない。１６ビットのＺ値（マルチサンプルエイリアス補正モード）は圧縮されなかったり圧縮されたりする。圧縮された値はよりよい精度および範囲を与える。Ztopフラグはテクスチャマッピング前のデプス比較（Z-before-texture）を行うために使用され得る。このことによって、より少ない数のテクセルが取り出されかつフィルタリングされればよいので、テクスチャバンド幅を改善することができる。
【００８５】
内蔵フレームバッファ（ＥＦＢ）のための４８ビットフォーマットはエイリアス補正しないためのものであり、次のような特徴を有する。
【００８６】
・２４ビットカラー（アルファなしの８／８／８、もしくは６ビットアルファ付きの６／６／６／６）
・２４ビットＺ
このモードにおいて、フォーマットは６４０×５２８の最大解像度をサポートする。幅は０−６４０の間でなければならず、ＥＦＢストライド(stride)は６４０ピクセルに固定される。
【００８７】
９６ビット超サンプルフォーマットはエイリアス補正のために使用されかつ次のような特徴を有する。
【００８８】
・１６ビットカラーの３サンプル（赤の５ビット、緑の６ビット、青の５ビット、アルファなし）
・１６ビットＺ（デプス）の３サンプル
このフォーマットは６４０×２６４の最大解像度をサポートする。幅は好ましくは０−６４０の間であり、ストライドは６４０に固定される。
【００８９】
上の説明からわかるように、エイリアス補正はポリゴンエッジや交点における可視品質を向上するが、それはコストパフォーマンスおよびＺ品質をよくする。エイリアス補正は９６ビットの超サンプリングＥＦＢフォーマットを使用し、そのフォーマットは４８ビット点サンプリングピクセルの２倍のメモリを必要とする。このモードはまた、他のフォーマットにおける２４ビットではなく、Ｚバッファリングの精度を１６ビットに減じる。エイリアス補正はまたピークフィルレートを８００Ｍピクセル／秒から４００ピクセル／秒へ減じる。しかしながら、テクスチャ環境ユニット（ＴＥＶ）において１以上のステージが用いられていれば、この減少は見かけ上生じなく、この例では、２つのＴＥＶステージを用いるとフィルレートを４００Ｍピクセル／ｓに減じる。
【００９０】
或る実施例において、活性化されたエイリアス補正付きのレンダリングレートは、内蔵フレームバッファ７０２のバンド幅による制限のために、２ピクセル／クロックに落ちてしまう。しかしながら、２またはそれ以上のテクスチャがオンされれば、ピクセルクォードラプレットがピクセルエンジン７００へ送られるレートはこの実施例における２クロック毎の１ピクセルクォードラプレットより以下になるかもしくは等しくなる。この場合において、エイリアス補正をオンすることはフィルレートに影響を与えない。したがって、もし具体的なシーンがジオメトリの制限を受ければ、エイリアス補正はレンダリング性能に対して逆に影響を与えることはない。他方、もし具体的なシーンがフィルレートの制限を受けるなら、レンダリング性能は、点サンプリングモードを使用する場合に比べて、エイリアス補正を活性化することによって逆に影響を受ける。同じアプリケーションが、シーンもしくはイメージがジオメトリによる制限を受けるかによって、あるいはフィルレートによる制限を受けるかによって、もしくは具体的なシーンまたはイメージにおいて要求されているイメージ品質によって、異なるシーンや異なるイメージのためにエイリアス補正を活性化しかつ不活性化することができる。フレームベースのエイリアス補正の動的な活性化および不活性化の能力が、アプリケーションプログラマがイメージ品質と速度性能との間のトレードオフを作るのに大きな柔軟性を与える。
コピーアウト動作の例
エイリアス補正の第２フェーズは内蔵フレームバッファ（ＥＦＢ）７０２から主メモリ１１２内の表示バッファ１１３（外部フレームバッファ（ＸＦＢ））へのコピーアウト中に生じる。この実施例のためのコピーアウトパイプライン６２０が図１４に示される。
【００９１】
図１４に示すように、コピーアウトパイプライン６２０は
・エイリアス補正／デフリッカ部６２２，
・ＲＧＢ−ＹＵＶ部，および
・内蔵フレームバッファ（ＥＦＢ）７０２から外部フレームバッファ（ＸＦＢ）１１３へのデータのコピープロセス中に使用され得るＹスケーリング部
を含む。
【００９２】
この発明はエイリアス補正に向けられているが、それの第２フェーズはエイリアス補正／デフリッカリング部６２２によって実行され、このコピーパイプラインにおける他の２つの部（セクション）の簡単な説明を、実施例のより完全な理解を与えるために以下に行う。
【００９３】
輝度／クロマ（ＹＵＶ）フォーマットはＲＧＢと同じ可視品質のピクセルをストアするが、２／３のメモリがあればよい。したがって、コピー動作中においてＥＦＢにおけるＲＧＢフォーマットがＸＦＢにおけるＹＵＶフォーマットへ変換され、外部フレームバッファ（ＸＦＢ）のために使用される主メモリの量を減じる。この変換はＲＧＢ−ＹＵＶ部６２４によって行われる。
【００９４】
コピーパイプライン６２０におけるＹスケーリング部６２６はレンダリングされるイメージの垂直方向の任意のスケーリングをイネーブルする。水平スケーリングがビデオ表示中に行われる。Ｙスケール値はＡＰＩによって規定され、コピーされるラインの数を決定し、適宜のＸＦＢサイズを計算するために使用され得る。
【００９５】
図１４には図示しないが、コピーパイプライン６２０内には、たとえばエイリアス補正／デフリッカ部およびＲＧＢ−ＹＵＶ部の間に、ガンマ補正部がまた設けられる。ガンマ補正部は、目（および時々モニタ）の非直線応答をカラー強度値における直線変化へ補正するために使用される。ガンマの３つの選択肢がある（１．０，１．７および２．２のような）。デフォルトのガンマは好ましくは１．０であり、ＡＰＩにおけるGXInitコマンドに設定される。
【００９６】
コピーアウトパイプライン６２０のエイリアス補正／デフリッカリング部６２２はプログラマブルな重み付け（Ｗ０−Ｗ６）を有する７タップの垂直フィルタ６２８を適用する。サブピクセルの重み付けされた領域サンプリングがエイリアス補正のために使用される。垂直フィルタのためのサポートは３つの垂直ピクセル領域である。このフィルタのための例示のサポート領域が図１５に示される。エイリアス補正モードにおいて現在のピクセルＮについてのカラーを決定するとき、現在のピクセルの直上のピクセル（Ｎ−１）における超サンプルおよび現在のピクセルの直下のピクセル（Ｎ＋１）における超サンプルが、現在のピクセル（Ｎ）の超サンプルと同じように使用される。したがって、フラグメントの影響は１つのピクセルに限定されず、重み付けされた３ピクセル垂直フィルタを使用する他のピクセルへ影響する。
コピーアウトコマンドの例
コピー動作のＥＦＢのソースおよび宛先は例示のＡＰＩ関数を使って特定される。
【００９７】
【表５】
0004698052.tif 000006
【００９８】
この関数は内蔵フレームバッファ（ＥＦＢ）の内容を主メモリ中の表示バッファ１１３へコピーする。ここで、「コピーアウト(copy out)」は、すべての情報の単なる転送ではなく、内蔵フレームバッファの内容を読み出し、さらに処理（フィルタリング，再サンプリング，スケーリング等）して、結果的に得られたデータをどこか（たとえば、外部の点サンプリング形式のフレームバッファ）へ送ることを意味する。矩形の原点はＸ＝SrcLeft およびＹ＝SrcTopである。クリアフラグはカラーおよびｚバッファの現在のクリアカラーおよびｚ値へのクリアをイネーブルする。内蔵フレームバッファのクリアは好ましくは、コピー動作と同時に行われる。
【００９９】
図１５に示すように、実施例におけるエイリアス補正モードにおいて、ブレンドフィルタ６２８が現在のピクセルからの超サンプルのすべて、現在のピクセルの直上のピクセルからのいくつかの超サンプル、および現在のピクセルの直下のピクセルからのいくつかの超サンプルを使用する。好ましくは、２つの周囲のピクセル（すなわち、Ｎ−１およびＮ＋１）の各々内において現在のピクセルから最も遠いサンプルはフィルタリング動作においては使用しない。このフィルタのための３つのピクセルのサポートは、９つのサンプルを有し、この９つのサンプルの７つだけが、図１５に示すように、実施例におけるブレンド演算に使用される。
【０１００】
例示のエイリアス補正フィルタは、カラーが発生されているサブピクセルのすべておよび現在のピクセルの直上および直下のピクセルのいくつかの付加的なサブピクセルを取り囲む１次元（すなわち、１×２もしくは垂直）フィルタリング「アパーチャ(aperture)」を与える。図１６を参照されたい。実施例の回路はフリッカの減少のためにいずれにしても垂直方向にフィルタリングし、これは垂直エッジのためのエイリアス補正品質を２倍にする非常に安価な方法である。ノンインタレースの表示のためではあるが、大部分の看者はたぶん、よりよいエイリアス補正と引き換えにイメージの或る量のフィルタリングを犠牲にすることを望むであろう。結果的に得られた垂直フィルタ出力は外部フレームバッファ中へのコピーのために１つのスクリーンピクセルカラー値（ＲＧＢ）を与え、表示装置５６上で表示する。この垂直フィルタリング動作は、したがって、ローパスフィルタステージおよび表示装置５６の解像度において再サンプリングする再サンプラとして作用する。この具体的な実施例では、現在のピクセルＰｉｘｃの右および左に隣接するピクセルはスクリーンピクセル出力に寄与しない。しかしながら、他の実施例では、水平フィルタもしくは垂直フィルタと水平フィルタとの結合が使用され得る。例示の実施例では、水平再サンプリングは両方向における再サンプリングを提供する他の目的のために活性化される。
【０１０１】
図１７は図１５に示す機能を実現する垂直フィルタ構造の例を示す。
【０１０２】
この実施例において、各重み付け係数（Ｗ０−Ｗ６）は垂直フィルタリングされている７つのサンプルの各々に適用され、そして重み付けされたサンプルは一緒に加算（ブレンド）されて現在のスクリーンピクセルのための最終ピクセルカラー（Ｎ′）を得る。各重み付け係数（Ｗ０−Ｗ６）はこの実施例ではプログラマブルである。以下のものはこれらのプログラマブルな重み付け係数を設定するために使用可能なＡＰＩ関数の例である。
【０１０３】
【表６】
0004698052.tif 000007
【０１０４】
この関数は内蔵フレームバッファからのコピーアウト中のエイリアス補正のために垂直フィルタリング係数を設定する。このフィルタ係数は１／６４の倍数で与えられる６ビットの数である。フィルタ係数は、イメージが外部フレームバッファへコピーアウトされているとき垂直ラインに適用される。同じ係数が、それがコピーアウトされているとき（すなわち、エイリアス補正がイネーブルされていないとき）、イメージのデフリッカリングのために使用され得る。
【０１０５】
図１２は図１５のフィルタリング動作において使用するための７つの重み付け係数をストアする例示のレジスタ６３０ａおよび６３０ｂを示す。重み付け係数はプログラマブルであるが、図１１に示すマルチサンプリングの空間配置パターンで有用なエイリアス補正のためのこの垂直フィルタへの重み付けが以下に示される。
【０１０６】
【数２】
Ｗ０＝１／１２，Ｗ１＝１／６，Ｗ２＝１／６，Ｗ３＝１／６，Ｗ４＝１／６，Ｗ５＝１／６およびＷ６＝１／１２
上で述べたように、異なるフィルタの重みおよび／または構成がピクセル毎のマルチサンプルの異なる数，異なるマルチサンプル空間配置，および異なる再構成フィルタアパーチャで使用可能である。
エイリアス補正バッファ
図１７は、内蔵フレームバッファ７０２の内容を主メモリ１１５中の外部フレームバッファへコピーアウトするために使用されるエイリアス補正コピーアウトバッファリング動作を示す。この例において、内蔵フレームバッファ７０２は３２ピクセル幅×３２ピクセル高さであるタイル(tile)に組織化される。コピーアウトはタイルベースで行われる。しかしながら、図１８のシェーディング領域で示すように、コピーアウト動作は上で述べた垂直エイリアス補正フィルタ関数を実行するために、直上隣接タイルからの１ピクセルおよび直下隣接タイルからの１ピクセルを必要とする。したがって、好ましい実施例では、コピーアウト動作は３４ピクセル高さ×３２ピクセル幅のタイルを読み出すことによって行う。（垂直スケーリング能力を併有する）実施例においては、垂直ズーミングを容易にするために、コピーはまずｙ方向で行い、次いでｘ方向で行う。
【０１０７】
フルラインバッファの使用を回避するために、コピー動作はエイリアス補正（ＡＡ）バッファリングを使用し、そこでは、コピーは、３２ピクセル幅のストリップ（Ｘ軸）で行われる。この実施例のＡＡバッファリングにおけるストリップバッファのためのデータ経路が図１９のブロック図に示される。各ストリップ毎に、２つの余分なピクセルが右および左に読み出され、合計のバッファサイズが３６となる。２つのラインからのデータは以下の順で４つのバッファにストアされる。
【０１０８】
【表７】
0004698052.tif 000008
【０１０９】
好ましい実施例におけるエイリアス補正に対する他の局面は、１パスでサポートされ得る最大スクリーン解像度を６４０ピクセル×２８８ピクセルに落とすことである。もし、より高い表示解像度が要求される場合には、内蔵フレームバッファ７０２のサイズによる制限のために、シーンを通して多くのパスが実行される必要がある。各パスの最後において、イメージが主メモリ中へコピーアウトされる。たとえば、外部フレームバッファからシーン全体を最終的に表示する前に、シーンの上半分を内蔵フレームバッファにレンダリングし、シーンの上半分を外部フレームバッファの上半分へコピーアウトし、シーンの下半分を内蔵フレームバッファにレンダリングし、そしてシーンの下半分を外部フレームバッファへコピーアウトすることによって、１つのシーンは２パスでレンダリングされ得る。そのようなマルチパス動作は、シングルパス動作より遅いが、オンチップ上で必要な内蔵フレームバッファの量を減じる。メモリは将来的にはより安価になるので、高解像度のイメージをシングルパスでレンダリングしかつコピーアウトするように、追加的な内蔵フレームバッファメモリ（たとえば４ＭＢ，８ＭＢあるいはそれ以上）をチップ上へ組み込むことも可能である。
コピーアウト中のデフリッカリングフィルタの例
同じ垂直フィルタがエイリアス補正なし(non-anti-aliasing)モードにおけるコピーアウト中に点サンプリングピクセルを用いるデフリッカリング機能を達成するために使用できる。デフリッカリングは、典型的には、２つの問題を解決するために使用される。（１）インタレース表示のための細い１ピクセル高の水平ラインのフリッカを除去する（１ピクセル高さの水平ラインはＴＶのインタレースが他のフィールド毎にこのラインを表示するとき、３０Ｈｚでフリッカする）。（２）たとえばフレームバッファ中へ６０Ｈｚで４８０ラインをレンダリングし、インタレース表示のために２４０ラインにデフリッカリングすることによって簡単なエイリアス補正を提供する。これが基本的な２サンプル超サンプリングである。
【０１１０】
エイリアス補正なしモード（デフリッカリングモード）の実施例において、サンプリングパターンはプログラマブルではない。したがって、この例においては、ハードウェアはサンプリング位置としてピクセルの中心だけを使用する。そのために、プログラマブルな超サンプリング位置はこのモードでは無視される。デフリッカリングのためのブレンドフィルタ６２８ａの例が図２０に示される。重み付け係数（ｃｏｅｆｆ０−ｃｏｅｆｆ６）はプログラマブルであり、図１５に示すエイリアス補正フィルタの重み付け（Ｗ０−Ｗ６）に対応する。図２０に示すように、デフリッカリングモードにおける垂直フィルタ６２８ａは現在のピクセルからの３つの入力（中心だけ）および２つの垂直隣接ピクセル（Ｎ−１およびＮ＋１）の各々からの２つの入力（中心だけ）を使用し、それによってフィルタリング動作のために７つの値を得る。プログラマブルな重み付け係数（ｃｏｅｆｆ０−ｃｏｅｆｆ６）はその７つのサンプルに与えられ、結果が加算され、最終のピクセルカラー（Ｎ′）が得られる。デフリッカリングのための係数ｃｏｅｆｆ０およびｃｏｅｆｆ１は、好ましくは、同じ値に設定され、ｃｏｅｆｆ２，ｃｏｅｆｆ３およびｃｏｅｆｆ４は好ましくは同じ値に設定され、そしてｃｏｅｆｆ５およびｃｏｅｆｆ６が好ましくは同じ値に設定される。これらの値はエイリアス補正フィルタ６２８について上で述べた係数Ｗ０−Ｗ６と同じ方法で規定することができる。Ｎ′をＮと同じにするならば、ｃｏｅｆｆ０，ｃｏｅｆｆ１，ｃｏｅｆｆ５およびｃｏｅｆｆ６を０に設定し、残りの重み（ｃｏｅｆｆ２，ｃｏｅｆｆ３およびｃｏｅｆｆ４）をそれらの合計で１に設定すればよい。このことによって、フィルタが、ピクセルＮにおける１つのサンプルの値と同じであるＮ′の値を出力することができる。
【０１１１】
各ピクセル中の点サンプルの位置はこの発明の他の実施例においてはプログラマブルであることに注意されたい。換言すれば、この発明は、点サンプリング位置としてピクセルの中心を用いるものに限定されるものではない。この位置はハードウェアによって設定されもしくはプログラマブルであり、それによって超サンプリングもしくはエイリアス補正モードに関して上で述べたように、隣接ピクセル間の具体的なサンプリングパターンを構成するために１つのピクセルから次へ変更することができる。たとえば、点サンプリング位置についての具体的なパターンはクォードラプレットベースで設定され得て、さもなければ、この点サンプリングの実施例において達成されるエイリアス補正を改善する。エイリアス補正の実施例について上で詳細に説明したように、再構成フィルタ（デフリッカフィルタ）の大きさは、エイリアス補正改善の目的のために、１×１より垂直方向水平方向あるいは両方向において大きくすることができる。したがって、具体的な点サンプリング位置パターン（すなわち、ピクセル間のジッタリング）および隣接ピクセルからのいくつかの点サンプルを共用する具体的なフィルタ構成を使用することによって、この発明に従ってよりよいエイリアス補正を達成することができる。
【０１１２】
上で述べたように、デフリッカリングはオプションとして行われ、フレームをフィールドに変換する。好ましくは、デフリッカリングフィールドおよびＡＡフィールドは共用される。ＡＡデータ経路（図１８参照）で使用される４つのストリップバッファはクォードラプレットストリップをストアするためにまた使用される。デフリッカリングバッファのためのデータ経路の例示的なブロック図が図２１に示される。このシフタ部６３２ａは３つの別々のラインからの３つのＲＧＢピクセルデータをＡＡフィルタに与える。これはプログラマブルな係数を有する３タップフィルタである。
互換性のある他の実施例
上述のシステム５０は上で述べた家庭用ビデオゲームコンソールの構成以外としても実現できる。たとえば、或るものは、システム５０をエミュレートする異なる構成を有するプラットフォームもしくはそれと同等のものにおいて、システム５０のために書かれたグラフィクスアプリケーションや他のソフトウェアを実行させることができる。もし、他のプラットフォームがシステム５０のいくつかのもしくはすべてのハードウェアおよびソフトウェアリソースをエミュレートしシミュレートしおよび／または提供することができれば、その他のプラットフォームはそのソフトウェアを成功裏に実行することができる。
【０１１３】
一例として、エミュレータがシステム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供できる。そのエミュレータシステムは、それのためにアプリケーションソフトウェアが書かれているシステムのいくつかのもしくはすべてのハードウェアおよび／またはソフトウェアコンポーネンツをエミュレートしもしくはシミュレートするソフトウェアおよび／またはハードウェアコンポーネンツを含む。たとえば、エミュレータシステムはパソコンのような汎用ディジタルコンピュータを含み、それはシステム５０のハードウェアおよび／またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行する。上述のオーディオシステムのＤＳＰ処理がパソコンによってエミュレートされ得る。
【０１１４】
或る汎用ディジタルコンピュータ（たとえばＩＢＭやマッキントッシュのパソコンおよびそれらの同等物）は、ダイレクトＸ(DirectX)または他の標準的な３ＤグラフィクスコマンドＡＰＩｓに従った３Ｄグラフィクスパイプラインを提供する３Ｄグラフィクスカードを備える。それらはまた、音声コマンドの標準的なセットに基づいて高品質のステレオ音声を提供するステレオ音声カードを備える。エミュレータソフトウェアを実行するそのようなマルチメディアのハードウェアを備えるパソコンは、システム５０のグラフィクスおよび音声性能とほぼ等しい十分な性能を有する。エミュレータソフトウェアはパソコンプラットフォーム上のハードウェアリソースを制御して、それのためにゲームプログラマがゲームソフトウェアを書いた家庭用ビデオゲームコンソールプラットフォームの処理，３Ｄグラフィクス，音声，周辺および他の能力をシミュレートする。
【０１１５】
図２２はホストプラットフォーム１２０１，エミュレータコンポーネント１３０３および記憶媒体６２上のゲームソフトウェア実行可能バイナリ映像を用いる全体のエミュレーション処理を図解する。ホスト１２０１は、たとえばパソコン，ビデオゲームコンソールあるいは十分な計算力を有する任意の他のプラットフォームのような汎用または特定目的ディジタル計算装置である。エミュレータ１３０３はそのホストプラットフォーム１２０１上で走るソフトウェアおよび／またはハードウェアであり、記憶媒体６２からのコマンド，データおよび他の情報のそのホスト１２０１によって実行可能な形態へのリアルタイム変換を行う。たとえば、エミュレータ１３０３は記憶媒体６２からシステム５０によって実行されるように意図された「ソース」であるバイナリ映像プログラム命令を取り込み、これらのプログラム命令をホスト１２０１によって実行されもしくは処理され得るターゲットとなる形態に変換する。
【０１１６】
一例として、ソフトウェアがＩＢＭパワーＰＣまたは他の特定のプロセサを用いるプラットフォーム上での実行のために書かれかつホスト１２０１が異なる（たとえばインテル）プロセサを用いるパソコンである場合、エミュレータ１２０３は記憶媒体１３０５からの１つのもしくは一連のバイナリ映像プログラム命令を取り込み、これらのプログラム命令を１つまたはそれ以上の同等のインテルのバイナリ映像プログラム命令に変換する。エミュレータ１２０３はまたグラフィクス／オーディオプロセサ１１４によって処理されるように意図されたグラフィクスコマンドおよびオーディオコマンドを取り込みかつ／あるいは生成し、そしてホスト１２０１上で利用可能なハードウェアおよび／またはソフトウェアグラフィクス／オーディオ処理リソースによって処理され得る形態にこれらのコマンドを変換する。一例として、エミュレータ１３０３はホスト１２０１の特別なグラフィクスおよび／または音声ハードウェア（たとえば標準的なダイレクトＸ，オープンＧＬおよび／または音声ＡＰＩｓ）によって処理され得るコマンドにこれらのコマンドを変換する。
【０１１７】
上で述べたビデオゲームシステムのいくつかのもしくはすべての特徴を与えるために用いられるエミュレータ１３０３は、また、エミュレータを使ってゲームを走らせている種々のオプションおよびスクリーンモードの選択を簡単化しもしくは自動化するグラフィックユーザインタフェース（ＧＵＩ）を備える。一例において、そのようなエミュレータ１３０３はさらにそのソフトウェアが本来的に目的とされたホストプラットフォームに比べてより増強された機能性を含むこともできる。
【０１１８】
図２３はエミュレータ１３０３で用いるに適したエミュレーションホストシステム１２０１を図解的に示す。このシステム１２０１は処理ユニット１２０３およびシステムメモリ１２０５を含む。システムバス１２０７がシステムメモリ１２０５を含む種々のシステムコンポーネンツを処理ユニット１２０３に結合する。システムバス１２０７は多様なバスアーキテクチャのいずれかを用いるメモリバスもしくはメモリコントローラ，周辺バスおよびローカルバスを含むいくつかのタイプのバス構造の任意のものである。システムメモリ１２０７はＲＯＭ１２５２およびＲＡＭ１２５４を含む。起動中においてのようにパソコンシステム１２０１中のエレメント（要素）間に情報を伝送する手助けをする基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）１２５６がＲＯＭ１２５２中にストアされる。システム１２０１はさらに種々のドライブおよび関連のコンピュータ読出可能な媒体を含む。ハードディスクドライブ１２０９が（典型的には固定の）磁気ハードディスク１２１１から読み出しそれへ書き込む。付加的な（たぶんオプションとしての）磁気ディスクドライブ１２１３が着脱可能な「フロッピィ」または他の磁気ディスク１２５１から読み出しかつそれへ書き込む。光ディスクドライブ１２１７はＣＤ−ＲＯＭあるいは他の光学媒体のような着脱自在な光ディスク１２１９から読み出しかつそれへ書き込む。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、ハードディスクドライブインタフェース１２２１および光ディスクドライブインタフェース１２２５によって、システムバス１２０７にそれぞれ接続される。これらのドライブおよびその関連するコンピュータ読出可能な媒体は、パソコンシステム１２０１のためのコンピュータ読出可能な命令，データ構造，プログラムモジュール，ゲームプログラムおよび他のデータの不揮発性の記憶媒体を提供する。他の構成では、コンピュータによってアクセス可能なデータをストアすることができる他のタイプのコンピュータ読出可能な媒体（たとえば磁気カセット，フラッシュメモリカード，ディジタルビデオディスク，ベルヌーイカートリッジ，ＲＡＭ，ＲＯＭあるいはその他のもの）がまた使用できる。
【０１１９】
エミュレータ１３０３を含む多数のプログラムモジュールがハードディスク１２１１，着脱可能な磁気ディスク１２１５，光ディスク１２１９および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４にストアされ得る。このようなプログラムモジュールはグラフィクス／音声ＡＰＩｓ，１つ以上のアプリケーションプログラム，他のプログラムモジュール，プログラムデータおよびゲームデータを提供するオペレーティングシステム（ＯＳ）を含む。ユーザは、キーボード１２２７，ポインティングデバイス１２２９，マイクロフォン，ジョイスティック，ゲームコントローラ，衛星アンテナ(satellite dish)，スキャナあるいはその他のもののような入力デバイスを通して、パソコンシステム１２０１にコマンドおよび情報を入力することができる。これらのそして他の入力デバイスは、システムバス１２０７に結合されたシリアルポートインタフェース１２３１を通して処理ユニット１２０３に接続され得るが、パラレルポート，ゲームポートファイヤワイヤバス(Fire Wire)もしくはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースによって接続されてもよい。モニタまたは他のタイプの表示デバイスがまたビデオアダプタ１２３５のようなインタフェースを介してシステムバス１２０７に接続される。
【０１２０】
システム１２０１はモデム１１５４またはインターネットのようなネットワーク１１５２を通しての通信を確立するための他のネットワークインタフェース手段を含む。内部もしくは外付けであってよいモデム１１５４はシリアルポートインタフェース１２３１を介してシステムバス１２３に接続される。システム１２０１がローカルエリアネットワーク１１５８を介して遠隔コンピュータ装置１１５０（たとえば他のシステム１２０１）と通信するのを許容するために、ネットワークインタフェース１１５６がまた設けられてもよい（もしくはそのような通信はダイヤルアップもしくは他の通信手段のようなワイドエリアネットワーク１１５２もしくは他の通信経路を介してもよい）。システム１２０１はプリンタのような周辺出力装置および他の標準的な周辺装置を含む。
【０１２１】
一例では、ビデオアダプタ１２３５は、マイクロソフト(Microsoft)のダイレクトＸ７．０、または他のバージョンのような標準的な３Ｄグラフィクスアプリケーションプログラマインタフェースに基づいて発行された３Ｄグラフィクスコマンドに応答して、高速の３Ｄグラフィクスレンダリングを提供する３Ｄグラフィクスパイプラインチップセットを含んでもよい。１組のスピーカ１２３７はまた、バス１２０７によって与えられる音声コマンドに基づいて高品質ステレオ音声を生成するハードウェアおよび埋め込みソフトウェアを提供する従来の「音声カード」のような音声生成インタフェースを介して、システムバス１２０７に接続される。これらのハードウェア能力によって記憶媒体１３０５中にストアされているソフトウェアを再生するためにシステム１２０１に十分なグラフィクスおよび音声の速度性能を与えることができる。
【０１２２】
最も現実的かつ好ましい実施例であると現在考えられているものに関連してこの発明が説明されたが、この発明は開示された実施例に限定されるものではなく、逆に、特許請求の範囲内に含まれる種々の変形例や等価的な構成をカバーするように意図されていることを理解されたい。
【図面の簡単な説明】
【図１】図１はインタラクティブコンピュータグラフィクスシステムの実施例を示す全体図である。
【図２】図２は図１実施例のコンピュータグラフィクスシステムのブロック図である。
【図３】図３は図２に示す実施例のグラフィクス／オーディオプロセサのブロック図である。
【図４】図４は図３に示す実施例の３Ｄグラフィクスプロセサのブロック図である。
【図５】図４のグラフィクス／オーディオプロセサの例示的な論理フロー図である。
【図６】図６は実施例のエイリアス補正プロセスを示す。
【図７】図７はこの発明のエイリアス補正方法を説明するフロー図である。
【図８】図８はプリミティブおよび超サンプルピクセルクォードラプレットの例を示す。
【図９】図９はクォードラプレットのための例示的なサンプリングパターンを示す。
【図１０】図１０は超サンプル位置が規定され得る１２×１２のサブピクセルグリッド中に各ピクセルが如何に分割されるかを示す。
【図１１】図１１は再構成フィルタのための好ましい超サンプリングパターンを示す。
【図１２】図１２はサンプリング位置およびフィルタ係数を設定するための例示的な制御レジスタを示す。
【図１３】図１３は図８に示す形式のピクセルクォードラプレットのための例示的な超サンプリング適用範囲マスクを示す。
【図１４】図１４は内蔵フレームバッファおよび外部フレームバッファ間における図３のグラフィクスプロセサのための例示的なコピーアウトパイプラインを示す。
【図１５】図１５はこの発明に従ったエイリアス補正のために使用される垂直フィルタブレンド用プログラマブル７タップフィルタを示す。
【図１６】図１６は例示的な垂直フィルタアパーチャを示す。
【図１７】図１７は例示的な垂直フィルタ構成を示す。
【図１８】図１８は例示的なエイリアス補正コピーアウトバッファ動作を示す。
【図１９】図１９はこの発明の好ましい実施例に従って使用されるエイリアス補正バッファのブロック図を示す。
【図２０】図２０はエイリアス補正なしモードにおいて使用されかつこの発明に従ってフリッカリングを低減する図１５のフィルタを示す。
【図２１】図２１はこの発明の好ましい実施例に従って使用されるデフリッカリングバッファのブロック図を示す。
【図２２】図２２は別の互換性のある実施例を示す。
【図２３】図２３は別の互換性のある実施例を示す。
【符号の説明】
５０  …インタラクティブ３Ｄコンピュータグラフィクスシステム
１１０  …主プロセサ
１１２  …主メモリ
１１４  …グラフィクス／オーディオプロセサ
１８０  …グラフィクスパイプライン
５００  …テクスチャユニット
６００  …テクスチャ環境ユニット
６１４  …適用範囲マスク
７０２  …内蔵フレームバッファ
【図１】
0004698052.tif 000009
【図２】
0004698052.tif 000010
【図３】
0004698052.tif 000011
【図４】
0004698052.tif 000012
【図５】
0004698052.tif 000013
【図６】
0004698052.tif 000014
【図７】
0004698052.tif 000015
【図８】
0004698052.tif 000016
【図９】
0004698052.tif 000017
【図１０】
0004698052.tif 000018
【図１１】
0004698052.tif 000019
【図１２】
0004698052.tif 000020
【図１３】
0004698052.tif 000021
【図１４】
0004698052.tif 000022
【図１５】
0004698052.tif 000023
【図１６】
0004698052.tif 000024
【図１７】
0004698052.tif 000025
【図１８】
0004698052.tif 000026
【図１９】
0004698052.tif 000027
【図２０】
0004698052.tif 000028
【図２１】
0004698052.tif 000029
【図２２】
0004698052.tif 000030
【図２３】
0004698052.tif 000031