JP5624733B2 - グラフィックス処理システム - Google Patents

グラフィックス処理システム Download PDF

Info

Publication number
JP5624733B2
JP5624733B2 JP2009134193A JP2009134193A JP5624733B2 JP 5624733 B2 JP5624733 B2 JP 5624733B2 JP 2009134193 A JP2009134193 A JP 2009134193A JP 2009134193 A JP2009134193 A JP 2009134193A JP 5624733 B2 JP5624733 B2 JP 5624733B2
Authority
JP
Japan
Prior art keywords
data
graphics
memory
dynamic
generated
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
JP2009134193A
Other languages
English (en)
Other versions
JP2009295162A (ja
Inventor
エドワード・プロウマン
ヨーン・ニスタッド
ボルガール・リョシュラン
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2009295162A publication Critical patent/JP2009295162A/ja
Application granted granted Critical
Publication of JP5624733B2 publication Critical patent/JP5624733B2/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • G06T7/62Analysis of geometric attributes of area, perimeter, diameter or volume

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Description

本発明は、グラフィックスの処理に関するものであり、具体的には、例えば、ディスプレイ画面に表示する三次元(3D)グラフィックスの処理に関するものである。
当業で知られているように、3Dグラフィックス処理は、通常、まずは表示するシーンを複数の類似の基本コンポーネント(いわゆる「プリミティブ」)に分割して、3Dグラフィックス処理オペレーションを実行しやすくすることによって行われる。これらの「プリミティブ」は、通常、三角形などの単純な多角形の形態をとる。
表示するシーンに対応するプリミティブは、通常、グラフィックス処理システム用のアプリケーションプログラムインターフェイスにより生成され、そのために、グラフィックスの表示を必要とするアプリケーション(例えば、ゲーム)から受け取ったグラフィックス描画命令(リクエスト)を使用する。
それぞれのプリミティブは、このステージでは、通常、一組の頂点により定義され、一組の頂点として表される。1つのプリミティブに対するそれぞれの頂点には、その頂点を表す一組のデータ(位置、色、テクスチャ、および他の属性データなど)が関連付けられている。次いで、このデータは、例えば、表示する頂点(頂点が関係する(複数の)プリミティブ)のラスター処理およびレンダリングを行うときに使用される。
シーンを表示するために、シーンに対するプリミティブおよびそれらのプリミティブの頂点が生成され、定義された後、これらは、グラフィックス処理システムにより処理されうる。
このプロセスは、基本的に、処理するシーンを覆うサンプリング点の配列の中のどのサンプリング点が1つのプリミティブによって覆われるかを決定すること、およびそのサンプリング点でそのプリミティブを表すためにそれぞれのサンプリング点が(例えば、色などに関して)持つべき外観を決定することを伴う。これらのプロセスは、一般に、ラスター処理およびレンダリングとそれぞれ称される。
ラスター処理プロセスでは、1つのプリミティブに対し使用すべきサンプル位置(つまり、表示するシーン内でプリミティブを表すために使用されるサンプル点の(x,y)位置)を決定する。これは、典型的には、1つのプリミティブの複数の頂点の位置を使用して決定される。
次いで、レンダリングプロセスは、サンプル点でプリミティブを表示する(つまり、それぞれのサンプル点に「陰影を付ける」)のに必要な、赤色、緑色、および青色(RGB)値ならびに「アルファ」(透明度)値などのデータを導出する。これは、当業で知られているように、テクスチャの適用、サンプル点データ値のブレンドなどを伴うことがある。
(3Dグラフィックスの文献では、「ラスター処理」という用語は、ときには、サンプル位置およびレンダリングへの両方のプリミティブ変換を指すために使用される。しかし、ここでの「ラスター処理」は、サンプリング点アドレスのみへのプリミティブデータの変換を指すために使用される。)
これらのプロセスは、典型的には、サンプリング点を、グラフィックス処理オペレーション(レンダリングなど)の実行対象となる「フラグメント」と通常呼ばれる個別のグラフィック構成要素(discrete graphical entities)として「表現する」ことにより実行される。それぞれのそのようなフラグメントは、所定の1つのサンプリング点またはサンプリング点の集合に対応し、実際に、注目するその1つのまたは複数のサンプリング点(フラグメントを使用してレンダリングされる(複数の)サンプリング点)でプリミティブを表現し、それをレンダリングするために使用されうる。
したがって、「フラグメント」は、事実上、プリミティブの所定の1つ(または複数)の画面空間サンプル点に補間されるようなプリミティブデータの集合(に関連付けられたもの)である。これは、さらに、注目する(複数の)サンプル点(フラグメント位置)でプリミティブに陰影を付けるのに必要なプリミティブ毎のおよび他の状態データをも含むことができる。それぞれのグラフィックスフラグメントは処理されるときにシーンの1つの「ピクセル」に事実上相当するものと考えるのは道理にかなっている。
実際、それぞれのグラフィックス「フラグメント」は、最終的な表示に含まれる単一ピクセル(画素)に対応しうる(ピクセルは、最終的な表示内において特異点であるため、グラフィックスプロセッサのオペレーション(レンダリング)対象の「フラグメント」と表示のピクセルとの間に1対1のマッピングがありうる)。しかし、フラグメントと表示ピクセルとの間に1対1対応関係がない場合もありえ、例えば、縮小などの特定の形態の後処理が最終画像を表示するのに先立ってレンダリングされた画像に対し実行される。
当業で知られているように、ラスター処理およびレンダリングプロセスは、典型的には、フラグメントシェーダーおよびテクスチャマッパーなどのグラフィックスプロセッサの処理ユニットが、例えば、所定のフラグメントを処理するときに使用するデータをメモリからフェッチし、次いでそのデータを使用して、例えば、フラグメントを「レンダリング」する(例えば、そのデータをフラグメントに適用する)ことを伴う。
「直接モード」グラフィックス処理またはレンダリングと通常呼ばれる、グラフィックス処理に関して知られている技術の1つでは、頂点は、生成されるときに次々に処理される(ラスター処理およびレンダリング)。
このタイプのシステムでは、頂点は、先着順にグラフィックスシステムに渡され(頂点は通常、グラフィックス処理の効率を改善しようとする何らかの方法でソートされるけれども)、したがってプリミティブは、届いた順に表示のためレンダリングされる。
また、グラフィックス処理システムでは、いわゆる「タイルベース」または「遅延」レンダリングを使用することも知られている。タイルベースレンダリングでは、シーン全体が直接モードレンダリングで事実上一度に処理されるのとは異なり、表示されるシーンは、通常「タイル」と呼ばれる複数のより小さな部分領域に分割される。それぞれのタイル(部分領域)は、別々に(典型的には次々に)レンダリングされ、次いでレンダリングされた部分領域(タイル)は再結合されて、表示できる完全なシーンを構成する。このような構成において、シーンは、典型的には、規則正しいサイズおよび形状の部分領域(タイル)(通常は、例えば、正方形または矩形)に分割されるが、これは、本質的なことではない。
当業で知られているように、表示するグラフィックスデータを処理するときに実行される多くのプロセスは、メモリから他のグラフィックスデータをフェッチすることを必要とするか、フェッチすることを含む(つまり、すでに準備されている、格納済みデータを使用する)。例えば、テクスチャマッピングプロセスは格納されているテクスチャマップを使用することを必要とする、タイルベースのレンダリングシステムにおけるラスター処理プロセスは1つのタイルに対してラスター処理するプリミティブを識別するためにすでに格納されているタイルリストを使用することを必要とする、プリミティブのタイリング(ビニング)プロセスはタイル位置に対しテストするために格納済みの変換された頂点データを使用するといったことがありうる。これらの場合のそれぞれにおいて、テクスチャマッピングなどの関連するグラフィックプロセスは、そのプロセスを実行するためにデータが必要かどうかを識別し、次いで、メモリ(当業で知られているように、キャッシュメモリまたは他のメモリでありうる)からそのデータをフェッチし、次いで、そのプロセスを実行する際にフェッチされたデータを使用する。
これらの処理オペレーションを行いやすくするために、グラフィックス処理システムは、通常、シーンが表示用に処理されるときにこの方法でグラフィックスプロセスによりフェッチされる必要があると思われるデータすべてが、必ずメモリ内に格納されており、関連プロセスが始まる前に使用するグラフィックスプロセスに利用可能であるように構成される。これは、関連するデータが、表示するシーンを処理する際にグラフィックスプロセスがメモリ内を探したときに必ず見つかるようにするためのものである。(シーンは、典型的には、当業で知られているように、1つまたは複数の、通常は複数の描画コール(つまり、描画される(複数の)プリミティブからなるグループ)で構成される。)
これは、いわゆる「静的」グラフィックスデータ(つまり、例えば「静的」テクスチャマップなどの共通の複数のシーンに対し定義済みであるとしてよいデータ)およびいわゆる「動的」グラフィックスデータ(つまり、シーン毎に生成されるグラフィックスデータ(実際には、予め複数のシーンとしてではなくシーンの一部として))の両方に適用される。このような「動的」データがなぜ必要かというと、例えば、データが必要になるシーンの前に予め事前定義または生成されえない、例えば、データがユーザー入力に基づいている、および/またはユーザー入力に応じて必要である、および/またはシーン毎に変化する、および/または中間動的ステージに依存し、したがって予め予測されえない場合があるからである。
「動的」グラフィックスデータの実施例は、シーンに対するいわゆる「動的テクスチャ」(「動的テクスチャマップ」)およびタイルリストを含む(タイルベースのレンダリングシステムの場合)。例えば、このようなデータは、シーンの処理を目的としてシャドウマップなどのデータを供給するために、異なる角度から(例えば、実際の視点角度からではなく)なされるシーンの分析および/または表示に関係する。
「静的」グラフィックスデータは、例えば、グラフィックス処理を必要とするアプリケーションにより提供され、シーンをレンダリングするときに使用するためメモリ内に格納しておくことができる。
「動的」グラフィックスデータについては、ホストシステムおよび/またはグラフィックス処理システムは、通常、シーンが表示のため処理される前にそのデータを生成し格納するように制御され、これにより再びそのデータは、シーンそれ自体が表示のため処理される前に予めメモリ内で利用可能な状態になっている。
図3は、例示的な「動的」グラフィックスデータ生成プロセスを示す。
図3は、視点51から見た状態の、レンダリングされるシーン50の概略を示している。しかし、シーンは、さらに、2つの光源52、53により照らされる。
当業で知られているように、シーンが表示されるときに光源52、53の効果をシーンに適用するために、レンダリングされた画像にそれぞれの光源に関するいわゆる「シャドウマップ」(テクスチャマップの形式である)が適用される。このような「シャドウマップ」は、シーン毎に生成されうるため、動的グラフィックスデータの一実施例となっている。
シャドウマップを動的に生成するために、シーンは、シャドウマップが対応しうる光源の位置から見たかのように典型的にはレンダリングされ、その際に、そのシーンに対する視点から見たときに光源が投じる陰影の効果を実際に表すようにその後シーンに適用されうるテクスチャマップを生成する。
したがって、図3に示されているシーンの場合に、グラフィックスプロセッサは、最初に、光源53に関してシーンをレンダリングするように制御され(適切な描画コールを介して)、シーン上のその光源の効果を表すシャドウマップ54を動的に生成する。次いで、グラフィックスプロセッサは、同様に、光源52に関してシーンをレンダリングするように制御され(ここでもまた、その目的のために適切な描画コールが送られるようにすることにより)、シーン上のその光源の効果を表す動的シャドウマップ55を生成する。
次いで、シーンは、その最終的な表示用にレンダリングされ(ここでもまた、グラフィックスプロセッサに適切な描画コールを発行することにより)、このレンダリングプロセスでは、生成された動的シャドウマップ54、55をシーンがレンダリングされるときにシーンに適用し(テクスチャマッピングステージで)、これにより視点51から見たとおりにシーン上に光源52、53の効果を反映させる。
言い換えると、表示するシーンをレンダリングする場合(シーンの最終的なレンダリング描画コール)、前に生成されたシャドウマップ54、55を使用して、光源52、53の効果をシーンが表示されるときにシーン上に適用する。
上記から、既存のグラフィックス処理システムおよびプロセッサにおいて、表示するシーンを処理するために(また処理するときに)メモリから必要になると思われる(例えば、グラフィックス処理ユニットによりメモリからフェッチされる)グラフィックスデータは、表示するため注目するシーンを処理(レンダリング)する前に予め生成され、格納されていることがわかる。
しかし、出願人は、これには多数の不利点がありうることを認識している。
例えば、このようにしてすべてのデータを格納するのに十分なメモリを用意し、割り当てることが必要である。このため、1つのシーンに必要なすべてのデータを格納するのに必要なメモリ設置面積に関して比較的大きなオーバーヘッドが発生しうる。
これは、タイルリスト、動的テクスチャなどの動的なグラフィックスデータに関して特に重大な問題となっているが、それというのも、そのようなデータを格納する必要があるだけでなく、格納する必要のあるそのようなデータの量がシーン毎に変化する可能性があり、予測が非常に困難であることが多いからである(例えば、タイルリストの場合には、シーン内のプリミティブの分配に依存する可能性があり、この分配はシーン毎に著しく異なることがあるというのがその理由である)。したがって、そのようなデータに対する効率的なメモリ使用が難しくなることがある。
直接モードレンダリングアーキテクチャでは、動的データ(例えば、テクスチャ)を参照するプリミティブが最初にレンダリングされるようにレンダリングに関してプリミティブの順序付けを試み、「動的」データを最も早い機会において破棄できる(そして使用するメモリを解放できる)ように試みることが知られている。
しかし、多くのプリミティブは、複数の動的データ集合(例えば、テクスチャ)からの寄与分を必要とすることがあり、したがって、最終的なレンダリングされた画像を構成するためにこれらのプリミティブをレンダリングプロセスに複数回通されなければならない。そのため、レンダリングプロセスの初期ステージでは動的データを破棄することは困難である場合がある。いずれにせよ、すべての動的データに対する初期メモリ割り当ては、依然として行われなければならない。
さらに、動的データのそれぞれの試みられる「早期」破棄はタイルベースの構成では可能なことではなく、シーンの最後のタイルがレンダリングされるまで、その動的データは保持される必要がある場合がある(ここでもまた、いかなる場合も、すべての動的データに対する初期メモリ割り当ては、依然として行われなければならない)。
したがって、出願人は、グラフィックス処理システムにおけるデータならびに特に動的テクスチャおよびタイルリストなどの動的データを取り扱う技術の改善の余地があると確信している。
本発明の第1の態様によれば、グラフィックス処理システムにおいてデータを処理する方法が提供され、この方法は、
グラフィックス処理システムが、
グラフィックス処理システムによって処理されるべきデータを処理するために必要なデータがすでにメモリ内で利用可能な状態になっているかどうかを判定し、
メモリ内でデータが利用可能な状態になっていない場合には、必要なデータを生成し、次いで、前記処理されるべきデータを処理するためにその生成されたデータを使用するステップを含む。
本発明の第2の態様によれば、グラフィックス処理システムが実現され、このシステムは、
グラフィックス処理システムによって処理されるべきデータを処理するために必要なデータがすでにメモリ内で利用可能な状態になっているかどうかを判定するための手段と、
グラフィックス処理システムが、グラフィックス処理システムにより処理されるべきデータを処理するために必要なデータがメモリ内で利用可能な状態になっていないと判定したときに、必要なデータを生成し、次いで、前記処理されるべきデータを処理するためにその生成されたデータを使用する手段とを備える。
本発明では、グラフィックス処理システムは、必要とされるデータがメモリ内で利用可能な状態になっていない場合にグラフィックス処理システムが使用するデータを生成するように、構成され、動作可能である。このことは、例えば、本発明のシステムを使用すれば、グラフィックス処理(例えば、フラグメントのレンダリング)に必要なデータが使用できるようにまだ格納されていない場合、必要になったときにそのデータが生成されうることを意味している。
ここで、本発明は、既存の動的データ生成構成と対照的なものであり、つまり、これらの処理では、動的データはグラフィックス処理システムが受け取ったコマンドに応答して生成されるのであって、メモリ内にデータが存在しないことが判明したことに応答して生成されるわけではない(したがって、既存の動的生成構成において生成する前にメモリ内でデータが利用可能な状態になっているかどうかを最初に判定するステップもない)ことに留意されたい。
本発明では、とりわけ、グラフィックス処理システムでデータを処理するために必要なデータ(例えば、フラグメントレンダリング用)を必要になったときに「オンデマンド」で生成させることができ、これは、常に、予めそのデータを用意して格納しておく方法とは対照的である。これは、さらに、グラフィックスデータ(例えば、動的グラフィックスデータ)の生成は、データが必要になるときまで「遅延」され、データの使用時点により緊密に結び付けることが可能であり、表示するシーンを処理する前に予めそのようなデータを生成しておかなくてもよいことを意味する。
本発明の方法において「オンデマンド」式に必要なデータを生成することができると、例えば、表示するシーンを処理する前に予め、表示するシーンを処理するときにフェッチする必要が生じると思われるグラフィックスデータすべてを生成し、格納しておかなくて済むようにすることができ、これにより、例えば、予めそのようなデータを格納するのに必要なメモリ設置面積の問題を緩和またはさらには解消することすら容易に行えて都合がよい。
データは、本発明で必要になった場合に「オンデマンド」で生成されうるので、本発明は、さらに、これから必要になるであろうデータのみが生成される(さらに、例えば、格納される)可能性を高めるために使用されうる。(これは、予め必要になる可能性のあるすべてのグラフィックスデータを生成し、格納する構成とは対照的であり、その場合、典型的には、データ集合全体が予め生成され、格納される(一般的には、どのデータ(例えば、動的テクスチャマップのどの部分)が実際に必要になるかを予め決定することは可能でないからである)。)
したがって、本発明は、さらに、(未使用の)グラフィックスデータの冗長生成および格納を回避するのにも役立ちうる。
さらに、以下でさらに説明されるように、本発明では、グラフィックスデータは、必要になったときに、「オンデマンド」で計算されうるため、本発明を用いることで、そのようなグラフィックスデータをグラフィックス処理プロセスの一部として格納することに関する柔軟性および/または予測性を容易に高められる。例えば、本発明を使用すれば、そのようなデータを長期間使用することを目的として格納しておく必要性を完全になくすことが可能である(データは、再び必要になった場合に、いつでも再び生成できるからである)。
実際、出願人は、本発明を使用することで、特に、データは格納されていなければ必要に応じてまた必要になったときにいつでも生成できるので、グラフィックスプロセスによりそもそも格納される、タイルリストデータなどの、特に動的グラフィックスデータなどの、そのようなデータの量を制約し、および/または保証することができるという点を認識している。これにより、例えば、システムでは、例えば動的テクスチャなどの動的グラフィックスデータ、および/またはタイルリストなどを格納するために割り当てられるメモリのサイズを固定することができるが、それというのも、その割り当てられたメモリサイズを超えるデータが生成されても、メモリ内にすでに存在しているデータは安全に破棄され、メモリ空間を解放することができるからである(「破棄された」データは、後で再び必要になった場合に、いつでも生成できるので)。したがって、本発明は、そのようなデータに対するメモリ使用を、使用中に予測可能であることを保証するために利用することが可能であり、そのようなデータすべてが予め生成され、格納されていなければならない既存のシステムとは異なる。
本発明では、同様に、そのようなデータに「弱い」メモリ割り当て(つまり、必要になったときに、例えば、オペレーティングシステムにより、他の目的のために「回収」できるメモリ割り当て)を容易に使用することができ、データは、そのデータを格納するメモリが他の目的のために回収された場合にいつでも生成されうる。
したがって、本発明では、そのようなデータを格納するためのメモリ設置面積を縮小しやすいだけでなく、例えば、そのようなデータに対し最大の、固定された、予測可能な、および/または選択されたメモリ割り当てを保証するために使用することもでき、および/または他の目的のために必要になった場合にそのようなデータを格納するために使用されているメモリを安全に解放(再割り当て)することが可能である。グラフィックスシステムによるメモリ使用に関するそのような情報が得られ、またメモリ使用を制御(および制約)することができると、特に、低出力および/または携帯デバイス内に配置またはそれ向けに用意され、また組み込みグラフィックスシステム内に配置されるなど、メモリ資源が限られる可能性のあるグラフィックスシステムにおいて非常に好都合であると思われる。
グラフィックス処理システムは、任意のデータ処理を実行できるか、または任意のデータ処理を実行するために使用されるが、本発明は、このようなデータ処理に関して実装されうる。したがって、例えば、これは、表示するデータを処理するために準備されているデータ、および/または中間形式または予備的形式であって、最終的な「表示」形式になる前にさらに処理されるデータなど、実際にディスプレイ上に即座に(または実際にはずっと)表示されているわけではないデータを処理することに関して使用されうる。
本発明は、さらに、グラフィックス処理システムが、必ずしも表示するシーンでないか、または実際には、「見られる」データを処理し、生成するために使用されている場合にも使用されうる。これは、例えば、グラフィックス処理システムが、「見ることができる」シーンを実際には出力することができない他の形式の画像またはデータ処理を実行するために使用されている場合であるとしてよい(つまり、結果として得られるフレームバッファ出力は、直接視覚化できない表示および/またはデータを制御すること以外の目的のためのデータであってよい)。
しかし、特に好ましい一実施形態では、本発明が適用されるデータおよびグラフィックスプロセスは、表示するグラフィックスデータの処理、および最も好ましくは、表示する画像データの生成(例えば、好ましくは、注目するシーンを表示するために表示に適用される最終的な表示フレームバッファ出力を生成するグラフィックスデータの処理)である。これは、グラフィックス処理システムで表示する画像データの処理が、典型的には、動的グラフィックスデータを必要とするからであり、したがって本発明はそのような処理に特に適用可能である。
そのため、特に好ましい一実施形態では、メモリ内で利用可能な状態になっているかどうかが判定され(そして、必要ならば、生成される)データは、表示するグラフィックスデータを処理するために必要なデータであり、最も好ましくは、表示する画像データを生成するために(そして好ましくは表示する最終フレームバッファ出力を供給するために)必要なデータである。
グラフィックス処理システムによって処理されるべきデータを処理するために必要なデータがすでにメモリ内で利用可能な状態になっているかどうかの判定は、所望の好適な方法により実行され、実装されうる。そのため、例えば、また好ましい一実施形態では、必要なデータがメモリ内に存在しているかどうかをグラフィックス処理システムが直接チェックするステップを含みうる。例えば、それとは別に、例えばデータベース、ルックアップテーブル、および/またはビットマップの形式の記録などの情報をチェックするステップを含むことが可能であり、これは、必要なデータがメモリ内ですでに利用可能な状態になっているかどうかを判定するためにメモリ内にどのようなデータが存在し、どのようなデータが存在しないかを示す。例えば、システムでは、メモリ内にあるデータの直接的な、意識的な、または間接的な無意識的な情報が知られている可能性があり、システムでは、それに応じてその情報を使用してチェックし、必要なデータがメモリ内ですでに利用可能な状態になっているかどうかを判定することができる。
特に好ましい一実施形態では、グラフィックス処理システムによって処理されるべきデータを処理するために必要なデータが、すでにメモリ内で利用可能な状態になっているかどうかを判定するステップまたは手段は、グラフィックス処理システムがグラフィックス処理システムによって処理されるべきデータを処理するために必要なデータをメモリからフェッチすることを試みるステップを含む。この場合、データのフェッチは、上述のように、グラフィックス処理システムがメモリから直接データそれ自体をフェッチすることを試みる(次いで、それに応じてメモリ内に存在しているかどうかを確認する)ステップを含むか、または、グラフィックス処理システムが最初にデータベース、ルックアップテーブル、またはビットマップなどの記録をチェックし、メモリ内にどのようなデータが存在しどのようなデータが存在しないかを示し、その後その記録情報からそのデータをフェッチするか、またはデータがメモリ内で利用可能な状態にないと判定する、より間接的なフェッチプロセスを含むことが可能である。
本発明のオペレーションにおいて、グラフィックス処理システムは、典型的には、最初に、データを処理するために追加データが必要であると認識し、次いでその追加データがすでにメモリ内で利用可能な状態になっているかどうかを判定することは理解されるであろう。そこで、好ましい一実施形態では、本発明は、グラフィックス処理システムによって処理されるべきデータを処理するために追加データが必要であると認識する手段またはステップ、次いでグラフィックス処理システムによって処理されるべきデータを処理するために必要な追加データがすでにメモリ内で利用可能な状態にあるか(そうでないか)を判定する手段またはステップを含む。
同様に、当業者であれば理解するように、本発明のオペレーションにおいて、グラフィックス処理システムは、典型的には、処理するデータを受け取り、次いである時点において、受け取ったデータを処理するために追加データが必要であると認識し、次いで追加データがメモリ内で利用可能な状態にあるかどうかを判定する(例えば、メモリからその追加データをフェッチしようと試みる)。
そのため、好ましい一実施形態では、本発明は、処理するデータを受け取る手段またはステップ、受け取ったデータを処理するために追加データが必要であると判定する手段またはステップ、次いで追加データがメモリ内で利用可能な状態にあるかどうかを判定する(例えば、メモリから追加データをフェッチしようと試みる)手段またはステップを含む。
またここでは、追加データがメモリ内で利用可能な状態にあるかどうかの判定(例えば、データのフェッチの試み)(および/または追加データが必要であるとの認識)は、データが必要になった時点で(つまり、他のデータを処理するために(追加)データが必要になったときに)トリガーされうるが、グラフィックス処理における他の何らかの時点で、例えば、グラフィックス処理システムによって(追加)データが実際に使用される時点より前に、トリガーされうることに留意されたい。この後者の状況は、例えば、データのプリフェッチ(例えば、動的テクスチャデータの場合に十分ありうるような)が使用される場合に発生する可能性がある。この場合、データのフェッチの試み(データがメモリ内で利用可能な状態にあるかどうかの判定)(および、好ましくは、その生成(必要ならば))は、「プリフェッチされた」データが実際に使用される時点ではなく、「プリフェッチ」時点においてトリガーされ実行されてもよく、また好ましくはトリガーされ実行される。
そのため、好ましい一実施形態では、データがメモリ内で利用可能な状態にあるかどうかの判定、および本発明の方法で必要な場合にデータの生成は、データが実際に使用される時点よりも前にトリガーされる。
同様に、他の好ましい実施形態では、データがメモリ内で利用可能な状態にあるかどうかの判定、およびデータの生成(必要ならば)は、例えばデータが使用されることが望まれている(使用されることになる)時点に、好ましくは、データを使用することになっているグラフィックスプロセスおよび/または処理ユニットにおいて、またはそのグラフィックスプロセスおよび/または処理ユニットによってトリガーされる。
実際、データがメモリ内で利用可能な状態にあるかどうかの判定(例えば、データのフェッチの試み)などは、典型的には、グラフィックス処理システムの所定のプロセスおよび/または処理ユニットがメモリからデータを取り出す必要があると認識し、次いでそれに応じて処理を進めることによりトリガーされることは理解されるであろう。そのため、好ましい一実施形態では、本発明は、グラフィックス処理システムのプロセスおよび/または処理ユニットが、データがメモリ内で利用可能な状態にあるかどうかを判定する(例えば、好ましくは、メモリからデータをフェッチすることを試みる)ステップと次いでグラフィックス処理システムが、データがメモリ内で利用可能な状態にない場合に、要求されたデータを生成するステップとを含む。同様に、本発明は、好ましくは、グラフィックスプロセスおよび/または処理ユニットが、処理されることになっているデータを受け取り、受け取ったデータを処理するためにメモリからのデータが必要であると認識し、データがメモリ内で利用可能な状態にあるかどうかを判定する(例えば、好ましくは、メモリからデータをフェッチする試みをトリガーする)ステップを含む。
本発明のシステムおよびプロセスは、グラフィックス処理システムの、および/またはグラフィックス処理システムによってデータの処理中に実行されることになっている、または実行されうる、または実行する、任意の所望の好適なプロセスおよび/または処理ユニット(すなわち、例えばメモリからデータをフェッチすることを要求することになる、または要求することができる、あるいはメモリからデータをフェッチすることになる、またはフェッチすることができる任意のプロセスや処理ユニット)に使用され、そのプロセスおよび/または処理ユニット内に実装されうる。
本発明は、そのオペレーション中にメモリからデータを「フェッチ」する必要がある可能性のあるすべてのグラフィックスプロセスおよび/または処理ユニットにおいて、またはそのグラフィックスプロセスおよび/または処理ユニット用に実装することが可能であるか、または必要ならば、特定のプロセス用に、および/または特定のデータに関してのみ使用可能である(その場合、メモリからのデータを必要とすると思われる他のプロセスはそれでも、そのデータを予め用意し、メモリに格納しておく)。好ましい一実施形態では、本発明は、特定の、好ましくは選択された、グラフィックスプロセス、(複数の)処理ユニット、および/またはデータなどに適用され、および/または使用される。
特に好ましい一実施形態では、本発明が適用されるグラフィックプロセスは、レンダリングプロセスであり、最も好ましくは、表示するグラフィックスフラグメントをレンダリングするプロセスである。これは、レンダリングプロセスが動的テクスチャなどの動的データを必要とすることはよくあることであるため都合がよく、したがって、グラフィックス処理のレンダリングステージに本発明を実装することは、特に都合がよいと思われる。
他の好ましい実施形態では、本発明は、さらにまたは代わりに、プリミティブが発行されてタイルベースのレンダリングシステムでレンダリングするステージにおいて実装される。この場合、本発明の方法により「オンデマンド」式で生成されるデータは、例えば、タイルリストそれ自体を含むことができる。(以下でさらに詳しく説明されるように、出願人は、タイルリストの生成を「遅らせる」ことができれば(本発明で実現されうるように)、タイルベースのレンダリングシステムでは特に都合がよい場合のあることを認識している。)
同様に、タイルベースのグラフィックス処理システムの場合、好ましい一実施形態では、本発明のプロセスおよびシステムは、シーンのタイルは表示用に処理されるものとして実装される。
好ましい一実施形態では、本発明は、ラスター処理プロセスの前に実装される。これは、動的データがタイルリストであるときに有益である場合がある。本発明は、好ましくは、さらにまたは代わりに、ラスター処理の後に実装される。これは、動的データが、例えば、動的テクスチャデータである場合とすることが可能である。
本発明が適用され、実装されるグラフィックス処理またはプロセッサの処理ステージまたはユニットは、同様に、所望の、好適なそのようなステージまたはユニットとすることができる。好ましい一実施形態では、これは、レンダリング、フラグメントシェーディング、頂点シェーディング、および/またはジオメトリシェーディング、本発明の方法で動作しうる、また好ましくは動作するグラフィックス処理またはプロセッサのユニットまたはステージのうちの1つまたは複数である。
特に好ましい一実施形態では、これは、本発明の方法で動作する、つまり、本発明の方法によるオンデマンドデータ生成がトリガーされうる、またはトリガーされる、グラフィックス処理システムのプログラム可能な処理ユニット、好ましくはグラフィックス処理「シェーダー」または「シェーダーユニット」である。
(当業で知られているように、グラフィックスプロセッサが、例えば、表示のため処理されるときに、グラフィックスデータに対し所望のグラフィックス処理プログラムを遂行、実行するようにプログラムされうる1つまたは複数のプログラム可能な、または構成可能な処理ユニットを備えることが次第に一般的なことになってきている。これらのプログラム可能なユニットは、一般に、「シェーダー」と称され、典型的には、専用の「固定機能」グラフィック処理ユニットまたはステージと区別される。グラフィックス「シェーダー」の実施例として、フラグメントシェーダー(グラフィックスフラグメントに対しレンダリングオペレーションを実行するために使用される)、頂点シェーダー(グラフィックス頂点に対し頂点シェーディングオペレーションを実行するために使用される)、およびジオメトリシェーダー(ジオメトリデータに対しジオメトリシェーディング(生成)オペレーションを実行するために使用されるが挙げられる。)
グラフィックス「シェーダー」または「シェーディングユニット」は、グラフィックスデータに対しプログラム可能な機能を実行するときに、典型的には、それらのプロセスを実行するために他のデータを必要とする。出願人は、本発明の方法でそのような「他の」データを「オンデマンド」で導出することができれば、特に都合がよいと認識している。
これらの構成では、プログラム可能なグラフィックス処理ユニットは、好ましくは、フラグメントシェーダー、頂点シェーダー、および/またはジオメトリシェーダーである。
本発明の方法により「オンデマンド」で生成されうるデータは、同様に、所望の、好適なそのようなデータ、例えば、グラフィックス処理システムを使用してデータを処理するときにメモリからフェッチすることが必要になる可能性のあるデータ(および最も好ましくは、表示するグラフィックスデータを処理するときに使用されるデータ)とすることができる。上述のように、本発明は、すべてのそのようなデータに関して実装されることが可能であるか、または例えば特定の、好ましくは選択されたそのようなデータのみに使用されうる。
特に好ましい一実施形態では、本発明が使用される際に対象となるデータ(メモリからのフェッチが試みられるデータなど)は、上述のような好ましくは動的グラフィックスデータなどの、典型的にはシーン毎に生成されるか、または計算されるデータを含む。
したがって、特に好ましい一実施形態では、本発明においてメモリ内で探索され、必要ならば生成されるデータは、動的グラフィックスデータを含む。
このような動的グラフィックスデータは、例えば、上述のように、いわゆる動的テクスチャデータ((複数の)動的テクスチャマップおよび/またはテクセル)を含むことが可能である。このような動的テクスチャは、当業で知られているように、特定のシーンに使用する際に作成され、典型的には、陰影などの効果ならびにより複雑な光量および照明効果を生じさせるために使用され、例えば、そのシーンの既存のデータ集合の一部または全部を使用して作成されうる。動的テクスチャデータおよびマップは、当業で知られているように、例えば、通常マップ、バンプマップ、陰影マップ、変位マップなど(および対応するそのようなテクスチャデータ)を含むことができる。
グラフィックス処理で必要になると考えられる「動的」データの他の実施例としては、シーンに対する「動的」ジオメトリデータ、つまり、例えばシーンに使用され、シーンに使用するため、例えばレンダリングされるオブジェクトの高水準記述から生成されなければならない頂点などのジオメトリが挙げられる。
本発明が適用されうる動的グラフィックスデータの他の実施例は、例えば、シーンをレンダリングするときに実際に使用される頂点データ(例えば、属性)を生成するために、変換される(例えば、回転される、拡大縮小される、変位される、など)および/または「照らされる」(例えば、表示されるシーン内の光源に応じて調節される外観を有する)必要があるなど、シーンに対し最初に定義された頂点(頂点データ)が修正され、および/または頂点シェーディングプロセスを受ける必要がある場合の頂点データである。
修正された頂点データを結果として出力し、シーン毎に実行されなければならないこのようなプロセスは、「動的」頂点データを構成するものとみなしてよい。
動的グラフィックスデータの他の実施例は、タイルベースのレンダリングシステムで用意されたタイルリスト(ビニングデータ構造体)であるが、それはプリミティブ(および/またはジオメトリなど)の数および分布は連続するシーン毎に変化するのでプリミティブ(および/または他のジオメトリ)のタイルへのソート(ビニング)(ビニングデータ構造体の作成)はシーン毎にのみ実行されうるからである。
これらの場合のそれぞれにおいて、データは、シーン毎に生成されなければならず、典型的には、シーンとシーンとの間で変化する。したがって、本発明は、上述のように、そのようなデータに適用することができて、有益であり、また好都合である。
したがって、特に好ましい一実施形態では、メモリ内で探索され、必要ならば生成されるデータは、動的テクスチャデータ(例えば、動的テクスチャマップの全部または一部)、(動的)頂点データ(例えば、変換および照明などの、頂点シェーディングプロセスの作用を受けた頂点データ(つまり、修正された、例えば変換され照らされた頂点データ))、1つまたは複数のタイルリスト(例えば、タイルベースのレンダリングシステムで1つのシーンのタイルについて処理されるジオメトリ、例えばプリミティブのリスト)、および/または動的ジオメトリデータ(例えば、1つのシーンについて生成されるべき(新規)頂点)などのうちの1つまたは複数を含む。
本発明においてメモリ内で探索され、必要ならば生成されるデータは、テクスチャデータ、頂点データ、ジオメトリデータ、および/またはタイルリストデータ(1つまたは複数のタイルリスト)を含むことが同様に好ましい。
特に好ましい一実施形態では、必要ならば本発明の方法によりオンデマンドで生成されるデータは、頂点データおよびタイルリストデータを含む。これは、特に、例えば、グラフィックスオブジェクトが最初に、個別のプリミティブおよび/またはタイルに比べて低い分解能および/または階層でソートされ、そのため、例えば、グラフィックス処理システムが特定の1つのタイルを処理する必要があるのに、そのタイルを処理できるためにはそのタイルに関する十分に詳細な情報を確保できない場合であると考えられる。
これは、例えば、最初に用意されたタイルリストは個別のプリミティブをもっぱら列挙しているわけではないが、例えば、複数の個別プリミティブのグループを表すディスクリプタ、および/または非プリミティブ形式でオブジェクトを定義するディスクリプタなどの、レンダリングされるオブジェクトのより粗いまたはより抽象的なディスクリプタなどの、レンダリングされるオブジェクトの他のディスクリプタを列挙している場合であるとも考えられる。次いで、タイルが処理されるときに、他の、例えば、より粗いまたはより抽象的なオブジェクトディスクリプタは、「真の」プリミティブに変換される必要があり、新しい1つまたは複数のタイルリストに、用意されたタイルに対する「真の」プリミティブが列挙される。この作業は、さらに、生成される、「真の」プリミティブを表す新規頂点データを必要とする場合がある。
これらの構成における(複数の)「真の」プリミティブタイルリストおよび頂点データは、本発明の方法によりオンデマンドで生成されることが可能であり、それにより、例えば、他の、例えばオブジェクトのより粗い記述を必要ならばグラフィックス処理の間長期にわたり保持することができる。
言い換えると、グラフィックス処理システムにおいて現在利用可能であるデータに比べてより詳しいデータが必要であることが判明しうる状況で、本発明を使用することにより、そのような「より詳しい」データを必要に応じてオンデマンドで生成することができる。
上述のように、本発明の方法のオペレーションは、一般に、グラフィックスプロセスおよび/または処理ユニットが要求されているデータをメモリから取り出す必要があることを認識または識別し(それ自体により、またはその後のプロセスおよび/または処理ユニットのために)、次いでデータがメモリ内ですでに利用可能な状態にあるかどうかを判定する(例えば、そのデータをフェッチする試みをトリガーする)ことで開始する。そのため、本発明は、好ましくはさらに、グラフィックスプロセスおよび/または処理ユニットが、要求されているかまたは要求されることになるデータが必要であると認識または識別し、そのデータがメモリ内ですでに利用可能な状態にあるかどうかを判定する(例えば、そのデータをフェッチする試みをトリガーする(かまたはフェッチを試みる)ステップまたは手段を含む。
メモリからのデータが必要であることを識別するのは、所望の、好適な方法で行うことができ、例えばそのような構成の既存の方法で行うことができる。例えば、グラフィックスプロセッサまたは処理ユニットは、その性質上、いつでもデータを「フェッチ」する必要があり、および/またはそうするコマンドまたは命令を受け取り、および/または受け取って処理されるデータによりそうするようにトリガーされ、といったことがありうる。
例えば、レンダリングするグラフィックスフラグメントは、動的テクスチャマップに対するテクスチャ座標に関連付けられうる。これに対する応答として、レンダリングプロセス(例えばレンダリングユニット、例えばフラグメントシェーダー)は、テクスチャマップストアから関連するテクセルをフェッチしようと試み、それらのテクセルが利用可能でなければ、それらのテクセルを計算するプロセスがトリガーされうる。
他の状況では、例えば、ラスター処理プロセスは、処理のため受け取ったプリミティブをラスター処理することができるように、例えば(変換され照らされた)頂点データを必要とする場合がある。この場合、プリミティブを受け取った後、ラスタライザーは、メモリからのプリミティブの(それと関連付けられている)頂点に対する関連頂点データ(例えば、頂点データ配列)を探す。頂点(頂点データ)がメモリ内で利用可能な状態になっていない場合、本発明の方法で頂点データを生成するプロセスがトリガーされうる。
同様に、タイルベースのレンダリングシステムにおいて処理のためタイルが発行される場合、システムは、最初に、タイルリストでデータのフェッチを試みて、1つのタイルに対しどのプリミティブ(および/または他のジオメトリ)が処理されるべきかを決定する。適切なタイルリストデータがメモリ内で利用可能な状態になっていない場合、そのデータを生成するプロセスがトリガーされうる。
他の形式の(例えば、動的)データおよびグラフィックス処理に対し類似の構成を使用できる。
したがって、好ましい一実施形態では、本発明は、グラフィックスプロセスまたは処理ユニットが処理されるデータおよび/またはコマンドを受け取るステップまたは手段、およびそれに対する応答として、実行される処理に必要な他のデータをメモリからフェッチする必要があることを認識または識別するステップまたは手段と、次いでメモリからそのデータをフェッチする試みをトリガーする(またはフェッチすることを試みる)ステップまたは手段とを含む。
出願人は、さらに、必要なデータが、例えばそのデータをフェッチする試みが行われたときに、例えば以下でさらに詳しく説明するように、そのデータが本発明の方法によりすでに生成され、格納されているため、メモリ内で利用可能な状態にある場合があることも認識している。この場合、本発明の方法でそのデータを生成する必要はないであろう。そのため、要求された他のデータ(例えば、動的データ)がメモリ内で利用可能な状態にある場合に、グラフィックス処理システムは、好ましくは、通常のように処理を進め、例えば、データがメモリからフェッチされ、次いで関連する処理ユニットによって使用される。
そのため、好ましい一実施形態では、本発明は、必要なデータがメモリ内で利用可能な状態にある場合に、メモリからそのデータをフェッチし、そのフェッチされたデータを使用して処理すべきデータを処理する(データを必要とするプロセスを実行するために)ステップまたは手段を含む。
上述のように、データがメモリ内で利用可能な状態にあるかどうかを判定する(例えば、好ましくは、メモリからデータをフェッチすることを試みる)ステップまたは手段は、メモリからデータをロードするか、取得するか、または取り出すための知られている、および/または好適な技術などの、好適な、所望のそのようなステップまたは手段を含むことができる。
当業者であれば理解するように、データがメモリ内で利用可能な状態にあるかどうかを判定する(例えば、好ましくはデータをフェッチすることを試みる)ステップは、例えば、当業で知られているように、グラフィックス処理システムなどの、またはグラフィックス処理システムなどから利用可能であるキャッシュメモリおよび/またはメインメモリからそのデータを探索するステップを含むことができる。(一般に、そのデータに対し、所望の、好適なメモリスキームが使用されうる。本発明は適用可能であるが、データは格納されうる。)
データが、データの探索元(例えば、フェッチを試みる場所)であるメモリ内で(特定のまたは選択されたメモリ、例えば、「第1」のメモリ内で)利用可能な状態にない場合(例えば、データが第1の場合にキャッシュメモリから探索される場合)、または例えば、データが、格納先となりうるメモリのどれかで利用可能な状態にない場合のみ本発明の方法でデータを生成することが可能であろう(これにより、例えば、本発明の方法でデータをそのときに即座に生成するのではなく(これも可能であろうが)、「キャッシュミス」の場合に、システムは最初に「メイン」メモリ内でデータを探索し、データがメインメモリで利用可能な状態にない場合のみ、本発明の方法によるデータ生成がトリガーされる)。ここでまた、本発明は、好適なすべてのメモリスキーム構成に適用可能である。
本発明においてさらに他のデータを生成するステップまたは手段は、同様に、注目するデータを計算または作成するための知られている、および/または好適な技術など、好適な、所望のそのようなステップまたは手段を含むことができる。
本発明の方法でさらに他のデータが生成される場合、生成されたデータは、所望の、好適な方法で生成されるデータに対するプロセスに使用されうる。
好ましい一実施形態では、生成されたデータは、そのデータが生成された後、そのデータを必要とするプロセスおよび/または処理ユニットに提供され、および/または利用可能にされる。これは、好ましくは、生成されたデータをメモリに格納することにより行われ、したがって、このデータは、通常のようにしてグラフィックスプロセスおよび/または処理ユニットによってそのメモリからフェッチして使用することができる(例えば、生成されたデータを必要とするプロセスが再起動されるか、または再び試みられたとき)。
そのため、好ましい一実施形態では、本発明は、注目するプロセスおよび/または処理ユニットに対し使用できる、および/または注目するプロセスおよび/または処理ユニットによって使用できるように生成されたデータをプロセスおよび/または処理ユニットに提供し、および/または利用可能にする手段またはステップを含む。最も好ましくは、本発明は、生成されたデータをメモリ内に格納する手段またはステップ、および好ましくはグラフィックスプロセスおよび/または処理ユニットなど、次いでその格納されているデータをフェッチし、フェッチしたデータを注目するグラフィックスプロセスに使用する手段またはステップを含む。
生成されたデータが格納されることになっている場合、データは、好ましくはそのようなデータに対する「通常の」方法などの所望の、好適な方法で格納されうる。好ましい一実施形態では、生成されたデータは、グラフィックスプロセスまたはシステムなどの、またはグラフィックスプロセスまたはシステムなどからアクセス可能な1つまたは複数のキャッシュメモリに格納される。もちろん、必要ならば、さらにまたは代わりに非キャッシュメモリ、例えばメインメモリにデータを格納することも可能であろう。ここでもまた、そのデータに対し、必要に応じて、好適な、所望のメモリスキームが使用されうる。
生成されたデータを格納するステップおよび手段は、必要ならば、および/または必要に応じて、そのデータを格納することを目的としてメモリを割り当てることも含んでいてよく、また好ましい一実施形態では、そのデータを格納することを目的としてメモリを割り当てることも含む。好ましい一実施形態では、本発明の方法で生成された任意の(動的)データに対し、メモリの所定の割り当てがありえ、好ましくはメモリの所定の割り当てがある。それとは別に、他の好ましい実施形態では、動的メモリ割り当てスキームが使用されうる(好ましくは使用される)。例えば、生成されたデータに対し利用可能なメモリの所定のプールがありうる。これにより、例えば、動的グラフィックスデータに利用可能な(そして動的グラフィックスデータによって使用される)メモリの量に対し固定された限界を設定する(そして動的グラフィックスデータのメモリ使用量を制限する)ことができる。
本発明では、本発明の方法で生成されたデータを、注目するプロセスに対し使用された後に破棄することが可能であり、実際、本発明の好ましい一実施形態では、これが行われるものである。
(実際、上述のように、本発明の利点は、本発明のシステムでデータが「オンデマンド」で生成できるので、後から使用できるようにデータを格納しておく必要はないという点、またこれにより、システムに必要なデータ記憶容量も減らせるという点である。)
しかし、出願人は、いくつかの状況において、後から使用するために(例えば、好ましくは他の、例えば、および好ましくは、最初に生成されたデータに対するプロセスまたは構成要素(例えば、フラグメント)の後の、グラフィックスプロセス、グラフィックス構成要素(例えば、フラグメント)などともに使用するために)本発明の方法で生成されたデータを格納しておくことが望ましい場合のあることを認識している。
例えば、動的テクスチャマップまたはテクセルなどの動的データの所定の断片は、他の後続のフラグメントによって使用されることがありえる。この場合、例えばデータを必要としている次のフラグメントがレンダリングされるときにデータを再生成する代わりに、後のフラグメントから利用可能であるように生成されたテクスチャデータ(テクセル)を格納することが望ましい可能性もある。これは、特に、以下でさらに説明するように、注目しているプロセスまたは構成要素(例えば、フラグメント)に必要なデータだけでなくそれ以上データがデータの生成時に生成される場合としてよい。
したがって、特に好ましい一実施形態では、本発明の方法で生成されたデータは、注目しているプロセスまたはグラフィックス構成要素(例えば、フラグメント)に使用されると即座に破棄されるわけではなく、その代わりに、例えば、好ましくは、他のまたは後続のまたは後のグラフィックスプロセスとともに使用するために、例えば、好ましくは他の(後続の)グラフィックス構成要素(例えば、フラグメント、プリミティブ、またはタイル)の処理のために、利用可能でありうる、または利用可能であるように、後から使用するために格納することができ、また好ましくは格納される。
このような構成では、上述のように、例えば、生成されたデータが、例えば、そのようなデータに割り当てられるメモリの量、および/またはそのようなデータが保持される時間の長さに関して格納される方法に対し制約がありえ、また好ましくは制約がある。例えば、生成されたデータを格納するために、制限されたサイズの(例えば、キャッシュ)メモリを割り当てることが可能であり、データは必要に応じて先入れ先出し方式で、および/または割り当てられたデータ格納優先度に応じてそのメモリ内に保持されるか、または置き換えられる。
実際、上述のように、本発明の利点は、例えば、動的グラフィックスデータが格納される方法に関して、また格納されるそのようなデータの量に関して柔軟性を許容する点である。これは、とりわけ、そのようなデータをオンデマンドで生成することができることにより、まず第1に、典型的には、格納されるそのようなデータが、能動的に必要とされるデータに制限される可能性が高いことを意味しうるからである(したがって、実際には使用されることのないデータ用にメモリを割り当てたり予約したりする必要がないか、またはそのようなメモリが少なくて済む)。
また、そのようなデータを、使用時点において、または使用時点に近い時点において「オンデマンド」で生成できるため、データが破棄されても(または最初に格納されなくても)、再び必要になったと判明すればいつでも再生成されうるため、もはや必要ないとわかるまでそのようなデータを常に格納しておく必要性もなくなる。つまり、例えば、前に格納されたそのようなデータは、必要ならばメモリの容量を回復するために破棄できる(または、最初にデータを格納しておかない決定を下すことができる)ということである。これは、例えば、メモリ資源が少なく、および/または割高でありうる組み込み型システムにおいては特に有利なものといえる。
これらの状況において、例えば、データを格納することと、そのデータを繰り返し再生成することが必要になる可能性があることとの間に何らかのトレードオフの関係がありえるが、本発明の利点は、これらのトレードオフの関係を柔軟なものにし、またそれらの要件を最適化することができるという点である。
本発明の方法においてグラフィックス処理システム(例えば、レンダリングプロセス)によってデータが生成される必要があり、また生成される場合、例えば、単純に注目しているプロセス(例えば、グラフィックス構成要素(例えば、フラグメント)に必要な実際のデータ(例えば、テクセル)のみを生成することが可能であろう(実際、本発明の好ましい一実施形態では、これが行われるものである)。
しかし、出願人は、いくつかの状況において、注目しているプロセスに(例えば、フラグメントを処理するために)必要なデータだけでなくそれ以上のデータを生成することが望ましい場合があることを認識している。
例えば、動的テクスチャの場合、所定の1つまたは複数のテクセルが、1つのフラグメントによって必要とされる場合、周囲のテクセルのうちのいくつかが他のフラグメントによって必要とされると十分予測できる(隣接するフラグメントは、典型的には、テクスチャマップの隣接領域(例えば、テクセル)を使用するので)。この場合、それぞれのフラグメントに対するテクセルの小さな集合を個別に生成するのではなく、システム側で同時に使用する必要があると予測する可能性のあるすべてのテクセルを生成するとより効率的である場合がある。
したがって、特に好ましい一実施形態では、本発明のデータ生成プロセスは、好ましくはシーンまたはフレームまたは画像などにおいて注目するプロセスに必要なデータに地理的に近いかまたは隣接する、および/または注目するプロセスに必要なデータと同じ、シーン(または画像もしくはフレームなど)の同じ領域内にあるデータなど、注目するプロセスに(例えば、フラグメントを処理するために)必要なデータよりも多くのデータを生成することができ、また好ましくは生成する。
例えば、また好ましくは、特にタイルベースシステムにおいて、システムは、表示されるシーンのページまたはタイルに必要なすべての(動的)データの計算を、そのページまたはタイルに対するデータが最初に生成されることになったときに実行することが可能である。また、例えば、計算されるデータが関係するデータ集合全体(例えば、動的テクスチャマップ)を、そのデータ集合に対するデータが最初に生成されることになったときに生成することも可能であろう。
そのため、特に好ましい一実施形態では、本発明の方法で(つまり、所定のデータ生成プロセスに対し)データ生成がトリガーされたときに生成される(および好ましくは格納される)データは、好ましくはデータが生成される領域の範囲に関して、好ましくは、そのようなデータの異なる「サイズ」または量の範囲を含むことができる(また好ましくはその範囲から選択されうる)。
最も好ましくは、完全データ集合(例えば、動的テクスチャマップ)、または完全データ集合の(選択された)部分集合(所定のページまたはタイルまたは領域などに必要なデータなど)、および/または特定の、個別データ値(例えば、1つまたは複数のテクセル)(例えば、好ましくは、注目しているプロセスに必要な(複数の)データ値だけ)が選択的に生成(および格納)されうる。
実際、本発明の重要な利点は、所定のデータ生成プロセスに使用されるより多いまたは少ないデータを生成する能力を高め、さらに、例えば、データ生成要件、性能およびオーバーヘッド、およびデータを格納するために必要なメモリ設置面積の間のトレードオフの関係および最適化を、例えば柔軟に行えるようにする能力を高める点である。
必要に応じて、所定の時点において生成されるデータの量を選択するかまたは選ぶことができる。好ましい一実施形態では、そのような選択は、データを計算するうえでの処理オーバーヘッド、またはデータを格納するうえでのメモリ要件および/または可用性、および好ましくはこの両方に基づく。例えば、データ生成オーバーヘッドが小さく(例えば、計算が高速で単純であり)、および/またはデータ記憶域(メモリ)が制限されている場合、毎回必要に応じて、また必要になったときに、データを生成することが好ましい場合がある。他方、データ生成オーバーヘッドが大きく、および/またはデータ記憶域が容易に利用可能である場合、所定のデータ生成プロセスにおいてより多くのデータを生成することが好ましい場合がある。
本発明の方法で生成されるデータは、所望の、好適な方法で生成されうる。これは、そのデータを生成するために必要になり、また実行される通常のプロセスおよび例えば、計算を実行することにより、好ましくは生成される。
例えば、動的テクスチャの場合、使用される実際の動的テクスチャマップデータ(テクセル)は、当業で知られているように、その目的のためにすでに定義されている、プリミティブなどの、動的テクスチャオブジェクトを「レンダリング」することにより生成されることが可能であり、また好ましくは生成される。
同様に、本発明の方法によるタイルリストの「オンデマンド」生成は、当業で知られているように、例えば正確なビニングまたは境界ボックスビニング技術を使用して、プリミティブをタイルにビニングすることにより生成されることが可能であり、好ましくは生成される。
(動的)頂点データ(例えば、頂点シェーディング)の生成であれば、頂点シェーディングプロセス(例えば、変換および照明プロセス)は、通常の方法で実行されうる。
(ここで、本発明の意図は、データは、メモリ内で利用可能な状態にない場合に実際に生成または計算されるということであることに留意すべきであり、このことは、例えば、データがすでに存在している可能性があるが、他のソース(例えば、外部メモリ)からフェッチされる必要があるか、または例えば、メモリ内に存在しているが、使用するためにデータの他の表現に変換される必要がある構成とは対照的であろう。)
本発明の方法でデータを生成するときに、その時点で「完全な」データ生成プロセスを(つまり、最初から、そのプロセスに「ロー」データを使用して)実行することが可能であろう。
しかし、出願人は、データ生成プロセスおよび/またはそのプロセスに必要なデータの一部が、例えば、プリミティブをフラグメント位置にラスター処理する前に、またはラスター処理の一部として、例えば、グラフィックス処理で計算がすでに完了し、および/またはデータ構造体がすでに先に用意されているため、本発明の方法でデータが生成されることになる時点においてすでに実行され、および/または利用可能になっている場合のあることを認識している。
例えば、動的テクスチャの場合、フラグメントレンダリングステージにおいて、動的テクスチャに対するテクスチャシーン情報がすでに用意されている可能性があり、その場合、動的テクスチャマップ(テクセル)を生成するテクスチャの「レンダリング」のみが、本発明のデータ「生成」ステージで完了している必要がある。他方で、動的テクスチャに対する「ロー(raw)」テクスチャオブジェクトのみが存在する場合、データ生成ステップで最初に、テクスチャシーン情報を生成し、次いで、シーンをレンダリングして動的テクスチャマップ(テクセル)(など)を生成する。
そのため、本発明のデータ生成プロセスは、好ましくは、可能な限りまたは妥当である限り、すでに存在していてグラフィックスプロセスから利用可能になっている可能性のあるデータおよびデータ構造体を(そのようなデータの生成を反復するといったことをせずに)考慮し、活用し、利用することができる。(実際、当業者であれば理解するように、本発明の方法で実行されるデータ生成プロセスは、どのようなデータおよびデータ構造体などが存在し、グラフィックスプロセスからすでに利用可能になっているかに好ましくは依存し、典型的には依存する。)
そのため、好ましい一実施形態では、結果として得られたデータがすでに利用可能になっている計算を反復するといったことをせずに、最終的なそれでも実行すべきデータ生成プロセスのみが、本発明の方法でデータが生成される時点において実行される。
特に好ましい一実施形態では、本発明のデータ生成プロセスは、好ましくは、必要とされるデータを生成するためにどのデータ(例えば、ジオメトリ)を使用する必要があるかを例えば、好ましくは識別するために使用すべきデータ(例えば、ジオメトリ)のシーン位置または配置、例えばタイリングによるソートなどのどれかのソートを利用する。例えば、動的テクスチャの場合、動的テクスチャを生成するために使用すべきジオメトリ(例えば、プリミティブ)がタイリングされている場合、データ生成プロセスは、現在のデータ要件が関係するその1つまたは複数のタイルを識別することが可能であり、また好ましくは識別し、次いで、そのデータ生成プロセスのためだけにデータをその1つまたは複数のタイルに使用する。
したがって、特に好ましい一実施形態では、データ生成プロセスは、そのプロセスに必要になると思われるすべての利用可能なデータおよび/または情報の部分集合を識別し、次いでデータ生成プロセスにおいてデータのその部分集合のみを使用するステップまたは手段を含む。これには、データ生成プロセスがこれによって簡素化され、および/またはその程度を縮小できるという利点がある(データ生成プロセスに影響を及ぼす可能性のあるデータのみがそのプロセスに使用されることを保証するのに役立ちうるからである)。
上述のように、好ましいそのような一実施形態では、使用するデータの部分集合は、例えば、好ましくは、配置または位置により、最も好ましくはデータ生成プロセスに対し使用されるデータ(例えば、ジオメトリ)のタイリングから、またはそのデータ(例えば、ジオメトリ)をタイリングすることにより、データ生成に使用されるデータ(例えば、好ましくは、ジオメトリおよび/またはグラフィックス構成要素)のソートから識別される。
使用されるデータのそのような「タイリング」およびデータのそのようなソートの使用は、例えば、生成されるデータが、例えば動的テクスチャマップ内のテクセルの場合のような、レンダリングされるシーン内の特定の領域または配置に関係する(つまり、シーン内の関連付けられた位置または配置を有する)場合に特に有益であると思われる。この場合、使用されるデータの地理的な(シーン内の(例えば、好ましくはx、y)位置による)ソートを行うことにより、データの冗長な処理をより容易に回避できる。
これらの構成では、データ生成プロセスにより使用されるデータ(例えば、ジオメトリ)のある種のソート(例えば、タイリング)などは、すでに(例えば、ラスター処理ステージで)実行されている場合があると思われる。この場合、本発明のデータ生成プロセスは、適宜、データのこのすでに実行されているソート(例えば、タイリング)などを使用して活用することが可能であり、また好ましくは使用して活用する。
本発明の方法によるデータ生成の時点(ステージ)において、例えば位置に基づき、またはタイル毎に、使用されるデータ(例えば、ジオメトリ)のソートなどを実行することが、さらに、または代わりに、可能であろう。例えば、データ生成プロセスは、これが使用するデータ(例えば、ジオメトリ)の初期タイリングを実行するように配列または構成されうる。これは、例えば、データがすでにタイリングまたはソートされていない場合に望ましいことがある(例えば、グラフィックスプロセス全体の中の初期ステージにおいて)。
そのため、好ましい一実施形態では、本発明の「オンデマンド」データ生成プロセスは、データ(例えば、ジオメトリ)に関連付けられたシーン内の位置または配置、および/または影響を及ぼすことが知られているのがどのデータ(例えば、ジオメトリ)かということに好ましくは基づき、データ生成プロセスで使用されるデータ(および好ましくはジオメトリ)のソート、好ましくはタイリングを行うステップまたは手段を含むことができ、また好ましくは含む。
最も好ましくは、システムまたはプロセスは、使用しているデータを選択的にソート(例えば、タイリング)することができ、および/またはそうするように選択的に構成されうる。このような選択は、例えばフラグメントをレンダリングするために、「ソートされた」データを使用して要求された(生成されなければならない)他のデータを生成するときに保存されうる処理と比較して、例えばデータ生成ステージにおいてソート(例えば、タイリング)を実行する必要のある付加的処理に基づくことができ、また好ましくは基づく。
データがソートされる、例えばタイリングされる場合、当業者であれば理解するように、ソート(例えば、「タイリング」)プロセスは、例えば必要に応じて、所望のタイルサイズおよび形状、ならびに正確なビニングまたは境界ボックスビニング(または他の何らかのソート技術)などを使用したタイリングの場合に、必要に応じて実行されうる。
出願人は、さらに、いくつかの状況において、処理すべきデータを処理する前に予め(例えば、好ましくは、表示するシーンを処理する前に予め)必要な複数のデータ生成プロセスのうちのいくつかのプロセスを実行することができ、それ以外のプロセスは本発明の方法により「オンデマンド」で実行されるようにすることが好ましい場合があることをさらに認識している。例えば、いくつかのデータ生成プロセスは、比較的長い時間を要することがあり、したがって、それらのプロセスを「オンデマンド」方式で実行することは、例えば実際のレンダリングプロセスに望ましくない遅延を持ち込むことになる可能性があるため、それほど望ましくない場合がある。
したがって、特に好ましい一実施形態では、本発明のシステムおよび/または方法は、要求されたデータを生成するために必要な「全」データ生成プロセス全体が、予め実行されるプロセスおよび本発明の方法においてデータが必要になったときに実行されるプロセスに選択的に分割または分配できるように構成されうる。
したがって、好ましい一実施形態では、本発明は、グラフィックス処理の最も早いステージで(つまり、予め)使用されるデータを生成するのに必要な複数のデータ生成プロセスのうちの一部(全部ではなく)を好ましくは選択的に、実行する手段またはステップを含み、好ましくは実行するように選択的に構成されうる。
(これは、本発明の概念全体を損なうものではなく、「オンデマンド」で実行されるデータ生成がまだあるため、複数のデータ生成プロセスのうちの一部(全部ではなく)が「予め」実行されうるにすぎない。実際、本発明の利点は、これを行うための柔軟性をもたらす点である。)
本発明の方法においてデータがオンデマンドで生成されるときに必要なデータ生成プロセスは、グラフィックス処理システムの所望の、好適な1つまたは複数の処理ユニットで実行されうる。したがって、この目的のために、例えば、1つまたは複数の追加の処理ユニットをグラフィックスプロセッサに備えることも可能である。そのようなユニットは、必要に応じて、例えば、専用の、固定された機能を持つ、処理ユニットを備えることが可能であるか、またはプログラム可能なユニット(シェーダー)とすることが可能である。備えられる実際のユニットは、当業者であれば理解するように、生成されるデータの性質に依存する。
特に好ましい一実施形態では、グラフィックスプロセッサの既存の処理ユニット(例えば、好ましくは、プログラム可能なそのようなユニット(シェーダー))(つまり、他の目的のためにすでに存在している処理ユニット)が、本発明の方法でデータを生成するために使用される。したがって、例えば、動的テクスチャの場合、動的テクスチャの「オンデマンド」生成を実行するために、既存のレンダリングユニット(例えば、好ましくは、フラグメントシェーダー)が使用されるのが好ましい。
グラフィックスプロセッサの既存のユニットが、本発明の方法によるデータ生成に使用される場合、好ましい一実施形態では、可能であれば、その目的のために現在空いている処理ユニットが使用される。
しかし、出願人は、多くの場合において、必要になったときにデータ生成を実行するために利用可能な好適な空いている処理ユニットがない場合があり、したがってその場合に、本発明の方法においてすでに使用されている処理ユニットがデータ生成に使用される必要があることを認識している。
したがって、特に好ましい一実施形態では、本発明は、本発明の方法でデータを生成するようにグラフィックスプロセッサの処理ユニットを割り当てるステップまたは手段を備える。
本発明の方法で必要なデータを生成する処理ユニットのそのような割り当ては、必要に応じて実行されうる。好ましい一実施形態では、グラフィックス処理システムの「コンテキスト」、例えば、レンダリングパイプラインを必要なデータ生成「コンテキスト」に切り替える(例えば、グラフィックス処理を駆動する状態を変更する)ことにより行われる。
この目的のための(レンダリング)「状態」の変更は、すべての処理ユニットの(例えば、レンダリングパイプライン全体の)を異なる状態(当業で知られている)に変更することにより実行されうる。しかし、好ましくは、(例えば、好ましくは、出願人の初期の英国特許出願第2420261号で説明されている技術を使用することにより)選択された(要求された)処理ユニットの状態のみが変えられる。同様に、状態変化(コンテキスト切り替え)は、好ましくは、可能ならばプリミティブ毎に実装される。
このような状態変化が、データ生成が実行されうるように実装されている場合、前の状態は、好ましくは格納され、データ生成が完了した後に処理ユニット(例えば、レンダリングパイプライン)を前の状態に戻すことができる。
当業者であれば理解するように、本発明の方法によりオンデマンドでデータを生成する要件をトリガーする、および/またはデータが生成される(例えば、プリフェッチにより予め生成がトリガーされる場合)(グラフィックス)プロセスは、そのデータが生成されるようなときまでには完了できない可能性がある。同様に、グラフィックスプロセッサの処理ユニットが、本発明の方法で他のデータを生成するために使用されている場合、これにより、それらの処理ユニットが他の何らかの方法で実行されるべきプロセスが、中断する可能性がある。したがって、一般に、本発明の方法により「オンデマンド」でデータを生成する必要があると、他のグラフィックス処理が中断する可能性があり、典型的には中断する。したがって、本発明のシステムおよび方法は、好ましくは、この問題を解消する手段またはステップを含む。
そのため、好ましい一実施形態では、本発明は、必要なデータが本発明の方法で生成されている間に1つまたは複数のグラフィックスプロセスおよび/または1つまたは複数のグラフィックス構成要素(例えば、好ましくはプリミティブおよび/またはフラグメント)の処理をサスペンドし、および/または停止する手段またはステップを含む。最も好ましくは、データが生成される必要のある少なくともプロセスなどは、サスペンドまたは停止されるが、後述のように、他のプロセスなどもサスペンドまたは停止されうる。
例えば、必要なデータが生成され、利用可能にされている間に、グラフィックス処理のすべてをストールするか、または一時停止させることが可能である。しかし、そのようなことをすると、グラフィックス処理の遅延が比較的長くなり、そのため、必ずしも望ましいことにならない場合がある。
したがって、特に好ましい一実施形態では、データ生成が行われている間に、特定の(例えば、好ましくは選択された)1つまたは複数のグラフィックスプロセスなどのみが、サスペンドまたは停止され、最も好ましくは、グラフィックスプロセスまたはシステムが、例えば、好ましくは、本発明のデータ生成プロセスの影響を受けない、他のグラフィックス処理を実行(例えば、好ましくは他のグラフィックス構成要素、例えばフラグメントを処理)し続けることができる。次いで、これにより、データ生成プロセスが実行されている間にレンダリングパイプライン全体をストールする必要がなくなる。ここでもまた、これは、好ましくは、グラフィックスプロセスおよび/または個別のグラフィックス処理ユニットの状態の適切な制御および切り替えにより実行されうる。この場合、必要なデータが生成され、グラフィックス処理システムにおいて利用可能である間、グラフィックス処理の全部ではなく一部が、ストールされるか、または中断される。
これらの構成では、データが生成されている間に、注目している(つまり、生成されるデータを「要求」する)特定のグラフィックスプロセス(例えば、特定のグラフィックス構成要素、例えばフラグメントの処理)をサスペンドする(ストールする)ことのみ可能である。しかし、好ましい一実施形態では、システムまたはプロセスは、注目しているデータ生成プロセスの影響も受ける可能性のあるプリミティブ、フラグメントなどの他のグラフィックスプロセスおよび/または構成要素を識別することを試み、また好ましくは、さらにそれらのプロセスおよび/またはそれらの構成要素の処理をサスペンドするか、停止するか、またはストールする。
例えば、動的テクスチャの場合、生成されるテクセルの影響を受けることが知られているか、または決定されうる他のフラグメントがあってよい。同様に、ストールされたプリミティブの影響を受ける後続のプリミティブがありうる(例えば、ストールされたプリミティブとブレンドされるからである)。これらの場合、データ生成プロセスが完了するまで、他のフラグメントまたはプリミティブなどの処理を遅延させることも好ましい場合がある。
したがって、好ましい一実施形態では、本発明の方法でデータが生成されることを必要とする特定のグラフィックスプロセス(および/または処理ユニット)(例えば、好ましくは、特定のグラフィックス構成要素、例えばフラグメントまたはプリミティブの処理)だけでなくそれ以上のプロセスが、データが生成されている間サスペンドされる。
本発明のデータ生成プロセスの結果として処理がストールされるか、または停止される必要がある場合がある、または望ましくはストールされるか、または停止されうる、このような他のグラフィックスプロセスおよび/または構成要素などの識別は、必要に応じて実行されうる。好ましい一実施形態では、配置または位置情報(例えば、タイル位置)および/または状態情報(例えば、レンダリング状態情報)が、この目的のために使用される。
グラフィックス処理(フラグメントのレンダリングなど)がこの方法で中断された場合、中断された処理は、本発明の方法によるデータ生成が終了した後に完了することが好ましい。
そのため、特に好ましい一実施形態では、本発明は、本発明の方法でデータを生成する必要があるため(必要なデータが生成され、グラフィックスプロセスなどから利用可能なように(提供)された後)中断された処理を実行または完了するステップまたは手段を含む。
本発明の方法でデータを生成することが必要なためストールまたは中断された処理のそのような実行は、必要に応じて実行されうる。例えば、中断されているグラフィックスプロセス(および/またはグラフィックス構成要素、例えば、フラグメントまたはプリミティブの処理)は、完全に取り消され、次いで、データ生成が完了した後に再び(最初から)実行されうる。したがって、例えば、フラグメントをレンダリングする場合、データ生成プロセスの影響を受けるフラグメントを取り消して、次いで、データ生成プロセスが完了した後にレンダリングのため再発行することも可能である。
好ましい一実施形態では、中断されたプロセスは、中断された時点から、または中断した時点と一番最初の開始との間のある中間時点から、再開される。
言い換えると、「中断した」処理などは、再び処理を最初から開始するのではなく、好ましくは、中断した(サスペンドした)時点から再開されるか、またはある中間ステージまでロールバックされるということである。例えば、タイリングシステムの場合、処理は、注目するタイルの処理の開始時点までロールバックされることが可能であり、好ましくはロールバックされる。
それぞれの場合において、注目するプロセスを識別するのに必要なデータ、および必要な他のデータが生成された後にそれらのプロセスを実行する仕方(例えば、取り消されたフラグメントを再発行する仕方)は、好ましくは、中断したプロセスが後で実行できるように適切な方法で格納される。
したがって、好ましい一実施形態では、1つまたは複数のプロセスなどが、本発明のデータ生成プロセスによって中断された場合、中断されたプロセスなどが持つ識別番号は、状態情報などの関連情報およびプロセスなどがロールバックされる時点と併せて格納され、中断されたプロセスなどは、将来の所望の時点において再開されうる。
例えば、フラグメントをレンダリングする場合、影響を受けるフラグメントの現在ステータスは、(そのレンダリング状態とともに)格納され、したがって、データ生成プロセスが完了した後にそのデータを使用してプロセスが再開されうる。
データなど(例えば、「フラグメント」)のそのような格納は、好ましくは、レンダリングプロセス(例えば、パイプライン)の外部で実行されるが、それは、データ生成プロセスに処理ユニットが必要になる場合があるときに、例えば、処理ユニットを「ストールさせる」ために処理ユニットを通じてフラグメントを単純にループバックさせることが可能でない場合があるからである。
上述のように、本発明の利点は、表示するシーンの処理で実際にはそもそも使用されない(例えば、動的)グラフィックスデータの不要な生成を回避できる点である。この利点は、グラフィックスプロセス全体が、グラフィックス処理からデータを早期にカリングし削除するための技術を備え、使用する場合に高まる(その場合、間引かれたデータに対し「オンデマンド」データ生成はまったくない)。
したがって、特に好ましい一実施形態では、本発明は、さらに、本発明の方法によるデータ生成が実行されるステージの前に(グラフィックス)処理から(グラフィックス)データを削除するか、またはカリングすることを試みるステップまたは手段を含む。データ(例えば、フラグメント、プリミティブなど)のそのような「早期」カリング(culling)は、例えば、好ましくは、早期深さ(Z)試験、ジオメトリ上の閉塞カリングスキームなどの隠面消去技術を使用することにより、必要に応じて実行されうる。好ましい一実施形態では、(早期)可視テストが使用される。
好ましいそのような一実施形態では、最終シーンに現れないジオメトリを識別することを試みるテストが行われ、そのようなジオメトリが見つかった場合に、そのジオメトリ(および好ましくはそれにもっぱら関連付けられているデータ)は破棄される。そのようなテストは、例えば、ジオメトリが表示される可視フレームから完全に外れるかどうかを調べるテストを含むことが可能であり、好ましい一実施形態では、含む。
好ましい一実施形態では、表示するシーンをレンダリングするために実際には必要でない動的データ(例えば、動的テクスチャ)を識別することを試みるテストが、さらにまたは代わりに実行され、そのようなデータが見つかった場合、そのデータは好ましくは破棄される。タイリングベースシステムでは、これは、好ましくは、ビニングされたプリミティブ(つまり、レンダリングされるシーンに対するタイルリストに載っているプリミティブ)にまったく結び付けられていない動的データ集合(例えば、好ましくは、動的テクスチャ)を識別することにより実行される(動的データ集合がビニングされたプリミティブに結び付けられていない場合には、視錐台中に存在するプリミティブに結び付けられていないと想定できるので)。
したがって、特に好ましい一実施形態では、本発明は、表示するシーンを処理するときに使用されない動的データ集合を探索し、および/または検出または決定することを試み、好ましくは、そのシーンに使用されないことがわかった動的データ集合をシーンに関する他の処理から破棄する手段またはステップを含む。この探索は、好ましくは、表示するシーンを処理する前に予め、タイリングシステムでは、好ましくは、シーンジオメトリ(例えば、プリミティブ)が複数のタイルにソート(ビニング)されたステージの後、好ましくはそもそもビニングされたジオメトリ(つまり、タイルリストに含まれるジオメトリ)に結び付けられない動的データ集合を識別しようと試みることにより実行される。
このような構成は、例えば、動的データも同様に予め生成される構成において動的データ集合を削除する(または動的データ集合の生成を回避する)ためにも使用することが可能なので、それ自体において新しく有利であると考えられる。
したがって、本発明の第3の態様によれば、グラフィックスデータを処理する方法が提供され、この方法は、
表示するシーンをレンダリングする前に、シーンをレンダリングするのに実際には必要でない動的グラフィックスデータを識別することを試みるステップを含む。
本発明の第4の態様によれば、グラフィックスデータを処理するための装置が実現され、この装置は、
表示するシーンをレンダリングする前に、シーンをレンダリングするのに実際には必要でない動的グラフィックスデータを識別する手段を備える。
当業者であれば理解するように、本発明のこれらの態様は、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、動的データが必要かどうかの識別は、好ましくは、タイルベースシステムでは、シーンについてビニングされたジオメトリ(例えば、好ましくはプリミティブ)にまったく結び付けられていない動的データを識別することを試みることにより実行される。同様に、必要でない動的データが識別された場合、その動的データは、好ましくは、シーンの今後の処理から省かれる。
本発明のこれらの態様および実施形態において、探索される動的データは、好適な、所望のそのようなデータを含むことができる。好ましい一実施形態では、好ましくは動的テクスチャマップなどの、動的テクスチャデータ(テクスチャデータ)を含む。
本発明をすべてのグラフィックスプロセスに関して動作させることも可能であろう。それとは別に、例えば、本発明のプロセスがどこで必要になりそうかを指示し、プロセスの潜在的必要性が示された場合に本発明の方法により可能なオペレーションのみをアクティブ化することが可能である。例えば、好ましくは、処理されるフラグメントなどのグラフィックス構成要素は、動的データ(例えば、動的テクスチャ)を必要としているものとして(または必要としていないものとして)マーク付けする(フラグを立てる)ことが可能であり、本発明は、動的データを必要としているものとして指示された構成要素(例えば、フラグメント)のみについて呼び出されうる。
したがって、好ましい一実施形態では、本発明の方法によるオペレーションが必要となりうるかどうかの指示が与えられ、本発明の方法によるオペレーションは、そのような指示にのみ応答してアクティブ化される。
本発明のまたは本発明とともに使用するグラフィックス処理システムは、好適な任意の形態をとりうる。当業者であれば理解するように、本発明に従って動作する必要のある特定のコンポーネントまたは機能とともに、表示するグラフィックスデータを処理させるために必要な他の機能およびコンポーネントを備えることができ、また備えるべきである。そのため、これは、好ましくは、当業で知られているように、例えば(プログラム可能な)1つまたは複数の頂点シェーダーユニット、(プログラム可能な)1つまたは複数のフラグメントシェーダーユニット、(複数の)ラスター処理ユニット、(複数の)レンダリングユニット(例えば、テクスチャマッピングユニット、フォギングユニット、および/またはブレンディングユニットなどを含む)などのうちの1つまたは複数を備える。
グラフィックス処理システムは、必要に応じて実装できる。好ましい一実施形態では、単一の(シリコン)プラットフォームとして実装される。
好ましい一実施形態では、本発明は、ハードウェアグラフィックスレンダリングパイプラインに適用されるか、またはハードウェアグラフィックスレンダリングパイプラインとして実装される。
本発明のさまざまな機能要素などは、例えば、好ましくは、適切な機能ユニット、処理ロジック回路、プロセッサ、マイクロプロセッサ装置などにより必要に応じて実装されうる。
本発明は、所望のグラフィックス処理システムに対し使用できる。これは、特に、ただし排他的ではなく、3Dグラフィックス処理システムに適しており、当業者であれば理解するように、タイルベースのレンダリングシステムに具体的な応用があり、また好ましくはタイルベースのレンダリングシステムで実装される。
したがって、本発明は、さらに、本発明のシステムまたは装置を含む、および/または本発明の方法のうちの1つまたは複数に従って動作しうる、グラフィックスプロセッサおよび/またはグラフィックス処理システムもしくはプラットフォーム、および好ましくは3Dグラフィックスプロセッサおよび/またはグラフィックス処理システムもしくはプラットフォームに拡大適用される。上述の特定の機能を実行するためにハードウェアが必要であることを前提条件とすると、そのようなグラフィックスプロセッサなどは、他の何らかの方法で、グラフィックスプロセッサが備える、通常の機能/ユニットなどの1つまたは複数またはすべてを備えることができる。
上記から理解されるように、本発明は、一般に、グラフィックスプロセスがデータを必要とする場合に、グラフィックス処理システムが最初にそのデータをメモリの中から探し、次いで、データがメモリ内で利用可能な状態にない場合に、そのデータを使用できるように生成するために使用される構成を実現する。
したがって、本発明の他の態様によれば、グラフィックス処理システムにおいて表示するシーンのグラフィックスデータを処理する方法が提供され、この方法は、
表示するシーンデータの処理に他のデータが必要になったときに、メモリからそのような他のデータをフェッチすることを試みるステップと、
メモリ内で他のデータが利用可能な状態になっていない場合に、必要な他のデータを生成し、次いで、その生成された他のデータを使用して表示するシーンデータを処理するステップとを含む。
本発明の他の態様によれば、グラフィックス処理システムにおいて表示するシーンのグラフィックスデータを処理するシステムが実現され、このシステムは、
表示するシーンデータの処理に他のデータが必要になったときに、メモリからそのような他のデータをフェッチすることを試みる手段と、
メモリ内で他のデータが利用可能な状態になっていない場合に、必要な他のデータを生成し、次いで、その生成された他のデータを使用して表示するシーンデータを処理する手段とを備える。
当業者であれば理解するように、本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、必要な他のデータは、好ましくは、テクスチャデータ、頂点データ、ジオメトリデータ、および/またはタイルリストデータである。
同様に、本発明は、表示するシーンのグラフィックスデータを処理するために必要になると思われるデータの生成が、グラフィックス処理を実行するのにデータが必要になるときまで遅延させることができ、また遅延される方法およびシステムを実現する。
したがって、本発明のさらに他の態様によれば、グラフィックス処理システムにおいて表示するグラフィックスデータを処理する方法が提供され、この方法は、
表示するシーンを処理するときに使用されるデータの生成を、表示するシーンを処理するプロセスにデータが必要になるときまで遅延させるステップを含む。
本発明の他の態様によれば、表示するシーンを処理するときに使用されるデータの生成を、表示するシーンを処理するプロセスにデータが必要になるようなときまで遅延させることができるグラフィックスを処理するシステムが実現される。
当業者であれば理解するように、本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、生成されるデータは、好ましくは、テクスチャデータ、頂点データ、ジオメトリデータ、および/またはタイルリストデータであり、および/または好ましくは、表示するシーンの他のグラフィックスデータを処理するために、および/または処理するときに使用されるべきである。
同様に、本発明は、表示するシーンのグラフィックスデータを処理するために必要になると思われるデータの生成が、グラフィックス処理を実行するのにデータが必要になったときに、オンデマンドで実行されうる方法およびシステムを実現する。
したがって、本発明のさらに他の態様によれば、グラフィックス処理システムにおいて表示するグラフィックスデータを処理する方法が提供され、この方法は、
表示するシーンを処理するときに使用されるデータを、表示するシーンを処理するプロセスにデータが必要になったときにオンデマンドで生成するステップを含む。
本発明の他の態様によれば、表示するシーンを処理するときに使用されるデータが、表示するシーンを処理するプロセスにデータが必要になったときにオンデマンドで生成されうる、グラフィックス処理システムが実現される。
当業者であれば理解するように、本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、生成されるデータは、好ましくは、テクスチャデータ、頂点データ、ジオメトリデータ、および/またはタイルリストデータであり、および/または好ましくは、表示するシーンの他のグラフィックスデータを処理するために、および/または処理するときに使用されるべきである。
上記から理解されるように、本発明の特に好ましい構成および重要機能は、表示するシーンをレンダリングするのに必要な動的グラフィックスデータの少なくとも一部は、シーンをレンダリングする前に予め生成されることはなく、その代わりに、シーンがレンダリングされるときにオンデマンドで生成されるというものである。
したがって、本発明の他の態様によれば、表示するグラフィックスデータの処理が動的グラフィックスデータの使用を必要とする可能性のある、グラフィックス処理システムにおいて表示するグラフィックスデータを処理する方法が提供され、この方法は、
表示するシーンを処理する前に予め、表示するシーンを処理するときに使用される動的グラフィックスデータを生成しないステップと、
表示するシーンを処理するときに使用される動的グラフィックスデータを、表示するシーンを処理するために動的グラフィックスデータが必要になったと判断されたときにオンデマンドで生成するステップとを含む。
本発明の他の態様によれば、表示するグラフィックスデータを処理する際に動的グラフィックスデータの使用を必要とする可能性がある、グラフィックス処理システムが実現され、このシステムは、
表示するシーンを処理する前に予め表示するシーンを処理するときに使用される動的グラフィックスデータを生成する代わりに、表示するシーンを処理するときに使用される動的グラフィックスデータを、表示するシーンを処理するために動的グラフィックスデータが必要であると判定されたときにオンデマンドで生成する手段を備える。
当業者であれば理解するように、本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたはすべてを備えることができ、好ましくは備える。したがって、動的グラフィックスデータは、好ましくは、動的テクスチャデータ、動的頂点データ、動的ジオメトリデータ、および/またはタイルリストデータである。
上述のように、本発明の特に好ましい一構成は、必要に応じた動的グラフィックスデータのオンデマンド生成を伴う。
したがって、本発明の他の態様によれば、グラフィックス処理システムにおいてデータを処理する方法が提供され、この方法は、
グラフィックス処理システムが、
処理するデータを受け取り、
受け取ったデータを処理するために動的グラフィックスデータが必要であることを認識し、
必要な動的グラフィックスデータがメモリ内ですでに利用可能な状態にあるかどうかを判定し、
動的グラフィックスデータがメモリ内で利用可能な状態になっていない場合に、必要な動的グラフィックスデータを生成し、次いで、その生成されたデータを使用して処理すべきデータを処理するステップを含む。
本発明の他の態様によれば、グラフィックス処理システムが実現され、このシステムは、
処理するデータを受け取る手段と、
受け取ったデータを処理するために動的グラフィックスデータが必要であることを認識する手段と、
必要な動的グラフィックスデータがメモリ内ですでに利用可能な状態にあるかどうかを判定する手段と、
メモリ内で動的グラフィックスデータが利用可能な状態になっていない場合に、必要な動的グラフィックスデータを生成し、次いで、その生成されたデータを使用して処理すべきデータを処理する手段とを備える。
当業者であれば理解するように、本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、生成される動的グラフィックスデータは、好ましくは、テクスチャデータ、頂点データ、ジオメトリデータ、および/またはタイルリストデータである。
当業者であれば理解するように、本明細書で説明されている本発明の態様および実施形態はすべて、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。
本発明による方法は、少なくとも部分的にはソフトウェアを使用して、例えばコンピュータプログラムを使用して実装されうる。そのため、他の態様から見たときに、本発明は、データ処理手段にインストールされたときに方法または本明細書で説明されている方法を実行するように特に適合されたコンピュータソフトウェア、データ処理手段上でプログラム要素が実行されたときに方法または本明細書で説明されている方法を実行するコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、およびデータ処理システム上で方法が実行されたときに方法または本明細書で説明されている方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムを提供することがわかる。
本発明は、さらに、データ処理手段を備えるマイクロプロセッサシステムおよび/またはグラフィックス処理システムを動作させるために使用されたときに前記データ処理手段と併せて前記システムに方法または本発明の方法のステップを実行させるコンピュータソフトウェアキャリアおよび/またはそのようなソフトウェアを含むコンピュータプログラム製品または媒体に拡大適用される。このようなコンピュータソフトウェアキャリアまたは製品は、ROMチップ、CD ROM、またはディスクなどの物理的記憶媒体とすることが可能であるか、またはケーブル上の電子信号、光信号、または衛星もしくは同様のものなどへの無線信号などの信号とすることが可能である。
さらに、本発明の方法のステップすべてが、コンピュータソフトウェアによって実行される必要はないことは理解されるであろうし、したがって、さらに広い観点から、本発明は、コンピュータソフトウェア、および方法または本明細書で説明されている方法の複数のステップのうちの少なくとも1つを実行するためにコンピュータソフトウェアキャリア上にインストールされたそのようなソフトウェアを提供する。
したがって、本発明は、コンピュータシステムとともに使用するためコンピュータプログラム製品として適宜具現化されうる。そのような実装は、コンピュータ可読媒体、例えば、ディスケット、CD-ROM、ROM、またはハードディスクなどの、有形の媒体上に固定された、あるいは限定はしないが、光またはアナログ通信回線を含む有形の媒体上で、あるいは限定はしないが、マイクロ波、赤外線、または他の伝送技術を含む無線技術の無形の手段を使用して、モデムまたは他のインターフェイスデバイスを介して、コンピュータシステムに伝送可能な、一連のコンピュータ可読命令を含むことができる。これら一連のコンピュータ可読命令は、本明細書ですでに説明されている機能の全部または一部を具現化する。
当業者であれば、このようなコンピュータ可読命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するために多くのプログラミング言語で作成されうることを理解するであろう。さらに、このような命令は、限定はしないが半導体、磁気、または光を含む、現在の、または将来のメモリ技術を使用して格納されるか、または、限定はしないが光、赤外線、またはマイクロ波を含む、現在の、または将来の通信技術を使用して伝送されうる。このようなコンピュータプログラム製品は、印刷または電子文書を添付した取り外し可能媒体、例えばシステムROMまたは固定ディスク上のコンピュータシステムにプリインストールされている、例えば市販ソフトウェアとして配布されるか、あるいはサーバーまたはネットワーク、例えばインターネットまたはワールドワイドウェブ上の電子掲示板から配布されうる。
次に、本発明の多数の好ましい実施形態について、付属の図面を参照しつつ、実施例のみを使って説明する。
本発明に従って動作しうるグラフィックス処理システムの概略を示す図である。 本発明の一実施形態における図1のグラフィックス処理システムのオペレーションの概略を示す図である。 動的テクスチャデータを生成する従来技術の概略を示す図である。 本発明の技術が有益に適用されうるシーンの概略を示す図である。 図4のシーンを処理するときに使用する修正されたオブジェクトディスクリプタの概略を示す図である。
図1は、本発明に従って動作しうるグラフィックス処理システム1の構成の概略を示す。
本発明のこの実施形態は、タイルベースのレンダリングシステムに関して、また本発明の方法による動的テクスチャの生成に関して説明される。しかし、上述のように、もちろん、他の構成も可能である。
図1に示されているように、グラフィックス処理システム1は、状態管理システム2、ラスター処理ステージ3、およびレンダリングステージ4をレンダリングパイプラインの形態で備える。
状態管理システム2は、当業で知られているように、状態データ、およびグラフィックス処理オペレーションを制御するグラフィックス処理ユニットの状態を格納し、制御する。
当業で知られているように、ラスタライザー3は、その入力として、表示すべきプリミティブを受け取り、それらのプリミティブをレンダリングされるフラグメント位置(フラグメント)にラスター処理する。
レンダリングパイプライン4は、ラスタライザー3からフラグメントを受け取り、それらのフラグメントを表示のためレンダリングする。当業で知られているように、レンダリングパイプライン4は、フラグメントシェーダー、ブレンダー、テクスチャマッパーなどの多くの異なる処理ユニットを備える。
レンダリングパイプライン4からの出力(レンダリングされたフラグメント)は、タイルバッファ5に出力される(この実施形態は、タイルベースシステムだからである)。次いで、表示するため、タイルバッファの出力は、最終的にフレームバッファ6に出力される。
図1は、さらに、この実施形態の方法で動作するように備えられている、グラフィックス処理システム1の特定の機能の概略も示している。
特に、図1に示されているように、レンダリングパイプライン4のテクスチャマッピングステージ7は、レンダリングするために受け取ったフラグメントをテクスチャ処理するのに必要なテクスチャを決定するためにテクスチャリストバッファ8にアクセスできるように構成されている。この実施形態で使用されるテクスチャは、当業で知られているように、「静的」テクスチャおよび「動的」テクスチャの両方を含む。テクスチャリストバッファ8は、必要なテクスチャを示し、次いで、当業で知られているように、テクスチャマッピングシステム7が、メモリから必要な関連するテクスチャおよび/またはテクセルをフェッチしようと試み、フェッチされたデータを使用して、注目するフラグメントを処理する。
図1に示されているように、この実施形態では、動的テクスチャは動的テクスチャメモリ9内にそれらのテクスチャを格納することにより処理される。したがって、フラグメントが動的テクスチャを必要とする場合、テクスチャリストバッファ8は、レンダリングパイプライン4内のテクスチャユニット7に対し、動的テクスチャメモリ9からテクスチャがフェッチされ、フラグメントを処理するために使用されることを指示する。
図1は、さらに、フラグメントキャッシュ10も示す。このキャッシュは、以下でさらに詳しく説明するように、本発明の方法で動的テクスチャが生成されている間に処理が中断(ストール)される必要があったフラグメントに関係するデータを格納するために使用される。
図1に示されているように、タイルバッファ5は、さらに、データを動的テクスチャメモリ9に出力するように構成されうる。以下でさらに詳しく説明するように、この構成は、この実施形態の方法で動的テクスチャを生成するときに使用され、これにより、生成されたテクスチャを動的テクスチャメモリ9に格納しておき、その後、フラグメントをレンダリングするときに使用するためにそこからテクスチャを取り出せる。
図1に示されているようなグラフィックスプロセッサのステージ、要素、およびユニットなどのそれぞれは、必要に応じて実装することが可能であり、そこで、例えば、必要なオペレーションおよび機能を実行する適切な回路、および/または処理ロジックなどを備えることは理解されるであろう。
次に、本発明の一実施形態による図1のグラフィックス処理システムのオペレーションについて、図2を参照しつつ説明する。
図2は、1つのタイルに対するフラグメントがラスタライザー3(ステップ20)によって生成(発行)された後に開始するこの実施形態のプロセスにおけるステップを示す。
プロセスの第1のステージでは、初期「可視性」テストをそれぞれのフラグメントに対し実行する(フラグメントに対しさらに処理を行わないようにできるか確認する)(ステップ21)。この実施形態では、このテストは、早期深さまたはZテストである。しかし、他の「可視性」テストを代わりに、または同様に使用することが可能である。例えば、フラグメントが実際に可視フレーム内に入るかどうかに関するテストを実行し、および/または他の隠面消去技術を使用することがさらにまたは代わりに可能である。
フラグメントが、使用されている可視性テストによって可視でないことがわかった場合、これは、レンダリングパイプラインに渡されない(つまり、さらなる処理から破棄される)(ステップ22)。これは、フラグメントが、とりわけ、いかなる動的テクスチャの生成もトリガーせず、したがって、動的テクスチャを冗長生成する可能性がさらに減ることを意味する。(実際、一般に、可能な限り多くのデータなどを、初期ステージのレンダリングプロセスから取り除くことを試みるのが好ましく、そうすることで、一般に、実行される潜在的に冗長性を有する動的テクスチャ生成の量を減らせる。)
フラグメントが、「可視」であると判明した場合、これは、レンダリングのためレンダリングパイプライン4に渡される。
次いで、図2では、フラグメントがテクスチャ処理ステージ7に到達し、その時点で、フラグメントに使用されるテクセルアドレスが計算されると想定される(ステップ23)。これは、この実施形態において、テクスチャリストバッファ8をチェックすることにより実行される。
この実施形態では、テクスチャは、静的テクスチャであるか動的テクスチャであるかを示す追加タグを備えると想定されている。これは、ステップ24でチェックされる。(しかし、テクスチャが静的であるか動的であるかのタグ付けをしなくても本発明を動作させることが可能である。システムは、それでも、単純にメモリから必要なテクセルを取り出そうとし、メモリ内にそれらのテクセルが見つからない場合に、この実施形態の方法でそれらを生成するステップに進むことが可能である。)
テクスチャが動的テクスチャでないことが判明した場合、システムは(複数の)テクセルをフェッチするステップに進み、通常の方法でフラグメントのレンダリングを完了させることができる(この場合、テクセルはメモリ内にすでに存在しており、使用できる状態にあると想定できるからである)(ステップ30から33)。
必要なテクセルが、動的テクスチャに関係していると判定された場合、システムは、最初に、動的にテクスチャメモリ9からそれらのテクセルをフェッチすることを試みる(ステップ25)。
テクセルが動的テクスチャメモリ9内に存在する場合、テクセルは、直接的に取り出せ、動的テクスチャは通常の方法で注目するフラグメントに適用されうる(つまり、静的テクスチャの場合のように)(ステップ31)。
次いで、フラグメントは、通常どおりレンダリングされ、タイルバッファ5に出力されうる(ステップ32および33)。
他方で、動的テクスチャを注目するフラグメントに適用するのに必要なテクセルが動的テクスチャメモリ9内で利用可能な状態にないことが判明した(つまり、実際に、動的テクスチャの「ミス」が発生した)場合、関連するテクセルが生成されなければならない。
このプロセスの第1のステージでは、注目する動的テクセルを必要とするフラグメントのレンダリングをサスペンドする(この処理は、動的テクセルが生成されるまで完了しえないからである)(ステップ28)。これは、フラグメントキャッシュ10内にフラグメントに関係する関連フラグメントデータ、レンダリング状態データなどを格納することにより行われるので、新しい1つまたは複数の動的テクセル(動的テクスチャデータ)が生成された後、その現在データを取り出し、フラグメント処理を、そのサスペンドした時点から再開することができる。
(このフラグメントデータは、動的テクスチャデータが生成される間、レンダリングパイプライン4の外部にあるフラグメントキャッシュ10内に格納されるが、それは、以下でさらに詳しく説明するように、レンダリングパイプライン4が、動的テクスチャデータを生成するために使用され、したがってレンダリングパイプライン4でサスペンドされているフラグメントを単純にループバックさせないことが好ましいからである(さもなければ「通常」のテクスチャキャッシュミスの場合に実行される可能性がある)。)
この実施形態では、動的テクスチャ生成プロセスをトリガーしたフラグメントをサスペンドするとともに、システムは、さらに、動的テクスチャ(テクセル)を生成する必要があることからさらに影響を受ける可能性のある、他のフラグメントおよびプリミティブなどの、他のグラフィックス構成要素およびプロセスを識別することを試みるオペレーションをし、生成される動的テクスチャの用意が整うまで(ここでもまた、関連情報をフラグメントキャッシュ10に格納することにより)それらのグラフィックス構成要素などの処理をサスペンドまたは排除する。
例えば、システムは、生成される動的テクスチャを必要とする他のフラグメントを識別し、動的テクスチャが生成されるまでそれらのフラグメントをサスペンドすることを試みる。これは、例えば、フラグメントの位置およびその関連するレンダリング状態に基づく。
同様に、システムは、好ましくは、さらに、サスペンドされたフラグメントの影響を受ける可能性がある(例えば、サスペンドされたフラグメントとブレンドされたため)後続のプリミティブを識別し、ここでもまた、生成される動的テクスチャの用意が整うまでそれらのプリミティブのレンダリングをサスペンドまたは停止するオペレーションをする。ここでもまた、これは、例えば、プリミティブの位置および状態情報を使用することにより実行されうる。例えば、動的テクスチャデータを生成することが必要である状況をトリガーしたフラグメントの領域内に入るプリミティブは、動的テクスチャが生成されるまでその処理をサスペンドすることが可能である。ここでもまた、サスペンドされたプリミティブをその後の適切な時期に処理できるようにするために必要なデータは、適切な方法で格納される。
これらの構成では、動的テクスチャが生成される必要があるためこの実施形態の方法でフラグメントがサスペンドされた場合、多数の他のフラグメントまたはプリミティブなども、そのときにサスペンドされる可能性があることは理解されるであろう。
この点を鑑みて、またこの場合にサスペンドされる必要のあるレンダリングパイプライン4のオペレーション全体を回避するために、この実施形態のレンダリングパイプライン4は、複数の「レンダリングコンテキスト」を保持し切り替える機能を有する。言い換えると、生成される動的テクスチャを必要とするか、または生成される動的テクスチャの影響を受ける可能性のあるフラグメント集合のレンダリングをサスペンドした後、レンダリングパイプライン4は、第1のフラグメント集合(第1の「レンダリングコンテキスト」)で動的テクスチャ生成プロセスが完了するのを待つ間、異なるフラグメント集合(他の「レンダリングコンテキスト」)のレンダリングに切り替えることができる。これらの構成では、異なる「レンダリングコンテキスト」は、典型的には、フレームバッファの所定のセクションとなる。
異なる「レンダリングコンテキスト」の切り替えは、例えば、レンダリングパイプライン4の状態および/またはパイプライン内のレンダリングユニットの状態の適切な構成により実行されうる。
関連フラグメント、グラフィックス構成要素などがサスペンドされた後、プロセスは、必要な動的テクスチャ(テクセル)を生成するステップ(ステップ27)に進み、それらの動的テクスチャを動的テクスチャメモリ9に格納するステップ(ステップ28)に進む。
この実施形態では、レンダリングパイプライン4は、動的テクスチャを生成するためにレンダリングパイプラインを使用する場合に実行されるのと同様に通常の方法でそのテクスチャをレンダリングすることにより関連動的テクスチャ(テクセル)を生成するために使用される。したがって、関連動的テクスチャジオメトリおよび/またはテクスチャオブジェクトなどは、レンダリングパイプライン4に渡され、次いで、それらのオブジェクトをレンダリングして動的テクスチャ出力(テクセル)をタイルバッファ5に供給するステップに進む。次いで、タイルバッファ5は、生成された動的テクセルを動的テクスチャメモリ9に格納するように構成されるので、動的テクスチャを必要とするフラグメントがレンダリングされるときに(それらのフラグメントの処理が再開されるときに)それらのテクセルをそこから取り出すことができる。
言い換えると、レンダリングパイプライン4は、動的テクスチャをレンダリングして、それを動的テクスチャメモリ9内に格納するので、この動的テクスチャは、注目するフラグメントのレンダリングパスのテクスチャソースとして使用されうる(通常、動的テクスチャが動的テクスチャメモリ9内にすでに格納されているか、または静的テクスチャが使用されていた場合と同様に)。
必要な動的テクスチャ(テクセル)を生成するレンダリングパイプライン4の適切な構成は、レンダリングパイプライン(および/またはレンダリングパイプラインのレンダリングユニット)の状態を適宜設定することによりなされる。
他の構成も可能であろう。例えば、この実施形態の方法においてレンダリングパイプライン4それ自体を使用して動的テクスチャを生成する代わりに、その目的のために専用処理ユニットを備えることも可能である。
動的テクスチャデータ生成プロセスは、さらに、必要ならばデータ生成の他のステージ、例えば、動的テクスチャを生成するのに必要なジオメトリデータの生成を完了するための頂点シェーディング、および/またはシーン内の位置または配置により動的テクスチャを生成するために使用されるジオメトリをソートするタイリング(ビニング)プロセスも伴うことがある。(後者は、使用するジオメトリの「タイリング」を行って動的テクスチャを生成することにより、この実施形態の方法で動的テクスチャが生成されるときに実際に処理されるジオメトリの量を減らすことができるため有利でありうる。)
一般に、この実施形態の方法で動的テクスチャを生成するために実行される実際のプロセスは、データの生成時にレンダリングパイプラインに対しすでに利用可能になっているデータ構造などに依存する。例えば、実際、動的テクスチャオブジェクトの頂点シェーディングおよび/またはそのタイリングもしくはビニングが、すでに実行されている場合、実際の動的テクスチャテクセルが生成されるステージでそれらのプロセスを繰り返す必要はなく、その代わりにレンダリングパイプライン4が動的テクスチャに対する関連テクセルを単純にレンダリングすることができる。その一方で、ジオメトリデータ(頂点シェーディング)がまだ生成される必要があり、および/またはタイリング(ビニング)データ構造体がまだ必要である場合、それらのプロセスは、必要ならば、動的テクスチャ(テクセル)が生成されるときに実行されうる。
実際、本発明のこの実施形態(および一般に本発明)であっても、それでも、表示するシーンのフラグメントをラスター処理し、レンダリングする前に予め、ジオメトリデータ(初期頂点シェーディング)などの動的テクスチャを生成するために必要な一部のデータの生成および/または動的テクスチャのタイリング(ビニング)データ構造体の生成を実行することが好ましい場合があるが、それは、これらのプロセスが潜在的に大きくなる可能性があり、フラグメントレンダリングで動的テクスチャが生成されるときにそれらのプロセスを実行することで、フラグメント処理のサスペンドが非常に長くなり望ましくない状態になる可能性があるからである。したがって、例えば、所定の動的テクスチャがアクセスされる可能性が非常に高い場合に、それらのプロセスを予め実行するのが好ましく、これにより、例えば、前のフレームレンダリングと並行して実行することが可能であり、注目しているシーンに対するフラグメントレンダリングをその時点において比較的長い間サスペンドすることはない。
この実施形態では、フラグメントをレンダリングするときに使用する動的テクスチャ(テクセル)を生成する必要があると判断された場合、システムは、さらに、生成されるべき注目する動的テクスチャの領域を識別するオペレーションをする。
これは、例えば、データ生成が実行されるときに、例えば、動的テクスチャデータ生成プロセスに対し比較的高いオーバーヘッドがある場合に、必要とされるテクセルだけでなくそれ以上のテクセルをも計算することが望ましい場合があるからである。したがって、この実施形態では、所定の動的テクスチャ生成イベントが生じたときに動的テクスチャのどのような領域が生成されるかを選択的に構成することが可能である。これは、例えば、注目する動的テクスチャを必要とする可能性のあるシーンのプリミティブ、フラグメント、タイル、領域などを示す状態管理システム2からの情報に基づくことができる。
例えば、注目するタイル(つまり、動的テクスチャ生成をトリガーしたフラグメントが関係するタイル)に対する動的テクスチャ(テクセル)が生成され格納されうる。そこで、これにより、注目するタイルに対しその動的テクスチャを再度生成しなくても済む可能性がある。
いったん関連動的テクスチャデータ(テクセル)が生成され、動的テクスチャメモリ9内に格納されていれば、サスペンドされたフラグメントなどの処理が再開されうるが、それというのも通常の方法で動的テクスチャメモリ9からの動的テクスチャを使用することができるからである(ステップ29)。
この実施形態では、サスペンドされたフラグメントのレンダリングなどは、フラグメントキャッシュ10に格納されている、フラグメント情報などを使用して、処理がサスペンドされた時点から再開される。そのため、フラグメントはテクセルアドレス計算ステージに「戻される」(ステップ23)。
サスペンドされたフラグメントは、次いで、そのレンダリングを通常の方法で完了し(このときに、必要な動的テクスチャデータは、動的テクスチャメモリ9内で利用可能な状態になるので)、適宜フレームバッファ6に出力できるようにタイルバッファ5に格納される(ステップ24、25、31、32、および33)。
他の構成も、もちろん、使用可能である。例えば、サスペンドされているフラグメントなどの処理をレンダリングの初期ステージにロールバックするか、実際には、単純に、フラグメントを完全に取り消して、必要ならばレンダリングパイプライン4の最初からそれらのフラグメントの再発行を行うことも可能である。それぞれの場合において、フラグメントキャッシュ10は、サスペンドまたは取り消されたフラグメントなどの再発行方法に関する、必要なデータを格納するために使用され、これにより、それらのフラグメントなどに対するレンダリングプロセスは、適切な方法で再起動され、レンダリングの一貫性を保持できる。
上記の実施形態では、フラグメントをレンダリングする前に予め動的テクスチャを生成するのではなく、その代わりに、それらのフラグメントのレンダリングを一時停止し、レンダリングパイプラインを使用して動的テクスチャを生成し、次いで一時停止されたフラグメントのレンダリングを再開することにより、フラグメントが生成されるときに動的テクスチャをオンデマンドで生成(レンダリング)する。
この構成には、多数の潜在的利点がある。
例えば、動的テクスチャが実際にはレンダリングされるフラグメントによってまったくアクセスされない場合、その動的テクスチャの生成は、潜在的に完全に省くことができる。同様に、フラグメントが所定の動的テクスチャの一セクションしかアクセスせず、テクスチャマップ全体をアクセスしない場合、ここでもまた、この実施形態は、実際に必要とされる動的テクスチャの領域のみが実際に生成され、これにより、動的テクスチャデータの潜在的に冗長な生成が低減されうる。
本発明は、同様に、動的テクスチャの取り扱いに必要なメモリ設置面積も縮小できる。例えば、この実施形態では、メモリは、動的テクスチャ全体をやみくもに格納するではなく、レンダリングに必要になる可能性があると判明した動的テクスチャの部分の生成および格納にだけ必要である。したがって、この実施形態では、実際に必要になる可能性のない、および/または実際に生成されていない動的テクスチャの領域に対しメモリを割り当てたり確保したりする必要性を回避できる。
さらに、この実施形態では、すでに生成されている動的テクスチャおよび動的テクスチャデータ(およびその目的のために生成された瞬間データ構造体)を破棄して、実際にレンダリング中であろうと、メモリの回収を行うことも可能である(そのデータは、再び必要になった場合にこの実施形態の方法でいつでも生成できるからである)。これは、動的テクスチャの一領域はこの実施形態の方法で複数回生成される必要があるが、そうであっても、動的テクスチャに使用されているメモリを破棄し、および/または回収することができるため、物理的メモリ設置面積が非常に小さくても動的テクスチャを使用することができ、また性能とメモリ設置面積との間のトレードオフを定め、最適化することもできる。
この実施形態は、動的テクスチャの生成に関して上で説明されているけれども、本発明およびこの実施形態の原理は、さらに、特に他の形態の動的グラフィックスデータなどの他の形態のグラフィックスデータにも適用されうる。
したがって、本発明は、例えば、タイルベースのレンダリングシステムにおけるタイルリストの生成、また動的ジオメトリおよび頂点の生成などの頂点テクスチャ処理および「頂点バッファレンダリング」(RTVB)にも等しく適用できる。これらの場合には、「動的」データの生成をトリガーするプロセスは、レンダリングプロセス(例えば、フラグメントシェーダー)ではないが、その代わりに、例えば、頂点シェーディングまたはジオメトリシェーディングプロセス(頂点シェーダーまたはジオメトリシェーダー)となる。
図4は、本発明の方法によりオンデマンドで頂点データおよびタイルリストデータを生成することが望ましいと思われる例示的な状況を示している。
図4は、前景の形状特徴62により部分的にまたは完全に塞がれる可能性のある複合オブジェクト61を含む、表示のためレンダリングされるシーン60を示している。複合オブジェクト61は、この実施例では、多くの個別プリミティブからなる。
通常の方法でシーン60を単純にレンダリングする、つまり、複合オブジェクト61を個別に構成するそれぞれのプリミティブをレンダリングし、例えば、それぞれのプリミティブが前景オブジェクト62によって塞がれているかどうかを判定することが可能である。しかし、これは、複合オブジェクト61を構成する多数の個別プリミティブが与えられた場合にかなりの処理を必要とすることがある。
したがって、出願人は、個別のプリミティブの形態で複合オブジェクト61を処理する代わりに、最初にそのオブジェクトを全体として処理しようと試み、そのオブジェクトが全体として塞がれるかどうかを判定できるか確認することが望ましい場合があると認識している。
このために、グラフィックス処理システムは、この実施形態では、個別プリミティブの形態に比べて粗いまたは抽象的な、複合オブジェクト61の代替え記述を生成するように構成される。この実施形態では、オブジェクト61のこのより抽象的なまたは粗い表現は、オブジェクト61に対する境界ボックス63であり、次いで、処理する複合オブジェクト61を表す単一プリミティブとして使用されうる。
図5は、この、つまりメタプリミティブ63をシーン60内のオブジェクト61(の位置)を表すために使用できる境界ボックスの形態で備えることを示している。
この実施形態では、オブジェクト61を表す境界ボックスまたはメタプリミティブ63は、2つの方法のうちの1つで生成されうる。まず第1に、オブジェクト61に対して定義されている頂点データを評価し、オブジェクト61を表す境界ボックスまたはメタプリミティブ63をそのデータから作成し、次いで、そのメタプリミティブ63を、レンダリングするために画面空間に変換することができる。それとは別に、オブジェクト61に対して定義されている頂点データを、最初に、画面空間に変換し、次いで、境界ボックスまたはメタプリミティブ63を画面空間内のオブジェクト61を表すように定義することも可能である。
複合オブジェクト61の境界ボックス、メタプリミティブ表現63が生成された後、オブジェクト61を構成する個別プリミティブを処理のためパイプラインに送るのではなく、シーン60を、通常の方法で、ただし複合オブジェクト61を表すメタプリミティブ63を使用して、ラスター処理およびレンダリングパイプライン(図1に示されている形態のパイプラインなど)に通すことができる。
境界ボックス、メタプリミティブ63は、他のプリミティブと同様の処理パイプラインによって処理される。そのため、メタプリミティブ63は、例えば、レンダリングパスで、適切なタイルにビニングされ、1つのタイル内にまったく入っていなければカリングされ、レンダリングパイプライン内で行われるさまざまな形態の閉塞試験および深さ試験を受けることができ、受ける。
複合オブジェクト61を表すメタプリミティブ63に対する閉塞試験の結果は、例えば、オブジェクト61がシーン内の前景オブジェクト62によって完全に塞がれているかどうかを判定するために使用されうる。そうであれば、オブジェクト61を表すメタプリミティブ63は、レンダリングプロセスから排除(カリング)されうる(そしてオブジェクト61を構成する個別プリミティブは決して処理されない)。
しかし、パイプラインを通るパスにおいて、メタプリミティブ63が前景オブジェクト62によって完全には塞がれていないと判定された場合、オブジェクト61をその真の形態で処理する必要があり、したがってシーン60内に適切にレンダリングされうる。
この場合、グラフィックス処理システムは、オブジェクト61を、シーン60内に適切にレンダリングできるようにその「真の」個別プリミティブ形式で処理するようにトリガーされなければならない。これを達成するために、オブジェクト61を表すメタプリミティブ63は、メタプリミティブ63がグラフィックス処理システムを通るパスで拒絶されない場合にオブジェクト61を表す真のプリミティブの処理のトリガーとなる好適な情報、データ、またはタグなどを関連付けられている。
しかし、このオペレーションがトリガーされた場合、複合オブジェクト61を構成する個別プリミティブではなく、メタプリミティブ63のみが、この実施形態において、シーンに対するタイルリストにソート(ビニング)されている。
したがって、グラフィックス処理システムが個別プリミティブ形式で複合オブジェクト61をレンダリングする場合、タイルリストから個別プリミティブを読み出そうとするが、その情報がタイルリスト内に存在しないことが判明する。次いで、オンデマンド方式で(つまり、本発明の方法で)オブジェクト61を構成する個別プリミティブを生成して、タイルリストへの適切なビニングを実行するオペレーションをトリガーする。
複合オブジェクト61を構成する個別プリミティブを処理するのに必要な頂点データに関して同様の状況が発生しうる。メタプリミティブ63がどのように生成されたかに応じて、それらのプリミティブが処理されることになったときにメモリ内にすでに格納されている複合オブジェクト61を表す個別プリミティブの頂点について変換された頂点データはない可能性がある。その場合ここでもまた、処理パイプラインがその頂点データを必要としたときに、最初に、メモリから取り出そうとして、そこにないことがわかり、次いで、本発明の方法によりオンデマンド方式でそのデータの生成をトリガーすることができる。
このデータが生成され、利用可能になった後、グラフィックス処理システムは、通常の方法で複合オブジェクト61を構成する「真の」個別プリミティブを処理し、それにより、当業で知られているように、これらのプリミティブのうちどれが実際に見られ、どれが塞がれているかを判定することができる。
好ましい一実施形態では、メタプリミティブ63は、レンダラーを通じてZ-onlyパスを受けるようにタグ付けされる(メタプリミティブ63を完全にレンダリングしようとするのは不適切であるため、シーン60内に描画される真のオブジェクトでないため)。
もちろん、この実施形態および本発明に対し他の変更および修正を行うことも可能であろう。
例えば、上述の初期フラグメント可視性テストだけでなく、好ましい一実施形態では、動的テクスチャが使用されるかどうかを判定することを試みるテストがタイリング(ビニング)ステージにおいて実行される。このため、ビニングステージは、動的テクスチャの使用/非使用を検出する(未使用の動的テクスチャを探索する)ことを試みるロジックを備えることができる。
これは、好ましくは、ビニングされたプリミティブにまったく結び付けられていない動的テクスチャを識別することを試みることにより実行される(動的テクスチャが視錐台内にまったく「存在」していないことを示唆する)。どのビニングされたプリミティブにもまったく結び付けられていないと判明した動的テクスチャは、したがって注目するシーンに対し決して必要にならないため、そのステージで破棄されうる。
これは、さらに、実際にシーンに対し決して使用されない動的テクスチャの不要な生成を回避するのに役立つ。
上記のことから、本発明は、その好ましい実施形態において、少なくとも、とりわけ動的グラフィックスデータを処理するための改善された技術およびシステムを実現することがわかる。特に、これは、動的グラフィックスデータなどを取り扱う、そのようなデータに必要なメモリ容量を低減できる、および/または必要メモリ容量とレンダリング性能との間のトレードオフ決定および最適化などを容易に行えるようにする、構成を実現する。
本発明は、さらに、特に動的グラフィックスデータなどの、本質的に予測不可能なデータ要件に対し、グラフィックスシステムにおける予測性の高い、固定サイズのメモリ利用を容易にする。また、これは、例えば、そのようなデータに使用されるメモリ領域は、性能を著しく落とすことなく、定義済みサイズ(メモリ設置面積)を有するように設定されうることを意味する。
本発明は、したがって、携帯電話、PDAなどの低出力および/または携帯型デバイスおよび製品、および組み込みグラフィックスシステムなどにおける、メモリ資源が制約または制限されうる状況で特に有利である。
これは、本発明の好ましい実施形態では、少なくとも、表示するシーンを生成する前に予め必要な動的データを生成するのではなく、表示するシーンを生成する際に必要であると判明したときに「オンデマンド」方式でそのデータを生成することができるようにすること、および生成することにより達成される。特に、本発明のシステムおよび方法は、その好ましい実施形態において、少なくとも、使用する必要が生じたときに必要なデータがメモリ内で利用可能な状態にあるかどうかをチェックし、そのときにメモリ内に存在していない場合、そのデータをそこで生成し、次いで使用する。
1 グラフィックス処理システム
2 状態管理システム
3 ラスター処理ステージ、ラスタライザー
4 レンダリングステージ、レンダリングパイプライン
5 タイルバッファ
6 フレームバッファ
7 テクスチャマッピングステージ
8 テクスチャリストバッファ
9 動的テクスチャメモリ
10 フラグメントキャッシュ
50 シーン
51 視点
52、53 光源
54 シャドウマップ
55 動的シャドウマップ
60 シーン
61 複合オブジェクト
62 前景の形状特徴
63 メタプリミティブ

Claims (16)

  1. グラフィックス処理システムでデータを処理する方法であって、
    前記グラフィックス処理システムによって処理されるデータ処理にさらなるデータを必要とする場合、
    前記グラフィックス処理システムが、
    前記グラフィックス処理システムによって処理されるべき前記データを処理するために必要な前記さらなるデータがすでにメモリ内で利用可能な状態になっているかどうかをメモリから前記さらなるデータのフェッチを試みることにより判定するステップと、
    前記フェッチの試みでメモリから前記さらなるデータが返らないことに応答して、前記必要とされるデータを生成するステップと、前記処理されるべきデータを処理するために前記生成されたデータを使用するステップと、
    前記フェッチの試みで前記さらなるデータがすでにメモリ内で利用可能な状態であるという判定に応答して、メモリからさらなるデータをフェッチするステップと、さらなるデータを生成することなく、処理されるべき前記データを処理するためにフェッチされた前記さらなるデータを使用するステップと、
    を含むことを特徴とする方法。
  2. メモリ内で探索され、必要ならば生成される前記データは、動的グラフィックスデータを含むことを特徴とする請求項1に記載の方法。
  3. メモリ内で探索され、必要ならば生成される前記データは、テクスチャデータ、頂点データ、ジオメトリデータ、および/またはタイルリストデータを含むことを特徴とする請求項1または2のいずれか一項に記載の方法。
  4. 前記生成されたデータを、後のグラフィックス処理に使用するために利用できるようにメモリ内に格納するステップを含むことを特徴とする請求項1から3のいずれか一項に記載の方法。
  5. 前記必要なデータが生成されるときに注目する前記処理に必要な前記データだけでなくそれ以上のデータも生成するステップを含むことを特徴とする請求項1から4のいずれか一項に記載の方法。
  6. 前記必要とされるデータを生成するステップは、
    そのステップに必要になる可能性のある前記利用可能なすべてのデータおよび/または情報の部分集合を識別するステップを含み、次いで前記必要とされるデータを生成するステップは、データのその部分集合のみを使用することを特徴とする請求項1から5のいずれか一項に記載の方法。
  7. 前記必要なデータが生成される間に1つまたは複数のグラフィックス処理および/または1つまたは複数のグラフィックス構成要素の処理をサスペンドし、および/または停止するステップを含むことを特徴とする請求項1から6のいずれか一項に記載の方法。
  8. 表示するシーンを処理するときに使用されることのない動的グラフィックスデータ集合を決定することを試みるステップと、
    前記シーンに使用されないことが判明している前記シーンに関してさらに処理されないよう動的データ集合を破棄するステップと、を含むことを特徴とする請求項1から7のいずれか一項に記載の方法。
  9. グラフィックス処理システムであって、
    前記グラフィックス処理システムによって処理されるデータ処理にさらなるデータを必要とする場合、
    当該グラフィックス処理システムによって処理されるべき前記データを処理するために必要な前記さらなるデータがすでにメモリ内で利用可能な状態になっているかどうかをメモリから前記さらなるデータのフェッチを試みることにより判定するための手段と、
    前記フェッチの試みでメモリから前記さらなるデータが返らないことに応答して、前記必要とされるデータを生成する手段と、前記処理されるべきデータを処理するために前記生成されたデータを使用する手段と、
    前記フェッチの試みで前記さらなるデータがすでにメモリ内で利用可能な状態であるという判定に応答して、メモリからさらなるデータをフェッチするステップと、さらなるデータを生成することなく、処理されるべき前記データを処理するためにフェッチされた前記さらなるデータを使用する手段と、
    を備えることを特徴とするシステム。
  10. メモリ内で探索され、必要ならば生成される前記データは、動的グラフィックスデータを含むことを特徴とする請求項9に記載のシステム。
  11. メモリ内で探索され、必要ならば生成される前記データは、テクスチャデータ、頂点データ、ジオメトリデータ、および/またはタイルリストデータを含むことを特徴とする請求項9または10のいずれか一項に記載のシステム。
  12. 前記生成されたデータを、後のグラフィックス処理に使用するために利用できるようにメモリ内に格納する手段を備えることを特徴とする請求項9から11のいずれか一項に記載のシステム。
  13. 前記必要なデータを生成する前記手段は、前記必要なデータが生成されるときに注目する前記処理に必要な前記データだけでなくそれ以上のデータも生成する手段を含むことを特徴とする請求項9から12のいずれか一項に記載のシステム。
  14. 前記必要なデータを生成する前記手段は、その必要なデータの生成に必要になる可能性のある前記すべての利用可能なデータおよび/または情報の部分集合を識別する手段および前記必要なデータの生成にデータのその部分集合のみを使用する手段を含むことを特徴とする請求項9から13のいずれか一項に記載のシステム。
  15. 前記必要なデータが生成される間に1つまたは複数のグラフィックス処理および/または1つまたは複数のグラフィックス構成要素の処理をサスペンドし、および/または停止する手段を備えることを特徴とする請求項9から14のいずれか一項に記載のシステム。
  16. 表示するシーンを処理するときに使用されることのない動的グラフィックスデータ集合を決定することを試みる手段と、
    前記シーンに使用されないことが判明している前記シーンに関してさらに処理されないよう動的データ集合を破棄する手段と、を備えることを特徴とする請求項9から15のいずれか一項に記載のシステム。
JP2009134193A 2008-06-04 2009-06-03 グラフィックス処理システム Active JP5624733B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0810205.5 2008-06-04
GBGB0810205.5A GB0810205D0 (en) 2008-06-04 2008-06-04 Graphics processing systems

Publications (2)

Publication Number Publication Date
JP2009295162A JP2009295162A (ja) 2009-12-17
JP5624733B2 true JP5624733B2 (ja) 2014-11-12

Family

ID=39638158

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009134192A Active JP5538748B2 (ja) 2008-06-04 2009-06-03 グラフィックス処理システム
JP2009134193A Active JP5624733B2 (ja) 2008-06-04 2009-06-03 グラフィックス処理システム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009134192A Active JP5538748B2 (ja) 2008-06-04 2009-06-03 グラフィックス処理システム

Country Status (4)

Country Link
US (4) US9367953B2 (ja)
JP (2) JP5538748B2 (ja)
CN (2) CN101604454B (ja)
GB (4) GB0810205D0 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101445074B1 (ko) * 2007-10-24 2014-09-29 삼성전자주식회사 미디어 플레이어에서 미디어 객체 처리 방법 및 그 장치
US8626720B2 (en) * 2008-02-11 2014-01-07 International Business Machines Corporation System and method of reconstructing complex custom objects
GB0810205D0 (en) * 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
US8605102B1 (en) * 2009-10-08 2013-12-10 Nvidia Corporation Rasterization tile coalescer and reorder buffer
KR101661931B1 (ko) * 2010-02-12 2016-10-10 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법
GB2478909B (en) * 2010-03-19 2013-11-06 Imagination Tech Ltd Demand based texture rendering in a tile based rendering system
US20110249022A1 (en) * 2010-04-08 2011-10-13 Rajesh Poornachandran Techniques for managing power use
US9256465B2 (en) * 2010-12-13 2016-02-09 Advanced Micro Devices, Inc. Process device context switching
US9299121B2 (en) * 2010-12-15 2016-03-29 Advanced Micro Devices, Inc. Preemptive context switching
JP5636988B2 (ja) * 2011-01-27 2014-12-10 富士通株式会社 描画装置および方法
WO2012106419A1 (en) * 2011-02-03 2012-08-09 L3 Communications Corporation Graphics processing architecture for an fpga
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
CN102306076B (zh) * 2011-07-26 2016-02-03 深圳Tcl新技术有限公司 图形动态纹理的生成方法及终端
US10089774B2 (en) * 2011-11-16 2018-10-02 Qualcomm Incorporated Tessellation in tile-based rendering
GB2497762B (en) * 2011-12-20 2018-05-23 Advanced Risc Mach Ltd Intermediate value storage within a graphics processing apparatus
WO2013109304A1 (en) 2012-01-16 2013-07-25 Intel Corporation Generating random sampling distributions using stochastic rasterization
US9472163B2 (en) * 2012-02-17 2016-10-18 Monotype Imaging Inc. Adjusting content rendering for environmental conditions
US8970613B2 (en) * 2012-06-06 2015-03-03 Apple Inc. Render tree caching
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9741154B2 (en) * 2012-11-21 2017-08-22 Intel Corporation Recording the results of visibility tests at the input geometry object granularity
US9280956B2 (en) * 2012-11-29 2016-03-08 Qualcomm Incorporated Graphics memory load mask for graphics processing
CN102970542B (zh) * 2012-11-30 2015-06-10 上海晨思电子科技有限公司 一种视频数据转换的方法、装置和智能电视
US9311749B2 (en) * 2012-12-07 2016-04-12 Donya Labs Ab Method for forming an optimized polygon based shell mesh
KR20140073951A (ko) * 2012-12-07 2014-06-17 삼성전자주식회사 베이지어 커브를 렌더링하는 장치 및 방법
US20140184629A1 (en) * 2012-12-31 2014-07-03 Nvidia Corporation Method and apparatus for synchronizing a lower bandwidth graphics processor with a higher bandwidth display using framelock signals
US9704286B2 (en) 2013-02-06 2017-07-11 Square Enix Holdings Co., Ltd. Information processing apparatus, method, and storage medium for generating a viewpoint independent map
US9953455B2 (en) * 2013-03-13 2018-04-24 Nvidia Corporation Handling post-Z coverage data in raster operations
US9483861B2 (en) * 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering
JP5864474B2 (ja) * 2013-05-01 2016-02-17 株式会社ディジタルメディアプロフェッショナル 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法
US9626732B2 (en) * 2013-10-10 2017-04-18 Intel Corporation Supporting atomic operations as post-synchronization operations in graphics processing architectures
US9552667B2 (en) * 2013-12-13 2017-01-24 Nvidia Corporation Adaptive shading in a graphics processing pipeline
GB2525223B (en) 2014-04-16 2020-07-15 Advanced Risc Mach Ltd Graphics processing systems
WO2015181851A1 (ja) * 2014-05-28 2015-12-03 株式会社スクウェア・エニックス・ホールディングス 展開予測装置、展開予測方法、プログラム及び記録媒体
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
GB2527822B (en) * 2014-07-03 2020-10-07 Advanced Risc Mach Ltd Graphics processing
CN104200220B (zh) * 2014-08-21 2017-05-03 武汉大学 一种基于静态纹理模型聚集的动态纹理识别方法
KR101923011B1 (ko) 2014-10-10 2018-11-28 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 장면 이미지 생성기
GB2532495B (en) * 2014-11-21 2018-05-02 Advanced Risc Mach Ltd Graphics processing systems
US9489710B2 (en) * 2015-02-10 2016-11-08 Qualcomm Incorporated Hybrid rendering in graphics processing
US10255337B2 (en) * 2015-03-31 2019-04-09 Change Healthcare Holdings, Llc Health care information system and method for transforming health care data with a transformation pipeline
KR102292789B1 (ko) * 2015-04-07 2021-08-25 삼성전자 주식회사 디스플레이장치 및 그 제어방법
CN105550975B (zh) * 2015-12-11 2019-06-28 中国航空工业集团公司西安航空计算技术研究所 一种3d图形指令优化方法
GB2546810B (en) * 2016-02-01 2019-10-16 Imagination Tech Ltd Sparse rendering
US10102662B2 (en) 2016-07-27 2018-10-16 Advanced Micro Devices, Inc. Primitive culling using automatically compiled compute shaders
KR102489266B1 (ko) 2018-08-13 2023-01-17 엘지전자 주식회사 모바일 디바이스 및 그 제어 방법
US10825200B2 (en) * 2019-01-30 2020-11-03 Trivver, Inc. Texture based pixel count determination
CN110519544B (zh) * 2019-08-30 2021-03-23 维沃移动通信有限公司 一种视频通话方法及电子设备
GB2603618B (en) * 2020-12-18 2023-04-26 Imagination Tech Ltd Graphics processing systems and methods

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5315691A (en) * 1992-01-22 1994-05-24 Brother Kogyo Kabushiki Kaisha Print control apparatus
JPH0855239A (ja) 1994-07-21 1996-02-27 Internatl Business Mach Corp <Ibm> グラフィカル・オブジェクトの可視性を判定するための方法および装置
JP3029554B2 (ja) 1995-05-22 2000-04-04 株式会社ハドソン 3次元図形描画装置
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
US5751291A (en) 1996-07-26 1998-05-12 Hewlett-Packard Company System and method for accelerated occlusion culling
JP3879189B2 (ja) * 1996-07-31 2007-02-07 ソニー株式会社 画像生成装置およびその方法
US6023279A (en) 1997-01-09 2000-02-08 The Boeing Company Method and apparatus for rapidly rendering computer generated images of complex structures
US6631423B1 (en) * 1998-03-31 2003-10-07 Hewlett-Packard Development Company, L.P. System and method for assessing performance optimizations in a graphics system
US6456285B2 (en) * 1998-05-06 2002-09-24 Microsoft Corporation Occlusion culling for complex transparent scenes in computer generated graphics
US7375727B1 (en) 1998-07-22 2008-05-20 Nvidia Corporation System, method and computer program product for geometrically transforming geometric objects
US6236413B1 (en) * 1998-08-14 2001-05-22 Silicon Graphics, Inc. Method and system for a RISC graphics pipeline optimized for high clock speeds by using recirculation
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6243097B1 (en) * 1998-12-10 2001-06-05 International Business Machines Corporation Bounding volume for 3D graphic primitives
US7242414B1 (en) * 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US6476806B1 (en) * 1999-04-16 2002-11-05 Hewlett-Packard Company Method and apparatus for performing occlusion testing while exploiting frame to frame temporal coherence
US6603474B1 (en) 1999-05-27 2003-08-05 International Business Machines Corporation Method and apparatus for occlusion culling of objects in a data processing system
US6448967B1 (en) * 1999-07-26 2002-09-10 Silicon Integrated Systems Corp. Z-Buffer pre-test for 3D graphics performance enhancement
US6734867B1 (en) * 2000-06-28 2004-05-11 Micron Technology, Inc. Cache invalidation method and apparatus for a graphics processing system
EP1368732B1 (en) * 2000-10-18 2008-01-23 Koninklijke Philips Electronics N.V. Digital signal processing apparatus
US6621492B2 (en) * 2000-12-18 2003-09-16 International Business Machines Corporation Method and apparatus using primitive bounding volumes to improve the accuracy of BSP-trees
JP2003016438A (ja) 2001-06-28 2003-01-17 Kyocera Corp 画像生成装置
US7065757B2 (en) * 2001-09-28 2006-06-20 Hewlett-Packard Development Company, L.P. Efficient compilation of family of related functions
US7009605B2 (en) * 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
JP4350342B2 (ja) * 2002-04-26 2009-10-21 株式会社リコー 画像処理装置、画像記録装置、カメラシステム、プログラム、記憶媒体及び画像処理方法
US6980209B1 (en) * 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
US6952206B1 (en) * 2002-08-12 2005-10-04 Nvidia Corporation Graphics application program interface system and method for accelerating graphics processing
US7530062B2 (en) * 2003-05-23 2009-05-05 Microsoft Corporation Optimizing compiler transforms for a high level shader language
US7164420B2 (en) * 2003-07-24 2007-01-16 Autodesk, Inc. Ray tracing hierarchy
US6952217B1 (en) * 2003-07-24 2005-10-04 Nvidia Corporation Graphics processing unit self-programming
US7388581B1 (en) * 2003-08-28 2008-06-17 Nvidia Corporation Asynchronous conditional graphics rendering
US20050122338A1 (en) * 2003-12-05 2005-06-09 Michael Hong Apparatus and method for rendering graphics primitives using a multi-pass rendering approach
US7385608B1 (en) * 2003-12-31 2008-06-10 3Dlabs Inc. Ltd. State tracking methodology
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US7382377B1 (en) * 2004-06-17 2008-06-03 Nvidia Corporation Render to texture cull
US7746347B1 (en) * 2004-07-02 2010-06-29 Nvidia Corporation Methods and systems for processing a geometry shader program developed in a high-level shading language
GB0425204D0 (en) * 2004-11-15 2004-12-15 Falanx Microsystems As Processing of 3-dimensional graphics
US7681187B2 (en) * 2005-03-31 2010-03-16 Nvidia Corporation Method and apparatus for register allocation in presence of hardware constraints
GB0524804D0 (en) 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
EP1804187B1 (en) 2005-12-30 2020-09-09 Dassault Systèmes Process for displaying objects in a PLM database and apparatus implementing this process
JP2007233730A (ja) 2006-03-01 2007-09-13 Mitsubishi Electric Corp 三次元グラフィック描画装置
JP4116648B2 (ja) * 2006-05-22 2008-07-09 株式会社ソニー・コンピュータエンタテインメント オクルージョンカリング方法および描画処理装置
JP4142065B2 (ja) 2006-05-22 2008-08-27 株式会社ソニー・コンピュータエンタテインメント 縮小zバッファ生成方法、隠面消去方法、およびオクルージョンカリング方法
US8196127B2 (en) * 2006-08-04 2012-06-05 International Business Machines Corporation Pervasively data parallel information handling system and methodology for generating data parallel select operations
US7928990B2 (en) * 2006-09-27 2011-04-19 Qualcomm Incorporated Graphics processing unit with unified vertex cache and shader register file
US7836258B2 (en) 2006-11-13 2010-11-16 International Business Machines Corporation Dynamic data cache invalidate with data dependent expiration
US8421794B2 (en) * 2007-03-23 2013-04-16 Qualcomm Incorporated Processor with adaptive multi-shader
US8081181B2 (en) * 2007-06-20 2011-12-20 Microsoft Corporation Prefix sum pass to linearize A-buffer storage
US7876329B2 (en) * 2007-09-10 2011-01-25 Via Technologies, Inc. Systems and methods for managing texture data in a computer
GB0810205D0 (en) 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems

Also Published As

Publication number Publication date
GB0909642D0 (en) 2009-07-22
GB2492447B (en) 2013-02-27
CN101620724A (zh) 2010-01-06
GB0909641D0 (en) 2009-07-22
US20100060630A1 (en) 2010-03-11
CN101620724B (zh) 2016-03-30
GB201208595D0 (en) 2012-06-27
US20100026682A1 (en) 2010-02-04
US20160267709A1 (en) 2016-09-15
GB2460544A (en) 2009-12-09
US20180197326A1 (en) 2018-07-12
CN101604454A (zh) 2009-12-16
GB2492447A (en) 2013-01-02
JP5538748B2 (ja) 2014-07-02
GB0810205D0 (en) 2008-07-09
GB2460545B (en) 2011-01-05
US10755473B2 (en) 2020-08-25
JP2009295161A (ja) 2009-12-17
GB2460544B (en) 2012-08-22
GB2460545A (en) 2009-12-09
US9947131B2 (en) 2018-04-17
US8698828B2 (en) 2014-04-15
US9367953B2 (en) 2016-06-14
CN101604454B (zh) 2017-10-20
JP2009295162A (ja) 2009-12-17

Similar Documents

Publication Publication Date Title
JP5624733B2 (ja) グラフィックス処理システム
KR101672150B1 (ko) 페이지-폴트를 방지하기 위한 gpu 메모리 버퍼 프리-페치 및 프리-백 시그널링
CN109564695B (zh) 用于高效3d图形流水线的装置和方法
US20230290035A1 (en) Graphics library extensions
JP3657518B2 (ja) ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)
KR102674513B1 (ko) 그래픽 처리
JP5053857B2 (ja) 3次元グラフィックス処理装置および方法
US8803898B2 (en) Forming a windowing display in a frame buffer
US9965886B2 (en) Method of and apparatus for processing graphics
CN105023233B (zh) 图形处理系统及其操作方法、计算机存储介质
US8564604B2 (en) Systems and methods for improving throughput of a graphics processing unit
US20090189909A1 (en) Graphics Processor having Unified Cache System
KR20160004963A (ko) 그래픽 처리
KR20070026521A (ko) 그래픽 시스템, 버텍스 데이터의 타일 기반 변환 방법 및컴퓨터 프로그램 제품
KR20210066727A (ko) 그래픽 처리 시스템
KR102480787B1 (ko) 순서에 관계 없는 캐시 리턴
KR20190093579A (ko) z-컬링 후 중첩 단편들 식별 또는 제거
KR20190078086A (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
US6456291B1 (en) Method and apparatus for multi-pass texture mapping
US11734869B2 (en) Graphics processing
US20240169474A1 (en) Graphics processing
GB2475375A (en) Dynamic Graphics Rendering Process
US11294817B2 (en) Concurrent cache lookups using partial identifiers
US11436783B2 (en) Method and system of decoupled object space shading
US20240169464A1 (en) Graphics processing systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130820

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131119

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131122

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131220

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140120

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140724

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140805

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: 20140901

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140929

R150 Certificate of patent or registration of utility model

Ref document number: 5624733

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250