(57)【要約】【課題】タイルベースのグラフィックス処理システムで使用される方法および装置を提供すること。【解決手段】レンダリング対象シーン50は、複数の個々の小領域またはタイル51に分割される。個々の小領域51も、様々な群の複数組の小領域に分類される。全体のシーンエリア50を包含する1組の8×8の小領域54を含む最上位レイヤが存在する。次いで、4組の4×4の小領域53からなる群が存在し、次いで、16組の2×2の小領域52からなる群が存在し、最後に、64個の単一の小領域51を含むレイヤが存在する。【選択図】図5
2007157155.tif 000002
【特許請求の範囲】
【請求項１】
レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用グラフィックスプリミティブをソートする装置であって、
前記シーンの単一の小領域に関するレンダリング用プリミティブリストを作成する手段と、
前記シーンの2つ以上の小領域を含む1組の小領域に関するレンダリング用プリミティブリストを作成する手段と
を備える装置。
【請求項２】
レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用グラフィックスプリミティブをソートする装置であって、
1つまたは複数のレンダリング対象プリミティブリストにレンダリング対象プリミティブを含める手段を備え、
前記レンダリング対象プリミティブリストは、前記シーンの単一の小領域専用に使用される1つまたは複数のレンダリング対象プリミティブリストと、前記シーンの2つ以上の小領域にそれぞれ使用されることになる1つまたは複数の異なるレンダリング対象プリミティブリストとを含む、
装置。
【請求項３】
プリミティブリストは、様々な数の小領域を含む複数組の小領域に関して作成され得る、請求項1または2に記載の装置。
【請求項４】
プリミティブリストが作成され得る前記複数組の小領域は、階層的に構成された複数組の小領域からなる複数のレイヤによって前記シーンが効果的にオーバーレイされるように構成される、請求項1から3のいずれか一項に記載の装置。
【請求項５】
プリミティブリストは、各小領域、2×2の各小領域分類、4×4の各小領域分類、8×8の各小領域分類などについて、レンダリング対象シーン全体に関するプリミティブリストにいたるまで作成され得る、請求項1から4のいずれか一項に記載の装置。
【請求項６】
前記シーンが分割される別々の各小領域に関して別々のプリミティブリストが作成され、プリミティブリストが作成され得る異なる各組の2つ以上の小領域に関して別々のプリミティブリストが作成される、請求項1から5のいずれか一項に記載の装置。
【請求項７】
所与のプリミティブは、前記プリミティブがレンダリングされる可能性があると、またはレンダリングされることになると判定された、選択された数の前記複数の小領域および複数組の小領域に関するプリミティブリストにだけ含められる、請求項1から6のいずれか一項に記載の装置。
【請求項８】
あるプリミティブが1組の小領域に関するプリミティブリストに含められる場合は、前記プリミティブは、前記1組の小領域内にある前記複数の小領域の内のいずれかに関する個々の前記プリミティブリストには含められない、請求項1から7のいずれか一項に記載の装置。
【請求項９】
プリミティブは、それ自体を含むプリミティブリストを有するより大きい1組の小領域によってその全体が包含されるいずれかの複数の小領域または複数組の小領域に関するプリミティブリストには含められない、請求項1から8のいずれか一項に記載の装置。
【請求項１０】
様々なサイズのシーンエリアからなる複数のレイヤによって前記シーンが効果的にオーバーレイされるように構成された複数組の小領域が存在し、
前記複数組の小領域階層内の所与のレイヤでプリミティブを含める必要が生じる異なるプリミティブリストがいくつあるか判定する手段
をさらに備える、請求項1から9のいずれか一項に記載の装置。
【請求項１１】
各プリミティブは、プリミティブリストの選択された閾値数以下のプリミティブリストにリスト化される、請求項1から10のいずれか一項に記載の装置。
【請求項１２】
レンダリング用プリミティブを選択するプリミティブ選択ユニットと、
前記プリミティブ選択ユニットに複数のプリミティブリストを並列的に供給する手段と
をさらに備え、
前記プリミティブ選択ユニットは、それ自体に供給されたプリミティブリストの内の1つから次のレンダリング対象プリミティブを選択する手段を備える、
請求項1から11のいずれか一項に記載の装置。
【請求項１３】
グラフィックス処理システムにおいてレンダリング用プリミティブを選択する装置であって、
レンダリング用プリミティブを選択するプリミティブ選択ユニットと、
前記プリミティブ選択ユニットに複数のプリミティブリストを並列的に供給する手段と
を備え、
前記プリミティブ選択ユニットは、それ自体に供給されたプリミティブリストの内の1つからレンダリング対象プリミティブを選択する手段を備える、
装置。
【請求項１４】
各小領域は、前記小領域に使用されることになる1組のプリミティブリストと関連付けられている、請求項1から13のいずれか一項に記載の装置。
【請求項１５】
プリミティブにインデックスを割り付ける手段を備える、請求項1から14のいずれか一項に記載の装置。
【請求項１６】
前記プリミティブに割り付けられた前記インデックスに基づいて処理すべきプリミティブを選択する手段を備える、請求項15に記載の装置。
【請求項１７】
グラフィックス処理システムであって、
レンダリング用グラフィックプリミティブをリスト化する手段と、
リスト化された各グラフィックスプリミティブを前記プリミティブに関するインデックスと関連付ける手段と、
前記グラフィックスプリミティブに関連付けられた前記インデックスを使用して前記プリミティブをソートする手段と
を備えるグラフィックス処理システム。
【請求項１８】
1群のグラフィックスプリミティブの表示処理を行う装置であって、
前記1群のプリミティブ内の複数のプリミティブにインデックスを割り付ける手段と、
前記1群のプリミティブに由来する複数のプリミティブを複数の処理ユニットにわたって分散させる手段と、
前記1群のプリミティブに由来する複数のプリミティブをレンダリングする手段と、
前記複数のプリミティブに割り付けられた前記インデックスを使用して前記複数のプリミティブがレンダリングされる順序を制御する手段と
を備える装置。
【請求項１９】
前記プリミティブのインデキシング容量が使い果たされたときを判定し、それに応答して、それ以降は常に同じサイズの複数組の小領域にプリミティブをリスト化する手段を備える、請求項15から18のいずれか一項に記載の装置。
【請求項２０】
前記複数の小領域および複数組の小領域に関する前記プリミティブリストに他の形態のグラフィックスデータおよび/またはコマンドを記憶する手段を備える、請求項1から19のいずれか一項に記載の装置。
【請求項２１】
レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする装置であって、
前記シーンの単一の小領域に関して、前記小領域をレンダリングするときに使用される1組のデータおよび/またはコマンドを作成する手段と、
前記シーンの2つ以上の小領域を含む1組の小領域に関して、前記1組の小領域の前記複数の小領域をレンダリングするときに使用される1組のデータおよび/またはコマンドを作成する手段と
を備える装置。
【請求項２２】
レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用グラフィックスプリミティブをソートする方法であって、
前記シーンの単一の小領域を作成するステップと、
前記シーンの2つ以上の小領域を含む1組の小領域を作成するステップと
を含む方法。
【請求項２３】
レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用グラフィックスプリミティブをソートする方法であって、
1つまたは複数のレンダリング対象プリミティブリストにレンダリング対象プリミティブを含めるステップを含み、
前記レンダリング対象プリミティブリストは、前記シーンの単一の小領域専用に使用される1つまたは複数のレンダリング対象プリミティブリストと、前記シーンの2つ以上の小領域にそれぞれ使用されることになる1つまたは複数の異なるレンダリング対象プリミティブリストとを含む、
方法。
【請求項２４】
異なる数の小領域を含む複数組の小領域に関するプリミティブリストを作成するステップを含む、請求項22または23に記載の方法。
【請求項２５】
プリミティブリストが作成され得る前記複数組の小領域は、階層的に構成された複数組の小領域からなる複数のレイヤによって前記シーンが効果的にオーバーレイされるように構成される、請求項22から24のいずれか一項に記載の方法。
【請求項２６】
各小領域、2×2の各小領域分類、4×4の各小領域分類、8×8の各小領域分類などについて、レンダリング対象シーン全体に関するプリミティブリストにいたるまでプリミティブリストを作成するステップを含む、請求項22から25のいずれか一項に記載の方法。
【請求項２７】
前記シーンが分割される別々の各小領域に関して別々のプリミティブリストを作成するステップと、プリミティブリストが作成され得る異なる各組の2つ以上の小領域に関して別々のプリミティブリストを作成するステップとを含む、請求項22から26のいずれか一項に記載の方法。
【請求項２８】
あるプリミティブがレンダリングされる可能性があると、またはレンダリングされることになると判定された、選択された数の前記複数の小領域および複数組の小領域に関するプリミティブリストにだけ前記プリミティブを含めるステップを含む、請求項22から27のいずれか一項に記載の方法。
【請求項２９】
あるプリミティブが1組の小領域に関するプリミティブリストに含められる場合は、前記1組の小領域内にある前記複数の小領域の内のいずれかに関する個々の前記プリミティブリストには、前記プリミティブを含めないステップを含む、請求項22から28のいずれか一項に記載の方法。
【請求項３０】
プリミティブは、それ自体を含むプリミティブリストを有するより大きい1組の小領域によってその全体が包含されるいずれかの複数の小領域または複数組の小領域に関するプリミティブリストには、前記プリミティブを含めないステップを含む、請求項22から29のいずれか一項に記載の方法。
【請求項３１】
様々なサイズのシーンエリアからなる複数のレイヤによって前記シーンが効果的にオーバーレイされるように構成された複数組の小領域が存在し、
前記複数組の小領域階層内の所与のレイヤでプリミティブを含める必要が生じる異なるプリミティブリストがいくつあるか判定するステップ
をさらに含む、請求項22から30のいずれか一項に記載の方法。
【請求項３２】
各プリミティブは、プリミティブリストの選択された閾値数以下のプリミティブリストにリスト化される、請求項22から31のいずれか一項に記載の方法。
【請求項３３】
プリミティブ選択ユニットを使用してレンダリング用プリミティブを選択するステップと、
前記プリミティブ選択ユニットに複数のプリミティブリストを並列的に供給するステップと
をさらに含み、
前記プリミティブ選択ユニットは、それ自体に供給されたプリミティブリストの内の1つから次のレンダリング対象プリミティブを選択する、
請求項22から32のいずれか一項に記載の方法。
【請求項３４】
グラフィックス処理システムにおいてレンダリング用プリミティブを選択する方法であって、
プリミティブ選択ユニットに複数のプリミティブリストを並列的に供給するステップと、
前記プリミティブ選択ユニットがそれ自体に供給されたプリミティブリストの内の1つからレンダリング対象プリミティブを選択するステップと
を含む方法。
【請求項３５】
前記小領域に使用されることになる1組のプリミティブリストを各小領域に関連付けるステップを含む、請求項22から34のいずれか一項に記載の方法。
【請求項３６】
プリミティブにインデックスを割り付けるステップを含む、請求項22から35のいずれか一項に記載の方法。
【請求項３７】
前記複数のプリミティブに割り付けられた前記インデックスに基づいて処理すべきプリミティブを選択するステップを含む、請求項36に記載の方法。
【請求項３８】
グラフィックス処理システムを操作する方法であって、
レンダリング用グラフィックプリミティブをリスト化するステップと、
リスト化された各グラフィックスプリミティブを前記プリミティブのインデックスと関連付けるステップと、
前記グラフィックスプリミティブに関連付けられた前記インデックスを使用して前記プリミティブをソートするステップと
を含む方法。
【請求項３９】
1群のグラフィックスプリミティブの表示処理を行う方法であって、
前記1群のプリミティブ内の複数のプリミティブにインデックスを割り付けるステップと、
前記1群のプリミティブに由来する複数のプリミティブを複数の処理ユニットにわたって分散させるステップと、
前記1群のプリミティブに由来する複数のプリミティブをレンダリングするステップと、
前記複数のプリミティブに割り付けられた前記インデックスを使用して前記複数のプリミティブがレンダリングされる順序を制御するステップと
を含む方法。
【請求項４０】
前記プリミティブのインデキシング容量が使い果たされたときを判定し、それに応答して、それ以降は常に同じサイズの複数組の小領域にプリミティブをリスト化するステップを含む、請求項36から39のいずれか一項に記載の方法。
【請求項４１】
前記複数の小領域および複数組の小領域に関する前記プリミティブリストに他の形態のグラフィックスデータおよび/またはコマンドを記憶するステップを含む、請求項22から40のいずれか一項に記載の方法。
【請求項４２】
レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする方法であって、
前記シーンの単一の小領域に関して、前記小領域をレンダリングするときに使用される1組のデータおよび/またはコマンドを作成するステップと、
前記シーンの2つ以上の小領域を含む1組の小領域に関して、前記1組の小領域の前記複数の小領域をレンダリングするときに使用される1組のデータおよび/またはコマンドを作成するステップと
を含む方法。
【請求項４３】
請求項1から21のいずれか一項に記載の装置を含み、または請求項22から42のいずれか一項に記載の方法に従って操作されるハードウェア要素。
【請求項４４】
請求項1から21のいずれか一項に記載の装置を含み、または請求項22から42のいずれか一項に記載の方法に従って操作される3Dグラフィックスプロセッサまたは3Dグラフィックス処理プラットフォーム。
【請求項４５】
コンピュータプログラム要素であって、前記プログラム要素がデータ処理手段上で実行されたときに、請求項22から42のいずれか一項に記載の方法を実施するコンピュータソフトウェアコード部分を備えるコンピュータプログラム要素。
【請求項４６】
実質上、添付の図面のいずれか1つを参照しながら本明細書に記載したとおりの、レンダリング用グラフィックスプリミティブをソートする装置。
【請求項４７】
実質上、添付の図面のいずれか1つを参照しながら本明細書に記載したとおりの、レンダリング用プリミティブを選択する装置。
【請求項４８】
実質上、添付の図面のいずれか1つを参照しながら本明細書に記載したとおりの、グラフィックス処理装置、システム、プロセッサ、またはプラットフォーム。
【請求項４９】
実質上、添付の図面のいずれか1つを参照しながら本明細書に記載したとおりの、グラフィックスデータおよび/またはコマンドをソートする装置。
【請求項５０】
実質上、添付の図面のいずれか1つを参照しながら本明細書に記載したとおりの、レンダリング用グラフィックスプリミティブをソートする方法。
【請求項５１】
実質上、添付の図面のいずれか1つを参照しながら本明細書に記載したとおりの、レンダリング用プリミティブを選択する方法。
【請求項５２】
実質上、添付の図面のいずれか1つを参照しながら本明細書に記載したとおりの、グラフィックス処理装置、システム、プロセッサ、またはプラットフォームを操作する方法。
【請求項５３】
実質上、添付の図面のいずれか1つを参照しながら本明細書に記載したとおりの、グラフィックスデータおよび/またはコマンドをソートする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックスを処理する方法および装置に関し、具体的には、タイルベースのグラフィックス処理システムで使用される、かかる方法および装置に関する。
【背景技術】
【０００２】
本発明は、特に3次元グラフィックスの処理を参照しながら説明されるが、2次元グラフィックスの処理にも等しく適用可能であることが当業者には理解されるであろう。
【０００３】
当技術分野で知られているように、グラフィックス処理は一般に、まず表示対象シーンをいくつかの同様の基本的な構成要素または「プリミティブ」に分割し、次いでこれらのプリミティブに所望のグラフィックス処理操作を施すことによって実行される。グラフィックス「プリミティブ」は通常、三角形など単純なポリゴンの形をとり、通常はそれらの各頂点を定義することによって記述される。
【０００４】
グラフィックス処理操作に関しては、当技術分野で知られているように、各グラフィックスプリミティブは通常、「フラグメント」と通称される複数の離散的なグラフィックエンティティまたは要素にさらに分割され、これらに対して実際のグラフィックス処理操作(レンダリング操作など)が実行される。このような各グラフィックスフラグメントは、プリミティブ内の所与の位置を表し、またこれに対応するものであり、該当する位置に関する1組のデータ(色や深度の値など)を事実上含むものである。
【０００５】
各グラフィックスフラグメント(データ要素)は通常、最終的な表示内の単一ピクセル(画素)に対応する(ピクセルは表示される最終的な画像の特異点であるので、グラフィックスプロセッサが作用する「フラグメント」と、表示内のピクセルとの間には通常1対1のマッピングが存在する)。しかしながら、例えば最終的な画像が表示される前にレンダリングされた画像に対して、縮小など特定の形態の後処理が実行された場合は、「フラグメント」と「ピクセル」との間に直接的な対応関係が存在しないこともある。
【０００６】
したがって、典型的に実行されるグラフィックス処理の2つの側面は、グラフィックス「プリミティブ」(ポリゴン)の位置データをグラフィックスフラグメントの位置データに「ラスタ化」し(すなわち、表示対象シーンの各プリミティブを表現するのに使用されるグラフィックスフラグメントの(x,y)位置を判定し)、次いで「ラスタ化」されたフラグメントが表示画面上に表示されるように「レンダリング」する(すなわち、当該フラグメントの色付けやシェーディングなどを施す)ことである。
【０００７】
(グラフィックスの分野では、「ラスタ化」という用語はその時々に、プリミティブからフラグメントへの変換と、プリミティブのレンダリングとの両方を意味するように使用される。しかしながら、本明細書における「ラスタ化」は、プリミティブデータからフラグメントアドレスへの変換だけを指すように使用される。)
【０００８】
多くのグラフィックス処理システムは、いわゆる「タイルベース」のレンダリングを使用する。タイルベースのレンダリングでは、表示対象の2次元シーンは、通常「タイル」と呼ばれる複数のより小さい小領域(sub-region)に細分化または区分される。各タイル(小領域)は、別々に(典型的には順番に)レンダリングされる。次いで、レンダリングされた小領域(タイル)が再結合されて、完全なフレームが表示される。かかる構成において、シーンは、典型的には規則正しいサイズおよび形状の(通常は正方形や長方形などの形をとる)小領域(タイル)に分割されるが、これは本質的なものではない。
【０００９】
「タイリング」および「タイルベース」のレンダリングに関して一般に使用される他の用語としては、「チャンキング」(複数の小領域は「チャンク」とも呼ばれる)および「バケット」レンダリングが挙げられる。以下では便宜上「タイル」および「タイリング」という用語が使用されるが、これらの用語は代替的かつ等価な用語および技法をすべて包含するものであることが当業者には理解されるはずである。
【００１０】
かかるタイルベースのレンダリングの利点は、所与のタイル内に現れないプリミティブが当該タイルに関して処理される必要がなく、したがって、タイルが処理されるときに無視され得ることである。これにより、所与のシーンに要する全体のグラフィックス処理量を減少させることが可能となる。
【００１１】
したがって、タイルベースのレンダリングシステムでは通常、例えばあるタイル内に実際に存在しないプリミティブの不必要なレンダリングが避けられるように、所与の小領域(タイル)内に実際に存在するそれらのプリミティブを特定し知ることができることが望ましい。これを容易にするために、当該小領域に関してレンダリングすべき(例えば当該小領域内に現れる)プリミティブのリストを各小領域(タイル)毎に作成(prepare)することが知られている。かかる「タイルリスト」(「プリミティブリスト」と呼ばれることもある)は、(例えばプリミティブインジケータを参照することによって)該当するタイル(小領域)に関してレンダリングすべきプリミティブを特定する。
【００１２】
したがって、レンダリング対象の各小領域(タイル)に関するタイルリストを作成するプロセスは、基本的には所与の小領域(タイル)に関してレンダリングすべきプリミティブを判定することを要する。このプロセスは通常、該当するタイルを横切る(すなわち、(少なくともその一部が)該当するタイル内に現れる)プリミティブを(所望の精度レベルで)判定し、次いでそれらのプリミティブリストをグラフィックス処理システムによる将来の使用のために作成することによって実行される。(あるプリミティブが2つ以上のタイルに入る場合(そうなることが多い)、そのプリミティブは、それ自体が入っている各タイルのタイルリストに含められることに留意すべきである。)各小領域(タイル)は事実上、当該小領域に入る(すなわち横切る)ことが判明した任意のプリミティブを収容するビン(bin)(タイルリスト)を有するものと見なすことができる(実際、このような様式でプリミティブをタイル単位でソートするプロセスは一般に、「ビニング」と呼ばれている)。
【００１３】
当技術分野で知られているように、所与の任意のタイルに関してリスト化(レンダリング)すべきプリミティブを判定するプロセスは、例えばタイリングおよびレンダリングプロセスの様々な部分の効率の最適化に応じて様々な精度レベルで実行される可能性がある。例えば、最も高い精度レベルでは、所与のプリミティブが少なくとも部分的に現れるタイルを正確に判定した後、当該プリミティブをそれらのタイルに関するタイルリストにだけ含めることができる。これは一般に、「正確」ビニングと呼ばれる。
【００１４】
図1は、正確ビニングのプロセスを示している。図1に示されるように、表示対象シーン1は、規則正しいサイズの16個の小領域すなわちタイル2に分割されている。次いで、シーン内の各プリミティブに関して、当該プリミティブが実際に現れる(入る)1つまたは複数のタイルが判定される。プリミティブは、それ自体がそこに入ることが判明した各タイルのタイルリストに追加される。したがって、図1に示される例で考えれば、プリミティブ3は、タイル4のタイルリストに追加され、プリミティブ5は、タイル6および7のタイルリストに含められ、プリミティブ8は、タイル9、10、11、および12のタイルリストに含められ、プリミティブ13は、タイル12のタイルリストに含められる。(図1には図面を分かりやすくするために少数のタイルおよびプリミティブしか示されていないことに留意すべきである。当業者には理解されるように、実際のグラフィックス処理操作では典型的には、プリミティブおよびタイルの数はもっと多くなる。)
【００１５】
正確ビニングで達成される精度よりも低い精度でタイルリストを作成することも知られている。これは、例えばタイルリストの作成を簡略化するのに役立つ可能性がある。1つの一般的な「低精度」ビニング("less precise" binning)技法は、「バウンディングボックス」ビニングである。この場合では、あるプリミティブまたは1組のプリミティブの周囲にいわゆる「バウンディングボックス」が描画され、次いで当該バウンディングボックスによって覆われるタイルが決定される。次いで、当該バウンディングボックスによって(少なくともその一部が)覆われることが判明した各タイルに関して、当該バウンディングボックスによって表される(すなわち、当該バウンディングボックスによって包含される)1つまたは複数のプリミティブがリスト化(ビニング)される。
【００１６】
したがって、この構成は、プリミティブ自体ではなくバウンディングボックスを使用して、所与のプリミティブをリスト化しレンダリングすべきタイルを判定する。このことは、例えばあるプリミティブが実際に入らないタイル(例えばバウンディングボックスが当該プリミティブを隙間ない形でまたは精密な形で十分に取り囲んでいない場合)についても、レンダリングのためのリスト化が行われる可能性があることを意味し得るが、一方では、このような様式でバウンディングボックスを使用することにより、タイルリストの作成を簡略化することができる。
【００１７】
このようにして、各小領域(タイル)に関するレンダリング対象プリミティブのリスト(タイルリスト)が作成されると、(タイル)リストが記憶され、このリストは、例えば該当するタイルをレンダリングするときに考慮する(レンダリングする)必要があるプリミティブをシステムが特定することを可能にするために使用される。
【００１８】
かかるタイルベースのレンダリング構成は、例えばプリミティブが存在しないシーンの領域についてまでプリミティブの処理が行われることを回避するのに役立つ可能性があることから、優れた働きをすることが分かっている。
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかしながら、各タイルに関してレンダリングすべきプリミティブを特定するタイルリストを作成し記憶する必要が生じることに伴う1つの欠点は、シーン内のプリミティブの分布に応じて、あるシーン内の様々なタイルのタイルリストのサイズに大きなばらつきが生じ、別のシーン内のタイルも同様にタイルリストのサイズにばらつきが生じる可能性があることである。このことは、例えば所与のシーンまたはタイルがそれ自体の1つ(または複数)のタイルリストを記憶するためのメモリ要件が、他のタイルまたはシーンと比較してかなり異なることもあることを意味する。このことは、例えばタイルリストのメモリ要件を信頼性のある形で予測することができず、また、メモリ要件が例えば所与のシーン内のプリミティブの分布に応じて変化することを意味する。しかしながら、特に携帯型デバイスなど(例えば移動電話、PDA、ハンドヘルド型デバイスなど)、より制限の多いデバイス上に実装されるグラフィックスシステムでは一般に、メモリ使用要件が既知であることまたは少なくとも概略的に予測可能であることが有利である。
【００２０】
したがって、本出願人らは、既存のタイルベースのレンダリングシステムには改良の余地が残されているものと信じる。
【課題を解決するための手段】
【００２１】
本発明の第1の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用グラフィックスプリミティブをソートする装置であって、
前記シーンの単一の小領域に関するレンダリング用プリミティブリストを作成する手段と、
前記シーンの2つ以上の小領域を含む1組の小領域に関するレンダリング用プリミティブリストを作成する手段と
を備える装置が提供される。
【００２２】
本発明の第2の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用グラフィックスプリミティブをソートする方法であって、
前記シーンの単一の小領域に関するレンダリング用プリミティブリストを作成するステップと、
前記シーンの2つ以上の小領域を含む1組の小領域に関するレンダリング用プリミティブリストを作成するステップと
を含む方法が提供される。
【００２３】
本発明は、従来技術のタイルベースのレンダリングシステムの場合と同様に、シーンの所与の小領域(タイル)に関するレンダリング用プリミティブリストが作成され得る(作成される)、タイルベースのレンダリングシステム(すなわち、レンダリング対象シーンが複数の小領域(plural sub-regions)に分割されるレンダリングシステム)を対象とする。しかしながら、従来技術のシステムとは異なり、本発明のシステムでは、シーンの1組の小領域(a set of plural sub-regions)(タイル)に関するレンダリング用プリミティブリスト（すなわち、当該シーンの複数の小領域(タイル)を包含する(また、それによってより大きい小領域を事実上包含する)タイルリスト）を作成することも可能である。
【００２４】
言い換えれば、本発明では、シーンの単一の小領域(タイル)と、シーンの2つ以上の小領域(タイル)を含む複数組の小領域とに関して、別々の(異なる)タイルリストが作成され得る(好ましくは作成される)。したがって、例えばまた好ましくは、シーンの単一の小領域に関するレンダリング用プリミティブリスト(タイルリスト)が作成され、当該シーンの2つ以上の小領域を含む1組の小領域に関する別の(異なる)レンダリング用プリミティブリスト(タイルリスト)が作成され、以下同様にレンダリング用プリミティブリストが作成されることになる。
【００２５】
異なるシーン「エリア」のタイルリストを本発明の場合と同様に作成し得る可能性があることには、いくつかの利点がある。例えば、以下でさらに説明するように、単一の小領域および/または複数の小領域のタイルリストにプリミティブを選択的に記憶することにより、タイルリストに使用されるメモリ量を変化させることができる。したがって、本発明は、タイルのリスト化プロセスのメモリ使用要件をより良い形で制御することと、その知識を得ることとを容易にする。異なるエリアのタイルリストへのプリミティブのソートを使用して、例えばシーン内のプリミティブの分布に関する情報を提供することもできる。このことは例えば、(所与の頂点データをキャッシュすべきか否かを判定する際などに役立つ可能性がある故に)頂点データキャッシングなどの操作が検討される場合に役立つ可能性がある。
【００２６】
本発明の構成は、単一タイル専用のプリミティブのタイルリストが作成されることだけでなく、複数のタイル(小領域)に共通して使用される可能性があり、またそのように使用されることになるタイルリストが作成され得、また実際に作成されることを意味する。
【００２７】
言い換えれば、本発明は、解像度(resolution)が異なる(すなわちエリアのサイズが異なる)タイルリスト、すなわち、例えば単一の小領域(タイル)専用のタイルリストおよび/または2つ以上の小領域(タイル)に共通して使用されることになるタイルリストに、レンダリング用プリミティブを(選択的に)記憶または含めることを容易にする。これにより、タイルリストが作成され記憶されるシーン「解像度」を変化させ制御することが容易となり、したがって、タイルリストに関するメモリ要件などを変化させ制御することが容易となる。
【００２８】
したがって、本発明の第3の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用プリミティブをソートする装置であって、
少なくとも前記シーンの単一の小領域に関するレンダリング用プリミティブリストに、または前記シーンの2つ以上の小領域に共通して使用されることになるレンダリング対象プリミティブリストに、レンダリング対象プリミティブを含める手段
を備える装置が提供される。
【００２９】
本発明の第4の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用プリミティブをソートする方法であって、
少なくとも前記シーンの単一の小領域に関するレンダリング用プリミティブリストに、または前記シーンの2つ以上の小領域に共通して使用されることになるレンダリング対象プリミティブリストに、レンダリング対象プリミティブを選択的に含めるステップ
を含む方法が提供される。
【００３０】
本発明の第5の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用グラフィックスプリミティブをソートする装置であって、
単一の小領域専用であることも前記シーンの2つ以上の小領域に使用されることもある1つまたは複数のレンダリング対象プリミティブリストにレンダリング対象プリミティブを含める手段
を備える装置が提供される。
【００３１】
本発明の第6の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用グラフィックスプリミティブをソートする方法であって、
単一の小領域専用であることも前記シーンの2つ以上の小領域に使用されることもある1つまたは複数のレンダリング対象プリミティブリストにレンダリング対象プリミティブを含めるステップ
を含む方法が提供される。
【００３２】
当業者には理解されるように、本発明の上記の諸態様は必要に応じて、本明細書に開示される本発明の好ましい諸特徴および任意選択の諸特徴の内のいずれか1つまたは複数を含むことも、それらをすべて含むこともできる。
【００３３】
レンダリング対象シーンが分割される複数の小領域(タイル)は、所望される任意の適当な小領域とすることができる。当技術分野で知られているように、これらはすべて同じサイズおよび形状であることが好ましいが(すなわち、規則正しいサイズおよび形状のタイルが使用されることが好ましいが)、これは本質的なものではない。これらの小領域は、正方形または長方形であることが好ましい。小領域のサイズおよび数は、所望の形で選択することができる。好ましい一構成では、各小領域(タイル)は、16×16または32×32のサイズのフラグメントである(ただし、シーンは後に、使用中の表示(フレーム)サイズに必要な数の小領域に分割されることになる)。
【００３４】
プリミティブリストがそれに関して作成される2つ以上の小領域を含む1組または複数組の小領域は、所望される任意の適当な1群または複数群のシーンの小領域とすることができる。各組の2つ以上の小領域は、整数の小領域を含むことが好ましい。ただし、このことは本質的なものではなく、例えば、1と1/2の小領域(one and a half sub-regions)や、3と3/4の小領域(three and three-quarter sub-regions)などを含めた小領域の一部分を含む組に関するプリミティブリストを作成することも可能である。このように有理数の小領域を含む複数組の小領域は、例えば例外的なまたは不規則な特定のプリミティブの形状および/またはサイズについて、かかるプリミティブをより効率的な形でタイルリストにリスト化することが可能となる可能性もある故に、望ましいこともある。
【００３５】
好ましい一実施形態では、当該1組の小領域、好ましくは各組の小領域は、1群の隣接小領域を含む。当該1組または各組の小領域は、正方形や長方形など規則正しい形状の画面エリアを形成することが最も好ましい。当該1組または各組の小領域は、正方形を形成することが最も好ましい。ただし、このこともやはり本質的なものではなく、例えば必要に応じて「L」字型の分類や三角形の分類など、複数の小領域に関するより不規則な分類(形状)が使用されてもよい。かかる不規則な形状はやはり、より例外的なまたは不規則な形状および/またはサイズのプリミティブをリスト化するのに役立つ可能性がある。
【００３６】
好ましい一実施形態では、1組または2組以上の小領域に含まれる複数の小領域を使用時に選択し、変更することができる。これによって例えば、システムがレンダリング対象プリミティブのサイズおよび/または形状に基づいて、例えばプリミティブリストを複数の小領域に適合させる(tailor)ことが可能になる。
【００３７】
特に好ましい一実施形態では、複数組の小領域に関するプリミティブリストを作成することができる(すなわち、シーンに関する1組の2つ以上の小領域にそれぞれ対応する複数のプリミティブリストが存在するようになる)。各組の小領域は(例えばそれぞれのサイズおよび/または形状の点で)互いに異なるものであってもよいが、かかる好ましい一構成では、各組の小領域は、対応するサイズおよび/または同様のサイズおよび/または形状を有し、かつ/またはその他の組の小領域と同様の数および/または対応する数の小領域(および好ましくは小領域の構成)を有する。例えば、当該複数組の小領域の一部または全部の形状を正方形とすることもでき、また、それらは実際正方形であることが好ましい。
【００３８】
これらの構成では、各組の小領域は、その他の組の小領域とは異なる1組のシーンの小領域を含むことが好ましい。すべての1組の小領域は、様々な小領域を含むことができ、また、互いに異なる複数組の小領域が、例えばそれぞれの小領域のすべてではないが一部を共有することもできる。
【００３９】
これらの構成では、複数組の小領域が全体としてシーン全体を覆うこと、すなわち、当該シーンが分割される個々の小領域をすべて包含することが好ましい。この構成は、シーンが分割される複数の領域(複数組の小領域)からなるもう1つのレイヤまたは複数のレイヤを効果的に提供し、かかる各領域は、シーンが分割される複数の「ベース」小領域(タイル)を包含する。したがって、このタイプの構成では、プリミティブリストは、2つ(またはそれ以上)の異なる解像度で、すなわち、単一の小領域レベルまたは複数組の小領域レベルで作成することができる。
【００４０】
特に好ましい一構成では、全体のシーンエリアが、1群の複数組の小領域に分割され、その結果、全体として、シーンが分割される個々の小領域をすべて包含する形となるように、当該群内の複数組の小領域はそれぞれ、同じ数の小領域を含むことが好ましく、同じ形状を有することが好ましい。かかる1群の複数組の小領域は、ベースすなわち単一の小領域「レイヤ」を覆うプリミティブがそれに関してリスト化され得る複数組の小領域からなるレイヤを効果的に提供する。かかる2つ以上の群の複数組の小領域が提供されること、すなわち、必要に応じて、プリミティブが様々なレイヤ(レベル)でリスト化され得るようになることが最も好ましい。
【００４１】
特に好ましい一実施形態では、異なる数の小領域を含む複数組の小領域に関するプリミティブリストを作成することができる。したがって、例えば1組の4つの小領域に関するリストや、1組の16個の小領域に関するリストなどを作成することができる。これにより、プリミティブリストが作成される解像度をさらに変更し制御することが可能になる。好ましい一実施形態では、プリミティブリストがそれに関して作成され得る2つ以上の異なるサイズ、好ましくは3つ以上の異なるサイズを有し、最も好ましくは解像度レベルが累進的に減少する(すなわち、次第に数が増える小領域を包含する)、複数組の小領域が存在する。
【００４２】
特に好ましい一実施形態では、プリミティブリストがそれに関して作成され得る複数組の小領域は、(複数群の)複数組の小領域からなる1つまたは複数のレイヤによって、最も好ましくは複数組の小領域からなる複数のレイヤによってシーンが効果的にオーバーレイされるように構成することができる。したがって、例えば単一の小領域からなるベース「レイヤ」に被せられる4つの小領域をそれぞれ包含する複数組の小領域からなるレイヤを、存在させてもよい。また、好ましくは、例えばベースの単一の小領域レイヤや「4つの小領域」レイヤなどに被せられる16個の小領域をそれぞれ包含する複数組の小領域からなるレイヤを、存在させてもよい。
【００４３】
かかる一構成では、所与のレイヤに関する複数組の小領域はすべて、同じ数の個々の小領域を包含することが好ましいが、異なる各レイヤ(存在する場合)の複数組の小領域は、その他のレイヤの組とは異なる数の小領域を含むことが好ましい。
【００４４】
したがって、好ましい一実施形態では、1組または複数組の小領域、好ましくは複数群の複数組の小領域が存在し(かかる各群は、例えばまた好ましくは、全体としてレンダリング対象シーン全体を覆うレイヤを形成する(すなわち、シーンが分割されるまたは分割される可能性のある小領域をすべて包含する)、各群内の複数組の小領域はすべて同じ数の小領域を含み、異なる群内の複数組の小領域は、互いに異なる数の小領域を含むことが好ましい。
【００４５】
これらの構成を用いると、例えば複数組の小領域からなる複数の異なる解像度のレイヤによって、レンダリング対象シーンを効果的に覆うことが可能となる可能性があり、かかる各「レイヤ」は、それぞれ同じ数の小領域を含み、異なる「レイヤ」では異なる数の小領域を含む1群の(ある構成の)複数組の小領域から構成される。
【００４６】
かかる特に好ましい一構成では、複数群の(複数レイヤの)複数組の小領域は、階層的に構成され、すなわち、当該複数群(複数レイヤ)内を移動するに従って、各群における各組の小領域の数が累進的に変化するようになる。これらは、レイヤを1つ上がるに従って正方形ベースのピラミッド構造を効果的に形成するように構成されることが最も好ましい。所与のレイヤ(群)に関する複数組の小領域に含まれる小領域の数は、ベースすなわち単一の小領域レイヤから上位のレイヤに移動するに従って、累進的に増加することが好ましい。当該複数組の小領域は、隣り合う各レイヤにおける複数組の小領域がその直前のレイヤに含まれる小領域の4倍の数の小領域を有するように、すなわち、単一の小領域のベースレイヤが存在し、次いで4つの小領域を含む組からなるレイヤが存在し、次いで複数組の16個の小領域からなるレイヤが存在し、以下同様にレイヤが存在し、好ましくは最終的にレンダリング対象シーン全体を包含する単一の組の小領域が存在するように構成されることが好ましい。実際は、かかるレイヤ(群)が(「ベース」、すなわち単一の小領域レイヤを含めて)3つ以上存在することが最も好ましい。
【００４７】
かかる構成を用いると、レンダリング対象シーンの解像度レベルを累進的に減少させる(すなわち、複数の小エリアに分割する)ためのプリミティブリストを効果的に作成することが可能となる。
【００４８】
かかる特に好ましい一構成では、2×2の各小領域分類、4×4の各小領域分類、8×8の各小領域分類などについて、レンダリング対象シーン全体に関するプリミティブリスト(すなわち、フレームバッファ全体に関するリスト)にいたるまで、各小領域(タイル)に関するプリミティブリストを作成することができる。
【００４９】
当業者には理解されるように、典型的な場合と同様に全体の表示エリア(画面)が正方形の形をとらない場合は、それによって、より大きい小領域分類に関して複数組の小領域の一部が実際にシーン(表示)の縁の外まで延びる可能性もあると考えられる。このことは、小領域がレンダリング対象シーンの範囲外にある(すなわち、シーンまたは表示の外側に所在する)場合は、システムがその小領域に関するプリミティブリストを作成しようと試みることも、それをレンダリングしようと試みることもなく、したがって、所与の1組の小領域がシーンの境界線の外側に所在する小領域を含む可能性があっても、プリミティブのリスト化プロセスには影響が及ばず、その後も影響が及ぶことはないので問題にはならない。
【００５０】
好ましい一実施形態では、複数組の小領域階層は、シーン全体に関して、4つの領域に分割されるシーンに関して、16個の領域に分割されるシーンに関して、64個の領域に分割されるシーンに関して、以下同様に、最終的に単一の小領域に分割されるシーンにいたるまで、プリミティブリストが実際に作成され得るように構成されることが好ましい。
【００５１】
上記の構成を用いると、例えば(所与のプリミティブを適切な解像度レベルで記憶する、すなわち適切な小領域分類のプリミティブを記憶することによって)所与のプリミティブを5つ以上のプリミティブリストに含める必要が解消されることを保証することができる。これにより、例えばプリミティブ(タイル)リストに関するメモリ要件をより信頼性のある形で制限(cap)すること(および(例えばレンダリングすべきプリミティブの数を知ることによって)最大限の可能メモリ要件を知ること)が可能となる。
【００５２】
所与のシーンが分割されるまたは分割される可能性のあるすべての小領域またはすべての組の小領域に関してプリミティブリストが作成されることは本質的なものではないが、特に好ましい一実施形態では、シーンが分割される各小領域(タイル)と、プリミティブリストがそれに関して作成され得る各組の2つ以上の小領域とに関して、プリミティブリストが作成される。(ただし、この構成では場合により、例えばシーン内のプリミティブがどのように分布しているかに応じて、また、当該プリミティブを記憶することが決定された(タイル)リストに応じて、プリミティブリストが空の状態(すなわち、プリミティブを含まない状態)にあることもあり、また、プリミティブリストを空の状態にすることもできることに留意すべきである。)
【００５３】
したがって、本発明の第7の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割され、前記シーンの2つ以上の小領域をそれぞれ含む1組または複数組の小領域が定義されるグラフィックス処理システムにおいて、レンダリング用グラフィックスプリミティブをソートする装置であって、
前記シーンの各小領域に関するレンダリング用プリミティブリストを作成する手段と、
前記シーンの各組の2つ以上の小領域に関するレンダリング用プリミティブリストを作成する手段と
を備える装置が提供される。
【００５４】
本発明の第8の態様によれば、グラフィックス処理システムにおいてレンダリング用グラフィックスプリミティブをソートする方法であって、
レンダリング用の複数の小領域にシーンを分割するステップと、
前記シーンの2つ以上の小領域をそれぞれ含む、前記シーンの1組または複数組の小領域を定義するステップと、
前記シーンの各小領域と、前記シーンの各組の2つ以上の小領域とに関して、レンダリング用プリミティブリストを作成するステップと
を含む方法が提供される。
【００５５】
当業者には理解されるように、本発明の上記の諸態様は、本明細書に開示される本発明の好ましい諸特徴および任意選択の諸特徴の内のいずれか1つまたは複数を含むことも、それらをすべて含むこともできる。したがって、例えば、シーンに関する様々な数の小領域を含む複数組の小領域が作成されること(およびそれらに関するプリミティブリストが作成されること)が好ましい。
【００５６】
1つまたは複数のプリミティブを各小領域および1組の小領域に関するプリミティブリストにリスト化すること、および各小領域または各組の小領域に関するプリミティブリストを作成することは、所望される任意の適当な様式で実行することができる。このために、例えば正確ビニング、バウンディングボックスビニング、その間の何らかのビニングなど、プリミティブをタイルリストにソートしビニングを行うのに使用される既知の任意の技法が使用されてもよい。
【００５７】
したがって、例えばプリミティブをレンダリングすべき複数の小領域および複数組の小領域の初期の判定は、シーン内で判定されたプリミティブの位置に基づいて行うことができ(この位置は、例えばプリミティブの正確な位置であることも、例えば当技術分野で知られているように、プリミティブを取り囲むバウンディングボックスに基づくプリミティブの位置の近似値であることもある)、次いで、判定されたプリミティブの位置によってレンダリングすべきことが示された複数の小領域または複数組の小領域の一部または全部に、当該プリミティブをリスト化することができる。このことは、シーンに関する1組の完成したプリミティブリストが作成されることを可能にするために、シーン内の各プリミティブについて繰り返される。
【００５８】
したがって、好ましい一実施形態では、プリミティブがレンダリングされる可能性のあるまたはレンダリングされることになる(すなわちプリミティブがその内に現れる(入る))複数の小領域および複数組の小領域を判定するために、シーン内の所与のプリミティブに関する位置が判定され、当該シーンが分割される複数の小領域および/または複数組の小領域と比較される。
【００５９】
プリミティブが現れる複数の小領域などに関するこのような比較および判定は、任意の適当な様式で、例えばかかる目的のために従来技術で知られている既存の技法を使用して実行することができる。したがって、例えば上述した「正確」ビニング技法が使用されても(この場合には、プリミティブが現れる実際の複数の小領域(タイル)などが判定されることになる)、バウンディングボックス技法が使用されても(この場合には、バウンディングボックスによって覆われる複数の小領域(タイル)が判定されることになり、したがって、当技術分野で知られているように、プリミティブが実際に現れない小領域も含まれることととなり、プリミティブのリスト化の正確さが低下する可能性がある)、また、「正確」ビニング技法と最も一般的なバウンディングボックス技法との間の任意の構成が所望のように使用されるなどしてもよい。これは後に、シーン内の各プリミティブについて繰り返される。
【００６０】
バウンディングボックス技法が使用される場合は、バウンディングボックスを所望の位置に所望の形で生成することができる。例えば、バウンディングボックスは、当技術分野で知られているように、プリミティブ単位で生成することも、1組または複数組のプリミティブ単位で生成することもできる。バウンディングボックスは、例えばグラフィックスプロセッサAPIによって生成することも、ホストシステム上のドライバによって生成することもできる。
【００６１】
バウンディングボックスが使用される好ましい一実施形態では、バウンディングボックスは、プリミティブのリスト化段階で、例えば適当なソフトウェアまたはハードウェアルーチンを用いて、グラフィックスプロセッサまたは処理ユニット(好ましくはプリミティブリストを作成するプロセッサ)によって生成される。これにより、バウンディングボックスをグラフィックスプロセッサ上でローカルに生成することが可能となり、プリミティブのリスト化プロセスでそれを使用した後は破棄することが可能になる。かかる一構成は、当技術分野で知られているように、例えば該当する1つまたは複数のプリミティブの各頂点の形をとることもあり、それらに基づいて当該1つまたは複数のプリミティブの最大および最小のx,y位置を判定し、次いで、それらに従ってバウンディングボックスを生成することができる。
【００６２】
本発明の第9の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用プリミティブをソートする装置であって、
レンダリング対象プリミティブがレンダリングされる可能性のあるまたはレンダリングされることになる1つの小領域または複数の小領域を判定する手段と、
前記プリミティブがレンダリングされる可能性があると、またはレンダリングされることになると判定された小領域に関するレンダリング対象プリミティブリストに、前記プリミティブを含める手段と、
前記プリミティブがレンダリングされる可能性があると、またはレンダリングされることになると判定された小領域を含む2つ以上の小領域を含む1組の小領域に関するレンダリング対象プリミティブリストに、前記プリミティブを含める手段と
を備える装置が提供される。
【００６３】
本発明の第10の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用プリミティブをソートする方法であって、
レンダリング対象プリミティブがレンダリングされる可能性のあるまたはレンダリングされることになる1つの小領域または複数の小領域を判定するステップと、
前記プリミティブがレンダリングされる可能性があると、またはレンダリングされることになると判定された小領域に関するレンダリング対象プリミティブリストに、前記プリミティブを含めるステップと、
前記プリミティブがレンダリングされる可能性があると、またはレンダリングされることになると判定された小領域を含む2つ以上の小領域を含む1組の小領域に関するレンダリング対象プリミティブリストに、前記プリミティブを含めるステップと
を含む方法が提供される。
【００６４】
本発明の上記の諸態様もまた必要に応じて、本明細書に開示される本発明の好ましい諸特徴および任意選択の諸特徴の内のいずれか1つまたは複数を含むことも、それらをすべて含むこともできる。したがって、例えばプリミティブがレンダリングされる可能性のあるまたはレンダリングされることになる複数の小領域は、正確ビニング技法を使用して判定されても(この場合には、プリミティブがレンダリングされる可能性のあるまたはレンダリングされることになる小領域は、プリミティブが現れる(入る)それらの複数の小領域を正確に含むことになる)、バウンディングボックス技法を使用して判定されても(この場合には、プリミティブがレンダリングされる可能性があると、またはレンダリングされることになると判定された複数の小領域は、プリミティブが現れる(入る)複数の小領域を含むことになるが、当技術分野で知られているように、プリミティブが実際に現れない(が、バウンディングボックスによって包含される)他の複数の小領域も含む可能性がある)、また、所望される他の任意の適当な技法を使用して判定されるなどしてもよい。
【００６５】
所与のプリミティブは、例えば当該プリミティブがレンダリングされることになると判定された(例えば正確ビニングの場合では、当該プリミティブが現れることが判明した)すべての小領域およびすべての組の小領域に関するプリミティブリストに含めることができる。しかしながら、特に好ましい一実施形態では、所与のプリミティブは、それ自体がレンダリングされる可能性があると、またはレンダリングされることになると判定された、選択された(選択された数の)複数の小領域および複数組の小領域のプリミティブリストにだけ含められ、すなわち、それ自体がレンダリングされることになると判定された(例えば、それ自体が入ることが判明した)複数の小領域および複数組の小領域のプリミティブリストに選択的に含められる。
【００６６】
したがって、例えばプリミティブは、それ自体がレンダリングされることになる(例えばその内に入ることが判明した)小領域に関するプリミティブリスト(または、個々の複数の小領域に関する個々の複数のプリミティブリスト)に含められても、それ自体がレンダリングされることになる(例えばその内に入ることが判明した)1組の小領域に関するプリミティブリストに含められてもよい。
【００６７】
このような形でプリミティブを選択的にプリミティブリストに含めることにより、例えばプリミティブリストを記憶するためのメモリ使用率およびメモリ要件の柔軟性を高めることが容易となる。
【００６８】
したがって、本発明の第11の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用プリミティブをソートする装置であって、
前記レンダリング対象シーンの単一の小領域に対応するプリミティブリストに、かつ/または前記レンダリング対象シーンの2つ以上の小領域に対応するプリミティブリストに、レンダリング用プリミティブを選択的に含める手段
を備える装置が提供される。
【００６９】
本発明の第12の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリング用プリミティブをソートする方法であって、
前記レンダリング対象シーンの単一の小領域に対応するプリミティブリストに、かつ/または前記レンダリング対象シーンの2つ以上の小領域に対応するプリミティブリストに、レンダリング用プリミティブを選択的に含めるステップ
を含む方法が提供される。
【００７０】
本発明の上記の諸態様もまた必要に応じて、本明細書に開示される本発明の好ましい諸特徴および任意選択の諸特徴の内のいずれか1つまたは複数を含むことも、それらをすべて含むこともできる。したがって、例えばプリミティブが選択的にリスト化され得るシーンの様々な複数の小領域または複数組の小領域にそれぞれ対応する複数のプリミティブリストが存在することが好ましい。
【００７１】
本発明の上記の諸態様および諸実施形態では、当該プリミティブがレンダリングされる可能性があると、またはレンダリングされることになると当初判定された(例えば、当該プリミティブまたはそれ自体のバウンディングボックスがその内に入り、またはそれを横切り、またはそれに接することが判明した)すべての小領域およびすべての複数組の小領域に関するプリミティブリストにプリミティブが含められるのではなく、当該プリミティブがレンダリングされる可能性があると、またはレンダリングされることになると当初判定されたすべての小領域および複数組の小領域よりも少ない数の小領域に関するプリミティブリストにプリミティブが含められるような構成が好ましい。
【００７２】
言い換えれば、当該プリミティブがリスト化される可能性のあるまたはリスト化されることになる別々のプリミティブリスト(すなわち、当該プリミティブがレンダリングされる可能性があると、またはレンダリングされることになると当初判定された(例えば、当該プリミティブまたはそれ自体のバウンディングボックスがその内に入り、またはそれを横切り、またはそれに接することが判明した)すべての小領域および複数組の小領域に関するプリミティブリスト)の内のすべてではなく一部のプリミティブリストにだけプリミティブがリスト化され得、また実際にリスト化されるような構成が好ましい。したがって、プリミティブは、それ自体がレンダリングされる可能性があると、またはレンダリングされることになると判定されたすべての小領域および複数組の小領域に関する別々のプリミティブリストの内のすべてではなく少なくとも1つのプリミティブリストにリスト化されることが好ましい。
【００７３】
当該プリミティブは、それらがレンダリングされる可能性があると、またはレンダリングされることになると判定された(例えば、それら自体またはそれらのバウンディングボックスがその内に入ると判定された)複数の小領域および複数組の小領域のプリミティブリストに、所望される任意の適当な様式で選択的に記憶することができる。例えば、小領域単位(on a sub-region by sub-region basis)ではなく複数組の小領域単位でプリミティブを優先的にリスト化することにより、(シーンに必要とされるプリミティブリストが少なくなる故に)プリミティブ(タイル)リストを記憶するためのメモリ要件が減少し、逆もまた同様である。したがって、例えば複数の小領域レベルまたは複数組の小領域レベルでプリミティブを選択的にリスト化することを使用して、タイルのリスト化プロセスのメモリ使用要件を変化させ制御することもできる。したがって、本発明は、タイルのリスト化プロセスの(少なくともメモリ使用要件に関する)柔軟性および制御可能性を高めることを容易にする。
【００７４】
所与のプリミティブは、それ自体がレンダリングされることになると判定された(例えば、当該プリミティブまたはそれ自体のバウンディングボックスが所在する)すべてのシーンエリアに関してそれ自体がレンダリングされ得るに足る数のプリミティブリストにだけ含められることが好ましい。このことは、同じシーンエリアのプリミティブが重複した形で不必要にリスト化されることを回避するのに役立つ。したがって、特に好ましい一実施形態では、プリミティブは、それ自体がレンダリングされることになる各小領域に関する1つのプリミティブリストにだけリスト化される。このリストは、個々の小領域に関するプリミティブリストであることも、該当する小領域を含む１組の小領域に関するプリミティブリストであることもある。
【００７５】
したがって、あるプリミティブが1組の小領域に関するプリミティブリストに含められる場合は、当該プリミティブは、同じく当該1組の小領域内にある複数の小領域の内のいずれかに関する個々のプリミティブリストには含められないことが好ましい。
【００７６】
同様に、すべての複数組の小領域が同じシーンエリアを覆う場合にも、プリミティブは、それ自体を含むプリミティブリストを有する1組の小領域によって全体的に包含されるどの複数組の小領域に関するプリミティブリストにも、含められないことが好ましい。
【００７７】
したがって、プリミティブは、それ自体を含むプリミティブリストを有するより大きな1組の小領域によって全体的に包含される(覆われる)どの複数の小領域または複数組の小領域のプリミティブリストにも、含められないことが最も好ましい。
【００７８】
ここで、所与のプリミティブは、シーンの様々な領域に関する様々な解像度レベルのプリミティブリストに(すなわち、シーンエリア(異なるサイズの複数組の小領域)に)リスト化可能であることも、実際に含められることもあることに留意すべきである。例えば、プリミティブは、それ自体が所在するシーンの一部にある単一のシーンの小領域(タイル)に関するプリミティブリストに含められることもあるが、それ自体が現れるシーンの別の一部の(すなわち、より高いレベルの)1組の小領域に関するプリミティブリストに含められることもある。しかしながら、好ましい一実施形態では、所与のプリミティブは、1つの解像度レベルにおいてのみリスト化され、すなわち、当該プリミティブは、それ自体がリスト化(レンダリング)されることになるすべてのシーンの領域について、同じレベル(サイズ)の(すなわち、単一の小領域専用の)複数組の小領域に関してリスト化される。
【００７９】
複数組の小領域が、様々な解像度(サイズ)のシーンエリアからなる複数のレイヤによってシーンが効果的にオーバーレイされるように構成されている場合は、特に好ましい一実施形態では、上述したように最も高いレベル(すなわち、1組または複数組の小領域が最も多くの小領域を含むレベル)に始まり、複数組の小領域からなる隣り合う各レベル(レイヤ)で、あるプリミティブ好ましくは各プリミティブを検査して、該当するレベルで当該プリミティブを含める必要がある異なるプリミティブリストの数を判定することにより、複数の小領域または複数組の小領域に関するプリミティブリストにプリミティブが割り付けられる。このプロセスは、好ましくは当該プリミティブが所与のレベル(レイヤ)でリスト化されることになるプリミティブリストの数が、リストの閾値数好ましくは所定の閾値数を超えたことが判定されるまで、または最下位(bottom)のレイヤ、すなわち単一の小領域レベルのレイヤに到達したことが判定されるまで、下位のレイヤへと進む形で反復して継続される。
【００８０】
そのレベルでプリミティブをリスト化するとすれば、閾値数を超える数のプリミティブリストにそれを含める必要が生じるレイヤに到達したときは、当該プリミティブは、その前のレベル(レイヤ)(すなわち、プリミティブを含める必要があるプリミティブリストの数が閾値数を超えなかった最終レイヤ(final layer))における複数組の小領域に関するプリミティブリストに実際に「リスト化」され、すなわち収容されることが最も好ましい。このことは、プリミティブリストの閾値数を超える数のプリミティブリストにあるプリミティブまたは各プリミティブを含める必要が解消されることを保証し、これにより、例えばプリミティブ(タイル)リストに関するメモリ使用要件の制御および知識の精度を高めることが容易となる。
【００８１】
したがって、特に好ましい一実施形態では、あるプリミティブ好ましくは各プリミティブが、選択された数好ましくは所定の(閾値)数を超える数のプリミティブリストにリスト化されることはない。
【００８２】
上記の諸構成で使用されるプリミティブリストの閾値数は、所望の形で選択することができる。上述したように、閾値数は実際にプリミティブがリスト化されるプリミティブリストの最大数としての働きをすることから、これを使用して、システム内の所望の最適化、すなわちより多くの数のより長いプリミティブリストを記憶する必要が生じることと、(より大きい閾値数を設定することによって)レンダリング段階でのプリミティブの不必要な処理の量を大幅に減少させることとの間の補償(トレードオフ)を事実上設定することができ、その逆もできる。
【００８３】
閾値数は、好ましくは1より大きい整数であり、好ましくは2より大きい整数であり、最も好ましくは3より大きい整数である。特に好ましい一実施形態では、プリミティブリストの閾値数は4である。閾値数は、使用時に変更および設定され得ることが好ましい。
【００８４】
特に好ましい一実施形態では、閾値数は、複数組の小領域階層におけるすぐ隣のレイヤ内の複数組の小領域にある、各小領域の数の比(すなわち、隣り合う各レイヤ内の複数組の小領域の数に対する乗率)に対応する。したがって、例えば複数組の小領域がそれぞれ、シーンに被せられる1×1、2×2、4×4、8×8などの小領域からなる隣り合うレイヤ内に所在するように構成されている場合、すなわち、各レイヤ内の小領域の数がその都度4倍増加する場合は、閾値数は4であることが好ましい。
【００８５】
特に好ましい一構成では、そのレベル(レイヤ)の1つ上のレベル(レイヤ)では、プリミティブを、閾値数を超える数のプリミティブリストにリスト化する必要が生じ、当該プリミティブがリスト化されることになるプリミティブリストの数が閾値数(例えば4)と等しくなることが判明した場合は、そのすぐ直前のレベルでなら当該プリミティブを含めるプリミティブリストが1つだけで済むかどうかが検査され、そうである場合は、当該プリミティブは、それ自体を閾値数のプリミティブリストにリスト化する必要が生じるレベルではなく、その高い方のレベルの単一のリストにリスト化される。
【００８６】
言い換えれば、単一のプリミティブリストの1つのレベルで(すなわち、単一の組の小領域に関して)プリミティブをリスト化することができても、1つ下のレベルでは閾値数のプリミティブリストにリスト化する必要が生じる場合(すなわち、(最下位にあたる単一の小領域レベルで)複数組の小領域または複数の小領域の閾値数)(また、1つ下のレベルがプリミティブリストの閾値数を超えた場合)は、当該プリミティブを単一のリストレベルでリスト化すること、すなわちこれを単一のリストにだけ含めることが好ましい。言い換えれば、隣り合う下のレベルに進んだときに、プリミティブをリスト化する必要が生じるプリミティブリストの数が、ある数からプリミティブリストの閾値数(例えば4)に変わる場合は、当該プリミティブは、単一のリストレベルでリスト化されることが好ましい。このことは、1つのリストにだけプリミティブを含めることを可能にしながらも、依然として、それ自体をレンダリングする必要があるすべての小領域に関して当該プリミティブが処理されることを保証するので有利である。
【００８７】
したがって、上記から分かるように、特に好ましい一実施形態では、(最も高いレベルが全体のシーンを覆う単一のリストとなるので)2番目に高いレベルに始まり、次いで3番目に高いレベルに進み、以下同様に、当該プリミティブを所与のレベルの閾値数を超えるプリミティブリストに含める必要が生じることが判明するまで、複数組の小領域階層の各レベルで所与のプリミティブの検査が行われる。次いで、当該プリミティブは、それ自体がその1つ上のレベル(すなわち、プリミティブリストの閾値数を超えるレベルの2つ上のレベル)で単一のプリミティブリストにリスト化でき、当該単一のリストにリスト化されることになる特別の場合を除いて、その直前のレベルでリスト化されることになり、すなわち、それ自体をリスト化するのに閾値数またはそれより少ない数のプリミティブリストが必要となるリストレベルでリスト化されることになる。
【００８８】
次いで、シーンに関するすべてのプリミティブがリスト化され、当該シーンが分割されまたは分割される可能性のあるすべての小領域および複数組の小領域に関するプリミティブリストが作成されるまで、シーンのプリミティブ毎に上記が繰り返されることになる。
【００８９】
いうまでもなく、所与のプリミティブまたは複数のプリミティブをどこ(複数組の小領域階層のどのレベルで)にリスト化すべきかを決定する他の構成を使用することも可能である。例えば、所与のレベルでプリミティブをリスト化する必要が生じるプリミティブリストの絶対数を考慮に入れる代わりにまたはそれに加えて、例えば隣り合う2つのレイヤ(レベル)の、プリミティブを含める必要が生じるプリミティブリストの数の差を考慮に入れることもでき、これを使用して所与のプリミティブを(どのレベルで)どこにリスト化すべきかを判定することもできる。例えば、この差を閾値の値と比較し、その比較の結果に基づいてプリミティブをリスト化することもできる。いうまでもなく、他の構成も可能なはずである。
【００９０】
個々のプリミティブリストおよびそれらに含まれるプリミティブは、所望される任意の適当な形で構成することができ、所望される任意の適当なデータを含むことができる。これらのリストは、かかるリストについて当技術分野で既に使用されている様式で構成され、データを収容することが好ましい。したがって、これらは、例えば当該リスト内の各プリミティブの各頂点に関する識別子と、それらの各頂点を指すインデックスまたはポインタとを含むことが好ましい。当該プリミティブは、それ自体を先入れ先出しベースでリストから読み出すことが可能となる所望のレンダリング順序で(古いものから順に)各リストにリスト化(順序付け)されることが好ましい。当技術分野で知られているように、当該プリミティブは通常、それらがレンダリングされる順序で生成されることになる。かかる場合には、当該プリミティブは単純に、それらが生成される順序で各リストにリスト化され得、また実際にリスト化されることが好ましい。
【００９１】
上述したようにすべてのプリミティブがソートされ、複数の小領域および複数組の小領域に関するプリミティブリストが作成されれば、プリミティブリストを使用して各小領域に関してどのプリミティブを処理する必要があるかを判定することにより、当該複数の小領域(タイル)を処理しレンダリングすることができる。
【００９２】
このレンダリングプロセスは、既知のタイルベースのレンダリングシステムと同様の様式で実施されてもよく、また実際に実施されることが好ましい。したがって、各小領域(タイル)は、別々に処理されレンダリングされることが好ましく、すなわち、別々の個々の小領域が1つずつレンダリングされることが好ましい。このレンダリングは、所望の任意の形で、例えば個々の小領域を連続的にまたは並列的にレンダリングすることによって実施することができる。すべての小領域(タイル)がレンダリングされると、例えば当技術分野で知られているように、それらを表示のためにフレームバッファ内で再結合することができる。
【００９３】
当業者には理解されるように、各小領域を処理しレンダリングするときは、当該小領域に関して処理されレンダリングされなければならないプリミティブを判定するために、当該小領域専用のプリミティブリストと当該小領域を含むすべての複数組の小領域のプリミティブリストとの両方をチェックする必要がある。
【００９４】
本出願人らはこのことが、1組の小領域に関するプリミティブリストにリスト化されたプリミティブが、当該組における所与の個々の小領域内にそれ自体が実際に現れるか否かに関わらず、当該1組の小領域の各小領域に関して処理され、その結果、当該プリミティブはそれらが実際に現れない複数の小領域に関して処理される可能性もあることを意味し得ることを認識している。しかしながら、本出願人らはそれでもなお、本発明を用いることにより、例えばシステムの設計者およびアプリケーションのプログラマが、例えば従来技術のシステムを凌ぐより迅速な形で所望の任意の最適化や、例えばメモリ使用要件とグラフィックス処理要件との間のトレードオフなどを制御することが可能となる故に、本発明が依然として有利であるものと信じる。
【００９５】
このプリミティブリストのチェックと、所与の小領域に関してレンダリングすべきプリミティブの識別とは、所望の形で実行される。しかしながら、好ましい一実施形態では、当該プリミティブリストは、次にレンダリングすべきプリミティブをそこから選択し、次いで当該プリミティブをレンダリングのためにレンダリングユニット(例えばパイプライン)に供給する、プリミティブ選択ユニットに供給される。
【００９６】
プリミティブ選択ユニットは、任意の適切な形をとることができる。好ましい一実施形態では、プリミティブ選択ユニットは、タイル読取りユニットを備える。
【００９７】
様々なプリミティブリスト、例えば所与の小領域(タイル)をカバーする異なるレベル(解像度)のリストがプリミティブ選択ユニットに並列的に(すなわち同時に)供給され、その後当該プリミティブ選択ユニットが当該リストの内の1つから、次に処理すべきプリミティブを選択することが最も好ましい。言い換えれば、当該プリミティブ選択ユニットは、複数のプリミティブ(タイル)リストを受け取りサポートし、それらの複数のリストからレンダリング用プリミティブを選択することになる。
【００９８】
かかる諸構成は、それぞれ独自に新規性および利点を有し得るものと信じる。故に、本発明の第13の態様によれば、グラフィックス処理システムにおいてレンダリング用プリミティブを選択する装置であって、
レンダリング用プリミティブを選択するプリミティブ選択ユニットと、
前記プリミティブ選択ユニットに複数のプリミティブリストを並列的に供給する手段と
を備え、
前記プリミティブ選択ユニットは、それ自体に供給されたプリミティブリストの内の1つからレンダリング対象プリミティブを選択する手段を備える、
装置が提供される。
【００９９】
本発明の第14の態様によれば、グラフィックス処理システムにおいてレンダリング用プリミティブを選択する方法であって、
プリミティブ選択ユニットに複数のプリミティブリストを並列的に供給するステップと、
前記プリミティブ選択ユニットがそれ自体に供給されたプリミティブリストの内の1つからレンダリング対象プリミティブを選択するステップと
を含む方法が提供される。
【０１００】
当業者には理解されるように、本発明の上記の諸態様および諸実施形態は、本明細書に開示される本発明の好ましい諸特徴および任意選択の諸特徴の内のいずれか1つまたは複数を含むことも、それらをすべて含むこともでき、またそれらを実際に含むことが好ましい。したがって、例えばグラフィックス処理システムは、タイルベースのレンダリングシステムであることが好ましい(この場合には、プリミティブ選択ユニットは例えばタイル読取りユニットを備えることができる(また備えることが好ましい))。
【０１０１】
次のレンダリング用プリミティブは、すべてのプリミティブリストから並列的に選択することができる(例えば、プリミティブ選択ユニットには、次のレンダリング用プリミティブをそこから選ぶためのすべてのプリミティブリストを並列的に供給することもできる)。しかしながら、好ましい一実施形態では、次のレンダリング用プリミティブは、(典型的にはすべてのプリミティブリストより少ないことが好ましい)選択された1組のプリミティブリストだけから選択される(すなわち、使用される場合はプリミティブリスト選択ユニットにそれらのプリミティブリストだけが供給される)。当該プリミティブは、該当する小領域(すなわち、現在レンダリングされている小領域)を含むものとしてまたはカバーするものとして知られるすべてのプリミティブリストから選ばれる(プリミティブ選択ユニットにそれらのプリミティブリストが供給される)ことが最も好ましく、また、それらのプリミティブリストだけから選ばれる(すなわち、当該プリミティブ選択ユニットにそれらのプリミティブリストだけが供給される)ことが最も好ましい。特に好ましい一実施形態では、当該プリミティブは、各解像度レベルの単一のプリミティブリストから、すなわち、必要に応じて、該当する単一の小領域に関するリスト、該当する小領域を含む2×2の1組の小領域に関するリスト、該当する小領域を含む4×4の1組の小領域に関するリスト、該当する小領域を含む8×8の1組の小領域に関するリストなどから選ばれる(プリミティブリスト選択ユニットにそれらのリストが同時に供給される)。
【０１０２】
所与のタイルに関するプリミティブをそこから選択すべき1組のプリミティブリスト(すなわち、所与のタイルに関するレンダリング用プリミティブを識別するためにプリミティブ選択ユニットが読み出すべき1組のプリミティブリスト)は、所望の任意の形で、例えば必要に応じてそのデータをグラフィックスプロセッサ(例えばプリミティブ選択ユニット)に送ることによって(例えばプリミティブ選択ユニットに)示すことができる。好ましい一実施形態では、この情報は、新しいタイルがレンダリングされるときに、例えば「新しいタイル」コマンド(レンダリングユニットに新しいタイルのレンダリングを開始するよう命じるコマンド)の一部としてまたはそれに関連して送られる。したがって、各小領域(タイル)は、当該小領域(タイル)に使用される1組のプリミティブリストと何らかの形で関連付けられることが好ましい。いうまでもなく、他の構成も可能なはずである。
【０１０３】
所与の小領域(タイル)に使用すべきプリミティブリストを示す情報は、所望される任意の適当な形態で供給することができる。好ましい一実施形態では、関連するプリミティブリストを指す1組のポインタまたはインデックスが供給される。別の好ましい構成では、新しい小領域(タイル)がレンダリングされるときに変更する必要が生じるプリミティブリストをシステムが特定し変更することが可能となるように、当該プリミティブリストを指す1組のポインタまたはインデックスの変更が行われる。また、使用すべきプリミティブリストと、小領域(タイル)のx,y位置との間の所定の1組の関係を作成することも可能であり、後にこの関係を使用して、小領域(タイル)に使用すべきプリミティブリストを複数の小領域(タイル)のx,y座標に基づいて判定することもできる。例えば、小領域の当該x,y位置を使用して、各小領域の位置に関して使用すべきプリミティブリストを指定する参照用テーブルのインデキシングを行うこともできる。いうまでもなく、他の構成も可能なはずである。
【０１０４】
次にレンダリングすべきプリミティブは、(小領域に使用するために)所望される任意の適当な様式で供給されたプリミティブリストから(例えばプリミティブ選択ユニットによって)選ぶことができる。例えば、リストが尽きるなどするまでは、最も低い解像度のリスト(例えば、単一の小領域のリスト)のプリミティブを常に優先的に選択し、あるいはその逆に選択することもできる。
【０１０５】
しかしながら、本出願人らは、グラフィックス処理ではプリミティブが所望の順序(典型的にはそれらが当初生成された順序)でレンダリングされるのを保証することが重要であり得ることを認識している。所与の小領域(タイル)に関して単一のプリミティブリストしか存在しない場合は、複数のプリミティブが当該プリミティブリストに正しい順序で、すなわち生成される際に先入れ先出しベースで順番に追加されリスト化され得、またそのように追加されリスト化されることになるので、これは難しいことではない。
【０１０６】
実際、当該複数のプリミティブは上述したように、本発明に従って生成された個々のタイルリストにそれぞれの生成順序でリスト化されることが好ましく、所与の任意のプリミティブリストについても同様であり、この構成に従う場合は、当該複数のプリミティブは、どのような場合にも個々のプリミティブリストに正しい順序でリスト化されることになる。
【０１０７】
しかしながら、例えばプリミティブ選択ユニットに次のレンダリング用プリミティブをそこから選択すべき複数のプリミティブリストが同時に供給された場合にも、当該選択ユニットがそれらの様々なリストから複数のプリミティブを所望の正しい順序で選択できることを保証し得ることがなお望ましいはずである。
【０１０８】
したがって、特に好ましい一実施形態では、プリミティブの生成およびソートプロセスは、好ましくは複数のプリミティブを複数のプリミティブリストに含めるときに、当該複数のプリミティブのインデキシングを行うことすなわちそれらにインデックスを追加することができ、後にこのインデックスを例えばプリミティブ選択ユニットが使用して、次に処理すべきプリミティブを選択することもできる。このことは、好ましくは複数のプリミティブを複数のプリミティブリストに含めるときに、当該複数のプリミティブに連続的に番号付けすることによって行われるのが好ましい。各プリミティブは、好ましくは複数のプリミティブを複数のプリミティブリストに含めるときに(すなわち、プリミティブのリスト化(ビニング)段階で)割り付けられるソートインデックスと関連付けられることが最も好ましい。あるプリミティブまたは各プリミティブに割り付けられた番号(ソートインデックス)は、好ましくは当該プリミティブがリスト化されることが判定された1つまたは複数のプリミティブリストに追加(リスト化)されるときに、プリミティブ識別子などと共にプリミティブリストに含められることが好ましい。
【０１０９】
このインデキシングは、所望される任意の適切な様式で行うことができる。例えば、新しいプリミティブをプリミティブリストにリスト化する処理が行われる度に(すなわち、新しいプリミティブが「ビニング」される度に)カウンタを増分させ、当該プリミティブに現在のカウントが割り付けられるようにすることもできる。いうまでもなく、セグメントインデックスを使用する構成や、複数のプリミティブのインデキシングを複数群または複数組単位で行い、次いで各群または各組のインデキシングを行う構成など、他のインデキシング構成も可能なはずである。
【０１１０】
複数のプリミティブがリスト化(ビニング)される際のかかるインデキシングは、例えばそれによって当該複数のプリミティブを正しい順序でレンダリングすることが容易となるので、小領域(タイル)のレンダリングプロセスに役立つ。特に、各プリミティブに付与された(ソート)インデックスは、次の正しい(所望の)レンダリング用プリミティブを選択するのに使用することができ、それによって、例えば複数のプリミティブをレンダリングするときに所望のプリミティブ順序を再構築することが可能となり、当該複数のプリミティブがレンダリングのために様々なプリミティブリストから所望の(正しい)順序で取得され得、また実際に取得されることを保証するのに役立つ。
【０１１１】
この構成では、次に処理すべきプリミティブは、例えばプリミティブ選択ユニットによって、各リスト内の(次の)複数のプリミティブに関する(例えばまた好ましくは、例えば各リストの事実上先頭にあるプリミティブなど、各リスト内の次のプリミティブに関する)インデックスに基づいて、複数のプリミティブリストから選択されることが好ましい。例えば、当該複数のプリミティブが昇順で(最も低い番号を有するプリミティブが最初に処理されるように)インデキシングされる場合は、プリミティブ選択ユニットは、例えば各リスト内の次のプリミティブのインデックスを判定し(読み出し)、次のレンダリングには最も低いインデックスを有するプリミティブを選択することが好ましい。
【０１１２】
複数のプリミティブに関するかかるインデキシングの諸構成は、それぞれ独自に新規性および利点を有し得るものと信じる。したがって、本発明の第15の態様によれば、グラフィックス処理システムであって、
レンダリング用グラフィックプリミティブをリスト化する手段と、
リスト化された各グラフィックスプリミティブを前記プリミティブのインデックスと関連付ける手段と、
前記グラフィックスプリミティブに関連付けられた前記インデックスを使用して前記プリミティブをソートする手段と
を備えるグラフィックス処理システムが提供される。
【０１１３】
本発明の第16の態様によれば、グラフィックス処理システムを操作する方法であって、
レンダリング用グラフィックプリミティブをリスト化するステップと、
リスト化された各グラフィックスプリミティブを前記プリミティブのインデックスと関連付けるステップと、
前記グラフィックスプリミティブに関連付けられた前記インデックスを使用して前記プリミティブをソートするステップと
を含む方法が提供される。
【０１１４】
当業者には理解されるように、本発明の上記の諸態様は必要に応じて、本明細書に開示される本発明のすべての好ましい特徴および任意選択の特徴の内のいずれか1つまたは複数を含むことができ、またそれらを実際に含むことが好ましい。したがって、例えば複数のプリミティブに割り付けられる複数のインデックスは、当該複数のプリミティブをレンダリング用に順序付け（ソートす）るのに(すなわち、当該複数のプリミティブがレンダリングされる順序を制御するのに)使用されることが好ましく、また、レンダリングのために複数のプリミティブリストにリスト化(ビニング)するときに当該複数のプリミティブに割り付けられることが好ましい。同様に、当該複数のプリミティブは上述したように、レンダリング対象シーンの単一の小領域専用のプリミティブリストにリスト化され、当該シーンの複数の小領域に共通して使用されることになるプリミティブリストにリスト化され得ることが好ましい。
【０１１５】
本出願人らはさらに、複数のプリミティブをレンダリングするときに当該複数のプリミティブの正しい順序が再現され得るような上述の様式のプリミティブのインデキシングを使用して、他の有利なグラフィックス処理プロセスおよび操作を円滑に進め得ることも認識している。
【０１１６】
例えば、またとりわけ、このような様式で複数のプリミティブのインデキシングを行うことにより、当該複数のプリミティブをレンダリングするときに複数のインデックスを使用して、分散した複数のプリミティブを正しい順序に再収集(再結合)することができるので、例えば複数の異なるプロセッサまたは処理ユニットによって個々のプリミティブを分散的な形で容易に処理することができるようになる。これにより、例えばあるストリームのレンダリング対象プリミティブに由来する様々なプリミティブを、並列動作中の複数の異なるジオメトリプロセッサまたは処理ユニット間で分散させ、その後当該複数のプリミティブをレンダリングのためにそれぞれの元の「ストリーム」に再結合することが可能となる。
【０１１７】
したがって、上述したタイプのプリミティブのインデキシング構成を使用して、例えば所与のストリームの(1組の)プリミティブに並列的に作用する複数のジオメトリおよび/またはビニング(プリミティブリスト化)エンジンをサポートし、当該インデキシングによってもたらされる可能性がある処理速度の比例的増加(commensurate increase)などにより当該エンジンの動作を円滑にすることもできる。
【０１１８】
かかる諸構成は、それぞれ独自に新規性および利点を有し得るものと信じる。したがって、本発明の第17の態様によれば、1群のレンダリング用グラフィックスプリミティブを処理する方法であって、
前記1群のプリミティブに由来する複数のプリミティブを複数の処理ユニットにわたって分散させるステップと、
前記分散された複数のプリミティブを1群のプリミティブに再結合するステップと
を含む方法が提供される。
【０１１９】
本発明の第18の態様によれば、1群のレンダリング用グラフィックスプリミティブを処理する装置であって、
前記1群のプリミティブに由来する複数のプリミティブを複数の処理ユニットにわたって分散させる手段と、
前記分散された複数のプリミティブを1群のプリミティブに再結合する手段と
を備える装置が提供される。
【０１２０】
当業者には理解されるように、本発明の上記の諸態様および諸構成は必要に応じて、本明細書に記載される本発明の好ましい諸特徴および任意選択の諸特徴の内のいずれか1つまたは複数を含むことも、それらをすべて含むこともでき、またそれらを実際に含むことが好ましい。
【０１２１】
したがって、例えば1群または1組のプリミティブは、特定の順序の線形的な一連のプリミティブなど、1つのストリームのプリミティブを含むことが好ましい。同様に、当該1群のプリミティブは、単1群のプリミティブの形に(例えばまた好ましくは、単一ストリームのプリミティブの形に)再結合されることが好ましい。また、例えば当技術分野で知られているように、当該1群のプリミティブは、より高い入力レベルでは必ずしも「ストリーム」としてシステムに供給されるわけでなく、例えばシステムの基礎となるプロセスの一部または全部に関するストリームとして構成されるように(また、ストリームの形をとらないときおよび/またはストリームの形をとるときに、本発明の上記の諸態様および諸実施形態の様式で分散されるように)することも可能である。
【０１２２】
したがって、特に好ましい一実施形態では、当該1群のプリミティブは、1つのストリームのプリミティブであり、当該ストリームに由来する複数のプリミティブは、複数の処理ユニットにわたって分散され、分散された当該プリミティブは、単一ストリームのプリミティブに再結合される。
【０１２３】
同様に、当該複数のプリミティブはそれぞれ、当該複数の処理ユニットに分散される前にそれらに関連付けられまたは割り付けられるインデックスを有することが好ましく、これらのインデックスは、分散された当該複数のプリミティブを例えば単一ストリームに再結合するときに使用されることが好ましい。これらのインデックスは、複数のプリミティブを順序付けまたはソートするのに(例えば、再結合されるストリーム内にそれらを所望の順序で配置するのに)使用されることが好ましい。
【０１２４】
また、当該複数のプリミティブが分散される複数の処理ユニットは、(例えば、それらが実施する機能および/または操作の点で)同様のユニットであることが好ましく、また、分散された複数のプリミティブに対して同様の操作(機能)をそれぞれ実行することが好ましい(いうまでもなく、このことは本質的なものではないが、それらが望まれる場合または必要に応じて、様々な処理ユニットおよび操作を使用することができる)。(ここで「同じ操作」とは、実際に実施される実際の操作は様々であり、例えば個々の各プリミティブの性質および要件に依存することになるものの、当該複数の処理ユニットが複数のプリミティブに対して同じ形のまたは同じタイプの操作またはプロセスを実行することが意図されていることが理解されるであろう。)当該複数の処理ユニットは、例えばそれぞれ(異なる)プリミティブの操作(処理)を同時に行うことができるように、並列的に動作することが好ましい。
【０１２５】
好ましい一実施形態では、当該複数の処理ユニットは、ジオメトリプロセッサであり、かつ/または複数のプリミティブの変形、クリッピング、および/またはライティングなど1つまたは複数のジオメトリ処理操作を実行し、かつ/またはプリミティブビニングプロセスを実行する(すなわち、レンダリング対象シーンの所与の1つの小領域または複数の小領域に関してレンダリングすべき複数のプリミティブを特定するのに使用される複数のプリミティブリスト内に当該複数のプリミティブを配置する)ことが最も好ましい。
【０１２６】
同様に、本発明の上記の諸態様および諸実施形態における方法および装置は、当該複数のプリミティブをレンダリングするステップまたは手段を含むことが好ましい。かかる一構成では、分散された当該複数のプリミティブを1つの共通のストリームに再結合することは、当該複数のプリミティブがレンダリングのために送出される前に、または当該複数のプリミティブがレンダリングのために送出されるときに(送出されると同時に)発生することが最も好ましい。
【０１２７】
本発明の第19の態様によれば、1群のグラフィックスプリミティブの表示処理を行う方法であって、
前記1群のプリミティブ内の複数のプリミティブにインデックスを割り付けるステップと、
前記1群のプリミティブに由来する複数のプリミティブを複数の処理ユニットにわたって分散させるステップと、
前記複数のプリミティブが前記複数の処理ユニットによって処理された後に、前記複数のプリミティブに割り付けられた前記インデックスを使用して前記複数のプリミティブをソートするステップと
を含む方法が提供される。
【０１２８】
本発明の第20の態様によれば、1群のグラフィックスプリミティブの表示処理を行う装置であって、
前記1群のプリミティブ内の複数のプリミティブにインデックスを割り付ける手段と、
前記1群のプリミティブに由来する複数のプリミティブを複数の処理ユニットにわたって分散させる手段と、
前記複数のプリミティブが前記複数の処理ユニットによって処理された後に、前記複数のプリミティブに割り付けられた前記インデックスを使用して前記複数のプリミティブをソートする手段と
を含む装置が提供される。
【０１２９】
当業者には理解されるように、本発明の上記の諸態様および諸構成は必要に応じて、本明細書に記載される本発明の好ましい諸特徴および任意選択の諸特徴の内のいずれか1つまたは複数を含むことも、それらをすべて含むこともでき、またそれらを実際に含むことが好ましい。
【０１３０】
したがって、例えば前記1群のプリミティブは、好ましくは1組のプリミティブを含み、最も好ましくは1つのストリームのプリミティブを含む。
【０１３１】
同様に、当該複数のプリミティブはそれぞれ、好ましくはそれらが複数の処理ユニットに分散される前に割り付けられまたは関連付けられたインデックスを有し、当該インデックスは、好ましくは当該複数のプリミティブが、プリミティブの後処理のために当該複数の処理ユニットによって処理された後にそれらを順序付けるのに使用され、最も好ましくは分散された当該複数のプリミティブを(所望のプリミティブ順序の)単一ストリームのプリミティブに(必要に応じて)再結合するのに使用される。
【０１３２】
また、当該複数のプリミティブが分散される複数の処理ユニットはそれぞれ、好ましくは同じ(同様の)操作(機能)を実行し、好ましくは並列的に動作し、最も好ましくは1つまたは複数のジオメトリ処理操作を実行し、かつ/またはプリミティブビニングプロセスを実行する。
【０１３３】
同様に、本発明の上記の諸態様および諸実施形態における方法および装置は、当該複数のプリミティブをレンダリングするステップまたは手段を含むことが好ましく、当該複数のプリミティブに割り付けられたインデックスは、当該複数のプリミティブをレンダリング用に順序付けるのに使用されることが好ましい。
【０１３４】
したがって、本発明の第21の態様によれば、1群のグラフィックスプリミティブの表示処理を行う方法であって、
前記1群のプリミティブ内の複数のプリミティブにインデックスを割り付けるステップと、
前記1群のプリミティブに由来する複数のプリミティブを複数の処理ユニットにわたって分散させるステップと、
前記1群のプリミティブに由来する複数のプリミティブをレンダリングするステップと、
前記複数のプリミティブに割り当てられた前記インデックスを使用して前記複数のプリミティブがレンダリングされる順序を制御するステップと
を含む方法が提供される。
【０１３５】
本発明の第22の態様によれば、1群のグラフィックスプリミティブの表示処理を行う装置であって、
前記1群のプリミティブ内の複数のプリミティブにインデックスを割り付ける手段と、
前記1群のプリミティブに由来する複数のプリミティブを複数の処理ユニットにわたって分散させる手段と、
前記1群のプリミティブに由来する複数のプリミティブをレンダリングする手段と、
前記複数のプリミティブに割り当てられた前記インデックスを使用して前記複数のプリミティブがレンダリングされる順序を制御する手段と
を備える装置が提供される。
【０１３６】
当業者には理解されるように、本発明の上記の諸態様および諸構成は必要に応じて、本明細書に記載される本発明の好ましい諸特徴および任意選択の諸特徴の内のいずれか1つまたは複数を含むことも、それらをすべて含むこともでき、またそれらを実際に含むことが好ましい。したがって、例えば当該複数のプリミティブは、好ましくはレンダリング用の1つのストリームのプリミティブの形をとり、当該複数のプリミティブはそれぞれ、好ましくはそれらが複数の処理ユニットに分散される前に関連付けられまたは割り付けられたインデックスを有し、当該複数のプリミティブが分散される当該複数の処理ユニットはそれぞれ、好ましくは同じ(同様の)操作(機能)を実行し、好ましくは並列的に動作し、最も好ましくは1つまたは複数のジオメトリ処理操作を実行し、かつ/またはプリミティブビニングプロセスを実行する。
【０１３７】
分散型のプリミティブ処理構成が使用される場合は、プリミティブ群(例えばストリーム)内の複数のプリミティブは、所望の任意の様式で個々の処理ユニットに分散させることができる。例えば、当該複数のプリミティブは単純に、使用可能な複数の処理ユニットに1つずつ分散させることもできる。好ましい一実施形態では、当該群(例えばストリーム)から選択された1組または1バッチ(batch)のプリミティブが1つの処理ユニットに送られ、次の1組または1バッチが次の処理ユニットに送られ、以下同様に送られる。当該1群のプリミティブの内の所与の任意のプリミティブが1つの処理ユニットにだけ送られるような構成であることが好ましいが、これは本質的なものではない。
【０１３８】
特に好ましい一実施形態では、当該1群(例えばストリーム)のプリミティブにおける複数のプリミティブは、描画コール単位で(on a drawing call basis)例えば並列的な複数の処理ユニットに分散され、好ましくは所与の描画コールに関するすべてのプリミティブが同じ処理ユニットに送られるようになる(しかし、可能な場合は様々な描画コールが様々な処理ユニットに送られてもよく、また実際に送られることが好ましい)。当技術分野で知られているように、グラフィックス処理の際は、複数のプリミティブは一般に、例えばプログラマがそれらを1群のものとして一時に(in one go)まとめてレンダリングすることを意図した特定のシーンの領域に関する組単位で分類される。まとめて処理されるような複数群のプリミティブは一般に、「描画コール」と呼ばれている。したがって、処理のための複数のプリミティブを描画コールに基づいて有利な形で分散させることにより、例えば描画コールに関する複数のプリミティブが処理されるときも、それらのプリミティブが依然として「まとまっている(together)」ことが保証される。
【０１３９】
当該複数のプリミティブには、上記の諸構成の任意の適当な様式で(すなわち、当該インデキシングによって(例えば、当該複数のプリミティブをレンダリングするときに)所望のプリミティブ順序(例えばストリーム)を再現することが可能となる限り)、インデキシング(使用される場合)を行うことができる。したがって、例えばすべてのプリミティブに、例えばそれらを分散するときに、例えば上述したのと同様の様式で、単純な形で連続的に番号付けすることもできる。
【０１４０】
しかしながら、好ましい一構成では、特に複数のプリミティブがバッチ単位(組単位)で(例えば描画コール単位で)分散される場合は、組合せ型またはセグメント型インデキシング(番号付け)スキームが使用される。当該複数のバッチ(例えば描画コール)が好ましくは連続的に番号付けされた後に、各バッチに関する(その範囲内の)複数のプリミティブが(やはり好ましくは連続的に)番号付けされることが最も好ましい。したがって、例えば描画コール番号1に関しては、プリミティブ1〜nを存在させることができ、描画コール番号2の下には、プリミティブ1〜mを存在させることができ、以下同様の形でプリミティブを存在させることができる。言い換えれば、例えば当該複数の描画コールのインデキシングが行われた後に、各描画コール内の複数のプリミティブのインデキシングが行われることになる。当該複数のプリミティブが再結合されるときは、システムは次いで、例えば整列した複数の描画コール(バッチ)を順番に取得し、各描画コール(バッチ)の範囲内の整列した所与の描画コールに関する複数のプリミティブを取得する。
【０１４１】
かかる好ましい一実施形態では、インデキシングは、インデックスのより高い順位のビット(選択された1組のより高い順位のビット)がバッチに、例えば描画コール番号に使用され、次いで(残りの)より低い順位のビットが当該バッチ(例えば描画コール)内のプリミティブ番号に使用されるように構成される。これにより、複数のプリミティブをバッチ単位(例えば、描画コール単位)でインデキシングする上で、したがって複数のバッチ内の複数のプリミティブを並列動作中の複数のプロセッサに分散させる上で、特に便利な手法がもたらされる。言い換えれば、より高い順位のビットがバッチ(例えば描画コール)番号を表し、より低い順位のビットがバッチ(例えば描画コール)内のプリミティブ番号を表す、セグメントインデックス番号が使用されることが好ましい。
【０１４２】
当業者には理解されるように、上記の諸構成では、所与のバッチ内で必ずしもすべての使用可能なプリミティブのインデックスが必要とされるわけではなく、したがって使用されない場合もある。この場合では、インデックスを使用して例えばレンダリングのために複数のプリミティブを順序付けするときがくると、システムは、所与のバッチに関するすべてのプリミティブの処理(例えばレンダリング)が済んだときに、次のバッチ(描画コール)へと進み、例えばそこからプリミティブのレンダリングを開始する。これを容易にするために、それが望まれる場合はジャンプやリンクコマンドなどのインジケータをインデックスに含めて、所与のバッチ(例えば描画コール)に関する複数のプリミティブが使い果たされたときをシステムが認識し、その後当該インデックス順の次のバッチ(描画コール)に進むべきことを当該システムに分からせるようにすることも可能である。
【０１４３】
したがって、本発明の上記の諸構成および諸態様の好ましい一実施形態では、(例えばあるシーンに関して)レンダリングすべき1つのストリームまたは1組のプリミティブは、別々のバッチに分割され(当該複数のプリミティブの各バッチは好ましくは描画コールに対応する)、当該複数バッチのプリミティブは、それ自体が受け取った複数のプリミティブに対して変形などのジオメトリ操作を実行し、シーンの複数の小領域または複数組の小領域に関するプリミティブリストに当該複数のプリミティブをリスト化する、並列動作中の複数のジオメトリおよびビニングエンジンに分散されることが分かる。その後、当該複数のプリミティブをレンダリングするときがくると、レンダリングプロセスは、上述したように複数のプリミティブリストに記憶された複数のプリミティブに関連付けられているインデックスを使用して、当該複数のプリミティブをレンダリングする所望の正しい順序を再現することができる。
【０１４４】
このように、本発明の上記の諸構成を使用すれば、例えばジオメトリおよびプリミティブビニング操作を分散型の並列的な形で実行することが可能となり、これを使用して例えばプロセスの効率を向上させることもできる。
【０１４５】
このことは、インデックスが上記の諸構成の場合と同様に複数のプリミティブに割り付けられている場合は、所望される任意の適当な様式で行うことができる。このことは、好ましくは当該複数のプリミティブが複数の処理ユニットに分散される前に行われ、最も好ましくはそれらが分散されると同時に行われる。例えば各プリミティブに完全なインデックスを一時に(例えば分散の時点で)割り付けることも可能であり、また、例えば当該インデックスをいくつかの段階に分けて割り付けることもできる。例えば、上述したように当該複数のプリミティブが描画コール単位で分散される場合は、当該描画コールが処理のために配信されるときに、「描画コール」インデックスを割り付けることもできるが、ある描画コール内の個々の複数のプリミティブに関するインデキシングは、後の時点、例えば当該描画コールが処理される時点で実行されてもよい(あるいはまったく実行されなくてもよい)。
【０１４６】
当業者には理解されるように、上記の諸構成では、所与の任意のシーンに関してそれまでに生成された可能性のある各プリミティブおよびあらゆるプリミティブのインデキシングを行うことが可能となるような十分なインデックス(例えば番号)が与えられ得るようにすることが、容易に可能となる。しかしながら、本出願人らは、このことが常に望ましいわけではない可能性があることを認識している。例えば、実際に到達される可能性はほとんどなくあるいはまったくないシーンに関してまで、かなり多くの数のプリミティブにインデキシングできる可能性を残すことは効率的でないこともある。一方、いずれかのシーンで必要とされ得る最大数のプリミティブに対応できるようにインデキシングが構成されていない場合には、あるシーンに関するプリミティブの数が、場合によってはそれらのプリミティブに割り付けることが可能なインデキシングの容量を超える恐れもある。
【０１４７】
かかる状況では、例えばインデキシングの先頭に戻ることが(すなわち、当該プリミティブの番号付けを「一巡する」ことが)可能である。しかしながら、「存続(live)」する(すなわち、レンダリング途中のまたはレンダリングされる予定の)2つの異なるプリミティブがどちらも同じインデックスを有することになる可能性もあるので、本出願人らは、このことが常に望ましいわけではなく適切でない可能性もあることを認識している。
【０１４８】
したがって、特に好ましい一実施形態では、システムは、プリミティブのインデキシング容量に到達したときまたはそれが使い果たされたときを認識することができ、それに応答して、所与の小領域に関する複数のプリミティブをそこから選択すべきプリミティブリストがそれ以降は1つしか存在しなくなるように、例えば、インデックスが使い果たされた後に、プリミティブ選択ユニットが複数のプリミティブに関して、所与の小領域に関する単一のプリミティブリストだけを読み出すことになるように、複数のプリミティブをリスト化することもできる。これにより、例えば当該インデキシング容量が使い果たされときに、当該プリミティブ選択ユニットが所与の任意の小領域に関してレンダリングするための複数のプリミティブをそこから選択すべきプリミティブリストが1つだけとなることが保証され、それにより、(所与の任意の小領域に関してレンダリングするための複数のプリミティブをそこから選択すべきプリミティブリストがそれ以降は1つしか存在せず、したがって2つ以上のリスト内の複数のプリミティブから選ぶ必要が解消されるので)当該複数のプリミティブに連続的にインデキシングするためのシステムの容量が使い果たされたときも、依然として当該システムが当該複数のプリミティブを処理できることが保証される。
【０１４９】
したがって、この構成は、複数のプリミティブに関して使用可能なインデックスが使い果たされた場合のフェイルセーフ動作モードを実現する。
【０１５０】
上記の構成は、所望される任意の適当な様式で達成することができる。好ましい一実施形態では、この構成は、システムが、例えば常に単一の小領域のリストに、または常に2×2の小領域のリストに、または常に4×4の小領域のリストなどに、選択済みの好ましくは所定の同じ解像度レベル(レイヤ)でインデキシング容量が使い果たされた後に生成されたすべてのプリミティブをリスト化することによって達成される。
【０１５１】
したがって、特に好ましい一実施形態では、システムは、インデックスが最上位の使用可能インデックスに到達したこと(例えば、カウンタがその最大値に到達したこと)を認識することができ、それに応答して、常に所与の選択済みの好ましくは所定の同じ解像度レベル(レイヤ)で、複数のプリミティブをリスト化することになる。
【０１５２】
上記の諸構成では、「インデックスが使い果たされた」状態に到達しそれが有効であるときをシステムが容易に特定することが可能となるように、使用可能な最上位のインデックス番号が予約され、その番号が、最後から2番目のインデックスのプリミティブが生成された後に生成されるすべてのプリミティブに割り付けられることが好ましい。
【０１５３】
好ましい一実施形態では、システム(例えばプリミティブ選択ユニット)は、それ自体がレンダリングのために現在選択しているプリミティブを過去にレンダリングしたことがあるかどうか識別することができ、その場合には、当該プリミティブを無視し、別のプリミティブを選択することもできる。この状況は、例えば所与の小領域(タイル)をカバーする2つの異なるプリミティブリストに同じプリミティブが現れ、当該プリミティブが、例えばそれ自体が含まれる他の1つまたは複数のリストの先頭にきたときは既に、それらの2つのリストの内の一方でレンダリングが済んでいるという場合に発生する可能性がある。このイベントが認識されることによって、システムが同じプリミティブを2度にわたってレンダリングすることを回避することが可能となる。
【０１５４】
したがって、好ましい一実施形態では、レンダリング用の複数のプリミティブをそこから選択すべき複数のプリミティブリストが、同じプリミティブを2回以上含んでいる場合も(例えば、当該同じプリミティブが、プリミティブ選択ユニットに同時に供給された複数のプリミティブリストの内の2つ以上の先頭に存在する場合も)、例えばまた好ましくは、当該同じプリミティブがレンダリングのために2度にわたって送出されることを回避することができるようになることが理解され得る(例えばこれをプリミティブ選択ユニットに理解させることもできる)。
【０１５５】
このような様式のプリミティブの繰返しの認識は、所望される任意の適当な様式で実行することができる。例えば、プリミティブ選択ユニットまたは別のユニットが、複数のプリミティブに関する複数のプリミティブのインデックスを使用して(例えばそれらの比較を行って)、当該複数のプリミティブの繰返し(例えばマッチ)があるかどうか確認することもできる。重複または繰返しのあるプリミティブが認識された場合は、システム(例えばプリミティブ選択ユニット)は、一方をレンダリングのために選択し、他方を破棄することが好ましい。
【０１５６】
本発明の特に好ましい一実施形態では、1つまたは複数のプリミティブリストは、グラフィックスプロセッサによって、最も好ましくはプリミティブ選択ユニットによってキャッシュすることができ、またはそこにキャッシュインできることが好ましく、すなわち、それらのプリミティブリストは、より迅速にアクセス可能な当該グラフィックスプロセッサのローカルメモリに記憶することができ、また実際に記憶されることが好ましい。したがって、本発明の装置および方法は、1つまたは複数のプリミティブリストをキャッシュする手段またはステップを含むことが好ましい。かかるキャッシュは、複数のプリミティブリストに関する帯域幅使用率を減少させることができる。
【０１５７】
好ましくはより高いレベルの(より低い解像度の)複数のプリミティブリスト、すなわちシーンの複数の小領域に関する複数のプリミティブリストがキャッシュされる。かかる複数のプリミティブリストをキャッシュすることは、単一の小領域(したがって1回しか使われない)専用の(固有の)複数のプリミティブリストとは異なり、様々な小領域(タイル)を処理するときにそれらのプリミティブリストが再利用され、したがって、それらのプリミティブリストをキャッシュすることによってより効率的なプロセスが達成され得るので有利である。実際、複数のプリミティブリストのキャッシュを円滑にし、したがってプリミティブデータのキャッシュをより効率的に行えるようにすることは、本発明の一利点である。
【０１５８】
上述した複数のプリミティブリストをキャッシュすると共に、必要に応じて他のデータもキャッシュすることができる。実際、特に好ましい一実施形態では、上記の様式で、当該複数のプリミティブリストと共に(またはその代わりに)頂点データ(各頂点)がキャッシュされる。このこともまた、2つ以上の小領域に使用され得る頂点データを使用のためにローカルに記憶(キャッシュ)することができ、当該データが必要とされる度にそれを外部メモリから検索する必要が生じないという利点を有する。
【０１５９】
キャッシュされたデータは、当技術分野で知られているように、同じキャッシュに記憶することも別のキャッシュに記憶することもできる。
【０１６０】
複数のプリミティブリストおよび/または頂点(もしくは他の)データがこのような様式でキャッシュされる場合は、当該キャッシュ内のデータの記憶(および特にその置換)は、例えば単純な先入れ先出しに基づいてではなく、当該データに適用される「複数組の小領域」階層内のレベルに基づいて(例えばそれが単一の小領域だけに関して記憶されるのか、それとも1組の小領域に関して記憶されるのかに応じて(また、例えば当該組内に小領域がいくつあるかに応じて))行われることが好ましい。これにより、複数の小領域に必要とされ得るキャッシュデータを優先的に保持することが容易となる。データが記憶されるレベルが高くなるほど、それ自体の置換の優先順位は低くなることが好ましい。したがって、「レイヤ」(レベル)階層は、キャッシュ内のデータの置換に優先順位を付けるために使用されることが好ましい。
【０１６１】
特に好ましい一実施形態では、個々の小領域のレンダリング順序が選択され、好ましくは任意のキャッシュデータの効率的な使用が促進されるように予め定められる。当該レンダリング順序は、あるレイヤ内の所与の1組の小領域が完全にレンダリングされた後に、当該レイヤ内の次の1組の小領域がレンダリングされるような形で複数の小領域がレンダリングされるように選択されることが最も好ましい。このことは、所与の1組の小領域に関するすべてのデータが使用され、次いでそれらが安全に破棄された後に、次の1組の小領域のレンダリングが開始され得ることを保証するのに役立つ。
【０１６２】
言い換えれば、最初の1組の小領域内のすべての小領域がレンダリングされるまで、所与のレイヤ内の異なる複数組の小領域間の境界線同士が交差しないことが保証される順序で、個々の小領域をレンダリングすることが好ましい。このことは、1組の小領域に関してそれぞれ記憶されているデータをキャッシュするのに要する時間が最短となることを保証するのに役立つ。
【０１６３】
上述のように、隣り合う各レイヤがそれぞれの複数組の小領域内に1×1、2×2、4×4、8×8などの小領域を有するような構成に関しては、当該複数の小領域をモルトン順序(Morton order)でレンダリングすることによって達成することができる。
【０１６４】
本発明は、個々の小領域または複数組の2つ以上の小領域に関する複数のプリミティブリストを記憶することに関して説明してきたが、それに加えてまたはその代わりに、他のグラフィックスデータを同様の基準で記憶することも可能である。例を挙げると、他の形態のグラフィックスデータとしては、例えば切り取り用パラメータ、プリミティブタイプパラメータ(例えばプリミティブが点、線、三角形、または四角形のどれに該当するか示すもの)、1つの小領域(タイル)単位または1群の小領域単位で指定され得る小領域(タイル)コマンド(例えば最終タイルコマンド)などのレンダリングやセッティングといったグラフィックスが存在する。
【０１６５】
本出願人らは、これらのタイプのデータを、1つの小領域単位でまたは複数の小領域単位で共通する同様の様式で、上述の複数のプリミティブリストに(選択的に)記憶できることも同様に有利であり得ることを認識している。
【０１６６】
例えば、各小領域およびあらゆる小領域に関して特定のパラメータまたはコマンドが使用される場合は、シーン全体に共通して使用されることになる単一のプリミティブ(または他の)リストにそれを記憶することが好ましいこともある。一方、1つまたはごく少数の小領域に必要とされるコマンドまたはデータに関しては、1つ(または複数)の小領域だけに関して、例えば当該関連する1つ(または複数)の小領域だけを包含する階層内のより低いレベルでそれを記憶することが好ましいこともある。
【０１６７】
したがって、本発明のシステムは好ましいことに、複数のプリミティブリストの作成に関する上述の様式で、(例えばまた好ましくは、シーンの個々の小領域および複数組の小領域に関する別々の「リスト」に)プリミティブ以外のデータおよびコマンドを記憶することができる。これらのコマンドおよびデータは先に例示したように、複数の小領域および複数組の小領域階層において、それらが使用されまたは必要とされるレベルで記憶される。
【０１６８】
上記の諸構成では、グラフィックスデータ(例えばコマンドおよびセッティング)は、例えば複数の小領域および複数組の小領域に関する別々の「コマンド」リストなどに記憶することもできる。しかしながら、特に好ましい一実施形態では、このグラフィックスデータは、複数の小領域および複数組の小領域に関する複数のプリミティブリストに含められ、すなわち、各プリミティブリストがプリミティブリストと共に、当該複数のプリミティブのリストに散在するコマンド、セッティング、および/またはパラメータなど他のグラフィックスデータも含むことができ、またそのように含むようになることが好ましい。
【０１６９】
特に好ましい一実施形態では、上記の他のグラフィックスデータは、上記の複数のプリミティブと同様の様式でインデキシングされ、また、それによって当該データが正しい順序で使用されることが可能となる。また、上記のデータに関して別のインデックスを使用することもできるが、当該複数のプリミティブのインデキシングの範囲内でインデキシングされることが最も好ましく、すなわち、例えばシステムが(例えば最初の3つのプリミティブがレンダリングされた後にコマンドが実行される場合は)プリミティブ1、2、3をレンダリングし、次いでコマンド4を実行し、次いでプリミティブ5、6をレンダリングし、以下同様の処理を行うようにすることが最も好ましい。
【０１７０】
このような様式でデータを記憶すること自体、新規性および利点を有し得るものと信じる。
【０１７１】
したがって、本発明の第23の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする装置であって、
前記シーンの単一の小領域に関して、前記小領域をレンダリングするときに使用される1組のデータおよび/またはコマンドを作成する手段と、
前記シーンの2つ以上の小領域を含む1組の小領域に関して、前記1組の小領域の前記複数の小領域をレンダリングするときに使用される1組のデータおよび/またはコマンドを作成する手段と
を備える装置が提供される。
【０１７２】
本発明の第24の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする方法であって、
前記シーンの単一の小領域に関して、前記小領域をレンダリングするときに使用される1組のデータおよび/またはコマンドを作成するステップと、
前記シーンの2つ以上の小領域を含む1組の小領域に関して、前記1組の小領域の前記複数の小領域をレンダリングするときに使用される1組のデータおよび/またはコマンドを作成するステップと
を含む方法が提供される。
【０１７３】
本発明の第25の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする装置であって、
少なくとも前記シーンの単一の小領域をレンダリングするのに使用される1組のデータおよび/またはコマンドに、または前記シーンの2つ以上の小領域をレンダリングするのに使用される1組のデータおよび/またはコマンドに、レンダリングに使用されるデータまたはコマンドを含める手段
を備える装置が提供される。
【０１７４】
本発明の第26の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする方法であって、
少なくとも前記シーンの単一の小領域をレンダリングするのに使用される1組のデータおよび/またはコマンドに、または前記シーンの2つ以上の小領域をレンダリングするのに使用される1組のデータおよび/またはコマンドに、レンダリングに使用されるデータまたはコマンドを選択的に含めるステップ
を含む方法が提供される。
【０１７５】
本発明の第27の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする装置であって、
単一の小領域専用であることも前記シーンの2つ以上の小領域に使用されることもあるレンダリングに使用される1組または複数組のデータおよび/またはコマンドに、レンダリングに使用されるデータまたはコマンドを含める手段
を備える装置が提供される。
【０１７６】
本発明の第28の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする方法であって、
単一の小領域専用であることも前記シーンの2つ以上の小領域に使用されることもあるレンダリングに使用される1組または複数組のデータおよび/またはコマンドに、レンダリングに使用されるデータまたはコマンドを含めるステップ
を含む方法が提供される。
【０１７７】
本発明の第29の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする装置であって、
レンダリングに使用され、前記レンダリング対象シーンの単一の小領域に対応する1組のデータおよび/またはコマンドに、かつ/またはレンダリングに使用され、前記レンダリング対象シーンの2つ以上の小領域に対応する1組のデータおよび/またはコマンドに、レンダリングのためのデータおよび/またはコマンドを選択的に含める手段
を備える装置が提供される。
【０１７８】
本発明の第30の態様によれば、レンダリング対象シーンがレンダリング用の複数の小領域に分割されるグラフィックス処理システムにおいて、レンダリングに使用されるデータおよび/またはコマンドをソートする方法であって、
レンダリングに使用され、前記レンダリング対象シーンの単一の小領域に対応する1組のデータおよび/またはコマンドに、かつ/またはレンダリングに使用され、前記レンダリング対象シーンの2つ以上の小領域に対応する1組のデータおよび/またはコマンドに、レンダリングに使用されるデータおよび/またはコマンドを選択的に含めるステップ
を含む方法が提供される。
【０１７９】
本発明の第31の態様によれば、1つのストリームのグラフィックスデータ要素を処理する方法であって、
前記1つのストリームのグラフィックスデータ要素に由来する複数のデータ要素を並列動作中の複数の処理ユニットにわたって分散させるステップと、
分散された前記複数のデータ要素を単一ストリームのグラフィックスデータ要素に再結合するステップと
を含む方法が提供される。
【０１８０】
本発明の第32の態様によれば、1つのストリームのグラフィックスデータ要素を処理する装置であって、
前記1つのストリームのグラフィックスデータ要素に由来する複数のデータ要素を並列動作中の複数の処理ユニットにわたって分散させる手段と、
分散された前記複数のデータ要素を単一ストリームのグラフィックスデータ要素に再結合する手段と
を備える装置が提供される。
【０１８１】
本発明の第33の態様によれば、1つのストリームのグラフィックスデータ要素を処理する方法であって、
前記1つのストリームのグラフィックスデータ要素内の複数のデータ要素にインデックスを割り付けるステップと、
前記1つのストリームのグラフィックスデータ要素に由来する複数のデータ要素を並列動作中の複数の処理ユニットにわたって分散させるステップと、
前記複数のデータ要素が並列動作中の前記複数の処理ユニットによって処理された後に、前記複数のデータ要素に割り付けられた前記インデックスを使用して前記複数のデータ要素をソートするステップと
を含む方法が提供される。
【０１８２】
本発明の第34の態様によれば、1つのストリームのグラフィックスデータ要素を処理する装置であって、
前記1つのストリームのグラフィックスデータ要素内の複数のデータ要素にインデックスを割り付ける手段と、
前記1つのストリームのグラフィックスデータ要素に由来する複数のデータ要素を並列動作中の複数の処理ユニットにわたって分散させる手段と、
前記複数のデータ要素が並列動作中の前記複数の処理ユニットによって処理された後に、前記複数のデータ要素に割り付けられた前記インデックスを使用して前記複数のデータ要素をソートする手段と
を備える装置が提供される。
【０１８３】
本発明の第35の態様によれば、1つのストリームのグラフィックスデータ要素を処理する方法であって、
前記1つのストリームのグラフィックスデータ要素内の複数のデータ要素にインデックスを割り付けるステップと、
前記1つのストリームのグラフィックスデータ要素に由来する複数のデータ要素を並列動作中の複数の処理ユニットにわたって分散させるステップと、
前記1つのストリームのグラフィックスデータ要素に由来する複数のデータ要素を処理するステップと、
前記複数のデータ要素に割り付けられた前記インデックスを使用して前記複数のデータ要素が処理される順序を制御するステップと
を含む方法が提供される。
【０１８４】
本発明の第36の態様によれば、1つのストリームのグラフィックスを処理するグラフィックスデータ要素用装置であって、
前記1つのストリームのグラフィックスデータ要素内の複数のデータ要素にインデックスを割り付ける手段と、
前記1つのストリームのグラフィックスデータ要素に由来する複数のデータ要素を並列動作中の複数の処理ユニットにわたって分散させる手段と、
前記1つのストリームのグラフィックスデータ要素に由来する複数のデータ要素を処理する手段と、
前記複数のデータ要素に割り付けられた前記インデックスを使用して前記複数のデータ要素が処理される順序を制御する手段と
を備える装置が提供される。
【０１８５】
当業者には理解されるように、本発明の上記の諸態様は、本明細書に記載される本発明のすべての好ましい特徴および任意選択の特徴の内のいずれか1つまたは複数を含むことができ、またそれらを実際に含むことが好ましい。したがって、例えば1つの小領域または1組の2つ以上の小領域に関して記憶されるデータおよび/またはコマンドは、当該1つの小領域または1組の小領域に関するレンダリング対象プリミティブリスト、および/または当該1つの小領域または1組の小領域に関して使用される他のデータまたはコマンドを含むことが好ましい。好ましい一実施形態では、上記のデータおよび/またはコマンドは、レンダリング対象プリミティブリストと、1つの小領域または1組の小領域に関して使用される他のデータおよびコマンドの両方を含む。同様に、上記のグラフィックスデータ要素は、グラフィックスプリミティブおよび/または他のグラフィックスデータおよび/またはコマンドを含むことが好ましい。
【０１８６】
ここで、「プリミティブ」という用語は主に、当技術分野で知られているように、三角形、格子、線、点など「単純な」ポリゴンの形をとるグラフィックスプリミティブを指すことが意図されており(また、好ましい一実施形態では三角形、格子、線、点など「単純な」ポリゴンの形をとるグラフィックスプリミティブを実際に指し)、本発明は、シーン内のより大きいオブジェクトおよび/または複数群のより小さいポリゴン(1群の隣り合う三角形など)を表現することが意図されたグラフィックス構成要素またはプリミティブなど、より大きいグラフィックスオブジェクトまたはプリミティブにも適用可能であることにも留意すべきである。例えば、1群の個々のポリゴンを単一のグラフィックオブジェクトまたはプリミティブとして処理し、ソートすることが望まれることもある。かかるより大きい「複雑な」プリミティブ(「メタプリミティブ」)は、複数の小領域および複数組の複数の小領域に関して、本発明の様式と同様にリスト化することができる。したがって、文脈上異なる解釈を要する場合を除き、本明細書における「プリミティブ」などの用語はこのように解釈されるべきである。
【０１８７】
本発明の様々な機能は、所望される任意の適当な様式で実行することができる。特に好ましい一実施形態では、それらは、表示デバイス用のフレームバッファに書き込まれるグラフィックスデータを生成し出力する、単一のグラフィックス処理プラットフォーム上で実行される。これらの機能は必要に応じて、ハードウェアまたはソフトウェアの形で実装することができる。好ましい一実施形態では、当該システムは、ハードウェア要素(例えばASIC)として実装される。したがって、別の態様では、本発明は、本明細書に記載される本発明の諸態様の内のいずれか1つまたは複数における装置を含みまたはその方法に従って操作されるハードウェア要素を備える。
【０１８８】
ここで、当業者には理解されるように、本発明の様々な機能などは、所与のプロセッサ上で並列的に複製および/または実行され得ることに留意すべきである。例えば、並列的に動作する複数のプリミティブ選択ユニットを存在させてもよい。
【０１８９】
本発明は、任意の形態または構成のグラフィックスプロセッサ、および「パイプライン」構成を有するレンダラ(この場合には、当該レンダラはレンダリングパイプラインの形をとることになる)などのレンダラに適用可能である。
【０１９０】
上記から理解されるように、本発明は特に、排他的なものではないが、3Dグラフィックスプロセッサおよび処理デバイスに適用可能であり、したがって、本明細書に記載される本発明の諸態様の内のいずれか1つまたは複数における装置を含みまたはその方法に従って操作される3Dグラフィックスプロセッサおよび3Dグラフィックス処理プラットフォームに拡張される。かかる3Dグラフィックスプロセッサは、上述の個々の機能を実行するのに必要な何らかのハードウェアがあれば、3Dグラフィックスプロセッサが含む通常の機能ユニットなどの内のいずれか1つまたは複数を含むことができ、あるいはそれらをすべて含むこともできる。
【０１９１】
また、本発明に関して説明される諸態様および諸実施形態は必要に応じて、本明細書に記載の好ましい諸特徴および任意選択の諸特徴の内の1つまたは複数を含むことも、それらをすべて含むこともできることが当業者には理解されるであろう。
【０１９２】
本発明による方法は、少なくとも部分的にはソフトウェア、例えばコンピュータプログラムを使用して実施することができる。したがって、さらなる諸態様を検討すれば、本発明は、それ自体がデータ処理手段上にインストールされたときに、本明細書に記載の各方法を実行するように特に適合されたコンピュータソフトウェアと、前記プログラム要素がデータ処理手段上で実行されたときに、本明細書に記載の各方法を実施するコンピュータソフトウェアコード部分を備えるコンピュータプログラム要素と、前記プログラムがデータ処理システム上で実行されたときに、本明細書に記載の方法に関するすべてのステップを実施するように適合されたコード手段を備えるコンピュータプログラムとを提供することが理解されるであろう。本発明はまた、データ処理手段を備えるグラフィックスプロセッサ、レンダラ、またはマイクロプロセッサシステムを操作するのに使用されたときに、前記データ処理手段の前記プロセッサ、レンダラ、またはシステムが本発明の各方法に関する各ステップを実行するようになるソフトウェアを備える、コンピュータソフトウェアキャリアにも拡張される。かかるコンピュータソフトウェアキャリアは、ROMチップ、CD-ROM、ディスクなどの物理記憶媒体であっても、配線上の電子信号、光信号、衛星などとの間の無線信号などの信号であってもよい。
【０１９３】
さらに、本発明の各方法に関する必ずしもすべてのステップがコンピュータソフトウェアによって実行される必要はなく、したがって、本発明のさらに広範な一態様は、コンピュータソフトウェアと、本明細書に詳しく記載される各方法の各ステップの内の少なくとも1つを実行するためにコンピュータソフトウェアキャリア上にインストールされるソフトウェアとを提供することが理解されるであろう。
【０１９４】
したがって、本発明は、コンピュータシステムと共に使用されるコンピュータプログラム製品として適切に実施することができる。かかる一実装形態は、例えばディスケット、CD-ROM、ROM、ハードディスクなどのコンピュータ可読媒体などの有形の媒体上などに固定された、あるいは、それだけに限らないが光やアナログ通信回線を含めた有形の媒体を使用して、またはそれだけに限らないがマイクロ波、赤外線、他の伝送技法を含めた無形の無線使用技法を使用して、モデムまたは他のインターフェースデバイスを介してコンピュータシステムに送信可能な、一連のコンピュータ可読命令を含むことができる。当該一連のコンピュータ可読命令は、本明細書の前段に記載される機能の全部または一部を実施する。
【０１９５】
かかるコンピュータ可読命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムと共に使用されるいくつかのプログラミング言語で作成され得ることが当業者には理解されるであろう。さらに、かかる命令は、それだけに限らないが、半導体、磁気または光を含めた現在または将来の任意のメモリ技術を使用して記憶することができ、また、それだけに限らないが、光、赤外線またはマイクロ波を含めた現在または将来の任意の通信技法を使用して伝送することができる。かかるコンピュータプログラム製品は、印刷文書または電子文書が添付された取り外し可能媒体、例えばシステムROMまたは固定ディスク上にコンピュータシステムをプリロードされた、例えばシュリンクラップソフトウェアとして配布することも、ネットワーク、例えばインターネットやワールドワイドウェブなどを介してサーバまたは電子掲示板から配布することもできることが企図されている。
【０１９６】
以下では単なる例示のために、添付の図面を参照しながら本発明のいくつかの好ましい実施形態について説明する。
【発明を実施するための最良の形態】
【０１９７】
ここで図2、3、および4を参照して、本発明の好ましい一実施形態について説明する。
【０１９８】
図2は、本発明に従って操作され得るグラフィックスプロセッサ20を概略的に示している。グラフィックスプロセッサ20は、ジオメトリプロセッサ21と、レンダラ22とを含んでおり、これらはいずれもメモリ23にアクセスすることができる。メモリ23は、当業者に知られているように、ジオメトリプロセッサ21およびレンダラ22を伴う「オンチップ」とすることも、ジオメトリプロセッサ21およびレンダラ22によってアクセスされ得る外部メモリとすることもできる。
【０１９９】
メモリ23はとりわけ、図2に示されるように、1組の生ジオメトリデータ24(例えば、当技術分野で知られているように、グラフィックスプロセッサのドライバから、またはグラフィックスプロセッサ20のホストシステム(マイクロプロセッサ)上で走っているAPIから供給されるもの)と、1組の変換済みジオメトリデータ25(やはり当技術分野で知られているように、生ジオメトリ24に対して実行された様々な変換および処理操作の結果得られるもの)と、1組のプリミティブリスト26とを記憶する。プリミティブリスト26は、本発明に従って作成される。このプロセスについては以下でより詳細に説明する。
【０２００】
変換済みジオメトリデータ25は、当技術分野で知られているように、例えば変換済み頂点(頂点データ)などを含む。
【０２０１】
ジオメトリプロセッサ21はとりわけ、プログラマブル頂点シェーダ27と、プリミティブリスト構築ユニット28とを備える。プログラマブル頂点シェーダ27は、メモリ23に記憶されている生ジオメトリデータ24をそれ自体の入力として解釈し、当該データを処理して、フレーム内の2D配置を表示する準備が整った形のジオメトリデータを含む変換済みジオメトリデータ25を提供する(その後これをメモリ23に記憶する)。プログラマブル頂点シェーダ27およびそれ自体の実行するプロセスは、当技術分野で知られているように、任意の適当な形をとることができ、所望される任意の適当なプロセスとすることができる。
【０２０２】
プリミティブリスト構築ユニット28は、複数のプリミティブを複数のプリミティブリストに割り付ける本発明のプロセスを実行し、当該複数のプリミティブリストはその後、レンダリング対象シーンの各小領域に関してレンダリングすべき複数のプリミティブをレンダラ22が特定するのに使用される。これを行うために、プリミティブリスト構築ユニット28は、プログラマブル頂点シェーダ27からの変換および処理済みの頂点データ(すなわち、シーン内の複数のプリミティブの位置)をそれ自体の入力として解釈し、当該データを使用してプリミティブ(タイル)リストを構築し、それらのリストをプリミティブリスト26としてメモリ23に記憶する。このプロセスについては以下でより詳細に説明する。
【０２０３】
レンダラ22は、プリミティブ選択ユニット29と、プリミティブリストキャッシュ30と、頂点選択ユニット31と、頂点データキャッシュ32と、ラスタ化ユニット33と、レンダリングユニット34と、タイルバッファ35とを含む。
【０２０４】
本実施形態では、ラスタ化ユニット33、レンダリングユニット34、タイルバッファ35は、かかる各ユニットが既存のグラフィックス処理システムで動作するのと同じ様式で動作する。したがって、ラスタ化ユニット33は、あるプリミティブおよびその各頂点をそれ自体の入力として解釈し、当該プリミティブをフラグメントにラスタ化し、それらのフラグメントをレンダリングユニット34に供給する。次いで、レンダリングユニット34は、当該フラグメント上のテクスチャマッピング、混合、シェーディングなどいくつかのレンダリングプロセスを実施し、レンダリング済みのフラグメントデータを生成し、これを表示用のフレームバッファへの供給のためにタイルバッファ35に記憶する。
【０２０５】
レンダラ22のプリミティブ選択ユニット29は、次にレンダリングすべきプリミティブを判定する。プリミティブ選択ユニット29はこれを、メモリ23に記憶されているプリミティブリスト26を考慮に入れ、複数のリストの内の1つから次にレンダリングすべきプリミティブを選択することによって行う。この選択プロセスについても以下でより詳細に説明する。
【０２０６】
プリミティブ選択ユニット29は、プリミティブリストキャッシュ30に1つまたは複数のプリミティブリストを収容することもできる。
【０２０７】
プリミティブ選択ユニット29は、次にレンダリングするために選択したプリミティブを頂点選択ユニット31に供給する。これに応答し、頂点選択ユニット31は、メモリ23内に記憶された変換済みジオメトリデータ25から該当するプリミティブに関する適切な変換済み頂点データを検索し、次いで当該プリミティブ(すなわち、変換済み頂点データ)を処理のためにラスタ化ユニット33に供給する。頂点選択ユニット31は必要に応じて、メモリ23から検索した頂点データを頂点データキャッシュ32にキャッシュすることもできる。
【０２０８】
次に、図3、4、および5を参照して、プリミティブリスト構築ユニット28の動作およびプリミティブリスト26の作成についてより詳細に説明する。
【０２０９】
上述したように、本発明は、レンダリング対象シーンが複数の小領域またはタイルに分割されるレンダリングシステムに適用可能である。さらに、シーンを個々の小領域に分割することに加えて、それらの小領域を複数組の2つ以上の小領域にまとめて分類することができ、それによって、単一の小領域よりも大きい当該シーンエリアの部分を事実上覆うことができる。さらに、個々の各小領域を基に、またシステムがサポートしている各組の小領域に関して、別々の（異なる）プリミティブリスト(すなわち、レンダリング対象プリミティブリスト)を作成することができ、また実際に作成される。
【０２１０】
図4および5は、本発明と共に使用され得るレンダリング対象シーンの複数の小領域および複数組の小領域の一構成に関する好ましい一実施形態を示している。
【０２１１】
図4に示されるように、レンダリング対象シーン50は、複数の個々の小領域またはタイル51に分割される。(ここで、図4はシーン50が分割されるすべての個々の小領域51を示しているわけではなく、それらの小領域のほんの一部しか示していないことに留意すべきである。これは、図面を分かりやすくするためである。ただし、全体のシーン50は、実際には等しい複数の小領域51に分割されている。)
【０２１２】
個々の小領域51も、全体のシーンエリアの様々な区画を有する様々なレイヤが提供されるように、事実上シーン50の全域に被せられる様々な群の複数組の小領域に分類される。したがって、図4に示されるように、2×2の小領域52をそれぞれ含む16組の小領域52からなる「レイヤ」が存在する。次いで、4組の4×4の小領域53を含むより低い解像度の別のレイヤも存在する。最後に、全体のシーンエリアを包含する、1組の8×8の小領域54が存在する。
【０２１３】
図4から分かるように、この構成の効果は、複数のシーンエリア区画からなる階層が累進的に増加しながらシーン50がオーバーレイされることである。この様子は図5に概略的に示されている。ここには、全体のシーンエリア50を包含する1組の8×8の小領域54を含む最上位レイヤが存在する。次いで、4組の4×4の小領域53からなる群が存在し、次いで、16組の2×2の小領域52からなる群が存在し、最後に、64個の単一の小領域51を含むレイヤが存在する。図5は例示のために、階層内の各レイヤ(レベル)でプリミティブ80がそこに入るものと見なされる複数の小領域または複数組の小領域も太字で示している。
【０２１４】
図4は例示のために、レンダリング対象であり、したがってプリミティブリストに割り付ける必要が生じる、3つのプリミティブ55、56、および57も示している。
【０２１５】
(実際にはやはり、当業者には理解されるように、所与のレンダリング対象シーンは典型的には、図4に示される3つのプリミティブよりも多くのプリミティブを含むことになる。しかしながら、図4には、図面を簡略化して分かりやすくするために3つのプリミティブだけを示してある。)
【０２１６】
上述のように、また当技術分野で知られているように、レンダリング対象シーン50がレンダリングのためにより小さい複数の小領域51に分割されるシステムでは、当該システムは、各小領域に関してレンダリングすべきプリミティブを特定できることが必要である。このことは、当技術分野で知られているように、当該小領域に関してレンダリングすべき複数のプリミティブを各小領域毎に特定する、いわゆるプリミティブリストまたはタイルリストを提供することによって行われる。
【０２１７】
上述のように、本実施形態は、シーンが分割される個々の小領域に関して複数のプリミティブリストを作成することを可能とすると共に、複数組の2つ以上の小領域に関する個々のプリミティブリスト、すなわち複数の小領域に共通して使用されることになる複数のプリミティブリストも作成するので、既存のプリミティブリスト作成プロセスよりも優れた改善点を提供する。
【０２１８】
本実施形態では、プリミティブリスト構築ユニット28は、個々の各小領域51に関するプリミティブリストと、各組の2×2の小領域52に関する別のプリミティブリストと、各組の4×4の小領域53に関する別のプリミティブリストと、全体のシーン50を覆う1組の8×8の小領域54に関する別のプリミティブリストとを作成する。これを行うために、プリミティブリスト構築ユニット28は、各プリミティブを順番に解釈し、当該プリミティブの位置を判定し、当該プリミティブの位置を(シーンエリアを覆う)複数の小領域51の各位置、ならびに(シーンエリアを覆う)複数組の小領域52、53、および54の各位置と比較し、それに従って、当該プリミティブをそれぞれ複数の小領域および複数組の小領域に関する複数のプリミティブリスト26に割り付ける。
【０２１９】
プリミティブリスト構築ユニット28は、本実施形態では正確ビニング技法を使用して各プリミティブの位置を判定し、それに従って、所与のプリミティブがその内に入りまたはそれを横切る複数の小領域および複数組の小領域を判定する。したがって、当技術分野で知られているように、プリミティブリスト構築ユニット28は、所与のプリミティブに関してプログラマブル頂点シェーダ27によって判定され、それ自体に供給された変換済み頂点位置を使用して、当該プリミティブがその内に入る(それを横切る)複数の小領域および複数組の小領域を特定する。このプロセスは、上記の目的を果たす当技術分野の既知の技法などを使用することにより、所望される任意の適当な様式で実行することができる。
【０２２０】
当業者には理解されるように、必要に応じて、シーン内の複数のプリミティブについて、および複数の小領域または複数組の小領域に関するプリミティブについて判定および位置決めする他の技法が使用されてもよい。例えば、当技術分野で知られているように、バウンディングボックス技法が同様の形で使用されてもよい。(バウンディングボックス技法が使用される場合は、バウンディングボックスが例えばプリミティブリスト構築ユニットによってプリミティブのリスト化プロセスの一環として生成されることが好ましいが、いうまでもなく、他の構成も可能なはずである。)
【０２２１】
以下では図3を参照して、プリミティブリスト構築ユニットが複数の小領域および複数組の小領域に関して所与のプリミティブをプリミティブリスト26に割り付けるのに使用する実際のプロセスについて説明する。
【０２２２】
図3に示されるように、プリミティブリスト構築ユニット28は、該当するプリミティブに関してプログラマブル頂点シェーダ27によって変換されたプリミティブ位置データをそれ自体の入力として解釈する(ステップS60)。
【０２２３】
次いで、シーンが分割される異なる各レベル(レイヤ)で、複数の小領域および複数組の小領域に対するプリミティブの位置を検査する。この検査は、複数組の小領域階層における最上位レベルの1つ下のレベルから開始する(ステップS61)。したがって、この場合では、図4に示される複数組の4×4の小領域53のレベルでプリミティブを検査することになる。
【０２２４】
次いで、プリミティブリスト構築ユニット28は、提供されたプリミティブ位置を使用して、複数組の小領域階層内の現在レベルで当該プリミティブをリスト化する必要が生じる複数組の小領域がいくつあるか判定し(ステップS62)、判定の結果得られた複数組の小領域の数を、本実施形態では4にセットされる複数組の小領域の閾値数と比較する(ステップS63)。
【０２２５】
この段階で、複数組の小領域階層内の現在レベルで当該プリミティブをリスト化する必要が生じる複数組の小領域の数が当該閾値数(すなわちこの場合は4)を下回ることが判定された場合は、プリミティブリスト構築ユニット28は、複数組の小領域階層内の最下位レベル(すなわち単一の小領域レベル)に達しているかどうかチェックし(ステップS64)、そうでない場合は、当該階層内の1つ下のレベルに進み(ステップS65)、当該レベルで当該プリミティブをリスト化する必要が生じる複数組の小領域がいくつあるか判定し(ステップS62)、以下同様に、当該階層内の所与のレベルで必要となる複数組の小領域の数が当該閾値数を超えることが判定され、または、ステップS64でともかく当該階層の最下位レベル、すなわち単一の小領域レベルに到達したことが判定されるようなときがくるまで、引き続き判定を続ける。
【０２２６】
当該階層内の所与のレベルで閾値数を超える数の複数組の小領域に所与のプリミティブをリスト化する必要が生じることが判定された場合には、システムは、当該階層内の1つ上のレベルに進む(ステップS66)。次いで、プリミティブリスト構築ユニット28は、当該階層内の1つ上のレベルでなら当該プリミティブを含めるプリミティブリストが1つだけで済むという特別の場合が満足されるかどうか検査する(ステップS67)。この特別の場合が満足された場合は、プリミティブリスト構築ユニット28は、当該階層内の1つ高いレベルに進み(ステップS68)、次いで当該レベルのプリミティブリストに、すなわち当該プリミティブを含めるプリミティブリストが1つだけで済むレベルに関するプリミティブリストに、当該プリミティブをリスト化する(ステップS69)。
【０２２７】
一方、ステップS67で、1つ上のレベルでもなお当該プリミティブを2つ以上のプリミティブリストに含める必要が生じることが判定された場合には、当該プリミティブは単純に、プリミティブリストの閾値数を超えたレベルのすぐ上のレベルでリスト化される(ステップS69)。
【０２２８】
ステップS64で、プリミティブリストの閾値数には到達していないにせよ、ともかく当該階層の最下位レベルに到達したことが判定された場合には、当該プリミティブは直ちに、当該最下位レベルでリスト化される(ステップS69)。
【０２２９】
このプロセスは後に、各プリミティブについて順番に繰り返される。
【０２３０】
この構成はとりわけ、指定の閾値数を超える数のプリミティブリストに所与の任意のプリミティブを含める(リスト化する)必要が解消されることを保証する。この構成はさらに、あるプリミティブを閾値数のプリミティブリストに含める必要が生じたレベルのすぐ上のレベルでなら当該プリミティブを含めるプリミティブリストが1つだけで済むという特別の場合に、当該プリミティブがそのように当該単一のリストに含められることも保証する(これにより、当該プリミティブを複数のプリミティブリストに一旦記憶した後も、それ自体をレンダリングしなければならない複数の小領域に関して、当該プリミティブを依然として効率的に処理することが可能となる)。
【０２３１】
言い換えれば、プリミティブリスト構築ユニット28は、閾値数を超える数の複数のプリミティブリストにあるプリミティブを含める必要が生じたことを発見するようなときがくるまで、複数の小領域階層内の2番目に高いレベルを始点として、当該複数組の小領域階層を繰返し降りていくように作用し、次いで、1つ上のレベルに戻り、2つ上のレベルまで上がれば当該プリミティブを単一のリストにだけ含めることが可能となる特別の場合を除き、当該プリミティブを当該レベルでリスト化することになる。この構成は、シーンの複数の小領域をレンダリングするときに使用される複数のプリミティブリストを作成することに関して特に効率的な手法を提供することが本出願人らによって発見された。
【０２３２】
以下では例示のために、図4に示される複数のプリミティブに関するこのプロセスの操作について説明する。この構成では、シーン内の複数のプリミティブの判定および位置決めに正確ビニング技法が使用されるものと仮定するが、上述したように、バウンディングボックスの使用など他の技法も必要に応じて可能なはずである。この例では、プリミティブをリスト化すべきレベルを判定するためのプリミティブリストの閾値数は、4であると仮定する(いうまでもなく、異なる閾値数も必要に応じて可能なはずである)。
【０２３３】
最初に、図4に示されるプリミティブ55を参照すると、プリミティブリスト構築ユニット28はまず、プリミティブ55をリスト化する必要が生じる1組の4×4の小領域53がいくつあるか判定する。
【０２３４】
この場合では、プリミティブリスト構築ユニット28は、かかる2組の4×4の小領域53にプリミティブ55をリスト化する必要が生じると判定する。
【０２３５】
プリミティブリストの閾値数である4は超えていないので、次いでプリミティブリスト構築ユニット28は、当該階層内の1つ下のレベル、すなわち複数組の2×2の小領域52のレベルに進む。この場合では、プリミティブリスト構築ユニットはやはり、かかる2組の2×2の小領域52のプリミティブリストにプリミティブ55をリスト化する必要が生じると判定し、ここでもプリミティブリストの閾値数である4は超えていない。
【０２３６】
したがって、プリミティブリスト構築ユニット28は、当該階層内の1つ下のレベルである単一の小領域51のレベルに進む。この場合では、プリミティブリスト構築ユニット28は、5つの単一の小領域プリミティブリストにプリミティブ55を含める必要が生じると判定し、ここでリストの閾値数である4を超える。したがって、プリミティブリスト構築ユニット28はこのように判定すると、1つ上のレベルである複数組の2×2の小領域52に戻り、プリミティブ55を当該レベルにリスト化し、すなわち、該当する2組の2×2の小領域52のそれぞれに関するプリミティブリストにプリミティブ55を含める。この場合では、プリミティブリスト構築ユニット28は、特別な場合の有無を検査したときに、プリミティブ55がリスト化されようとしているレベルでは閾値数のプリミティブリストにこれを含められず、したがって、先に示した特別の場合には該当しないと判定する。
【０２３７】
次に、プリミティブ56を参照すると、プリミティブリスト構築ユニット28はここでもまず、1組の4×4の小領域53のレベルにあるプリミティブを検査し、したがって、かかる1組の小領域のプリミティブリストに当該プリミティブ56をリスト化する必要が生じると判定する。
【０２３８】
したがって、プリミティブリスト構築ユニット28は、1つ下のレベルである複数組の2×2の小領域52に進むが、ここでもやはり、当該レベルではかかる1組の2×2の小領域のリストにプリミティブ56を含める必要が生じると判定する。
【０２３９】
したがって、プリミティブリスト構築ユニット28は、最後の単一の複数組の小領域51レベルに進み、当該レベルでは4つの単一の小領域51に関する複数のプリミティブリストにプリミティブ56をリスト化する必要が生じると判定する。
【０２４０】
次いで、当該プリミティブリスト構築ユニットは、プリミティブ56が上記で指定した特別の場合を満足するかどうか検査する。
【０２４１】
この場合では、単一の小領域51のレベルにおいて、プリミティブ56は閾値数のプリミティブリスト(すなわち4つのプリミティブリスト)にリスト化される必要が確かにあり、したがって、プリミティブリスト構築ユニット28は、1つ高いレベル、すなわち複数組の2×2の小領域52に進んで、当該階層内の当該レベルでならプリミティブ56を含めるプリミティブリストが1つだけで済むかどうか判定する。プリミティブ56の場合では、この検査は満足されることになり、すなわち複数組の2×2の小領域52のレベルでは、プリミティブ56を含めるプリミティブリストが1つだけで済むことになる。したがって、プリミティブリスト構築ユニット28は、単一の小領域51のレベルではなく、複数組の2×2の小領域52のレベルでプリミティブ56をリスト化する。
【０２４２】
最後に、プリミティブ57を参照すると、プリミティブリスト選択ユニットはここでもまず、複数組の4×4の小領域53にあるプリミティブを検査し、当該レベルではプリミティブ57を含めるプリミティブリストが1つだけで済むと判定する。したがって、当該プリミティブリスト選択ユニットは次いで、複数組の2×2の小領域52にあるプリミティブ57を再度検査し、当該レベルでは4組の2×2の小領域の複数のプリミティブリストにプリミティブ57を含める必要が生じることを発見する。
【０２４３】
したがって、当該プリミティブリスト選択ユニットは次いで、単一の複数組の小領域51レベルにあるプリミティブ57を検査し、ここでもやはり、当該レベルでは4つのプリミティブリストにプリミティブ57を含める必要が生じることを発見する。
【０２４４】
次いで、プリミティブリスト構築ユニット28は、プリミティブ57が上述の特別の場合の基準を満足するかどうか検査する。この場合では、単一の複数組の単一の小領域51のレベルを超えるレベルにあるプリミティブ57は、複数組の2×2の小領域52に関する4つのプリミティブリストに含める必要が生じ、したがって特別の場合は満足されないことになる。したがって、プリミティブリスト構築ユニット28は、単一の小領域51のレベルで、すなわち、プリミティブ57がその内に入る4つの単一の小領域51の複数のプリミティブリストに、プリミティブ57をリスト化する。
【０２４５】
当業者には理解されるように、上記のプロセスは、レンダリング対象シーンが分割される可能性のある各単一の小領域に関して、また各組の2つ以上の小領域に関して完全なタイルリスト26が生成されるまで、プリミティブリスト構築ユニット28によってレンダリング対象シーン内の各プリミティブおよびあらゆるプリミティブに対して順番に繰り返される。
【０２４６】
プリミティブリスト構築ユニット28は、それ自体が当該複数のプリミティブをプログラマブル頂点シェーダ27から受け取った順序で、当該複数のプリミティブをプリミティブリスト26に収容する。このことは、個々の各プリミティブリスト26に関する限り、当該リスト内の複数のプリミティブがそれらの生成された順に並び、この順序は当技術分野で知られているように、典型的には当該複数のプリミティブの所望のレンダリング順序に対応することになることを意味する。(当技術分野で知られているように、複数のプリミティブは、レンダリングのために生成されるときは通常、ホストドライバまたはAPIによって当該複数のプリミティブをレンダリングするのに望ましい順序で生成され、当該順序でグラフィックスプロセッサに供給される。したがって、プリミティブリスト構築ユニット28は、当該複数のプリミティブをそれらの受け取り順に解釈し、個々の各プリミティブリストに関する限り、当該複数のプリミティブを個々のタイルリストにレンダリング順に収容することになる。)
【０２４７】
プリミティブリスト構築ユニット28は、あるプリミティブを該当する1つまたは複数のプリミティブリストに収容すると同時に、プリミティブリスト26内のプリミティブに当該プリミティブのインデックスを割り付け、それらの関連付けも行う。プリミティブリスト構築ユニット28は、この目的を果たすカウンタを有し、当該カウンタの現在のカウントについては単純に、複数のプリミティブがレンダリングされるときに割り付ける。このようにして、各プリミティブには、それ自体がプリミティブリスト構築ユニット28によって受け取られた順序で(すなわち、当該複数のプリミティブがホストドライバやAPIなどから供給された順序、すなわちプリミティブをレンダリングする所望の順序で)(本実施形態では昇順に)番号付けがされる。プリミティブリスト構築ユニット28から各プリミティブに割り付けられたインデックスは、以下でさらに説明するように、プリミティブ選択ユニット29がメモリ23内のプリミティブリスト26から次のレンダリング用プリミティブを特定し選択するのに使用される。
【０２４８】
当技術分野で知られているように、また上記で論じたとおり、グラフィックス処理システムでは通常、当該複数のプリミティブを特定の順序でレンダリングすることが望まれる故に、当該複数のプリミティブがプリミティブリスト26に収容されるときにこのようにインデキシングすることは、望ましい。このことは、上記で論じたように、複数のレンダリング用プリミティブをそこから取得すべきプリミティブリストが1つしか存在しない場合は、当該複数のプリミティブは、それらがグラフィックスプロセッサに供給される順序で、すなわち所望のレンダリング順序でプリミティブリストに含められることになるので、問題にはならない。しかしながら、次のレンダリング用プリミティブを2つ以上のプリミティブリストから選択する必要が生じた場合に、当該複数のプリミティブをレンダリングのための正しい順序で選択することが、好ましい実施形態の場合のようには上手くいかないこともある。上記で論じた様式で当該複数のプリミティブにインデキシングすることは、以下でさらに説明するように、それによって、当該複数のプリミティブがレンダリングのためにグラフィックスプロセッサに供給された順序をプリミティブ選択ユニット29が特定することが可能となり、したがって当該順序で次のプリミティブを選択することが可能となるので、上記の困難を緩和するのに役立つ。
【０２４９】
本実施形態では、当該複数のプリミティブは昇順でインデキシングされているが、必要に応じて他のインデキシング構成を使用することも可能なはずである。例えば、複数のレンダリング対象プリミティブが描画コール単位で構成されている場合は、個々の描画コールに連続的に番号付けした後に、各描画コール内の複数のプリミティブにも連続的に番号付けすることができる。かかる一構成を用いると、例えば異なる描画コールを並列的に処理することが容易となる。
【０２５０】
プリミティブリスト構築ユニット28はまた、それ自体が当該複数のプリミティブに割り付けることができるインデックスが使い果たされたとき、または使い果たされようとしているときを特定するように構成される。特に、プリミティブリスト構築ユニット28は、最後から2番目のインデックス値(すなわち、最後から2番目のカウンタ値)に到達したときを特定することができる。このイベントに応答して、当該プリミティブリスト構築ユニットは、それ以降のリスト化の間に受け取ったすべてのプリミティブを複数組の小領域階層内の同じレベルで(例えば常に単一の小領域のレベルや、常に複数組の2×2の小領域のレベルなどで)割り付ける一構成に切り換わる。これにより、当該複数のプリミティブに順番にインデキシングする可能性がなくなったときは、プリミティブ選択ユニット29に複数組の小領域階層内の同じレベルのプリミティブだけが供給されるが、それでもなお(その後は当該階層内の異なるレベルでプリミティブリスト26から複数のプリミティブを選択する必要がなくなる故に)、プリミティブ選択ユニット29が当該複数のプリミティブを正しい順序で選択できることが保証される。
【０２５１】
インデックスが使い果たされたときに当該複数のプリミティブが上記の構成でリスト化される実際のレベルは、所望の形で選択することができる。このことは、例えば当該複数のプリミティブが当該階層内のより低いレベルで(すなわち、より小さいシーンエリアに関して)リスト化される(より多くのメモリを必要とする)場合は、より多くの数のプリミティブリストを記憶する必要が生じることと、当該複数のプリミティブが当該階層内のより高いレベルで(すなわち、より大きいシーンエリアに関して)リスト化される場合は、レンダリング段階でのプリミティブに関する冗長性の高い不必要な処理を実施する必要が生じることとの間の所望の補償またはトレードオフに基づいて行うこともできる。
【０２５２】
プリミティブリスト構築ユニット28はまた、上記の各状況において、後に「インデックスが使い果たされた」状態に到達したことをシステムが特定することが可能となるように、実質的にリスト化のためにそれ自体が受け取ったあらゆるプリミティブに最も高いインデックス(最も高いカウント数)を割り付ける。
【０２５３】
プリミティブリスト構築ユニット28がプリミティブリスト26の構築を終了させ、それらのリストをメモリ23に記憶すると、プログラマブル頂点シェーダ27は、ジオメトリデータの変換を完了させてレンダリング対象シーンに関するメモリ23内の完全な1組の変換済みジオメトリデータ25を提供し、次いでレンダラ22は、当該シーンをレンダリングする。このプロセスについて以下で説明する。
【０２５４】
上述のように、本実施形態では、レンダリングプロセスは、小領域単位で小領域に対して実施され、すなわち、シーンの各小領域(タイル)51は個別の順番にレンダリングされ、レンダリングされた複数の小領域(タイル)はその後表示のために結合される。
【０２５５】
したがって、まず、レンダラ22にはレンダリング対象の小領域の識別が供給され、レンダラ22はこれを使用してそれ自体の構成を適切に行う。特に、レンダリング対象の小領域に適用される記憶済みのプリミティブリスト26が識別され、すなわち、本実施形態ではレンダリング対象の個々の小領域専用のプリミティブリスト、レンダリング対象の小領域を含む1組の2×2の小領域に関するプリミティブリスト、レンダリング対象の小領域を含む1組の4×4の小領域に関するプリミティブリスト、ならびにレンダリング対象シーン全体を覆う(したがって現在レンダリングされている個々の小領域を覆うことになる)完全な1組の8×8の小領域54に関するプリミティブリストが識別される。本実施形態では、レンダリングされる小領域(タイル)に適用される記憶済みのプリミティブリストは、関連するプリミティブリストを指すポインタを、小領域(タイル)が最初にレンダリングされるときに送られる「新しいタイル」コマンドに含めることによって示される。(いうまでもなく、他の構成も可能なはずである。)
【０２５６】
次いで、レンダラは、該当する小領域(タイル)をレンダリングする。
【０２５７】
このレンダリングプロセスの第1段階は、プリミティブ選択ユニット29がレンダリング対象プリミティブを選択することである。これを行うために、プリミティブ選択ユニット29は、現在レンダリングされている小領域に適用されるものとして判定された記憶済みのプリミティブリスト26を読み出し、すなわち、本実施形態では上述したように、レンダリング対象の個々の小領域専用のプリミティブリスト26、レンダリング対象の小領域を含む1組の2×2の小領域に関するプリミティブリスト、レンダリング対象の小領域を含む1組の4×4の小領域に関するプリミティブリスト、ならびにレンダリング対象シーン全体を覆う完全な1組の8×8の小領域54に関するプリミティブリストを読み出す。これらのプリミティブリストは、プリミティブ選択ユニット29によって先入れ先出し順に読み出され、すなわち、事実上リスト内の1番目のプリミティブが読み出され、次いで当該プリミティブがレンダリングのために送出されると、当該リスト内の2番目のプリミティブが読み出され、以下もまた同様である。
【０２５８】
次にレンダングすべきプリミティブを選択するために、プリミティブ選択ユニット29は、レンダリング対象の小領域に関する各プリミティブリスト内で、次にレンダリングすべきプリミティブに割り付けられているインデックスを判定し、それらのインデックス同士を比較し、最も低いインデックスのプリミティブを次にレンダリングすべきプリミティブとして選択する(というのも、これらのプリミティブは上述したように、プリミティブリスト構築ユニット28によって昇順にインデキシングされるからであり、すなわち、最も低い番号を有するプリミティブが所望のレンダリング順序で次にレンダリングすべきプリミティブとなるからである)。
【０２５９】
したがって、プリミティブ選択ユニット29は、該当する小領域に関するプリミティブリスト内の次のプリミティブのインデックス、関連する1組の2×2の小領域に関するプリミティブリスト内の次のプリミティブのインデックス、適切な1組の4×4の小領域に関するプリミティブリスト内の次のプリミティブのインデックスなどを読み込み、それらのインデックス同士を比較し、最も低いインデックスを有するプリミティブを次にレンダリングするものとして選択する。(プリミティブ選択ユニット29は、上述したように、個々のプリミティブリスト内では既に、複数のプリミティブが正しいレンダリング順序でリスト化されているので、任意の一時に各プリミティブリストから1つのプリミティブ(次のプリミティブ)のインデックスを読むだけで済む。)当該複数のプリミティブは事実上、先入れ先出しに基づく順序で1つずつ、記憶済みのプリミティブリストからプリミティブ選択ユニットにストリーミングされるものと考えることができる。
【０２６０】
プリミティブ選択ユニット２９は、レンダリング対象プリミティブを選択すると、当該プリミティブを頂点選択ユニット31に渡す。次いで、頂点選択ユニット31は、メモリ23に記憶されている変換済みジオメトリデータ25から該当するプリミティブの各頂点に関する適当な変換済みジオメトリデータを検索し、当該データをラスタ化ユニット33に供給する。次いで、当該プリミティブは上述したように、また当技術分野で知られているようにラスタ化されレンダリングされる。
【０２６１】
このプロセスはその後も繰り返され、すなわち、プリミティブ選択ユニット29は再び、関連する各プリミティブリストにおける次のプリミティブのインデックスを読み出し、最も低いインデックスを有するプリミティブを選択し、当該プリミティブを頂点選択ユニット31に供給し、以下同様にプロセスを繰り返す。
【０２６２】
このプロセスは、所与の小領域(すなわち、当該小領域の適切なプリミティブリスト26に含まれるもの)に関するすべてのプリミティブがレンダリングされるまで、当該小領域に関してレンダリングする必要があるすべてのプリミティブに対して繰り返される。
【０２６３】
次いで、レンダラ22は、当該シーンに関するすべての個々の小領域がレンダリングされるまで、上記と同じ様式で次の小領域をレンダリングし、以下同様にレンダリングを行う。
【０２６４】
当該シーンに関するすべての小領域がレンダリングされると、当技術分野で知られているように、レンダリング済みの小領域が表示のために結合され、表示デバイスへと供給される。
【０２６５】
プリミティブ選択ユニット29はまた、現在プリミティブがそこから読み出されている2つ以上のプリミティブリストに関する現在の読出し部分に同じプリミティブ(すなわち、同じインデックスを有するプリミティブ)が同時に現れる状況を特定することができるように構成される。このことは、プリミティブ選択ユニットがインデックス同士を比較し、マッチが発生するかどうかを識別することによって行われる。上記の各状況では、プリミティブ選択ユニット29は、レンダリングに関連するプリミティブを一旦選択した後は、それ以降の当該プリミティブに関する重複の発生を無視するように構成される。これにより、所与のプリミティブが所与の小領域のために2度以上不必要にレンダリングされることが回避される。
【０２６６】
上述のように、レンダラ22はまた、プリミティブリストキャッシュ30と、頂点データキャッシュ32を含む。これらのキャッシュは、当技術分野で知られているように、レンダラ22上に設けられ、メインメモリ23よりも迅速に当該レンダラの処理ユニットから(特に、プリミティブ選択ユニット29および頂点選択ユニット31からそれぞれ)アクセスすることができるローカルメモリを備えている。
【０２６７】
プリミティブ選択ユニット29は、プリミティブリストキャッシュ30に、それ自体がメインメモリ23から読み出した1つまたは複数のプリミティブリスト26を記憶するように構成される。特に、プリミティブ選択ユニット29は、シーンの内で、例えば当該シーンの後続の小領域に必要となることが分かっている複数組の2つ以上の小領域に適用される複数のプリミティブリストを、メモリ23から優先的に検索し、それらをプリミティブリストキャッシュ30に記憶する。このことは、プリミティブ選択ユニット29が当該シーンの複数の小領域をレンダリングするのに必要となる、複数のプリミティブリストをメモリ23から繰返し検索する必要が生じることによる遅延および待ち時間を回避するのに役立つ。
【０２６８】
同様に、頂点選択ユニット31は、メモリ23内の変換済みジオメトリデータ25から検索した頂点データを頂点データキャッシュ32内にキャッシュすることができ、また、特には、あるプリミティブにとって(例えば、レンダリングすべき1組の複数小領域に関して、当該プリミティブがリスト化されていることはわかっているので)当該頂点データが再び必要となることが識別され得る場所にキャッシュすることもできる。
【０２６９】
本実施形態では、プリミティブリストキャッシュ30および頂点データキャッシュ32内にキャッシュされているデータの記憶と特にその置換とは、例えば当該階層内のより高いレベルに適用される(すなわち、したがって、レンダリング対象シーン内のより多くの小領域に使用されることになる)複数のプリミティブリストおよび頂点データに関して、例えば単一の小領域またはごく少数の小領域に適用されることが分かっている複数のプリミティブリストおよび頂点データと比較して、当該複数のプリミティブリストおよび頂点データが上記の各キャッシュ内に優先的にキャッシュされ保持されるように、プリミティブリストおよび/または頂点データがそれに適用され、またはそこに記憶されている、複数組の小領域階層内のレベルに基づいて行われる。
【０２７０】
したがって、例えば頂点選択ユニット31は、メモリ23内の変換済みジオメトリデータ25から各変換済み頂点を読み出すときは、当該頂点データが適用されるプリミティブがどのレベルでリスト化されているか(すなわち、当該プリミティブの出所にあたるプリミティブリスト)を知ることになり、当該情報を使用して例えば当該頂点データをキャッシュすべきか否かを(例えば、上述したように、当該頂点データが後続の複数の小領域に再利用される可能性が高いか否かに基づいて)決定することができる。
【０２７１】
当該シーンの複数の小領域がレンダラ22によって処理される順序は、所望の形で選択することができる。しかしながら、好ましい一実施形態では、例えばレンダラ22内の複数のプリミティブリストおよび頂点データに関するより効率的なキャッシュが容易となることから、当該複数の小領域は、モルトン順序で処理される。
【０２７２】
本実施形態は、特に個々の複数の小領域及び複数組の小領域に関する複数のプリミティブリストの作成に関して上記で説明されてきたが、小領域単位または複数の小領域単位で同様に使用され得る他のデータを記憶することも可能であり、また実際に記憶することが好ましい。かかるデータは、例えばレンダリングセッティング、チルトコマンド、切り取り用パラメータなどを含むことができる。例えば、かかるコマンドがあらゆる小領域に使用されること、当該コマンドをすべての小領域にまとめて適用されるリストに収容すること、あるいは、コマンドがごく少数の小領域にだけ適用される場合には、当該コマンドを当該階層内のより低いレベルで記憶することが有利なはずである。このデータはまた、必要に応じて、各小領域及び各組の小領域に関して作成された複数のプリミティブリストにそれぞれ記憶され、またそれらと関連付けられることが好ましく、当該複数のプリミティブに関して上述したのと同様の様式でインデキシングされることが最も好ましい。
【０２７３】
当業者には理解されるように、本実施形態(および本発明)は必要に応じて、任意のタイルベースのレンダリングシステムの形で実施することができる。本実施形態および本発明の様々な構成要素および機能も同様に、当技術分野で知られている任意の適当な技法を使用して、所望の形で実施することができる。
【０２７４】
上記から、本発明は、少なくともその好ましい諸実施形態では、特にタイルのリスト化(プリミティブのソート(ビニング))プロセスに関するメモリ使用率およびメモリ要件をより良い形で制御することと、その知識を得ることとを容易にする、タイルベースのレンダリングシステム向けの改良されたプリミティブのリスト化およびソートの一構成を提供する。本発明は、シーン内の複数のプリミティブの分布およびレイアウトに関する情報も提供し、それによって、例えば改善された頂点キャッシュなどが容易となり、プリミティブ(タイル)リストのキャッシュおよびプリミティブデータのより効率的なキャッシュが容易となる。
【０２７５】
このことは、少なくとも本発明の好ましい諸実施形態では、様々な解像度のタイルリストに、すなわち単一のタイル専用のタイルリストおよび複数のタイルに共通して使用されることになる複数のタイルリストに、複数のプリミティブ(ならびに必要に応じて他のデータおよびコマンド)をリスト化することによって達成される。
【図面の簡単な説明】
【０２７６】
【図１】タイルベースグラフィックス処理の一構成の概略図である。
【図２】本発明に従って動作することができるグラフィックスプロセッサの一構成の概略図である。
【図３】複数のプリミティブを複数のプリミティブリストに割り付けるプロセスの一実施形態の概略図である。
【図４】レンダリング対象シーン内の1組のプリミティブの概略図である。
【図５】レンダリング対象シーンの複数組の小領域の一構成に関する一実施形態の概略図である。
【符号の説明】
【０２７７】
1  表示対象シーン
2  タイル
3  プリミティブ
4  タイル
5  プリミティブ
6  タイル
7  タイル
8  プリミティブ
9  タイル
10  タイル
11  タイル
12  タイル
13  プリミティブ
20  グラフィックスプロセッサ
21  ジオメトリプロセッサ
22  レンダラ
23  メモリ
24  生ジオメトリ
24  プリミティブ選択ユニット
25  変換済みジオメトリ
26  リスト1/リスト2/リスト3/リスト4/リストn
27  プログラマブル頂点シェーダ
28  プリミティブリスト構築ユニット
30  プリミティブリストキャッシュ
31  頂点選択ユニット
32  頂点キャッシュ
33  ラスタ化ユニット
34  レンダリングユニット
35  タイルバッファ
S60  プリミティブ位置データ
S61  2番目に高いレベルから開始する
S62  現在レベルを検査する
S63  閾値を下回るか?
S64  最下位レベルか?
S65  1つ下のレベルに進む
S66  1つ上のレベルに進む
S67  特別の場合か?
S68  1つ上のレベルに進む
S69  プリミティブを現在レベルのリストに挿入する
51  単一の小領域
52  2×2の小領域
53  4×4の小領域
54  8×8の小領域
55  プリミティブ
56  プリミティブ
57  プリミティブ
80  プリミティブ
【図１】
2007157155.tif 000003
【図２】
2007157155.tif 000004
【図３】
2007157155.tif 000005
【図４】
2007157155.tif 000006
【図５】
2007157155.tif 000007
【外国語明細書】
2007157155.tif 000008
2007157155.tif 000009
2007157155.tif 000010
2007157155.tif 000011
2007157155.tif 000012
2007157155.tif 000013
2007157155.tif 000014
2007157155.tif 000015
2007157155.tif 000016
2007157155.tif 000017
2007157155.tif 000018
2007157155.tif 000019
2007157155.tif 000020
2007157155.tif 000021
2007157155.tif 000022
2007157155.tif 000023
2007157155.tif 000024
2007157155.tif 000025
2007157155.tif 000026
2007157155.tif 000027
2007157155.tif 000028
2007157155.tif 000029
2007157155.tif 000030
2007157155.tif 000031
2007157155.tif 000032
2007157155.tif 000033
2007157155.tif 000034
2007157155.tif 000035
2007157155.tif 000036
2007157155.tif 000037
2007157155.tif 000038
2007157155.tif 000039
2007157155.tif 000040
2007157155.tif 000041
2007157155.tif 000042
2007157155.tif 000043
2007157155.tif 000044
2007157155.tif 000045
2007157155.tif 000046
2007157155.tif 000047
2007157155.tif 000048
2007157155.tif 000049
2007157155.tif 000050
2007157155.tif 000051
2007157155.tif 000052
2007157155.tif 000053
2007157155.tif 000054
2007157155.tif 000055
2007157155.tif 000056
2007157155.tif 000057
2007157155.tif 000058
2007157155.tif 000059
2007157155.tif 000060
2007157155.tif 000061
2007157155.tif 000062
2007157155.tif 000063
2007157155.tif 000064
2007157155.tif 000065
2007157155.tif 000066
2007157155.tif 000067
2007157155.tif 000068
2007157155.tif 000069
2007157155.tif 000070
2007157155.tif 000071
2007157155.tif 000072
2007157155.tif 000073
2007157155.tif 000074
2007157155.tif 000075
2007157155.tif 000076
2007157155.tif 000077
2007157155.tif 000078
2007157155.tif 000079
2007157155.tif 000080
2007157155.tif 000081
2007157155.tif 000082
2007157155.tif 000083
2007157155.tif 000084
2007157155.tif 000085
2007157155.tif 000086
2007157155.tif 000087
2007157155.tif 000088
2007157155.tif 000089
2007157155.tif 000090
2007157155.tif 000091
2007157155.tif 000092
2007157155.tif 000093
2007157155.tif 000094
2007157155.tif 000095
2007157155.tif 000096
2007157155.tif 000097
2007157155.tif 000098
2007157155.tif 000099
2007157155.tif 000100
2007157155.tif 000101
2007157155.tif 000102
2007157155.tif 000103
2007157155.tif 000104
2007157155.tif 000105