(58)【調査した分野】(Int.Cl.,DB名)
パッチ又はサブ四角形内における再利用のための頂点データを記憶するステップ、をさらに含み、前記パッチ又はサブ四角形の2つ以上の細分割された部分の一部であるエッジを細分割するように追加される頂点が、パッチ又はサブ四角形ごとに1回だけ決定される、請求項1乃至6のうちいずれか1項に記載の方法。
パッチ又はサブ四角形内における再利用のための頂点データを記憶するように配置されたメモリ素子、をさらに含み、前記パッチ又はサブ四角形の2つ以上の細分割された部分の一部であるエッジを細分割するように追加される頂点が、パッチ又はサブ四角形ごとに1回だけ決定される、請求項9乃至13のうちいずれか1項に記載のハードウェアテッセレーションユニット。
実行されたときに少なくとも1つのプロセッサに請求項1乃至8のうちいずれか1項に記載の方法を実行させるコンピュータ実行可能プログラムコードを記憶したコンピュータ読取可能記憶媒体。
【発明を実施するための形態】
【0012】
本発明の実施形態が、以下に、単に例として説明される。これら例は、出願人にとって現在分かっている本発明を実施するための最良の方法を表すが、このことを達成することができる方法はこれら例だけではない。本説明は、例の機能と例を構築し及び動作させるステップのシーケンスとを明記する。しかしながら、同一の又は均等の機能及びシーケンスが、異なる例によって達成され得る。
【0013】
エッジテッセレーション係数(tessellation factor;TF)を使用する多数の既知のテッセレーション方法が存在し、エッジTFは、パッチの(例えば、四角形(quad)又は三角形の)各エッジについて定義され、エッジ(及び、ゆえにパッチ)が何回細分割される(sub-divided)べきかを決定する。
図1は、種々のエッジテッセレーション係数を、ただし各エッジについて同じテッセレーション係数で使用するときに、結果として生じる三角形が如何に異なるかを示す。
【0014】
図1における始めの5つの例(a)〜(e)は、
(a)整数区分化(Integer partitioning)、すべての4つのエッジについてエッジTF=3
(b)整数区分化、すべての4つのエッジについてエッジTF=4
(c)2の累乗整数区分化(Power of two integer partitioning)、すべての4つのエッジについてエッジTF=2
(d)2の累乗整数区分化、すべての4つのエッジについてエッジTF=4
(e)2の累乗整数区分化、すべての4つのエッジについてエッジTF=8
を示す。
【0015】
整数区分化と2の累乗整数区分化とを用いると、各エッジに沿った頂点は、常に、均等に間隔を空けられる。しかしながら、細分割レベルが変わり、三角形が小さくない場合、望まれない視覚的アーチファクト(ポッピングなど)が発生する可能性が高い。ただし、小さいポリゴンがさらなるレンダリングオーバーヘッドを招くとき、ポリゴンをその小ささにすることは望ましくない。この効果は、2の累乗整数区分化について、ステップサイズがかなり大きくなり得るとき、特に劇的である。
【0016】
図1における最後の4つの例(f)〜(i)は、(例(a)〜(e)とは異なり、)様々なオフセットにおいて頂点を生成する小数区分化(fractional partitioning)方法を示し、
f)奇数(Odd)小数区分化、すべての4つのエッジについてエッジTF=3.0
g)奇数小数区分化、すべての4つのエッジについてエッジTF=4.0
h)偶数(Even)小数区分化、すべての4つのエッジについてエッジTF=3.0
i)偶数小数区分化、すべての4つのエッジについてエッジTF=4.0
である。
【0017】
いくつかの既知のシステムは、(例えば、例(f)〜(i)に図示されるとおり)「小数の」詳細レベルを許容することによって、エッジに沿って「ポッピング」アーチファクトを回避する。これにおいて、いかなる新しい頂点も、最初、既存の頂点の場所に作成され、こうした頂点が、詳細レベルが増加するとき、パラメータ空間におけるほんの1つのエッジについて
図2(a)に図示されるとおり、位置へ徐々に「スライドする」。表現における突然のジャンプが大幅に除去されるが、こうしたスキームは、邪魔になる、不安定な「遊泳(swimming)/揺動(wobbling)」アーチファクトを被る可能性があり、該アーチファクトは、ディスプレースメントマッピング(displacement mapping)の使用によって悪化させられる可能性があり、このことは
図2(b)及び(c)を参照して説明され得る。
【0018】
図2(b)は、一例示的な変位マップ断面を示し、
図2(c)は、テッセレーション係数が変更されるとき、上記断面が如何にエッジ(例えば、
図2(a)に示されるエッジ)に適用されるかを示す。矢印201〜204は、テッセレーション係数が4.0から5.0に(矢印201、202)、及び5.0から6.0に(矢印203、204)変わるとき、頂点の変位(displacement)が如何に変わるかを示す。
【0019】
ポッピングに対する別の解決策は、英国特許第2388507号に説明され、
図3に示されている。この例において、曲線は、パッチのエッジの1つであり、点A及びBが角の頂点のうちの2つであるように見なされることができる。さらなる細分割が実行される場合、このことは、曲線上に新しい点Cを生み出すことになり、この点Cは、中間の頂点のとり得る位置に対応することになる。反対に、細分割の数が同じままである場合、曲線は、線ABによって近似されることになり、この線上において点Dに中間の頂点が存在することになる。細分割のレベルが変わるとき、点CとDとの間で円滑な移行を達成するために、新しい点Eが線CDに沿って算出され、これが中間の頂点の値として使用される。Eの位置は、
E=wC+(1-w)D
を用いて算出されることができ、ここで、wは重み付け係数であり、細分割比の小数部分から導出され、Dは特定の細分割レベルにおいて導出される第1の頂点値であり、Cは、より微細な細分割レベルにおいて導出される第2の頂点値である。上記の式を用いてEを算出することによって、新しい中間の頂点が点C及びDの間で円滑に移行する。
【0020】
テッセレーション方法を選択するときの他の検討は、テッセレートされる(tessellated)モデルのレンダリングコストが三角形の数に部分的に依存するため、エッジテッセレーション設定の所与の組み合わせに対して生成される三角形の数であるだけではなく、さらに、こうした三角形のアスペクト比もある。典型的に、グラフィックスシステム(ハードウェア又はソフトウェアのいずれか)は、最小の周囲長さ対面積比(perimeter to area ratio)を暗に示す所与の画面面積(すなわち、画面画素)の「等辺の」三角形を、同じ面積をより大きい周囲長さ対面積比で有する(細長い)三角形より迅速に、レンダリングする。さらに、値、例えばシェーディングの結果などが頂点において計算され、三角形にわたって補間されるとき、より多くの等辺形状の三角形を有することは、より少ないアーチファクトをもたらすであろう。
【0021】
さらなる検討は、三角形のパターンを生成するために使用されるアルゴリズムの複雑さである。いくつかの既知の小数テッセレーションスキーム(例えば、Guardardoにより開発され、Akenine‐Moeller及びHainesによる“Real‐Time Rendering”、ISBN1‐56881‐182‐9、524〜525頁に説明される方法など)は、不均一のテッセレーションをもたらす。アルゴリズムが、簡素及び/又は規則的に保たれることが可能である(例えば、違ったふうに取り扱われる必要がある多くの「特別なケース」を有することがない)場合、このことは、ハードウェア又はソフトウェア実装コストを低減させることができる。
【0022】
最後の望ましい検討は、テッセレーションパターンにおける回転/反射対称性である。例えば、時計回りの順序などにおいて与えられた頂点ABCDと適切なテッセレーション係数とを用いて定義された四角形のパッチが、BCDAとしてリストアップされた頂点を有する「等辺の」四角形と同じ最終的な三角形メッシュを生じさせることは、好ましいであろう。いくつかの既存のテッセレーションスキームは、この特性を保証しない(例えば、
図1の例(f)及び(g)における「奇数」テッセレーション方法の中間の四角を参照)。
【0023】
以下に、エッジテッセレーション係数を使用しないが、代わって四角形又は三角形の各頂点(又は、角)について定義されたテッセレーション係数を使用するテッセレーション方法が説明される。該テッセレーション係数は「頂点テッセレーション係数」と呼ばれ、これらは、上記で説明された既知の方法において使用されるエッジテッセレーション係数から区別される。
【0024】
本説明において、サーフェスパッチは、通常有限の、N次元のサーフェス(又は、等値線(isoline)の場合、N次元の曲線セグメント)を指し、このサーフェスは、四角形又は三角形のいずれかである境界を定められた2Dドメイン(又は、等値線の場合は1Dの線セグメント)への、パラメトリックマッピング関数の適用の結果である。結果として生じるサーフェス又は等値線は、デカルトの(又は、同種の)空間的位置決めのための3(又は4)次元だけでなく、テクスチャ座標などの他のパラメータをさらに含み得るので、N次元と見なされることができる。上記で説明されたとおり、サーフェスパッチを曲げて、該サーフェスパッチが表現するオブジェクトのサーフェスにフィットさせ、かつ/あるいはディスプレースメントマッピングを適用させてもよい。しかしながら、テッセレーション(すなわち、パッチの細分割)は「ワールド空間(world space)」において実行されず(すなわち、テッセレーションは、曲げられたサーフェスパッチに対して実行されない)、しかし代わって、ドメイン空間において実行される(このドメイン空間はさらにパラメトリック空間又はパラメータ空間と呼ばれることがある)。上記ドメイン空間において、ドメイン内の任意の位置が、ドメイン空間座標として知られる2つの座標(u,v)によって説明されることができ、このことは、テッセレーション処理が最終的なサーフェスに存在するいかなる湾曲からも独立であることを意味する(しかしながら、ユーザは、テッセレーション係数を決定するとき、上記湾曲を考慮に入れてもよい)。このテッセレーション方法を説明するとき、用語「パッチ」は、ドメインの境界を定める2つ、3つ、又は4つの頂点の順序付けられたセットを(等値線、三角形、又は四角形について、それぞれ、)指すように用いられる。用語「頂点」は、概して、場所に加えて他の属性を説明するように用いられ、上記属性は、コンテキストに依存して異なる。例えば、ドメインシェーダ(domain shader)からの入力制御点と出力頂点とは、3D位置に加えて他のパラメータ、例えば、法線、タンジェント、テクスチャなどを含み、一方、テッセレータ(tessellator)内の頂点(すなわち、テッセレーション方法内で使用される頂点)は、ドメイン空間座標と頂点テッセレーション係数とを含む。ゆえに、テッセレータ内の上記頂点は、入力制御点又は最終的な三角形を形成する結果的なN次元の頂点と同じでない。
【0025】
パッチの角におけるTFを指定することで、テッセレートされたパッチ内に結果として生じる三角形のサイズ及び形状において、不意の変更がより少なくなる。なぜならば、エッジの区分化は、固定されず(すなわち、エッジTFによって指定される値に)、しかし代わって、エッジの各端部における頂点TFによって決定され、(パラメータ空間において1Dの意味において)元のエッジに沿って円滑に変動して細分割の複数レベル間で徐々の移行を生じさせるだけでなく、さらに、他のTFとの組み合わせにおいて、2Dの意味においてパッチをかなり円滑に横断することを可能にする。このことは
図4にグラフィカルに示されており、
図4は、パラメトリック空間において、既知の方法を用いてエッジにおけるテッセレーション係数を定義すること(
図402)と、角(又は、頂点)におけるテッセレーション係数を定義すること(
図404)とにおける差を示す。第1の
図402は、2及び4のエッジテッセレーション係数を有する2つの四角形の場合において、エッジにわたり、2の累乗により定義されたテッセレーション係数を使用した結果である。第2の
図404は、以下に説明される方法と、2(頂点406、408について)及び4(頂点410〜416について)の頂点テッセレーション係数とを使用している。
【0026】
以下に説明されるとおり、頂点に基づくテッセレーション係数と共に、この方法は、望まれない視覚的アーチファクトを最小化する(あるいは、除去する)。なぜならば、多くの実施形態において、あらゆる頂点(例えば、細分割の一部として三角形に追加される各々の新しい頂点)は、a)ワールド空間におけるその最終的な位置か、あるいはb)ワールド空間におけるその最終的な位置であって、すぐ下のレンジのTFにおいて三角形の角であった2つ又は3つの他の頂点の、中間点か、あるいはc)前の2つの選択肢の線形のブレンド(blend)である点(例えば、
図3に示される手法を適用して、(a)及び(b)により達成される複数位置間の結果をブレンドすることによって)か、のいずれかに追加されるからである。上記の結果は、詳細レベル(及び、ゆえにTF)が変化するとき、頂点が、いくつかの従来技術において(例えば、
図2の例において示され、上記で説明されたとおり)のようにサーフェスにわたり「スライド」しないことであり、スライドすることは、遊泳/揺動アーチファクトを引き起こす可能性がある。代わって、「より少ない」TFに存在する2つ、3つ、又は4つの頂点についての中間点に最初に導入される頂点が、詳細レベル(LOD)が増加するとき、ワールド空間におけるその最終的な位置へゆっくり「発展する」(例えば、このことは、オブジェクトに対してより近くに移動しているビューアによって決定されることができる)。LOD/TFが減少するとき、逆の処理が発生する。
【0027】
図5及び
図6は、再度パラメトリック空間において図示され、以下に説明される方法(頂点テッセレーション係数を使用する)を用いて得られた結果と、他の既知のテッセレーションの方法(エッジテッセレーション係数を使用する)を用いて得られた結果とにおける、さらなる比較を示す。上記の例において、エッジに基づくテッセレーションスキームにおいて、新しい方法と同じレベルのテッセレーションを近似的に生じさせるために、エッジテッセレーション係数は、対応する角のテッセレーション係数の平均であるように設定されている。
図5における第1の例501は、上部エッジに対して3.0、右エッジに対して4.0、下部エッジに対して3.0、及び左エッジに対して2.0のエッジTFについて、奇数小数区分化511と偶数小数区分化512と整数区分化513と2の累乗整数区分化514とを使用して得られた結果と、左上頂点に対して2.0、右上頂点に対して4.0、右下頂点に対して4.0、及び左下頂点に対して2.0の頂点TFを用いて、以下に説明される方法を使用して得られた結果515との、比較を示す。以下に説明される方法が、既知の手法と近似的に同数の細分割をもたらし、しかしながら、詳細レベル間の移行はより円滑に取り扱われ、多くの、より細長くない三角形がもたらされることがわかるであろう。細長い三角形は、前に述べられたとおり、レンダリングするときにあまり望ましくない。このことは、
図5の第2の例502にさらに示されており、第2の例502は、上部エッジに対して3.0、右エッジに対して6.0、下部エッジに対して8.0、及び左エッジに対して5.0のエッジTFについて、奇数小数区分化521と偶数小数区分化522と整数区分化523と2の累乗整数区分化524とを使用して得られた結果と、左上頂点に対して2.0、右上頂点に対して4.0、右下頂点に対して8.0、及び左下頂点に対して8.0の頂点TFを用いて、以下に説明される方法を使用して得られた結果525との、比較を示す。
【0028】
図6は、三角形ドメインについての対応する結果を示す。
図6における第1の例601は、左右のエッジ604、605に対して3.0のエッジTF、及び下部エッジ606に対して4.0のエッジTFについて、奇数小数区分化611と偶数小数区分化612と整数区分化613と2の累乗整数区分化614とを使用して得られた結果と、上部頂点607に対して2.0の頂点TF、及び下部の2つの頂点608、609に対して4.0の頂点TFを用いて、以下に説明される方法を使用して得られた結果615との、比較を示す。
【0029】
図5の四角形ドメインの例と同様に、以下に説明される方法が三角形ドメインに適用されるとき、既知の手法と近似的に同数の細分割をもたらし、しかしながら、詳細レベル間の移行はより円滑に取り扱われ、多くの、より細長くない三角形がもたらされることがわかるであろう。細長い三角形は、前に述べられたとおり、レンダリングするときにあまり望ましくない。このことは、
図6における第2の例602にさらに示されており、第2の例602は、左エッジ604に対して3.0、右エッジ605に対して6.0、及び下部エッジ606に対して5.0のエッジTFについて、奇数小数区分化621と偶数小数区分化622と整数区分化623と2の累乗整数区分化624とを使用して得られた結果と、上部頂点607に対して4.0、左下頂点608に対して2.0、及び右下頂点609に対して8.0の頂点TFを用いて、以下に説明される方法を使用して得られた結果625との、比較を示す。
【0030】
さらに、第2の例502及び602に関して、特に、例521〜523及び621〜623で目立つのが、上記スキームの相対的な複雑さである。こうした従来技法は、比較的に規則的なN×Mのテッセレーションパターンで内部セクションを作成し、それから、この内部セクションに対して、望ましい仕方未満の、半不規則な仕方において外側の境界が「縫いつけ」られる。このことは、テッセレーション処理に対して望ましくない複雑さを追加するだけでなく、さらに、非対称的なテッセレーションとあまり均等でない形状の三角形とをもたらす。
【0031】
図5及び
図6の例515、525、615、及び625において、並びに、本明細書に説明されるテッセレーション方法で生成される後の例において、複数の画像が、(以下により詳細に説明されるとおり、)新しい頂点が追加されるときに実行されるブレンディングの(パラメータ空間における)指標を提供する。上記例のいずれかにおいて四角として図示される頂点は、その「最終的な」場所にあり、次第により大きいサークルが使用されて、補間された状態における頂点を示し、すなわち、そのブレンド係数は、[0.0,1.0]内である。
【0032】
図7及び
図8を参照して、頂点テッセレーション係数を使用するテッセレーション方法を説明することができる。
図7及び
図8は、四角形(
図7)及び三角形(
図8)のための方法を示すフロー図である。テッセレーション方法が、
図7及び
図8に示される方法のうちいずれか又は双方を実施することができる。
【0033】
四角形の方法(
図7)は、
図9に示される例示的な四角形を参照して説明することができる。この四角形の方法は4つの頂点を受け取り、各々が、ドメイン空間(すなわち、(u,v))座標と頂点テッセレーション係数とを含む。4つの頂点は、V
0、V
1、V
2、及びV
3とラベル付けされ、対応するテッセレーション係数TF
0〜TF
3を有する。テッセレーション係数に加えて、各頂点は、ブレンド係数BF
i∈[0.0,1.0](ここで、iは頂点インデックスである)をさらに維持する。トップレベルパッチについて、上記の頂点ごとのブレンド係数は、1.0に設定される。
【0034】
トップレベルパッチである四角形について、任意の頂点がV
0とラベル付けされてよく、それから、残りの頂点が回転的な順序において、すなわち、時計回り又は反時計回りの順序で四角形の周りを回って、ラベル付けされる。頂点にラベルを付けることについてどちらの方向が使用されるとしても(すなわち、時計回り又は反時計回り)、テッセレーション方法の全体をとおして一貫した順序が使用されなければならず、下記の説明を目的として、時計回りのラベル付けの慣習が採用される。サブ四角形(sub-quad)について、4つの入力頂点は、これらがそれぞれの親の四角形から形成されたとき、V
0乃至V
3としてすでに効率的に「ラベル付けされ」ている。対称性を維持する少なくとも1つの他の均等の再順序付け/再ラベル付けが存在し、しかし例における簡素さのため、デフォルトの入力ラベル付けが使用されることを、当業者は十分理解し得る。
【0035】
四角形についてのすべての4つの頂点テッセレーション係数が1.0である場合、これは、「末端(terminal)四角形」と呼ばれる。
【0036】
トップレベルパッチ(ブロック704において“Yes”)がさらに「末端四角形」である、すなわち、すべての4つの頂点テッセレーション係数が1に等しい(ブロック702において“Yes”)場合、中心頂点(centre vertex)が追加され(ブロック706)、各入力頂点を中心頂点につなぐことによって、4つの三角形が作成される(ブロック708)。(ブロック706において)追加される中心頂点は、最終的なN次元空間における或る位置に追加され、この位置は、4つの頂点のN次元の場所についての平均である。
【0037】
用語「トップレベルパッチ」は、テッセレーション方法に対する入力パッチを指し、三角形又は四角形であり得るが、しかしながら、このポイントにおいて、(ブロック704における)決定は、四角形(4つの入力頂点によって定義される)がトップレベルパッチであるかどうかのみである。四角形がトップレベルパッチでない場合、それはサブ四角形と呼ばれることが可能であり、サブ四角形は、いくつかのレベルにおいて入力パッチの細分割によって形成され、入力パッチは、以下に説明されるとおり、四角形パッチ又は三角形パッチであり得る。サブ四角形を形成するように特定レベルの細分割において細分割される四角形又は三角形は、サブ四角形の親と呼ばれ(この親は、入力パッチ、又は別のサブ四角形であり得る)、親の細分割から結果として生じるサブ四角形は、子と呼ばれる。
【0038】
四角形が末端四角形であり、すなわち、すべての4つの頂点テッセレーション係数が1に等しく(ブロック702において“Yes”)、かつ、四角形がトップレベルパッチでない(ブロック704において“No”)、すなわち、四角形が、トップレベル四角形の細分割により形成されたサブ四角形、三角形(以下に説明されるとおり)、又は別のサブ四角形である場合、中心頂点は作成されず、代わって、サブ四角形のソース頂点(V
0)を、サブ四角形の対角線的に対向する(diagonally opposite)頂点(V
2)に接続することにより、2つの三角形を描画することによって、ハーフ・テッセレートされた(half-tessellated)四角形が形成される。サブ四角形のソース頂点(V
0)は、サブ四角形が形成されたとき、(親四角形/三角形のうち)選択された頂点である。上記の(ブロック710における)ハーフ・テッセレートされた四角形の作成は、
図9を参照して以下により詳細に説明される。
【0039】
「末端四角形トップレベルパッチ」を識別する理由は、前に説明されたとおり、回転/反射対称性についての所望の特性を有するためであり、末端四角形トップレベルパッチは、それから、「末端」サブ四角形と同様にただ2つの三角形に分割されるのでなく、4つの三角形に分割される。このことは、末端サブ四角形に対しては必要ない。なぜならば、ソース頂点の選択の順序に起因して、対称性が暗黙的に維持されるからである。所与の実施形態において、末端トップレベルパッチ四角形についての保証された対称性が必要とされない場合、末端トップレベルパッチをただ2つの三角形に分割することによって、三角形における小さい低減を達成することができる。
【0040】
テッセレーションのより微細な粒度がパッチの全体にわたって必要とされる場合、代替的な一実施形態が、常に「末端四角形」サブ四角形を4つの三角形にテッセレートすることを選んでもよい。しかしながら、このことは、生成される三角形の数をほぼ2倍にすることになる。
【0041】
4つの頂点テッセレーション係数のうち少なくとも1つが1に等しくない(ブロック702において“No”)、すなわち、4つの頂点テッセレーション係数のうち少なくとも1つが1より大きい場合、中心頂点V
Centreが四角形に対して生成され、このことは、テッセレーション及びブレンド係数の計算を含む(ブロック712)。(ブロック712において)生成される中心頂点は或る位置を有し、この位置は、ポッピングアーチファクトを回避するために、(i)「トップレベルパッチ」についての、N次元空間におけるすべての4つの角の頂点の位置の平均か、又は「サブ四角形」パッチについての、V
0とその対角線的な対向するV
2とのただ2つの頂点の位置の平均か、のいずれかと、(ii)ドメイン空間における上記の場所の平均を計算すること、及びこれをN次元空間にマッピングすることの、重み付けされたブレンドである。ブレンドの重み付けは、レンジ[0.0,1.0]内の値であり、頂点テッセレーション係数の関数として決定される。これにおいて、ゼロの重み付けはケース(i)を返し、1の重み付けはケース(ii)を返し、中間的な値は、重み付けされた和である。ポッピングを回避するために、ブレンド重み付け関数は連続的でなければならず、すべての頂点のテッセレーション係数が1.0に近づく、すなわち、四角形が「末端四角形」に近づくとき、計算されたブレンド重み付けはゼロに近づかなければならない。この例において、ブレンド重み付け関数は、
式1:BlendWeightFunc(TF
0,…TF
3).=MAX
i=0..3(MIN(TF
i-1,1))
であるように選ばれる。
【0042】
中心頂点の頂点テッセレーション係数は、関数が連続的であり、好ましくは対称的であるように、4つの頂点テッセレーション係数の関数として算出され、最小及び最大入力テッセレーション係数によって最初に境界を定められた結果を、生じさせる。この例において、関数は、下記であるように選ばれる。
【数1】
四角形が細分割されることになるため、上記の最初のTFは、下記のアプローチ:
IF InitialTF
centre<2.0
TF
centre:=1.0
BW
centre:=BlendWeightFunc(TF
0,TF
1,TF
2,TF
3)
ELSE
TF
centre:=InitialTF
centre/2
BW
centre:=1.0
ENDIF
を用いて「等分され」て、中心についてのTF及びBW(又は、ブレンド係数)を生じさせる。
【0043】
テッセレーション係数が事前修正される(すなわち、−1.0によって事前にオフセットされる)場合、算出コストを低減させることができることを、当業者は十分理解するであろう。さらなる節約が、(2を底とする)対数を使用することによって得られ、乗算及びルートのコストを低減させることになる。
【0044】
中心頂点を(ブロック712において)決定すると、各入力頂点V
0、V
1、V
2、及びV
3が処理される。本例において、上記処理は、デフォルトの順次的な順序において行われることになるが、これら頂点の処理の順序はクリティカルでなく、これら頂点は順次的又は並列に処理され得ることが、すぐ明らかになるであろう。
【0045】
第1の入力頂点V
iが{V
0,V
1,V
2,V
3}から選択され(ブロック714)、これを使用して頂点W
i0が定義される(ブロック716)。V
iの(u,v)座標がW
i0に複製され、対応するテッセレーション係数WTF
i0とブレンド重み付けWBW
i0とが、入力TF
i及びBW
iから下記のとおり、すなわち、
IF TF
i=1.0
WTF
i0:=1.0
WBW
i0:=BW
i
ELSE IF TF
i<2.0
WTF
i0:=1.0
WBW
i0:=TF
i-1.0
ELSE
WTF
i0:=TF
i/2
WBW
i0:=1.0
として導出される。
【0046】
それから、3つのアクションが存在し、これらアクションは(ブロック720〜724における判断によって定義されるとおり)、入力頂点TF
iの値と、次及び前の隣接する頂点の頂点TFの値、すなわち、TF
(i+1)mod4及びTF
(i-1)mod4とに依存して、発生する。例えば、頂点が、四角形の周りを回って回転的な順序でラベル付けされているとき、選択された頂点がV
0である、すなわちi=0である場合、次及び前の隣接する頂点は、それぞれ、V
1及びV
3である。
【0047】
入力TF
iが1より大きい場合、又は、双方の隣接が1より大きい頂点TFを有する場合、すなわち、(TF
i>1) OR ((TF
(i+1)mod4>1)AND(TF
(i-1)mod4>1)) is TRUEである場合(ブロック720において“Yes”)、各々の入ってくる(incoming)エッジ(すなわち、選択された頂点と隣接頂点との間の各エッジ)は、新しい頂点W
i1及びW
i3の追加によって細分割され、前者の細分割エッジ
【数2】
及び、後者のエッジ
【数3】
並びに、各々の新たに追加された頂点についての頂点テッセレーション係数及びブレンド係数が、算出される(ブロック726)。それから、サブ四角形(すなわち、W
i0、W
i1、V
Centre(W
i2であると見なされることができる)、及びW
i3を含む4つの頂点)は、(ブロック728、及び、ブロック702に戻る点線の矢印により示されるとおり)戻って
図7に示される方法に入力される。
【0048】
新しい頂点、すなわちW
i1及びW
i3についての位置及びテッセレーション係数データは、下記のとおり決定される。簡潔さのため、V
Mは新しい頂点を指すものとし、V
A及びV
Bは、V
Mが細分割しているエッジのいずれかの端部における頂点を指すものとする。V
Mの頂点テッセレーション係数及びブレンド重み付け、すなわち、TF
M及びBW
Mは、4つでなくただ2つの入力頂点が使用されることを除き、中心点と類似の方法において決定され、すなわち、
【数4】
IF InitialTF
M<2.0
TF
M:=1.0
BW
M:=MAX(MIN(TF
A-1,1),MIN(TF
B-1,1))
ELSE
TF
M:=InitialTF
M/2
BW
M:=1.0
ENDIF
である。
【0049】
V
Mのドメイン空間における(u,v)位置は、V
A及びV
Bの(u,v)座標の平均に設定される。ポッピングを防止するために、V
MのN次元空間における位置は、BW
Mを重み付けとして使用して、(i)V
A及びV
BのN次元の位置の平均と、(ii)V
Mのマップされた(U,V)座標の最終的なN次元の位置と、の重み付けされたブレンドとして与えられる。前に述べたとおり、BW
M=0.0の場合、ブレンドは(i)を返すべきであり、そのほかにBW
M=1.0の場合、ブレンドは(ii)を返すべきであり、これに応じて、その中間の値が補間される。
【0050】
図9に示される四角形900を、TF
0=1.5(頂点902)、TF
1=1.0(頂点904)、TF
2=1.0(頂点906)、及びTF
3=1.0(頂点908)の頂点TFを用いて参照する。少なくとも1つの頂点TFが1に等しくないので(ブロック702において“No”)、中心頂点910が(ブロック712において)追加され、その最初の頂点TF(「等分する」前)は1.0(=
【数5】
)であると算出され、「等分」の後は“1.0”に設定され(すなわち、TF
centre:=1.0)、ブレンド係数BF
centreは0.5に設定される。中心頂点は、サブ四角形の中で「第3の」頂点を形成し得るので、これはさらにWV
02と呼ばれることになる。
【0051】
頂点V
0が選択され(ブロック714)、使用されて、頂点W
00が定義される(ブロック716)。入力頂点TF=1.5であるので、定義された頂点は、WTF
00=1.0及びWBW
00=0.5を有することになる。入力頂点TFが1より大きいとき(ブロック720において“Yes”)、双方の入ってくるエッジが、2つの頂点912、914の追加によって細分割され、頂点912、914は、サブ四角形の残りの2つの頂点(それぞれ、W
01及びW
03)を形成し、これらの頂点TFは、上記の式2を用いて算出され(ブロック726)、したがって、WTF
01=1.0及びWBW
01=0.5(頂点912)、並びに、WTF
03=1.0及びWBW
03=0.5(頂点914)である。それから、頂点902、912、910、及び914により定義され、WTF
00=1.0(頂点902)、WTF
01=1.0(頂点912)、WTF
02=1.0(頂点910)、及びWTF
03=1.0(頂点914)の頂点TFを有するサブ四角形が、方法の始めへフィードバックされ、ゆえに、サブ四角形のW
0が“V
0”になり、W
1がV
1になる、などする。
【0052】
この新しいサブ四角形を考えると、すべての頂点TFが1に等しく(ブロック702において“Yes”)、四角形はトップレベルパッチでなく(ブロック704において“No”)、ゆえに、この四角形は、該四角形を2つの三角形に分割することによってハーフ・テッセレートされる(ブロック710)。すなわち、2つの三角形が描画され、そのうち一方は頂点902、912、及び910により形成され、他方は頂点902、910、及び914により形成される。双方の三角形に共通であるエッジは、V
0と、親四角形の中心頂点であったV
2(頂点910)とを接続する。
【0053】
前の親処理に戻って、((TF
i>1) OR ((TF
(i+1)mod4>1)AND(TF
(i-1)mod4>1))) is FALSE)である場合(ブロック720において“No”)、TF
iは1に等しくなければならない。双方の隣接の頂点TFがさらに1に等しい場合(ブロック722において“Yes”)、選択された頂点はスキップされ、次の頂点が順に選択される(ブロック730)。四角形における他の頂点が選択されるとき、任意の所要のテッセレーションが実施されることになるからである。上記条件は、
図9の四角形900において、頂点906が選択された頂点であるとき、示される。すなわち、頂点906の頂点TFは1より大きくなく、双方の隣接頂点(頂点904及び908)は1に等しい頂点TFを有する。
【0054】
入力頂点TFが1に等しく、かつ、双方の隣接がさらに1に等しい頂点TFを有さない場合(ブロック720及び722の双方において“No”)、正確に(exactly)一方の隣接が、1より大きい頂点TFを有さなければならない(ブロック724において“Yes”)。しかしながら、このことは、ブロック720及び722の双方における“No”の結果として保証されるので、この条件についてテストすることは必要でなく、ブロック724は省略されることが可能である。正確に一方の隣接が1より大きい頂点TFを有するとき、2つの可能性が存在する。すなわち、該一方の隣接が、次の隣接である(ブロック732において“Yes”)か、あるいは前の隣接である(ブロック732において“No”)かのいずれかである。
【0055】
次の隣接が1より大きい頂点TFを有する事象(ブロック732において“Yes”)において、選択された頂点と次の隣接との間のエッジは、前に説明されたV
Mの場合を作成するために使用された同じ式を用いて、すなわち、選択された頂点の位置と次の隣接頂点の位置との平均値により与えられるドメイン空間における或る位置に新しい頂点を追加することによって、及び、前に説明されたとおりTF、BW、及びN次元の位置を用いて(式3、及びその続きの文章を参照)、細分割される(ブロック734)。このことは、選択された頂点と新たに追加された頂点と中心頂点と前の頂点とを含むサブ四角形を形成する。このサブ四角形は、選択された頂点を対角線的に対向する頂点に接続することによって、ハーフ・テッセレートされる(ブロック736)。それから、この方法は、親四角形における次の頂点、例えばV
1を選択し(ブロック730)、該方法は、(ブロック716に戻る矢印により示されるとおり)繰り返される。
【0056】
このことは、
図9の四角形900において、頂点908が選択された頂点であるとき、示される。選択された頂点908は1の頂点TFを有し、前の頂点(頂点906)がさらに1の頂点TFを有し、次の頂点(頂点902)は1より大きい頂点TFを有する(ブロック720及び722において“No”、並びに、ブロック724及び732において“Yes”)。結果として、次の頂点に対するエッジが、頂点914の追加によって細分割され、ハーフ・テッセレートされたサブ四角形(頂点908、914、910、906により定義される)が、2つの三角形を描画することにより形成される。すなわち、2つの三角形のうち一方は頂点908、914、及び910により形成され、他方が頂点908、910、及び906により形成される。双方の三角形に共通であるエッジは、選択された頂点(頂点908)と親四角形の中心頂点(頂点910)とを接続する。
【0057】
前の隣接が1より大きい頂点TFを有する事象(ブロック732において“No”)において、選択された頂点と前の隣接との間のエッジは、前に説明されたV
Mの場合を作成するために使用された同じ式を用いて、すなわち、選択された頂点の位置と前の隣接頂点の位置との平均値により与えられるドメイン空間における或る位置に新しい頂点を追加することによって、及び、前に説明されたとおりTF、BW、及びN次元の位置を用いて(式3、及びその続きの文章を参照)、細分割される(ブロック738)。このことは、選択された頂点と次の頂点と中心頂点と新たに追加された頂点とを含むサブ四角形を形成する。このサブ四角形は、選択された頂点を対角線的に対向する頂点に接続することによって、ハーフ・テッセレートされる(ブロック736)。それから、この方法は、親四角形における次の頂点、例えばV
1を選択し(ブロック730)、該方法は、(ブロック716に戻る矢印により示されるとおり)繰り返される。
【0058】
このことは、
図9の四角形900において、頂点904が選択された頂点であるとき、示される。選択された頂点904は1の頂点TFを有し、次の頂点(頂点906)がさらに1の頂点TFを有し、前の頂点(頂点902)は1より大きい頂点TFを有する(ブロック720及び722において“No”、ブロック724において“Yes”、並びにブロック732において“No”)。結果として、前の頂点に対するエッジが、頂点912の追加によって細分割され、ハーフ・テッセレートされたサブ四角形(頂点904、906、910、912により定義される)が、2つの三角形を描画することにより形成される。すなわち、2つの三角形のうち一方は、頂点904、910、及び912により形成され、他方は頂点904、906、及び910により形成される。双方の三角形に共通であるエッジは、選択された頂点(頂点904)と親四角形の中心頂点(頂点910)とを接続する。
【0059】
図10は、
図7に示される方法を用いて得られるテッセレートされた四角形の3つの例を示す。第1の例1001は、TF
0=1、TF
1=2、TF
2=2、TF
3=1の頂点テッセレーション係数を示す。第2の例1002は、TF
0=2、TF
1=4、TF
2=8、TF
3=8の頂点テッセレーション係数を示す。第3の例1003は、TF
0=3、TF
1=5、TF
2=32、TF
3=32の頂点テッセレーション係数を示す。
【0060】
これら例は前に説明されている可能性があるが、四角形頂点が順に選択され、エッジを細分割する「新しい頂点」が計算されるとき、各々の新たに追加される頂点は、親四角形の2つのサブ四角形間で共有される可能性があり、ゆえに、これらを、親の四角形の子達をとおして反復する前に計算することによって、計算を低減させることができることが、当業者に明らかであろう。例えば、
図10の第3の例1003を参照すると、トップレベル四角形の各エッジを分割する頂点は、トップレベル四角形の子達の、左上のサブ四角形(最終的に2つの三角形に分割される)と右上のサブ四角形(最終的に26個の三角形に分割される)と右下のサブ四角形と左下のサブ四角形とをとおして反復する前に、計算されることができる。
【0061】
2つの親四角形が同じエッジを共有し、ゆえに同じ「細分割する新しい頂点」を双方計算し得る場合、さらなる節約がなされ得る。例えば(u,v)パラメータでインデックスを付けられた、簡素なキャッシュ/バッファ/アドレス可能メモリが使用されて、頂点データを記憶し、ゆえに再計算オーバヘッドを低減させることができる。こうした頂点データの記憶が使用される場合、この記憶が、新たに追加される頂点の新しいTF及びBWを算出する前にチェックされてもよく、同じ(u,v)パラメータを有する頂点が記憶されている場合、その記憶された頂点のTF及びBWが、値を再算出することに代わって使用されてもよい。様々な例において、頂点データの記憶は、(すべての事前に追加された頂点というよりも)限られた数の頂点のみ記憶することができ、さらに、こうした例において、再計算の量を大幅に低減させることができる。
【0062】
三角形の方法(
図8の)は、
図11に示される例示的な三角形1101〜1104を参照して説明することができる。この三角形の方法は3つの頂点を受け取り、各々が、ドメイン空間(すなわち、(u,v))座標と頂点テッセレーション係数とを含む。すべての3つの頂点テッセレーション係数が1に等しい場合(ブロック802において“Yes”)、細分割は実行されない。このことは、
図11の第1の例示的な三角形1101に示されている。
【0063】
3つの頂点テッセレーション係数のうち少なくとも1つが1に等しくない(ブロック802において“No”)、すなわち、3つの頂点テッセレーション係数のうち少なくとも1つが1より大きい場合、三角形に対して中心頂点が追加され、新たに追加された中心頂点について、頂点テッセレーション係数が算出される(ブロック804)。(ブロック804において)追加される中心頂点は、3つの頂点の平均値であるドメイン空間における或る位置に追加される。中心頂点の頂点テッセレーション係数は、3つの頂点に対して適合されることを除き、四角形の場合と同様の仕方において、すなわち、
【数6】
IF InitialTF
centre<2.0
TF
centre:=1.0
BW
centre:=BlendWeightFunc(TF
0,TF
1,TF
2)
ELSE
TF
centre:=InitialTF
centre/2
BW
centre:=1.0
ENDIF
で算出される。これにおいて、3つの頂点はV
0〜V
2で表され、その頂点テッセレーション係数はTF
0〜TF
2で表される。
【0064】
中心頂点を(ブロック804において)作成すると、第1の頂点V
i(例えば、V
0)が選択される(ブロック806)。三角形(三角形が常に入力パッチである)について、任意の頂点がV
0とラベル付けされてよく、それから、残りの頂点が時計回り又は反時計回りの順序において、三角形の周りを回る順序においてラベル付けされる。頂点にラベルを付けることについてどちらの方向が使用されるとしても(すなわち、時計回り又は反時計回り)、テッセレーション方法の全体をとおして一貫した順序が使用されなければならず、下記の説明を目的として、時計回りのラベル付けの慣習が採用される。
【0065】
選択された頂点V
iを使用して、上記で説明された四角形の方法と同様の仕方において、頂点W
i0が定義される(ブロック808)。V
iの(u,v)座標がW
i0に複製され、対応するテッセレーション係数WTF
i0とブレンド重み付けWBW
i0とが、入力TF
i及びBW
iから下記のとおり、すなわち、
IF TF=1.0
WTF
i0:=1.0
WBW
i0:=BW
i
ELSE IF TF
i<2.0
WTF
i0:=1.0
WBW
i0:=TF
i-1.0
ELSE
WTF
i0:=TF
i/2
WBW
i0:=1.0
として導出される。
【0066】
図7の四角形の方法と同様の仕方において、3つの異なるアクションが存在し、これらアクションは(ブロック812〜816における判断によって定義されるとおり)、入力頂点TF
iの値と、次及び前の隣接する頂点の頂点TFの値、すなわち、TF
(i+1)mod3及びTF
(i-1)mod3とに依存して、発生する。頂点が、回転的な順序において三角形の周りを回ってラベル付けされているので、選択された頂点がV
0である(すなわち、i=0である)場合、隣接する頂点は、次の頂点V
1と前の頂点V
2である。
【0067】
入力頂点TF
iが1より大きい場合(ブロック812において“Yes”)、各々の入ってくるエッジ(すなわち、選択された頂点と隣接頂点との間の各エッジ)は、新しい頂点W
i1及びW
i3の追加によって細分割され、前者の細分割エッジ
【数7】
及び、後者のエッジ
【数8】
並びに、各々の新たに追加された頂点についての頂点テッセレーション係数及びブレンド係数が、算出される(ブロック818)。それから、サブ四角形(すなわち、W
i0、W
i1、V
Centre(W
i2であると見なされることができる)、及びW
i3を含む4つの頂点)が、
図7に示される四角形の方法に対して入力される(ブロック820であり、すなわちブロック702において始まる)。
【0068】
新しい頂点、すなわちW
i1及びW
i3についての位置及びテッセレーション係数データは、四角形の場合について上記で説明されたとおり、すなわち、
【数9】
IF InitialTF
M<2.0
TF
M:=1.0
BW
M:=MAX(MIN(TF
A-1,1),MIN(TF
B-1,1))
ELSE
TF
M:=InitialTF
M/2
BW
M:=1.0
ENDIF
として決定される。
【0069】
V
Mのドメイン空間における(u,v)位置は、V
A及びV
Bの(u,v)座標の平均に設定される。ポッピングを防止するために、V
MのN次元空間における位置は、BW
Mを重み付けとして使用して、(i)V
A及びV
BのN次元の位置の平均と、(ii)V
Mのマップされた(U,V)座標の最終的なN次元の位置と、の重み付けされたブレンドとして与えられる。前に述べたとおり、BW
M=0.0の場合、ブレンドは(i)を返すべきであり、そのほかにBW
M=1.0の場合、ブレンドは(ii)を返すべきであり、これに応じて、その中間の値が補間される。
【0070】
このことは、
図11における第2の例示的な三角形1102を参照して、TF
0>1.0(頂点1106)、TF
1=1.0(頂点1108)、及びTF
2=1.0(頂点1110)を用いて例示することができる。すべての頂点TFが1に等しくはなく(ブロック802において“No”)、ゆえに、中心頂点1112が(ブロック804において)生成され、その頂点TF及びブレンド係数が上記の式4を用いて算出される。頂点V
0が(ブロック806において)選択され、頂点W
i0が(ブロック808において)定義される。入力頂点TFが1より大きいとき(ブロック812において“Yes”)、双方の入ってくるエッジは2つの新しい頂点1114、1116の追加によって細分割され、これらの頂点TF及びブレンド係数が、上記で説明されたとおり算出される(ブロック818)。それから、頂点1106、1114、1112、及び1116により定義され、これらの頂点TF及びブレンド係数を(ブロック808及び818において算出されたとおり)有するサブ四角形が、四角形の方法に(すなわち、
図7のブロック702へ)送り込まれる(ブロック820)。
【0071】
前の親処理に戻って、入力頂点TFが1より大きくない場合(ブロック812において“No”)、入力頂点TFは1に等しくなければならない。双方の隣接の頂点TFが双方1より大きい場合(ブロック814において“Yes”)、各々の入ってくるエッジ(すなわち、選択された頂点と隣接頂点との間の各エッジ)は、前に説明されたV
Mの場合を作成するために使用された同じ式を用いて新しい頂点の追加によって、すなわち、選択された頂点の位置と次の隣接頂点の位置との平均値により与えられるドメイン空間における或る位置に新しい頂点を追加することによって、及び、前に説明されたとおりTF、BW、及びN次元の位置を用いて(式3、及びその続きの文章を参照)、細分割される(ブロック822)。このことは、選択された頂点と、選択された頂点と次の頂点との間に新たに追加された頂点と、中心頂点と、選択された頂点と前の頂点との間に新たに追加された頂点と、を含むサブ四角形を形成する。このサブ四角形は、選択された頂点を対角線的に対向する頂点に接続することによって、ハーフ・テッセレートされる(ブロック824)。それから、この方法は、親三角形における次の頂点、例えばV
1を選択し(ブロック826)、該方法は、(ブロック808に戻る矢印により示されるとおり)繰り返される。
【0072】
このことは、
図11における第3の例示的な三角形1103を参照して、TF
0=1.0(頂点1120)、TF
1>1.0(頂点1122)、及びTF
2>1.0(頂点1124)を用いて例示することができる。すべての頂点TFが1に等しくはなく(ブロック802において“No”)、ゆえに、中心頂点1126が(ブロック804において)生成され、その頂点TF及びブレンド係数が上記の式4を用いて算出される。頂点V
0が(ブロック806において)選択され、使用されて、頂点W
i0が(ブロック808において)生成される。入力頂点TFが1より大きくなく(ブロック812において“No”)、しかし双方の隣接の頂点TFが1より大きいとき(ブロック814において“Yes”)、双方の入ってくるエッジは、新しい頂点1128、1130の追加によって細分割され、頂点1128、1130は、サブ四角形の残りの2つの頂点(それぞれ、W
i1及びW
i3)を形成する。頂点1120、1128、1126、及び1130により定義されるサブ四角形は、(ブロック824において)2つの三角形を描画することによってハーフ・テッセレートされる。すなわち、2つの三角形のうち一方は頂点1120、1128、及び1126により形成され、他方は頂点1120、1126、及び1130により形成される。双方の三角形に共通であるエッジは、W
i0(頂点1120)と、三角形の中心頂点であるW
i2(頂点1126)とを接続する。
【0073】
入力頂点TFが1に等しく、双方の隣接が1より大きい頂点TFを有さない場合、(ブロック812及び814において“No”)、正確に一方の隣接が1より大きい頂点TFを有さなければならない(ブロック816において“Yes”)。しかしながら、このことは、ブロック812及び814の双方における“No”の結果として保証されるので、この条件についてテストすることは必要でなく、ブロック816は省略されることが可能である。正確に一方の隣接が1より大きい頂点TFを有するとき、2つの可能性が存在する。すなわち、該一方の隣接が、次の隣接である(ブロック828において“Yes”)か、あるいは前の隣接である(ブロック828において“No”)かのいずれかである。
【0074】
次の隣接が1より大きい頂点TFを有する事象(ブロック828において“Yes”)において、選択された頂点と次の隣接との間のエッジは、前に説明されたV
Mの場合を作成するために使用された同じ式を用いて、すなわち、選択された頂点の位置と次の隣接頂点の位置との平均値により与えられるドメイン空間における或る位置に新しい頂点を追加することによって、及び、前に説明されたとおりTF、BW、及びN次元の位置を用いて(式3、及びその続きの文章を参照)、細分割される(ブロック830)。それから、1つの三角形が形成され、この三角形は、選択された頂点と新たに追加された頂点と中心頂点とを含む(ブロック832)。それから、この方法は、三角形における次の頂点、例えばV
1を選択し(ブロック826)、該方法は、(ブロック808に戻る矢印により示されるとおり)繰り返される。
【0075】
このことは、
図11の第2の例示的な三角形1102において、頂点1110が選択された頂点であるとき、示される。選択された頂点1110は1の頂点TFを有し、前の頂点(頂点1108)がさらに1の頂点TFを有し、次の頂点(頂点1106)は1より大きい頂点TFを有する(ブロック812及び814において“No”、並びに、ブロック816及び828において“Yes”)。結果として、次の頂点に対するエッジが、頂点1116の追加によって細分割され、1つの三角形が、頂点1110、1116、及び1112(ブロック804において追加された中心頂点)により形成される。
【0076】
前の隣接が1より大きい頂点TFを有する事象(ブロック828において“No”)において、選択された頂点と前の隣接との間のエッジは、前に説明されたV
Mの場合を作成するために使用された同じ式を用いて、すなわち、選択された頂点の位置と前の隣接頂点の位置との平均値により与えられるドメイン空間における或る位置に新しい頂点を追加することによって、及び、前に説明されたとおりTF、BW、及びN次元の位置を用いて(式3、及びその続きの文章を参照)、細分割される(ブロック834)。このことは、選択された頂点と次の頂点と中心頂点と新たに追加された頂点とを含むサブ四角形を形成する。このサブ四角形は、選択された頂点を対角線的に対向する頂点に接続することによって、ハーフ・テッセレートされる(ブロック836)。それから、この方法は、親四角形における次の頂点、例えばV
1を選択し(ブロック826)、該方法は、(ブロック808に戻る矢印により示されるとおり)繰り返される。
【0077】
このことは、
図11の第2の例示的な三角形1102において、頂点1108が選択された頂点であるとき、示される。選択された頂点1108は1の頂点TFを有し、次の頂点(頂点1110)がさらに1の頂点TFを有し、前の頂点(頂点1106)は1より大きい頂点TFを有する(ブロック812及び814において“No”、ブロック816において“Yes”、並びに、ブロック828において“No”)。結果として、前の頂点に対するエッジが、頂点1114の追加によって細分割され、ハーフ・テッセレートされたサブ四角形(頂点1108、1110、1112、1114により定義される)が、2つの三角形を描画することによって形成される。すなわち、2つの三角形のうち一方は頂点1108、1112、及び1114により形成され、他方は頂点1108、1110、及び1112により形成される。双方の三角形に共通であるエッジは、選択された頂点(頂点1108)と、三角形の中心頂点(頂点1112)とを接続する。
【0078】
図12は、
図7及び
図8に示される方法を用いて得られるテッセレートされた三角形の3つの例を示す。第1の例1201は、TF
0=1、TF
1=100、TF
2=1の頂点テッセレーション係数を示す。第2の例1202は、TF
0=1、TF
1=100、TF
2=10の頂点テッセレーション係数を示す。第3の例1203は、TF
0=50、TF
1=10、TF
2=30の頂点テッセレーション係数を示す。
図15にはさらなる例が示され、
図15は、3Dにおけるワイヤフレームテッセレーションのシーケンスを含む(本明細書に説明される最終的なテッセレーションシステムは、N次元に適用され得ることが十分理解されるであろう)。
図15に示される例は、頂点テッセレーション係数が(1,1,1,1)から近似的に(26.5,16.7,8.8,4.9)に変化するときの変化を示す。
【0079】
テッセレーション方法は、(ブロック702、720〜724、730、802、812〜816、及び828において)頂点テッセレーション係数と1の値とにおける比較を含むとして上記で説明された(及び、
図7及び
図8に示された)が、説明された方法に対するバリエーションにおいて、上記比較は、別の閾値に関して実行されてもよい(すなわち、1に等しくない閾値に対してであり、その場合、さらなる細分割が必要とされるかを決定するテストは、テッセレーション係数がこの閾値より厳密に大きいかに基づき得る)。このバリエーションが、テッセレーション処理において生成される三角形の数を低減させるために選ばれてもよいが、ただし、LODが変化するとき、アニメーションの円滑さを低減させる可能性がある。
【0080】
さらに、上記において、特定の式を使用して、新たに追加された頂点についてのテッセレーション係数及びブレンド係数の値が算出されるが、他の例において、別の式が使用されてもよい。例えば、式2を用いることに代わって、下記の式、すなわち、
【数10】
が用いられてもよい。さらに、式3を用いることに代わって、下記の式、すなわち、
【数11】
が用いられてもよい。さらに、式4を用いることに代わって、下記の式、すなわち、
【数12】
が用いられてもよい。
【0081】
提供された例に示されるとおり、エッジTFに代わって頂点TFを使用する上記で説明されたテッセレーション方法を用いることによって、結果として生じる三角形はより均等にサイズ調整され、T接合(T-junctions)が回避される。(T接合は、結果的なレンダリングされる画像においてクラック(cracks)を引き起こす可能性がある)。詳細レベルがあるシーン内で変化する場合、その移行が円滑に取り扱われ(例えば、三角形のサイズと頂点の間隔の空きとが徐々に変化する)、急な移行が回避される(急な移行は、望まれない視覚的アーチファクトを引き起こす可能性がある)。同様に、詳細レベルがある時間にわたり変化する場合(例えば、オブジェクトがより近くなり、あるいは視点からさらに離れるとき)、各頂点がパラメトリック空間の中でその最終的な位置において作成されるので、移行が円滑であり、頂点の移動に起因する望まれない視覚的アーチファクトの見込みが回避される。上記の新しい頂点を徐々に導入するために(例えば、これらが徐々にサーフェスから成長するように見えるように)、既知の手法が深度(又は、高さ)方向において使用されてもよい(例えば、ブレンディング)。
【0082】
四角形及び三角形をテッセレートする(
図7及び
図8に示されたとおりの)方法は、回転的に不変(invariant)であり、したがって、パッチが、シーン内におけるその向きに関わりなく同じ方法において三角形に細分割されることになる。このことは、例えば、シーンの中の回転するオブジェクトがレンダリングされるときに望まれない視覚的アーチファクトを生じさせないように、特に重要であり得る。さらに、入力パッチ(例えば、四角形又は三角形)のどの頂点で上記方法を開始するかは重要でない。なぜならば、すべてのケースにおいて同じ結果が達成されるからである。
【0083】
テッセレーション方法に入力される頂点TFは、別個のアプリケーションによって生成されてもよい(例えば、各頂点からビューアの距離に基づいて、例えば、頂点の頂点TFが、目から頂点の距離の逆数に比例してもよい)。様々な例において、エッジTFを頂点TFに(例えば、頂点において交わるエッジについて、すべてのエッジTFの平均をとることによって)コンバートするAPIが、これらを本明細書に説明される方法に入力することの前に、提供されてもよい。
【0084】
上記のテッセレーション方法の説明は、再帰の使用を示しているが、この方法は、別法として、再帰的に代わって、反復的に及び/又は並列に実施されてもよく、本説明における「再帰」又は「反復」に対するいかなる参照も、単に例である。
【0085】
上記で説明されたテッセレーション方法は三角形及び四角形ドメインに適用されているが、最初のドメイン細分割は3つ又は4つの辺の多角形のドメインを横断し(traversing)、サブ四角形を生じさせるときに頂点を含むので、当業者は、処理が任意のN辺のドメイン、例えば、五角形又は六角形に十分に等しく適用されて、サブ四角形を作成し、その後、任意の生成されたサブ四角形を用いて再帰的に継続することが可能であることを十分理解するであろう。
【0086】
図16を参照して、P辺の(P-sided)ドメインを、P≧4の場合で考える。すべてのP個の頂点についてのテッセレーション係数TF
iが、(第1の例1601におけるとおり)1に等しい場合、四角形の場合と同様の仕方において、中心頂点1603が、最終的なN次元空間における或る位置に追加され、この位置は、P個の頂点のN次元の場所についての平均である。それから、P個の三角形が、V
iとF
i+1modPと追加された中心頂点とを接続することによって生成され、各iについて、0≦i<Pである。
【0087】
少なくとも1つのテッセレーション係数が(第2の例1602におけるとおり)1を超える場合、四角形テッセレーションについて前に説明された処理が、下記のことを除き、適用される。
a)ブレンド重み付け関数(上記の式1における)は、
BlendWeightFunc=MAX
i=0..P-1(MIN(TF
i-1,1))
に一般化される。
b)中心の最初のTFについての関数(上記の式2における)は、
【数13】
に一般化される。
c)前の頂点及び次の頂点のインデックス付けは、それぞれ、V
(i-1)MOD P及びV
(i+1)MOD Pになる。
【0088】
例えば、上記で説明され(及び、
図7に示された)四角形の方法に従い、選択された頂点V
iがテッセレーション係数TF
i>1.0を有する場合(例えば、頂点1604)、2つの入ってくるエッジが細分割されて、2つの追加頂点とサブ四角形1606とが作成され、サブ四角形1606は、更新された選択された頂点と、追加頂点のうちの1つと、中心頂点と、残りの追加頂点とから定義される。それから、このサブ四角形は、
図7の方法に対するさらなる入力として(例えば、ブロック702に対する入力として)提供されることが可能である。
【0089】
頂点テッセレーション係数を使用する上記で説明された(例えば、
図7及び
図8を参照して説明された)テッセレーション方法は、臨機応変に(例えば、視点が3Dシーン内で変わるとき)テッセレーションを実行することに使用されてもよく、あるいは別法として、上記方法は、複数の異なる視点について三角形を事前計算するようにオフラインで使用されてもよい。
【0090】
上記で説明された(例えば、
図7及び
図8を参照して説明された)、頂点テッセレーション係数を使用するテッセレーション方法は、ハードウェアにおいて実施され得る。様々な例において、上記方法は、
図13に示されるとおり、グラフィックス処理ユニット(GPU)内でハードウェアテッセレーションユニットにおいて実施されてもよい。
図13は、一例示的なGPUパイプライン1300の概略図を示しており、パイプライン1300は、GPU内でハードウェアにおいて実施されることができる。
図13に示されるとおり、パイプライン1300は頂点シェーダ1302を含み、頂点シェーダ1302は、これら頂点のすべてについての頂点テッセレーション係数を算出すること(例えば、カメラから頂点の位置の関数として)を含め、頂点ごとの算出を実行することの責任を負う。頂点TFを算出する前、頂点シェーダは、頂点をワールド空間に変換し、1つ以上の他の線形変換を適用してもよい。頂点シェーダ1302は、メッシュトポロジの知識を有さず、該シェーダに送り込まれている現在の頂点だけ知っている。
【0091】
頂点シェーダ1302とハードウェアテッセレーションユニット(又は、テッセレータ)1304との間で(あるいは、頂点シェーダと、
図13に示されていない任意的なハルシェーダ(hull shader)との間であって、この場合、パイプライン1300は、1つ以上の任意的なハルシェーダを頂点シェーダ1302とテッセレータ1304との間に含む)、パッチ(すなわち、頂点の順序付けられたセット)が、トポロジを用いて構築される。上記のパッチの情報は、(提供される場合に)ハルシェーダに渡される。しかしながら、テッセレータ1304は頂点TFだけをとり、パッチ情報の残りはドメインシェーダ1306に渡される。
【0092】
ハードウェアテッセレーションユニット(又は、テッセレータ)1304は、上記で説明された(例えば、
図7及び
図8に示された)方法を、受け取った頂点TFを用いて実施する、ハードウェアロジックを含む。頂点シェーダとは異なり、ハードウェアテッセレーションユニット(及び、いずれかの任意的なハルシェーダ)は、頂点ごとでなく、パッチごとに動作する。新しい頂点TFを(例えば、ブロック718及び810において)算出する式を実装するのに必要とされるハードウェアを簡素化するために、上記算出は、log2において実行されてもよく、ゆえに、加算及び減算として実装されることができる(そうでない場合、乗算及び除算が用いられることになる)。ハードウェアテッセレーションユニット1304は、上記で説明された方法の態様を並列に実行するように構成されてもよい(例えば、異なるパッチに対しての再帰)。ハードウェアテッセレーションユニット1304は、各々の新しい頂点についてドメイン空間座標を出力し、これをドメインシェーダ1306に(例えば、バッファに、形成されるあらゆる三角形の詳細を記憶することによって)渡す。
【0093】
ドメインシェーダ1306は、テッセレータ1304により作り出された頂点について、第2の頂点シェーダの機能を果たし、テッセレータにより生成される頂点ごとに1回実行される。ドメインシェーダは、ドメイン空間場所(u,v)を供給し、すべてのパッチ情報を与え、フルの頂点構造を出力する。ドメインシェーダは、パッチ制御点及びドメイン空間座標を使用して、新しい頂点を構築し、任意のディスプレースメントマッピングを(例えば、テクスチャにおいてエンコードされたいくつかのバンプ又は高さマップをサンプリングすることによって)適用する。
【0094】
ドメインシェーダ1306が、各パッチの各々生成された頂点について実行された後、頂点はラスタライザ(
図13に示されていない)に渡される。相前後して、プリミティブ(インデックスバッファの形式の)がテッセレータからラスタライザに渡される。
【0095】
図13のGPUパイプライン1300は、単に例として示されており、本明細書に説明される、頂点TFを使用するテッセレーション方法は、任意のGPUアーキテクチャにおいて使用されることが可能である。ハードウェアテッセレーションユニット1304は、頂点シェーダ1302と任意的なハルシェーダとドメインシェーダ1306とに対して追加で、あるいは代わって他のシェーダを含むGPUパイプラインにおいて使用されてもよいことがさらに十分理解されるであろう。
【0096】
上記で説明された(例えば、
図7及び
図8を参照して説明された)、頂点テッセレーション係数を使用するテッセレーション方法は、別法として、ソフトウェア(あるいは、ソフトウェアとハードウェアとの組み合わせ)において実施されてもよい。
図14は、一例示的なコンピューティングベースの装置1400の様々なコンポーネントを例示しており、コンピューティングベース装置1400は、任意の形態のコンピューティング及び/又は電子装置として実施されてよく、上記で説明されたテッセレーション方法を実施するように構成され得る。
【0097】
コンピューティングベース装置1400は1つ以上のプロセッサ1402を含み、プロセッサ1402は、マイクロプロセッサ、コントローラ、又は任意の他の適切なタイプのプロセッサであってよく、装置の動作を制御するコンピュータ実行可能命令を処理して、上記で説明された(例えば、
図7及び
図8を参照して説明された)テッセレーション方法を実行する。いくつかの例において、例えば、システムオンチップアーキテクチャが使用される場合、プロセッサ1402は、1つ以上の固定された機能ブロック(さらに、アクセラレータとも呼ばれる)を含んでもよく、上記機能ブロックは、(ソフトウェア又はファームウェアというよりも)ハードウェアにおいてテッセレーションの方法の一部を実施する。オペレーティングシステム1404又は任意の他の適切なプラットフォームソフトウェアを含むプラットフォームソフトウェアがコンピューティングベース装置に提供されて、アプリケーションソフトウェア1406が装置上で実行されることを可能にしてもよく、上記アプリケーションソフトウェアは、テッセレーションモジュール1408を含み得る。
【0098】
コンピュータ実行可能命令は、コンピューティングベース装置1400によりアクセス可能である任意のコンピュータ可読媒体を用いて提供され得る。コンピュータ可読媒体は、例えば、メモリ1410などのコンピュータ記憶媒体と通信媒体とを含み得る。メモリ1410などのコンピュータ記憶媒体(すなわち、非一時的マシン可読媒体)には、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報の記憶のための任意の方法又はテクノロジーにおいて実施される揮発性及び不揮発性の、取り外し可能及び取り外し不能の媒体が含まれる。コンピュータ記憶媒体には、これらに限られないが、RAM、ROM、EPROM、EEPROM、フラッシュメモリ若しくは他のメモリテクノロジー、CD‐ROM、デジタル多用途ディスク(DVD)若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶装置、又は、コンピューティング装置によるアクセスのために情報を記憶することに使用され得る任意の他の非送信媒体が含まれる。対照的に、通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを、搬送波などの変調されたデータ信号、又は他のトランスポートメカニズムにおいて具現化し得る。本明細書において定義されるとき、コンピュータ記憶媒体は通信媒体を含まない。コンピュータ記憶媒体(すなわち、非一時的マシン可読媒体、例えば、メモリ1410)はコンピューティングベース装置1400内に図示されているが、記憶装置は、分散され、あるいはリモートに位置し、ネットワーク又は他の通信リンクを介して(例えば、通信インターフェース1412を用いて)アクセスされてもよいことが十分理解されるであろう。
【0099】
図14に示されていないが、メモリ1410(又は、
図14に示されていない別個のメモリ素子)が、新たに追加された頂点の頂点データを記憶することに使用されて、異なる(しかし、近隣の)親四角形のために同じ頂点を再計算することによって引き起こされる計算オーバヘッドを低減させてもよい。
【0100】
コンピューティングベース装置1400は入力/出力コントローラをさらに含んでもよく、上記入力/出力コントローラは、コンピューティングベース装置1400と別個又は一体的であり得る表示装置に対して表示情報を出力するように配置される。表示情報は、グラフィカルユーザインターフェースを提供してもよい。入力/出力コントローラは、さらに、ユーザ入力装置(例えば、マウス又はキーボード)などの1つ以上の装置から入力を受信し及び処理するように配置されてもよい。一実施形態において、表示装置は、該表示装置がタッチセンサ式表示装置である場合、ユーザ入力装置としての機能を果たし得る。入力/出力コントローラは、さらに、表示装置でない装置、例えば、ローカルに接続された印刷装置などに、データを出力してもよい。
【0101】
用語「プロセッサ」及び「コンピュータ」は、本明細書において、命令を実行することができるような処理能力を有する任意の装置又はその部分を指すように用いられる。用語「プロセッサ」は、例えば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU又はVPU)、物理処理ユニット(physics processing units;PPU)、ラジオ処理ユニット(RPU)、デジタルシグナルプロセッサ(DSP)、汎用目的プロセッサ(例えば、汎用目的GPU)、マイクロプロセッサ、CPUの外部のタスクを加速するように設計された任意の処理ユニット等を含み得る。当業者は、こうした処理能力が多くの種々の装置に組み込まれることを理解することになり、ゆえに、用語「コンピュータ」には、セットトップボックス、メディアプレーヤ、デジタルラジオ、PC、サーバ、モバイルテレフォン、パーソナルデジタルアシスタント、及び多くの他の装置が含まれる。
【0102】
当業者は、プログラム命令を記憶することに利用される記憶装置がネットワークにわたって分散され得ることを理解するであろう。例えば、リモートコンピュータが、ソフトウェアとして説明された処理の一例を記憶してもよい。ローカル又はターミナルコンピュータがリモートコンピュータにアクセスし、ソフトウェアの一部又はすべてをダウンロードしてプログラムを実行してもよい。別法として、ローカルコンピュータが必要に応じてソフトウェアのピースをダウンロードし、あるいは、いくつかのソフトウェア命令をローカル端末において、いくつかのソフトウェア命令をリモートコンピュータ(又は、コンピュータネットワーク)において実行してもよい。当業者は、さらに、当業者に知られる従来手法を利用することによって、ソフトウェア命令のうちすべて又は一部分がDSP、プログラマブルロジックアレイ、又は同様のものなどの専用回路によって実行され得ることを理解するであろう。
【0103】
本明細書に説明される方法は、ソフトウェアを用いて構成されたコンピュータによって実行されてもよく、上記ソフトウェアは、有形記憶媒体に記憶されたマシン可読形式のものであり、例えば、プログラムがコンピュータ上で実行されるとき、及びコンピュータプログラムがコンピュータ可読記憶媒体上に具現化され得る場合に、説明された方法の構成部分を実行するようにコンピュータを構成するコンピュータ可読プログラムコードを含むコンピュータプログラムの形式のものであり、あるいは、本明細書に説明された方法のうち任意のもののすべてのステップを実行するように適合させたコンピュータプログラムコード手段を含むコンピュータプログラムの形式のものである。有形(又は、非一時的)記憶媒体の例には、ディスク、サムドライブ、メモリカード等が含まれ、伝搬される信号は含まれない。ソフトウェアは、パラレルプロセッサ又はシリアルプロセッサ上での実行に適することが可能であり、したがって、方法ステップは、任意の適切な順序において、又は同時に実行され得る。
【0104】
本明細書に説明されるハードウェアコンポーネントは、コンピュータ可読プログラムコードをエンコードさせた非一時的コンピュータ可読記憶媒体によって生成されてもよい。
【0105】
さらに、所望の機能を実行するために集積回路を設計すること又はプログラマブルチップを構成することに用いられるとき、上記で説明されたモジュール、機能性、コンポーネント、又はロジックを実施するハードウェアの構成を「説明し」又は定義するソフトウェア、例えばHDL(ハードウェア記述言語)ソフトウェアなどを、包含することが意図される。すなわち、本明細書に説明された方法のうち任意のものを実行するように構成された処理ユニットを生成するための、又は本明細書に説明された任意の装置を含む処理ユニットを生成するためのコンピュータ可読プログラムコードをエンコードさせたコンピュータ可読記憶媒体が提供され得る。すなわち、コンピュータシステムが、回路素子の定義と該回路素子を組み合わせる規則を定義するデータとからデジタル回路の表現を生成するように構成されてもよく、これにおいて、非一時的コンピュータ可読記憶媒体は、プロセッサ実行可能命令を記憶させることが可能であり、上記プロセッサ実行可能命令は、コンピュータシステムにおいて実行されるときに、コンピュータシステムに、本明細書に説明された処理ユニットを生成させる。例えば、非一時的コンピュータ可読記憶媒体が、コンピュータ可読命令を記憶させることが可能であり、上記コンピュータ可読命令は、集積回路の出現(manifestation)を生成するコンピュータシステムにおいて処理されるときに、コンピュータシステムに、本明細書の例において説明されたとおりの受信器のプロセッサの出現を生成させ、あるいは、本明細書の例において説明された方法を実行するように構成されたプロセッサの出現を生成させる。プロセッサの出現は、プロセッサ自体、又は、プロセッサを生成することに使用することができるプロセッサの表現(例えば、マスク)であり得る。
【0106】
開示された態様を実施することに使用されるマシン実行可能データを記憶するメモリは、非一時的媒体であり得る。非一時的媒体は、揮発性又は不揮発性であり得る。揮発性非一時的媒体の例には、SRAM又はDRAMなどの、半導体ベースのメモリが含まれる。不揮発性メモリを実施することに使用され得るテクノロジーの例には、光及び磁気メモリテクノロジー、フラッシュメモリ、相変化メモリ、抵抗RAMが含まれる。
【0107】
「ロジック」に対する特定の参照は、1つ又は複数の機能を実行する構造を指す。ロジックの一例には、上記機能を実行するように配置された回路が含まれる。例えば、上記回路は、トランジスタ、及び/又は、製造プロセスにおいて利用可能な他のハードウェア要素を含み得る。上記トランジスタ及び/又は他の要素は、メモリを実装し及び/又は含む回路又は構造を形成することに使用されてもよく、上記回路又は構造は、例として、レジスタ、フリップフロップ又はラッチ、ブール演算などの論理演算子、加算器、乗算器又はシフタなどの数学演算子、及び相互接続などである。上記要素は、カスタム回路若しくは標準セルライブラリ、マクロ、又は他のレベルの抽象化において提供されてもよい。上記要素は、特定の配置において相互接続されてもよい。ロジックは、固定された機能である回路を含んでもよく、回路は、1つ又は複数の機能を実行するようにプログラムされることが可能である。上記プログラミングは、ファームウェア又はソフトウェアの更新又は制御メカニズムから提供されてもよい。1つの機能を実行するように識別されたロジックが、構成機能又はサブ処理を実施するロジックをさらに含んでもよい。一例において、ハードウェアロジックが、1つ又は複数の固定された機能演算、状態マシン又は処理を実施する回路を有する。
【0108】
当業者に明らかであろうとおり、本明細書に与えられた任意のレンジ又は装置値が、求められる効果を失うことなく拡張され、あるいは変えられてもよい。
【0109】
上記で説明された恩恵及び利点は、1つの実施形態に関連することがあり、あるいはいくつかの実施形態に関連し得ることが理解されるであろう。実施形態は、述べられた問題のいずれか又はすべてを解決するもの、又は述べられた恩恵及び利点のいずれか又はすべてを有するものに、限定されない。
【0110】
「一の(an)」アイテムに対するいかなる参照も、1つ以上の該アイテムを指す。用語「含む(comprising)」は、本明細書において、識別された方法ブロック又は要素を含むことを意味するように用いられ、しかし、こうしたブロック又は要素は排他的なリストを含まず、装置がさらなるブロック又は要素を含むことが可能であり、方法がさらなる動作又は要素を含むことが可能である。さらに、ブロック、要素、及び動作は、これら自体、暗黙的にクローズされない。
【0111】
本明細書に説明された方法のステップは、任意の適切な順序において、あるいは、適切である場合に同時に、実行されてよい。図内のボックス間の矢印は、方法ステップの一例示的なシーケンスを示すが、他のシーケンス、又は並列における複数ステップの実行を除外することは意図されない。さらに、個々のブロックが、本明細書に説明された対象事項の主旨及び範囲から逸脱することなく、上記方法のうち任意のものから削除されてもよい。上記で説明された例のうち任意のものの態様が、説明された他の例のうち任意のものの態様と組み合わせられて、求められる効果を失うことなく、さらなる例を形成してもよい。図面の要素が矢印で接続されて示される場合、上記矢印は、要素間のやりとり(データ及び制御メッセージを含む)の単に一例示的なフローを示すことが十分理解されるであろう。要素間のフローは、いずれかの方向、又は双方向であり得る。
【0112】
好適な実施形態の上記説明は単に例として与えられており、様々な修正が当業者によりなされ得ることが理解されるであろう。様々な実施形態がある程度の特定性で、又は1つ以上の個々の実施形態を参照して上記で説明されたが、当業者は、本発明の主旨又は範囲から逸脱することなく、開示された実施形態に対して多数の変更をなし得る。
上記の実施形態につき以下の付記を残しておく。
[付記1]
a)四角形パッチを定義する4つの頂点を含む入力を受け取ることであって、各頂点は、ドメイン空間座標及び頂点テッセレーション係数を含み、
b)前記頂点テッセレーション係数を閾値と比較し、
c)すべての4つの頂点テッセレーション係数が前記閾値より小さいか又は等しいと決定することに応答して、前記パッチを2つ又は4つの三角形に分割し、
d)前記4つの頂点テッセレーション係数のうち少なくとも1つが前記閾値を超えると決定することに応答して、
前記パッチに対する中心頂点を生成し、前記の新たに追加された中心頂点についての頂点テッセレーション係数及びブレンド係数を算出し、
順に、前記の4つの受け取られた頂点のうち各1つを選択することであって、各々の選択された頂点について、
前記選択された頂点に基づいて頂点を定義し、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えるか、又は双方の隣接頂点の頂点テッセレーション係数が前記閾値を超えると決定することに応答して、2つの新しい頂点を追加して前記選択された頂点と隣接頂点との間の各エッジを細分割し、前記新しい頂点の頂点テッセレーション係数及びブレンド係数を算出し、サブ四角形を定義し且つ前記の定義された頂点と前記中心頂点と前記2つの新しい頂点とを含む4つの頂点を、さらなる入力としてa)に提供し、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えず、正確に一方の隣接頂点の頂点テッセレーション係数が前記閾値を超えると決定することに応答して、新しい頂点を追加して、前記選択された頂点と前記閾値を超える頂点テッセレーション係数を有する隣接頂点との間のエッジを細分割し、前記の定義された頂点と前記の新たに追加された頂点と前記中心頂点と他方の隣接頂点とにより定義されるサブ四角形を、前記定義された頂点を前記サブ四角形における対角線的に対向の頂点に接続することによって2つの三角形に分割する
ように構成されたハードウェアロジックを含むハードウェアテッセレーションユニット。
[付記2]
前記パッチを2つ又は4つの三角形に分割するように構成された前記ハードウェアロジックは、
前記パッチがトップレベルパッチであるかを決定し、
前記パッチがトップレベルパッチであると決定することに応答して、中心頂点を追加し、各入力頂点を前記中心頂点につなぐことによって4つの三角形を作成し、
前記パッチがトップレベルパッチでないと決定することに応答して、前記パッチのソース頂点を前記パッチの対角線的に対向の頂点に接続することによって2つの三角形を作成する
ように構成されたハードウェアロジックを含む、付記1に記載のハードウェアテッセレーションユニット。
[付記3]
前記パッチに対する中心頂点を生成するように構成された前記ハードウェアロジックは、
トップレベルパッチについて、(i)N次元空間におけるすべての4つの角の頂点についての位置の平均と、(ii)N次元空間にマップされる、ドメイン空間におけるすべての4つの角の頂点についての場所の平均と、の重み付けされたブレンドにより与えられる位置を有する中心頂点を生成し、
トップレベルパッチでないパッチについて、(i)N次元空間における前記選択された頂点と対角線的に対向の頂点との位置の平均と、(ii)N次元空間にマップされる、ドメイン空間における前記選択された頂点と対角線的に対向の頂点とについての場所の平均と、の重み付けされたブレンドにより与えられる位置を有する中心頂点を生成する
ように構成されたハードウェアロジックを含み、
前記重み付けされたブレンドは、前記頂点テッセレーション係数の関数として決定される重み付けを使用する、
付記1又は2に記載のハードウェアテッセレーションユニット。
[付記4]
前記重み付けは、
MAX
i=0..3(MIN(TF
i-1,1))
により与えられる、付記3に記載のハードウェアテッセレーションユニット。
[付記5]
前記新たに追加された中心頂点についての頂点テッセレーション係数及びブレンド係数を算出するように構成された前記ハードウェアロジックは、
最初の頂点テッセレーション係数を、
【数14】
を用いて算出し、
前記新たに追加された中心頂点についての頂点テッセレーション係数TF
centre及びブレンド係数BW
centreを、
InitialTF
centreが2より小さいかを決定し、
InitialTF
centreが2.0より小さいと決定すること応答して、TF
centre=1及びBW
centre=BlendWeightFunc(TF
0,TF
1,TF
2,TF
3)を設定することであって、
BlendWeightFunc(TF
0,…TF
3)
.=MAX
i=0..3(MIN(TF
i-1,1))
であり、
InitialTF
centreが2.0より小さくないと決定すること応答して、TF
centre=InitialTF
centre/2及びBW
centre=1.0を設定する
ことによって算出する
ように構成されたハードウェアロジックを含む、付記1乃至4のうちいずれか1項に記載のハードウェアテッセレーションユニット。
[付記6]
前記選択された頂点に基づいて頂点を定義するように構成された前記ハードウェアロジックは、
前記の定義された頂点のドメイン空間座標を前記選択された頂点のドメイン空間座標に等しく設定し、
前記選択された頂点の頂点テッセレーション係数が1.0に等しいかと、前記選択された頂点の頂点テッセレーション係数が2.0より小さいかとを決定し、
前記選択された頂点の頂点テッセレーション係数が1.0に等しいと決定することに応答して、前記定義された頂点の頂点テッセレーション係数を1.0に等しく設定し、前記定義された頂点のブレンド係数を前記選択された頂点のブレンド係数に等しく設定し、
前記選択された頂点の頂点テッセレーション係数が1.0に等しくなく、2.0より小さいと決定することに応答して、前記定義された頂点の頂点テッセレーション係数を1.0に等しく設定し、前記定義された頂点のブレンド係数を前記選択された頂点の頂点テッセレーション係数より1少ない値に等しく設定し、
前記選択された頂点の頂点テッセレーション係数が2.0より小さくないと決定することに応答して、前記定義された頂点の頂点テッセレーション係数を前記選択された頂点の頂点テッセレーション係数の半分に等しく設定し、前記定義された頂点のブレンド係数を1に等しく設定する
ように構成されたハードウェアロジックを含む、付記1乃至5のうちいずれか1項に記載のハードウェアテッセレーションユニット。
[付記7]
2つの新しい頂点を追加して前記選択された頂点と隣接頂点との間の各エッジを細分割し、前記新しい頂点の頂点テッセレーション係数及びブレンド係数を算出するように構成された前記ハードウェアロジックは、頂点V
AとV
Bとの間のエッジを細分割する各々の新しい頂点V
Mについて、
V
Mについての最初の頂点テッセレーション係数を、
【数15】
を用いて算出し、
前記の新たに追加された頂点V
Mについての頂点テッセレーション係数TF
M及びブレンド係数BW
Mを、
InitialTF
Mが2より小さいかを決定し、
InitialTF
Mが2.0より小さいと決定することに応答して、TF
M=1及びBW
M=MAX(MIN(TF
A-1,1),MIN(TF
B-1,1))を設定し、
InitialTF
Mが2.0より小さくないと決定することに応答して、TF
M=InitialTF
M/2及びBW
M=1.0を設定し、
ドメイン空間におけるV
Mの位置を、V
A及びV
Bのドメイン空間座標の平均であるように、及び、(i)N次元空間におけるV
A及びV
Bの位置の平均と、(ii)N次元空間にマップされる、ドメイン空間におけるV
Mの位置との、BW
Mを用いて重み付けされたブレンドにより与えられる位置を有するN次元空間における位置に、設定する
ことによって算出する
ように構成されたハードウェアロジックを含む、付記1乃至6のうちいずれか1項に記載のハードウェアテッセレーションユニット。
[付記8]
三角形パッチを定義する3つの頂点を含む入力を受け取ることであって、各頂点は、ドメイン空間座標及び頂点テッセレーション係数を含み、
前記頂点テッセレーション係数を閾値と比較し、
前記3つの頂点テッセレーション係数のうち少なくとも1つが前記閾値を超えると決定することに応答して、
前記パッチに対する中心頂点を生成し、前記の新たに追加された頂点についての頂点テッセレーション係数及びブレンド係数を算出し、
順に、前記の3つの受け取られた頂点のうち各1つを選択することであって、各々の選択された頂点について、
前記選択された頂点に基づいて頂点を定義し、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えると決定することに応答して、2つの新しい頂点を追加して前記選択された頂点と隣接頂点との間の各エッジを細分割し、前記新しい頂点の頂点テッセレーション係数及びブレンド係数を算出し、サブ四角形を定義し且つ前記の定義された頂点と前記中心頂点と前記2つの新しい頂点とを含む4つの頂点を、さらなる入力としてa)に提供し、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えず、双方の隣接頂点の頂点テッセレーション係数が前記閾値を超えると決定することに応答して、2つの新しい頂点を追加して前記選択された頂点と隣接頂点との間の各エッジを細分割し、前記の定義された頂点と前記の新たに追加された頂点と前記中心頂点と他方の隣接頂点とにより定義されるサブ四角形を、前記定義された頂点を前記サブ四角形における対角線的に対向の頂点に接続することによって2つの三角形に分割し、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えず、次の隣接頂点の頂点テッセレーション係数が前記閾値を超え、前の隣接頂点の頂点テッセレーション係数が前記閾値を超えないと決定することに応答して、新しい頂点を追加して前記選択された頂点と前記次の隣接頂点との間のエッジを細分割し、前記定義された頂点と前記の新たに追加された頂点と前記中心頂点とを接続する1つの三角形を描画し、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えず、次の隣接頂点の頂点テッセレーション係数が前記閾値を超えず、前の隣接頂点の頂点テッセレーション係数が前記閾値を超えると決定することに応答して、新しい頂点を追加して前記選択された頂点と前記前の隣接頂点との間のエッジを細分割し、前記定義された頂点と前記の新たに追加された頂点と前記中心頂点と前記次の隣接頂点とにより定義されるサブ四角形を、前記定義された頂点を前記サブ四角形における対角線的に対向の頂点に接続することによって2つの三角形に分割する
ように構成されたハードウェアロジック、をさらに含む付記1乃至7のうちいずれか1項に記載のハードウェアテッセレーションユニット。
[付記9]
三角形パッチについて、前記パッチに対する中心頂点を生成し、前記の新たに追加された頂点についての頂点テッセレーション係数及びブレンド係数を算出するように構成された前記ハードウェアロジックは、
前記三角形パッチの3つの頂点の平均値により与えられるドメイン空間における位置を有する中心頂点を生成し、
最初の頂点テッセレーション係数を、
【数16】
を用いて算出し、
前記新たに追加された中心頂点についての頂点テッセレーション係数TF
centre及びブレンド係数BW
centreを、
InitialTF
centreが2より小さいかを決定し、
InitialTF
centreが2.0より小さいと決定すること応答して、TF
centre=1及びBW
centre=BlendWeightFunc(TF
0,TF
1,TF
2)を設定することであって、
BlendWeightFunc(TF
0,…TF
2)
.=MAX
i=0..2(MIN(TF
i-1,1))
であり、
InitialTF
centreが2.0より小さくないと決定すること応答して、TF
centre=InitialTF
centre/2及びBW
centre=1.0を設定する
ことによって算出する
ように構成されたハードウェアロジックを含む、付記8に記載のハードウェアテッセレーションユニット。
[付記10]
三角形パッチについて、前記選択された頂点に基づいて頂点を定義するように構成された前記ハードウェアロジックは、
前記の定義された頂点のドメイン空間座標を前記選択された頂点のドメイン空間座標に等しく設定し、
前記選択された頂点の頂点テッセレーション係数が1.0に等しいかと、前記選択された頂点の頂点テッセレーション係数が2.0より小さいかとを決定し、
前記選択された頂点の頂点テッセレーション係数が1.0に等しいと決定することに応答して、前記定義された頂点の頂点テッセレーション係数を1.0に等しく設定し、前記定義された頂点のブレンド係数を前記選択された頂点のブレンド係数に等しく設定し、
前記選択された頂点の頂点テッセレーション係数が1.0に等しくなく、2.0より小さいと決定することに応答して、前記定義された頂点の頂点テッセレーション係数を1.0に等しく設定し、前記定義された頂点のブレンド係数を前記選択された頂点の頂点テッセレーション係数より1少ない値に等しく設定し、
前記選択された頂点の頂点テッセレーション係数が2.0より小さくないと決定することに応答して、前記定義された頂点の頂点テッセレーション係数を前記選択された頂点の頂点テッセレーション係数の半分に等しく設定し、前記定義された頂点のブレンド係数を1に等しく設定する
ように構成されたハードウェアロジックを含む、付記8又は9に記載のハードウェアテッセレーションユニット。
[付記11]
三角形パッチについて、新しい頂点を追加して前記選択された頂点と隣接頂点との間の各エッジを細分割し、前記新しい頂点の頂点テッセレーション係数及びブレンド係数を算出するように構成された前記ハードウェアロジックは、頂点V
AとV
Bとの間のエッジを細分割する各々の新しい頂点V
Mについて、
V
Mについての最初の頂点テッセレーション係数を、
【数17】
を用いて算出し、
前記の新たに追加された頂点V
Mについての頂点テッセレーション係数TF
M及びブレンド係数BW
Mを、
InitialTF
Mが2より小さいかを決定し、
InitialTF
Mが2.0より小さいと決定することに応答して、TF
M=1及びBW
M=MAX(MIN(TF
A-1,1),MIN(TF
B-1,1))を設定し、
InitialTF
Mが2.0より小さくないと決定することに応答して、TF
M=InitialTF
M/2及びBW
M=1.0を設定し、
ドメイン空間におけるV
Mの位置を、V
A及びV
Bのドメイン空間座標の平均であるように、及び、(i)N次元空間におけるV
A及びV
Bの位置の平均と、(ii)N次元空間にマップされる、ドメイン空間におけるV
Mの位置との、BW
Mを用いて重み付けされたブレンドにより与えられる位置を有するN次元空間における位置に、設定する
ことによって算出する
ように構成されたハードウェアロジックを含む、付記8乃至10のうちいずれか1項に記載のハードウェアテッセレーションユニット。
[付記12]
P>4においてP辺のパッチを定義するP個の頂点を含む入力を受け取ることであって、各頂点は、ドメイン空間座標及び頂点テッセレーション係数を含み、
前記頂点テッセレーション係数を閾値と比較し、
すべてのP個の頂点テッセレーション係数が前記閾値を超えないと決定することに応答して、中心頂点を追加し、前記パッチをP個の三角形に分割し、
前記P個の頂点テッセレーション係数のうち少なくとも1つが前記閾値を超えると決定することに応答して、
前記パッチについての中心頂点を生成し、前記の新たに追加された中心頂点についての頂点テッセレーション係数及びブレンド係数を算出し、
順に、前記のP個の受け取られた頂点のうち各1つを選択することであって、各々の選択された頂点について、
前記選択された頂点に基づいて頂点を定義し、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えるか、又は双方の隣接頂点の頂点テッセレーション係数が前記閾値を超えると決定することに応答して、2つの新しい頂点を追加して前記選択された頂点と隣接頂点との間の各エッジを細分割し、前記新しい頂点の頂点テッセレーション係数及びブレンド係数を算出し、サブ四角形を定義し且つ前記の定義された頂点と前記中心頂点と前記2つの新しい頂点とを含む4つの頂点を、さらなる入力としてa)に提供し、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えず、正確に一方の隣接頂点の頂点テッセレーション係数が前記閾値を超えると決定することに応答して、新しい頂点を追加して、前記選択された頂点と前記閾値を超える頂点テッセレーション係数を有する隣接頂点との間のエッジを細分割し、前記の定義された頂点と前記の新たに追加された頂点と前記中心頂点と他方の隣接頂点とにより定義されるサブ四角形を、前記定義された頂点を前記サブ四角形における対角線的に対向の頂点に接続することによって2つの三角形に分割する
ように構成されたハードウェアロジック、をさらに含む付記1乃至11のうちいずれか1項に記載のハードウェアテッセレーションユニット。
[付記13]
パッチ又はサブ四角形内における再利用のための頂点データを記憶するように配置されたメモリ素子、をさらに含み、前記パッチ又はサブ四角形の2つ以上の細分割された部分の一部であるエッジを細分割するように追加される頂点が、パッチ又はサブ四角形ごとに1回だけ決定される、付記1乃至12のうちいずれか1項に記載のハードウェアテッセレーションユニット。
[付記14]
コンピュータグラフィクスシステムにおいてテッセレーションを実行する方法であって、
a)四角形パッチを定義する4つの頂点を含む入力を受け取るステップであって、各頂点は、ドメイン空間座標及び頂点テッセレーション係数を含む、ステップと、
b)前記頂点テッセレーション係数を閾値と比較するステップと、
c)すべての4つの頂点テッセレーション係数が前記閾値を超えないと決定することに応答して、前記パッチを2つ又は4つの三角形に分割するステップと、
d)少なくとも1つのテッセレーション係数が前記閾値を超えると決定することに応答して、
前記パッチに対する中心頂点を生成し、前記の新たに追加された中心頂点についての頂点テッセレーション係数及びブレンド係数を算出するステップと、
順に、前記の4つの受け取られた頂点のうち各1つを選択するステップであって、各々の選択された頂点について、
前記選択された頂点に基づいて頂点を定義するステップと、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えるか、又は双方の隣接頂点の頂点テッセレーション係数が前記閾値を超えると決定することに応答して、2つの新しい頂点を追加して前記選択された頂点と隣接頂点との間の各エッジを細分割し、前記新しい頂点の頂点テッセレーション係数及びブレンド係数を算出し、サブ四角形を定義し且つ前記の定義された頂点と前記中心頂点と前記2つの新しい頂点とを含む4つの頂点を、さらなる入力としてa)に提供するステップと、
前記選択された頂点の頂点テッセレーション係数が前記閾値を超えず、正確に一方の隣接頂点の頂点テッセレーション係数が前記閾値を超えると決定することに応答して、新しい頂点を追加して、前記選択された頂点と前記閾値を超える頂点テッセレーション係数を有する隣接頂点との間のエッジを細分割し、前記の定義された頂点と前記の新たに追加された頂点と前記中心頂点と他方の隣接頂点とにより定義されるサブ四角形を、前記定義された頂点を前記サブ四角形における対角線的に対向の頂点に接続することによって2つの三角形に分割するステップと、
を含む方法。
[付記15]
前記パッチを2つ又は4つの三角形に分割するステップは、
前記パッチがトップレベルパッチであるかを決定すること、
前記パッチがトップレベルパッチであると決定することに応答して、中心頂点を追加し、各入力頂点を前記中心頂点につなぐことによって4つの三角形を作成こと、及び
前記パッチがトップレベルパッチでないと決定することに応答して、前記パッチのソース頂点を前記パッチの対角線的に対向の頂点に接続することによって2つの三角形を作成すること
を含む、付記14に記載の方法。
[付記16]
前記パッチに対する中心頂点を生成するステップは、
トップレベルパッチについて、(i)N次元空間におけるすべての4つの角の頂点についての位置の平均と、(ii)N次元空間にマップされる、ドメイン空間におけるすべての4つの角の頂点についての場所の平均と、の重み付けされたブレンドにより与えられる位置を有する中心頂点を生成すること、及び
トップレベルパッチでないパッチについて、(i)N次元空間における前記選択された頂点と対角線的に対向の頂点との位置の平均と、(ii)N次元空間にマップされる、ドメイン空間における前記選択された頂点と対角線的に対向の頂点とについての場所の平均と、の重み付けされたブレンドにより与えられる位置を有する中心頂点を生成すること
を含み、
前記重み付けされたブレンドは、前記頂点テッセレーション係数の関数として決定される重み付けを使用する、
付記14又は15に記載の方法。
[付記17]
前記新たに追加された中心頂点についての頂点テッセレーション係数及びブレンド係数を算出するステップは、
最初の頂点テッセレーション係数を、
【数18】
を用いて算出すること、及び
前記新たに追加された中心頂点についての頂点テッセレーション係数TF
centre及びブレンド係数BW
centreを、
InitialTF
centreが2より小さいかを決定し、
InitialTF
centreが2.0より小さいと決定すること応答して、TF
centre=1及びBW
centre=BlendWeightFunc(TF
0,TF
1,TF
2,TF
3)を設定することであって、
BlendWeightFunc(TF
0,…TF
3)
.=MAX
i=0..3(MIN(TF
i-1,1))
であり、
InitialTF
centreが2.0より小さくないと決定すること応答して、TF
centre=InitialTF
centre/2及びBW
centre=1.0を設定する
ことによって算出すること、
を含む、付記14乃至16のうちいずれか1項に記載の方法。
[付記18]
前記選択された頂点に基づいて頂点を定義するステップは、
前記の定義された頂点のドメイン空間座標を前記選択された頂点のドメイン空間座標に等しく設定すること、
前記選択された頂点の頂点テッセレーション係数が1.0に等しいかと、前記選択された頂点の頂点テッセレーション係数が2.0より小さいかとを決定すること、
前記選択された頂点の頂点テッセレーション係数が1.0に等しいと決定することに応答して、前記定義された頂点の頂点テッセレーション係数を1.0に等しく設定し、前記定義された頂点のブレンド係数を前記選択された頂点のブレンド係数に等しく設定すること、
前記選択された頂点の頂点テッセレーション係数が1.0に等しくなく、2.0より小さいと決定することに応答して、前記定義された頂点の頂点テッセレーション係数を1.0に等しく設定し、前記定義された頂点のブレンド係数を前記選択された頂点の頂点テッセレーション係数より1少ない値に等しく設定すること、及び
前記選択された頂点の頂点テッセレーション係数が2.0より小さくないと決定することに応答して、前記定義された頂点の頂点テッセレーション係数を前記選択された頂点の頂点テッセレーション係数の半分に等しく設定し、前記定義された頂点のブレンド係数を1に等しく設定すること、
を含む、付記14乃至17のうちいずれか1項に記載の方法。
[付記19]
2つの新しい頂点を追加して前記選択された頂点と隣接頂点との間の各エッジを細分割し、前記新しい頂点の頂点テッセレーション係数及びブレンド係数を算出するステップは、頂点V
AとV
Bとの間のエッジを細分割する各々の新しい頂点V
Mについて、
V
Mについての最初の頂点テッセレーション係数を、
【数19】
を用いて算出すること、及び
前記の新たに追加された頂点V
Mについての頂点テッセレーション係数TF
M及びブレンド係数BW
Mを、
InitialTF
Mが2より小さいかを決定し、
InitialTF
Mが2.0より小さいと決定することに応答して、TF
M=1及びBW
M=MAX(MIN(TF
A-1,1),MIN(TF
B-1,1))を設定し、
InitialTF
Mが2.0より小さくないと決定することに応答して、TF
M=InitialTF
M/2及びBW
M=1.0を設定し、
ドメイン空間におけるV
Mの位置を、V
A及びV
Bのドメイン空間座標の平均であるように、及び、(i)N次元空間におけるV
A及びV
Bの位置の平均と、(ii)N次元空間にマップされる、ドメイン空間におけるV
Mの位置との、BW
Mを用いて重み付けされたブレンドにより与えられる位置を有するN次元空間における位置に、設定する
ことによって算出すること、
を含む、付記14乃至18のうちいずれか1項に記載の方法。
[付記20]
付記1乃至13のうちいずれか1項に記載のハードウェアテッセレーションユニットを定義するコンピュータ可読プログラムコードをエンコードさせたコンピュータ可読記憶媒体。