JP5808407B2 - アンチエイリアシングされたサンプルの分割ストレージ - Google Patents

アンチエイリアシングされたサンプルの分割ストレージ Download PDF

Info

Publication number
JP5808407B2
JP5808407B2 JP2013520817A JP2013520817A JP5808407B2 JP 5808407 B2 JP5808407 B2 JP 5808407B2 JP 2013520817 A JP2013520817 A JP 2013520817A JP 2013520817 A JP2013520817 A JP 2013520817A JP 5808407 B2 JP5808407 B2 JP 5808407B2
Authority
JP
Japan
Prior art keywords
samples
memory
sample
pixel
aliased
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013520817A
Other languages
English (en)
Other versions
JP2013539095A (ja
JP2013539095A5 (ja
Inventor
ファウラー マーク
ファウラー マーク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2013539095A publication Critical patent/JP2013539095A/ja
Publication of JP2013539095A5 publication Critical patent/JP2013539095A5/ja
Application granted granted Critical
Publication of JP5808407B2 publication Critical patent/JP5808407B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing scheme for image data processing or generation, in general involving antialiasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Generation (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)

Description

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

Claims (27)

  1. アンチエイリアシングされた画像画素をレンダリングする方法であって、
    前記画素のアンチエイリアシングされたサンプルを、第1のセット及び第2のセットのサンプルが異なるように、相互排他的な前記第1のセット及び前記第2のセットに分割することと、
    前記画素のアンチエイリアシングされたサンプルの前記第1のセット及び前記第2のセットをそれぞれ第1のメモリ及び第2のメモリ内に記憶することと、
    前記第1のセットからの、又は、前記第1及び前記第2のセットからの決定された数の前記サンプルをレンダリングすることと、を備える方法。
  2. 前記第1のセットにおけるサンプルの数は予め決定されている請求項1の方法。
  3. 前記第1のセットにおけるサンプルの数は前記画像の特性に基づいて決定される請求項1の方法。
  4. 前記第1のセットにおけるサンプルの数はサンプルのサイズ及び前記第1のメモリのサイズに基づいて決定される請求項1の方法。
  5. レンダリングされるべきサンプルの数は前記画素に接触しているオブジェクトに基づいて決定される請求項1の方法。
  6. 前記第1のメモリは前記第2のメモリよりも高速でプロセッサにとってアクセス可能である請求項1の方法。
  7. 前記第1のメモリはグラフィクスプロセッサユニット(GPU)に結合されるグラフィクスメモリであり、前記第2のメモリはシステムメモリである請求項1の方法。
  8. 前記アンチエイリアシングされたサンプルは多重サンプリングされる請求項1の方法。
  9. レンダリングすることは、前記決定された数のサンプルがレンダリングされるまで、予め定められたシーケンスに従い、前記第2のセットからのサンプルが随意的に続く前記第1のセットからのサンプルをレンダリングすることを備える請求項1の方法。
  10. 前記第1のセットが前記決定された数のサンプルよりも少ないサンプルを有する場合に前記第2のセットからのサンプルがレンダリングされる請求項9の方法。
  11. 当該1つ以上のサンプルの各々はそれぞれのサーフェス内に記憶される請求項1の方法。
  12. レンダリングされるべき前記サンプルの数を決定することを更に備える請求項1の方法。
  13. アンチエイリアシングされた画像画素をレンダリングするためのシステムであって、
    プロセッサと、
    前記プロセッサに結合される第1のメモリ及び第2のメモリと、
    前記画素のアンチエイリアシングされたサンプルを、第1のセット及び第2のセットのサンプルが異なるように、相互排他的な前記第1のセット及び前記第2のセットに分割し、前記第1のセット及び前記第2のセットをそれぞれ前記第1のメモリ及び前記第2のメモリ内に記憶するように構成される分割アンチエイリアシングサンプルライタと、を備えるシステム。
  14. 前記第1のセットからの、又は、前記第1及び前記第2のセットからの決定された数の前記サンプルをレンダリングするように構成される分割アンチエイリアシングサンプルリーダを更に備える請求項13のシステム。
  15. 前記分割アンチエイリアシングサンプルリーダは、レンダリングされるべき前記サンプルの数を決定するように更に構成される請求項14のシステム。
  16. 前記分割アンチエイリアシングサンプルリーダは、前記決定された数まで、予め定められたシーケンスに従い、前記第2のセットからのサンプルが随意的に続く前記第1のセットからのサンプルをレンダリングするように更に構成される請求項14のシステム。
  17. 前記第1のセットが前記決定された数のサンプルよりも少ないサンプルを有する場合に前記第2のセットからのサンプルがレンダリングされる請求項13のシステム。
  18. 前記第1のメモリはグラフィクスプロセッサユニット(GPU)に結合されるグラフィクスメモリであり、前記第2のメモリはシステムメモリである請求項13のシステム。
  19. 前記第1のメモリは前記第2のメモリよりも高速なアクセス速度に対して構成される請求項13のシステム。
  20. 命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、実行されると、少なくとも1つのプロセッサを動作させて、アンチエイリアシングされた画像画素をレンダリングするように適合させられており、前記動作は、
    前記画素のアンチエイリアシングされたサンプルを、第1のセット及び第2のセットのサンプルが異なるように、相互排他的な前記第1のセット及び前記第2のセットに分割することと、
    前記画素の複数のアンチエイリアシングされたサンプルからの前記第1のセット及び前記第2のセットをそれぞれ第1のメモリ及び第2のメモリ内に記憶することと、
    前記第1のセットからの、又は、前記第1及び前記第2のセットからの決定された数の前記サンプルをレンダリングすることと、を備えるコンピュータ可読記憶媒体。
  21. 前記動作は、前記決定された数のサンプルがレンダリングされるまで、予め定められたシーケンスに従い、前記第2のセットからのサンプルが随意的に続く前記第1のセットからの1つ以上のサンプルをレンダリングすることを更に備える請求項20のコンピュータ可読記憶媒体。
  22. 前記第1のセットが前記決定された数のサンプルよりも少ないサンプルを有する場合に前記第2のセットからのサンプルがレンダリングされる請求項20のコンピュータ可読記憶媒体。
  23. 前記第1のメモリはグラフィクスプロセッサユニット(GPU)に結合されるグラフィクスメモリであり、前記第2のメモリはシステムメモリである請求項22のコンピュータ可読記憶媒体。
  24. 前記第1のセットのサンプルと前記第2のセットのサンプルとの間の相違、前記第1のメモリ又は前記第2のメモリの特性に基づく、請求項1の方法。
  25. 前記特性は、何れかのメモリの記憶サイズ又はアクセス速度である、請求項24の方法。
  26. 前記第1のセットのサンプルと前記第2のセットのサンプルとの間の相違、前記第1のセットのサンプル又は前記第2のセットのサンプルの特性に基づく、請求項方法
  27. 前記特性は、サンプルが、画像をレンダリングするのに実際に使用されることになる可能性である、請求項26の方法。
JP2013520817A 2010-07-19 2011-07-19 アンチエイリアシングされたサンプルの分割ストレージ Active JP5808407B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US36570310P 2010-07-19 2010-07-19
US61/365,703 2010-07-19
PCT/US2011/044563 WO2012012451A1 (en) 2010-07-19 2011-07-19 Split storage of anti-aliased samples

Publications (3)

Publication Number Publication Date
JP2013539095A JP2013539095A (ja) 2013-10-17
JP2013539095A5 JP2013539095A5 (ja) 2014-09-04
JP5808407B2 true JP5808407B2 (ja) 2015-11-10

Family

ID=44629206

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013520817A Active JP5808407B2 (ja) 2010-07-19 2011-07-19 アンチエイリアシングされたサンプルの分割ストレージ

Country Status (6)

Country Link
US (2) US20120013624A1 (ja)
EP (1) EP2596471B1 (ja)
JP (1) JP5808407B2 (ja)
KR (1) KR101824665B1 (ja)
CN (1) CN103003839B (ja)
WO (1) WO2012012451A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9953455B2 (en) * 2013-03-13 2018-04-24 Nvidia Corporation Handling post-Z coverage data in raster operations
US9779534B2 (en) 2013-08-28 2017-10-03 Qualcomm Incorporated Prefixed summed length in graphics processing
US9747658B2 (en) * 2013-09-06 2017-08-29 Apple Inc. Arbitration method for multi-request display pipeline
US9230362B2 (en) * 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US9230363B2 (en) * 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US9437040B2 (en) * 2013-11-15 2016-09-06 Nvidia Corporation System, method, and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
CN105225264B (zh) * 2014-06-27 2020-11-10 三星电子株式会社 基于运动的自适应渲染
KR102251444B1 (ko) 2014-10-21 2021-05-13 삼성전자주식회사 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 안티 에일리어싱 방법
US10169887B2 (en) * 2016-06-10 2019-01-01 Apple Inc. Accelerated blits of multisampled textures on GPUs
US10163184B2 (en) * 2016-08-17 2018-12-25 Adobe Systems Incorporated Graphics performance for complex user interfaces
CN111798365B (zh) * 2020-06-12 2023-09-01 完美世界(北京)软件科技发展有限公司 深度抗锯齿数据读取方法、装置、设备和存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4148377B2 (ja) * 1997-10-28 2008-09-10 松下電器産業株式会社 画像生成装置、画像生成方法、画像生成プログラム記録媒体、画像合成装置、画像合成方法、および画像合成プログラム記録媒体
DE69909437T2 (de) * 1998-02-17 2004-04-15 Sun Microsystems, Inc., Santa Clara Graphisches system mit superabtasten mit veränderlicher auflösung
US6483504B1 (en) * 1998-02-17 2002-11-19 Sun Microsystems, Inc. Graphics system having a super sampled-sample buffer with efficient storage of sample position information
US6188394B1 (en) * 1998-08-28 2001-02-13 Ati Technologies, Inc. Method and apparatus for video graphics antialiasing
US6429876B1 (en) * 1998-08-28 2002-08-06 Ati International Srl Method and apparatus for video graphics antialiasing with memory overflow optimization
US6795081B2 (en) * 2001-05-18 2004-09-21 Sun Microsystems, Inc. Sample cache for supersample filtering
US6967663B1 (en) * 2003-09-08 2005-11-22 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
GB0426170D0 (en) * 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
US7511717B1 (en) * 2005-07-15 2009-03-31 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
US8294731B2 (en) * 2005-11-15 2012-10-23 Advanced Micro Devices, Inc. Buffer management in vector graphics hardware
US8212832B2 (en) * 2005-12-08 2012-07-03 Ati Technologies Ulc Method and apparatus with dynamic graphics surface memory allocation
US7564456B1 (en) * 2006-01-13 2009-07-21 Nvidia Corporation Apparatus and method for raster tile coalescing
US8325203B1 (en) * 2007-08-15 2012-12-04 Nvidia Corporation Optimal caching for virtual coverage antialiasing
TWI425440B (zh) * 2008-07-03 2014-02-01 Nvidia Corp 複合多重樣本/超樣本抗頻疊

Also Published As

Publication number Publication date
US20120013624A1 (en) 2012-01-19
KR20130141445A (ko) 2013-12-26
US9934551B2 (en) 2018-04-03
CN103003839B (zh) 2017-02-08
US20170018053A1 (en) 2017-01-19
WO2012012451A1 (en) 2012-01-26
CN103003839A (zh) 2013-03-27
KR101824665B1 (ko) 2018-02-01
EP2596471A1 (en) 2013-05-29
JP2013539095A (ja) 2013-10-17
EP2596471B1 (en) 2016-04-06

Similar Documents

Publication Publication Date Title
JP5808407B2 (ja) アンチエイリアシングされたサンプルの分割ストレージ
US9978115B2 (en) Sprite graphics rendering system
US10089775B2 (en) Automated graphics and compute tile interleave
US9947084B2 (en) Multiresolution consistent rasterization
US9349154B2 (en) Bindless texture and image API
US9495781B2 (en) Early sample evaluation during coarse rasterization
TWI633447B (zh) 最大化圖形處理器中之平行處理之技術
US9064468B2 (en) Displaying compressed supertile images
US8963931B2 (en) Tiling compaction in multi-processor systems
US20110063296A1 (en) Global Stores and Atomic Operations
KR20190100194A (ko) 타일식 아키텍처들에서의 포비티드 렌더링
US10432914B2 (en) Graphics processing systems and graphics processors
CN109584140B (zh) 图形处理
US8212825B1 (en) System and method for geometry shading
KR20190078086A (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
KR102676410B1 (ko) 그래픽 처리 시스템
US20120013629A1 (en) Reading Compressed Anti-Aliased Images
US20170186213A1 (en) Methods and apparatuses for determining layout of stored texture
CN116954742A (zh) 显存监测方法及装置
Chou Windows High-Speed Drawing Technology Research

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140718

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150717

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150811

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150908

R150 Certificate of patent or registration of utility model

Ref document number: 5808407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250