(57)【要約】      （修正有）【課題】グラフィックス処理システムにおいてより高いレベルのアンチエイリアシングをサポートするための改善された技術を提供する。【解決手段】第１のレベルのアンチエイリアシングをネイティブでサポートするように構成されたグラフィックス処理パイプライン１において第２のより高いレベルのアンチエイリアシングを実行するときに、グラフィックス処理パイプライン１のラスタライズ段階３と、初期Ｚ（深度）およびステンシルテスト段階４と、後期Ｚ（深度）およびステンシルテスト段階７と、ブレンディング段階９と、ダウンサンプリングおよびライトバック（マルチサンプル解決）段階１１が、各グラフィックスフラグメントまたはピクセルを複数の処理パスで処理し、フラグメントシェーダ６は、各グラフィックスフラグメントが表すすべてのサンプリング点を並列に処理する処理パスでフラグメントを処理するように構成される。【選択図】図８
2013137756.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一部の処理段階がより低いレベルのマルチサンプリングによるアンチエイリアシングをネイティブでサポートするように構成される複数の処理段階を有するグラフィックス処理パイプラインにおいてより高いレベルのマルチサンプリングによるアンチエイリアシングを実行する方法であって、
前記より高いレベルのマルチサンプリングによるアンチエイリアシングを実行するときに、
前記グラフィックス処理パイプラインのラスタライザが、前記より高いレベルのアンチエイリアシングのためのサンプリング点の組をそれぞれが表すグラフィックスフラグメントを生成し、前記フラグメントを処理のために前記グラフィックス処理パイプラインのより後の段階に渡すステップと、
前記グラフィックス処理パイプラインの前記より後の処理段階のうちの1つまたは複数の処理段階が、各グラフィックスフラグメントが表すすべての前記サンプリング点を並列に処理する処理パスにおいて、処理のために前記1つまたは複数の処理段階が受信する前記フラグメントを処理するステップと、
前記グラフィックス処理パイプラインの1つまたは複数のその他のより後の処理段階が、1つまたは複数の処理パスにおいて、処理のために前記1つまたは複数のその他のより後の処理段階が受信する各グラフィックスフラグメントを処理するステップであって、それぞれのそのような処理パスが、前記フラグメントが表すサンプリング点の前記組の前記サンプリング点のサブセットを処理する、ステップとを含む、方法。
【請求項２】
各グラフィックスフラグメントを、前記フラグメントが対応するサンプリング点の前記組の中の前記サンプリング点のうちのどのサンプリング点がサンプリングされているプリミティブによってカバーされるかを示すカバレッジマスクと関連付けるステップを含み、
前記ラスタライザによって生成された各フラグメントが、実行され得る最も高いレベルのアンチエイリアシングに対応するサンプリング点のカバレッジマスクに関連付けられ、前記方法が、
より低いレベルのアンチエイリアシングを実行するときに前記カバレッジマスク内の適切なビットを消去するステップをさらに含む請求項1に記載の方法。
【請求項３】
前記ラスタライザが、前記より高いレベルのアンチエイリアシングを実行するときに、各パスが生成されるべき各フラグメントに関して生成されるべきサンプリング位置の組のサブセットをテストする複数のラスタライズパスを前記フラグメントに対して実行し、次に、前記ラスタライズパスの結果を組み合わせて、前記グラフィックス処理パイプラインの前記より後の段階に渡される前記フラグメントを生成する請求項1または2に記載の方法。
【請求項４】
前記より高いレベルのアンチエイリアシングを実行するときに、各グラフィックスフラグメントが表すすべての前記サンプリング点を並列に処理する処理パスにおいて、前記グラフィックス処理パイプラインの前記より後の処理段階が処理のために受信する前記フラグメントを処理する前記より後の処理段階が、前記グラフィックス処理パイプラインのフラグメントシェーダおよびvaryingインターポレータのうちの1つまたは複数を含む請求項1から3のいずれか一項に記載の方法。
【請求項５】
より高いレベルのアンチエイリアシングを実行するときに、各フラグメントを、各パスが前記フラグメントが表す前記サンプリング点のサブセットを処理する1つまたは複数の処理パスにかける前記より後のグラフィックス処理段階が、前記グラフィックス処理パイプラインのブレンダおよび深度テスタのうちの1つまたは複数を含む請求項1から4のいずれか一項に記載の方法。
【請求項６】
より高いレベルのアンチエイリアシングを実行するときに、各パスが各フラグメントに関連する前記サンプリング位置のサブセットを処理する1つまたは複数のパスで前記フラグメントを処理するように構成された前記グラフィックス処理段階のうちの1つまたは複数のグラフィックス処理段階が、前記サンプリング位置のうちのいずれも実際にカバーされないフラグメントに関する前記サンプリング位置のサブセットのための処理パスを省略および/または中止することができるように構成される請求項1から5のいずれか一項に記載の方法。
【請求項７】
より高いレベルのアンチエイリアシングを実行するときに、各パスが各フラグメントに関連する前記サンプリング位置のサブセットを処理する1つまたは複数のパスで前記フラグメントを処理するように構成される前記グラフィックス処理段階のうちの1つまたは複数のグラフィックス処理段階が、より高いレベルのアンチエイリアシングを実行するときに、前記1つまたは複数のグラフィックス処理段階が前記グラフィックス処理パイプラインの前の段階から処理のために受信する入力フラグメントを、それぞれが前記入力フラグメントに関連する前記サンプリング点の異なるサブセットを表す複数のサブフラグメントに分割し、次に、前記サブフラグメントを互いに独立して処理し、次いで、処理されたサブフラグメントを、前記グラフィックス処理パイプラインの次の段階に渡すための出力フラグメントへと再び組み合わせるステップを含む請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記グラフィックス処理パイプラインがタイルベースのレンダリングパイプラインであり、前記方法が、より高いレベルのアンチエイリアシングを実行するときに、タイルバッファのサイズを増やすことを必要とせずにより高いレベルのアンチエイリアシングが実行されることを可能にするために、レンダリングされるべき各タイルを、それぞれがレンダリングされるべきタイルの一部を表す複数のサブタイルとして処理するステップを含む請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記グラフィックス処理パイプラインが、レンダリングされたサンプル値をメインメモリに書き出されるべき出力ピクセル値に解決するためのダウンサンプリング段階を含み、前記方法が、
より高いレベルのアンチエイリアシングを実行するときに、ダウンサンプリングオペレーションを、生成されるべき所与の出力ピクセル値に対して、前記ピクセルの異なる部分に関して複数回実行し、次に、結果を組み合わせて、前記メインメモリに書き戻されるべき出力ピクセル値全体をもたらすステップをさらに含む請求項1から8のいずれか一項に記載の方法。
【請求項１０】
所与のレベルのアンチエイリアシングのためのサンプリング点の組をそれぞれが表すグラフィックスフラグメントを生成し、前記フラグメントを処理のためにグラフィックス処理パイプラインのより後の段階に渡すラスタライザと、
前記ラスタライザの後の1つまたは複数の処理段階であって、各グラフィックスフラグメントが表すすべての前記サンプリング点を並列に処理する処理パスにおいて、処理のために1つまたは複数の処理段階が受信する前記フラグメントを処理する、1つまたは複数の処理段階と、
前記ラスタライザの後の1つまたは複数のその他の処理段階であって、前記所与のレベルのアンチエイリアシングよりも低いレベルのマルチサンプリングによるアンチエイリアシングをネイティブでサポートするように構成され、1つまたは複数の処理パスにおいて、処理のために1つまたは複数のその他の処理段階が受信する前記所与のレベルのアンチエイリアシングのためのサンプリング点の組を表す各グラフィックスフラグメントを処理するように構成され、それぞれのそのような処理パスが、前記フラグメントが表すサンプリング点の前記組の前記サンプリング点のサブセットを処理する、1つまたは複数のその他の処理段階とを含むグラフィックス処理パイプライン。
【請求項１１】
処理されるべきサンプリング点の組をそれぞれが表すグラフィックスフラグメントを生成し、前記フラグメントを処理のためにグラフィックス処理パイプラインのより後の段階に渡すラスタライザと、
前記ラスタライザの後の1つまたは複数の処理段階であって、第1のレベルのマルチサンプリングによるアンチエイリアシングプロセスを実行するときに、各グラフィックスフラグメントが表すすべての前記サンプリング点を並列に処理する処理パスにおいて、処理のために1つまたは複数の処理段階が受信する前記フラグメントを処理し、より高いレベルのアンチエイリアシングプロセスを実行するときに、各グラフィックスフラグメントが表すすべての前記サンプリング点を並列に処理する処理パスにおいて、処理のために1つまたは複数の処理段階が受信する前記フラグメントを処理する、1つまたは複数の処理段階と、
前記ラスタライザの後の1つまたは複数のその他の処理段階であって、前記第1のレベルのマルチサンプリングによるアンチエイリアシングプロセスを実行するときに、各グラフィックスフラグメントが表すすべての前記サンプリング点を並列に処理する処理パスにおいて、処理のために1つまたは複数のその他の処理段階が受信する前記フラグメントを処理し、しかし、前記より高いレベルのアンチエイリアシングプロセスを実行するときは、1つまたは複数の処理パスにおいて、処理のために1つまたは複数のその他の処理段階が受信する各グラフィックスフラグメントを処理し、それぞれのそのような処理パスが、前記フラグメントが表すサンプリング点の前記組の前記サンプリング点のサブセットを処理する、1つまたは複数のその他の処理段階とを含むグラフィックス処理パイプライン。
【請求項１２】
前記ラスタライザが、前記ラスタライザによって生成された各フラグメントを、前記フラグメントが対応するサンプリング点の前記組の中の前記サンプリング点のうちのどのサンプリング点がサンプリングされているプリミティブによってカバーされるかを示す、実行され得る最も高いレベルのアンチエイリアシングに対応するサンプリング点のカバレッジマスクに関連付け、より低いレベルのアンチエイリアシングを実行するときに、前記カバレッジマスク内の適切なビットを消去するように構成される請求項10または11に記載のグラフィックス処理パイプライン。
【請求項１３】
前記ラスタライザが、前記より高いレベルのアンチエイリアシングを実行するときに、各パスが生成されるべき各フラグメントに関して生成されるべきサンプリング位置の組のサブセットをテストする複数のラスタライズパスを前記フラグメントに対して実行し、次に、前記ラスタライズパスの結果を組み合わせて、前記グラフィックス処理パイプラインの前記より後の段階に渡される前記フラグメントを生成するように構成される請求項10から12のいずれか一項に記載のグラフィックス処理パイプライン。
【請求項１４】
前記より高いレベルのアンチエイリアシングを実行するときに、各グラフィックスフラグメントが表すすべての前記サンプリング点を並列に処理する処理パスにおいて、前記グラフィックス処理パイプラインの前記より後の処理段階が処理のために受信する前記フラグメントを処理する前記より後の処理段階が、前記グラフィックス処理パイプラインのフラグメントシェーダおよびvaryingインターポレータのうちの1つまたは複数を含む請求項10から13のいずれか一項に記載のグラフィックス処理パイプライン。
【請求項１５】
より高いレベルのアンチエイリアシングを実行するときに、各フラグメントを、各パスが前記フラグメントが表す前記サンプリング点のサブセットを処理する1つまたは複数の処理パスにかける前記より後のグラフィックス処理段階が、前記グラフィックス処理パイプラインのブレンダおよび深度テスタのうちの1つまたは複数を含む請求項10から14のいずれか一項に記載のグラフィックス処理パイプライン。
【請求項１６】
より高いレベルのアンチエイリアシングを実行するときに、各パスが各フラグメントに関連する前記サンプリング位置のサブセットを処理する1つまたは複数のパスで前記フラグメントを処理するように構成された前記グラフィックス処理段階のうちの1つまたは複数のグラフィックス処理段階が、前記サンプリング位置のうちのいずれも実際にカバーされないフラグメントに関する前記サンプリング位置のサブセットのための処理パスを省略および/または中止することができるように構成される請求項10から15のいずれか一項に記載のグラフィックス処理パイプライン。
【請求項１７】
より高いレベルのアンチエイリアシングを実行するときに、各パスが各フラグメントに関連する前記サンプリング位置のサブセットを処理する1つまたは複数のパスで前記フラグメントを処理するように構成される前記グラフィックス処理段階のうちの1つまたは複数のグラフィックス処理段階が、前記1つまたは複数のグラフィックス処理段階が前記グラフィックス処理パイプラインの前の段階から処理のために受信する入力フラグメントを、それぞれが前記入力フラグメントに関連する前記サンプリング点の異なるサブセットを表す複数のサブフラグメントに分割し、次に、前記サブフラグメントを互いに独立して処理し、次いで、処理されたサブフラグメントを、前記グラフィックス処理パイプラインの次の段階に渡すための出力フラグメントへと再び組み合わせることができるように構成される請求項10から16のいずれか一項に記載のグラフィックス処理パイプライン。
【請求項１８】
前記グラフィックス処理パイプラインがタイルベースのレンダリングパイプラインであり、前記グラフィックス処理パイプラインが、より高いレベルのアンチエイリアシングを実行するときに、タイルバッファのサイズを増やすことを必要とせずにより高いレベルのアンチエイリアシングが実行されることを可能にするために、レンダリングされるべき各タイルを、それぞれがレンダリングされるべきタイルの一部を表す複数のサブタイルとして処理するように構成される請求項10から17のいずれか一項に記載のグラフィックス処理パイプライン。
【請求項１９】
前記グラフィックス処理パイプラインが、レンダリングされたサンプル値をメインメモリに書き出されるべき出力ピクセル値に解決するためのダウンサンプリング段階を含み、
前記ダウンサンプリング段階が、より高いレベルのアンチエイリアシングを実行するときに、ダウンサンプリングオペレーションを、生成されるべき所与の出力ピクセル値に対して、前記ピクセルの異なる部分に関して複数回実行し、次に、結果を組み合わせて、前記メインメモリに書き戻されるべき出力ピクセル値全体をもたらすように構成される請求項10から18のいずれか一項に記載のグラフィックス処理パイプライン。
【請求項２０】
プログラム要素がデータ処理手段において実行されるときに請求項1から9のいずれか一項に記載の方法を実行するためのコンピュータソフトウェアコードの部分を含むコンピュータプログラム要素。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスの処理に関し、具体的には、コンピュータグラフィックスを処理するときにアンチエイリアシングを実行する方法およびアンチエイリアシングを実行するための装置に関する。
【背景技術】
【０００２】
当技術分野で知られているように、通常、グラフィックスの処理は、最初に、表示されるべきフレームなどの生成されるべき出力をいくつかの同様の基本的構成要素(いわゆる「プリミティブ」)に分割して、グラフィックス処理のオペレーションがより容易に実行されることを可能にすることによって行われる。通常、これらの「プリミティブ」は、三角形などの単純なポリゴンの形態である。
【０００３】
通常、グラフィックスプリミティブは、グラフィックスの出力を必要とするアプリケーション(例えば、ゲーム)から受信されたグラフィックス描画命令(要求)を用いてグラフィックス処理システムのアプリケーションプログラムインターフェースによって生成される。
【０００４】
通常、各プリミティブは、この段階で、一組の頂点によって定義され、一組の頂点として表される。プリミティブの各頂点は、その頂点を表現する一組のデータ(位置、色、テクスチャ、およびその他の属性データなど)をその頂点に関連付ける。次いで、このデータが、例えば、グラフィックス処理システムの所望の出力を生成するために頂点(頂点が関連するプリミティブ)をラスタライズおよびレンダリングするときに使用される。
【０００５】
プリミティブおよびそれらのプリミティブの頂点が生成され、定義されると、それらは、例えば、フレームを表示するためにグラフィックス処理システムによって処理され得る。
【０００６】
基本的に、このプロセスは、処理されるべき出力領域をカバーするサンプリング点の配列のどのサンプリング点がプリミティブによってカバーされるかを判定することと、各サンプリング点の外観がそのサンプリング点で(例えば、そのサンプリング点の色などの点で)プリミティブを表現する必要があるはずであることを判定することとを含む。これらの処理は、通例、それぞれ、ラスタライズおよびレンダリングと呼ばれる。
【０００７】
ラスタライズプロセスは、プリミティブのために使用されるべきサンプル位置(すなわち、出力、例えば、表示されるべきシーン内でプリミティブを表現するために使用されるべきサンプル点の(x, y)位置)を決定する。通常、これは、プリミティブの頂点の位置を用いて行われる。
【０００８】
次いで、レンダリングプロセスが、サンプル点でプリミティブを表現するために必要な赤、緑、および青(RGB)色値、ならびに「アルファ」(透明度)値などのデータを導出する(すなわち、各サンプル点をシェーディングする)。これは、当技術分野で知られているように、テクスチャを適用すること、サンプル点のデータ値をブレンディングすることなどを含み得る。
【０００９】
(グラフィックスの文献において、用語「ラスタライズ」は、サンプル位置へのプリミティブの変換とレンダリングの両方を意味するように使用されることがある。しかし、本明細書においては、「ラスタライズ」は、プリミティブデータをサンプリング点のアドレスに変換することのみを指すために使用される。)
【００１０】
通常、これらの処理は、1つまたは複数のサンプリング点の組をテストし、次に、対象の(テストされている)プリミティブの中にある(プリミティブによってカバーされる)サンプル点を含むことが分かったサンプリング点の各組に関して、グラフィックス処理のオペレーション(レンダリングなど)が実行される「フラグメント」と通常呼ばれる離散的なグラフィカルなエンティティを生成することによって行われる。したがって、カバーされるサンプリング点が、対象のサンプリング点でプリミティブをレンダリングするために使用されるフラグメントとして実際に処理される。「フラグメント」は、レンダリングプロセス(レンダリングパイプライン)を経るグラフィカルなエンティティである。生成され、処理される各フラグメントは、グラフィックス処理システムがどのように構成されているかに応じて、例えば、単一のサンプリング点を表すか、または複数のサンプリング点の組を表す可能性がある。
【００１１】
(したがって、「フラグメント」は、実質的に、プリミティブの所与の出力空間のサンプル点に補間される一組のプリミティブデータである(そのような一組のプリミティブデータをそのフラグメントに関連付ける)。フラグメントは、対象のサンプル点(フラグメントの位置)でプリミティブをシェーディングするために必要とされるプリミティブごとのおよびその他の状態データも含み得る。概して、各グラフィックスフラグメントは、出力(例えば、出力フレーム)の「ピクセル」と同じサイズおよび位置である可能性がある(その理由は、ピクセルが最終的な表示において単一(singularity)であるので、グラフィックスプロセッサが操作(レンダリング)する「フラグメント」と画面のピクセルの間に1対1のマッピングが存在し得るからである)。しかし、例えば、ダウンサンプリングなどの特定の形態の後処理が最終的な画像を表示する前にレンダリングされた画像に対して行われる場合、フラグメントと画面のピクセルの間に1対1の対応が存在しない場合があり得る。)
【００１２】
(例えば、所与の位置の異なる重なり合うプリミティブからの複数のフラグメントは(例えば、透明度および/またはブレンディングが原因で)互いに影響し合う可能性があるので、最終的なピクセルの出力は、そのピクセル位置の複数のまたはすべてのフラグメントに依存する可能性がある場合もある。)
【００１３】
(同様に、サンプリング点と画面のピクセルの間に1対1の対応が存在し得るが、より典型的には、最終的な画像を表示するために出力ピクセル値を生成するために、レンダリングされたサンプル値に対してダウンサンプリングが実行され得るので、サンプリング点と画面のピクセルの間に1対1の対応が存在しない可能性がある。同じように、例えば、所与の位置の異なる重なり合うプリミティブからの複数のサンプリング点の値が(例えば、透明度および/またはブレンディングが原因で)互いに影響し合う場合、最終的なピクセルの出力は、そのピクセル位置の複数の重なり合うサンプル値にやはり依存する。)
【００１４】
表示するためにグラフィックスを処理するとき(コンピュータで生成された画像を表示するとき)に直面する1つの問題は、表示される画像が、使用されている表示装置、例えば、モニタまたはプリンタの離散的なピクセル位置に量子化されることである。これは、表示される画像の解像度を制限し、例えば、出力表示装置の解像度が滑らかな線を表示するのに十分なだけ高くない場合、望ましくない視覚的なアーティファクトをもたらす可能性がある。これらの影響は、通常、「エイリアシング」と呼ばれる。
【００１５】
図1は、そのようなエイリアシングの影響を示す。図1の左側は、描画されるべき画像を示し、右側は、表示される実際の画像を示す。見て分かるように、白いオブジェクトの所望の滑らかな曲線が、実際には、画面上、ぎざぎざの外観を有する。これが、エイリアシングである。(図1において、それぞれの正方形は、画面のピクセルを表し、バツ印は、各(x, y)ピクセル位置の点を表し、それらの点のそのピクセル位置に関する色値が決定(サンプリング)される。例えば、図1のピクセルAは、そのピクセル位置に関する色のサンプリング点が白いオブジェクトの中に位置するので真っ白く描かれる。実際にはすべてのピクセルがサンプリングされるが、図1においては、関心のあるピクセル上のサンプルのバツ印だけが示されていることに留意されたい。)
【００１６】
裸眼で見える可能性があるすべてのエイリアシングのアーティファクトは、十分に高い解像度の表示装置を使用することによって取り除かれ得る。しかし、電子的な表示装置およびプリンタの解像度は、概して制限されており、したがって、多くのグラフィックス処理システムは、その他の技術を用いてエイリアシングの影響を取り除くか、または小さくすることを試みる。そのような技術は、通常、アンチエイリアシング技術と呼ばれる。
【００１７】
1つの知られているアンチエイリアシング技術は、スーパーサンプリングまたはオーバーサンプリングと呼ばれる。
【００１８】
そのような構成においては、最終的な表示のピクセルごとに複数のサンプリング点(位置)が存在し、別々の色のサンプルが、(例えば、各サンプリング点を別個のフラグメントとしてレンダリングすることによって)それぞれの(カバーされる)個々のサンプリング点に関して取得される。これの効果は、異なる色のサンプルが、レンダリングプロセス中にプリミティブによってカバーされる画面のピクセルの各サンプリング点に関して取得されることである。
【００１９】
これは、(別々の色値が各サンプリング点に関してレンダリングされるので、ピクセルに関する各サンプリング点に関して1つずつ)複数の色のサンプルが、画面の各ピクセルに関して取得されることを意味する。次に、これらの複数の色のサンプルが、ピクセルが表示されるときに、ピクセルに関する単一の色に合成される。これは、対象のピクセル位置の元の画像からの色値を平滑化または平均する効果を有する。
【００２０】
図2は、スーパーサンプリングプロセスを示す。図2に示される例においては、4つのサンプル点が、画面内の各ピクセルに関して決定され、別個の色サンプルが、レンダリングプロセス中に各サンプル点に関して取得される。(それに応じて、それぞれのそのようなサンプルは、実質的に「サブピクセル」とみなすことができ、画面内の各ピクセルは、4つのそのようなサブピクセルから構成される。)次に、所与のピクセルに関する4つの色値のサンプル(サブピクセル)が、画面のピクセルのために使用される最終的な色が当該ピクセルに関して取得された4つの色のサンプルの色の適切な平均(ブレンド)であるように合成(ダウンフィルタリング(downfilter))される。
【００２１】
これは、表示される画像を平滑化する効果を有し、例えば、色の中間的な陰影でエイリアシングのアーティファクトを囲むことによってそれらのエイリアシングのアーティファクトを目立たなくする。これが、図2に見られることができ、図2において、ピクセルAは、ここでは、2つの「白」のサンプルおよび2つの「黒」のサンプルを有し、したがって、表示される画像においては50%「白」に設定される。このようにして、白いオブジェクトのエッジのまわりのピクセルは、例えば、いくつのサンプルがエッジのそれぞれの側に位置するかが知られることに基づいてより滑らかなエッジを生成するためにぼかされる。
【００２２】
実際には、スーパーサンプリングは、表示のために実際に使用されることになる解像度よりもずっと高い解像度でスクリーン画像を処理し、次いで、その処理された画像が表示される前に、その処理された画像を最終的な解像度までスケーリングおよびフィルタリング(ダウンサンプリング)する。これは、エイリアシングのアーティファクトが少なくされた改善された画像をもたらす効果を有するが、グラフィックス処理システムが、事実上、サンプルが存在するのと同じだけ多くのフラグメントを処理しなければならないのでより多くの処理能力および/または時間を必要とする(したがって、例えば、4 xスーパーサンプリングに関して(すなわち、4つのサンプルがそれぞれの画面のピクセルに関して取得される場合)、処理の要求が、スーパーサンプリングをしなかった場合よりも4倍に膨らむことになる)。
【００２３】
したがって、画像品質のある程度の向上をやはりもたらしながらも、完全なスーパーサンプリングよりも処理の要求が少ないその他のアンチエイリアシング技術が、提案されている。
【００２４】
1つのよくあるそのような技術は、「マルチサンプリング」と呼ばれる。
【００２５】
マルチサンプリングの場合、複数のサンプリング点が、(ラスタライズの段階で)画像がフラグメントにラスタライズされるときに所与のプリミティブがサンプリング点をカバーするか否かを判定するためにそれぞれの画面のピクセルに関してやはりテストされる。したがって、マルチサンプリングシステムにおけるプリミティブのサンプリング点のカバレッジは、「スーパーサンプリング」システムと同様にして判定される(したがって、プリミティブの外側の幾何学形状のエッジの位置が、マルチサンプリングシステムにおいてやはり実質的に「スーパーサンプリングされる」(オーバーサンプリングされる))。
【００２６】
しかし、マルチサンプリングシステムのレンダリングプロセスにおいては、対象のプリミティブによってカバーされる所与の画面のピクセルに関するすべてのサンプリング点が、(それぞれが、スーパーサンプリングの場合のように独自の別個のデータの組を有するのではなく)色値データの同じ単一の共通の組を割り当てられる。
【００２７】
したがって、マルチサンプリングにおいては、複数のサンプルが、最終的な表示を構成する各ピクセルに関してやはり取得されるが、(完全なスーパーサンプリングシステムの場合のように)「ピクセル」をレンダリングするときに各サンプルに関して別個の色値を決定するのではなく、最終的な画像内で同じオブジェクトに属することが分かっている画面のピクセルに関するすべてのサンプルに対して単一の色値が決定され、適用される。言い換えると、マルチサンプリングは、(各サンプルに関して別個の色値が決定されるスーパーサンプリングとは対照的に)シーン内の所与のオブジェクトに関する所与の画面のピクセルに関して単一の色値を計算し、その色値が、そのオブジェクトによってカバーされる画面のピクセルのすべてのサンプル(サブピクセル)に対して適用される(再利用される)。
【００２８】
単一の色値のみが所与の画面のピクセルに関する複数のサンプルに関して使用されるので、マルチサンプリングは、スーパーサンプリングよりも処理の負荷が少なく、したがって、スーパーサンプリングよりも高速な処理および性能をもたらすことができる。しかし、オブジェクトのエッジはやはりより高い解像度でサンプリングされるが、色はより高い解像度でサンプリングされないので、スーパーサンプリングと比較して、表示される画像の品質が低下する。
【００２９】
これにもかかわらず、多くのグラフィックス処理システムは、マルチサンプリングが、概して、レンダリングされる画像において妥当な(およびマルチサンプリングまたはスーパーサンプリングがまったくないときと比較して改善された)アンチエイリアシングを、ただし、完全なスーパーサンプリングが必要とする著しい余分な処理および計算負荷なしにもたらすことができるので、マルチサンプリングアンチエイリアシング技術を使用する。
【００３０】
多くのグラフィックス処理システムは、所与のレベルのマルチサンプリングアンチエイリアシング(MSAA)を「ネイティブで」サポートすることができるように構成される(すなわち、所与のレベルのMSAAを実行するために最適化される)。例えば、タイルベースの(tile-based)グラフィックスプロセッサが、4 x MSAAが使用されていることになるという前提で、クロックサイクルごとに(出力)ピクセルごとに4つのサンプル点をテストすることができるようにラスタライザを構成し、クロックサイクルごとに4つのサンプルをブレンディングすることができるようにブレンダを構成し、クロックサイクルごとに4つのサンプルの深度/ステンシル検査を行うことができるように深度(ステンシル)テストユニットを構成すること、出力ピクセルごとの4つのサンプル用にタイルバッファ(tile buffer)のサイズを決めること、メインメモリに書き戻されるピクセルごとに4つのサンプルを平均することができるようにタイルライトバック(tile writeback)を構成すること、および重心マッピング(centroid mapping)のための正しいサンプル点を選択することができるように任意の計算ユニットを構成することなどによって最高速度の4 x MSAAをサポートするように構成され得る。その場合、そのような構成は、グラフィックスプロセッサがほとんどまたはまったく性能の低下なしに4 x MSAAをサポートすることを可能にすることができる。
【００３１】
しかし、今や、グラフィックスAPIがより高いレベルのアンチエイリアシングを要求することがより当たり前になりつつある。例えば、8 x MSAAは、Direct3D 11に準拠するための必要とされる機能である。これに対処するための1つの方法は、より高いレベルのアンチエイリアシングを「ネイティブで」サポートするように、例えば、サイクルごとにすべてを4つずつではなく8つずつ処理することをサポートするようにグラフィックスプロセッサを構成することである。しかし、これは、例えば、ハードウェアの観点で比較的コストがかかる。
【００３２】
4 x MSAAに加えて2 xスーパーサンプリング(2 x SSAA)を使用することによって8 x MSAAを近似することもあり得る。しかし、これは、「真の」8 x MSAAに対する近似であるに過ぎない。例えば、((出力)ピクセルの中心(またはカバーされるか、カバーされないかに関わらずすべてのサンプリング点の中心)の代わりに、フラグメントに関連するカバーされるサンプリング点のおおよその中心でvaryingが評価される)重心マッピングを使用する場合、4 x MSAAに加えて2 x SSAAを使用することは、「真の」8 x MSAAとは異なる位置でvaryingを評価し、潜在的に、まったく異なる結果をもたらす。Direct3D 11は8 x MSAAのためのサンプル点の厳密な事前に定義された組を要求するので、そのような近似は、Direct3D 11規格に準拠していない。
【発明の概要】
【発明が解決しようとする課題】
【００３３】
したがって、出願人は、グラフィックス処理システムにおいてより高いレベルのアンチエイリアシングをサポートするための改善された技術の余地が残っていると考える。
【課題を解決するための手段】
【００３４】
本発明の第1の態様によれば、少なくとも一部の処理段階がより低いレベルのマルチサンプリングによるアンチエイリアシングをネイティブでサポートするように構成される複数の処理段階を有するグラフィックス処理パイプラインにおいてより高いレベルのマルチサンプリングによるアンチエイリアシングを実行する方法であって、
より高いレベルのマルチサンプリングによるアンチエイリアシングを実行するときに、
グラフィックス処理パイプラインのラスタライザが、より高いレベルのアンチエイリアシングのためのサンプリング点の組をそれぞれが表すグラフィックスフラグメントを生成し、それらのフラグメントを処理のためにグラフィックス処理パイプラインのより後の段階に渡すステップと、
グラフィックス処理パイプラインのより後の処理段階のうちの1つまたは複数の処理段階が、各グラフィックスフラグメントが表すすべてのサンプリング点を並列に処理する処理パス(processing pass)において、処理のためにそれらの1つまたは複数の処理段階が受信する当該フラグメントを処理するステップと、
グラフィックス処理パイプラインの1つまたは複数のその他のより後の処理段階が、1つまたは複数の処理パスにおいて、処理のためにそれらの1つまたは複数のその他のより後の処理段階が受信する各グラフィックスフラグメントを処理するステップであって、それぞれのそのような処理パスが、フラグメントが表すサンプリング点の組のサンプリング点のサブセットを処理する、ステップとを含む、方法が提供される。
【００３５】
本発明の第2の態様によれば、
所与のレベルのアンチエイリアシングのためのサンプリング点の組をそれぞれが表すグラフィックスフラグメントを生成し、それらのフラグメントを処理のためにグラフィックス処理パイプラインのより後の段階に渡すラスタライザと、
ラスタライザの後の1つまたは複数の処理段階であって、各グラフィックスフラグメントが表すすべてのサンプリング点を並列に処理する処理パスにおいて、処理のためにそれらの1つまたは複数の処理段階が受信する当該フラグメントを処理する、1つまたは複数の処理段階と、
ラスタライザの後の1つまたは複数のその他の処理段階であって、所与のレベルのアンチエイリアシングよりも低いレベルのマルチサンプリングによるアンチエイリアシングをネイティブでサポートするように構成され、1つまたは複数の処理パスにおいて、処理のためにそれらの1つまたは複数のその他の処理段階が受信する所与のレベルのアンチエイリアシングのためのサンプリング点の組を表す各グラフィックスフラグメントを処理するように構成され、それぞれのそのような処理パスが、フラグメントが表すサンプリング点の組のサンプリング点のサブセットを処理する、1つまたは複数のその他の処理段階とを含む、グラフィックス処理パイプラインが提供される。
【００３６】
本発明の第3の態様によれば、
処理されるべきサンプリング点の組をそれぞれが表すグラフィックスフラグメントを生成し、それらのフラグメントを処理のためにグラフィックス処理パイプラインのより後の段階に渡すラスタライザと、
ラスタライザの後の1つまたは複数の処理段階であって、第1のレベルのマルチサンプリングによるアンチエイリアシングプロセスを実行するときに、各グラフィックスフラグメントが表すすべてのサンプリング点を並列に処理する処理パスにおいて、処理のためにそれらの1つまたは複数の処理段階が受信する当該フラグメントを処理し、より高いレベルのアンチエイリアシングプロセスを実行するときに、各グラフィックスフラグメントが表すすべてのサンプリング点を並列に処理する処理パスにおいて、処理のためにそれらの1つまたは複数の処理段階が受信する当該フラグメントを処理する、1つまたは複数の処理段階と、
ラスタライザの後の1つまたは複数のその他の処理段階であって、第1のレベルのマルチサンプリングによるアンチエイリアシングプロセスを実行するときに、各グラフィックスフラグメントが表すすべてのサンプリング点を並列に処理する処理パスにおいて、処理のためにそれらの1つまたは複数のその他の処理段階が受信する当該フラグメントを処理し、しかし、より高いレベルのアンチエイリアシングプロセスを実行するときは、1つまたは複数の処理パスにおいて、処理のためにそれらの1つまたは複数のその他の処理段階が受信する各グラフィックスフラグメントを処理し、それぞれのそのような処理パスが、フラグメントが表すサンプリング点の組のサンプリング点のサブセットを処理する、1つまたは複数のその他の処理段階とを含む、グラフィックス処理パイプラインが提供される。
【００３７】
本発明においては、所与のレベルのマルチサンプリングによるアンチエイリアシングをサポートするように構成された1つまたは複数の処理段階を有するグラフィックス処理パイプラインが、より高いレベルのマルチサンプリングによるアンチエイリアシングを実行するために使用される。これは、プロセスパイプラインの一部の段階を(潜在的に)複数回実行することによって行われ、各回は、サンプリング点のより大きな組を表すフラグメントの所与の部分を処理する。(例えば、4 x MSAAを実行するように構成されたパイプラインで8 x MSAAを実行する場合、それぞれの8 xフラグメントは、各部分が8 xフラグメントの4つのサンプリング点を処理するようにして2つの部分として処理される可能性がある(好ましくは処理される))。しかし、プロセスパイプラインのその他の部分においては、「より大きな」フラグメントが、単一のパスにおいて全体として処理される。
【００３８】
これは、以下でさらに検討されるように、例えば、グラフィックスパイプラインのすべての段階でより高いレベルのマルチサンプリングによるアンチエイリアシングを完全に「ネイティブで」サポートする必要なしにそのより高いレベルの処理を実行するが、「真の」より高いレベルのマルチサンプリングによるアンチエイリアシングプロセスになおも準拠したままであることができるメカニズムを提供する。特に、出願人は、一部のグラフィックス処理段階においてより高いレベルのマルチサンプリングによるアンチエイリアシングを実行するときに、各パスがサンプリング点の組のより小さな部分を処理する複数のパスでより高いレベルのマルチサンプリングによるアンチエイリアシングを実行することがやはり許容可能である(および準拠している)ことができることと、それを行うことによって、それらの処理段階において完全なより高いレベルのアンチエイリアシングのサポートを行う必要性が回避され得ることとを認識した。そして、このことは、より高いレベルのマルチサンプリングによるアンチエイリアシングが、例えば、グラフィックス処理パイプラインのすべての段階で完全なより高いレベルのアンチエイリアシングのサポートを行うことと比較してずっと低いハードウェアのコストで実行されることを可能にすることができる。
【００３９】
出願人は、サンプリング点のより高いレベルのアンチエイリアシングの組が、「真の」より高いレベルのアンチエイリアシングに準拠するために、単一のパスにおいて並列に全体として処理されなければならない一部のグラフィックス処理段階が存在する可能性があることをさらに認識した。したがって、本発明は、グラフィックス処理段階のうちの1つまたは複数に関して依然としてこれを行うが、これが行われる段階の数を制限することによって、これに関連するコストが削減および/または最小化され得る。
【００４０】
このように、本発明は、著しい追加のハードウェアのコストなしに、(より低いレベルのアンチエイリアシング用に最適化されている)より低いレベルのアンチエイリアシングを「ネイティブで」サポートするグラフィックスプロセッサにおいてより高いレベルのマルチサンプリングアンチエイリアシングをサポートする方法を提供する。さらに、本発明は、グラフィックスプロセッサがより高いレベルのマルチサンプリングアンチエイリアシングをネイティブでサポートするように構成されたとした場合と同じ性能をより高次のマルチサンプリングによるアンチエイリアシングに関して提供することができない可能性があるが、出願人は、このことは許容され得ることを認識しており、その理由は、より高いレベルのマルチサンプリングによるアンチエイリアシングがよく使用されるわけではない可能性があり、より高いレベルのマルチサンプリングによるアンチエイリアシングが使用されるときは、そのアンチエイリアシングを「ネイティブの」(最適化された)速度で実行することを必要としない可能性があるからである。したがって、出願人は、本発明によってもたらされるコストの利点が、より高いレベルのマルチサンプリングによるアンチエイリアシングをネイティブでサポートすることができるシステムと比較したときのあらゆる潜在的な性能の欠点にまさることができると考える。性能が決定的に重要でないとすれば、本発明は、少なくともその好ましい実施形態において、グラフィックスプロセッサが、そのグラフィックスプロセッサが主として構成されている対象のマルチサンプリングによるアンチエイリアシングよりも高いレベルのマルチサンプリングによるアンチエイリアシングを、ほとんどまたは実質的にまったく領域のオーバヘッド(area overhead)を伴わずにサポートすることを可能にすることができる。
【００４１】
したがって、出願人は、本発明が、より高いレートのアンチエイリアシングが実現されることを可能にすることができるが、グラフィックスプロセッサのサイズおよび能力の著しい増加を必要とせず、たとえ性能の低下があったとしても許容可能であると考える。
【００４２】
グラフィックス処理パイプラインは、グラフィックス処理パイプラインが含む可能性がある任意の好適な所望の処理段階を含むことができる。好ましい実施形態において、グラフィックス処理パイプラインは、ラスタライザ、早期深度テスタ(early depth tester) (もしくは早期深度およびステンシルテスタ(early depth and stencil tester))、フラグメントシェーダ、フラグメントシェーダに関連するvarying位置評価(varyings position evaluation) (varyingインターポレータ(varyings interpolator))、後期深度テスタ(late depth tester) (もしくは後期深度およびステンシルテスタ(late depth and stencil tester))、ブレンダ、1つもしくは複数のタイルバッファ(タイルベースのレンダリングパイプラインの場合)、ならびにタイルライトバックユニット(やはりタイルベースのレンダリングパイプラインの場合)のうちの1つまたは複数、ならびに好ましくはこれらのすべてを、好ましくはこの順序で含む。
【００４３】
グラフィックス処理パイプラインは、好ましくは、タイルベースのレンダリングパイプラインである。
【００４４】
グラフィックスパイプラインが「ネイティブで」サポートするように構成されたより低いレベルのマルチサンプリングによるアンチエイリアシング(すなわち、関連するグラフィックス処理段階が単一の処理パスにおいてフラグメントが表すすべてのサンプリング点を処理する「第1の」レベルのマルチサンプリングによるアンチエイリアシング)は、任意の所望のレベルのマルチサンプリングによるアンチエイリアシングであってよい。好ましい実施形態、グラフィックス処理パイプラインは、4 x MSAAをサポートするように構成される。これを行うために、さまざまな処理段階が、上で検討されたように構成される可能性があり、好ましくは構成される。したがって、例えば、最高速度の4 x MSAAをサポートするように構成されたタイルベースのグラフィックスプロセッサに関して、4 x MSAAが使用されていることになるという前提で、ラスタライザは、クロックサイクルごとにピクセルごとに4つのサンプル点をテストすることができるように構成される可能性があり、ブレンダは、クロックサイクルごとに4つのサンプルをブレンディングすることができるように構成される可能性があり、深度(およびステンシル)テストユニットは、クロックサイクルごとに4つのサンプルの深度/ステンシル検査を行うことができるように構成される可能性があり、タイルバッファは、出力ピクセルごとの4つのサンプル用にサイズを決められる可能性があり、タイルライトバックは、メインメモリに書き戻されるピクセルごとに4つのサンプルを平均することができるように構成される可能性があり、任意の計算ユニットが、重心マッピングのための正しいサンプル点を選択することができるように構成される可能性がある。
【００４５】
その他のレベルのマルチサンプリングによるアンチエイリアシングがネイティブでサポートされるべきである場合、さまざまな処理段階は、そのマルチサンプリングによるアンチエイリアシングをサポートするようにそれに応じて構成されるべきであり、好ましくは構成される。
【００４６】
実行され得る(および実行されている)マルチサンプリングによるアンチエイリアシングのより高いレベル(すなわち、関連するグラフィックス処理段階がフラグメントが表すサンプリング点をサブセット単位で処理するマルチサンプリングによるアンチエイリアシングの「より高い」レベル)は、ネイティブでサポートされるアンチエイリアシングのレベルの任意の倍数である可能性がある。より高いレベルは、好ましくは、ネイティブでサポートされるアンチエイリアシングのレベルの整数倍である。したがって、より高いレベルは、アンチエイリアシングのネイティブでサポートされるレベルの2倍および/または4倍であることが好ましい。したがって、グラフィックス処理システムの処理段階がネイティブで4 x MSAAをサポートする場合、実行される(および実行され得る)より高いレベルのアンチエイリアシングは、好ましくは、8 x MSAAおよび/または16 x MSAAを含む。
【００４７】
したがって、好ましい実施形態において、グラフィックス処理パイプラインは、A x MSAA(例えばおよび好ましくは4 x MSAA)を(ネイティブで)サポートするように構成される複数の処理段階を有し、より高いレベルのマルチサンプリングによるアンチエイリアシングは、nA x MSAAを含み、ここで、nは1を超える整数である。システムは、例えば、n = 2、4、8、および16である複数のより高いレベルのアンチエイリアシングをサポートできることが好ましい。
【００４８】
グラフィックス処理パイプラインは、より高いレベルのアンチエイリアシングを常に行うように構成され得る。しかし、好ましい実施形態において、構成は、グラフィックス処理パイプラインが、本発明の方法でより高いレベルのアンチエイリアシングで動作するように選択的に設定され得るようなものである。
【００４９】
最も好ましくは、グラフィックス処理パイプラインは、マルチサンプリングによるアンチエイリアシングのそのグラフィックス処理パイプラインの「ネイティブの」レベルで動作することができ、本発明の方法でアンチエイリアシングのより高い1つのレベル(または複数のレベル)で動作することができる。例えば、特に好ましい実施形態において、本発明の方法で動作することができるグラフィックス処理パイプラインは、4 x MSAAまたは8 x MSAAのいずれかを用いて表示のために画像を処理するように選択的に構成され得る。
【００５０】
最も好ましくは、これらの異なる動作モードが、グラフィックス処理を呼び出しているアプリケーションによって設定され得る。その場合、このことは、例えば、アプリケーションの開発者が、例えば、「通常の」4 xマルチサンプリング、または8 xマルチサンプリングを選択することを可能にする。さらにはっきり言えば、本発明が、プロセッサのハードウェアの大幅な変更を必要とせずに異なるマルチサンプリングなどのレートを使用することを容易にすることが本発明の利点である。
【００５１】
当技術分野で知られているように、ラスタライザは、表示されるべきフレームなどの所望のグラフィックスの出力のサンプリング点に関するレンダリングされたグラフィックスデータを生成するためにレンダリングされるべきグラフィックスフラグメントを生成する。ラスタライザによって生成される各グラフィックスフラグメントは、グラフィックスの出力のサンプリング点の組をそのグラフィックスフラグメントに関連付け、当該フラグメントに関連するサンプリング点の組のサンプリング点のうちの1つまたは複数に関するレンダリングされたグラフィックスデータを生成するために使用されることになる。
【００５２】
各フラグメントに関連付けられるサンプリング点の組は、望まれるように選択され得る。当技術分野で知られているように、サンプリング点の各組(およびしたがって各サンプリング点)は、グラフィックスの出力、例えば、表示されるべきフレーム内の位置(x、y位置)を表す。サンプリング点の各組の中のサンプル点のパターンおよび(相対的な)位置(サンプリングパターン)も、望まれるように選択され得る。例えば、整列グリッド(ordered grid)サンプリングなどの任意の知られている好適なアンチエイリアシングサンプリングパターンが、使用され得る。当技術分野で知られているように、回転グリッド(rotated grid)サンプリングパターンがより優れたサンプリングの効果をもたらすので、回転グリッドサンプリングパターンが使用されることが好ましい。
【００５３】
よくあるように、グラフィックスの出力が複数のピクセルを含む画面または出力を有する出力装置に表示されることになる場合、レンダリングされるべきフラグメントが関連付けられる可能性があるサンプリング点の各組は、出力装置(例えば、ディスプレイもしくはプリンタ)の所与のピクセル(ピクセル位置)に関するサンプリング点の組、または出力装置のピクセルの一部(例えば、サブピクセル)に関するサンプリング点の組に対応することが好ましい。後者の構成においては、サンプリング点の組の複数のグループが、画面のピクセルに関するサンプリング点の組全体を構成することが好ましい。これらの構成においては、各フラグメントが、出力装置(例えば、ディスプレイまたはプリンタ)の所与のピクセルに関するフラグメントデータを実質的にレンダリングする。
【００５４】
特に好ましい実施形態において、フラグメントが関連付けられる可能性があるサンプリング点の組は、それぞれ、対象のグラフィックス処理システムにおいてレンダリングされるべき出力に適用され得、適用されるように意図されるサンプリングマスク(sampling mask) (アンチエイリアシングマスク(anti-aliasing mask))またはそのようなマスクの一部に対応する。当技術分野で知られているように、例えば、画像が表示のためにレンダリングされるべきであるとき、概して、サンプリング点の組を表す事前に定義されたサンプリングマスクが、画像をサンプリングするために画像に繰り返し適用される。概しておよび好ましくは、サンプリングマスクのそれぞれの適用は、意図される出力装置(例えば、ディスプレイまたはプリンタ)の所与の出力ピクセルに対応する。
【００５５】
したがって、特に好ましい実施形態において、所与のグラフィックスフラグメントは、例えば、レンダリングされるべき画像に適用されることになるサンプリングマスク(もしくはアンチエイリアシングマスク)のサンプリング点のすべてに関連付けられる(およびそれらのサンプリング点のすべてをレンダリングするために使用される)ことができるか、または、適用されることになるサンプリングマスクのサンプリング点のサブセットに関連付けられる(およびそれらのサンプリング点のサブセットをレンダリングするために使用される)ことができる。
【００５６】
レンダリングされるべきグラフィックスフラグメントが対応することができる(表すことができる)サンプリング点の組の中のサンプリング点の数は、望まれるように選択され得る。最も好ましくは、各フラグメントは、使用されているアンチエイリアシングのレベルに対応するサンプリング点の組をそのフラグメントに関連付ける。したがって、例えばおよび好ましくは、A x MSAA (例えば、4 x MSAA)を実行するときは、ラスタライザによって生成される各フラグメントは、A個(例えば、4個)のサンプリング点の組をそのフラグメントに関連付け、より高いレベルのnA x MSAA (例えば、8 x MSAA)を実行するときは、ラスタライザによって生成される各フラグメントは、nA個(例えば、8個)のサンプリング点の組をそのフラグメントに関連付ける。
【００５７】
したがって、本発明の好ましい実施形態において、nA xマルチサンプリングによるアンチエイリアシングを実行するとき、グラフィックス処理パイプラインのラスタライザは、nA個のサンプリング点の組をそれぞれが表すグラフィックスフラグメントを生成し(それらのフラグメントを処理のためにグラフィックス処理パイプラインのより後の段階に渡し)、グラフィックス処理パイプラインのより後の処理段階のうちの1つまたは複数の処理段階は、フラグメントが表すnA個のサンプリング点を全体として(並列に)処理する処理パスにおいて、nA個のサンプリング点の組を表すそれぞれのそのようなグラフィックスフラグメントを処理し、グラフィックス処理パイプラインの1つまたは複数のその他のより後の処理段階は、1つまたは複数の処理パスにおいて、nA個のサンプリング点の組を表す各グラフィックスフラグメントを処理し、それぞれのそのような処理パスが、フラグメントが表すnA個のサンプリング点の組のサンプリング点のサブセット(および好ましくはA個)を処理する。
【００５８】
このように、本発明においては、ラスタライザによって生成されるフラグメントが、異なる数のサンプリング点を含むサンプリング点の組に関連付けられる(およびそのようなサンプリング点の組に対応し、そのようなサンプリング点の組を表す)ことが好ましい可能性がある。
【００５９】
多くの場合、本発明のオペレーションにおいて、フラグメントが対応するサンプリング点の組は、サンプリングされているオブジェクト(例えば、プリミティブ)によって完全にカバーされるが、これは常に当てはまることではなく、その場合、フラグメントに関連するサンプリング点のすべてではなく一部のみが、例えば、対象のプリミティブによってカバーされることが理解されるであろう。後者の場合、当技術分野で知られているように、フラグメントに関するレンダリングされたフラグメントデータは、(プリミティブによって)カバーされるサンプリング点に対して使用されるべきであり、(プリミティブによって)カバーされていないサンプリング点に対しては使用されるべきでない(その理由は、それらのサンプリング点が、実際には、出力の別の、例えばプリミティブによってカバーされるからである)。例えば、カバーされていないサンプル位置に関してはレンダリングされたフラグメントデータをレンダリングされたフラグメントデータの配列に記憶する必要はない。
【００６０】
したがって、特に好ましい実施形態において、各グラフィックスフラグメントは、フラグメントが対応するサンプリング点の組の中のサンプリング点のうちのどのサンプリング点が(例えば、好ましくは、サンプリングされているプリミティブによって)カバーされるか、すなわち、実質的には、フラグメントが対応するサンプリング点の組の中のサンプリング点のうちのどのサンプリング点がレンダリングするために使用されているかを示すデータをそのグラフィックスフラグメントに関連付ける。そのとき、システムは、示されたカバーされるサンプル位置に関してはレンダリングされたフラグメントデータをフラグメントデータの配列に記憶するが、当該フラグメントに関連する残りのサンプル位置に関しては記憶しないように動作することが好ましい。
【００６１】
どのカバーされるサンプル点をレンダリングするためにフラグメントが使用されているかを示す情報は、レンダラを通過するフラグメントに関するフラグメントデータ(フラグメントに関するRGBおよびアルファ値など)に関連付けられるか、そのようなフラグメントデータの一部であることが好ましい。この情報は、フラグメントに関連付けられるサンプル位置の組の各サンプル位置に関して、そのサンプル位置がカバーされるかどうか、すなわち、実質的には、当該フラグメントがそのサンプル点をレンダリングするために使用されているかどうか(すなわち、そのフラグメントのデータがそのサンプル点に関して記憶されるべきであるかどうか)を示すカバレッジマスク(coverage mask)の形態であることが好ましい。好ましくは、このカバレッジマスクは、サンプリング位置を表すビットマップの形態である。
【００６２】
この構成は、所与のフラグメントを適切なサンプル点と関連付ける特に都合の良い方法であることが分かっている。
【００６３】
例えば、4 x MSAAのための4ビットのカバレッジマスクおよびより高いレベルのアンチエイリアシングのためのnAビットのカバレッジマスク(例えば、8 x MSAAのための8ビットのカバレッジマスク)など、サポートされるそれぞれの異なるレベルのアンチエイリアシングのための(すなわち、フラグメントが関連付けられ得るそれぞれの異なる数のサンプリング位置のための)異なるサイズのカバレッジマスクを使用することができる。しかし、特に好ましい実施形態においては、各フラグメントは、より高い(または最も高い)レベルのアンチエイリアシング用にサイズを決められたカバレッジマスクに常に関連付けられ、より低いレベルのアンチエイリアシングを実行するときは、カバレッジマスクの適切なビットが単純に消去される(例えばおよび好ましくは0に設定される)。例えば、各フラグメントは、(上で検討されたように)フラグメントがレンダリングするために使用されているサンプルリング点を示すnAビットの(例えば、8 x MSAAが最も高いレベルのアンチエイリアシングである場合は8ビットの)カバレッジマスクに関連付けられることができる。そのようなより大きなカバレッジマスクを使用することは、例えば、フラグメントデータのストレージが既にこのための容量を有する場合はコストがかからない可能性がある。
【００６４】
したがって、特に好ましい実施形態において、ラスタライザによって生成される各フラグメントは、実行され得るより高い(および好ましくは最も高い)レベルのアンチエイリアシングに対応するサンプリング点のカバレッジマスクに関連付けられ、より低いレベルの(すなわち、そのより高い(または最も高い)レベルではない)アンチエイリアシングを実行するときは、そのカバレッジマスクの適切なビットが消去される。これは、異なるレベルのアンチエイリアシングのためのフラグメントの処理を簡潔にすることができる。
【００６５】
これが行われる場合、より大きなカバレッジマスクの適切な上位ビットが、より低いレベルのアンチエイリアシングを実行するときは消去されることが好ましい。例えば、4 x MSAAをネイティブでサポートするが、8 x MSAAが本発明の方法で実行され得るシステムにおいては、各フラグメントは、8 x MSAAを実行するときに全体が使用される8ビットのカバレッジマスクに関連付けられることができるが、4 x MSAAを実行するときは、そのカバレッジマスクの上位4ビットが消去される。
【００６６】
所与のフラグメントが対応するサンプリング点のカバレッジに関連する情報だけでなく、例えば、フラグメントが対応するサンプリング点の組のサイズを示す情報も提供することが本発明において必要である可能性がある。例えば、この情報は、例えば、既存のフラグメントデータのフィールドで利用できる可能性がある予備の容量を使用して、この情報を対象のフラグメントにやはり関連付けることによって望まれるように与えられ得る。
【００６７】
ラスタライザは、任意の所望の好適な方法でレンダリングするためのフラグメントを生成するように構成され得る。当技術分野で知られているように、ラスタライザは、例えば、ラスタライズされるべきプリミティブを受信し、それらのプリミティブをサンプリング点の位置の組に照らしてテストし、それに応じてプリミティブを表すフラグメントを生成する。
【００６８】
ラスタライザは、サポートされる各レベルのアンチエイリアシングのために単一の処理パスにおいてフラグメントに関連付けられるべき必要とされる数のサンプリング点をテストするように(すなわち、より高いレベルのアンチエイリアシングの完全な「ネイティブの」ラスタライズのサポートを行うように)構成される可能性がある。
【００６９】
しかし、特に好ましい実施形態においては、ラスタライザは、各パスがフラグメントに関するサンプリング点の(異なる)サブセット(すなわち、サンプリングマスクのサブセット)をテストするようにして、より高いレベルのアンチエイリアシングのためにフラグメント(すなわち、より高いレベルのアンチエイリアシングのサンプリングマスク)に関連付けられるべきサンプリング点の組を複数のパスで処理するように構成される(すなわち、ラスタライザは、必要とされるサンプルのすべてをテストするために、より高いレベルのアンチエイリアシングを実行するとき、各フラグメントを複数回実行するように構成されることが好ましい)。
【００７０】
換言すれば、より高いレベルのアンチエイリアシングに関して、ラスタライザは、各パスがフラグメントに関して生成されるべきサンプリング位置の組のサブセット(サンプリングマスクのサブセット)をテストする、生成されるべき各フラグメントに対する(例えば、テストされるべき各サンプリングマスクに対する)複数のラスタライズパスを実行し、次に、これらのラスタライズパスの結果を組み合わせて、グラフィックスパイプラインの残りに渡されるフラグメントを生成することが好ましい。したがって、ラスタライザは、複数の「サブフラグメント」をテストし、次いで、それらのサブフラグメントが、ラスタライザによって出力されるフラグメントを与えるために組み合わされることが好ましい。
【００７１】
この構成において、各ラスタライズパスで処理されるフラグメントの(サンプリングマスクの)サンプリング点の数は、望まれるように選択され得る。好ましい実施形態において、各パスで処理されるサンプリング点の数(サンプリング点のサブセット)は、グラフィックス処理パイプラインがネイティブでサポートするレベルのアンチエイリアシングのために処理されるサンプリング点の数を含む。したがって、例えば、A x MSAA (例えば、4 x MSAA)をネイティブでサポートするパイプラインに関して、各ラスタライズパスは、より高いレベルのアンチエイリアシングを実行するとき、生成されるべきフラグメントのA個の(例えば、4個の)サンプリング点を処理することが好ましい。
【００７２】
フラグメントを生成するために使用されるラスタライズパスの数は、フラグメントに関連付けられるべきサンプリング点のすべてを処理するために必要とされる処理パスの数に対応すべきである。したがって、例えば、A x MSAAをネイティブでサポートする処理パイプラインに関して、nA x MSAA (ここで、nは1を超える整数である)を実行するとき、ラスタライザは、(各ラスタライズパスが、フラグメントに関連付けられるべきnA個のサンプリング位置のうちのA個のサンプリング位置の異なるサブセットを処理するようにして) n個のラスタライズパスを実行してそれぞれのラスタライズの出力フラグメントを生成すべきである。
【００７３】
したがって、ラスタライザは、より高いレベルのアンチエイリアシングを実行するとき、プリミティブを、それぞれがラスタライザによって出力されることになるフラグメントに関連付けられるべきサンプリング点の(異なる)サブセットを表す複数の「サブフラグメント」にラスタライズし、次に、そのようにして生成されたサブフラグメントを、グラフィックス処理パイプラインの次の段階に渡すための出力フラグメントへと組み合わせることができるように構成されることが好ましい。
【００７４】
したがって、例えば、4 x MSAAをネイティブでサポートするパイプラインにおける8 x MSAAに関して、ラスタライザは、一方のラスタライズパスが、例えばおよび好ましくは、8 xサンプリングマスクの上半分をテストし、他方のラスタライズパスが、8 xサンプリングマスクの下半分をテストするようにして、2つのラスタライズパスを実行する。同様の構成が、その他のより高いレベルのMSAAのために使用され得る。そのようなオペレーションをサポートするために、ラスタライズは、追加的な「サブマスク」サンプリングパターンをサポートするように構成されるべきであり、好ましくはそのように構成される。
【００７５】
このラスタライザのオペレーションは、制御論理の非常に小さな追加と、(より高いレベルのアンチエイリアシングのために必要とされる追加的なサンプリングパターンを示すための)サンプル位置のルックアップテーブルの追加のエントリとを必要とする可能性がある。また、ラスタライズの性能は、必要とされる追加的なラスタライズパスの数に比例して(したがって、「ネイティブで」4 x MSAAのラスタライザを使用して8 x MSAAを実行する場合には、半分)減じられる。しかし、上で検討されたように、出願人は、このことは、例えば、より高いレベルのアンチエイリアシングための完全な「ネイティブの」ラスタライズのサポートを行うことに比べて許容できると考える。
【００７６】
ラスタライザによって生成されたフラグメントは、当技術分野で知られているように、フラグメントが表す(カバーされる)サンプリング点に関するレンダリングされたフラグメントデータを生成するために、処理するためにグラフィックス処理パイプラインのより後の段階に渡される。これらのレンダリングプロセスは、例えば、フラグメントシェーディング、ブレンディング、テクスチャマッピングなどを含み得る。
【００７７】
上で検討されたように、本発明においては、これらのより後の処理段階の一部は、フラグメントを処理パスで全体として(常に)処理するように構成されるが、一部は、より高いレベルのアンチエイリアシングを実行するときに、フラグメントを複数のパスで「分けて」処理するように構成される。
【００７８】
より高いレベルのアンチエイリアシング(およびすべてのレベルのアンチエイリアシング)を実行するときにグラフィックスフラグメントが(単一の)処理パスで全体として処理される、グラフィックス処理パイプラインの(ラスタライザと比較して)より後の処理段階は、サンプルごとではなくフラグメントごとに動作するグラフィックス処理段階のうちの1つまたは複数、および好ましくはそのようなグラフィックス処理段階のすべてを含むことが好ましい。出願人は、フラグメントごとに動作する処理段階に関して、フラグメントの一部に対してそのような処理を実行し、次に、例えば、それらのフラグメントの一部を再び組み合わせることが、フラグメントが全体として処理される場合とは異なる結果をもたらす可能性があることを認識した。したがって、グラフィックス処理パイプラインのこれらの段階は、より高いレベルのアンチエイリアシングを実行するとき、より多くのサンプリング位置を表すフラグメントを単一の処理パスで処理することが好ましい。
【００７９】
フラグメントシェーディングは、フラグメントを全体として処理する1つのそのような処理段階である。したがって、好ましい実施形態において、より高いレベルのアンチエイリアシングを実行するとき、フラグメントシェーダは、各フラグメントを処理パスで全体として処理するように構成される。
【００８０】
フラグメント全体を処理する別の処理段階は、少なくとも、その別の処理段階が、例えば、重心マッピングのためのサンプル点を選択するときはvaryingインターポレータである。したがって、好ましい実施形態において、varyingインターポレータは、より高いレベルのアンチエイリアシングが実行されているときに、少なくとも重心マッピングのためのサンプル点を選択するときは、フラグメント全体を処理パスで処理する。そのとき、これは、varyingインターポレータが、とりわけ、「真の」より高いレベルのアンチエイリアシングにとって正しい重心マッピングのためのサンプル点を選択することを可能にする。(重心マッピングを実行しないとき、varyingインターポレータは、フラグメントを全体として処理する必要がなく、したがって、この場合、フラグメントは、その代わりに必要に応じて複数のパスで分けて処理される可能性がある。)
【００８１】
これを容易にするために、varyingインターポレータは、より高いレベルのアンチエイリアシングを実行するときに必要とされるより多くのビットと、それに応じて拡張されたその対応するサンプル位置のルックアップテーブルとを扱うことができるように構成されるべきである。例えば、4 x MSAAから8 x MSAAになる場合、varyingインターポレータのビットスキャナ(bit scanner)は、追加的な4ビットを扱う必要があり、一定のサンプル位置のルックアップテーブルに追加的な8つのエントリが存在する必要がある。
【００８２】
したがって、特に好ましい実施形態において、各グラフィックスフラグメントが表すサンプリング点のすべてを全体として処理する処理経路において処理のために処理段階が受信する当該フラグメントを常に処理する処理段階は、フラグメントシェーダおよびvaryingインターポレータのうちの1つまたは複数、ならびに好ましくはすべてを含む。
【００８３】
より高いレベルのアンチエイリアシングを実行するときに、各パスがフラグメントに関連するサンプリング点のサブセットを処理する1つまたは複数の処理パスでフラグメントが処理される、グラフィックス処理パイプラインの(ラスタライザと比較して)より後の段階は、パイプラインを通過するフラグメントに対して(フラグメントごとではなく)サンプルごとの(サンプリング点ごとの)オペレーションを実行するグラフィックス処理パイプラインのより後の段階、および好ましくはすべてのより後の段階を含むことが好ましい。
【００８４】
出願人は、サンプルごとのオペレーションがサンプリング点に対して個々に実行されるときに、フラグメントのサンプリング点に対して(すなわち、1つの処理パスで全体としてのフラグメントに対してではなく)それらのオペレーションを別々に実行し、それでもなお「真の」より高次のアンチエイリアシングに準拠したままであることができることを認識した。したがって、グラフィックス処理パイプラインにおけるサンプルごとのオペレーションに関しては、それらのオペレーションをフラグメントごとに複数回実行することによってより高いレベルのアンチエイリアシングを実現することができる。さらに、そのようにしてそれを行うことは、より高いレベルのアンチエイリアシングをサポートするハードウェアのコストを大幅に削減する。
【００８５】
したがって、好ましい実施形態においては、より高いレベルのアンチエイリアシングを実行するときに、各フラグメントを、各パスがフラグメントが表すサンプリング点のサブセットを処理する1つまたは複数の処理パスにかける(ラスタライザと比較して)より後のグラフィックス処理段階は、ブレンダおよび深度(もしくは深度およびステンシル)テスタのうちの1つまたは複数、ならびに好ましくはすべてを含む。パイプラインが早期深度(または深度およびステンシル)テスタと後期深度(または深度およびステンシル)テスタの両方を含む場合、早期テスタと後期テスタの両方が、この方法で動作するように構成されることが好ましい。
【００８６】
(グラフィックス処理パイプラインのサンプルごとのオペレーションの段階のすべてがこの方法で動作することが好ましいが、より高いレベルのアンチエイリアシングを実行するときに、必要に応じて、一部の段階でより高いレベルのアンチエイリアシングのネイティブのサポートを行うが、その他の段階はこの方法で動作させるようなその他の構成があり得る。)
【００８７】
グラフィックス処理段階が、各フラグメントを、各パスが当該フラグメントに関連するサンプリング位置のサブセットを処理する(すなわち、当該フラグメントに関連するサンプリング位置の組のすべてではなく一部を処理する) 1つまたは複数のパスで処理するように構成される場合、各パスで処理されるフラグメントのサンプリング点の数は、望まれるように選択され得る。好ましい実施形態において、各パスで処理されるサンプリング点の数(サンプリング点のサブセット)は、グラフィックス処理パイプラインの段階がネイティブでサポートするレベルのアンチエイリアシングのために処理されるサンプリング点の数を含む。したがって、例えば、A x MSAA (例えば、4 x MSAA)をネイティブでサポートするパイプラインの段階に関して、各処理パスは、より高いレベルのアンチエイリアシングを実行するとき、フラグメントのA個の(例えば、4個の)サンプリング点を処理することが好ましい。
【００８８】
フラグメントを処理するために使用される処理パスの数は、フラグメントに関連付けられたサンプリング点のすべてを処理するために必要とされる処理パスの数までであるべきである。したがって、例えば、A x MSAAをネイティブでサポートする処理パイプラインの段階に関して、nA x MSAA (ここで、nは1を超える整数である)を実行するとき、各フラグメントは、(各処理パスが、フラグメントに関連付けられたnA個のサンプリング位置のうちのA個のサンプリング位置の異なるサブセットを処理するようにして)対象のグラフィックス処理段階の最大n個の処理パスを経るべきである。
【００８９】
単にいつも、フラグメントが、フラグメントに関連するサンプリング点のすべてを処理するために必要な数の処理パス(したがって、上記の例においてはn個の処理パス)を経るようにすることが可能であり、1つの好ましい実施形態においては、これが行われる。しかし、特に好ましい実施形態においては、サンプリング位置のうちのいずれも実際にはカバーされていない(すなわち、サブセットのサンプリング位置のうちのいずれも実際に(潜在的に)出力に寄与しない)サンプリング位置のサブセットのための処理パスを省略および/または中止することが可能である。この場合、「早抜け(early-out)」メカニズムが、そのような余分な処理パスを飛ばすために使用される可能性がある。これらの構成において、したがって、所与のフラグメントは、フラグメントに関連するサンプリング点のすべてを処理するために必要な処理パスの数を最大とする1つまたは複数の処理パスを実行することによって処理される。
【００９０】
より後のグラフィックス処理段階は、任意の好適な所望の方法でこのように動作するように構成され得る。例えば、ブレンダの場合、ブレンダは、すべての所望のサンプルをブレンディングするために、各フラグメントを複数回実行するように構成され得る。同様に、深度テストならびに/または深度およびステンシルテストの場合、深度テスタまたは深度およびステンシルテスタは、すべての所望のサンプルをテストするために、各フラグメントを複数回実行するように構成され得る。このためのコストは、少量の制御コードであるが、ただし、最大のブレンドまたはテストなどのレートは、各フラグメントに関して実行されることを必要とする処理パスの数に対応して(したがって、「ネイティブの」4 x MSAAのブレンダなどを使用して8 x MSAAを実行する場合には、半分)減じられる。
【００９１】
そのようなオペレーションを容易にするために、ブレンダならびに/または深度およびステンシルテスタなどは、それらがグラフィックス処理パイプラインの前の段階から処理のために受信する入力フラグメントを、入力フラグメントに関連するサンプリング点の(異なる)サブセットをそれぞれが表す複数のサブフラグメントに分割し、次に、サブフラグメントを互いに独立して(および好ましくは1つずつ)処理し、次いで、処理されたサブフラグメントを、グラフィックス処理パイプラインの次の段階に渡すための出力フラグメントへと再び組み合わせることができるように構成されることが好ましい。
【００９２】
このように、特に好ましい実施形態において、グラフィックス処理パイプラインの処理段階のうちの1つまたは複数の処理段階は、それらの処理段階がグラフィックス処理パイプラインの前の段階から処理のために受信する入力フラグメントを、入力フラグメントに関連するサンプリング点の(異なる)サブセットをそれぞれが表す複数のサブフラグメントに分割し、次に、サブフラグメントを互いに独立して(および好ましくは1つずつ)処理し、次いで、処理されたサブフラグメントを、グラフィックス処理パイプラインの次の段階に渡すための出力フラグメントへと再び組み合わせることができるように構成される。これらの段階は、ブレンダ、深度テスタ(または深度およびステンシルテスタ)などの、サンプルごとのオペレーションを実行する段階であることが好ましい。
【００９３】
上で検討されたように、ブレンダなどは、対象のフラグメントに関する出力に実際には寄与しないサンプリング点のサブセットのための処理パスを中止するか、または飛ばすためのメカニズムをやはり含むことが好ましい。
【００９４】
生成されたフラグメントが、当該フラグメントが表すそれぞれのサンプリング点に関するレンダリングされたグラフィックスデータを生成するためにレンダリングされると、次に、そのように生成されたレンダリングされたフラグメントデータは、当技術分野で知られているように、例えば、表示装置へのその後の出力のためにタイルおよび/またはフレームバッファなどの好適なサンプルデータの配列またはバッファに記憶される必要がある。当技術分野で知られているように、この配列は、例えば、サンプリング位置の2次元配列を表し、そのとき、この2次元配列は、例えば、ピクセルの2D配列を表示するために適切に処理され得る。
【００９５】
当業者に理解されるであろうように、本発明が、より高いレベルのアンチエイリアシング、例えば、4 xサンプリングに対する8 xサンプリングで画像を処理するために使用される場合、それは、より多くの(例えば、2倍の数の)サンプリング位置に関するレンダリングされたフラグメントデータをもたらす。この「余分な」サンプリング位置のデータが、サンプルデータの配列、例えば、タイルバッファに記憶されることを必要とする。
【００９６】
これを行うための1つの方法は、単に、レンダリングされたフラグメントデータの配列のサイズを増やして、これを可能にすることである。したがって、例えば、タイルベースのシステムにおいては、タイルバッファ(および深度バッファなどの任意のその他のパイプラインの終わりのバッファ)が、所望のより高いレベルのアンチエイリアシングでタイル全体のために必要とされるサンプリング位置のすべてを収容することができるようにサイズを増やされる(例えば、2倍にされる)可能性がある。さらに、またはその代わりに、例えば、(ダブルバッファリングがサポートされる場合に)ダブルバッファリングの代わりにシングルバッファリングを使用して、追加的なサンプルデータのための容量を提供することがあり得る。
【００９７】
しかし、特に好ましい実施形態においては、タイルベースのレンダリングパイプラインで、より高いレベルのアンチエイリアシングのための追加的なサンプリング位置を収容するためにタイルバッファなどのサイズを増やすのではなく、その代わりに、各タイルが、複数のより小さな部分に分けて、すなわち、実質的に、それぞれがレンダリングされるべきタイルの一部を表す複数の「サブタイル」として処理される。そのとき、それぞれのそのようなタイルの一部(「サブタイル」)は、通常の方法で処理されてからメインメモリ(例えば、フレームバッファ)に書き出され得、それから、次のタイルの一部(サブタイル)が処理され、書き出され、以下同様である。その場合、これは、より高いレベルのアンチエイリアシングが、(各「タイル」を複数回処理しなければならないという代償を払ってではあるが)タイルバッファなどのサイズを増やすことを必要とせずに実行されることを可能にする。
【００９８】
これらの構成において、グラフィックス処理パイプラインがそれぞれのレンダリングタイルを複数のより小さな部分に分けて処理すべきである場合、毎回処理されるタイルの部分のサイズは、望まれるように選択され得る。好ましい実施形態において、タイルバッファなどが特定のレベルのアンチエイリアシングで特定のサイズのタイルをネイティブでサポートするように構成される場合、より高いレベルのアンチエイリアシングを実行するときに毎回処理されるタイルの部分(「サブタイル」)は、既存のタイルバッファをいっぱいにするタイルの部分に対応する。したがって、その場合、例えば、A x MSAAをネイティブでサポートするタイルバッファを有するパイプラインに関して、nA x MSAAを用いてタイルを処理するときに、タイルは、それぞれが当該タイルの1/nに対応する部分に分けて処理されるべきである。
【００９９】
タイルを処理するために使用される部分(「サブタイル」)の数は、それに対応して、タイルの部分すべてを処理するために必要とされる部分の数であるべきである。したがって、例えば、A x MSAAをネイティブでサポートするタイルバッファを有する処理パイプラインに関して、nA x MSAA (ここで、nは1を超える整数である)を実行するとき、各タイルは、(n =「サブタイル数」であるとき) (各部分(サブタイル)がタイルの1/nに対応するようにして)n個の部分に分けて処理されるべきである。
【０１００】
したがって、例えば、4 x MSAAをサポートするようにサイズを決められ、構成されたタイルバッファを有するグラフィックス処理パイプラインで8 x MSAAを実行する場合、各タイルは、2回、すなわち、各レンダリングパスがタイルの半分をレンダリングするようにして2つのレンダリングパスを用いてレンダリングされることが好ましい。例えば、第1のレンダリングパスが、タイルの上半分をレンダリングする可能性があり、第2のレンダリングパスが、タイルの下半分をレンダリングする可能性がある(またはその逆の可能性もある)。その他のレベルのマルチサンプリングによるアンチエイリアシングに関しては、適切な数のレンダリングパスが、実行されるべきである。
【０１０１】
グラフィックス処理パイプラインは、これを行うために望まれるように構成され得る。好ましい実施形態において、ラスタライザは、タイルに関するタイルリスト(tile list)を複数回読むが、毎回、タイルの異なる部分を処理するように構成される。このためのコストは、わずかな量の制御論理、およびタイルリスト(タイル内のすべてのプリミティブ)を複数回読むことが必要であることである。ラスタライザ(ラスタライズプロセス)は、所与のレンダリングパスに関して処理されるべきでないタイルの部分を効率的に省くことができるように構成されることが好ましい。好ましい実施形態においては、階層的なラスタライズプロセスがこれを効率的に行うことができるので、階層的なラスタライズプロセスが使用される。
【０１０２】
当技術分野で知られているように、サンプルバッファ、例えば、タイルバッファが満たされると、それらのサンプルバッファは、メインメモリに(例えば、フレームバッファに)書き戻される必要がある。当技術分野で知られているように、決まった方法か、または変更可能な方法かのいずれかで、(例えば、タイル)バッファ内のサンプル値から、メインメモリ(例えば、フレームバッファ)に書き込まれるべき最終的な出力、および/または必要に応じてその他の出力にダウンサンプリングすること(平均すること)もあり得る。
【０１０３】
サンプル値をメインメモリに書き出されるべきピクセル値に解決する(resolve)ためのダウンサンプリング(平均)は、必要に応じて、使用されるべきより高いレベルのアンチエイリアシングをネイティブでサポートするように(すなわち、より高いレベルのアンチエイリアシングのための必要とされる数のサンプリング点を単一のダウンサンプリングオペレーションでダウンサンプリングする(平均する)ことができるように)構成され得る。しかし、好ましい実施形態においては、ダウンサンプリングは、より高いレベルのアンチエイリアシングを実行するときにより低いネイティブでサポートされるレベルのダウンサンプリング(アンチエイリアシング)で引き続き動作するように構成され、より高いレベルのアンチエイリアシングのダウンサンプリングオペレーションは、タイルの異なる部分に関して複数回ダウンサンプリング(平均)オペレーションを行い、次に、結果を組み合わせて、メインメモリに書き戻されるべき出力ピクセル値全体をもたらすことによって実現される。
【０１０４】
したがって、例えば、4 x MSAA用に構成されたダウンサンプリング(平均)ユニットに関して、8 x MSAAを実行するとき、ダウンサンプリングは、8 x MSAAのサンプリング点の組の4つのサンプリング点のそれぞれの異なる組に対して1回ずつ(各「サブピクセル」に対して1回ずつ)2回実行されるべきであり、次いで、結果として得られるダウンサンプリングされた(平均された)2つの値が、メインメモリに書き出される出力(最終的なピクセル)値をもたらすために、別のダウンサンプリングパスで一緒にブレンディングされる(平均される)べきである。換言すれば、各8 x MSAAのピクセルに関して、サンプル値の平均が、メインメモリに書き戻されるべき最終的なピクセル値を生成するために複数のパスで行われる。(これは、(2 x (4 x MSAA) + 2 x SSAA)を行うためのメカニズムに実質的に等しい。)
【０１０５】
したがって、より高いレベルのアンチエイリアシングを実行するとき、タイルのダウンサンプリング(解決)およびライトバックオペレーションは、複数の連続する段階で行われるように構成されることが好ましい。好ましくは、第1の段階が、フラグメントに関するサンプリング点の組の複数のサブセットを別々にダウンサンプリング(平均)し、それぞれのサブセットは、ダウンサンプリングユニットがネイティブでダウンサンプリングするように構成されている数のサンプリング点を含むことが好ましい。好ましくは、結果として得られるそのようにダウンサンプリングされた(平均された)値は、次に、(出力)ピクセルに関するサンプリング点の組に関する単一のダウンサンプリングされた(平均された)出力値が得られるまで、(ダウンサンプリングユニットがネイティブでダウンサンプリングする値の数までの値の組をやはりダウンサンプリングする(平均する)ことが好ましい)さらなるダウンサンプリング(平均)プロセスでダウンサンプリングされ(平均され)、(必要に応じて)以下同様に処理され、その単一の値が、次いで、メインメモリに適切に書き戻される。
【０１０６】
したがって、タイルダウンサンプリングおよびライトバックユニットがA個の値(すなわち、A x MSAA)のダウンサンプリング(平均)をサポートするように構成される場合、より高いレベルのアンチエイリアシングに関しては、フラグメントに関するサンプリング点の組が、それぞれがA個のサンプリング点を含む複数の別個の部分としてダウンサンプリングされることが好ましい。これにしたがい、A個以下の出力値が存在する場合、それらの値は、メインメモリに書き戻される出力のダウンサンプリングされた値をもたらすために、単一のさらなるダウンサンプリングオペレーションでダウンサンプリングされる(平均される)。一方、これにしたがい、A個を超える出力値が存在する場合、それらの値は、次に、それぞれが(最大で)A個の値を含む複数の別々の部分として再びダウンサンプリングされることが好ましい。そのとき、これにしたがい、A個以下の出力値が存在する場合、それらの値は、メインメモリに書き戻される出力のダウンサンプリングされた値をもたらすために、単一のさらなるダウンサンプリングオペレーションでダウンサンプリングされる(平均される) (または、これにしたがい、A個を超える出力値が存在する場合、それらの値は、次に、それぞれが(最大で)A個の値を含む複数の別々の部分としてダウンサンプリングされることが好ましく、以下同様である)。
【０１０７】
出願人は、複数段階のプロセスでのサンプル値のそのようなダウンサンプリング(解決)が、より高いレベルのアンチエイリアシングのためにすべてのサンプル値を単一のステップでダウンサンプリングすることの効果を正確に再現することができることを認識した。
【０１０８】
本発明は、表示のためのフレーム、テクスチャへのレンダリング(render-to-texture)出力など、生成するためにグラフィックス処理パイプラインが使用され得るすべての形態の出力のために使用され得る。
【０１０９】
グラフィックス処理パイプラインによってレンダリングされるべき出力は、通常、複数のプリミティブ(およびタイルベースのシステムにおいてはタイル)によって構成されるので、実際には、本発明の方法は、出力を構成する各プリミティブ(およびタイル)に対して繰り返され、したがって、結局、レンダリングされたフラグメントデータの適切な組が、必要とされる出力の各サンプリング点に関して生成されていることが理解されるであろう。
【０１１０】
特に好ましい実施形態においては、本発明のさまざまな機能が、例えば、表示装置のフレームバッファに書き込まれるレンダリングされたフラグメントデータを生成および出力する単一のグラフィックス処理プラットフォームで実行される。
【０１１１】
本発明は、好適に構成されたマイクロプロセッサベースのシステムなどの任意の好適なシステムで実装され得る。好ましい実施形態において、本発明は、コンピュータおよび/またはマイクロプロセッサベースのシステムで実装される。
【０１１２】
本発明のさまざまな機能が、任意の所望の好適な方法で実行され得る。例えば、本発明の機能は、望まれるように、ハードウェアまたはソフトウェアで実装され得る。したがって、例えば、本発明のさまざまな機能的要素および「手段」は、適切な専用のハードウェア要素、および/または所望の方法で動作するようにプログラムされ得るプログラム可能なハードウェア要素などの、それらのさまざまな機能などを実行するように動作可能である好適なプロセッサ、コントローラ、機能的ユニット、回路、処理論理、マイクロプロセッサ構成などを含み得る。
【０１１３】
ここで、当業者に理解されるであろうように、本発明のさまざまな機能などは、所与のプロセッサで二重化され、および/または並列に実行される可能性があることにも留意されたい。
【０１１４】
本発明は、任意の形態または構成のグラフィックス処理パイプライン、および即時モード(immediate mode)レンダリング、遅延モード(deferred mode)レンダリング、タイルベースレンダリングなどのすべての形態のレンダリングに適用可能である。本発明は、遅延モードレンダリングを使用するグラフィックスレンダラ、具体的には、タイルベースのレンダラに特に適用可能である。本発明は、タイル式のレンダラが、概して、即時モードのレンダラよりも、フレームバッファのためのずっと低いメモリ帯域幅を有するので、タイルベースのレンダラの場合に特に有利である可能性がある。本発明は、効率的なタイル式のレンダラが、他の方法で必要とされるであろうよりも低いコストでより高いレベルのアンチエイリアシングを実行することを可能にすることができる。
【０１１５】
したがって、本発明は、本明細書に記載の本発明の態様のうちの任意の1つもしくは複数の装置を含むか、またはそのような態様にしたがって動作させられるグラフィックスプロセッサおよびグラフィックス処理プラットフォームにまで及ぶ。上で検討された特定の機能を実行するために必要な任意のハードウェアを備えているものとして、そのようなグラフィックスプロセッサは、その他に、グラフィックスプロセッサが含む通常の機能的ユニットなどのうちの任意の1つもしくは複数またはすべてを含み得る。
【０１１６】
本発明の説明される態様および実施形態のすべては、必要に応じて、本明細書に記載の好ましい特徴および任意的な特徴のうちの任意の1つもしくは複数またはすべてを含む可能性があり、好ましくは確かに含むことも当業者に理解されるであろう。
【０１１７】
本発明による方法は、少なくとも部分的に、ソフトウェア、例えばコンピュータプログラムを用いて実装され得る。したがって、さらなる観点から見たとき、本発明が、データ処理手段にインストールされたときに本明細書に記載の方法を実行するように特に適合されたコンピュータソフトウェアと、プログラム要素がデータ処理手段で実行されるときに本明細書に記載の方法を実行するためのコンピュータソフトウェアコードの部分を含むコンピュータプログラム要素と、プログラムがデータ処理システムで実行されるときに本明細書に記載の方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムとを提供することも分かるであろう。データプロセッサは、マイクロプロセッサシステム、プログラム可能なFPGA (フィールドプログラマブルゲートアレイ)などである可能性がある。
【０１１８】
本発明は、データ処理手段を含むグラフィックスプロセッサ、レンダラ、またはマイクロプロセッサシステムを動作させるために使用されるときに、前記データ処理手段と連携して前記プロセッサ、レンダラ、またはシステムに本発明の方法のステップを実行させるそのようなソフトウェアを含むコンピュータソフトウェアのキャリアにも及ぶ。そのようなコンピュータソフトウェアのキャリアは、ROMチップ、CD ROM、もしくはディスクなどの物理的なストレージ媒体である可能性があり、または有線による電子的信号、光信号、もしくは衛星などへの無線信号などの信号である可能性がある。
【０１１９】
本発明の方法のすべてのステップがコンピュータソフトウェアによって実行される必要があるわけではなく、したがって、さらに広い観点から、本発明は、本明細書に記載の方法のステップのうちの少なくとも1つを実行するためのコンピュータソフトウェアと、コンピュータソフトウェアのキャリアにインストールされたそのようなソフトウェアとを提供することがさらに理解されるであろう。
【０１２０】
したがって、本発明は、コンピュータシステムで使用するためのコンピュータプログラム製品として好適に具現化され得る。そのような実装は、コンピュータ可読媒体、例えば、ディスケット、CD-ROM、ROM、もしくはハードディスクなどの有形の非一時的媒体に固定化されているか、あるいは光もしくはアナログ通信線を含むがこれらに限定されない有形の媒体を介するか、またはマイクロ波、赤外線、もしくはその他の伝送技術を含むがこれらに限定されない無線技術を用いて無形でかのいずれかでモデムもしくはその他のインターフェースデバイスによってコンピュータシステムに送信可能であるかのいずれかである一連のコンピュータ可読命令を含み得る。一連のコンピュータ可読命令は、本明細書において既に説明された機能のすべてまたは一部を具現化する。
【０１２１】
当業者は、そのようなコンピュータ可読命令が、多くのコンピュータアーキテクチャまたはオペレーティングシステムで使用するためにいくつかのプログラミング言語で記述され得ることを理解するであろう。さらに、そのような命令は、半導体式、磁気式、もしくは光学式を含むがこれらに限定されない現在もしくは将来の任意のメモリテクノロジーを用いて記憶され得、または光、赤外線、もしくはマイクロ波を含むがこれらに限定されない現在もしくは将来の任意の通信テクノロジーを用いて送信され得る。そのようなコンピュータプログラム製品は、印刷されたもしくは電子的なドキュメントが添付された取り外し可能な媒体、例えば、包装されたソフトウェアとして配布されるか、コンピュータシステムを用いて、例えば、システムROMもしくは固定のディスクにあらかじめロードされるか、またはネットワーク、例えば、インターネットもしくはワールドワイドウェブを介してサーバもしくは電子掲示板から配布される可能性があることが想定される。
【０１２２】
ここで、本発明のいくつかの好ましい実施形態が、単に例として、添付の図面を参照して説明される。
【図面の簡単な説明】
【０１２３】
【図１】エイリアシングの影響を概略的に示す図である。
【図２】スーパーサンプリングアンチエイリアシング技術を概略的に示す図である。
【図３】表示されるべき画像を概略的に示す図である。
【図４】本発明の実施形態で使用するための例示的なサンプリングパターンを示す図である。
【図５】本発明にしたがって動作させられ得るグラフィックス処理パイプラインの実施形態を示す図である。
【図６】4 x MSAAを実行するときの図5のグラフィックス処理パイプラインのオペレーションを概略的に示す図である。
【図７】本発明の実施形態における、レンダリングされるべきフラグメントに関連付けられるデータを示す図である。
【図８】8 x MSAAを実行するときの図5のグラフィックス処理パイプラインのオペレーションを概略的に示す図である。
【図９】8 x MSAAを実行するときの図5のグラフィックス処理パイプラインのオペレーションの態様を示す図である。
【図１０】8 x MSAAを実行するときの図5のグラフィックス処理パイプラインのオペレーションの態様を示す図である。
【発明を実施するための形態】
【０１２４】
図面において、適切な場合、同様のコンポーネントに対して同様の参照番号が使用される。
【０１２５】
以降、本発明の好ましい実施形態が、表示するためのコンピュータグラフィックスの処理に関連して説明される。
【０１２６】
当技術分野で知られているように、および上で検討されたように、コンピュータグラフィックス画像が表示されるべきであるとき、そのコンピュータグラフィックス画像は、通常、最初に、一連のプリミティブ(ポリゴン)として定義され、次に、それらのプリミティブが、グラフィックスのレンダリングのためにグラフィックスフラグメントに順に分割される(ラスタライズされる)。通常のグラフィックスのレンダリングオペレーション中、レンダラが、フラグメントが正しく表示され得るように、各フラグメントに関連する(例えば)色(赤、緑、および青、RGB)ならびに透明度(アルファ、a)データを修正する。フラグメントがレンダラを完全に抜けると、それらのフラグメントの関連するデータ値が、表示のための出力の準備ができたメモリに記憶される。
【０１２７】
この実施形態は、とりわけ、コンピュータグラフィックス画像を表示するときのアンチエイリアシングオペレーションを容易にすることに特に関連する。当技術分野で知られているように、アンチエイリアシングは、表示されるべき画像の複数のサンプルを取得し、次に、それらのサンプルを画面の出力解像度までダウンサンプリングすることによって実行される。
【０１２８】
この実施形態で使用される基本的なアンチエイリアシングの構成を概略的に示す図3は、表示されるべき画像に対するサンプリングマスク34の繰り返しの適用を示す。サンプリングマスク34のそれぞれの適用は、画像が表示されるときの画像のピクセルに対応する。
【０１２９】
各サンプリングマスクは、当技術分野で知られているように、対象の出力ピクセルに関して画像をサンプリングするために使用され、したがって、ピクセルが最終的な画面上にどのように出力されるべきであるかを決定するサンプリング点の組を含む。
【０１３０】
この実施形態において、サンプリングマスク34の各インスタンスは、8個のサンプリング点を取得することができるか、画像の4個のサンプリング点を取得することができるかのいずれかである。これらのサンプリングマスクの拡大図を示す図4が、これを示す。
【０１３１】
図4は、所与のピクセルに関する8個のサンプリング位置35の配列を表す8 xサンプリングマスク37を示す。8 xマスク37は、Direct3D 11用に定義されるサンプリングマスクである。図4は、それぞれが4個のサンプリング位置36の組を表す(整列グリッドを有する)4 xサンプリングマスク39および(回転グリッドを有する) 4 xサンプリングマスク34の2つも示す。
【０１３２】
以下でさらに検討されるように、この実施形態において、画像は、図4に示される4 xサンプリングマスクおよび8 xサンプリングマスクのうちのいずれか1つを用いて処理され得る。
【０１３３】
図3は、単一のプリミティブ32の形態でサンプリングマスクの配列30の上に重ねられた画像も示す。(ここで、画像は、簡単にするために、単一のプリミティブを含むように図3において示されたことが理解されるであろう。実際には、画像(またはその他の出力)は、当技術分野で知られているように、多くの重なり合うプリミティブを含む可能性があり、通常含む。)図3から分かるように、プリミティブ32は、サンプリングマスクの配列30内のサンプリングマスクのうちのいくつかを完全に覆うが、その他のサンプリングマスクのうちのいくつかの一部は通過するだけである。
【０１３４】
画像のプリミティブ32を処理するために、レンダリングシステムは、要するに、ラスタライズ段階で、各サンプリングマスクの適用のサンプル点の各組の中のサンプル点のうちのどのサンプル点がプリミティブ32によってカバーされるのかを判定し、次に、プリミティブ32の画像が表示装置上に適切に表示され得るようにそれらのカバーされるサンプル点に関するデータをレンダリングし、記憶する。
【０１３５】
この実施形態におけるこの方法の表示のためのプリミティブ32の画像の処理が、本発明にしたがって動作することができるグラフィックス処理パイプライン1を概略的に示す図5を参照して以降で説明される。図5に示されるグラフィックス処理パイプライン1は、タイルベースのレンダラであり、したがって、当技術分野で知られているように、生成されるべき出力フレームなどのレンダラの出力データ配列のタイルを生成する。(当業者に理解されるであろうように、その他のレンダリング構成が、必要に応じて使用され得る。)
【０１３６】
(当技術分野で知られているように、タイルベースレンダリングにおいては、レンダラの出力の全体、例えばフレームが即時モードレンダリングと同様に実質的に一度で処理されるのではなく、レンダラの出力、例えば、表示されるべきフレームは、通常「タイル」と呼ばれる複数のより小さな部分的領域に分割される。各タイル(部分的領域)は、別々に(概して1つずつ)レンダリングされ、次に、レンダリングされたタイル(部分的領域)が、完全なレンダラの出力、例えば、表示のためのフレームをもたらすために再び組み合わされる。そのような構成において、レンダラの出力は、概して、(通常、例えば正方向または長方形である)規則的なサイズおよび形状の部分的領域(タイル)に分割されるが、これは必須ではない。)
【０１３７】
当技術分野で知られているように、レンダラの出力データ配列は、概して、スクリーンまたはプリンタなどの表示装置上に表示することを意図された出力フレームである可能性があるが、例えば、より後のレンダリングパスで使用することを意図された中間データ(「テクスチャへのレンダリング」出力としても知られる)なども含み得る。
【０１３８】
図5は、この実施形態のオペレーションに関連するグラフィックス処理パイプライン1の主要な要素およびパイプラインの段階を示す。当業者に理解されるであろうように、図5に示されていないグラフィックス処理パイプラインのその他の要素も存在し得る。ここで、図5は概略的であるに過ぎず、例えば、実際には、示された機能的ユニットおよびパイプラインの段階は、図5において別々の段階として概略的に示されているとしても、重要なハードウェア回路を共有する可能性があることにも留意されたい。図5に示されたグラフィックス処理パイプラインの段階、要素、およびユニットなどのそれぞれは、望まれるように実装することができ、したがって、例えば、必要なオペレーションおよび機能を実行するための適切な回路および/または処理論理を含むことも理解されるであろう。
【０１３９】
図5は、ラスタライズプロセスへの入力のためのグラフィックスプリミティブ(ポリゴン) 2が生成された後のパイプラインの段階を概略的に示す。したがって、当技術分野で知られているように、この時点で、グラフィックスデータ(頂点データ)は、グラフィックスプロセッサに与えられたコマンドおよび頂点データに応答して、変換および照明オペレーション(図示せず)、ならびにレンダリングされるべきプリミティブを組み立てるためのプリミティブ組み立て段階(図示せず)などのフラグメントのフロントエンドオペレーション8を経ている。
【０１４０】
図5に示されるように、グラフィックス処理パイプライン1のこの部分は、ラスタライズ段階3と、初期Z (深度)およびステンシルテスト段階4と、フラグメントシェーディング段階6と、後期Z (深度)およびステンシルテスト段階7と、ブレンディング段階9と、タイルバッファ10と、ダウンサンプリングおよびライトバック(マルチサンプル解決)段階11とを含むいくつかの段階を含む。
【０１４１】
上で検討されたように、本発明は、グラフィックス処理パイプラインによって生成されるべき出力を処理するときに第2のより高いレベルのアンチエイリアシングを実行するために、第1のレベルのアンチエイリアシングを「ネイティブで」サポートするように構成された処理段階を有するグラフィックス処理パイプラインを使用することに関する。この実施形態においては、グラフィックス処理パイプライン1の段階が4 x MSAAをネイティブでサポートすることと、本発明の方法で実行されるべきより高いレベルのアンチエイリアシングが8 x MSAAであることとが仮定される。当然、その他の構成があり得る。
【０１４２】
グラフィックス処理パイプライン1のラスタライズ段階3は、当技術分野で知られているように、レンダラの出力(例えば、表示されるべき画像)を構成するプリミティブを、処理のために個々のグラフィックスフラグメントにラスタライズするように動作する。これを行うために、ラスタライザ3は、レンダリングのためのグラフィックスプリミティブ2を受信し、プリミティブをサンプリング点にラスタライズし、プリミティブをレンダリングするための適切な位置を有する(適切なサンプリング位置を表す)グラフィックスフラグメントを生成する。
【０１４３】
この実施形態において、ラスタライザは、プリミティブを、フラグメントの徐々に小さくなるパッチと比較して繰り返しテストするように動作する階層的なラスタライザである。ラスタライザは、出力領域の大きなパッチから始まり、対象のプリミティブがそのパッチの中にあるかどうかをテストすることによって動作する。パッチの中にない場合、パッチ全体が破棄され、次のパッチがテストされ、以下同様である。一方、プリミティブがパッチの中にあること(少なくとも部分的にパッチによってカバーされること)が分かる場合、パッチが4つの部分に分割され、次に、それぞれのそのような「サブパッチ」が同じ方法でテストされ、(この実施形態においてはサンプリングマスクの2 x 2のグループである(すなわち、フラグメントの2 x 2のグループに対応する)が、例えば、個々のサンプル、個々のサンプリングマスク(フラグメント)、またはサンプリングマスク(フラグメント)の異なるサイズのグループである可能性がある)最小のパッチサイズが達せられるまで同様のことが繰り返される。
【０１４４】
この実施形態においては、最も小さなパッチサイズは複数のサンプリング点を含む(すなわち、サンプリングマスク(フラグメント)の2 x 2のグループである)ので、次いで、最終的なパッチ内の個々のサンプリング点が、別々のサンプルテスタを用いてテストされる。この実施形態において、ラスタライザ3のこのサンプルテスタは、クロックサイクルごとに4つのサンプリング点を含むサンプリングマスクをテストする(すなわち、実質的に、4つのサンプリング点の組の少なくとも1つのサンプリング点がプリミティブの中にある場合に4つのサンプリング点の組に対して生成されるフラグメントに関連付けられる4つのサンプリング点の組をテストする)ことができるように構成され、したがって、ラスタライザ3は、4 x MSAAを「ネイティブで」サポートする。
【０１４５】
この「階層的な」ライタライズメカニズムは、ラスタライザが、空のパッチを即座に破棄すること(および、したがって、プリミティブが実際に存在するタイルの部分にすぐに集中すること)を可能にする。
【０１４６】
ラスタライザは、プリミティブを含むことが分かったサンプリングマスクのそれぞれの適用ごとにフラグメントを生成する。次に、これらのフラグメントが、処理のためにパイプラインの残りにさらに送信される。
【０１４７】
初期Z/ステンシル段階4は、当技術分野で知られているように、その初期Z/ステンシル段階4がラスタライザ3から受信するフラグメントに対してZ (深度)テストを実行して、いずれかのフラグメントがこの段階で破棄される(間引かれる)ことができるかどうかを調べる。これを行うために、初期Z/ステンシル段階4は、ラスタライザ3から発せられるフラグメントの(フラグメントに関連する)深度値を、既にレンダリングされたフラグメントの深度値と比較して(これらの深度値は、タイルバッファ10の一部である深度(Z)バッファに記憶される)、新しいフラグメントが、既にレンダリングされたフラグメントによって遮られるか否かを判定する。同時に、初期ステンシルテストが実行される。
【０１４８】
初期深度およびステンシルテスト4は、クロックサイクルごとに4つのサンプルに対する深度およびステンシルテストを行うことができるように構成され、したがって、4 x MSAAを「ネイティブで」サポートする。
【０１４９】
フラグメントの初期Zおよびステンシルテスト段階4を通るフラグメントは、次に、フラグメントシェーディング段階6に送られる。フラグメントシェーディング段階6は、当技術分野で知られているように、フラグメントを処理してレンダラの出力のための(例えば、フラグメントの表示のための)適切なフラグメントデータなどを生成するために、初期Zおよびステンシルテストを通るフラグメントに対して適切なフラグメント処理のオペレーションを実行する。
【０１５０】
このフラグメント処理は、当技術分野で知られているように、適切なフラグメントデータを生成するために、フラグメントに対してフラグメントシェーダプログラムを実行すること、フラグメントにテクスチャを適用すること、フラグメントにフォギングまたはその他のオペレーションを適用することなどの任意の好適な所望のフラグメントシェーディングプロセスを含み得る。この実施形態において、フラグメントシェーディング段階6は、シェーダパイプライン(プログラム可能なフラグメントシェーダ)の形態であるが、さらにまたはその代わりに、機能の決まったフラグメントシェーディングユニットの使用などのその他の構成が、必要に応じてあり得る。
【０１５１】
フラグメントシェーダ6は、そのフラグメントシェーダ6が受信するフラグメントに関連するサンプリング点のすべてを並列に処理するように、すなわち、そのフラグメントシェーダ6が受信する各フラグメントを全体として処理するように構成される。
【０１５２】
フラグメントシェーディング段階6は、正しいフラグメントに関する正しいvarying値を決定するために使用されるvaryingインターポレータ(varying位置エバリュエータ(varying position evaluator)) 12をそれに関連付ける。重心マッピングなどの特定の補間モードに関して、varyingインターポレータは、フラグメントの関連するカバレッジマスクを使用して、varyingデータを補間すべきフラグメント内の正しい位置を選択する。したがって、varyingインターポレータ12は、フラグメントがそのフラグメントに関連する4つのサンプリング点を有するか、または8つのサンプリング点を有するかに関わらず、重心マッピングのための正しい補間位置を選択することができるように、そのvaryingインターポレータ12が受信するフラグメントに関連するサンプリング点のすべてを並列に処理することができるように構成される。
【０１５３】
次に、とりわけ、シェーディングされたフラグメントに対してパイプラインの終わりの深度テストを実行して、レンダリングされたフラグメントが最終的な画像で実際に見られるかどうかを判定する「後期」フラグメントZおよびステンシルテスト段階7がある。この深度テストは、タイルバッファ10内のZバッファに記憶されたフラグメントの位置に関するZバッファ値を使用して、当技術分野で知られているように、フラグメントシェーディング段階6から発せられたフラグメントの(フラグメントに関連する)深度値を(深度バッファに記憶された)既にレンダリングされたフラグメントの深度値と比較することによって、新しいフラグメントに関するフラグメントデータが既にレンダリングされたフラグメントのフラグメントデータを置き換えるべきかどうかを判定する。この後期フラグメント深度およびステンシルテスト段階7は、フラグメントに対して任意の必要な「後期」アルファおよび/またはステンシルテストも実行する。
【０１５４】
後期深度およびステンシルテスト段階7は、クロックサイクルごとに4つのサンプルに対する深度およびステンシルテストを行うことができるようにやはり構成され、したがって、4 x MSAAを「ネイティブで」サポートする。
【０１５５】
次に、後期フラグメントテスト段階7を通るフラグメントが、必要に応じて、ブレンダ9において、タイルバッファ10に既に記憶されているフラグメントとの任意の必要なブレンディングオペレーションにかけられる。ディザなどの、フラグメントに対する必要な任意のその他の残りのオペレーション(図示せず)も、この段階で実行される。
【０１５６】
ブレンダ9は、クロックサイクルごとに4つのサンプルをブレンディングすることができるように構成され、したがって、4 x MSAAを「ネイティブで」サポートする。
【０１５７】
最後に、(ブレンディングされた)出力フラグメントデータ(値)が、タイルバッファ10に書き込まれ、そこから、それらの(ブレンディングされた)出力フラグメントデータ(値)が、例えば、表示のためにフレームバッファに出力され得る。出力フラグメントに関する深度値も、タイルバッファ10内のZバッファに適切に書き込まれる。(タイルバッファおよびZバッファは、当技術分野で知られているように、それらのバッファが表す各サンプリング点に関する(要するに、処理されているタイルの各サンプリング点に関する)適切な色などまたはZ値をそれぞれ記憶する。)タイルバッファは、当技術分野で知られているように、レンダラの出力(例えば、表示されるべき画像)の一部を表すフラグメントデータの配列を記憶する。
【０１５８】
この実施形態においては、3つのタイルバッファが設けられる。各タイルバッファは、32 x 32配列に(すなわち、生成されるべき出力における、例えば、表示されるべき画像におけるサンプル位置の32 x 32配列に対応する)そのフラグメントデータを記憶する。したがって、それぞれの32 x 32データ位置のタイルバッファは、例えば、4 xアンチエイリアシングで(すなわち、ピクセルごとに4つのサンプルを取得するときに)表示されるべきフレームの16 x 16ピクセルの「タイル」に対応する(およびそのようなタイルを「ネイティブで」サポートする)ことができる。
【０１５９】
これらのタイルバッファは、別々のバッファとして設けられる可能性があり、または実際にはすべて、同じより大きなバッファの一部である可能性がある。これらのタイルバッファは、グラフィックス処理パイプライン(チップ)に配置される(そのようなグラフィックス処理パイプライン(チップ)のローカルにある)。
【０１６０】
この実施形態においては、3つのタイルバッファのうちの2つが、各サンプリング点に関する色(赤、緑、青)値を記憶するために使用され(この目的に1つのタイルバッファを使用することもできるが、2つが好ましい)、1つのタイルバッファが、各サンプリング点に関するZ (深度)値およびステンシル値を記憶するために使用される。当然、その他の構成があり得る。
【０１６１】
タイルバッファ10からのデータは、ダウンサンプリング(マルチサンプル解決)ユニット11に入力され、そこから、表示装置のフレームバッファ(図示せず)などの(グラフィックス処理プラットフォーム自体には存在しない可能性がある)出力バッファ13に出力される(書き戻される)。(出力装置は、例えば、コンピュータモニタまたはプリンタなどの、ピクセルの配列を含むディスプレイを含み得る。)
【０１６２】
ダウンサンプリングユニット11は、タイルバッファ10に記憶されたフラグメントデータを出力バッファ(デバイス)のための適切な解像度まで(すなわち、出力装置のピクセルに対応するピクセルデータの配列が生成されるように)ダウンサンプリングして、出力バッファ13への出力のための出力値(ピクセル) 14を生成する。
【０１６３】
この実施形態のグラフィックス処理パイプライン1のダウンサンプリングユニット11は、1回のダウンサンプリングオペレーション(クロックサイクル)で、タイルバッファ10からの4つのサンプル位置の値を、出力バッファ13に出力するための単一の出力値、例えば14にダウンサンプリングすることができるように構成される。したがって、ダウンサンプリングおよびライトバックユニット11は、この実施形態においては、4 xアンチエイリアシングを「ネイティブでサポートする」ように構成される。
【０１６４】
ダウンサンプリングは、任意の好適な方法で行われることができる。この実施形態においては、データの線形ブレンディング(linear blending)が、それをダウンサンプリングするために使用される。しかし、必要に応じて、その他の構成があり得る。必要とされる場合、ダウンサンプリングユニット11は、そのダウンサンプリングユニット11が出力バッファ13に出力するデータに対して適切なガンマ補正を適用することもでき、または、これは、例えば、フラグメントシェーディングオペレーションとして、もしくは任意のその他の好適な所望の方法で行われ得る。
【０１６５】
レンダラの出力のタイルが処理され、そのデータが記憶のためにメインメモリに(例えば、メインメモリ内のフレームバッファ(図示せず)に)エクスポートされると、次のタイルが処理され、レンダラの出力(例えば、表示されるべきフレーム(画像))を生成するために十分なタイルが処理されるまで同様の処理が繰り返される。
【０１６６】
当然、グラフィックス処理パイプライン1に関するその他の構成があり得る。
【０１６７】
本発明の実施形態による図5に示されたグラフィックス処理パイプラインのオペレーションが、以降で説明される。
【０１６８】
4 x MSAAを実行するときのグラフィックス処理パイプライン1のオペレーションが、最初に説明され、次に、8 x MSAAを実行するときのオペレーションが、説明される。
【０１６９】
図6は、4 x MSAAを実行するときのグラフィックス処理パイプライン1のオペレーションを概略的に示す。
【０１７０】
図6に示されるように、4 x MSAAが実行されているとき、ラスタライザ3は、生成されるべき出力に、4つのサンプル位置を有するサンプリングマスク(すなわち、4 xサンプリングマスク)を適用し(テストし)、そのラスタライザ3がレンダリングのために生成する各フラグメントを、サンプリングマスクの所与の適用に対応する4つのサンプル点の組に関連付ける。関連すれば、単一のフラグメントが、サンプリングマスクの所与の適用の(およびしたがって出力の中のピクセルの)サンプル点の組の4つのサンプル点をすべて一度にまとめてレンダリングするために使用される。
【０１７１】
したがって、この例において、図3に示されたプリミティブ32を含む画像を考えると、ラスタライザ3は、グラフィックス処理システムのフラグメントのフロントエンド処理段階8からそのプリミティブを受信し、次に、画像内のサンプリング点のどの組が(すなわち、実質的には、配列30の中のサンプリングマスク34のどの適用が)プリミティブ32によってカバーされるサンプリング点を含むかを判定する。(これは、当技術分野で知られている任意の適切な方法で実行され得る。)次いで、ラスタライザ3は、プリミティブ32によってカバーされるサンプリング点を含むことが分かったサンプリングマスクのそれぞれの適用に関してフラグメントを生成する。このように、ラスタライザ3は、4つのサンプリング点の組に関連するフラグメントを生成する。それから、ラスタライザ3は、それらのフラグメントを、処理のためにグラフィックス処理パイプライン1のより後の段階に出力する。
【０１７２】
図7は、ラスタライザ3によって生成された各フラグメントに関して生成され、関連付けられるデータ70を概略的に示す。図7に示されるように、各フラグメントに関連付けられるデータは、とりわけ、(フラグメントが対応する(実際には、この実施形態においては、出力フレーム内の関連するピクセルの)サンプリング点の組(サンプリングマスクの適用)の画像内のx、y位置を表す)フラグメントのx、y位置71を、フラグメントに関する色(RGB)、透明度(アルファ)、深度(z)およびステンシル値などの必要なフラグメントごとのデータ72と一緒に含む。このフラグメントごとのデータ72は、当技術分野で知られているように、フラグメントに関するフラグメントデータの出力の組を提供するためにグラフィックス処理パイプライン1のより後の処理段階によって使用され、適切に修正され、そのフラグメントデータの出力の組は、次に、タイルバッファ10に記憶される。(図7は、フラグメントに関して単一の深度(Z)値を示す。その代わりに、例えば、必要に応じて、フラグメントに関連する各サンプリング位置に関して別々の深度(Z)値を持つまたは計算することが可能である。)
【０１７３】
フラグメントに関連付けられるデータ70は、フラグメントが関連付けられ、対応するサンプル点の組(サンプルマスク)内のサンプル位置のそれぞれを表すビット配列の形態であるカバレッジマスク73も含む。ビット配列カバレッジマスク73内の各位置は、対応するサンプル位置がラスタライズ段階で対象のプリミティブによってカバーされることが分かる場合は「1」に設定され、サンプル位置が対象のプリミティブによってカバーされない場合は「0」に設定される。これは、レンダリングプロセスが、所与のフラグメントに関連するサンプル点のうちのどのサンプル点が対象のプリミティブによって実際にカバーされるのかを知ることを可能にし、したがって、レンダリングプロセスは、フラグメントに関するレンダリングされたフラグメントデータが、プリミティブによってカバーされるサンプル点に対してのみ使用される(および、例えば、記憶される)ことを保証することができる。
【０１７４】
これは、図3から分かるように、サンプリングマスク34の適用に関するサンプリング点の組のサンプリング点のすべてがプリミティブによって必ずしもカバーされるとは限らないので必要である。
【０１７５】
この実施形態においては、図7に示されるように、ラスタライザによって生成される各フラグメントは、8ビットのカバレッジマスク73に関連付けられる。各フラグメント70に関連するカバレッジマスク73は、(以下でさらに検討されるように) 8 x MSAAを実行するときにフラグメントに関連付けられる8つのサンプリング点の組を許容するための8ビットを含む。
【０１７６】
4 x MSAAを実行するとき、各フラグメント70は、引き続き8ビットのカバレッジマスク73をそのフラグメント70に関連付けるが、4 x MSAAを実行するときは各フラグメント70は4つのサンプリング点の組だけをそのフラグメント70に関連付けるので、フラグメントに関するカバレッジマスク73の上位4ビット74は、4 x MSAAを実行するとき自動的に消去される(「0」に設定される)。したがって、4 x MSAAを実行するときは、カバレッジマスク73の下位4ビット75のみが、フラグメントに関連付けられるサンプリング点の組のサンプリング点を表すために使用される。
【０１７７】
(ここで、4 x MSAAを実行するとき、各フラグメントは引き続き8ビットのカバレッジマスクをそのフラグメントに関連付けるが、4 x MSAAを実行するときはカバレッジマスク73の上位4ビット74が「0」に設定されるので、サンプリング点のうちのいずれもプリミティブによってカバーされないサブフラグメントを処理することを避けるための以下で検討される「早抜け」メカニズムが、4 x MSAAを行うときは、各フラグメントが、グラフィックス処理パイプラインの各段階でカバレッジマスク73の関連する「アクティブな」下半分75に関して1回だけ処理される(1つの処理パスだけを経る)ことを意味することに留意されたい。(換言すれば、カバレッジマスク73の上位4ビット74を「0」に設定することは、カバレッジマスクのその部分が、4 x MSAAを実行するときにグラフィックス処理パイプラインの関連する段階によって処理されることから自動的に外される(カバレッジマスクのその部分の処理が自動的に省かれる)ことを保証する。))
【０１７８】
したがって、4 x MSAAを実行するとき、ラスタライザ3がレンダリングするためのプリミティブを受信するとき、ラスタライザ3は、出力のそれぞれのピクセルに対応するサンプリング点の配列の4つのサンプリング点のどの組(サンプリングマスク)がプリミティブによってカバーされるサンプリング点を含むかを最初に判定し、4つのサンプリング点のそれらの組のそれぞれに関して、図7に示される形態のデータを自身に関連付けるフラグメントを生成する。
【０１７９】
また、ラスタライザ3は、フラグメントに関するカバレッジマスク73の上位4ビット74を「0」に設定し、フラグメントに関連する4つのサンプリング位置の組のうちのいくつが対象のプリミティブによってカバーされるかに応じてカバレッジマスク73の下位4ビット75を「1」または「0」に設定する。
【０１８０】
例えば、プリミティブがフラグメントに関連する4つのサンプル位置のうちの2つだけをカバーする場合、ラスタライザ3は、例えば、カバレッジマスク73の上位4ビット74が「0」に設定され、カバレッジマスク73の下位4ビット75が、4つのサンプル位置のうちの2つがフラグメント70によってレンダリングされているが、それ以外の2つのサンプル位置は(それらが対象のプリミティブによってカバーされないので)フラグメントによってレンダリングされていないことを示すように設定される、図7に示される形態のカバレッジマスク73を生成する。
【０１８１】
次に、それぞれのそのようなフラグメントが、図6に示されたように、処理のためにグラフィックス処理パイプライン1の残りに出力される(さらに渡される)。
【０１８２】
(便宜上、図6は、(4 x MSAAを実行するときの)各フラグメントに関するカバレッジマスクの下位の「アクティブな」部分75のみを概略的に示すが、各フラグメントおよびピクセルに関するカバレッジマスクの未使用の上位部分74は示さない。)
【０１８３】
ラスタライザ3から出力されたフラグメントは、最初に、初期深度およびステンシルテスト段階4において初期深度およびステンシルテストにかけられる。初期深度およびステンシルテスト段階4は、上で検討されたように、クロックサイクルごとに4つのサンプル点をテストすることができるように構成されるので、その初期深度およびステンシルテスト段階4が受信するそれぞれの4 x MSAAフラグメントに関連する(「アクティブな」)サンプリング点のすべてを単一のパスでテストすることができ、テストし、次に、そのようにテストされたフラグメントをフラグメントシェーダ6に出力する。
【０１８４】
フラグメントシェーダ6は、上で検討されたように、(すべてのサンプリング点を並列に処理することが必要とされる場合の)varyingインターポレータ(varying位置エバリュエータ)12と同様に、そのフラグメントシェーダ6が処理のために受信する各フラグメントのサンプリング点のすべてを並列に処理する(シェーディングする)ように構成される。
【０１８５】
次いで、シェーディングされたフラグメントが、後期深度およびステンシルテスト段階7による後期深度およびステンシルテストにかけられる。初期深度およびステンシルテスト段階4と同様に、後期深度およびステンシルテスト段階7は、クロックサイクルごとに4つのサンプル点をテストすることができるように構成されるので、その後期深度およびステンシルテスト段階7が受信するそれぞれのフラグメントに関連する(アクティブな)サンプリング点のすべてを単一のパスでテストし、次に、そのようにテストされたフラグメントをブレンダ9に出力する。
【０１８６】
次に、ブレンダ9は、そのブレンダ9が受信するフラグメントを、タイルバッファ10に既に記憶されている対応するフラグメントデータと適切にブレンディングする。ブレンダ9はクロックサイクルごとに4つのサンプルをブレンディングすることができるように構成されるので、ブレンダ9は、そのブレンダ9が受信するフラグメントに関連する4つの「アクティブな」サンプリング点のすべてをやはりブレンディングすることができ、したがって、そのブレンダ9が受信する各フラグメントを単一の処理パスでそのようにブレンディングする。
【０１８７】
フラグメントがブレンディングされると、それらのフラグメントのデータが、タイルバッファ10に適切に記憶される。それぞれのレンダリングされたフラグメントに関するデータは、フラグメントに関連するそれぞれの個々のカバーされるサンプル位置に関するフラグメントデータの別々の組を提供するために、各フラグメントに関連するカバレッジマスク73によって示されるようにタイルバッファの配列10内の適切なサンプル位置に記憶される。したがって、例えば、図7に例示されるフラグメント70の場合、そのフラグメントに関するレンダリングされたデータは、フラグメント70に関連付けられるタイルバッファ10内の(アクティブな)サンプル位置のうちの2つに記憶されるが、それ以外の2つの(アクティブな)サンプル位置には記憶されない。
【０１８８】
タイルバッファ10に記憶されるフラグメントデータは、上で検討されたように、各サンプル位置に関する色(RGB)、透明度(A)、深度(Z)およびステンシル値を含む。このデータは、任意の好適な形態で記憶することができる。
【０１８９】
タイルバッファ10はそれぞれ32 x 32のデータ位置を含むので、タイルバッファ10は、16 x 16ピクセルのタイルの各ピクセルに関する4つのサンプリング点の値を記憶することができ、すなわち、タイルバッファ10は、16 x 16ピクセルのタイルの4 x MSAAをネイティブでサポートする。
【０１９０】
(上で検討されたように、画像は、通常、複数のプリミティブで構成され、単に単一のプリミティブで構成されていないので)このプロセスが所与のプリミティブに関連するすべてのフラグメントに関して完了すると、このプロセスは、出力、例えば画像の後続のプリミティブに対して繰り返される。プロセスは、タイルバッファ10がそれらのタイルバッファ10のサンプル位置のそれぞれに適切なデータを記憶するまで、対象のタイル内のプリミティブのすべてに対して繰り返される。
【０１９１】
次いで、タイルバッファ10に記憶されたデータは、当技術分野で知られているように、ダウンサンプリングと、例えば表示のためのフレームバッファ13へのその後のエクスポートとのためにダウンサンプリングユニット11にエクスポートされる。
【０１９２】
上で検討されたように、ダウンサンプリングユニット11は、4 xダウンサンプリングを行うことができる、すなわち、したがって、タイルバッファ10に記憶された4つのデータエントリがクロックサイクルごとに単一の出力データ値(ピクセル) 14にダウンサンプリングされる。したがって、4 x MSAAを実行するとき、ダウンサンプリングユニット11は、(4 xサンプリングマスクが使用されているので) (図3に示されたように)出力画像の各ピクセルに関して取得される4つのサンプルに対応する4つのサンプル値を取得し、それらのサンプル値を、フレームバッファ13への出力のために単一のピクセル出力値14に単一のパス(クロックサイクル)でダウンサンプリングする。
【０１９３】
出力(例えば、フレーム)の所与のタイルがこのようにして処理されると、次のタイルが同じ方法で処理され得、所望の出力(例えば、表示のためのフレーム)を構成するすべてのタイルが処理され、例えばフレームバッファに出力されるまで同様の処理が繰り返される。次に、次の出力、例えば、表示のためのフレームが、同じ方法で生成され得、以下同様である。
【０１９４】
上記の内容は、(例えば)表示されるべきフレームを処理するために4 x MSAAを使用するときのこの実施形態のオペレーションを説明する。しかし、上で検討されたように、この実施形態においては、(例えば)表示されるべきフレームを処理するために8 x MSAAを使用することも可能である。8 x MSAAを使用するときのこの実施形態のオペレーションが、以降で図8を参照して説明される。
【０１９５】
この実施形態においてフレームをサンプリングするために8 x MSAAを使用するとき、グラフィックスプロセッサのオペレーションは、4 x MSAAが使用されている場合に関して上で説明されたのと基本的に同じである。したがって、サンプリングマスクが入力画像に適用され、サンプルが取得され、フラグメントが生成され、それぞれのカバーされるサンプリング位置に関するレンダリングされたフラグメントデータを生成するためにレンダリングされ、レンダリングされたサンプルが、表示のための出力ピクセルを提供するために適切にダウンサンプリングされる。
【０１９６】
したがって、別途示されない限り、8 x MSAAを実行するときのグラフィックス処理パイプライン1のオペレーションは、4 x MSAAを実行するときのオペレーションと同じである。したがって、以下の説明は、オペレーションの2つのモードの間の違いに焦点を当てる。
【０１９７】
図8に示されるように、プロセスは、ラスタライザ3がレンダリングのためのフラグメントにラスタライズするためにプリミティブ2を受信することからやはり始まる。8 x MSAAを実行するとき、ラスタライザは、(4 x MSAAの場合にそうであったように4個のサンプリング点を自身に関連付けるのではなく)8個サンプリング点の組を自身に関連付ける出力フラグメント、すなわち、所与の出力ピクセルの(入力プリミティブに対する所与の8 xサンプリングマスクの適用の)すべてのサンプリング点を表すフラグメントを生成しなくてはならず、生成する。
【０１９８】
しかし、ラスタライザ3が8 xサンプリングマスクをそのままテストするように構成されるのではなく、この実施形態において、ラスタライザ3は、グラフィックス処理パイプライン1が8 x MSAAを実行すべきであるとき、それぞれが8 xサンプリングマスク全体のそれぞれ半分を表す2つの4 x「サブマスク」をテストして、それによって、実質的に、それぞれが8 xサンプリングマスクのそれぞれ半分を自身に関連付ける2つのサブフラグメントを生成し、次に、図8に示されるように、2つのそのように生成されたサブフラグメントを組み合わせて(集約して)8つのサンプリング点の完全な組と、対応する8つのサンプリング点のカバレッジマスクとを自身に関連付ける出力フラグメントを提供するように構成される(8 x MSAAを実行するとき、フラグメントの8ビットのカバレッジマスク73内のすべてのサンプリング点の位置が使用され、「アクティブ」であり、したがって、完全な8ビットのカバレッジマスクが、図8に示されるように各フラグメントに対して使用される。)
【０１９９】
言い換えると、ラスタライザ3は、8 xマルチサンプリングによるアンチエイリアシングを実行するとき、各フラグメントをそのラスタライザ3の「ネイティブの」4 x MSAAサンプルテスタに、8 xサンプリングマスクのそれぞれ半分を別々にテストするために1回ずつ2回通し、次に、結果を組み合わせて、8つのサンプリング点の組(および対応するカバレッジマスク73)を自身に関連付ける出力8 x MSAAフラグメントを生成する。
【０２００】
このオペレーションを容易にするために、ラスタライザ3は、これを行うときにそのラスタライザ3が使用する必要な追加の「半分の」8 xサンプリングパターンをサポートするように構成される。このコストは、わずかな量の制御論理、およびサンプル位置のルックアップテーブルの必要な追加のエントリである。ライタライズの性能は、4 x MSAAを実行するときと比較してやはり半減される。
【０２０１】
次に、自身に8つのサンプリング点の組を関連付ける出力フラグメントが、やはり、初期深度およびステンシルテスタ4において初期深度およびステンシルテストにかけられる。初期深度およびステンシルテスト4のオペレーションは、8 x MSAAが実行されていることを考慮に入れるように、4 x MSAAを実行するときと比較して修正される。図8に示されるように、深度およびステンシルテスタ4に8 x MSAAフラグメントに関連する8個のサンプリング点のすべてを1クロックサイクルでテストさせるのではなく、初期深度およびステンシルテスト4は、その代わりに、その初期深度およびステンシルテスト4が受信するそれぞれの8 xフラグメントを、それぞれが8 xフラグメントのそれぞれ半分を表す2つの別々の4 x「サブフラグメント」に分割し、次に、そのようにテストされたサブフラグメントを再び組み合わせて、完全な8 xカバレッジマスクを自身に関連付ける出力8 xフラグメントをやはり提供するように構成される。
【０２０２】
言い換えると、初期深度およびステンシルテスト4は、ラスタライザ3と同じように、その「ネイティブの」テスト速度で動作することができるように8 xフラグメントを複数の部分に分けて処理するように構成され、次に、それぞれの部分が所望の出力8 xフラグメントをもたらすように再び組み合わされる。このオペレーションのためのコストは、わずかな量の制御コード、ならびに4 x MSAAを実行するときと比較して初期深度およびステンシルテストの最大スループットのレートが半分になることである。
【０２０３】
また、初期深度およびステンシルテスト4は、その初期深度およびステンシルテスト4が、実はサンプリング点のうちのいずれも対象のプリミティブに実際にカバーされないサブフラグメントの深度およびステンシルテストを省くことを可能にする「早抜け」メカニズムを有するように構成される。(上で検討されたように、このメカニズムは、4 x MSAAを実行するときは、4 x MSAAフラグメントに関連する8ビットのカバレッジマスクの未使用の上半分74をテストすることを省く(避ける)ために使用される。)
【０２０４】
次に、初期深度およびステンシルテスタ4から出力された8 xフラグメントが、フラグメントシェーダ6に入力される。図8に示されるように、フラグメントシェーダ6は、そのフラグメントシェーダ6が受信するそれぞれの8 xフラグメントを全体として処理するように構成される。これは、「真の」8 x MSAAが実行されることを保証するために必要である。
【０２０５】
評価されたvarying位置(varyingインターポレータ)12は、同様に、8 xフラグメントを(必要に応じて)全体として処理するように構成される。これは、例えば、8 x MSAAのために必要とされる重心マッピングのための正しいサンプリング点が、8 xフラグメントを処理するときに選択されることを保証するために必要である。このコストは、ビットスキャナの追加の4ビット、およびvaryingインターポレータ12のための一定のサンプルのルックアップテーブルの追加の8個のエントリである。
【０２０６】
次いで、フラグメントシェーダ6から出力されるフラグメントシェーディングされた8 xフラグメントが、後期深度およびステンシルテスタ7における後期深度およびステンシルテストにかけられる。初期深度およびステンシルテスタ4と同様に、後期深度およびステンシルテスタ7は、その後期深度およびステンシルテスタ7が受信する8 xフラグメントを、それぞれがフラグメントに関連する8つのサンプリング点のうちのそれぞれの4つのサンプリング点に対応するそれぞれの「サブフラグメント」としての2つの部分に分けて処理するように構成される。同様に、後期深度およびステンシルテスタ7は、その後期深度およびステンシルテスタ7が、実はサンプリング点のうちのいずれも対象のプリミティブに実際にカバーされないサブフラグメントの深度およびステンシルテストを省くことを可能にする「早抜け」メカニズムを有する。
【０２０７】
次に、後期深度およびステンシルテスタ7を出る再び組み合わされた8 xフラグメントが、ブレンダ9において(必要に応じて)ブレンディングされる。初期深度およびステンシルテスタならびに後期深度およびステンシルテスタと同様に、ブレンダ9は、各8 xフラグメントを、それぞれがフラグメントが関連付けられる8つのサンプリング点の組の4つのサンプリング点を表すサブフラグメントに対応する複数の部分に分けて処理するように構成される。やはりこれは、ブレンダ9が、8 xブレンディングも「ネイティブで」サポートするようにそのブレンダ9を構成することを必要とせずに、そのブレンダ9がサポートするように構成される4 xのレートでそのブレンダ9のブレンディング処理を行うことを可能にするためである。さらに、ブレンダ9は、そのブレンダ9が、実はサンプリング点のうちのいずれも対象のプリミティブに実際にカバーされないサブフラグメントのブレンディングを省くことを可能にする「早抜け」メカニズムを有する。
【０２０８】
次に、ブレンダ9から出力された8 xフラグメントが、タイルバッファ10に記憶される。しかし、8 x MSAAを実行するとき、4 x MSAAに関して存在するタイルごとのサンプリング点の2倍のタイルごとのサンプリング点が存在する。タイルバッファのサイズを増やす必要なしにこれを考慮に入れるために、グラフィックス処理パイプライン1は、8 x MSAAを実行するとき、各タイルを、そのタイルの上半分をレンダリングするために1回と、次にそのタイルの下半分をレンダリングするために1回との2回レンダリングするように構成される。
【０２０９】
これが、8 x MSAAのための2つのラスタライズパス、16 x 16ピクセルのタイルの上半分の16 x 8ピクセルをラスタライズする第1のパスと、16 x 16のタイルの下半分の16 x 8ピクセルをレンダリングする第2のパスとを示す図9に示される。図9は、4 x MSAAを実行するときに行われるタイルの16 x 16ピクセルのすべてをラスタライズする単一のラスタライズパスも比較して示す。
【０２１０】
常にタイルの半分だけが処理されているので、(8 x MSAAにおいて)そのタイルの半分に関するすべてのサンプルのために十分な空間がタイルバッファに存在する。ラスタライザ3は(上で検討されたように)階層的に動作するので、所与のレンダリングパスで処理されるべきでないタイルの半分の省略が、非常に効率的に行われることができる。このためのコストは、わずかな量の制御論理、および処理すべき各タイルに関して2つのレンダリングパスを実行する(すなわち、タイル内のすべてのプリミティブを2回調べる)必要があることである。
【０２１１】
図10は、それに対応して、各処理パスに関するバッファ10の内容を示す。したがって、図10に示されるように、8 x MSAAを実行するとき、第1のパスは、タイルの上半分の16 x 8ピクセルに関するピクセルごとに8個のサンプルでタイルバッファを満たし、第2のレンダリングパスは、タイルの下半分の16 x 8ピクセルに関するピクセルごとに8個のサンプルでタイルバッファを満たす。(対照的に、図10に示されるように、4 x MSAAを実行するときは、タイルの16 x 16ピクセルのそれぞれに関するピクセルごとに4個のサンプルでタイルバッファを満たす単一のパスが存在する。)
【０２１２】
タイルの関連する半分が処理され、タイルバッファ10が関連するタイルのサンプルデータで満たされると、やはり、タイルデータがダウンサンプリングされ、フレームバッファに書き戻される。
【０２１３】
図8に示されたように、ダウンサンプリング(マルチサンプル解決)ユニット11は、それぞれの8 xピクセルを、それぞれが対象のピクセルに関してダウンサンプリングされる必要がある8つのサンプリング点のうちの4つのサンプリング点のそれぞれの組を表す複数の部分に分けて処理するように構成される。これは、やはり、ダウンサンプラ11が、そのダウンサンプラ11の「ネイティブの」ダウンサンプリングのレートで動作する、すなわち、4 xダウンサンプリングを実行することを可能にする。
【０２１４】
当業者に理解されるであろうように、各4 xダウンサンプリングオペレーションが、出力値を生成する。次に、これらの2つの出力値(8 xピクセルの各部分から1つずつ)が、例えば、フレームバッファに出力される(書き戻される)最終的な単一のピクセル値をもたらすために一緒に組み合わされる必要がある。
【０２１５】
この実施形態において、ダウンサンプリングユニット11は、2 xスーパーサンプリングによるアンチエイリアシング(2 x SSAA)を実行するための別の回路を含み、したがって、この回路が、追加的なクロックサイクルを必要とせずに、所与の出力ピクセルに関する8つのサンプリング点の組のそれぞれ半分に対するそれぞれの4 xダウンサンプリングオペレーション(パス)からの2つのダウンサンプリングされた結果の値を組み合わせて、(続いてフレームバッファに書き戻される)8 xピクセルに関する単一の出力値をもたらすために使用される。
【０２１６】
したがって、8 x MSAAを実行するときのダウンサンプリングおよびタイルライトバックオペレーションは、基本的に、ダウンサンプリングおよびタイルライトバックオペレーションが4 x MSAA + 2 x SSAAのために動作するのと同様に動作するように構成される(唯一の違いは、それがタイルのどちらの半分が書き戻されているかも考慮に入れる必要があることである)。これに関する領域のオーバヘッドは、無視できる。
【０２１７】
ダウンサンプリングユニット11が2 x SSAAをネイティブでサポートしない(例えば、2 x SSAA用の別の回路を含まない)場合、所与の出力ピクセルに関する8つのサンプリング点の組のそれぞれ半分に対するそれぞれの4 xダウンサンプリングオペレーションからの2つのダウンサンプリングされた結果の値は、その代わりに、例えば、必要に応じて(次のクロックサイクルで)後続のダウンサンプリングパスで8 xピクセルに関する単一の出力値をもたらすように適切に組み合わされ(平均され)得る。
【０２１８】
8 x MSAAが使用されているときに各サンプリング位置に関するレンダリングされたフラグメントデータを圧縮することなど、レンダリングされたフラグメントデータが、8 x MSAAを実行するときにタイルバッファに同じピクセル解像度で(すなわち、出力ピクセルごとに4つのサンプルではなく、出力ピクセルごとに8つのサンプルが存在するとしても、各タイルバッファが、出力ピクセルの16 x 16の配列に対応するように)記憶されることを可能にするためのその他の構成が、必要に応じて使用され得る。
【０２１９】
上記の内容は、この実施形態が、表示されるべきフレームなどの、グラフィックス処理パイプラインによって生成されるべき出力の4 xマルチサンプリングまたは8 xマルチサンプリングを実行するためにどのように使用され得るかを説明する。データを処理のためにグラフィックスプロセッサに送信するアプリケーションは、マルチサンプリングのどの形態(4 xまたは8 x)が使用されるべきかを示すことができ、その場合、グラフィックスプロセッサが、それに応じてそのグラフィックスプロセッサ自身を構成し、動作する。
【０２２０】
この実施形態が、4 x MSAAをネイティブでサポートするように構成された処理段階を有するグラフィックス処理パイプラインを用いて8 x MSAAを実行することに関して上で説明されているが、同じ原理が、任意の数のサンプル、および16 x MSAAまたはそれよりも高いレベルなどの任意のより高いレベルのマルチサンプリングによるアンチエイリアシングに対して適用することができる。同様に、グラフィックス処理パイプラインは、同じ原理がそれぞれのより高いレベルのマルチサンプリングによるアンチエイリアシングに対して適用されるようにして、何らかのその他のレベルのマルチサンプリングによるアンチエイリアシングをネイティブでサポートするように構成される可能性がある。
【０２２１】
本発明は、少なくともその好ましい実施形態において、より低いレベルのアンチエイリアシングをネイティブでサポートするように構成されるグラフィックス処理パイプラインを用いて、著しい追加的なハードウェアのコストを負う必要なしにより高いレベルのマルチサンプリングによるアンチエイリアシングを実装するための方法を提供することが上記の内容から分かる。
【０２２２】
したがって、例えば、本発明は、少なくともその好ましい実施形態において、8 xマルチサンプリング(アンチエイリアシング)が、実質的に、4 xマルチサンプリング(アンチエイリアシング)を実行するように構成されるアーキテクチャを使用して実現されることを可能にする。したがって、ユーザは、性能の低下を伴うものの、とにかく、アーキテクチャを「最高速度の」8 xマルチサンプリングによるアンチエイリアシングをサポートするように構成しなければならないよりはずっと低いコストで4 xマルチサンプリングと8 xマルチサンプリングの間の選択の余地がある。
【０２２３】
したがって、本発明は、より高いレートのアンチエイリアシングが実現されることを可能にすることができるが、グラフィックスプロセッサのサイズおよび能力の使用の著しい増加を必要としない。
【０２２４】
これは、少なくとも本発明の好ましい実施形態において、より高いレベルのマルチサンプリングによるアンチエイリアシングを実行するときに、グラフィックス処理パイプラインの選択された部分を複数回繰り返し、次に結果を組み合わせることによって実現される。処理パイプラインのその他の選択された部分は、所望のより高いレベルのマルチサンプリングによるアンチエイリアシングへの準拠を保証するために、より高いレベルのマルチサンプリングによるアンチエイリアシングを実行するときにフラグメントを全体として処理するように構成される。
【符号の説明】
【０２２５】
1  グラフィックス処理パイプライン
2  プリミティブ
3  ラスタライズ段階
4  初期Z (深度)およびステンシルテスト段階、初期深度およびステンシルテスタ
6  フラグメントシェーディング段階、フラグメントシェーダ
7  後期Z (深度)およびステンシルテスト段階、後期深度およびステンシルテスタ
8  フラグメントのフロントエンドオペレーション、フラグメントのフロントエンド処理段階
9  ブレンディング段階、ブレンダ
10  タイルバッファ、タイルバッファの配列
11  ダウンサンプリングおよびライトバック(マルチサンプル解決)段階、ダウンサンプリングユニット、マルチサンプル解決ユニット、ダウンサンプラ
12  varyingインターポレータ、varying位置エバリュエータ
13  出力バッファ
14  出力値(ピクセル)
30  サンプリングマスクの配列
32  プリミティブ
34  サンプリングマスク
35  サンプリング位置
36  サンプリング位置
37  サンプリングマスク
39  サンプリングマスク
70  データ
71  x、y位置
72  フラグメントごとのデータ
73  カバレッジマスク
74  上位4ビット
75  下位4ビット
【図３】
2013137756.tif 000003
【図５】
2013137756.tif 000004
【図６】
2013137756.tif 000005
【図７】
2013137756.tif 000006
【図８】
2013137756.tif 000007
【図９】
2013137756.tif 000008
【図１０】
2013137756.tif 000009
【図１】
2013137756.tif 000010
【図２】
2013137756.tif 000011
【図４】
2013137756.tif 000012
【外国語明細書】
2013137756000001.pdf