(57)【要約】【解決手段】  本発明の実施形態は、アンチエイリアシングされた画像レンダリングの性能を向上させることに向けられる。１つの実施形態は、アンチエイリアシングされた画像から画素をレンダリングする方法である。方法は、画素の複数のアンチエイリアシングされたサンプルからの第１のセット及び第２のセットのサンプルをそれぞれ第１のメモリ及び第２のメモリ内に記憶することと、第１のセットのみからの又は第１及び第２のセットからの決定された数のサンプルをレンダリングすることと、を含む。対応するシステム及びコンピュータプログラム製品の実施形態も開示される。【選択図】図３
2013539095.tif 000002
【特許請求の範囲】
【請求項１】
アンチエイリアシングされた画像から画素をレンダリングする方法であって、
前記画素の複数のアンチエイリアシングされたサンプルからの第１のセット及び第２のセットのサンプルをそれぞれ第１のメモリ及び第２のメモリ内に記憶することと、
前記第１のセットのみからの又は前記第１及び第２のセットからの決定された数の前記サンプルをレンダリングすることと、を備える方法。
【請求項２】
前記第１のセットにおけるサンプルの数は予め決定されている請求項１の方法。
【請求項３】
前記第１のセットにおけるサンプルの数は前記画像の特性に基づいて決定される請求項１の方法。
【請求項４】
前記第１のセットにおけるサンプルの数はサンプルのサイズ及び前記第１のメモリのサイズに基づいて決定される請求項１の方法。
【請求項５】
レンダリングされるべきサンプルの数は前記画素に接触しているオブジェクトに基づいて決定される請求項１の方法。
【請求項６】
前記第１のメモリは前記第２のメモリよりも高速でプロセッサにとってアクセス可能である請求項１の方法。
【請求項７】
前記第１のメモリはグラフィクスプロセッサユニット（ＧＰＵ）に結合されるグラフィクスメモリであり、前記第２のメモリはシステムメモリである請求項１の方法。
【請求項８】
前記アンチエイリアシングされたサンプルは多重サンプリングされる請求項１の方法。
【請求項９】
レンダリングすることは、前記決定された数のサンプルがレンダリングされるまで、予め定められたシーケンスに従い、前記第２のセットからのサンプルが随意的に続く前記第１のセットからの当該１つ以上のサンプルをレンダリングすることを備える請求項１の方法。
【請求項１０】
前記第１のセットが前記決定された数のサンプルよりも少ないサンプルを有する場合に前記第２のセットからのサンプルがレンダリングされる請求項９の方法。
【請求項１１】
当該１つ以上のサンプルの各々はそれぞれのサーフェス内に記憶される請求項１の方法。
【請求項１２】
レンダリングされるべき前記サンプルの数を決定することを更に備える請求項１の方法。
【請求項１３】
アンチエイリアシングされた画像から画素をレンダリングするためのシステムであって、
少なくとも１つのプロセッサと、
前記プロセッサに結合される第１のメモリ及び第２のメモリと、
前記画素の複数のアンチエイリアシングされたサンプルからの第１のセット及び第２のセットのサンプルをそれぞれ第１のメモリ及び第２のメモリ内に記憶するように構成される分割アンチエイリアシングサンプルライタと、を備えるシステム。
【請求項１４】
前記第１のセットのみからの又は前記第１及び第２のセットからの決定された数の前記サンプルをレンダリングするように構成される分割アンチエイリアシングサンプルリーダを更に備える請求項１３のシステム。
【請求項１５】
前記分割アンチエイリアシングサンプルリーダは、レンダリングされるべき前記サンプルの数を決定するように更に構成される請求項１４のシステム。
【請求項１６】
前記分割アンチエイリアシングサンプルリーダは、前記決定された数のサンプルがレンダリングされるまで、予め定められたシーケンスに従い、前記第２のセットからのサンプルが随意的に続く前記第１のセットからの当該１つ以上のサンプルをレンダリングするように更に構成される請求項１３のシステム。
【請求項１７】
前記第１のセットが前記決定された数のサンプルよりも少ないサンプルを有する場合に前記第２のセットからのサンプルがレンダリングされる請求項１３のシステム。
【請求項１８】
前記第１のメモリはグラフィクスプロセッサユニット（ＧＰＵ）に結合されるグラフィクスメモリであり、前記第２のメモリはシステムメモリである請求項１３のシステム。
【請求項１９】
前記第１のメモリは前記第２のメモリよりも高速なアクセス速度に対して構成される請求項１３のシステム。
【請求項２０】
命令を記憶するコンピュータ可読媒体であって、前記命令は、実行されるときに、少なくとも１つのプロセッサをある方法で用いて、アンチエイリアシングされた画像から画素をレンダリングするように適合させられ、前記方法は、
前記画素の複数のアンチエイリアシングされたサンプルからの第１のセット及び第２のセットのサンプルをそれぞれ第１のメモリ及び第２のメモリ内に記憶することと、
前記第１のセットのみからの又は前記第１及び第２のセットからの決定された数の前記サンプルをレンダリングすることと、を備えるコンピュータ可読媒体。
【請求項２１】
前記方法は、前記決定された数のサンプルがレンダリングされるまで、予め定められたシーケンスに従い、前記第２のセットからのサンプルが随意的に続く前記第１のセットからの当該１つ以上のサンプルをレンダリングすることを更に備える請求項２０のコンピュータ可読媒体。
【請求項２２】
前記第１のセットが前記決定された数のサンプルよりも少ないサンプルを有する場合に前記第２のセットからのサンプルがレンダリングされる請求項２０のコンピュータ可読媒体。
【請求項２３】
前記第１のメモリはグラフィクスプロセッサユニット（ＧＰＵ）に結合されるグラフィクスメモリであり、前記第２のメモリはシステムメモリである請求項２２のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、アンチエイリアシングされた画像(anti-aliased images)のディスプレイに関する。
【背景技術】
【０００２】
モニタにおいては現実の世界での平滑なエッジが正確にはディスプレイされないので、ディスプレイされた画像にはギザギザなエッジ(jagged edges)等のエッジ効果が生じる。モニタは画素をディスプレイし、画素は画面上の離散点である。エッジ効果は視覚的に魅力的でないことがある。そこで、そのようなエッジ効果を低減するために、アンチエイリアシング(anti-aliasing)（ＡＡ）技術がよく利用される。スーパーサンプリング及び多重サンプリングは２つのアンチエイリアシング技術である。スーパーサンプリングにおいては、より高い解像度で画像がレンダリングされ(rendered)、画素毎に幾つかのサンプルが記憶される。多重サンプリングにおいては、オリジナル画素が複数のロケーションでサンプリングされ、これらのサンプルは画素毎に記憶される。ディスプレイされるべき画像をレンダリングする場合には、実際の画素値は、当該画素に対して記憶された複数のサンプルを上手く利用することによって決定され得る。４ｘアンチエイリアシングされた画像、即ち４ｘＡＡ画像においては、アンチエイリアシングされた画像の各画素に対して４サンプルが取られる。これらのサンプルは、画像又は場面をディスプレイすることに関連する色値、深さ値及び／又は他の属性を含み得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
レンダリングされた画像は、グラフィクスプロセッサユニット（ＧＰＵ）メモリ、システムメモリ又はコンピュータシステムの他のメモリ内に記憶され得る。アンチエイリアシングが有効化されると、画像のメモリフットプリント(memory footprint)が相当大きくなる。例えば４ｘＡＡが用いられている場合、一般的には各画素は４サンプルを必要とするので、画像を記憶するのに必要なメモリのかなりの増大が生じる。必要なメモリフットプリントの増大は、フレームをレンダリングする際のスケーラビリティ制限、帯域制限及び遅延に起因する性能低下をもたらす可能性がある。例えば、大きなメモリフットプリントに加え、メモリ内での同じ画像の多重サンプルのアクセスは、メモリ帯域輻輳(bandwidth congestion)を生じさせる可能性がある。
【０００４】
そこで、アンチエイリアシングが用いられる場合にメモリ帯域の利用を改善する方法及びシステムが求められている。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、アンチエイリアシングされた画像レンダリングの性能を向上させることに向けられる。１つの実施形態は、アンチエイリアシングされた画像から画素をレンダリングする方法である。方法は、画素の複数のアンチエイリアシングされたサンプルの第１のセット及び第２のセットをそれぞれ第１のメモリ及び第２のメモリ内に記憶することと、第１のセットからの又は第１及び第２のセットからの決定された数のサンプルをレンダリングすることと、を含む。
【０００６】
別の実施形態は、アンチエイリアシングされた画像から画素をレンダリングするためのシステムである。システムは、少なくとも１つのプロセッサと、プロセッサに結合される第１のメモリ及び第２のメモリと、分割アンチエイリアシングサンプルライタ(split anti-aliased sample writer)と、を備える。分割アンチエイリアシングサンプルライタは、画素の複数のアンチエイリアシングされたサンプルの第１のセット及び第２のセットのサンプルをそれぞれ第１のメモリ及び第２のメモリ内に記憶するように構成される。システムは分割アンチエイリアシングサンプルリーダを含んでいてもよい。分割アンチエイリアシングサンプルリーダは、第１のセットのみからの又は第１及び第２のセットからの決定された数のサンプルをレンダリングするように構成され得る。
【０００７】
更に別の実施形態は、命令を記憶するコンピュータ可読媒体であり、ここで命令は、実行されるときに、少なくとも１つのプロセッサをレンダリング方法で用いて、アンチエイリアシングされた画像から画素をレンダリングするように適合させられる。レンダリング方法は、画素の複数のアンチエイリアシングされたサンプルの第１のセット及び第２のセットをそれぞれ第１のメモリ及び第２のメモリ内に記憶することと、第１のセットのみからの又は第１及び第２のセットからの決定された数のサンプルをレンダリングすることと、を含む。
【０００８】
本発明の更なる実施形態、特徴及び利点並びに本発明の種々の実施形態の構成及び動作は、添付図面を参照して以下に詳細に説明される。
【図面の簡単な説明】
【０００９】
ここに組み込まれ且つ出願書類の一部をなす添付の図面は、本発明の実施形態を示し、そして明細書と共に、本発明の原理を説明すること及び関連分野を含めた当業者が本発明の実施形態を作りそして使用するのを可能にすることに更に役立つ。
【００１０】
【図１】図１は本発明の実施形態に従うグラフィクスコンピューティング環境のブロック図である。
【００１１】
【図２】図２は本発明の実施形態に従う多重サンプリングされた画素サンプルの複数のメモリへの例示的な割り当てを示す図である。
【００１２】
【図３】図３は本発明の実施形態に従うアンチエイリアシングされた画像のレンダリングを示すフローチャートである。
【００１３】
添付図面を参照して本発明が説明されることになる。概して、ある要素が最初に現れる図面は、対応する参照番号における最も左の単一又は複数の数字によって典型的には示される。
【発明を実施するための形態】
【００１４】
概要及び要約の欄ではなく、詳細な説明の欄が特許請求の範囲を解釈するために用いられることが意図されていると理解されるべきである。概要及び要約の欄は、発明者によって検討された本発明の１つ以上のしかし全部ではない例示的な実施形態を説明することができ、従って本発明及び添付の特許請求の範囲を限定することが意図されているわけではけっしてない。
【００１５】
アンチエイリアシングは、画像のディスプレイにおけるエッジ効果を低減するために行われる。スーパーサンプリング又は多重サンプリングによる等の画像フレームのアンチエイリアシングは、画像の各画素に対して複数のサンプルを生成する。スーパーサンプリングにおいては、オリジナル画像は高解像度でレンダリングされ、そして高解像度画像からの幾つかのサンプルが結合（又は平均化）されて所望の解像度で画像をレンダリングする。多重サンプリングにおいては、画素は幾つかのロケーションでサンプリングされる。例えば４ｘＡＡ多重サンプリングされた画像においては、４つのサンプルが各画素から取られる。これら多重サンプルを画素毎に記憶することは、アンチエイリアシングされた画像を記憶するのに必要なメモリフットプリントに関して及び画像をレンダリングする間の多重サンプルのリトリーブ(retrieval)に起因して生じる追加的なメモリトラフィックに関して、高価になり得る。
【００１６】
また、多くの画素については、サンプルの僅かしか実際にはレンダリングには使用されない。本発明の実施形態は、アンチエイリアシングされたサンプルに基く画像を効率的にレンダリングするやり方で、アンチエイリアシングされたサンプルを組織化することに向けられている。ある実施形態に従うと、画素のアンチエイリアシングされたサンプルは、異なるメモリ内に記憶される。異なるメモリは、異なるストレージ(storage)及びアクセス特性を有することができる。異なるメモリのそれぞれに記憶されるべきサンプルは、例えば画像をレンダリングするのにサンプルが実際に使用されることになる可能性(likelihood)に基いて選択され得る。最も使用されるサンプルのみをＧＰＵのグラフィクスメモリ等のローカルメモリ内に記憶することによって、より多くの画素のサンプルをグラフィクスメモリ内に収容することができ、それにより実行速度の全体的増大及びメモリトラフィックの低減がもたらされ、これは例えばレンダリングのために必要な全ての画像データにＧＰＵがローカルグラフィクスメモリ内でアクセスすることができるからである。
【００１７】
以下の説明では、本発明の実施形態は主として多重サンプリングに関連して説明される。しかし、当業者であればＡＡの他の方法も用いられ得ることを認識するはずである。
【００１８】
〔アンチエイリアシングされた画素サンプルのストレージを分割するためのシステム〕
図１は本発明の実施形態に従うコンピューティング環境を示している。例えばコンピューティング環境１００は、ＧＰＵ１０４に結合される中央処理ユニット（ＣＰＵ）１０２を含む。関連分野を含めた当業者がここでの説明に基き理解するであろうように、本発明の実施形態は図示される１つ以上のＧＰＵを含み得る。ＧＰＵ１０４は、メモリ、ディスプレイ等の追加的なコンポーネントに結合されていてよい。ＧＰＵ１０４は、グラフィクス処理（例えばレンダリング）又はディスプレイタスク等のグラフィクス関連タスクをＣＰＵ１０２から受け取る。当業者によって理解されるであろうように、ＧＰＵ１０４は、図示されるように個別のコンポーネント（即ち別々のデバイス）であってよく、一体化コンポーネント（例えば、単一の集積回路（ＩＣ）や単一パッケージハウジングの多重ＩＣ等の単一デバイスへと集積化されたもの、他のＩＣ、例えばＣＰＵ又はノースブリッジへと集積化されたもの）であってよく、そして非類似のもの（例えば性能等の何らかの異なる能力を有しているもの）であってよい。
【００１９】
ＧＰＵ１０４は、コマンドプロセッサ１１２、メモリ制御器１１４、ローカルグラフィクスメモリ１１６及びシェーダコア１１８を含むことができる。コマンドプロセッサ１１２は、ＧＰＵ１０４上でのコマンド実行を制御する。例えばコマンドプロセッサ１１２は、ＧＰＵ１０４内で処理されるべきＣＰＵ１０２からのコマンド及びデータの受信を制御し且つ／又は連携させることができる。コマンドプロセッサ１１２はまた、一般的にはメモリ制御器１１４を介して、グラフィクスメモリ１１６内でのメモリの割り当てを制御し且つ／又は連携させることができる。メモリ制御器１１４は、データの読み出し及び書き込みのためのグラフィクスメモリ１１６へのアクセスを制御することができる。幾つかの実施形態においては、メモリ制御器１１４はまた、システムメモリ１０８とグラフィクスメモリ１１６の間で裁定する(arbitrate)ことができるので、処理に必要なデータはいずれかのメモリから得ることができる。メモリ制御器１１４、シェーダコア１１８及び／又はコマンドプロセッサ１１２は、画素サンプルストレージロケーションのトラックを維持するメモリマッピング１３４へのアクセスを有することができる。一般的にグラフィクスメモリ１１６は、例えば組み込み型ＤＲＡＭ（ＥＤＲＡＭ）等の高速ランダムアクセスメモリである。システムメモリと比べて、グラフィクスメモリ１１６は概してＧＰＵへの高速アクセスを可能にする。シェーダコア１１８は、グラフィクス処理スレッド等の種々の処理タスクを実行する処理ユニットを含む。例えばシェーダコア１１８内の処理ユニットは、複数の単一命令多重データ(single instruction multiple data)（ＳＩＭＤ）処理ユニットを含むことができる。シェーダコア１１８上で実行するグラフィクス処理スレッドは、頂点シェーダ、幾何シェーダ及び画素シェーダ等のシェーダプログラム（単に「シェーダ」とも称されることがある）を含むことができる。レンダリングスレッド等の他のグラフィクス処理スレッドもまた、シェーダコア１１８上で実行可能である。シェーダコア１１８において実行されるべきタスクは、例えばコマンドプロセッサ１１２によって割り当てられ得る。
【００２０】
ある実施形態に従うと、ＧＰＵ１０４はまた、レンダリング動作ブロック(render operations block)（ＲＯＰ）１２０、テクスチャマッパ(texture mapper)１２２、分割ＡＡサンプルライタ(split AA sample writer)１２４及び分割ＡＡサンプルリーダ(split AA sample reader)１２６等の他のモジュールを含むことができる。ＲＯＰ１２０、テクスチャマッパ１２２、分割ＡＡサンプルライタ１２４及び分割ＡＡサンプルリーダ１２６の論理は、ハードウエア、ファームウエア、ソフトウエア又はこれらの組み合わせを用いて実装され得る。ＲＯＰ１２０は、メモリ及び／又は他のロケーションへと画面をレンダリングする論理を含む。例えばＲＯＰ１２０は、画素処理シェーダの出力からメモリへと画像をレンダリングする論理を含むことができる。ある実施形態に従うと、ＲＯＰ１２０は、画素のアンチエイリアシングされたサンプル(anti-aliased sample)をメモリに書き込むために分割ＡＡサンプルライタ１２４を呼び出す(invoke)ことができる。
【００２１】
テクスチャマッパ１２２は、メモリ内に記憶される多重サンプリングされたサンプルを用いて画像のテクスチャマッピング及び／又はレンダリングを行う論理を含む。例えばテクスチャマッパ１２２は、種々の照明効果(lighting effects)を表現するためにグラフィクスオブジェクトをテクスチャマッピングするのに、多重サンプリングされたサンプルをメモリから読み出すことができる。アンチエイリアシングされたサンプルの場合に４つの別々のサンプルをメモリから読み出すことは、非アンチエイリアシングの場合に画素毎に単一のサンプルだけを読み出す必要性があるのと比較して、追加的なメモリトラフィックの原因となる。また、多くのアプリケーションは、レンダリング及びテクスチャマッピングの多重パスを伴うので、メモリトラフィックの増大をもたらす。ある実施形態に従うと、テクスチャマッパ１２２は、別々のメモリ内に記憶されている多重サンプリングされたサンプルを読み出すために、分割ＡＡサンプルリーダ１２６を呼び出すことができる。
【００２２】
分割ＡＡサンプルライタ１２４は、各画素のアンチエイリアシングされたサンプルを、それらをメモリ内に記憶する前に分割する論理を含む。サンプルは、システムメモリ内、グラフィクスメモリ内及び／又は別のメモリ内に記憶され得る。サンプルは、種々のストレージスキームに従って異なるメモリ内に記憶され得る。グラフィクスメモリ内にサンプルを記憶させることは、レンダリング及び／又はテクスチャマッピングに際してこれらサンプルへのより高速なアクセスを生み出す。図２はアンチエイリアシングされたサンプルのセットに適用されるメモリの間でのサンプルの例示的な分割を示している。多重メモリ間での分割されたサンプルの記憶は、図２及び図３を参照して後で更に説明される。
【００２３】
分割ＡＡサンプルリーダ１２６は、多重メモリ間に分散させられたアンチエイリアシングされたサンプルを読み出す論理を含む。ある実施形態に従うと、分割ＡＡサンプルリーダ１２６は、１つ以上の画素サンプルに対する要求を、画素識別子及び随意的にサンプル識別子を指定する入力として取り込むと共に、当該１つ以上のサンプルに対応する値を返送するように構成される。分割ＡＡサンプルリーダ１２６は、レンダリングのためにリトリーブされるべきサンプルの数及びロケーションを決定することにより、サンプルを読み出すように構成され得る。画素サンプルに対する要求を受け取ると、分割ＡＡサンプルリーダ１２６は、要求された画素のために読み出されるべきサンプルの数、及びサンプルをグラフィクスメモリ及び／又はシステムメモリからリトリーブするかどうかを決定することができる。幾つかの実施形態においては、何個のサンプルがリトリーブされるべきかの決定は、画素毎基準でなされ得る。幾つかの実施形態においては、何個のサンプルがリトリーブされるべきかの決定は、フレーム毎、又はより高いレベルの粒度(granularity)でなされる。ＡＡサンプルの読み出しは、サンプルがメモリ内に記憶されるストレージスキームにより影響を受ける可能性がある。ＡＡサンプルの読み出しは、図２及び図３に関連して後で更に説明される。
【００２４】
コンピューティング環境１００はまた、システムメモリ１０８を含む。システムメモリ１０８は、ＧＰＵ１０４とＣＰＵ１０２の間で転送されるコマンド及びデータを保持するために用いられ得る。幾つかの実施形態においては、システムメモリはまた、サンプルストレージ１３４を含み得る。グラフィクス動作を用いてデータが処理された後、処理されたデータはＧＰＵ１０４によりシステムメモリへ書き戻され得る。例えば幾つかの実施形態においては、グラフィクスメモリ１１６からの処理されたデータは、更なる処理のために又は画面１１０等の画面上でのディスプレイのために用いられるより先に、システムメモリ１０８に書き込まれ得る。幾つかの実施形態においては、ＧＰＵ１０４内で処理されたフレームデータは、ディスプレイエンジン１０９を介して画面１１０へと書き込まれる。ディスプレイエンジン１０９は、ハードウエア及び／若しくはソフトウエア内に実装されてよく又はそれらの組み合わせとして実装されてよく、そして画面１１０の特性に基くデータのディスプレイを最適化する機能を含んでいてよい。別の実施形態においては、ディスプレイエンジン１０９は、処理されたディスプレイデータをＧＰＵメモリ１１６から直接的に受け取ることができる。
【００２５】
コンピューティングシステム１００の種々のデバイスは、通信基盤１０６によって結合される。例えば通信基盤１０６は、周辺コンポーネント相互接続エクスプレス(Peripheral Component Interconnect Express)（ＰＣＩ−Ｅ）を含む１つ以上の通信バスを含み得る。通信基盤１０６はまた、例えばイーサネット（登録商標）(Ethernet（登録商標）)、ファイヤワイヤ(Fire Wire)又は他の相互接続デバイスを含み得る。
【００２６】
上述の説明では、ＧＰＵ１０４は厳選されたコンポーネント及び機能を含むものとして図示されてきた。しかし、当業者であれば、ＧＰＵ１０４が、限定はされないがプリミティブアセンブリ、シーケンサ、シェーダエクスポートメモリ、レジスタ等の他のコンポーネントを含み得ることを理解するはずである。
【００２７】
図２は２つのメモリ間でのサンプルの例示的な割り当てを示している。ある実施形態に従うと、画素のアンチエイリアシングされたサンプルは、ＧＰＵのグラフィクスメモリ１１６内及びシステムメモリ１０８内に記憶され得る。各画素に対して、各メモリ内に記憶されるべきサンプルのセットは、種々の基準に基いて決定することができ、例えばサンプルが実際にレンダリングで用いられる可能性及び／又はサンプルがどれくらいの頻度でレンダリングに用いられ易いかに基いて決定することができる。ある実施形態に従うと、レンダリングのために最もリトリーブされそうな１つ以上のサンプルがＧＰＵメモリ１１６等のより高速なメモリ内に記憶されてよく、そして他のサンプルは、システムメモリ１０８等のより低速なメモリ内に記憶されてよい。図示される例は、画素ｐの４つのサンプルの例を示しており、サンプル０及び１（即ち（ｐ，０）及び（ｐ，１））はＧＰＵメモリ１１６内に記憶される一方、サンプル２及び３（即ち（ｐ，２）及び（ｐ，３））はシステムメモリ内に記憶される。
【００２８】
各メモリに割り当てられるサンプルは、例えばアクセス及び／又はストレージの効率を向上させる等のための任意のスキームに従って配置され得る。ある実施形態に従うと、それぞれの画素の第０サンプルは連続的なメモリブロック内に記憶されてよく、それぞれのブロックの第１サンプルがそれらに続き得る等である。全ての画素に対する特定のサンプル位置のサンプルを備える全サーフェス(entire surface)は、連続的なメモリ区域内に記憶され得る。ＧＰＵメモリは第０及び第１サンプルに対するサーフェスを記憶することができ、また第２及び第３サンプルはシステムメモリ内に記憶され得る。メモリマップ１３４は、各サーフェスに対して、その基本アドレス、及びサーフェスがＧＰＵメモリ又はシステムメモリのどちらに記憶されるのかを含む。特定のサンプル、例えば画素ｐの第１サンプルのロケーションは、第１サンプルサーフェスの基本アドレス、及びストライド(stride)に基き決定され得る。例えば実際の位置は、第１サンプルの基本アドレスからｐを乗ぜられたストライドのオフセットにあってよく、ここでストライドは１つのサンプルにより占められるメモリ空間に対応する。基本アドレス及びストライドを用いてそれぞれの記憶されたサンプルにアクセスすることによって、それぞれのサンプルロケーションのための別々のアドレスを記憶するのと比較して、メモリマップ１３４がサンプルロケーションのアドレスを記憶するのに必要なメモリの量が少なくなる。
【００２９】
別の実施形態においては、各メモリ内で、ある画素から当該メモリへと割り当てられる全てのサンプルは、連続的なメモリ内に記憶される。例えば、各画素の第０及び第１サンプルは連続的なＧＰＵメモリ内に記憶されてよく、また第２及び第３サンプルは連続的なシステムメモリ内に記憶され得る。別の実施形態においては、記憶されるロケーションの他のサンプルに対する何ら特定の関係性も伴わずに、サンプルを記憶することができる。各メモリにおいてサンプルは当該メモリに最も適するように記憶されてよく、また組織化されてよい。それぞれのサンプルのアドレスは、各メモリロケーションの完全アドレスがメモリマップ内に記憶される必要のないようなやり方で、メモリマップ１３４内で指定され得る。
【００３０】
〔アンチエイリアシングされた画素サンプルのストレージを分割するための方法〕
図３は本発明の実施形態に従い画素のそれぞれのアンチエイリアシングされたサンプルのストレージを複数のメモリの間で分割するためのプロセスを示すフローチャートである。ステップ３０２では、サンプルが各メモリ内に記憶されることになる比率(ratio)が決定される。ある実施形態に従うと、それぞれＧＰＵメモリ内及びシステムメモリ内に記憶されることになるサンプルの数が決定される。ＧＰＵメモリ内に記憶されることになるサンプルの数は、種々の要因に基いて決定することができ、例えばＧＰＵメモリのサイズ、サンプルサイズ、各サーフェスのサイズ、異なる画像の数及び／又はサーフェスが記憶されるべき画面等に基いて決定することができる。一般に、各画像及び／又は画面に対して、最も頻繁に用いられることが予想されるサンプルに対応するサーフェスを記憶することが望ましい。ある実施形態に従うと、同時に使用される各画像及び／又は画面に対して、第０及び第１サンプルサーフェスはＧＰＵメモリ内に記憶することができ、また他のサンプルはシステムメモリ内に記憶することができる。
【００３１】
ステップ３０４では、ＡＡ画像がメモリへとレンダリングされる。ある実施形態においては、ステップ３０２で決定された比率等の前もって決定された基準に従って、各画素に対するサンプルのセットをＧＰＵメモリ及びシステムメモリの間で分割することによって、多重サンプルのアンチエイリアシングされた画像がメモリへとレンダリングされる。例えば、ＲＯＰが画像をレンダリングするレンダリング対象(render target)は、各画素に対する多重サンプリングに係るサンプル識別子に基きＧＰＵメモリ及びシステムメモリの間で分割され得る。
【００３２】
ステップ３０６では、メモリへの画像のレンダリングの間、画像の各画素の１つ以上の多重サンプリングに係るサンプルが、ＧＰＵメモリ内のそれぞれのサーフェスへとレンダリングされる。ＧＰＵメモリへとレンダリングされるべきサンプルの数は、例えば上述のステップ３０２に従って決定され得る。ＧＰＵメモリ内にレンダリング及び／又はテクスチャマッピングするために最も頻繁に利用されるサンプルを記憶することが望ましく、その結果、画面に最終的な画像をレンダリングする際に生じるレンダリング及び／又はテクスチャマッピングの１つ以上のパスの間にそれぞれのサンプルがアクセスされる場合に、それぞれのサンプルは効率的にアクセスされ得る。それぞれのサンプルがレンダリングされるメモリアドレスは、例えばＧＰＵメモリ内の対応するサーフェスのアドレス及びレンダリング中の画素の識別子に基き決定され得る。例えば、４ｘＡＡ多重サンプリングにおいて生じる４つのサンプルの各々に対応して、別個のサーフェスがＧＰＵメモリ又はシステムメモリ内に記憶され得る。特定の画素からのサンプルの対応するサーフェス内の位置は、各サンプルのサイズ及び画素の数値シーケンシャル識別子(numeric sequential identifier)に基いて決定され得る。
【００３３】
別の実施形態においては、各画素に対して、ＧＰＵメモリ内に記憶されるサンプルの数は、当該特定の画素の特性に基きステップ３０２で決定された比率と同じであってよく、又は異なっていてよい。例えば、アプリケーションは、ディスプレイされるべき画像の特定の部分及び／又は画素がレンダリング及び／又はテクスチャリングの幾つかのパスに供されることになるのを決定することができるので、それらの画素のサンプルは、ＧＰＵメモリ内に記憶されることとなる。それぞれの画素に対して異なる数のサンプルが記憶され得る実施形態においては、サンプルの記憶及び記憶されたサンプルへのアクセスはより複雑になり得るが、性能効率は高まるであろう。更に別の実施形態においては、システムメモリ内に記憶されるサンプルの１つ以上は、選択された画素に対してＧＰＵメモリ内にも記憶され得る。そのような選択的に記憶されたサンプルを備える１つ以上のサーフェスは、ＧＰＵメモリ内に維持されてよく、またメモリマッピング機能は、そのように選択的に記憶されたサンプルに適宜アクセスするように実装され得る。
【００３４】
ステップ３０８では、メモリへの画像のレンダリングの間、画像のそれぞれの画素の多重サンプリングに係る１つ以上のサンプルが、システムメモリ内の対応するサーフェスへとレンダリングされる。システムメモリにレンダリングされるべきサンプルの数は、例えば上述したステップ３０２に従い決定され得る。前述したように、システムメモリ内に記憶されたサンプルは、望ましくはＧＰＵメモリ内に記憶されたものほどは頻繁にはアクセスされない。それぞれのサンプルがレンダリングされるメモリアドレスは、例えばシステムメモリ内の対応するサーフェスの基本アドレス及びレンダリング中の画素の識別子に基き決定され得る。例えば、上述したように、４ｘＡＡ多重サンプリングにおいて生成される４つのサンプルの各々に対応して、別個のサーフェスがＧＰＵメモリ又はシステムメモリ内に記憶され得る。特定の画素からのサンプルの対応するサーフェス内の位置は、各サンプルのサイズ及び画素のシーケンシャル数値識別子に基いて決定され得る。
【００３５】
ステップ３０６及び３０８が順次又は並列に生じて、画像の各画素のための対応するメモリ内にそれぞれのサンプルを記憶することができる。ある実施形態に従うと、ステップ３０８の終了に際して、画像の全ての画素に対する各画素の多重サンプルが、ＧＰＵメモリ及びシステムメモリ内の対応するサーフェス内に記憶される。
【００３６】
ステップ３１０では、読み出されるべき画素が決定される。画素の読み出しは、多重サンプリングに係るアンチエイリアシングされたレンダリング対象の初期レンダリング（ステップ３０４〜３０８）と画面上での画像のディスプレイとの間に生じるレンダリング及び／又はテクスチャマッピングの１つ以上のパスのうち任意の１つの間に生じ得る。例えば、画素は、ディスプレイ画像をレンダリングする解像動作(resolve operation)の一部として読み出され得る。複雑な画像及び照明効果等の種々の効果をレンダリングするために、多くのアプリケーションは、レンダリング及びテクスチャマッピングの多重パスを実行する。ある実施形態に従うと、多重サンプリングに係るアンチエイリアシングされたレンダリング対象からのレンダリングの間に、画像の画素は、左から右へ及び上から下へ進むラスタスキャンパターン(raster scan patterns)で読み出される。
【００３７】
ステップ３１２では、選択された画素のために読み出されるべきサンプルが決定される。多重サンプリングに係るアンチエイリアシングされたレンダリング対象からのレンダリングの間、各画素に対して、ディスプレイ画像をレンダリングするのにどのサンプルが用いられるべきかが決定され得る。当該画素に対してディスプレイされるべきサンプルの数は、例えば、当該画素に接触しているオブジェクト(objects touching the pixel)の数、当該画素が任意の単一のオブジェクトによりカバーされているかどうか、及び各オブジェクトが当該画素に接触する深さ等の種々の基準に基いて決定され得る。例えば４ｘＡＡ多重サンプリングにおいて、画素が単一のオブジェクトにより完全にカバーされているとすると、その画素をディスプレイ画像へとレンダリングするためには、１つのサンプルのみが必要とされる。１つのオブジェクトが画素に接触しているがカバーはしていない場合、その画素をディスプレイ画像へとレンダリングするためには、２つのサンプルが読み出され得る。同様に、画素に接触している複数のオブジェクト及びそのような複数のオブジェクトの可視性(visibility)に基づき３つ又は４つのサンプルを読み出すかどうかを決定することができる。
【００３８】
ステップ３１４では、各サンプルに対して、サンプルがＧＰＵメモリ内又はシステムメモリ内のどちらにあるかが決定される。サンプルがどちらのメモリ内に置かれているかの決定は、ＧＰＵメモリ内に記憶されているサンプルの数を示す前もって決定されたパラメータに基づき得る。例えばステップ３０２で決定されたのに従い、任意の画素に対して第０及び第１サンプルがＧＰＵメモリ内でアクセスされてよく、また他のサンプルがシステムメモリ内でアクセスされてよい。別の実施形態においては、決定は画素毎ベースの動的な基準に基き得る。例えば上述のステップ３０６に関連して説明したように、選択された画素は、ＧＰＵメモリ内に記憶される異なる数のサンプルを有することができる。
【００３９】
ステップ３１４での決定に基づき、サンプルがＧＰＵメモリ内（ステップ３１６）又はシステムメモリ内（ステップ３１８）のいずれかでアクセスされる。サンプルが置かれているメモリアドレスは、そのサンプルに対応するサーフェスの基本アドレス及びそのサーフェス内のオフセットに基づき得る。各サーフェスのための基本アドレスは、メモリへのサンプルの割り当て及び／又は書き込みに際して予め構成され且つ／又は予め決定されてよい。オフセットは、記憶されたサンプルのサイズに基づく既知のストライド、及びラスタスキャンアクセスパターンのシーケンスにおいて画素を識別する数値識別子に基づいて決定され得る。別の実施形態においては、個々のサンプルのためのロケーションは、メモリ内のそのサンプルのロケーションを指定するメモリマッピングに基づいて決定され得る。例えば各画素に対して異なる数のサンプルが記憶され得る実施形態においては、特定のサンプルのロケーションを識別するためにメモリマップが用いられ得る。
【００４０】
ステップ３２０では、レンダリング対象内にもっと多くのサンプルが記憶されるべきであるかどうかが決定される。例えば４ｘＡＡ多重サンプリングにおいては、各画素に対して、４つのサンプルがレンダリング対象内に記憶され得る。もっと多くのサンプルが記憶されるべきである場合には、方法３００はステップ３１２に戻る。それ以上のサンプルが現在の画素に対して記憶されるべきでない場合には、方法３００はステップ３２２へ進む。
【００４１】
ステップ３２２では、現在の画素が現在の画像内で方法３００において処理されるべき最後の画素であるかどうかが決定される。最後の画素である場合には、方法３００における処理は完了する。現在の画素が、レンダリング対象にレンダリングされるべき現在の画像内の最後の画素でない場合には、方法３００における処理はステップ３１０に戻る。
【００４２】
本発明の側面を実施する論理によって実行される命令は、Ｃ及びＣ＋＋等の種々のプログラミング言語、アセンブリ(Assembly)、並びに／又はハードウエア記述言語（ＨＬＤ）においてコード化されてよく、また論理又は他のデバイスによって実行され得るオブジェクトコードへとコンパイルされてよい。
【００４３】
上述の実施形態は、ベリログ(Verilog)、ＲＴＬ、ネットリスツ(netlists)等のハードウエア記述言語において記述されてよく、またこれらの記述は、ここに説明されるような本発明の側面を具現化する１つ以上のハードウエアデバイスを作り出すマスクワーク／フォトマスクの生成を通して製造プロセスを最終的に構成するために用いられ得る。
【００４４】
本発明の側面は、全体又は一部においてコンピュータ可読媒体に記憶され得る。コンピュータ可読媒体に記憶された命令は、本発明の実施形態の全部又は一部を行うようにプロセッサを適合させることができる。
【００４５】
特定の機能の実装及びそれらの関係性を示す機能構築ブロックを補助として、本発明が上述のように説明されてきた。これらの機能構築ブロックの境界は、説明の便宜上ここでは適宜画定されてきた。特定の機能及びそれらの関係性が適切に実行される限りにおいて、代替的な境界が画定され得る。
【００４６】
本発明の種々の実施形態がこれまで説明されてきたが、それらは例示のみを目的として提示されてきたものであり且つ限定を目的としていないことが理解されるべきである。本発明の精神及び範囲から逸脱することなしに形態及び詳細における種々の変更がここではなされ得ることが、関連分野を含めた当業者には明らかなはずである。従って、本発明の広さ及び範囲は、上述したいかなる例示的な実施形態によっても限定されるべきではなく、以下の特許請求の範囲及びそれらと均等なものに従ってのみ画定されるべきである。
【００４７】
特定の実施形態の上述した説明は、本発明の一般的性質を十分に明らかにするであろうから、他者は、当業者における知識を適用することによって、過度の実験なしに、本発明の一般的概念から逸脱することなく、そのような特定の実施形態を容易に修正し且つ／又は種々の応用に適応させることができる。従って、そのような適応及び修正は、ここに提示されている教示及び指針に基づいて、開示されている実施形態と均等なものの意味及び範囲の範疇にあることが意図されている。ここでの用語等は、説明を目的としたものであって限定を目的としていないことが理解されるべきであり、本出願書類の用語等は教示及び指針の下で当業者によって解釈されるべきである。
【図１】
2013539095.tif 000003
【図２】
2013539095.tif 000004
【図３】
2013539095.tif 000005
【国際調査報告】
2013539095.tif 000006
2013539095.tif 000007
2013539095.tif 000008