説明

拡張されたプリミティブの頂点キャッシュの処理を加速する装置

【課題】 本発明は,3次元コンピュータグラフィックスにおいて用いられるアルゴリズムなどにおける入力情報として用いられる,再分割表面パッチや,NURBSパッチ,隣接する三角形など,拡張された幾何学的プリミティブに関するチップ上のプロセッシングに関する問題を解決することを目的とする。
【解決手段】上記課題は,3次元コンピュータグラフィックスに用いられるシステムであって,初期頂点バッファストア(Primary Vertex Cache Store, PVC)と,頂点プロセッシングユニット(VPU)と,第2の頂点キャッシュストア(SVC)と,プリミティブエンジン(PE)と,固定プリミティブアセンブリ(FPA)と,頂点キャッシュ制御装置(VCC)とを具備するシステムなどにより解決される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,3次元コンピュータグラフィックスの分野に関する。より詳しく説明すると,本発明は,本明細書において拡張されたプリミティブと呼ばれる複雑な多くの頂点を有する幾何学的プリミティブのための情報処理をハードウェアにおいて高速に処理するための方法及びシステムに関する。
【背景技術】
【0002】
伝統的に、対話型コンピュータ図形は、複雑な幾何学的な形に近似して、ポイント、線、および三角形のような簡単な幾何学的なプリミティブを使用する。既存のコンピュータグラフィックスハードウェアは,そのような簡単なプリミティブ、特に三角形のメッシュの処理を高速化するように最適化されている。プリミティブの単純三角形は、3D表面のフラグメントの線形近似に使用することができる中で最も簡単な多角形である。様々な三角形、線、およびポイントでかなり複雑な形に近似することができる。現在既存のハードウェアの設計は大いに互いからそれらの系列でプリミティブの頂点を独自に処理する可能性の利益を得ることができる。
【0003】
複雑な多頂点プリミティブの処理の必要性は3Dコンピュータグラフィックスの様々な領域に起こる。事実上、NURBSパッチとサブディビジョンサーフェスのような高次平面プリミティブで多くの複雑な形をモデルする。どちらの場合も、粗い制御メッシュと規則のセットは、滑らかできめ細かくかつ制御メッシュに影響することで容易に変形できるような形状を生成させるのに使用される。通常、パッチ自体はテッセレーションの過程を制御する追加情報と同様に制御メッシュの頂点の可変サイズセットによって形成される。ハードウェアでNURBSかサブディビジョンサーフェスパッチテッセレーションを有効にするのは対話的な3Dグラフィックスが大いに利益を得ることができる結果として、形状操作の格納、帯域幅要件、および単純さを大いに減少させる。もう1セットのアルゴリズムは一度に近似におけるただ一つの三角形より処理形のさらに複雑な一部分へのアクセスを必要とする。通常、三角形のいくらかの限られた近隣頂点へのアクセスがシルエット縁を検出するのに必要であり、メッシュ頂点での湾曲などについて計算する。
【0004】
複雑なプリミティブの処理のサポートはいくつかの理由で既存の3Dグラフィックスアクセラレータ構造の中では難しい。アクセスが簡単な三角形のためだけに3つの頂点に制限されるとき、複雑なプリミティブの処理はすぐに、処理アルゴリズムのために複数の頂点への速いアクセスを必要とする。サブディビジョンサーフェスに使用されるものとNURBSパッチのようなプリミティブの複合体の頂点のための属性データがメモリの向こう側に点在する場合、アクセスはデータ転送におけるかなりのレイテンシをもたらすため処理アルゴリズムは低性能になるかもしれない。一度に単一の頂点を処理するために現在のプログラマブルアーキテクチャのジオメトリックパイプラインのプログラマブル処理要素を最適化する。そして、固定論理回路(いかなる他のプリミティブのタイプの上でも操作することができませんが、簡単なもの)で頂点の系列からプリミティブをアセンブリする。
【0005】
パーソナルコンピュータとワークステーションに利用可能な3Dグラフィックスハードウェアアクセラレータのカーネル構造はいくつかの場合また、三角形、線、およびポイントのように簡単なプリミティブのリストの速い処理と表現で適応する。図1に、典型的な3Dグラフィックスハードウェアアクセルパイプラインの一部が示す。プリミティブのリストはインデックスバッファ1100と頂点バッファ1200によって説明される。通常、ホスト・マシンメモリ1000に記憶され、インデックスと頂点バッファの中身は図2Aと図2Bで例示される。図2Aの場合では、ことによるとある頂点を共有する1セットの三角形101が頂点バッファ1200とインデックスバッファ1100に連続して詰め込まれた1セットの頂点データによって表される。後者のコンテンツが頂点バッファのそばで頂点に参照をつけていて、インデックスバッファの三角形セット101、3位置の場合では、1100は三角形を定義する。次期3つの位置がセット101における次の三角形などを定義していて、頂点バッファ1200の中の頂点の大部分が再利用されるなら、どの点で、頂点バッファ1200の中の再利用された頂点が点を打たされた中詰めパターンでマークされる頂点データが通常インデックスバッファのインデックスよりはるかに多くの集積スペースを必要とするとき、三角形セットの代理はかなりコンパクトである場合がある。図2Bを参照して、表現は三角形片102の場合でさらに簡潔である。この場合、前の2つの頂点がインデックスバッファで参照をつけられている状態で取られた頂点は三角形を形成する。その結果、1つのインデックスだけが、最初のものが処理された後にさらなる三角形を定義するのに必要とされる。インデックスバッファの内容は、この場合1つの三角形あたりのインデックスリストの数に関してさらに効果的に三角形セットについて説明する。インデックスと頂点バッファを使用することで2つの頂点と1セットの先が1ポイントあたり1つの頂点で定義されている状態で1セットの線区分が定義した同様の方法を述べることができる。
【0006】
インデックスと頂点バッファを使用することで定義されたプリミティブのセットの処理を加速するために、頂点キャッシュ装置が用いられる。図1によると、インデックスバッファ1100の内容は、頂点バッファ1200を抽出するのに使用されるだけではなく、最近、同じインデックスがある頂点が処理されたかどうかまた検出するのに使用されて、キャッシュでまだ利用可能であるかもしれない。頂点キャッシュコントローラ2000は、インデックスバッファ1100の内容を取得し、それを分析する。初めはキャッシュが空であるので、頂点キャッシュコントローラはインデックスバッファ1100から第一の頂点キャッシュ3000に取得されたインデックスリストのための頂点データを含む頂点バッファ内容の配送を初期化する。通常、メモリアクセス潜在するペナルティを現在頂点キャッシュコントローラによってインデックスリストだけに処理されていない頂点データ対応を含むことができる比較的大きい連続したメモリブロック最小にする方法で頂点バッファから取得する。それにもかかわらず、それは第一の頂点キャッシュ3000でそれが後で分類調査されたインデックスリストによって使用されるかもしれないというので保持される。インデックスが第一の頂点に既にあるので頂点データが3000をキャッシュするなら、ホストメモリアクセスは全く実行されない。
【0007】
通常、第一の頂点キャッシュ3000に送られた頂点データは、変換される必要がある。
例えば、頂点の位置は、1個の座標系から別のものに変換される必要があることがある。頂点色は標準、位置などに基づいて計算される。頂点キャッシュコントローラ2000は頂点データの第一の頂点キャッシュから頂点処理装置4000までの配送を制御する。変換した頂点データを二次頂点キャッシュ5000に配送する。二次頂点キャッシュ5000から、変換した頂点データを用いて,頂点列から三角形、線、およびポイントのような固定セットのプリミティブを形成して、三角形セットアップ7000とラスタライザ8000が固定された処理パイプラインの残りにプリミティブをアセンブルし,固定プリミティブのアセンブリ6000に達する。インデックスが二次頂点キャッシュ5000でそれを提示するので、オーバーヘッドなしでいかなる他のものも変換した頂点データをプリミティブのアセンブリ6000に配送する。
【0008】
拡張プリミティブのハードウェアの加速している処理が特に複雑な形のモデルと画像分野にある状態で導入することができる利益のために、チップにおけるそのようなプリミティブの処理ができるハードウェアを設計するのに大きな努力がそそがれた。チップの上のサブディビジョンサーフェスとNURBS表面テッセレーションを含んでいて、それにもかかわらず、ほとんど問題の複雑なプリミティブの処理タスクに構造が捧げた完全に異なったハードウェアを紹介するか、既存の構造の中のプログラマブル要素の使用のために試みをした。簡単なプリミティブだけの定数と伝統的なアーキテクチャが、プリミティブ生成施設の不在のサポートでまだ制限されている。
【0009】
WO03/081528(特許文献1)には、それはいかなる他の目的のためにもそのハードウェアを再利用するか、または簡単なプリミティブの処理のために装置を共有する可能性とアプリケーションが複雑な構造を準備する必要性の不足がハードウェア処理に適したフォームで制御メッシュのための接続性情報について説明している状態でサブディビジョンサーフェスに制御メッシュの特別な記述を処理する専用ハードウェアユニットが開示されている。同様のアプローチは米国特許出願明細書2005/0012750(特許文献2)にも開示されており、NURBSパッチのハードウェアで加速している処理が実現されている。
【0010】
プログラマブル3D加速ハードウェアの導入で、それで複雑なプリミティブの処理を実行するのをいくつかの試みが行われた。それにもかかわらず、有効な実現は処理がまだ簡単なプリミティブだけにもかかわらず、どんなプリミティブの生成にも制限されていないとき施設が商業的に利用可能なハードウェアでは実現できていない。
【0011】
ランダムアクセス、頂点データに、特にサブディビジョンサーフェステッセレーションの場合における拡張プリミティブの処理に関する問題の1つは、必要な情報を処理アルゴリズムに提供することである。ランダムメモリアクセスは、現在既存のハードウェアで高価であって、処理パイプラインの限られた場所だけで可能である。現在既存のハードウェアで最も多能な能力はプログラマブルハードウェアで頂点かフラグメントプログラムで制御することができるメッシュ状のサンプリング抽出に関連する。メッシュ単位のランダムメモリアクセスの有用性のために、実現はメッシュに詰め込まれたメッシュ接続性情報を取得する。専用テッセレーションハードウェアの場合では、テッセレーションアルゴリズム実現に必要な情報の取得を許容する特別なメッシュ表現が、高い準備の欠点と共に使用されて、コストを維持している。ランダムなメモリアクセスができる伝統的アーキテクチャにおける現在の別の装置は、頂点キャッシュである。
【0012】
【特許文献1】WO03/081528パンフレット
【特許文献2】米国特許出願明細書2005/0012750
【発明の開示】
【発明が解決しようとする課題】
【0013】
本発明は,3次元コンピュータグラフィックスにおいて用いられるアルゴリズムなどにおける入力情報として用いられる,再分割表面パッチや,NURBSパッチ,隣接する三角形など,拡張された幾何学的プリミティブに関するチップ上のプロセッシングに関する問題を解決することを目的とする。そのようなアルゴリズムとして,4−3細分割スキームであるCatmull−Clarkループや,NURBS表面分割,シルエット発見,最も簡単な平面状の幾何学的プリミティブである三角形を構成するために3対状の頂点を要求するようなアルゴリズムなど,公知のコンピュータグラフィックスにおいて実装される様々なスキームを含む。
【0014】
完全にチップ上で拡張された幾何学的プリミティブに関する情報処理を行うことは,複雑な幾何学的形状を迅速にレンダリングすることにつながる。さらには,コンピュータグラフィックスを用いてよりリアルな映像を得ることにつながり,三角形のような簡単なプリミティブを用いて直接に拡張されたプリミティブを得ることにもつながる。
【0015】
現在の3次元コンピュータグラフィックスにおけるプリミティブのサイズは,固定されている。例えば,三角形の場合には3つの頂点であり,直線の場合には2頂点であり,点の場合は1頂点である。一方,特に表面パッチの細分割における場合に用いられる,拡張されたプリミティブでは,プリミティブのサイズが任意のサイズであり得る。合理的な範囲での,最大範囲において,拡張されたプリミティブを用いる際には,チップ上で実現するために様々な頂点数のプリミティブが必要となる。
【0016】
次なる問題は,特に拡張されたプリミティブを用いて情報を処理する際に用いられるランダムなメモリアクセスを達成する困難性である。プリミティブを構成する頂点データは,単純なプリミティブにおけると同様,記憶部において分散されて記憶されうる。ここで問題とされるのは,拡張されたプリミティブにおける頂点の数であり,それは通常より何倍か大きく,それに対応するだけの頂点データをフェッチするためにランダムにメモリにアクセスする必要が生ずることである。グラフィックス装置におけるランダムアクセスは,適切にキャッシングを行わなければ,重大な欠陥を生み出すために制限されており,通常は頂点キャッシュに関連した装置とテクスチャのサンプリングに関する装置に限って用いられている。
【0017】
三角形のような簡単な幾何学的プリミティブのみをハードウェアを用いて効果的に利用すると,ゲート数を減らすことができなくなって,その結果,チップの構成を複雑にするという問題がある。拡張されたプリミティブを描画するための論理回路を単純なプリミティブ用の処理回路と別に設けることによっても,チップの構成を複雑にすることとなる。よって,単純なプリミティブと拡張されたプリミティブとを別々の処理回路ではなく,一つの処理系統で処理できれば,チップが複雑になるという問題を解決できる。
【0018】
さらに,拡張されたプリミティブを表現する際の問題がある。様々なタイプの拡張されたプリミティブに広く用いられるように,単純プリミティブ及び拡張されたプリミティブに対して,プロセッシングやAPI,すなわちアプリケーションプログラミングインターフェース,を統一するため,単純プリミティブにおけると同様に,記憶容量を軽減させ,データの転送速度を下げることが望まれる。以下では,本発明が上記の課題をどのようにして解決したのかについて説明する。
【課題を解決するための手段】
【0019】
本発明は,基本的には,頂点にそれぞれインデックスを付して,そのインデックスをインデックスバッファに格納し,格納したインデックスを用いてプリミティブにおける頂点を表現した後,インデックスと関連する頂点情報を頂点バッファから読み出し,プリミティブの演算処理に用いる。さらに,通常のプリミティブは,三角形や四角形など定形のものを用いるが,本発明はこれら定形のものを用いつつも,頂点の数が4以上と通常より多いプリミティブをも用いる。このような頂点の数が可変で通常より多いプリミティブを可変サイズの拡張されたプリミティブとよぶ。本発明では,あるプリミティブに関する頂点情報が入力されると,そのプリミティブが通常のプリミティブか,可変サイズの拡張されたプリミティブかどうか判断する。この判断は,ひとつのプリミティブにおける頂点の数により容易に判断できる。そして,通常のプリミティブの場合は,通常と同様の装置を用いて通常と同様に演算処理を行ってもよい。一方,可変サイズの拡張されたプリミティブの場合は,中心となる多角形のインデックスを読みとり,その後中心となる三角形又は四角形に隣接する多角形のインデックスを読み取る。その上で,それらインデックスに関連する頂点データを取得し,プリミティブをアセンブルする演算処理を行う。本発明のシステムは,コンピュータから各種情報を受け取り,頂点に関する情報を変換する頂点エンジンと,頂点エンジンから変換された頂点情報などを受け取り,プリミティブをアセンブルするプリミティブエンジンとを具備する。そして,プリミティブエンジンによりアセンブルされたプリミティブは,ラスタライザによりラスタライズされ,3次元コンピュータグラフィックスなどとして,フレームバッファなどに格納され,モニタなどに描画される。頂点変換は,頂点に対する視点変換等の演算処理を意味する。プリミティブが,点であるか,線であるか,三角形であるか四角形以上の多角形であるか関係なしに,頂点情報に必要な演算処理を行う。プリミティブアセンブル(Primitive assemble)は,変換された個別の頂点を組み立ててプリミティブとすることを意味する。プリミティブアセンブル以後はプリミティブ毎に個別処理が行われる。本発明では,プリミティブが可変サイズを含んでもよい。プリミティブが三角形の場合のように,プリミティブサイズが3である場合は,インデックステーブルは3の倍数ごとにアクセスすればよい。そのため,装置は,3という数字を覚えているだけでよく,記述する必要は無い。しかし,本発明では,プリミティブサイズがプリミティブごとに変わりうるので,どこまでが次のプリミティブであるかわかりにくくなる。そこで,本発明では,常に次の何要素がプリミティブを構成するかわかるように記述することが好ましい。本発明では,プリミティブサイズをインデックステーブルに記述する。そして,本発明の好ましい態様である複数のインデックステーブルがある場合は,位置属性を含むインデックステーブルの中にプリミティブサイズを記述することが好ましい。
【0020】
より多くのオブジェクトを描画するために,頂点の数を減らすことが好ましい。たとえば,三角形のプリミティブごとに頂点を記述して隣接する2つの三角形を描画することを考える。第1の三角形は,頂点をvとして,(v,v,v:ただし,vは(x,y,z))から構成され,それぞれの頂点の色が,赤,白及び黄色とする。第1の三角形と隣接する第2の三角形は,p,及びpを共有するので(v,v,v:ただし,pは青)のように記述できる。すると,実際は頂点が4つしかないにもかかわらず,6つの頂点に関する記述が必要とされることとなる。すなわち,この方法は,簡単であるものの,n個の3角形を描画するために,3×n個の頂点に関する記述が必要となる。すなわち,記述しなければならない頂点数が多いので,多くのメモリを消費する。次に,三角形ストリップを使う場合について説明する。この描画方法は,第1のプリミティブの頂点に関する記述を行った後,次のプリミティブの記述を行う際に,共有する頂点に関する記述を利用するというものである。たとえば,プリミティブが三角形の場合,次の三角形は,前の三角形の2個の頂点を利用するという条件をつけて描画する。つまり、先に記述された三角形の頂点のうち先頭の頂点を除く頂点が次の三角形の2頂点となり,これと別の頂点を用いて,次の三角形を表現する。この方法では,メモリコストを大幅に軽減できる。しかしながら,依然としてn個の三角形を描画するために2×n個以上の頂点を記述する必要がある。
【0021】
本発明では,(v,v,v:ただし,vは(x,y,z))を表現するために,インデックステーブルを用いる,すなわち,インデックステーブルには,座標値ではなく単に(v,v,v)のような情報が格納され,この情報を用いて各頂点情報(例えば,vは(x,y,z)であり,赤という情報)を読み出す。すなわち,インデックステーブルには,v,v,vで1個の三角形を形成し,v,v,vで次の三角形を形成するように,インデックスを格納する。このように頂点エンジンの頂点バッファなどから頂点データを読み出すことができるインデックステーブルを用いるので,1個の頂点は1回記述すればよくなり、その結果、頂点の記述量が小さくて済む。一方,この方法では,インデックスを記述する必要がある。インデックステーブルの幅は、プリミティブによって異なり,プリミティブが三角形であれば3である。この方法では,一個の頂点が複数の三角形に共有されるため,ひとつの頂点に関する情報を繰り返し配送する必要がある。インデックステーブルは、通常は1個持つのが普通であり殆どの状況下で十分である。事実、OpenGL/ESインターフェースでは、インデックステーブルは1個だけ持つ。しかし頂点の属性、たとえばXYZ座標(位置属性)や色(頂点カラー属性)、テクスチャ座標(テクスチャ属性)それぞれに独立のインデックステーブルを持つインターフェースもある。そのようなインターフェースの有名な例としてはDirect3Dなどがあげられる。
【0022】
本発明の要旨は,拡張された幾何学的プリミティブをプロセッシングできるようにするために,適切なグラフィックアクセレレータにおける頂点キャッシュ装置(vertex cache facilities)を用いることに関する。これは,従来技術に比べて追加された装置である,本発明において提案される拡張されたプリミティブのアッセンブルとプロセッシングを行うために用いられるプリミティブエンジン(プリミティブエンジン)と,拡張されたプリミティブを表現するために用いられるポリゴンメッシュを表現するための拡張されたインデックス/頂点バッファとを組み合わせて用いることにより達成される。
【0023】
本発明において,拡張されたプリミティブは,ポリゴンメッシュを表現するための拡張されたインデックス/頂点バッファに基づいて表現される。Direct3DやopenGLのような3次元グラフィックライブラリが現在あり、このような表現物を,ハードウェアを用いてポリゴンメッシュを迅速に処理する方法を提供している。表現過程において,頂点バッファは,プロセッシングされるポリゴンメッシュのそれぞれの頂点における頂点の属性(vertex attributes)を記憶し,一方,インデックスバッファの内容は,メッシュの接続情報を含む。インデックスバッファは,頂点バッファの内容を示すインデックス列を構成する頂点番号と関連した同じサイズのポリゴン列に関する記述を含む。あるポリゴンに属するインデックス列は,例えば頂点バッファにおける頂点データを参照することにより,そのポリゴンの頂点列を記述し,そして,ポリゴンにおける頂点の連続的な接続により形成されるポリゴンエッジ列を記述する。本発明においては,インデックスバッファは,ある決まったサイズの拡張されたプリミティブ列を記述するのと同じ方法のインデックスバッファを用いることができる。様々なサイズの拡張されたプリミティブを表現するため,プリミティブサイズとともに様々なサイズの拡張されたプリミティブを形成する頂点を参照する他のインデックスに前もってフィックスしておいたインデックス値を記憶する,インデックスバッファが用いられる。
【0024】
そのように拡張されたプリミティブに関する演算処理を行うためにインデックスバッファ及び頂点バッファを改良することで,上述した問題を解決できる。拡張されたプリミティブやインデックスバッファのみに記憶されるインデックスを介した頂点リストにおける,付加的な頂点の数である頂点の数を特定しなければならないような,異なるサイズの固定サイズの拡張されたプリミティブや異なるサイズの可変サイズの拡張されたプリミティブを表現するのに十分である。サイズ,頂点リスト,及びある特別なタイプのプリミティブの形成は,プリミティブ形成アルゴリズムそのものによって行われ,それゆえ表現(representation)はプリミティブサイズによらない。これは,単純プリミティブの表現と同様である。グラフィックライブラリの観点からは,表現は,単純プリミティブの場合と同様であり,単純プリミティブ列を演算処理する場合に比べて拡張されたプリミティブ列を演算処理する場合であってもAPIに大きな変化は必要とされず,必要なメモリを軽減できる。
【0025】
その表現により,頂点が頂点バッファに一度だけ格納されるようなプリミティブ間で頂点を共有するような場合においてメモリコストを軽減できる。単純プリミティブの場合と同様,インデックスを参照することは,ずっと少ないメモリ空間しか要求しない。
【0026】
本発明は,ハードウェアにより拡張されたプリミティブを迅速に演算処理するために,頂点キャッシュとプリミティブエンジンを組み合わせたものを用いる。頂点キャッシュは,直前に演算処理された頂点への短い待ち時間によるアクセスを可能とする。インデックスバッファ及び頂点バッファによる表現の場合は,頂点のインデックスがキャッシュタグとして用いられうる。それゆえ,頂点のインデックスがキャッシュ内のものと同じであれば,後者に格納されるものは,更なる演算処理のために用いられる。本発明は,好ましくは,頂点キャッシュを拡張されたプリミティブの演算処理のためにも用いる。
【0027】
単純プリミティブと拡張されたプリミティブでは表現が類似しているので,拡張されたプリミティブにおいても単純プリミティブにおけると同様に直前に演算処理された頂点への待ち時間の短いアクセスにより頂点キャッシュを利用できる。これにより,拡張されたプリミティブの頂点データをフェッチする際に要求される沢山のランダムなアクセスによるパフォーマンスの劣化を解消できる。また,単純プリミティブと拡張されたプリミティブの演算処理において同じ頂点キャッシュのハードウェアを用いるので,ハードウェアサイズを軽減できる。また,頂点キャッシュを用いるので,拡張されたプリミティブの最大サイズに上限がなくなる。さらに,頂点キャッシュは固定サイズの拡張されたプリミティブにおける頂点にも,可変サイズの拡張されたプリミティブにおける頂点にも用いられる。しかしながら,演算処理を行う拡張されたプリミティブの最大サイズに合理的な上限が設けられる頂点キャッシュ中の頂点データを有するプリミティブを演算処理することで効果的な演算処理が可能となる。これにより,単純プリミティブより大きなサイズの固定サイズ又は可変サイズの拡張されたプリミティブを演算処理する際の問題を解決できることとなる。
【発明の効果】
【0028】
本発明においては,拡張されたプリミティブのアッセンブル及び演算処理は,従来のハードウェアに付加されたモジュールであるプリミティブエンジンによって処理される。このモジュールは,入力情報を,頂点キャッシュから拡張されたプリミティブのそれぞれの頂点についての変換された頂点データの形式で受け取り,付加的に,キャッシュコントローラから可変サイズの拡張されたプリミティブに関するサイズ情報を受け取る。
【0029】
プリミティブエンジンは,拡張されたプリミティブの演算処理アルゴリズムを実行する。そのアルゴリズムは,拡張されたプリミティブの頂点列を解釈し,演算処理された結果を単純プリミティブの列として出力する。これにより以下の問題を解決できる。まずは,拡張されたプリミティブを演算処理する際の融通性(versatility)である。プリミティブエンジンにより制御されプログラマブルな場合は,どのような拡張されたプリミティブであっても,本発明により提案される拡張されたインデックスバッファ及び頂点バッファによる表現を用いることで,演算処理を実現でき,頂点データへの迅速なアクセスを行うことができる。頂点キャッシュへ直接接続するので,拡張されたプリミティブをアッセンブルし,演算処理するための頂点データを取得するための待ち時間の問題は大幅に軽減される。演算処理のためのパイプラインを再利用することや拡張されたプリミティブのチップ上で演算処理を行うこともこれに貢献する。拡張されたプリミティブに関する演算処理結果は,単純プリミティブ列であり演算処理パイプラインの結果により直接サポートされるので,ホストコンピュータへの演算処理結果を用いずに,拡張されたプリミティブ列が直接単純プリミティブ列へと変換されるので,チップ上のみでの演算処理を行うという問題を解決できる。
【0030】
拡張されたインデックス/頂点バッファ表現,単純プリミティブを演算処理する頂点キャッシュ論理回路に加えたわずかな修正と,プリミティブエンジンとを組み合わせて用いることで,固定サイズの拡張されたプリミティブ及び可変サイズの拡張されたプリミティブの演算処理を可能とし,NURBSテッセレーション(tessellation)など現状の3次元グラフィックハードウェアでは存在しない再分割表面レンダリングなどについての,チップ上での演算処理を可能とする。
【図面の簡単な説明】
【0031】
【図1】図1は,頂点キャッシュ装置の従来におけるハードウェアアーキテクチャを示す。
【図2】図2Aは,三角形列をサンプリングするためのインデックス/頂点バッファのレイアウトを示す。図2Bは,三角形ストリップ列をサンプリングするためのインデックス/頂点バッファのレイアウトを示す。
【図3】図3は,本発明におけるアーキテクチャの頂点キャッシュを示す。
【図4】図4Aは,三角形とその近隣の固定サイズの拡張されたプリミティブを示す。図4Bは,三角形とその近隣の固定サイズの拡張されたプリミティブストリップ列を示す。図4Cは,三角形とその近隣の固定サイズの拡張されたプリミティブのインデックス/頂点バッファのレイアウトを示す。図4Dは,三角形とその近隣の固定サイズの拡張されたプリミティブストリップ列のインデックス/頂点バッファのレイアウトを示す。
【図5】図5Aは,三角形とその近隣の固定サイズの拡張されたプリミティブスファン列を示す。図5Bは,エッジベースのフラップのシルエットの構造を示す。図5Cは,三角形とその近隣の固定サイズの拡張されたプリミティブスファン列のインデックス/頂点バッファのレイアウトを示す。
【図6】図6Aは,可変サイズの拡張されたプリミティブを示す。図6Bは,可変サイズの拡張されたプリミティブによるCatmull−Clark再分割パッチを示す。図6Cは,可変サイズの拡張されたプリミティブによるCatmull−Clark再分割パッチのインデックス/頂点バッファのレイアウトを示す。
【図7】図7は,本発明により導入される頂点キャッシュ制御部, プリミティブエンジン及び固定サイズプリミティブ集積回路間の連絡通路を示す。
【図8】図8Aは,シルエット検出と視覚化を行わない場合のレンダリング結果を示す。図8Bは,シルエット検出と視覚化を行った場合のレンダリング結果を示す。
【図9】図9Aは,再分割を行わない場合のワイヤーフレーム形状のレンダリング結果を示す。図9Bは,再分割を行った場合のワイヤーフレーム形状のレンダリング結果を示す。
【図10】図10Aは,再分割を行わない場合のワイヤーフレームのレンダリング結果を示し,ボックス内はメッシュの粗い要素を示す。図10Bは,再分割を行った場合のワイヤーフレームのレンダリング結果を示し,ボックス内は再分割中にスムージングを施されたメッシュの粗いエレメントを示す。
【図11】図11Aは,再分割を行わない場合のレンダリング像を示す。図11Bは,再分割を行った場合のレンダリング像を示す。
【符号の説明】
【0032】
101 単純三角形列
102 単純三角形ストリップ列
103 隣接するプリミティブを有する単純三角形
104 隣接するプリミティブを有する単純三角形ストリップ列
105 隣接するプリミティブファン列を有する単純三角形
106 Catmull−Clark 再分割表面パッチ群
107 Catmull−Clark 再分割表面パッチ群のモザイク
110-115
メッシュフラグメントの三角形
210 キャッシュデスティネーションマルチプレクサ
220 固定サイズプリミティブ集積回路ユニットソースマルチプレクサ
1000 ホストメモリ
1100 インデックスバッファ
1200 頂点バッファ
2000 頂点キャッシュ制御部
2100 頂点カウンタ
2300 頂点キャッシュ制御部とプリミティブエンジンとの間で頂点配送完了信号をやり取りする情報伝達パス
3000 頂点キャッシュ記憶部
4000 頂点処理ユニット
5000 第2の頂点キャッシュ記憶部
6000 固定サイズプリミティブ集積回路ユニット
7000 固定サイズプリミティブセットアップユニット
8000 プリミティブラステライザー
9000 プリミティブエンジン
9100 プリミティブサイズレジスタ
【発明を実施するための最良の形態】
【0033】
以下,本発明の実施の形態について説明する。本発明は,基本的には,固定された又は可変の頂点数によって形成される複雑な幾何学的プリミティブ(拡張されたプリミティブともよぶ)のチップ上での処理に関する。
【0034】
本発明の第1の側面は,単純プリミティブを記述するとともに,可変サイズの拡張されたプリミティブ列を,可変サイズの拡張されたプリミティブごとに4つ以上の頂点データを用いて記述する3次元コンピュータグラフィックスのための方法であって,複数の属性を含む頂点郡を保存でき,前記属性のバッファメモリ上の位置を,頂点列における頂点番号であるインデックスを整数倍した値と,属性のタイプを示す番号を用いてバイアスすることにより求めることができる頂点バッファを用いて,インデックスと属性のタイプを示す番号とを用いて,前記頂点バッファにおける,ある頂点の頂点属性のメモリ上の位置を特定する,頂点バッファの特定工程と,頂点列に関連して頂点バッファにおける頂点位置属性値列を格納し,可変サイズの拡張されたプリミティブのサイズをインデックスとして記憶し,前記固定サイズのプリミティブ列を,前記頂点列を用いて再構築できるようにし,前記可変サイズの拡張されたプリミティブ列を,プリミティブサイズをあわせて用いることにより再構築できるようにする,インデックスバッファにおけるインデックスを特定する,インデックスバッファの特定工程と,そして,前記工程で求められなかった残りの頂点属性について,可変サイズの拡張されたプリミティブであってもプリミティブサイズに関するインデックスを用いないことを除けば,頂点位置属性を求めると同様の方法によって,残留している全ての頂点属性を求める,複数のインデックスバッファの特定工程と,を有する方法に関する。本明細書において,拡張されたプリミティブは4つ以上の頂点を含んでもよく,頂点の数は,例えば,4,5,6,7,8,9又は10があげられる。
【0035】
前記の方法は,前記固定サイズのプリミティブ列を前記頂点列を用いて再構築できるようにし,可変サイズの拡張されたプリミティブ列の場合はプリミティブサイズを用いることにより再構築できるように,頂点バッファにおける頂点位置属性の頂点列に対応したインデックス列を記憶するとともに,可変サイズの拡張されたプリミティブのサイズを前記インデックスバッファのインデックス値として記憶するインデックスバッファを特定する工程を含むので,いずれの固定サイズのそれを構成する頂点列から幾何学的プリミティブ列を再構築することができる。さらに,可変サイズの拡張されたプリミティブの頂点位置属性を参照するインデックス列の前にプリミティブサイズを含むことができるので,その方法は,そのサイズとそのサイズを形成する頂点列により再構築されうる可変サイズの拡張されたプリミティブを記述することができる。その方法は,さらに,残りの全ての頂点属性のために複数のインデックスバッファを特定する工程を含んでもよいので,それぞれの属性が自己のインデックスによりアドレスされ,それゆえ分離されたインデックスバッファが必要とされる場合,近隣の点など拡張されたプリミティブの頂点について全ての必要とされる頂点属性を特定することができる。
【0036】
本発明により導入された拡張されたプリミティブ列を特定するための方法の工程は,以下のメリットを有する。例えば,固定されたサイズ又は可変サイズの頂点列から再構築できるタイプなど,様々なタイプの拡張されたプリミティブを特定することができる。コンパクトインデックスにより参照されるプリミティブ列により共有される頂点として表現されることによりコンパクトになる。本方法は,三角形メッシュ/四角形メッシュを特定するための3次元グラフィックライブラリに用いられるインデックスバッファ/頂点バッファによる表現まで拡張されるので,拡張されたプリミティブ列及び三角形,四角形,線,点など単純プリミティブの列と比較して,拡張されたプリミティブ列を準備し複製するための応用のために,ライブラリAPIsをわずかに修正するだけですむ。各工程を以下に詳細に説明する。
【0037】
本方法は,固定されたサイズ又は可変サイズの拡張されたプリミティブ列を記述するために,単純プリミティブ列を表現するためのインデックス/頂点バッファを拡張する。本明細書において,単純プリミティブとは,三角形,四角形,線,点などコンピュータグラフィックスにおいて用いられる基本形状を意味する。そのようなプリミティブ列の演算処理は,openGLやDirect3Dなど3次元グラフィックライブラリにおいて通常最も大きな問題である。本明細書において,拡張されたプリミティブとは,4つ以上の頂点数を有する固定された数又は可変な数の頂点列により形成された幾何学的プリミティブを意味する。
【0038】
単純プリミティブを表現するためのインデックスバッファ/頂点バッファは,単純プリミティブがプリミティブを構成する頂点列として表現される単純プリミティブ列として表現されるものを意味する。頂点バッファは,コンピュータグラフィックスにおいて用いられる頂点属性の記憶装置を意味する。本明細書において,頂点属性は,プリミティブの頂点として用いられる4次元単一空間(homogeneous space)中の点と関連する属性を意味する。頂点属性の好ましい例は,空間内の点,色,テクスチャ座標,法線ベクトル,タンジェントベクトルなどを含む。属性は,スカラー,2つのコンポーネントベクトル,3つのコンポーネントベクトル,など様々な次元でありうるし,1バイト整数,2バイト整数,4バイト整数,4バイト浮動小数点など様々な値のタイプを取りうる。それぞれの属性の例は,その次元と値のタイプによって決めされるある固定されたメモリサイズの記憶装置を必要とする。頂点バッファを特定する方法は,同じ属性タイプの属性値がメモリ中に同じように配置されるような方法で,メモリ中に属性列を配置することを含む。それゆえ,頂点バッファ内のある属性の位置は,属性タイプと関連した列における位置と配置により容易にリカバーできる。従って,属性値は,その列における整数位置又はインデックスにより表すことができる。もしも全ての属性列が同じサイズを有するものであれば,当該列における頂点の数に関連して属性価の頂点列に由来する頂点のインデックス値は増加することとなる。そのような場合では,頂点列を特定することができ,それゆえ,インデックスバッファを用いずに単純プリミティブ列を特定できる。
【0039】
本明細書において,そのような状況は,「頂点バッファのみの表現」“vertex buffer-only representation”とよばれる。用語「インデックスバッファ」は,頂点属性インデックスと特定するための整数値の列を含むメモリ中のアレイを意味する。頂点列はそれに関連する頂点属性の全てのタイプのインデックス列のうち唯一のもののみを含む場合は,全ての頂点属性について頂点列を完全に記述するために,ひとつのインデックスバッファを特定すれば十分である。逆に,それぞれの頂点属性タイプが頂点列に関連して頂点インデックスの頂点属性に特異なものが存在する場合がある。そのような場合では,特定するためのインデックスバッファの数は,属性タイプの数と同じだけになる。頂点バッファとそれにおける全ての必要とされるインデックスアレイを有するインデックスバッファとを組み合わせることは,単純プリミティブの列により表現するインデックス/頂点バッファを形成することとなる。
【0040】
頂点バッファを特定する工程は,上述したように,簡単なプリミティブ列におけるインテックスバッファ及び/又は頂点バッファのように各頂点に関連する頂点の属性(attributes)を特定するための工程である。
【0041】
インデックスバッファを特定する工程は,頂点が拡張されたプリミティブを形成するために頂点位置の属性に関するインデックスを特定するための工程である。拡張されたプリミティブにおける様々な拡張されたサイズの属性のために,この工程は,頂点位置の特定のためのインデックスバッファ内のインデックス値によるプリミティブサイズを特定する工程を含む。可変サイズのプリミティブを用い頂点列がプリミティブを構成するものを実装する場合,この工程は,プリミティブごとにプリミティブサイズを特定することによる,拡張されたプリミティブ列を特定する工程を含んでも良い。本発明は,プリミティブのサイズと,プリミティブを形成できる頂点列と,頂点列の特定値とにより必要な情報の全てをそろえることができるような拡張されたプリミティブに用いることができる。
【0042】
本発明において,固定されたサイズの拡張されたプリミティブの例は,隣接を含む三角形“Triangle with Neighborhood”(TWN)プリミティブである。そのようなプリミティブは,三角形の各辺に隣接する3つの三角形を含むメッシュを構成するそれぞれの三角形を,3次元空間における三角形によって閉じた空間を構成するメッシュ(三角形が複数辺を共有することで連なってメッシュ状になったもの)において検討することで形成することができる。
【0043】
図4(A)を参照して,上記を説明する。図4(A)は,三角メッシュの概念図である。図4(A)に示されるように,三角メッシュ上にフラグメント103が描画される。
頂点{v,v,v}によって形成される三角形に対しては,TWNプリミティブは,その三角形と,その三角形{v,v,v}の各辺{v, v}, {v, v}, {v, v}に隣接する三角形{v, v, v}, {v, v, v},{v, v, v}によって形成される。本明細書において,三角形{v, v, v}は,“中心”三角形とも呼ばれる。このようにTWNプリミティブを表現するために,全部で6個の頂点列が必要とされる。TWNプリミティブにおける頂点決定,すなわち,頂点位置間のマッピング方法とプリミティブ内での各頂点と他の頂点との接続関係の好ましい例は,たとえば以下のものがあげられる。頂点列{v, v, v}によって形成される三角形に隣接する三角形について,辺{v, v}, {v, v}, {v, v}に対応する頂点をv01, v12, v20(ただし,v01, v12, v20はそれぞれ中心三角形に隣接する三角形であって,上記の辺を共有する三角形の{v, v, v}以外の頂点)としたときに,TWNプリミティブを表現するための頂点列は,{v, v, v01, v, v20, v12}である。図4(A)に示される三角形{v, v, v}については,TWNプリミティブを表現するための頂点が{v, v, v, v, v, v}となる。すなわち,vjを,属性インデックスjを有する頂点位置とすると,中心三角形{v, v, v}のTWNプリミティブの特定インデックスの頂点位置列は,{2,1,0,3,4,5}となる。もしも,もともとのメッシュの端部が開いていれば,それらに隣接した少なくとも一つの三角形を隣接させることができ,もしもメッシュ中の全てのエッジが2つ以下の隣接する三角形しか有しない場合は,そのような全ての三角形に対して更にTWNプリミティブを生成できる。さらに,一つしか隣接する三角形を有しない辺に対しては,人工的に欠けた三角形を補うことも可能である。その一つの方法は,人工的に作られたオープンな辺の頂点を二度用いることによって,縮退された(degenerate)三角形を作ることである。上記と別の方法は,開端(open edge)とは反対位置にある中心三角形の頂点を用いる方法であり,その場合は三角形は縮退せずに中心三角形と(coincide)する。
【0044】
固定サイズの拡張されたプリミティブ列は,プリミティブ列におけるそれぞれのプリミティブの頂点列を連結(concatenate)することにより形成することができる。頂点位置の属性についてのインデックスバッファは,連結された列における頂点の頂点位置属性のインテックス列として表現することができる。TWNプリミティブについては,3つの好ましいプリミティブ列の表現方法がある。すなわち,別々のTWNプリミティブ列として表現するもの,TWNストリップとして表現するもの,及びTWNファンとして表現するものである。それらは,別々の中心三角形列に基づくもの,中心三角形のストリップに基づくもの,及び中心三角形のファンに基づくものである。
【0045】
セパレートされたTWNプリミティブ列は,それぞれの三角形に対するTWNプリミティブを中心三角形とし,それぞれの生成されたTWNプリミティブに対する頂点を(concatenate)することにより,設計できる。図4(A)では,中心三角形{v, v, v}と{v, v, v}からなる列により形成されるTWNプリミティブのフラグメント(fragment)を図示している。対応する頂点は{v, v, v, v, v, v, v, v, v, v, v, v}であり,対応する頂点位置の属性に対応するインデックス列は図4(C)に示されるように{2,1,0,3,4,5,3,1,2,5,6,7}.である。
【0046】
TWNストリップは,三角形ストリップにより構成することができる。三角形ストリップにおいて,2つの連続する三角形が2つの頂点を共有するという事実により,それぞれのプリミティブにつき2つの頂点のみによりストリップにおける第2の又は次のTWNプリミティブを定義付けることができる。本発明において,頂点列{v, v, v, v, v, v,…}によって形成される三角形ストリップ,{v, v, v, v, vv5,…}辺に沿ってその辺に対して反対側にある三角形ストリップに隣接する三角形に隣接する三角形の頂点列{v01, v02, v13, v24, v35,…}によって形成される三角形ストリップに対して,TWBストリップにより定義される頂点列は以下のようになる。すなわち,{v, v, v01, v, v02, v, v13, v, v24, v, v35,…}であって,最初の6個の頂点列は,最初のTWNプリミティブを定義するものであり,次の2つずつの頂点は,それに続くTWNプリミティブをあらわすものである。図4(B)では,2つの三角形{v, v, v}と{v, v, v}により構成される三角形ストリップ104によるメッシュフラグメントが表現されている。このストリップは,4つの長さの頂点列{v, v, v, v}により形成することができる。図4(B)の例では,TWNストリップを定義する2つのTWNプリミティブは,{v, v, v, v, v, v, v, v}となり,それに対応する頂点位置の特定に対するインデックス列は,図4(D)に示されるように{2,1,0,3,4,5,7,6}となる。
【0047】
TWNストリップと同様にして,TWNファンも三角形ファンから形成することができる。TWNファンによっても,相当する中心となる三角形ファン列のTWNプリミティブ列を表現するために必要とされるインデックスバッファの数を軽減することができる。本発明において,三角形ファンは,頂点列{v, v, v, v, v, v,…}と,{v, v, v, v, v,…}辺に沿って,その辺の反対側の頂点における三角形ファンにおける三角形に隣接する三角形の頂点{v01, v12, v23, v34, v45,…}により形成することができる。TWNファンを定義づける頂点列は,{v, v, v01, v, v12, v, v23, v, v34, v, v45,…}で表され,最初の6つの頂点は最初のTWNプリミティブ を意味し,続く2つごとの頂点は,連続するTWNプリミティブを定義するものである。ここで,最初の6つの頂点列がTWNストリップの場合と異なることに留意されたい。図5(A)は,三角形ファン105を構成する2つの三角形{v, v, v}と{v, v, v}とによるメッシュフラグメントを示す。このファンは,長さが4の頂点列{v, v, v, v}により表現することができる。図5(A)に示される本発明においては,2つのTWNプリミティブによるTWNファンの頂点列は{v, v, v, v, v, v, v, v}となり,それに対応する頂点位置の属性に対するインデックス列は図5(C)に示されるように{2,1,0,3,5,4,6,7}となる。
【0048】
可変サイズの拡張されたプリミティブの好ましい例は,カトマル−クラーク(Catmull−Clark)の細分割パッチプリミティブ(CCSP)を含む。本発明において,CCSPは,それぞれのポリゴンにおいて,4つと異なる隣接するエッジと異なる番号のひとつ以上の頂点を有する四角形メッシュにより表現されるポリゴンから構成される。Catmull−Clarkの再分割による四角形メッシュという観点から,4つと異なる隣接するエッジと異なる番号のひとつ以上の頂点(a vertex with a number of
adjacent edges being different from four)は,イレギュラーな頂点とよばれる。また,ある頂点に隣接するエッジの数は,頂点価(a valence of vertex)とよばれる。つまり,頂点価が4以外の場合は,Catmull−Clarkの再分割の観点からするとイレギュラーな頂点とみなされる。CCSPプリミティブは,四角形における各頂点と,それら四角形の各頂点を共有するポリゴンにおける隣接する全ての頂点とによって形成される。CCSPプリミティブにおいて,その中心に位置する四角形を中心四角形とよぶ。もしもイレギュラー頂点の頂点値が存在する場合,中心四角形は,メッシュにおける他の四角形と異なり,中心四角形の周囲の四角形や,CCSPプリミティブにおける頂点の数も変化する。CCSPプリミティブでは,イレギュラーな頂点価に関連する頂点の数は,VをCCSPプリミティブにおける頂点の数とし,Vをイレギュラーな頂点の頂点価とすると,N=2*V+8のように表すことができる。なお,この場合においてVに所定数を乗算することをスケーリング,2をスケールとよび,8など所定の数を加えることをバイアスとよぶ。
【0049】
サイズが知られているので,CCSPプリミティブは,連続する頂点列における頂点間にマッピングされる頂点列(sequence)によって表現することができ,それによりCCSPプリミティブの位置が決定される。本発明の好ましい態様では,頂点列(sequence)とマッピングは以下のように形成される。四角形のメッシュについては,CCSPプリミティブは,頂点{v, v, v, v}を有しており,それらは四角形の辺(v, v, v, v)をそれぞれ形成する。なお,イレギュラーな頂点がもしあればvである。CCSPプリミティブを記述する頂点列は以下のように形成される。まず,四角形の頂点は,番号順{v, v, v, v}に並べられる。その後,例えば,vとvとのメッシュを構成する四角形に属する,vを共有する隣接する辺の頂点が選択される。六番目は,vと同じ辺上にあり,vと同じ四角形状の頂点である。残りの隣接する頂点は,以下の規則に従って選択される。隣接するある頂点が選択された後に,以前に選択された辺を共有するように次の頂点が選択される。図6(A)に示されるように,制御メッシュ(106)のフラグメントは,2つの隣接するCCSPプリミティブ{v, v, v, v10}及び{v, v10, v16, v15}を中心四角形として記述される。頂点vは,頂点価が5のイレギュラーな頂点である。最初のプリミティブ及び第2のプリミティブを記述する頂点列は,それぞれ{v, v, v, v10, v, v, v, v, v, v, v, v11, v17, v16, v15, v14, v13, v12}と{v, v10, v16, v15, v, v, v, v11, v17, v21, v20, v19, v18, v14, v13, v12, v, v}である。本発明において,CCSPプリミティブの頂点位置の属性(attribute)を示すインデックスは,頂点位置の属性を示すインデックスを含むインデックスバッファにおいてCCSPプリミティブとともに前もって決定されている。すなわち,図6(A)に示される2つのCCSPプリミティブにおける頂点郡の内容として,図6(C)に示されるように,インデックスバッファ1200(または頂点バッファ1100)は{18,9,5,6,10,8,4,0,1,2,3,7,11,17,16,15,14,13,12,18,9,10,16,15,5,6,7,11,17,21,20,19,18,14,13,12,8,4}を記憶する。
【0050】
残りの頂点属性についてのインデックスバッファ列を特定する工程は,頂点の全ての属性を参照するために同じインデックスが用いられないように別のインデックスが要求されるように頂点属性が特定される工程である。この場合において,頂点は属性インデックスの組によって形成され,そのインデックスは,頂点の異なる属性に関連するインデックスである。上記が当てはまらない場合,全ての頂点属性は,頂点位置属性に相当する一つのインデックスによって特定されうる。そうでなければ,全ての頂点属性を特定するためにインデックスバッファの組は特定されなければならない。頂点位置属性に関するインデックスバッファはプリミティブサイズを含むので,上述したように可変なサイズの拡張されたプリミティブを扱う場合は特別な扱いがなされる。他のインデックスバッファは,プリミティブサイズに関する情報を持たず,可変サイズのプリミティブを表現する場合に頂点位置属性のものと比べて小さい長さとすることができる。本発明では,ある頂点に対する頂点属性のインデックスは以下のように決められる。固定サイズの拡張された属性の場合,i番目の位置のインデックスバッファ価はNを頂点列の長さとして,iは0以上N未満であるインデックスバッファ中のi番目頂点のインデックス列に由来するすべての属性の価となる。サイズが可変な拡張されたプリミティブの場合は,状況がより複雑となる。可変サイズの拡張されたプリミティブ列を表現するための頂点列を連結することにより形成される頂点列については,i番目の頂点のインデックス列は,頂点位置属性を示すインデックスバッファ中の(i+N−1)番目の価と他のインデックスバッファのi番目の価とに基づいて形成され,ここで,Nはプリミティブ数の初期値を1として,i番目の頂点が含むプリミティブの数である。
【0051】
本発明の第二の側面は,頂点キャッシュ(頂点バッファ)を用いて,固定サイズ又は可変サイズの拡張されたプリミティブを高速に処理するための方法であって,頂点位置属性のインデックスバッファから,可変サイズのプリミティブのプリミティブサイズをフェッチングし,前記プリミティブサイズを特定の回路か又は拡張されたプリミティブアセンブリを処理できるようにプログラマブルにされた演算装置であるプリミティブエンジンに配送する工程と,頂点キャッシュから頂点データを得られない場合は,頂点キャッシュにおける拡張されたプリミティブの頂点についての頂点データをフェッチし,変換して,蓄積する工程と,拡張されたプリミティブのアセンブリと演算処理のために,変換された頂点をプリミティブエンジンへ配送する工程と,プリミティブエンジンにおいて,拡張されたプリミティブをアセンブリし,演算処理する工程と,プリミティブエンジンにおける拡張されたプリミティブの演算処理により得られる固定サイズの単純プリミティブをプリミティブラスタライズのためのパイプラインを経由して固定サイズのプリミティブ集積回路へ配送する工程と,を含む。
【0052】
本方法は,固定されたサイズ又は可変なサイズの拡張されたプリミティブのプロセッシングを実装するための拡張された3次元コンピュータグラフィックスの高速ハードウェアにおける頂点キャッシュ装置を拡張することに基づくものである。本明細書において,頂点キャッシュ装置(vertex cache facility)は,インデックスや頂点バッファからの価を用いて特定された簡単なプリミティブの列を高速にプロセッシングすることを達成するためのシステムを意味する。本明細書において頂点キャッシュ装置の機能は,インデックス/頂点バッファからの価を用いて特定された頂点列を横断(掃引)し,プロセッシングを行う頂点列における対応する頂点の属性列を決定する。頂点キャッシュ記憶部(ストア)としての,頂点キャッシュ装置における記憶部における入手可能な属性と同じ列の頂点かどうか決める。インデックスバッファからサンプリングされた頂点属性インデックスに従って頂点バッファから頂点属性値をサンプリングするか,もしも頂点が頂点キャッシュになく,頂点キャッシュ記憶部に記憶されている場合は,頂点バッファを順次生成しても良い。頂点変換についての属性値に基づいてアセンブルされた頂点を送り,そして付加的に,変形結果を頂点キャッシュの記憶部に記憶する。変換された頂点を,インデックス/頂点バッファにより表現される単純プリミティブ列を表現するために,固定サイズプリミティブ集積回路装置へ配送する。頂点変換を加速するか,又は,頂点データが頂点キャッシュに存在する場合,頂点バッファをサンプリングする必要をなくし,頂点を再度変換する必要をなくするために,変換された頂点を固定サイズプリミティブ集積回路装置へ配送してもよい。実装した態様に応じて付加的な装置を適宜具備しても良い。固定されたプリミティブアセンブル装置(固定されたプリミティブアセンブル装置)との用語は,頂点列から単純なプリミティブを集めて再構築することを実現するシステムを意味する。本明細書において,プリミティブを集めること(assembling of primitive)は,プリミティブを再構築するために必要な全ての情報を集めること,例えば,更に処理を行うためにプリミティブにおける全ての頂点についての情報を蓄積することを意味する。例えば,別々の三角形列の場合は,各々の三角形に存在する3つの頂点列が必要な情報に相当する。同様にして,別々の線については,その線を構成する2つの連続する頂点がそれに相当する。三角形ストリップの場合は,最初の三角形の3つの頂点と,隣接する三角形の頂点列がそれに相当する。固定されたプリミティブアセンブル装置は,演算処理され,配送されるプリミティブのタイプに応じた頂点列を,単純プリミティブを演算処理するのみのラスタライズパイプラインに送れるよう単純プリミティブの状態に戻す。
【0053】
本発明の第2の側面にかかる方法は,様々な面で頂点キャッシュ装置を拡張する。第一に,本発明の第2の側面によれば,可変サイズの拡張されたプリミティブをフェッチするために新たなロジック回路が必要となる。次に,頂点キャッシュ装置と固定されたプリミティブアセンブル装置との間で機能するプリミティブエンジン(拡張されたプリミティブに関する情報をアッセンブルし,処理するための別個の装置)との情報交換をもたらす。
【0054】
その方法は,頂点位置属性についてインデックスバッファからプリミティブのサイズをフェッチする工程を含むので,本発明の第1の側面による方法を用いて表現された可変サイズの拡張されたプリミティブの頂点列をプロセッシングするために用いることができる。頂点キャッシュにおける拡張されたプリミティブの頂点データをフェッチし,移送し,そして蓄積する工程により,頂点の属性値から頂点をアッセンブルすることができ,頂点を移送することができ,そして,同じ頂点を後に参照する場合は迅速に取戻しが行われ,頂点キャッシュストアに頂点を記憶することができる。この工程は,拡張されたプリミティブ列や単純プリミティブ列がプロセッシングされるか否かに拘わらず同様である。この方法は,移送された頂点をプリミティブエンジンに配送する工程,プリミティブエンジンにおいて拡張されたプリミティブのプロセッシングを行う工程,及びプロセッシングされた結果を単純プリミティブ列の形で残りのプロセッシングパイプラインに配送する工程をも含む。最初の工程について検討すると,その工程により拡張されたプリミティブをアッセンブルするための必要な情報や,プリミティブエンジンを駆動するプロセッシングアルゴリズムが供給される、そして,プリミティブの干渉が無かったかのような場合におけると同様のプロセッシングを行うために出力結果が配送される。組み合わせることで,以下のようなメリットがある。頂点キャッシュにおいて頂点データをフェッチし,配送し,そして蓄積する工程は,単純プリミティブを処理するのであっても,拡張されたプリミティブ列を処理するのであっても実質的には同様であるので,この方法は,インデックスバッファからフェッチされた属性インデックスに関連した属性から拡張されたプリミティブの頂点をアセンブルするための頂点バッファへのランダムなアクセスを特に特別な方法を用いずに実現することができる。先に説明したと同じ理由で,頂点データをフェッチし,配送し,そして蓄積する工程に用いられるほとんどの論理回路は,単純プリミティブの演算処理と拡張されたプリミティブの演算処理とで共用することができ,拡張されたプリミティブの処理を実現するために実装される論理回路のハードウェアコストを軽減することができる。頂点キャッシュを用いることは,プリミティブエンジンの頂点データを拡張されたプリミティブのアセンブル及び演算処理アルゴリズムへと配送する際の待ち時間を軽減することになる。これにより,拡張されたプリミティブの演算処理に関するパフォーマンスが向上することとなる。インデックスバッファから可変サイズのプリミティブのプリミティブサイズをフェッチングする工程とそれをプリミティブエンジンへ配送する工程と,拡張されたプリミティブをアセンブルし,演算処理するために変換された頂点をプリミティブエンジンへ配送する工程は,プリミティブエンジン上で,本発明の第一の側面により導入された方法を用いて拡張されたプリミティブを演算処理するために必要な全ての情報を配送することを可能とする。プリミティブエンジンによって演算処理された拡張されたプリミティブの出力は,単純プリミティブのものと同様な方法により達成され,拡張されたプリミティブの演算処理を行うためにプリミティブ演算処理用のパイプラインは特に修正する必要がない。さらに,単純プリミティブ列の処理は,単純プリミティブ列の演算処理による変換された頂点は,頂点キャッシュからプリミティブエンジンによりバイパスされる残りの演算処理パイプラインへと直接配送される。この方法は,単純プリミティブ列を演算処理することに比べて追加となるような付加を何ら要求しない。
【0055】
頂点位置属性のインデックスバッファから,可変サイズのプリミティブのプリミティブサイズをフェッチングし,前記プリミティブサイズを特定の回路か又は拡張されたプリミティブアセンブリを処理できるようにプログラマブルにされた演算装置であるプリミティブエンジンに配送する工程は,以下のような内容である。すなわち,頂点位置属性のインデックスバッファからプリミティブサイズを取り戻す工程である。本発明の第1の側面と関連して求められた拡張されたプリミティブを表現するために可変サイズの拡張されたプリミティブをそこに位置させるものである。プリミティブサイズは,拡張されたプリミティブの演算処理において必要とされるかもしれないので,プリミティブエンジンへと配送される。
【0056】
本発明においては,プリミティブサイズに関する情報が,頂点位置属性のインデックスバッファにおけるプリミティブの頂点に関する情報よりも先行する。プリミティブサイズのフェッチングが終わった結果として,後者がプリミティブに関するほかのどの情報にも先駆けてプリミティブエンジンへと配送される。プリミティブサイズを知ることは,次の可変サイズのプリミティブの始まりに関する頂点位置属性のインデックスアレイのオフセットを決めることができ,それにより,前記インデックスは次のプリミティブのサイズ情報を含むこととなる。プリミティブサイズは,可変サイズのプリミティブに関する演算処理を始めることができる状態とするためにも必要とされる。後者は,プリミティブサイズによって制御される全てのプリミティブの頂点をプリミティブエンジンが得た後に終えられる。この工程は,可変サイズの拡張されたプリミティブを実現する場合にのみ必要とされる工程である。他のプリミティブの演算処理を行う場合は,この工程を省略できる。
【0057】
頂点キャッシュから頂点データを得られない場合は,頂点キャッシュにおける拡張されたプリミティブの頂点についての頂点データをフェッチし,変換して,蓄積する工程は,以下のような工程である。上述したように,頂点キャッシュ装置により頂点キャッシュにおいて,フェッチし,変換して,蓄積される工程である。頂点キャッシュ装置は,拡張されたプリミティブの演算処理を行うものではないので,この工程の処理は,頂点キャッシュ装置に関して単純プリミティブであっても固定されたサイズの拡張されたプリミティブ列の処理であっても変わらない。それゆえ,単純プリミティブの演算処理と,拡張されたプリミティブの演算処理を行うための回路など装置面でシェアすることができる。この工程は,頂点キャッシュに既に必要な頂点情報が蓄積されている場合は,省略することができる。この工程は,インデックスバッファ/頂点バッファが拡張されたプリミティブ列を表現する場合でも行われる。そのような場合,頂点属性インデックスがインデックスバッファからサンプリングされる。また,頂点バッファが固定サイズの拡張されたプリミティブのみを表現する場合,頂点属性インデックスは,順番に生成される。
【0058】
可変サイズの拡張されたプリミティブを演算処理する場合はプリミティブサイズをフェッチングする工程では,もし異なる頂点属性の別々のインデックスバッファが用いられる場合はプリミティブの頂点データをフェッチングする工程を修正する必要が生じうる。その理由は,頂点位置属性のインデックスバッファの長さの相違と,他の全ての属性列を記述するインデックスバッファはプリミティブサイズに関する情報を含んでおり,その長さはプリミティブ列の数だけ他のインデックスバッファよりも大きいからである。ある頂点について頂点データをフェッチングする工程は,問題とされている頂点に対応するそれぞれの頂点属性のインデックス列を形成する必要がある。異なる頂点属性のための分離されたインデックスアレイや,固定サイズのプリミティブ,又は単純プリミティブ列を演算処理する場合は,このフォーメーションが,頂点の位置に対応した全てのインデックスバッファの位置をサンプリングすることにより行われる。可変サイズの拡張されたプリミティブ列を演算処理する場合は,このフォーメーションは以下のように修正される。すなわち,頂点位置属性以外の全ての属性についてのインデックス値が,頂点位置によって決められるインデックスバッファの位置をサンプリングすることにより得られるが,頂点位置属性のインデックスが他の属性のものと現在演算処理を行っている以前のプリミティブの数を足したものにより得られる位置の頂点位置属性のインデックスバッファにより得られる。この工程は,可変サイズの拡張されたプリミティブ列を,インデックスバッファ及び頂点バッファを用いるもので,前記本発明の第1の側面により導入されるものである。
【0059】
拡張されたプリミティブのアセンブリと演算処理のために,変換された頂点をプリミティブエンジンへ配送する工程は,入力された頂点情報を拡張されたプリミティブのアセンブルと演算処理を行うためのプリミティブエンジンによるアルゴリズムへと配送するための工程である。本発明においては,この工程は,固定されたプリミティブアセンブル装置の代わりに,頂点キャッシュからの変換された頂点が配送されるプリミティブエンジンを選択することにより達成される。本明細書においては,“プリミティブエンジン”という語は,以下により,拡張されたプリミティブの演算処理を実現するための固定回路又はプログラマブルシステムを意味する。可変サイズの拡張されたプリミティブの場合は,プリミティブサイズに関する情報を受け取って内部に記憶するプリミティブの頂点に関する情報を蓄積する。蓄積されたプリミティブに関する情報に基づいてプリミティブを再構築する。可変サイズの拡張されたプリミティブを演算処理した結果,固定されたプリミティブアセンブル装置によってアクセスできる単純プリミティブ列となるようなアルゴリズムに従って,プリミティブを再構築する演算処理を行う。
【0060】
プリミティブエンジンにおける拡張されたプリミティブの演算処理により得られる固定サイズの単純プリミティブをプリミティブラスタライズのためのパイプラインを経由して固定サイズのプリミティブ集積回路へ配送する工程は,以下の工程を含む。固定されたプリミティブアセンブル装置により処理できる形式とされた拡張されたプリミティブを配送する工程である。本発明において,この配送は,頂点キャッシュ装置により単純プリミティブ列が処理された場合に変換された頂点が頂点キャッシュから固定されたプリミティブアッセンブル装置へと直接配送されるのとまさに同じ方法で配送される。従って,固定されたプリミティブアセンブル装置を修正する必要はなく,拡張されたプリミティブの演算処理を行えるようにするためにラスタライゼーションパイプラインも修正する必要がない。
【0061】
プリミティブエンジンにおいて,拡張されたプリミティブをアセンブルし,演算処理する工程は,プリミティブエンジンにより所定のアルゴリズムを実装し,これを用いて拡張されたプリミティブに関する演算処理を行うための工程である。プリミティブエンジンによって実現される固定サイズの拡張されたプリミティブを演算処理するアルゴリズムの好ましい例は,以下のものがあげられるが,これに限定されるものではない。すなわち,メッシュシルエットの検出と視覚化を実現するためにTWNプリミティブ列を演算処理するというものである。本明細書において,メッシュシルエットは,一方が視点方向を向き他方がそうではない方向を向いている1組の三角形によって共有されるトライアングル辺の集合を意味する。メッシュシルエットを視覚化するとは,メッシュをレンダリングする際に,シルエットエッジを視覚的に強調する方法を意味する。シルエットを検出し,視覚化するためのアルゴリズムの概要は以下のとおりである。TWNプリミティブのための頂点データを蓄積する。中心三角形と隣接する三角形の方向を決定する。この工程は,部分的に並行して行われても良い。そして,中心三角形の三つの辺のそれぞれから三角形の方向を比較することでシルエットエッジを検出する。検出されたシルエットエッジの四角形フラップを生成し,ラスタライズのためにそれを配送する。次のプリミティブについて同様の処理を行う。プリミティブサイズが固定されているので,プリミティブサイズをフェッチする工程は行う必要がない。
【0062】
TWNストリップやTWNファンの場合は,ストリップ/ファンにおいて最初とそれ以降のプリミティブは異なる方法で蓄積される。最初のプリミティブは,プリミティブに関する演算処理が始まる前に,6つの頂点を必要とする。第2及びそれ以降のプリミティブは,既に蓄積された頂点を利用することができるので,さらなる2つの頂点のみを要求する。分離されたTWNプリミティブ列の場合は,第2以降のプリミティブであっても,最初のプリミティブと同様に頂点データが蓄積される。
【0063】
図4(B)示されるように,それぞれ頂点列{v,
, v} と {v, v, v}により構成される2つの中心三角形111及び113に相当するTWNプリミティブストリップは,図4(D)に示されるように{2,1,0,3,4,5,7,6}で示される頂点位置属性列に相当するインデックスバッファのコンテンツとして表現される。頂点キャッシュ装置はインデックスバッファからインデックスに相当する頂点を読み出して,プリミティブエンジンに伝える。たとえば,頂点キャッシュ装置から,プリミティブエンジンに伝えられる第6番目の頂点は,インデックス価5に相当するものである。プリミティブエンジンが,中心三角形111と隣接する三角形110,112,及び113についての全ての頂点に関する情報を入手すれば,プリミティブエンジンはTWNストリップ列における最初の三角形の方向やシルエット辺などを検出し始めることができる。三角形の方向の計算は,システム座標における三角形の頂点位置のx,y,wにより構成される3つのコンポーネントベクトルからなる3つの内積によるスカラーにより評価され,以下のマトリックスにより評価される。
【0064】
【数1】

【0065】
ここで,下付の0,1,及び2は,それぞれ三角形における第1,第2及び第3の頂点を意味する。このサインが辺を共有する2つの三角形と異なる場合は,この辺はシルエットである。それゆえ,シルエット辺を決定するために,TWNプリミティブの中心三角形と,3つの隣接する三角形の4つの評価が必要となる。
【0066】
シルエット辺を検出するために,観察者の視野方向と垂直な方向,すなわち視点座標におけるZ軸の方向の長方形のフラップ(flap)を構成する余分な幾何学図形が設計され,それは対象物の外側に伸びる。その対象物の外側の方向は,頂点キャッシュ装置からプリミティブエンジンへは頂点が運ばれた後に入手することができる他の頂点の属性とそのメッシュの各々の頂点における法線ベクトルにより表現される法線方向に変換される。例えば,そのシルエット辺を構成する第1及び第2の頂点は,x0,y0,z0,w0視点座標系及びx1,y1,z1,w1視点座標系においてv及びvと命名され,それぞれに関連して法線ベクトルn0及びn1を有する。生成したフラップは,視点座標系において以下の座標値を有する頂点により表現される長方形である{x0,y0,z0,w0},
{x1,y1,z1,w1}, {x1+offsetX*n1x*w1,y1+offsetY*n1y,z1,w1},及び{x0+offsetX*n0x,y0+offsetY*n0y,z0,w0}。このようにして得られたフラップは,観察者との距離によらずスクリーン空間において一定の幅を有するようにして生成される。図5(B)は,係数offsetXと係数offsetYとが同じ値であり,n0zとn1zとが0である場合における,そのようなフラップの構成を示す図である。
【0067】
次のプリミティブのために,頂点キャッシュ装置からインデックス値が7と6である2つの頂点が配送され,それによりさらに2つの三角形115及び114が定義される。この情報により,ストリップにおける第2の三角形のシルエット計算を行うことができる。ただし,以前求めた4つの頂点が再び用いられることに留意しなければならない。さらに,三角形の方向を計算することにより,2つの三角形が再び用いられることとなる。すなわち,一つは問題となる三角形であり,もうひとつは隣接する三角形である。図4Bに示される場合では,それら2つの三角形はそれぞれ113と111である。この方法によれば,シルエットを検出するアルゴリズムを実装する際の計算コストを大きく軽減できる。シルエット辺において重複した幾何学的フラップが生成する事態を防止するため,例えば,観察者に面する方向などある三角形のある方向のTWNプリミティブとなるようにフラップが生成されなければならない。そのほかのプリミティブは,無視することができる。
【0068】
最後に,それぞれのプロセッシングされたTWNプリミティブについて,プリミティブエンジンが単純な固定サイズのプリミティブを出力することもできる。シルエット検出アルゴリズムや視覚化アルゴリズムの特別な場合においては,その出力は,不変な中心三角形と,シルエット辺を形成する幾何学的フラップを構成する2つの三角形とを含む。フラップについて,アルゴリズムを実装するに当たり,いくつかの属性は変化されうる。例えば,色は,黒い外観を形成する場合は,黒のものに置き換えられる。出力された三角形は,頂点キャッシュ装置から直接配送されたかのように,固定されたプリミティブアセンブル装置へと配送され,処理される。
【0069】
プリミティブエンジンが,可変サイズの拡張されたプリミティブを処理することを実現するためのアルゴリズムの例としてCatmull−Clark再分割法を実装するものがあげられるが,これに限定されない。同様に,他の再分割スキーム,例えばループ再分割スキームや,4−3再分割スキームなどを実現できる。Catmull−Clark,CC,再分割法は,複数の工程からなり,荒いメッシュから,滑らかで細かな碁盤目状のメッシュを生成し,各工程はひとつ前の工程で得られたメッシュを再分割する工程である。すなわち,再帰的な方法で基本メッシュにある規則を当てはめて細かくする。その規則は,その前の工程で得られたメッシュのそれぞれの面について新たな頂点を生成し,前の工程で得られたメッシュのそれぞれの辺について新たな頂点を生成し,前の工程での位置に関してメッシュの頂点位置を再配置する。上記の3つのいずれの場合も,次の工程のメッシュの頂点位置は,それが属する辺や面と隣接するものの頂点の線形結合に限られる。より具体的に説明すると,面点(face points)は,もとの頂点の面の位置の平均に位置する。辺点(edge point)の位置は,もとの辺の中心位置の平均,及び2つの新しく隣接する面点の平均として計算される。前工程からの頂点は,以下の式で示されるように位置される。S’=(Q + 2R + S(n-3)) /n。ここで,S’は,頂点の最新の位置であり,Qは,その頂点の周辺に位置する新たな面点の平均値であり, Rは前記頂点を共有する辺の中点の平均値であり,Sは前の工程での頂点位置であり,そしてnは頂点を共有する辺の数,すなわち頂点価である。
【0070】
次の再分割工程において頂点位置を計算するために必要とされる頂点の数は,辺の頂点は6,面の頂点は4と固定される。一方,前の工程からの頂点の位置を決めるためには,再配置される1つの隣接したものに属する全ての頂点に関する情報が必要となる。頂点のある隣接するものは,それとメッシュ面を共有する全ての頂点によって形成される。図6(A),図6(B)及び図6(C)に示される場合では,基本メッシュ106における頂点vの隣接するものは,頂点v13, v12, v, v, v, v, v10, v16, v15及びv14により形成され,その価は5である。頂点の価は,任意の価を取ることができ,したがって,再分割ルールを実行する場合,隣接における多数の頂点の数に関する情報を必要とする。しかしながら,実際は,最大の頂点価を限定することができ,ある計上を再分割するために特にぎりぎりまで制限されない状態で再分割ルールを実装することができる。
【0071】
CCスキームを全てのメッシュに用いることもできるが,パッチごとに異なるルールを用いることもできる。再分割表面パッチは,その面のひとつの隣接するものに属する頂点列としての基本メッシュの面から外れるように形成されうる。すなわち,再分割ルールがひとつの隣接するものに限定されるので,面頂点のある隣接するものの集まりは,面そのものの頂点を含む。CC再分割を2工程行った後に,再分割されたメッシュにおける全ての面は,長方形であり,面についてひとつ異常のイレギュラーな頂点がなくなることが知られている。基本となる面は,そのようにして設計しうるが,同じ結果を得るためにただ1つのCC再分割工程を行えばよい。いずれにせよ,一般的なCCスキームを失うことなく面ごとのイレギュラーな頂点を1つ以上有するイレギュラーな長方形でないように形成されるパッチの再分割を考慮することができる。本発明の第1の側面において記載したCCSPプリミティブは,上記の要件を満たし,基本メッシュの四角形郡に相当するCCSPプリミティブ郡によりCC再分割が実現できる。
【0072】
図6を参照して,インデックス/頂点バッファからCCSPプリミティブを形成する方法や,プリミティブエンジンにおいてCC再分割を行うアルゴリズムについて説明する。図6(A)は,中心四角形{v, v, v, v10}及び{v, v10, v16, v15}により形成され頂点価5のイレギュラーな頂点vを共有する2つの隣接するCCSPプリミティブ列を有する基本となる制御メッシュ106を示す図である。頂点位置属性のインデックス列を含むインデックスバッファは以下のとおりである。{18,9,5,6,10,8,4,0,1,2,3,7,11,17,16,15,14,13,12,18,9,10,16,15,5,6,7,11,17,21,20,19,18,14,13,12,8,4}。そして,CCSP列の処理は以下のとおりである。プリミティブサイズをフェッチングする工程は,頂点位置属性のインデックス群における最初の位置からプリミティブサイズの値18を取り戻し,それをプリミティブエンジンに配送する,頂点キャッシュ装置により実行される。頂点キャッシュ装置は,18個の頂点を頂点位置属性のインデックスに従ってプリミティブエンジンに配送する。頂点v12に相当するプリミティブの最後の頂点がプリミティブエンジンに配送されると,CCSPプリミティブの演算処理が始まる。プリミティブサイズ,頂点列を入手できるようになっているので,プリミティブエンジンにより実装されるアルゴリズムにより本発明の第1の側面によって導入された記述方法によりCCSPプリミティブを再構築できる。プリミティブを再構築した後は,再分割を行うための全ての情報が入手されているので,再構築されたCCSPプリミティブは,Catmull−Clark再分割表面(Jeffrey Bloz and Peter Schroder, in Proceedings of the Web 3D 2002 Symposium (WEB3D−02), pages 11−18, New York, February 24−28, 2002, ACM Press)などのパッチごとの再分割アルゴリズムにより再分割することができる。用いられた再分割スキームは,モザイクメッシュ(107)の断片として描画されるように演算処理されたCCSPプリミティブの中心四角形の細かなモザイク(tessellation)に相当する四角形の組となる。その得られた四角形のそれぞれは,さらに演算処理を施し,ラスタライズするために二つの三角形に分割され,固定されたプリミティブアセンブル装置へと配送される。これらの工程は,次のCCSPプリミティブの演算処理のために繰り返される。
【0073】
本発明の第3の側面は,本発明の第2の側面にかかる方法を用いて,固定サイズのプリミティブ又は可変サイズのプリミティブ列を処理する本発明の第1の側面に係る処理方法を実現するためのシステムに関する。
【0074】
図3に示されるように,本発明の第3の側面に係るシステムは,拡張されたプリミティブを処理するために,従来技術の頂点処理に関する工程を変化するようにされている。インデックスバッファ1100に記憶され,生成されるインデックスにしたがって,頂点バッファ1200からの頂点データをフェッチし,頂点処理ユニット4000に頂点データを変換する。変換された頂点データは,プリミティブエンジン9000に配送され,ここで拡張されたプリミティブのアセンブル(assemble)や処理が行われる。プリミティブエンジン9000で拡張されたプリミティブのアセンブル処理によって発生した単純プリミティブは,固定されたプリミティブを処理する集積回路6000のような残りの処理パイプラインへと配送される。このような工程は,拡張されたプリミティブを処理する際にのみ特に有効である。単純プリミティブを処理する場合は,前記の第2の工程がなく,転送された頂点は固定されたプリミティブを処理する集積回路6000に直接配送されればよい。そして,固定されたプリミティブを処理する集積回路6000は,例えば,図1に示されるような公知のものを適宜採用すればよい。
【0075】
図3に示されるように,本発明のシステムの具体例としては,以下のモジュールを含むシステムがあげられる。すなわち,本発明のシステムは,頂点キャッシュ制御部, VCC, 2000,第1の頂点キャッシュ記憶部, PVC, 3000,第2の頂点キャッシュ記憶部, SVC, 5000,1又は複数の頂点処理ユニット, VPU, 4000,プリミティブエンジン, PE, 9000,及び固定サイズプリミティブ集積回路, FPA, 6000である。残りのパイプラインは,三角形のように単純プリミティブの固定された列の処理を実現する固定サイズプリミティブセットアップユニット 7000 及びラステライザー 8000を具備するシステムに関する。
【0076】
図3には,上記のシステムと情報の授受や処理を行う他のユニットを示していない。それは簡潔にするためと,本発明に特徴のあるものにアッセンブルするためである。具体的に記載を省略したものとして,ホストCPUやホストメモリ,三角形のラスタライズ用パイプラインなどがある。それらの相互の情報授受は,本発明との関係で必要な範囲で説明を行う。上記したモジュールにおいては,プリミティブエンジンと可変サイズの拡張されたプリミティブを処理することに関する頂点キャッシュ制御部の論理回路を適宜修正し,その他は公知のものを適宜用いることができる。すなわち,上記以外のモジュールは,点,線,三角形など単純固定サイズのプリミティブの処理を実現するためには,現在の3次元コンピュータグラフィックスにおいて用いられているものと類似したものを適宜採用することができる。
【0077】
頂点キャッシュ制御部,VCC,2000は,以下の処理を行う。インデックスバッファの内容を解析する。PVC3000とSVC5000の状態に従って,インデックスバッファ1100からフェッチされた頂点インデックスにしたがって,PVC3000の頂点バッファの内容をフェッチする。頂点データの頂点ごとの処理を実行するために,PVC3000からVPU(s)4000へ伝えられる頂点データを制御する。VPU(s)4000からSVC5000へと伝えられうる転送された頂点データの蓄積を制御する。プリミティブの種類(可変なサイズの拡張されたプリミティブかどうか)に応じて,SVC5000の内容を,PE9000又はFPA6000に配送する(具体的には,プリミティブの種類を判断し,プリミティブが可変なサイズの拡張されたプリミティブであればSVC5000の内容を,PE9000に配送する)。可変なサイズの拡張されたプリミティブを処理する場合は,PE9000にプリミティブのサイズに関する情報を配送する。PE9000に,プリミティブのサイズに関する情報と,全てのプリミティブの頂点に関する頂点データが配送された後には,可変なサイズの拡張されたプリミティブに関する処理を始める可能性があることを伝える。上記のとおり,本発明の好ましい態様は,プリミティブサイズはPE9000にのみ配送される。さらに,SVCの内容はPEに配送され,PE9000に,プリミティブのサイズに関する情報と,全てのプリミティブの頂点に関する頂点データが配送された後には,可変なサイズの拡張されたプリミティブに関する処理を始める可能性があることを伝えられる。インデックスバッファを解析する工程も,本発明に特有の工程であり,プリミティブサイズの抽出や,可変サイズの拡張されたプリミティブの処理に関連するものである。他の処理工程は,単純プリミティブに行われている公知の処理工程を適宜採用することができる。
【0078】
第1の頂点キャッシュ記憶部PVCは,ホストメモリから連続的に大量の頂点バッファからの情報が伝えられてキャッシュされる場所である。PVCは,頂点ごとのプロセッシング(per-vertex processing)において,配送されなかった頂点データがVPU(s)に配送されるように貯蔵するものとしても機能する。比較的大きく連続的なメモリブロックに対して,配送されなかった頂点データによりPVCが埋められることにより,メモリ移送に関して待ち時間の問題を軽減できる。また,PVCとVPU(s)が物理的,又は電気的に近くに設けられることにより,PVC中に配送されておらず処理されなければならない頂点データがある場合の移送のための待ち時間を軽減できる。
【0079】
頂点処理ユニットVPU(s)は,ある固定された機能を達成するモジュールであるか,例えば,OpenGL及び/又はDirect3D 3D graphics APIsなどに基づく頂点処理を実行できるようにプログラマブルなモジュールであっても良い。VPU(s)は,位置,色,テキスト座標など様々な移送されなかった頂点属性を入力として受け取り,位置,色,テキスト座標,視点ベクトルなど移送される頂点の様々な属性を生成する。入力と出力の数や次元,すなわち入力と出力の頂点情報のフォーマットは異なっても良い。VPU(s)は,PVCから情報を受け取り,その出力をSVCへと伝える。
【0080】
プリミティブエンジンPEは拡張されたプリミティブに関する情報処理を行うためのある固定された機能を実現するモジュールか,又はプログラマブルなモジュールである。PEを固定された機能を実現するモジュールとして実装することは,高いパフォーマンスを持って,限られた機能を実現するといった用途には有効である。PEをプログラマブルなモジュールとして実現することは,拡張されたプリミティブを処理するアルゴリズムに選択の自由度を与えることができるので,好ましい。拡張されたプリミティブを処理するモードにおいて,PEは,SVCから移送された頂点に関する出力を受け取り,プリミティブをアッセンブルし,プリミティブに関する処理を行って,FPAが理解できる単純プリミティブの列として出力する。PEは,本発明に独特なモジュールである。一方,プログラマブルなモジュールとして実装する場合は,単純なプリミティブ列の形で得られる拡張されたプリミティブについての演算結果をFPAに移送するように制御する機能を付加するほかは,プログラマブルなVPU(s)と多くの機能ロジックを共用するなど,プログラマブルなVPU(s)と同様の機能を有すればよい。PEは,FPAの場合と同様に,SVCとVCCから入力情報を受け取る。PEと他の装置との主な違いは,拡張されたプリミティブサイズの情報と,可変サイズの拡張されたプリミティブを処理する際には拡張されたプリミティブの全ての頂点を配送するための頂点データを配送したことについての通知信号の授受が必要であることに起因する。VCCは,以下に説明されるように頂点データのためにプリミティブサイズに関する情報をPEに伝えるために同じデータチャネルを用いる。
【0081】
最後に,SVCから配送された頂点列から固定サイズプリミティブ集積回路は,点,線及び三角形といった単純プリミティブのアッセンブルを行うための固定された機能を有するモジュールである。SVCは,点,線,ラインループ,三角形,三角形ストリップ,及び三角形ファンといった,openGLやDirect3Dといった最近の3DグラフィックAPIsに用いることができるプリミティブの集合を実現する。拡張されたプリミティブをプロセッシングする場合は,FPAはPEから入力情報を受け取るが,PEが,移送された頂点に関する情報の授受についてのプロトコルとして,SVCやVCCがFPAへの頂点データ移送を行うためのものと同じものを用いるために,このモジュールにとって情報源は完全に透明であっても良い。
【0082】
頂点キャッシュ制御部は,チップ上のすべてのプリミティブ処理を制御する。頂点キャッシュ制御部は,プリミティブのための頂点データがPVC及びSVCに記憶された情報を用いて,インデックスバッファに記憶された情報を介して間接的に参照される場合において,インデックスバッファ及び頂点バッファの処理を加速することができる。また,頂点キャッシュ制御部は,プリミティブのための頂点データがPVCを用いて頂点バッファ内の頂点データ列によって形成される場合は,頂点バッファのみを参照することにより,処理を加速できる。VCCは,固定されたサイズのプリミティブを処理するモードと,拡張されたサイズのプリミティブを処理するモードの2つのモードを,プリミティブに応じて演算処理する。VCCの演算処理は,単純プリミティブや固定されたサイズの拡張されたプリミティブの演算処理する場合と同様の処理が行われる。
【0083】
最初に,現在処理する頂点に対応する頂点属性インデックスセットの演算処理を行うために,移送されなかった頂点に関する頂点データをロードして,VPU(s)に送る。もしも,現在サンプルされたSVCから頂点属性インデックス列に相当する移送された頂点がなく,PVCにも移送されていない頂点データがない場合は,VCCは,ホストメモリからPVCへと頂点バッファに記憶される内容の塊をアップロードする。その塊は,PVCの空いているスペースを用いて質問とされるインデックス列に関する頂点データを含んでいるか,そこに前から記憶されている使用されていないデータを上書きする。その塊は,他のインデックスの頂点データを含んでいてもよく,それゆえその塊はPVCに存在するのであれば更に利用されても良い。PVCにおいて頂点データが利用可能となると,ラウンドロビン(round-robin)方式か又は他の方法により,VCCはVPU(s)への配送を始める。もし変換された頂点データが,SVCには存在せず,PVCに移送されないものが存在する場合は,VCCはホストメモリにアクセスせずにVPU(s)からPVCへの頂点データの移送を始める。このため,ホストメモリへのアクセス時間を削減できる。このようにして,PVCは,移送されない頂点データに関する演算処理をする処理速度を向上させることにつながる。
【0084】
ホストメモリにおいて異なる頂点属性の記憶位置は,異なるスペーシングと属性サイズのために,好ましくは,分散配置される。VCCは,そのような分散された頂点属性からのVPUへの入力データをアッセンブルする。具体的な実装では,VPUへの入力は4つのコンポーネントのフローティングベクターであり,それぞれの頂点に関する入力データはそのようなベクトルのいくつかにまたがることができる。VCCは,必要なタイプの変換処理を行うことで,分散された頂点属性から入力データのアッセンブルを行う。例えば,2バイトの整数値を浮動小数点のものに変換し,パッキング属性をそのコンフィグレーションに応じて4つのベクトルに変換する。例えば,2セットの2つのコンポーネントテクスチャー座標属性は,4つのコンポーネント入力ベクトルへ変換される。そして,VPUが動作可能な時間に沢山の入力データとして移送される。
【0085】
頂点データに関する演算処理を終えて,1つ又はいくつかのVPS(s)が利用可能な状態となった際には,移送されるべき次の頂点に関する入力がVPUに4つのコンポーネントの浮動小数点ベクトル(4 component floating point
vectors)として配送される。ある数のベクトルを受け取った後に,VPUは頂点に関する演算処理を始める。その数は,頂点ごとの属性の数や,それらのパッキングに依存し,VPUを経て決定される。VPUが移送を終えると,VPUは,4つのコンポーネントの浮動小数点ベクトルをSVCへと出力する。いくつかのVPUが並行して動作するときは,VCCは頂点列を表現するためのVPUがSVCへアクセスすることを管理する。移送された頂点のフォーマット,すなわち,属性の数や出力ベクターへのパッキングは,入力されたものと異なるものであっても良い。
【0086】
SVCの貯蔵エンティティも4つのコンポーネントの浮動小数点ベクトルである。それ故,それぞれの移送されたベクトルは,SVCへの入力列によって占められる。
実際の態様においては,SVCは,単にFIFOキューを行い,移送されたデータを最近処理された頂点へと移送する際にFIFOがオーバーフローした場合には,最も古いデータを急いで出力する。勿論,LRU(least recently used)のようなその他の方法をSVCが格納することを妨げるものではない。本発明の本質は,そのような些細な事柄とは関係ないところにある。
【0087】
単純プリミティブ列の演算処理においては,移送された頂点データは,頂点列の順番に応じてSVCからFPAへと配送される。FPAは,所定の数の4コンポーネントベクターをSVCから受け取った場合に,頂点演算を始めるようにされている。所定の数は,移送された頂点についてVPUが出力したベクトルの数と等しい。FPAは,移送された頂点列から三角形をアッセンブルし,そしてラスタライズ処理のためにラスタライゼーションパイプラインへと配送される。
【0088】
拡張されたプリミティブの演算処理はPEにおいてなされるので,変換された頂点データは,最初にPEへ送られる。PEも,固定されたサイズのプリミティブの演算処理と,可変サイズの拡張されたプリミティブの演算処理という,主に2つの演算モードを有する。固定サイズのプリミティブの演算モードにおいて,PEは,FPAと同様にSVCから所定の数の4つのコンポーネントベクトルを受けると,頂点の演算処理を開始する。拡張されたプリミティブの演算処理結果は,単純なプリミティブの列からなる形式で,PEからFPAへと配送される。PEから出力される単純なプリミティブの列は,単純プリミティブの頂点列として再現可能な形式で実現され,プリミティブ列は4つのコンポーネントベクトルをもって表現される。これは,VCC,PVC,VPUs,SVC,FPAなど単純プリミティブの演算処理に用いられる多くのハードウェアは,PEに拡張されたプリミティブ処理のための演算処理機構を付加するのみで,拡張されたプリミティブを処理する際にも再利用できることを意味する。更に,ホストメモリに格納される頂点属性に関しては,単純プリミティブの演算処理と同程度しか頂点キャッシュを利用しないので,拡張されたプリミティブの演算処理を迅速に行うことができ,その結果,拡張されたプリミティブに関するチップ上での迅速な演算処理を実現できる。
【0089】
固定サイズの拡張されたプリミティブを処理するモードにおいて,PEはそれぞれの頂点データを受け取った後,すなわち,特定の数の4つのベクトルをSVCから受け取った後に演算処理アルゴリズムを実行する。演算処理アルゴリズムは,受け取った頂点データの蓄積を管理するとともに,固定サイズの拡張されたプリミティブを頂点列から再構築した瞬間やその演算処理が簡潔された瞬間を検出する。
【0090】
固定サイズの拡張されたプリミティブを演算処理する際のひとつの好ましい動作システム例は,TWNプリミティブ列を演算処理するモードであり,それは上述した固定サイズの拡張されたプリミティブの演算処理にしたがって行われる。TWNプリミティブの列は,中心三角形列の中のひとつと同様の空間的な整合性を有する。しかしながら,プリミティブのサイズは,単なる三角形の2倍であるから,キャッシュサイズがキャッシュヒットレートが中心三角形列の演算処理のものと同様に刷るために,2次的キャッシュのサイズを大きくしなければならない。
【0091】
TWNプリミティブの列は,頂点データのフェッチング,移送,及びキャッシングに関して,単純プリミティブの列と同様の演算処理が行われる。相違点は,変換された頂点データの送り先がFPAではなくPEであるという点である。そして,変換された頂点データは,入力された頂点の順にSVCからPEへとひとつひとつ配送される。
【0092】
可変サイズの拡張されたプリミティブの演算処理を行うために,VCCの論理回路は,本発明において,以下の手段を提供するように修正される。すなわち,インデックスバッファの内容を正確に解析して,プリミティブを形成する頂点の頂点位置属性の頂点属性インデックスからプリミティブサイズを分離する手段,PEへとプリミティブサイズに関する情報を配送する手段,及び,これから処理を行う,まだ配送されていない可変サイズの拡張されたプリミティブの頂点の数を計測して,PEへ伝えるとともに,プリミティブに関する演算処理を始めさせるために頂点データの配送が終わったことをPEへと知らしめる手段,である。この修正は,本発明の特有のものである。VCCの残りの機能は固定されたサイズのプリミティブを演算処理するものをそのまま用いることができ,したがって固定されたサイズのプリミティブを演算処理するための機能をそのまま用いることができる。
【0093】
具体的な具現例では,頂点位置属性のためのインデックスバッファ中のプリミティブの初めのインデックスは,VCC論理回路の可変サイズの拡張されたプリミティブ演算処理のモードにおいてそのサイズを決定する。図7に基づいて説明すると,VCC2000は,その内部にある頂点カウンター2100を初期化し,次のプリミティブの始まりを検出するために次に処理をされるインデックスごとにカウンター値を減らす。プリミティブの演算処理においてPEが利用可能となっているので,サイズは,拡張されたプリミティブを形成するための頂点列の頂点属性がSVCから配送されると同じパスを用いてPE内のプリミティブサイズレジスタ9100へと配送される。プリミティブサイズレジスタ9100は,PE内のプリミティブ演算処理アルゴリズムによりアクセスできるように実装され,頂点列を用いてプリミティブを再構築できるようにされている。
【0094】
プリミティブサイズに関する情報がPEからVCCへと配送されるので,VCCがSVCからPEへと変換された頂点データを送り始めることができることとなる。頂点データのフェッチング,移送及びSVCへの配送に関する演算処理は,固定プリミティブのものと同様である。頂点の配送指令は,サイズ情報を含む最初のインデックスに続くインデックスバッファに記憶されるインデックス列により決められる。PEにプリミティブを演算処理するためのアルゴリズムは,頂点情報を蓄積し,VCCの頂点カウンター2100の数値を減らすために,それぞれの頂点の属性列がPEへと配送された後となるように実装される。カウンターが0になったときは,全ての頂点データがPEへと配送されたことを意味し,その旨の通知の信号が接続2300を介して,VCCからPEへと配送される。接続2300を介して信号を受領すると,PEは内部でのプリミティブ演算処理を始める。システムオペレーションのひとつの好ましい例は,基本となるCCSPプリミティブ列として記述されるコントロールメッシュから再分割表面を発生させるためのCCSPプリミティブ列に関する処理を行うことである。演算処理は,可変サイズの拡張されたプリミティブの演算処理にしたがって行われる。CCSPプリミティブ列との空間的な整合性(Spatial coherency)は極めて高い。実際に,イレギュラーな頂点以外の隣接するパッチの演算処理において,CCSPプリミティブは16個の頂点のうち12個もの頂点を共有することができ,したがって次のCCSPプリミティブを演算処理するために4つのみの頂点を加える演算処理を行い,SVCへと配送すればよい。このようにして,拡張されたプリミティブを演算処理するための頂点キャッシュの使用は,データのアクセスコストを大幅に軽減し,パッチの近隣における再分割パッチのチップ上での演算処理を実現できることとなる。図6に示される例では,全てで22個の頂点のうち14個を共有する連続する2つのパッチであり,SVCのヒット率は,約64%であり,より長い列の場合はより高くなると考えられる。そのような大きなプリミティブに関する処理を行うために,頂点キャッシュやインデックスバッファ/頂点バッファを用いなければ,頂点処理のために,極めて大きなメモリコストが必要となると考えられる。
【0095】
上述のような接続2300から信号を受領して処理を行うCCSPプリミティブの再分割パッチの場合は,演算処理に必要な全ての情報はPEに配送されているので,PEがCatmull−Clark再分割表面アルゴリズム(Jeffrey Bolz and Peter Schroder, in Proceedings
of the Web3D 2002
Symposium (WEB3D-02))や,the Web3D 2002 Symposium (WEB3D-02), pages 11-18, New York,
February 24 28
2002, ACM Press,に開示された演算処理や他のパッチごとの再分割アルゴリズムに従って,CCSPプリミティブの中心四角形に含まれる再分割メッシュを作成し始めることができる。再分割パッチの演算処理の結果は,他の拡張されたプリミティブと同様に,入力情報に応じて,三角形や,FPAにおける三角形ストリップ,などとされる。本発明の別の側面は,上記のようなシステムを集積回路において実現するものであり,固定された又は可変サイズの拡張されたプリミティブをオンチップで演算処理できるものである。また,そのような集積回路を含むグラフィックカードや,そのような集積回路を含むビデオゲーム装置をも提供する。
【0096】
本発明は,Catmull−Clark再分割スキームによって生成された再分割表面の高速な処理を実現するために,上記のような集積回路を用いるシステムに関する。本発明の拡張されたプリミティブを演算処理するための装置は,リアルタイムレンダリングのインタラクティブな3次元コンピュータグラフィックスに用いることができる。その3次元コンピュータグラフィックスとして,同時にポリゴンのメッシュの多数の頂点にアクセスするためのアルゴリズムを実装するとともに,NURBSパッチによる碁盤の目や再分割された表面により表現された複雑な幾何学的な形状のリアルタイムなレンダリングに関するものがあげられる。
【0097】
例えば,そのような装置は,3次元画像を視覚化する3次元コンピュータグラフィックスにおけるハードウェアアクセレータカード,パーソナルデジタルアシスタンス,ビデオゲーム装置,カーナビゲーションシステムなどに用いることができる。
【実施例1】
【0098】
これらの画像は,株式会社デジタルメディアプロフェッショナルのPICAとして知られるエミュレーターに本発明の装置を実装させて,各種3次元コンピュータグラフィックス画像を得た。図8A,図8B,図9A,図9B,図10A,図10B,図11A及び図11Bは,本発明の装置を用いて得られた画像結果を示す。図8Aと図8Bとは,シルエットの方向を比較し,視覚化の可否を検討するものであり,図8Aは視覚化できず,図8Bは視覚化できたものである。例えば,マンガのキャラクタをアニメーションするといった形状のアウトラインを強調する必要があるような用途には,図8Bに示されるようなシルエットによる視覚化を用いることができる。
【0099】
図9Aと図9Bとは,本発明における再分割を行う前後の簡単なディスクのような形状のものをレンダリングした図を示す。図9Aは,もとの荒いメッシュを用いたものを示し,図9Bは,再分割過程においてポリ銀を追加して再分割したメッシュを用いたものを示す。図10Aと図10Bとは,図9A及び図9Bに比べてより複雑な形状のものに再分割を行ったものを示す図である。図11A,図11Bは,それぞれワイヤーフレームを除いた図10Aと図10Bのシェーディングに関する。本発明は,頂点キャッシュによりアクセレートされ,再分割アルゴリズムをオンチップで実装できる。よって,本発明は,ビデオゲームで重要な特徴である単純なメッシュに基づいて再分割を行うことにより得られる複雑な形状について実時間での発生や視覚化を行うことができることとなる。
【産業上の利用可能性】
【0100】
本発明の拡張されたプリミティブを演算処理する装置は,リアルタイム3次元コンピュータグラフィックスの分野などで利用されうる。


【特許請求の範囲】
【請求項1】
3次元コンピュータグラフィックスにおいて,頂点キャッシュを用いて固定サイズ及び可変サイズの拡張されたプリミティブ列の演算処理を行うための方法であって,
可変サイズの拡張されたプリミティブのプリミティブサイズを頂点位置属性のインデックスバッファからフェッチングし,前記プリミティブサイズを,プログラマブルな拡張されたプリミティブのアッセンブル及び演算処理を行うユニットであるプリミティブエンジンへ配送する工程と,
頂点キャッシュから頂点データがなくなった際には,拡張されたプリミティブの頂点に関する頂点データを前記頂点キャッシュへフェッチし,頂点データを変換し,そして蓄積する工程と,
拡張されたプリミティブをアッセンブルし,演算処理するために,変換された頂点データを前記プリミティブエンジンへ配送する工程と,
前記プリミティブエンジンにおける拡張されたプリミティブをアッセンブルし演算処理する工程と,
プリミティブエンジンにおける拡張されたプリミティブの演算処理によって生じる固定サイズの単純プリミティブをプリミティブのラスタライズ用パイプラインへ運ぶ工程と,
を含む方法。
【請求項2】
前記可変サイズの拡張されたプリミティブのプリミティブサイズを頂点位置属性のインデックスバッファからフェッチングする工程は,
拡張されたプリミティブの頂点についての頂点位置属性列を記述するインデックスバッファへアクセスすることと,プリミティブを形成する頂点を参照する次のNiインデックスとともに,そのプリミティブに関する最初のインデックス値を取り戻すことにより行われ,
ここで,Niはi番目のプリミティブの取り戻された値を示し,前記インデックスバッファにおけるそれより前のプリミティブのサイズ位置に続いて,次のプリミティブのサイズはNi+1番目の位置に格納される,
請求項1に記載の方法。
【請求項3】
前記頂点キャッシュから頂点データがなくなった際には,拡張されたプリミティブの頂点に関する頂点データを前記頂点キャッシュへフェッチし,頂点データを変換し,そして蓄積する工程は,
固定サイズの拡張されたプリミティブの場合には,固定サイズの拡張されたプリミティブ又は頂点バッファに記憶されるものを整列することにより示される頂点バッファから行われ,
可変サイズの拡張されたプリミティブの演算を行う場合には,頂点バッファ内の内容を参照することにより関係しない頂点位置属性のインデックスを含むインデックスバッファのプリミティブと関連する最初のインデックスを有する固定サイズの拡張されたプリミティブ又は可変サイズの拡張されたプリミティブの場合は,1又は複数のインデックスバッファから選択された列の頂点バッファから行われる,
請求項1に記載の方法。
【請求項4】
3次元コンピュータグラフィックスに用いられるシステムであって,
最近用いられた頂点バッファの部分にアクセスでき,前記頂点バッファから頂点データを取得するための初期頂点バッファストア(PVC)と,
前記初期頂点バッファストア(PVC)から得られた前記頂点データを移送するための1つ又は複数の頂点プロセッシングユニット(VPU)と,
前記頂点プロセッシングユニット(VPU)により最近処理された変換された頂点データにアクセスするための第2の頂点キャッシュストア(SVC)と,
前記第2の頂点キャッシュストア(SVC)から配送された前記頂点データによりアセンブルされる単純及び拡張されたプリミティブの蓄積処理及び演算処理を行い,前記演算処理の演算結果は一連の単純プリミティブとなるプリミティブエンジン(PE)と,
前記一連の単純プリミティブから一連の固定サイズの単純プリミティブを収集し、そして,前記一連の固定サイズの単純プリミティブをフラグメントにラスタライズし,プロセッシングパイプラインへ前記フラグメントを出力するためのラスタライザと,
インデックスバッファにアクセスし,前記インデックスバッファに格納される内容を配送し,
拡張された可変サイズのプリミティブを処理する際には,プリミティブサイズに関する情報を前記プリミティブエンジン(PE)に伝え,
前記初期頂点バッファストア(PVC)が前記頂点バッファから頂点データを取得することを制御し,
前記初期頂点バッファストア(PVC)に蓄積された頂点データの収集を制御するとともに,移送された頂点データが前記初期頂点バッファストア(PVC)から喪失した場合は,移送のために前記頂点プロセッシングユニット(VPU)へ収集された頂点データを移送するように制御し,そして,
単純プリミティブ及び拡張されたプリミティブに関する情報を収集すると共にそれらの処理を行うために,前記第2の頂点キャッシュストア(SVC)から前記プリミティブエンジン(PE)へ頂点データが配送されることを制御する,
頂点キャッシュ制御装置(VCC)とを具備する,
システム。
【請求項5】
可変サイズの拡張されたプリミティブの演算処理を行う場合に,プリミティブエンジンへプリミティブサイズを配送する工程は,前記プリミティブを形成する頂点を形成するためにプリミティブエンジンへと変換された頂点データも配送される,
請求項4に記載のシステム。
【請求項6】
前記頂点キャッシュ制御装置(VCC)が固定サイズのプリミティブ及び可変サイズのプリミティブの処理するように設計されており,前記固定サイズのプリミティブの処理は固定サイズの単純プリミティブの演算処理及び固定サイズの拡張されたプリミティブの演算処理に用いられ,一方,可変サイズのプリミティブの演算処理モードは可変サイズの拡張されたプリミティブの演算処理に用いられる,
請求項4に記載のシステム。
【請求項7】
請求項4に記載のシステムを含み、一連の固定されたサイズの拡張されたプリミティブは一連の可変サイズの拡張されたプリミティブの演算処理を行うための集積回路。
【請求項8】
請求項7に記載の集積回路を具備するグラフィックスカード。
【請求項9】
請求項7に記載の集積回路を具備するビデオゲームマシーン。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−14744(P2012−14744A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2011−231190(P2011−231190)
【出願日】平成23年10月20日(2011.10.20)
【分割の表示】特願2008−541994(P2008−541994)の分割
【原出願日】平成19年10月31日(2007.10.31)
【出願人】(502401703)株式会社ディジタルメディアプロフェッショナル (26)
【Fターム(参考)】