(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-22
(45)【発行日】2023-05-30
(54)【発明の名称】三角形の再帰的細分割を用いたテッセレーション方法
(51)【国際特許分類】
G06T 17/20 20060101AFI20230523BHJP
【FI】
G06T17/20 500
(21)【出願番号】P 2022026393
(22)【出願日】2022-02-24
(62)【分割の表示】P 2020121544の分割
【原出願日】2016-06-03
【審査請求日】2022-02-24
(32)【優先日】2015-06-05
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】512272786
【氏名又は名称】イマジネーション テクノロジーズ リミティッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ピーター マルコルム,レイシー
(72)【発明者】
【氏名】サイモン,フェンニー
【審査官】村松 貴士
(56)【参考文献】
【文献】特開2015-18551(JP,A)
【文献】特表2005-525645(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00 - 19/20
(57)【特許請求の範囲】
【請求項1】
コンピュータグラフィックスシステムにおいて入力パッチのテッセレーションを実行する方法であって、前記入力パッチは、三角形入力パッチ又は四辺形入力パッチであり、当該方法は、
前記入力パッチの中心に新しい頂点を形成するステップ(704,804)と、
該新しい頂点の頂点テッセレーション係数を計算するステップ(706,806)と、
前記入力パッチを分割して、三角形入力パッチの場合は3つの新しい三角形パッチ、又は四辺形入力パッチの場合は4つの新しい三角形パッチを形成するステップ(710,810)と、
前記新しいパッチの各頂点の前記頂点テッセレーション係数を低減させるステップ(708,808)と、
テッセレーションアルゴリズムを各三角形パッチに再帰的に適用するステップ(506)と、を含む、
方法。
【請求項2】
前記新しいパッチのそれぞれが、前記新しい頂点と前記入力パッチの2つの頂点とを含む3つの頂点を有する、請求項1に記載の方法。
【請求項3】
三角形入力パッチについて、
前記入力パッチの各頂点の頂点テッセレーション係数を閾値と比較するステップ(702)と、
前記頂点テッセレーション係数のいずれも前記閾値を超えないと判定したことに応答して、前記入力パッチを記述したデータを出力するステップ(712)と、をさらに含む、請求項1に記載の方法。
【請求項4】
前記新しい頂点を形成するステップ、頂点テッセレーション係数を計算するステップ、前記入力パッチを分割するステップ、前記頂点テッセレーション係数を低減するステップは、前記頂点テッセレーション係数のうちの少なくとも1つが前記閾値を超えると判定することに応答して実行される、請求項3に記載の方法。
【請求項5】
前記入力パッチは、3つの頂点、すなわち、上頂点、左頂点、及び右頂点を含む三角形入力パッチであり、前記三角形の中心の前記新しい頂点の頂点テッセレーション係数は、次式を使用して計算され、
MID.TF=MEAN(TOP.TF,LEFT.TF,RIGHT.TF)
ここで、MID.TFは前記新しい頂点の前記頂点テッセレーション係数であり、TOP.TFは前記上頂点の前記頂点テッセレーション係数であり、LEFT.TFは前記左頂点の前記頂点テッセレーション係数であり、RIGHT.TFは前記右頂点の前記頂点テッセレーション係数であり、MEAN()は括弧内の値の平均である、請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
MEAN(TOP.TF,LEFT.TF,RIGHT.TF)は、次式を使用して計算され、
MEAN(TOP.TF,LEFT.TF,RIGHT.TF)=MIN(AVG(TOP.TF,LEFT.TF,RIGHT.TF),MIN(TOP.TF,LEFT.TF,RIGHT.TF)+INTERVAL)
ここで、AVG()は括弧内の値の算術平均であり、MIN()は括弧内の値のリストの最小値であり、INTERVALは予め定められたパラメータである、請求項5に記載の方法。
【請求項7】
新たに形成した最初のパッチのそれぞれにおける各頂点の前記頂点テッセレーション係数を低減するステップは、前記予め定められたパラメータであるINTERVALによって各頂点テッセレーション係数を低減するステップを含む、請求項6に記載の方法。
【請求項8】
前記INTERVAL=0.5である、請求項6に記載の方法。
【請求項9】
前記入力パッチは、4つの頂点、すなわち、左上頂点、右上頂点、左下頂点、及び右下頂点を含む四辺形入力パッチであり、前記三角形の中心の前記新しい頂点の前記頂点テッセレーション係数は、次式を使用して計算され、
MID.TF=MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)
ここで、MID.TFは前記新しい頂点の前記頂点テッセレーション係数であり、TLEFT.TFは前記左上頂点の前記頂点テッセレーション係数であり、TRIGHT.TFは前記右上頂点の前記頂点テッセレーション係数であり、BLEFT.TFは前記左下頂点の前記頂点テッセレーション係数であり、BRIGHT.TFは前記右下頂点の前記頂点テッセレーション係数であり、MEAN()は括弧内の値の平均である、請求項1に記載の方法。
【請求項10】
前記MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)は、次式を使用して計算され、
MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)=MIN(AVG(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF),MIN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)+INTERVAL)
ここで、AVG()は括弧内の値の算術平均であり、MIN()は括弧内の値のリストの最小値であり、INTERVALは予め定められたパラメータである、請求項9に記載の方法。
【請求項11】
新たに形成した最初の前記パッチのそれぞれにおける各頂点の前記頂点テッセレーション係数を低減するステップは、予め定められたパラメータであるINTERVALによって各頂点テッセレーション係数を低減するステップを含む、請求項10に記載の方法。
【請求項12】
中心テッセレーション係数を有する三角形パッチを受け取るステップ(502)と、
4つの新しい頂点を追加して、前記三角形パッチを3つの新しい四辺形パッチに細分割するステップ(1704)と、
前記4つの新しい頂点のそれぞれの頂点テッセレーション係数を計算するステップ(1706)と、
前記3つの新しい四辺形パッチの各頂点の前記頂点テッセレーション係数を低減するステップ(1708)と、を含み、
テッセレーションが実行される前記入力パッチは、前記3つの新しい四辺形パッチのうちの1つである、請求項9乃至11のいずれか一項に記載の方法。
【請求項13】
中心テッセレーション係数を有する四辺形パッチを受け取るステップ(502)と、
5つの新しい頂点を追加して、予備的な四辺形パッチを4つの新しい四辺形パッチに細分割するステップ(1702)と、
前記5つの新しい頂点のそれぞれの頂点テッセレーション係数を計算するステップ(1706)と、
前記4つの新しい四辺形パッチの各頂点の前記頂点テッセレーション係数を低減するステップ(1708)と、を含み、
テッセレーションが実行される前記入力パッチは、前記4つの新しい四辺形パッチのうちの1つである、請求項9乃至11のいずれか一項に記載の方法。
【請求項14】
前記新しい頂点は、前記入力パッチの重心に形成される、請求項1乃至13のいずれか一項に記載の方法。
【請求項15】
コンピュータグラフィックスシステムにおいて入力パッチのテッセレーションを実行するように構成されたハードウェアテッセレーションユニットであって、前記入力パッチは、三角形入力パッチ又は四辺形入力パッチであり、当該ハードウェアテッセレーションユニットは、
前記入力パッチの中心に新しい頂点を形成すること、
該新しい頂点の頂点テッセレーション係数を計算すること、
前記入力パッチを分割して、三角形入力パッチの場合は3つの新しい三角形パッチ、又は四辺形入力パッチの場合は4つの新しい三角形パッチを形成すること、
前記新しいパッチの各頂点の前記頂点テッセレーション係数を低減すること、及び
テッセレーションアルゴリズムを各三角形パッチに再帰的に適用すること、を行うように構成されたハードウェアロジックを含む、
ハードウェアテッセレーションユニット。
【請求項16】
前記ハードウェアロジックは、
前記入力パッチの各頂点の頂点テッセレーション係数を閾値と比較すること、及び
前記頂点テッセレーション係数のいずれも前記閾値を超えないと判定したことに応答して、前記入力パッチを記述したデータを出力すること、を行うようにさらに構成される、請求項15に記載のハードウェアテッセレーションユニット。
【請求項17】
前記ハードウェアロジックは、前記頂点テッセレーション係数のうちの少なくとも1つが前記閾値を超えると判定することに応答して、新しい頂点を形成し、頂点テッセレーション係数を計算し、前記入力パッチを分割し、前記頂点テッセレーション係数を低減するように構成される、請求項16に記載のハードウェアテッセレーションユニット。
【発明の詳細な説明】
【背景技術】
【0001】
テッセレーションは、シーンにおけるオブジェクトを表現するサーフェスのセットを、レンダリングにより適した複数のより小さいより単純なピース(プリミティブと呼ばれ、通常は三角形である)に分割するためにコンピュータグラフィックスにおいて使用される技術である。結果として生じるテッセレーションされたサーフェスは、一般に、元のサーフェスの近似であるが、この近似の正確さは、生成されるプリミティブの数を増加させることにより向上させることができるが、プリミティブの数を増加させることは、通常、プリミティブがより小さくなることをもたらす。テッセレーション/細分割の量(amount)は、通常、詳細レベル(LOD:level of detail)によって決定される。したがって、増加した数のプリミティブは、通常、より高い詳細レベルが必要とされる場合に使用される。例えば、オブジェクトが、ビューワ(viewer)により近いため、且つ/あるいは、オブジェクトが、より複雑な形状を有するためである。しかしながら、より多くの数の三角形の使用は、シーンをレンダリングするのに必要とされる処理労力を増大させる。
【0002】
三角形プリミティブへの細分割は、通常、形状が四角又は三角である(すなわち、四辺形(quad)又は三角形の)パッチに対して実行され、そのようなパッチを湾曲させて、パッチが表現するオブジェクトのサーフェスにフィットさせる(したがって、パッチは、「サーフェスパッチ」と呼ばれることがある)、且つ/あるいは、パッチに変位マッピングを適用させる。しかしながら、細分割は、湾曲したパッチに対しては実行されず、代わりに、パッチのドメインにおいて実行され(例えば、パッチは、多項式により定義されるというより、平面的であると言える)、このドメインは、(u,v)パラメータの観点で定義され、「パラメトリック空間」と呼ばれ得る。これは、テッセレーションプロセスが、最終的なサーフェスに存在するいずれの湾曲からも独立していることを意味する。
【0003】
テッセレーションは、(例えば、異なる詳細レベルで、且つ/又は、異なる視点から、シーンの複数の異なるビューを算出するために)前もって実行されることもあるし、(例えば、連続的な詳細レベル又はビュー依存の詳細レベルを提供するために)オンザフライで(on the fly)実行されることもある。いくつかの既存のテッセレーション方法を使用すると、ユーザは、要求される詳細レベルが滑らかに変わるとしても、結果として生じるテッセレーションが非連続的に変わる場合には、望ましくない視覚的アーチファクトを経験し得る。
【0004】
以下に記載の実施形態は、例として提供されるに過ぎず、テッセレーションを実行するための既知の方法及び装置の欠点のいずれか又は全てを解決する実装例を限定するものではない。
【発明の概要】
【0005】
この発明の概要は、発明を実施するための形態において以下でさらに説明するコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この発明の概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を決定する際の助けとして使用されることを意図するものでもない。
【0006】
四辺形、三角形、又は等値線(isoline)であり得るパッチの各頂点のために定義された頂点テッセレーション係数を使用するテッセレーション方法が説明される。本方法は、コンピュータグラフィックスシステムにおいて実施される。本方法は、頂点テッセレーション係数を閾値と比較することを含む。最初のパッチのエッジを定義している左頂点及び右頂点のうちの一方の頂点テッセレーション係数が、閾値より大きい場合、エッジを2つの部分に分割する新たな頂点を追加することにより、エッジが細分割され、2つの新たなパッチが形成される。新たに形成されたパッチの各々は、新たに追加された頂点を含み、新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数が算出される。次いで、本方法は、頂点テッセレーション係数のいずれもが閾値以下になるまで、新たに形成されたパッチの各々に対して繰り返される。
【0007】
第1の態様は、コンピュータグラフィックスシステムにおいてテッセレーションを実行する方法であって、
エッジにより結ばれている左頂点及び右頂点を含む最初のパッチであって、ドメイン空間において定義されている最初のパッチについて、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数を、閾値と比較するステップと、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数のいずれも、閾値より大きくないと判定したことに応じて、最初のパッチを記述したデータを出力するステップと、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数のいずれかが、閾値より大きいと判定したことに応じて、エッジを2つの部分に細分割する新たな頂点を形成し、新たな頂点の頂点テッセレーション係数を算出し、最初のパッチを分割して、左頂点及び新たな頂点を含む第1の新たなパッチと、右頂点及び新たな頂点を含む第2の新たなパッチと、を形成し、新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含む方法を提供する。
【0008】
新たな頂点は、エッジを二等分し得る。
【0009】
当該方法は、
新たに形成されたパッチの各々に対して、最初のパッチとして、方法を繰り返すステップ
をさらに含み得る。
新たに形成されたパッチの各々に対して、最初のパッチとして、方法を繰り返すことは、新たに形成されたパッチの各々における左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数が閾値以下になるまで、新たに形成されたパッチの各々に対して、最初のパッチとして、方法を繰り返すことを含み得る。
【0010】
新たな頂点の頂点テッセレーション係数を算出することは、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数の平均値を算出することと、
新たな頂点の頂点テッセレーション係数を、算出された平均値に設定することと、
を含み得る。
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数の平均値は、
MEAN(LEFT.TF,RIGHT.TF)=MIN(AVG(LEFT.TF,RIGHT.TF),MIN(LEFT.TF,RIGHT.TF)+INTERVAL)
により与えられ得、
ここで、LEFT.TFは、左頂点の頂点テッセレーション係数であり、RIGHT.TFは、右頂点の頂点テッセレーション係数であり、AVG()は、括弧内の値の算術平均であり、MIN()は、括弧内の値のリストのうちの最小であり、INTERVALは、予め定められたパラメータである。
【0011】
新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数を低減させることは、新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数の各頂点テッセレーション係数を、予め定められたパラメータINTERVALだけ低減させることを含み得る。パラメータINTERVALは、0.5であり得る。
【0012】
閾値は、0であり得る。
【0013】
最初のパッチは、左頂点及び右頂点からなる2つの頂点により定義されている等値線パッチであり得る。
【0014】
最初のパッチは、三角形パッチであり得、三角形パッチは、上頂点、前記右頂点、及び前記左頂点からなる3つの頂点の順序付きセットである。分割されたパッチは、新たに形成されたパッチの親パッチであり得、第1の新たなパッチは、親パッチに追加された新たな頂点である上頂点と、親パッチの左頂点である右頂点と、親パッチの上頂点である左頂点と、からなる3つの頂点の順序付きセットであり、第2の新たなパッチは、親パッチに追加された新たな頂点である上頂点と、親パッチの上頂点である右頂点と、親パッチの右頂点である左頂点と、からなる3つの頂点の順序付きセットである。
【0015】
最初のパッチが三角形パッチである場合、当該方法は、
入力パッチを受信するステップと、
入力パッチから1以上の最初のパッチを生成するステップと、
1以上の最初のパッチの各々に対して、方法を繰り返すステップと、
をさらに含み得る。
入力パッチは、3つの頂点を有する三角形パッチであり得、1以上の最初のパッチを生成するステップは、
3つの頂点の各々の頂点テッセレーション係数を、閾値と比較するステップと、
3つの頂点の各々の頂点テッセレーション係数のいずれも、閾値より大きくないと判定したことに応じて、入力パッチを記述したデータを出力するステップと、
3つの頂点の各々の頂点テッセレーション係数のうち少なくとも1つの頂点テッセレーション係数が、閾値より大きいと判定したことに応じて、三角形パッチの中心に新たな頂点を形成し、新たな頂点の頂点テッセレーション係数を算出し、入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである3つの最初のパッチを形成し、新たに形成された3つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含み得る。
新たな頂点は、三角形パッチの重心に形成され得る。
入力パッチの3つの頂点は、上頂点、左頂点、及び右頂点であり得、三角形パッチの中心における新たな頂点の頂点テッセレーション係数は、
MID.TF=MEAN(TOP.TF,LEFT.TF,RIGHT.TF)
を使用して算出され得、
ここで、MID.TFは、新たな頂点の頂点テッセレーション係数であり、TOP.TFは、上頂点の頂点テッセレーション係数であり、LEFT.TFは、左頂点の頂点テッセレーション係数であり、RIGHT.TFは、右頂点の頂点テッセレーション係数であり、MEAN()は、括弧内の値の平均である。
【0016】
MEAN(TOP.TF,LEFT.TF,RIGHT.TF)は、
MEAN(TOP.TF,LEFT.TF,RIGHT.TF)=MIN(AVG(TOP.TF,LEFT.TF,RIGHT.TF),MIN(TOP.TF,LEFT.TF,RIGHT.TF)+INTERVAL)
を使用して算出され得、
ここで、AVG()は、括弧内の値の算術平均であり、MIN()は、括弧内の値のリストのうちの最小であり、INTERVALは、予め定められたパラメータである。
【0017】
入力パッチは、4つの頂点を有する四辺形パッチであり得、1以上の最初のパッチを生成するステップは、
四辺形パッチの中心に新たな頂点を形成するステップと、
新たな頂点の頂点テッセレーション係数を算出するステップと、
入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである4つの最初のパッチを形成するステップと、
新たに形成された4つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含み得る。
【0018】
入力パッチは、4つの頂点及び中心テッセレーション係数を有する四辺形パッチであり得、1以上の最初のパッチを生成するステップは、
新たな5つの頂点を追加して、入力パッチを、4つの四辺形サブ入力パッチに細分割するステップと、
新たに追加された5つの頂点の各々の頂点テッセレーション係数を算出するステップと、
新たに形成された4つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させるステップと、
4つの四辺形サブ入力パッチの各々について、
四辺形サブ入力パッチの中心に新たな頂点を形成するステップと、
新たな頂点の頂点テッセレーション係数を算出するステップと、
四辺形サブ入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである4つの最初のパッチを形成するステップと、
新たに形成された4つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含み得る。
【0019】
入力パッチは、3つの頂点及び中心テッセレーション係数を有する三角形パッチであり得、1以上の最初のパッチを生成するステップは、
新たな4つの頂点を追加して、入力パッチを、3つの四辺形サブ入力パッチに細分割するステップと、
新たに追加された4つの頂点の各々の頂点テッセレーション係数を算出するステップと、
新たに形成された3つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させるステップと、
3つの四辺形サブ入力パッチの各々について、
四辺形サブ入力パッチの中心に新たな頂点を形成するステップと、
新たな頂点の頂点テッセレーション係数を算出するステップと、
四辺形サブ入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである4つの最初のパッチを形成するステップと、
新たに形成された4つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含み得る。
【0020】
入力パッチの4つ頂点は、左上頂点、右上頂点、左下頂点、及び右下頂点であり得、三角形パッチの中心における新たな頂点の頂点テッセレーション係数は、
MID.TF=MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)
を使用して算出され得、
ここで、MID.TFは、新たな頂点の頂点テッセレーション係数であり、TLEFT.TFは、左上頂点の頂点テッセレーション係数であり、TRIGHT.TFは、右上頂点の頂点テッセレーション係数であり、BLEFT.TFは、左下頂点の頂点テッセレーション係数であり、BRIGHT.TFは、右下頂点の頂点テッセレーション係数であり、MEAN()は、括弧内の値の平均である。
【0021】
MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)は、
MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)=MIN(AVG(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF),MIN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)+INTERVAL)
を使用して算出され得、
ここで、AVG()は、括弧内の値の算術平均であり、MIN()は、括弧内の値のリストのうちの最小であり、INTERVALは、予め定められたパラメータである。
【0022】
新たに形成された最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させることは、新たに形成された最初のパッチの各々における各頂点の頂点テッセレーション係数の各頂点テッセレーション係数を、予め定められたパラメータINTERVALだけ低減させることを含み得る。
【0023】
第2の態様は、
エッジにより結ばれている左頂点及び右頂点を含む最初のパッチであって、ドメイン空間において定義されている最初のパッチについて、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数を、閾値と比較し、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数のいずれも、閾値より大きくないと判定したことに応じて、最初のパッチを記述したデータを出力し、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数のいずれかが、閾値より大きいと判定したことに応じて、エッジを2つの部分に細分割する新たな頂点を形成し、新たな頂点の頂点テッセレーション係数を算出し、最初のパッチを分割して、左頂点及び新たな頂点を含む第1の新たなパッチと、右頂点及び新たな頂点を含む第2の新たなパッチと、を形成し、新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を備えたハードウェアテッセレーションユニットを提供する。
【0024】
ハードウェアロジックは、新たに形成されたパッチの各々に対して、最初のパッチとして、方法を繰り返すようさらに構成され得る。
【0025】
新たな頂点の頂点テッセレーション係数を算出するよう構成されているハードウェアロジックは、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数の平均値を算出し、
新たな頂点の頂点テッセレーション係数を、算出された平均値に設定する
よう構成されているハードウェアロジック
を含み得る。
【0026】
最初のパッチは、左頂点及び右頂点からなる2つの頂点により定義されている等値線パッチであり得る。
【0027】
最初のパッチは、三角形パッチであり得、三角形パッチは、上頂点、前記右頂点、及び前記左頂点からなる3つの頂点の順序付きセットである。分割されたパッチは、新たに形成されたパッチの親パッチであり得、第1の新たなパッチは、親パッチに追加された新たな頂点である上頂点と、親パッチの左頂点である右頂点と、親パッチの上頂点である左頂点と、からなる3つの頂点の順序付きセットであり、第2の新たなパッチは、親パッチに追加された新たな頂点である上頂点と、親パッチの上頂点である右頂点と、親パッチの右頂点である左頂点と、からなる3つの頂点の順序付きセットである。
【0028】
当該ハードウェアテッセレーションユニットは、
入力パッチを受信し、
入力パッチから1以上の最初のパッチを生成し、
1以上の最初のパッチの各々に対して、方法を繰り返す
よう構成されているハードウェアロジック
をさらに備え得る。
【0029】
入力パッチは、3つの頂点を有する三角形パッチであり得、1以上の最初のパッチを生成するよう構成されているハードウェアロジックは、
3つの頂点の各々の頂点テッセレーション係数を、閾値と比較し、
3つの頂点の各々の頂点テッセレーション係数のいずれも、閾値より大きくないと判定したことに応じて、入力パッチを記述したデータを出力し、
3つの頂点の各々の頂点テッセレーション係数のうち少なくとも1つの頂点テッセレーション係数が、閾値より大きいと判定したことに応じて、三角形パッチの中心に新たな頂点を形成し、新たな頂点の頂点テッセレーション係数を算出し、入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである3つの最初のパッチを形成し、新たに形成された3つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含み得る。
【0030】
入力パッチは、4つの頂点を有する四辺形パッチであり得、1以上の最初のパッチを生成するよう構成されているハードウェアロジックは、
四辺形パッチの中心に新たな頂点を形成し、
新たな頂点の頂点テッセレーション係数を算出し、
入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである4つの最初のパッチを形成し、
新たに形成された4つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含み得る。
【0031】
入力パッチは、4つの頂点及び中心テッセレーション係数を有する四辺形パッチであり得、1以上の最初のパッチを生成するよう構成されているハードウェアロジックは、
新たな5つの頂点を追加して、入力パッチを、4つの四辺形サブ入力パッチに細分割し、
新たに追加された5つの頂点の各々の頂点テッセレーション係数を算出し、
新たに形成された4つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させ、
4つの四辺形サブ入力パッチの各々について、
四辺形サブ入力パッチの中心に新たな頂点を形成し、
新たな頂点の頂点テッセレーション係数を算出し、
四辺形サブ入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである4つの最初のパッチを形成し、
新たに形成された4つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含み得る。
【0032】
入力パッチは、3つの頂点及び中心テッセレーション係数を有する三角形パッチであり得、1以上の最初のパッチを生成するよう構成されているハードウェアロジックは、
新たな4つの頂点を追加して、入力パッチを、3つの四辺形サブ入力パッチに細分割し、
新たに追加された4つの頂点の各々の頂点テッセレーション係数を算出し、
新たに形成された3つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させ、
3つの四辺形サブ入力パッチの各々について、
四辺形サブ入力パッチの中心に新たな頂点を形成し、
新たな頂点の頂点テッセレーション係数を算出し、
四辺形サブ入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである4つの最初のパッチを形成し、
新たに形成された4つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含み得る。
【0033】
第3の態様は、上述したハードウェアテッセレーションユニットを備えたグラフィックス処理ユニットを提供する。
【0034】
さらなる態様は、
コンピュータ実行可能なプログラムコードを記憶している非一時的なコンピュータ読み取り可能な記憶媒体であって、コンピュータ実行可能なプログラムコードは、実行されたときに、少なくとも1つのプロセッサに、上述した方法を実行させる、非一時的なコンピュータ読み取り可能な記憶媒体と、
上述したハードウェアテッセレーションユニットを備えたグラフィックス処理ユニットと、
上述したハードウェアテッセレーションユニットを規定しているコンピュータ読み取り可能なプログラムコードが符号化されているコンピュータ読み取り可能な記憶媒体と、
上述した方法を実行するよう構成されているハードウェアテッセレーションユニットを規定しているコンピュータ読み取り可能なプログラムコードが符号化されているコンピュータ読み取り可能な記憶媒体と、
を提供する。
【0035】
当業者には明らかなように、好適な特徴は、必要に応じて組み合わされてもよいし、本発明の態様のうちの任意の態様と組み合わされてもよい。
【図面の簡単な説明】
【0036】
本発明の実施形態が、例として、図面を参照して説明される。類似する特徴を示すために、図面全体を通じて、共通の参照符号が使用される。
【
図1】様々な既知のテッセレーション方法の使用の結果を示す図。
【
図2】エッジテッセレーション係数を使用する従来技術の方法と、頂点テッセレーション係数を使用する、本明細書に記載の方法と、を使用して得られた異なる結果の例を示す概略図。
【
図3】本明細書に記載の改良されたテッセレーション方法を使用して得られた様々な例示的な結果を示す図。
【
図4】本明細書に記載の改良されたテッセレーション方法を使用して得られたさらなる例示的な結果を示す図。
【
図5】改良されたテッセレーション方法のフロー図。
【
図6】様々な入力パッチを示すとともに、
図5の方法の前処理段階を示す概略図。
【
図7】三角形入力パッチに関する、
図5の方法の前処理段階のフロー図。
【
図8】四辺形入力パッチに関する、
図5の方法の前処理段階のフロー図。
【
図9】前処理段階により出力された3つ又は4つの三角形パッチの各々、又は、入力等値線パッチへのアルゴリズムの再帰的適用のフロー図。
【
図11】本明細書に記載の改良されたテッセレーション方法を示す三角形を示す概略図。
【
図12】本明細書に記載の改良されたテッセレーション方法の例示的な例を示す図。
【
図13】本明細書に記載の改良されたテッセレーション方法を使用して生成され得る三角形クラスを示す概略図。
【
図14】本明細書に記載の改良されたテッセレーション方法を使用して得られた結果と既知のテッセレーション方法を使用して得られた結果との比較を示す図。
【
図15】
図5に示されるテッセレーション方法に対する変形例である改良されたテッセレーション方法のさらなる例示的なフロー図。
【
図18】
図15の方法を使用して得られた例示的な結果を示す図。
【
図20】任意の形態のコンピューティングデバイス及び/又は電子デバイスとして実装され得、本明細書に記載の改良されたテッセレーション方法を実施するよう構成され得る例示的なコンピューティングベースデバイスの様々なコンポーネントを示す図。
【発明を実施するための形態】
【0037】
本発明の実施形態が、単に例として、以下で説明される。これらの例は、出願人に現在知られている、本発明を実施する最良の態様を表すものであるが、そのような態様は、本発明が実現され得る唯一の態様ではない。本記載は、そのような例の機能と、そのような例を構成して動作させるためのステップのシーケンスと、を説明している。しかしながら、同じ又は均等の機能及びシーケンスは、異なる例により実現されてもよい。
【0038】
(例えば、四辺形又は三角形の)パッチの各エッジについて定義され、エッジ(したがってパッチ)が何回細分割されるべきであるかを決定するエッジテッセレーション係数(TF:tessellation factor)を使用する複数の既知のテッセレーション方法が存在する。
図1は、各エッジについては同じテッセレーション係数であるが異なるエッジテッセレーション係数を使用したときの、結果として生じた三角形がどのように異なるかを示している。
【0039】
図1における1番目の4つの例(a)~(d)は、以下を示している:
(a)全ての4つのエッジについてエッジTF=3である整数分割法(integer partitioning)
(b)全ての4つのエッジについてエッジTF=4である整数分割法
(c)全ての4つのエッジについてエッジTF=3である2のべき乗の整数分割法(power of two integer partitioning)
(b)全ての4つのエッジについてエッジTF=4である2のべき乗の整数分割法
【0040】
整数分割法及び2のべき乗の整数分割法を使用すると、各エッジに沿った頂点は、常に均等に離間する。しかしながら、細分割レベルが変わり、三角形が小さなものではない場合、(以下で説明する)望ましくない視覚的アーチファクトが発生する可能性が非常に高い一方で、小さなポリゴンは、追加的なレンダリングオーバーヘッドを招くので、ポリゴンをこのように小さくすることは望ましくない。この影響は、2のべき乗の整数分割法の場合特に大きい。なぜならば、ステップサイズが、かなり大きくなり得るからである。
【0041】
図1における2番目の4つの例(e)~(h)は、(例(a)~(d)とは異なり)変化するオフセットで頂点を生成する小数(fractional)分割法を示している:
(e)全ての4つのエッジについてエッジTF=3.0である奇数(odd)小数分割法
(f)全ての4つのエッジについてエッジTF=4.0である奇数小数分割法
(c)全ての4つのエッジについてエッジTF=3.0である偶数(even)小数分割法
(b)全ての4つのエッジについてエッジTF=4.0である偶数小数分割法
【0042】
テッセレーション方法を選択する際の他の考慮事項は、エッジテッセレーション設定の所与の組合せに関して生成される三角形の数だけではない。なぜならば、テッセレーションされるモデルのレンダリングコストは、三角形の数だけでなく、それら三角形のアスペクト比にも部分的に依存するからである。通常、グラフィックスシステム(ソフトウェア又はハードウェア)は、最小外周対面積比(perimeter to area ratio)を示す、所与のスクリーン面積(すなわち、スクリーン画素)の「等辺(equilateral)」三角形を、同じ面積を有するがより高い外周対面積比を有する(細長い)三角形よりも速くレンダリングする。さらに、シェーディングの結果等といった値が、頂点において算出され、次いで、三角形にわたって補間されるときに、より多くの等辺形状の三角形を有することは、より少ないアーチファクトをもたらすべきである。
【0043】
さらなる考慮事項は、三角形のパターンを生成するために使用されるアルゴリズムの複雑さである。アルゴリズムが、(例えば、異なるように処理される必要がある多くの「特別なケース」を有さず)単純及び/又は規則的であり続けることが可能である場合、これは、ハードウェア実装コスト又はソフトウェア実装コストを低減させることができる。
【0044】
最後の望まれる考慮事項は、テッセレーションパターンにおける回転/鏡映対称性である。例えば、時計回りにABCDであり適切なテッセレーション係数を有する頂点により定義される四辺形パッチは、BCDAとしてリストされる頂点を有する「等価な」四辺形と同じ最終三角形メッシュを生成することが好ましい。いくつかの既存のテッセレーション方式は、この特性を保証していない(例えば、
図1の例(e)及び(f)における「奇数」テッセレーション方法の中央の正方形を参照されたい)。
【0045】
本説明において、サーフェスパッチとは、四辺形又は三角形である有界の(bounded)2Dドメイン(又は、等値線の場合には、1D線分)にパラメトリックマッピング関数を適用した結果である、通常は有限のN次元サーフェス(又は、等値線の場合には、N次元カーブセグメント)を指す。結果として生じるサーフェス又は等値線は、N次元であるとみなすことができる。なぜならば、結果として生じるサーフェス又は等値線は、デカルト(又は同次)空間位置決めのための3つ(又は4つ)の次元だけでなく、テクスチャ座標等といった他のパラメータも含み得るからである。上述したように、サーフェスパッチを湾曲させて、サーフェスパッチが表現するオブジェクトのサーフェスにフィットさせる、且つ/あるいは、サーフェスパッチに変位マッピングを適用させる。しかしながら、テッセレーション(すなわち、パッチの細分割)は、ワールド空間においては実行されず(すなわち、湾曲したサーフェスパッチに対しては実行されず)、代わりに、(パラメトリック空間又はパラメータ空間と呼ばれることもある)ドメイン空間において実行される。ドメイン空間において、ドメイン内の任意の位置は、ドメイン空間座標として知られている2つの座標(u,v)により記述することができ、これは、テッセレーションプロセスが、最終的なサーフェスに存在するいずれの湾曲からも独立していることを意味する。
【0046】
改良されたテッセレーション方法が本明細書で説明される。このテッセレーション方法を説明する際、「パッチ」という用語は、ドメインの境界を定める(bound)、(等値線、三角形、又は四辺形のそれぞれにつき)2つ、3つ、又は4つの頂点の順序付きセットを指すために使用される。したがって、「ドメイン」という用語は、パッチの頂点により境界が規定された2次元空間を指す。「頂点」という用語は、一般に、位置に加えて他の属性を記述するために使用され、ここで、属性は、コンテキストに応じて異なる。例えば、ドメインシェーダからの出力頂点及び入力制御点は、3D位置に加えて、法線、接線、テクスチャ等といった他のパラメータを含むのに対し、テッセレータ(すなわち、テッセレーション方法において使用されるもの)における頂点は、ドメイン空間座標及び頂点テッセレーション係数を含む。したがって、テッセレータにおける頂点は、最終三角形を形成する結果として生じるN次元頂点又は入力制御点と同じではない。
【0047】
エッジテッセレーション係数を使用しないが、代わりに、四辺形若しくは三角形の各コーナー頂点、又は等値線の各端頂点について定義されるテッセレーション係数を使用する改良されたテッセレーション方法が、本明細書で説明される。これらのテッセレーション係数は、上述した既知の方法において使用されるエッジテッセレーション係数と区別するために、「頂点テッセレーション係数」と呼ばれる。以下でより詳細に説明するように、パッチに関する頂点テッセレーション係数のうちのいずれかが、定められた閾値より大きい場合、テッセレーション(すなわち、パッチの細分割)が実行される。新たな頂点が追加されたときに、新たな頂点は、エッジを2つの部分に細分割し(様々な例において、これらの2つの部分は、エッジが二等分されるように、等しくなり得る)、本方法は、三角形パッチに対して再帰的に作用する。
【0048】
本明細書に記載の改良されたテッセレーション方法は、既知のテッセレーション方法において生じている以下の問題のうちの1以上(様々な例においては全て)に対処する:
・スナッピング-大量のテッセレーションが瞬間的に生じることの影響。これは、アニメーションにおける一時的な視覚的アーチファクトを生じさせ得るだけでなく、非連続的なレンダリング時間をもたらす。これは、「2のべき乗」の方法(例えば、
図1における例(c)及び(d))の場合に特に問題である。
・クラッキング-境界上のエッジの細分割は、Tジャンクション(T-junction)を避けるために、一貫している必要がある。変位マッピングを適用した後、Tジャンクションは、ほぼ確実に、クラックの出現をもたらす。ビューワは、オブジェクトを通じてこれを確認できる。
・浮遊(swimming)-テッセレーション係数に応じてドメイン空間内で頂点の位置を移動させることは、変位の量が変わるので、ジオメトリ(geometry)が揺らめいている、すなわち、「浮遊している」ように見えることをもたらす。
・過剰/過少テッセレーション-例えば、32というテッセレーション係数は、エッジが32個のセグメントに細分割されることを望むものである。これよりも小さなテッセレーション係数は、シーンをモデル化するのに十分なほどにはメッシュが精緻化されないことをもたらし得る。これよりも大きなテッセレーション係数は、メッシュが精緻化され過ぎて相当の演算を用いることをもたらし得る。
・細い三角形-細い三角形をレンダリングすることは、より多くのエイリアシングアーチファクトをもたらし得ることに加えて、高い演算コストをもたらし得る。なぜならば、三角形のレンダリングコストは、そのスクリーン画素面積に依存するだけでなく、スクリーン画素におけるその外周の長さにもある程度依存するからである。したがって、一般的には、特に、LODが変わったときに細い三角形が見えなくなり、細長い三角形が本質的には冗長である場合、N個の「ほぼ等辺の」三角形により表現されるパッチを、N個の「細長い」三角形により表現される同じパッチの代わりにレンダリングすることがより効果的である。したがって、以下に記載の方法は、最小ルート面積対外周比(Root Area to Perimeter Ratio)を最大化することを目的とする。
・空間/時間複雑度-いずれのテッセレーション方法も、理想的には、単純で、高度に並列的であるべきであり、時間複雑度及び空間複雑度(すなわち、レンダリングを実行するのに要する時間及びアルゴリズムを実施するために必要とされるメモリの量)を最小化すべきである。また、頂点のサイズに、多過ぎるビットを追加しないようにしなければならない。なぜならば、これは、メモリ要件を増大させるからである。空間複雑度及び時間複雑度はまた、テッセレーションを実行するために必要とされるハードウェアの物理的エリアにも影響を及ぼす。
【0049】
パッチのコーナーにおけるTFを指定することは、テッセレーションされるパッチ内の結果として生じる三角形のサイズ及び形状のより少ない突然の変化をもたらす。なぜならば、エッジの分割は、固定されない(すなわち、エッジTFにより指定された値に固定されない)が、代わりに、エッジの各端における頂点TFにより決定され、細分割レベルの間における段階的な遷移をもたらすために元のエッジ(ドメイン空間における1Dの観点で)に沿って滑らかに変化するだけでなく、他のTFと組み合わせることで、2Dの観点で、それがパッチにわたって滑らかに変化することを可能にするからである。これが、
図2にグラフィカルに示されている。
図2は、ドメイン空間において、既知の方法を使用してエッジにおけるテッセレーション係数を定義したもの(略
図202)とコーナー(すなわち、頂点)におけるテッセレーション係数を定義したもの(略
図204)との間の違いを示している。1番目の略
図202は、2及び4というエッジテッセレーション係数を有する2つの四辺形の場合における、エッジにわたって2のべき乗の定義されたテッセレーション係数を使用した結果である。2番目の略
図204は、以下に記載の方法を使用し、(頂点206、208については)2という頂点テッセレーション係数及び(頂点210~216については)4という頂点テッセレーション係数を使用している。
【0050】
四辺形パッチ及び三角形パッチの両方について様々な整数テッセレーション係数及び小数テッセレーション係数を使用したさらなる例が、
図3及び
図4に示されている。比較の目的のためだけに、これらの例において、所与の数値の頂点テッセレーション係数が、既知のエッジベースのテッセレーション方式において係数の2を底とする対数を取ることとほぼ同レベルであることに留意されたい。各例の下にあるテキストは、四辺形パッチについては(左上,右上,左下,右下)である順序の頂点テッセレーション係数を示しており、三角形パッチについては(上,左下,右下)である順序の頂点テッセレーション係数を示している。これらの例から、パッチ内の細分割レベルの間において段階的な遷移が存在すること、細い三角形が作成されていないこと、及び、頂点が、ドメイン空間においてその最終位置に配置されており、LODが増大しても頂点が移動しないこと(頂点は、ドメイン空間において、固定位置においてのみ現れる又は消えること)が確認できる。
【0051】
以下で説明するように、頂点ベースのテッセレーション係数とともに、この改良されたテッセレーション方法は、望ましくない視覚的アーチファクトを最小限にする(又は、排除する)。なぜならば、全ての頂点(例えば、三角形への細分割の一部として追加される新たな頂点の各々)が、ドメイン空間において、その最終位置に常に追加されるからである。詳細レベル(したがってTF)が変わると、浮遊/搖動(wobbling)アーチファクトを生じさせ得る従来技術とは異なり、頂点は、サーフェスにわたって「スライド」しない結果となる。
【0052】
図5は、改良されたテッセレーション方法のフロー図である。この方法は、パッチ(入力パッチと呼ばれる)がテッセレータに提供されたときに開始する。(ハードウェアテッセレータであり得る)テッセレータは、入力パッチを受信する(ブロック502)。この入力パッチは、
図6に示されるように、三角形パッチ602、四辺形パッチ604、又は等値線パッチ606であり得る。四辺形パッチ606は、ドメイン空間において、正方形((0,0)の頂点、(1,0)の頂点、(0,1)の頂点、及び(1,1)の頂点を有する)であるが、ワールド空間(すなわち、3D環境又は2D環境)においてこれが表す形状は、異なる形状であり得る。上述したように、テッセレーションは、ワールド空間においてではなく、ドメイン空間において実行される。
【0053】
入力パッチが、三角形パッチ又は四辺形パッチである場合、パッチは、「前処理」段階(ブロック504)を経て、テッセレーションアルゴリズムが、入力パッチ内の三角形パッチに再帰的に適用される(ブロック506)。この前処理段階は、テッセレーションが向き(orientation)から独立したものであることを確実にするために使用され、結果として、等値線パッチ606のためには必要とされない(アルゴリズムは、対称的に作用し、したがって、結果として生じるテッセレーションの向き依存性はない)。
【0054】
入力パッチが、三角形パッチ602である場合、前処理段階(ブロック504)は、1つの三角形パッチ602(これは、入力三角形パッチと同じであり、テッセレーションは必要とされない)又は3つの三角形パッチ608~610を出力する。入力パッチが、四辺形パッチ604である場合、前処理段階(ブロック504)は、4つの三角形パッチ612~615を出力する。入力パッチが、等値線パッチである場合、(上述した理由により)前処理は必要とされず、テッセレーションアルゴリズムが、入力等値線パッチに再帰的に適用される(ブロック508)。
【0055】
図7~
図10は、改良されたテッセレーション方法の段階をより詳細に示している。説明される方法では、以下の表記が使用される:
・THRES-頂点TFが、2を底とする対数を取ったテッセレーションの量の値である場合、例えば、0.0又は0.5に設定され得る、テッセレーションのための閾値。
・VERTEX.TF-任意の実数であり得る、頂点のテッセレーション係数(しかしながら、様々な例においては、テッセレーション係数が負でない実数であるように、負値は、0にクランプされ得る)。様々な例において、頂点TFは、最小で0.0(テッセレーションなし)及び最大で6.0(最大のテッセレーション)であり、2を底とする対数を取ったテッセレーションの量の値である。例えば、5.0というテッセレーション係数は、32の細分割に対応する。しかしながら、他の例においては、最大頂点TFは、6.0(すなわち、2を底とする対数が使用されない場合は64)より大きくてもよい。
・INTERVAL-0でない量。各反復の後、VERTEX.TFがこの量だけ低減される。頂点TFが、2を底とする対数を取ったテッセレーションの量の値である場合、例えば、0.5に設定され得る。
・MEAN()-2つ、3つ、又は4つの頂点テッセレーション係数の「平均値」を与える対称関数。これは、算術平均であってもよいし、代替関数であってもよい。そのような1つの代替関数が、以下でより詳細に説明される。
以下の説明の目的上、頂点TFは、2を底とする対数を取ったテッセレーションの量である。しかしながら、頂点TFは、代替的に、その実際のフル値(full value)として記述されてもよく、その場合、以下に記載される頂点TFの算出とパラメータTHRES及びパラメータINTERVALの値とが、これに応じて変更されることが、理解されよう。しかしながら、2を底とする対数が使用される場合、ハードウェア実装がかなり高速になるので、テッセレータへの入力が、(2を底とする対数を使用するのではなく)実際の頂点TFを含む例においては、入力頂点TFは、本明細書に記載の改良されたテッセレーション方法を実施する前に、2を底とする対数に変換され得る。
【0056】
図7は、三角形入力パッチ602に関する前処理段階504のフロー図であり、
図6に示されるように、三角形パッチの頂点は、「TOP(上)」、「RIGHT(右)」、及び「LEFT(左)」とラベル付けされ得る。どの頂点が「TOP」であるかの選択は、任意的であり、この前処理段階は、アルゴリズムが回転的且つ鏡映的に対称であることを確実にする(すなわち、この前処理段階において頂点が考慮される順序にかかわらず、同じテッセレーション結果が達成されることになる)。
【0057】
図7に示されるように、三角形パッチ(TOP,RIGHT,LEFT)602がテッセレータに提供され、いずれかの頂点テッセレーション係数が閾値THRESより大きい場合(ブロック702において「Yes」)、テッセレーションが生じる。「MID(中間)」と表記されている新たな頂点616が、三角形の中心(例えば、重心)に形成され(ブロック704)、新たなMID頂点の頂点TFが、
MID.TF=MEAN(TOP.TF,LEFT.TF,RIGHT.TF)・・・・・(1)
であるように算出される(ブロック706)。ここで、MID.TFは、MID頂点の頂点TFであり、TOP.TFは、TOP頂点の頂点TFであり、LEFT.TFは、LEFT頂点の頂点TFであり、RIGHT.TFは、RIGHT頂点の頂点TFである。次いで、何らかのテッセレーションが生じたときに、全ての4つのテッセレーション係数(すなわち、TOP.TF、LEFT.TF、RIGHT.TF、及びMID.TF)が、パラメータINTERVALだけ(すなわち、2を底とする対数表記が使用される場合、INTERVALを減算することによって)低減される(ブロック708)。
【0058】
次いで、3つの三角形パッチ(MID,RIGHT,LEFT)610、(MID,LEFT,TOP)609、及び(MID,TOP,RIGHT)608が形成され(ブロック710)、これらの三角形パッチが、以下で説明するように、(ブロック506において)テッセレーションアルゴリズムを使用してテッセレーションされる。
【0059】
頂点テッセレーション係数のいずれも、閾値THRESより大きくない場合(ブロック702において「No」)、テッセレーションは生じない。この状況において、パッチは、1つのプリミティブとしてテッセレータを単に通過するだけであり(ブロック712)、この方法は、過剰にテッセレーションしない。
【0060】
図8は、四辺形入力パッチ604に関する前処理段階504のフロー図であり、
図6に示されるように、四辺形パッチの頂点は、「TLEFT(左上)」、「TRIGHT(右上)」、「BRIGHT(右下)」、及び「BLEFT(左下)」とラベル付けされ得る。どの頂点が「上」でありどの頂点が「下」であるかの選択は、任意的であり、この前処理段階は、アルゴリズムが回転的且つ鏡映的に対称であることを確実にする(すなわち、この前処理段階において頂点が考慮される順序にかかわらず、同じテッセレーション結果が達成されることになる)。
【0061】
図8に示されるように、四辺形パッチ(TLEFT,TRIGHT,BLEFT,BRIGHT)604がテッセレータに提供されたときに、「MID」と表記されている新たな頂点618が、四辺形の中心に、すなわち、ドメイン空間座標(0.5,0.5)に形成され(ブロック804)、新しいMID頂点の頂点TFが、
MID.TF=MEAN(TLEFT.TF,TRIGHT.TF,BLEFT.TF,BRIGHT.TF)・・・・・(2)
であるように算出される(ブロック806)。ここで、MID.TFは、MID頂点の頂点TFであり、TLEFT.TFは、TLEFT頂点の頂点TFである、等である。次いで、何らかのテッセレーションが生じたときに、全ての5つのテッセレーション係数(すなわち、TLEFT.TF、TRIGHT.TF、BRIGHT.TF、BLEFT.TF、及びMID.TF)が、パラメータINTERVALだけ(すなわち、2を底とする対数表記が使用される場合、INTERVALを減算することによって)低減される(ブロック808)。
【0062】
次いで、4つの三角形パッチ(MID,TLEFT,TRIGHT)612、(MID,TRIGHT,BRIGHT)613、(MID,BRIGHT,BLEFT)614、及び(MID,BLEFT,TLEFT)615が形成され(ブロック810)、これらの三角形パッチが、以下で説明するように、(ブロック506において)テッセレーションアルゴリズムを使用してテッセレーションされる。
【0063】
図9は、前処理段階により出力された3つ又は4つの三角形パッチの各々へのアルゴリズムの再帰的適用のフロー図であり、これは、
図10に示される三角形を参照して説明され得る。
図10に示されるように、三角形パッチは、時計回り方向の3つの頂点(TOP,RIGHT,LEFT)の順序付きセットである。1番目の頂点は、常に「TOP」頂点であり、(前処理段階により出力された)最初の三角形パッチについて、この「TOP」頂点は、前処理(ブロック704、804)中に追加された「MID」頂点608、618に対応することに留意されたい。
【0064】
図9に示されるように、三角形パッチ1000(最初の反復において、最初のパッチ900である)を所与として、テッセレーションは、
LEFT.TF>THRES又はRIGHT.TF>THRES・・・・・(3)
である場合、及び、この場合に限り、生じる(ブロック902において「Yes」)。ここで、LEFT.TFは、LEFT頂点の頂点TFであり、RIGHT.TFは、RIGHT頂点の頂点TFである。
【0065】
LEFT.TF>THRES又はRIGHT.TF>THRESである場合(ブロック902において「Yes」)、新たな頂点MID1002が形成される(ブロック904)。この頂点MIDは、ドメイン空間における(線1004により示される)エッジLEFT->RIGHTを2つの部分に分割する。次いで、新たなMID頂点の頂点テッセレーション係数が、
MID.TF=MEAN(LEFT.TF,RIGHT.TF)・・・・・(4)
であるように算出される(ブロック906)。ここで、MID.TFは、MID頂点の頂点TFであり、LEFT.TFは、LEFT頂点の頂点TFであり、RIGHT.TFは、RIGHT頂点の頂点TFである。慣習のため、MIDが細分割するエッジを定義する頂点LEFT及び頂点RITHTは、MIDの「親」と表記される。
【0066】
多くの例において、新たな頂点MIDは、ドメイン空間におけるエッジLEFT->RIGHTを二等分する二等分部(bisector)として追加される。しかしながら、他の例においては、新たな頂点MIDは、ドメイン空間におけるエッジLEFT->RIGHTの上にあるがこのエッジを正確には二等分しない位置に、追加されてもよい。様々な例において、エッジに沿ったMIDの位置は、例えば、親頂点の頂点TFを使用して、重み付けされ得る。
【0067】
2つのサブ三角形パッチ(MID,LEFT,TOP)1006及び(MID,TOP,RIGHT)1008が形成され(ブロック908及び910)、各三角形パッチ1006、1008における全てのテッセレーション係数が、パラメータINTERVALだけ(すなわち、2を底とする対数表記が使用される場合、INTERVALを減算することによって)低減される(ブロック912)。次いで、この方法は、これらのパッチの各々に対して再帰的処理を行う。ブロック908又はブロック910において作成された三角形パッチに対してこの方法を実行するとき、「TOP」頂点は、このパッチを作成するために(ブロック904において)追加された「MID」頂点1002に対応し、これは、親パッチの「TOP」頂点とは異なることになる(例えば、パッチ1000は、パッチ1006及び1008の親とみなすことができ、パッチ1000の「TOP」頂点1010は、パッチ1006及び1008の各々の「TOP」頂点1002と同じではない)。
【0068】
いかなる段階においてもテッセレーションが生じない場合(ブロック902において「No」)、(パッチである)プリミティブは、バッファ、例えば、インデックスバッファに追加される(ブロック914)。
【0069】
上述したように、
図9の方法は、前処理段階(ブロック504)により生成された3つ又は4つの三角形パッチの各々に再帰的に適用され、それら最初のパッチ(3つ又は4つの三角形パッチ)の細分割により作成される任意のパッチに再帰的に適用される。
【0070】
頂点テッセレーション係数は有限であり、INTERVALが0でない定数であるので、最終的に、(全ての三角形パッチにおける)全ての頂点テッセレーション係数が、最大でTHRESになり、プロセスが終了する。
【0071】
図10において確認できるように、新たに追加されたMID頂点は、(ブロック908及び910において)形成された2つのパッチの両方における頂点であり、両方のパッチにおいて、この頂点は、「TOP」頂点であるとみなされる。新たに追加されたMID頂点の頂点テッセレーション係数の現在の値は、サブパッチの両方に対して再帰的処理が行われるときに、使用されなければならない。例示的な実装例において、これは、各サブパッチに関する頂点TFを複製すること、又は、任意のパッチに関して、その2つのサブパッチに対する再帰的処理の後、各頂点TFが、パラメータINTERVALだけ低減される最終ステップをアルゴリズムに有することのいずれかによって確実にすることができる。
【0072】
図9において使用される同じアルゴリズムが、(ブロック508において)等値線パッチにも適用され得るが、上述したように、前処理は必要とされない。等値線パッチの場合、アルゴリズムは、
図6を参照して説明され得るように、三角形ではなく線(すなわち、等値線及びサブ等値線)に適用される。
【0073】
等値線パッチ(LEFT,RIGHT)606が、(最初のパッチ900として)テッセレータに提供されたとき、LEFT.TF又はRIGHT.TFがTHRESより大きい場合(ブロック902において「Yes」)、この線が細分割される。LEFT.TF又はRIGHT.TFがTHRESより大きい場合(ブロック902において「Yes」)、ドメイン空間においてLEFT->RIGHT等値線606を細分割する(例えば、二等分する)新たなMID頂点620が追加される(ブロック904)。新たに追加されたMID頂点の頂点TFが、
MID.TF=MEAN(LEFT.TF,RIGHT.TF)・・・・・(5)
であるように算出される(ブロック906)。ここで、MID.TFは、MID頂点の頂点TFであり、LEFT.TFは、LEFT頂点の頂点TFであり、RIGHT.TFは、RIGHT頂点の頂点TFである。
【0074】
MID頂点620の追加は、元の等値線606を2つのサブ等値線622、624に分割し(ブロック908及び910において形成される)、各頂点TFは、2*INTERVALだけ(例えば、2を底とする対数表記が使用される場合、2*INTERVALを減算することによって)低減される(ブロック912)。これは、三角形パッチが正しい量の細分割を生じさせるよりも速く低減させることに留意されたい。次いで、この方法は、これらのサブ等値線の各々に対して再帰的処理を行い、全ての頂点テッセレーション係数が最大でTHRESになると終了する。
【0075】
上述した改良されたテッセレーション方法は、MEAN()関数を使用する。いくつかの例において、この関数は、頂点テッセレーション係数の算術平均であり得、これは、ある頂点から別の頂点に移動するときにジオメトリの滑らかな導入をもたらすことになる一方、このような関数は、しばしば、Tジャンクションが現れることと、したがって所定の値の頂点TF(例えば、パッチにわたる頂点TFの差がかなり極端である場合)についてはクラッキングと、をもたらすことになる。結果として、多くの例において、MEAN()に関して、代替関数が以下として使用される:
MEAN(TF1,TF2,...)=MIN(AVG(TF1,TF2,...),MIN(TF1,TF2,...)+INTERVAL)・・・・・(6)
ここで、AVG()は、括弧内の値のリスト(例えば、上記の例における頂点TF1、頂点TF2、...)の算術平均であり、MIN()は、括弧内の値のリスト(例えば、上記の例における頂点TF1、頂点TF2、...)のうちの最小である。
【0076】
上記で与えられたMEAN()関数は、クラッキングがないことを確実にする、算術平均に最も近い関数であり、これは、以下に記載されるように例証され得る。
【0077】
上述したように、テッセレーションにおけるTジャンクションは、クラッキングをもたらす可能性があり、したがって、ドメインの内側で又は2つのドメインにより共有されるエッジに沿って、Tジャンクションが生じ得ないことを確実にすることが望まれ得る。本明細書に記載の改良されたテッセレーション方法は、任意のエッジの細分割がエッジ端頂点のテッセレーション係数によってのみ定義される(他によっては定義されない)ことを保証することにより、これを確実にする。したがって、エッジが2つのドメイン(すなわち、2つの隣接ドメイン)により共有される場合、これらのドメインは、その2つの端頂点(及びそれらの頂点テッセレーション係数)を共有し、同じ細分割がもたらされることになる。
【0078】
上述したように、細分割は、端頂点テッセレーション係数が閾値より大きい場合に限り生じるので、余分な細分割は生じ得ない。唯一のあり得る問題は、前のレベルの細分割が前もって生じなかったことに起因して、細分割が生じるべきときに細分割が生じない場合である。したがって、この問題を回避するために、
図10に示されるようにラベル付けされた頂点を有する三角形パッチ1000を参照する以下の条件が満たされることが必要である:
TOP->LEFTエッジ上で必要とされるテッセレーションは、LEFT->RIGHTエッジ上で生じるテッセレーションを暗示する、すなわち、
(TOP.TF>THRES又はLEFT.TF>THRES)
=>(LEFT.TF+INTERVAL>THRES又はRIGHT.TF+INTERVAL>THRES)
である。この条件は、一般性を失うことなく、対称性に起因して左側エッジだけを考慮する。
【0079】
次に、上記で示されたMEAN()関数がこの条件を満たすことが例証され得る。
【0080】
ケース1:LEFT.TF>THRESである場合、LEFT.TF+INTERVAL>THRESである。
【0081】
ケース2:TOP.TF>THRESは、以下の2つのサブケースを有する。
【0082】
ケース2.1:(TOPが、
図10におけるパッチ1000に示されるようなパッチの中間頂点であり、これが、
図6における頂点616又は618に対応する、すなわち、TOP.TF=MEAN(LEFT.TF,RIGHT.TF,...)であり、)したがって、
THRES<TOP.TF
=MIN(AVG(LEFT.TF,RIGHT.TF,...),MIN(LEFT.TF,RIGHT.TF,...)+INTERVAL)
<=MIN(LEFT.TF,RIGHT.TF,...)+INTERVAL
<=LEFT.TF+INTERVAL
ゆえに、LEFT.TF+INTERVAL>THRESである。
【0083】
ケース2.2:(TOPが、
図11におけるパッチ1100に示されるように、端頂点としてLEFTを使用して細分割により作成され、ここで、TOP1102は、エッジLEFT->OTHERの細分割により作成される、すなわち、TOP.TF=MEAN(LEFT.TF,...)であり、)したがって、
THRES<TOP.TF
=MIN(AVG(LEFT.TF,...),MIN(LEFT.TF,...)+INTERVAL)
<=MIN(LEFT.TF,...)+INTERVAL
<=LEFT.TF+INTERVAL
ゆえに、LEFT.TF+INTERVAL>THRESである。
【0084】
ケース2.2において、同じロジックを、TOP.TF=MEAN(RIGHT.TF,...)(これは、
図11に示されるものの鏡映(reflection)に対応する)に適用して、所望されるように、RIGHT.TF+INTERVAL>THRESを導出することができる。関数の選択は、最小値+INTERVALを超えるいかなる関数もこれらの不等式を常に満たすわけではない点において、最適であることにも留意されたい。したがって、MEAN()関数は、算術平均により近い何らかの関数であり得ない。
【0085】
改良されたテッセレーション方法が、
図12に示されるように、2を底とする対数表記並びにTHRES=0.0及びINTERVAL=0.5を使用した、テッセレーション係数(2,1,1,1)を有する四辺形1202をテッセレーションする一例として、さらに説明され得る。前処理段階(ブロック504及び
図8)において、テッセレーション係数1.25(ブロック806において算出される算術平均値)を有する中間頂点1204が追加される(ブロック804)。
図12における2番目の例1206に示されるように、4つの三角形パッチが、各パッチの上頂点としてこの中間頂点を有するように形成され(ブロック810)、(ブロック808において)各TFが0.5だけ低減される(これは、ブロック810の前又は後に実行され得る)。
【0086】
三角形パッチの各々に対する最初の再帰的処理(ブロック506及び
図9)において、
図12における3番目の例1208に示されるように、(0.5は閾値THRES=0.0より大きいので)各下エッジが細分割され(ブロック904)、(新たな頂点TFを有する)4つの新たな頂点及び8つの新たなパッチが形成される(ブロック904~910)。次いで、
図12における4番目の例1210に示されるように、全てのテッセレーション係数が、INTERVALの値である0.5だけ低減される(ブロック912)。
【0087】
8つの三角形パッチの各々に対する次の再帰的処理において、
図12における5番目の例1212に示されるように、(0.25は閾値THRES=0.0より大きいので、)8つの三角形パッチの各々の下エッジが、新たな頂点を追加し、それら新たな頂点の頂点TFを算出し、16個の新たなパッチを形成することにより、細分割される(ブロック904)。次いで、全てのテッセレーション係数が、再度0.5だけ低減され(ブロック912)、さらなる再帰的処理において、(
図12における最後の例1214に示されるように)最終的な2つの細分割が行われる。ここで、左上頂点の頂点テッセレーション係数(0.5)のみが閾値より大きい。このステップの後、全ての頂点テッセレーション係数が、最大で0であり(
図12に示されるように、他の頂点TFは負であり得る)、プロセスは終了する。
【0088】
上述した改良されたテッセレーション方法は、各パッチを独立して扱うので、高度の並列性をもって実装することができる。任意のテッセレーション方法と同様、ドメイン境界に沿って共有される頂点は、複製されないようにキャッシュされ得る。本方法は再帰的であるので、必要とされるチップ(例えば、シリコン)のスペース及びメモリの量は最小限である。例示的な要件の要点が、以下に記載される:
【表1】
【0089】
本提案方法に必要とされる付加的な頂点メンバは、各入力頂点の固定点テッセレーション係数である。Mは、出力頂点バッファの現在のサイズであり、α()は、バッファがどのように構造化されるかに依存するMの何らかの関数である。α()は、一般的には、log(M)とMとの間の何かである。
【0090】
上述したように、等辺三角形又は高ルート面積対外周比を有する三角形をレンダリングするときに、レンダリングするサイクルの最小数が達成される。同様に、そのルート面積対外周比がなくなったときに、例えば劣化三角形(degenerate triangle)といった最悪のパフォーマンスが生じる。エッジ長a、b、及びcを有する所与の三角形パッチに関して、本提案方法は、
図13に示されるように、(比a:b:cの辺を有する)A、(比a:d:c/2の辺を有する)B、(比d:b:c/2の辺を有する)C、及び(比a/2:b/2:dの辺を有する)Dという、(類似性に応じた)三角形の最大4つの異なるクラスをもたらす。パッチが二等辺である(すなわち、a=bである)場合、BはCに類似するものであり、したがって、3つのクラスだけが存在する。パッチが、二等辺であり、且つ、上頂点が直角である場合、全ての類似性が存在する(すなわち、三角形の1つのクラスだけが存在する)。全ての場合において、三角形クラスの数は有限であり。したがって、最小ルート面積対外周比が制限され、パッチ自体が劣化したものでない限り、最小ルート面積対外周比はなくなり得ない。対照的に、多くの既知のテッセレーション方法は、ルート面積対外周比の下側限界を有さず、実際、三角形が見えなくなることが、多数生じる。
【0091】
図14は、本明細書に記載の改良されたテッセレーション方法を使用して得られた結果と既知のテッセレーション方法である(
図1を参照して上述した)奇数小数分割法を使用して得られた結果との比較を示している。8つの別個の比較1401~1408が図示されており、改良されたテッセレーション方法を使用して得られた各時間の結果が、左側に図示されており、奇数小数分割法を使用して得られた各時間の結果が、右側に示されている。
【0092】
1番目の比較1401に示されるように、改良されたテッセレーション方法は、テッセレーションが向きから独立していることを確実にするために、奇数小数分割法よりも2つ多いプリミティブをもって開始する。上述したように、これら4つの三角形プリミティブは、前処理段階(ブロック504)において生成される。改良されたテッセレーション方法における(ブロック506での)アルゴリズムを使用したテッセレーションは、2番目の比較1402に示されるように、2つのパッチを類似する三角形に分割することにより開始する。対照的に、(右側に示される)奇数小数分割法において、テッセレーションは、全てがほぼ冗長である12個の新たな細い三角形を追加し(これらの三角形は、2番目の比較1402においてはっきりと見えるように、ドメインのほぼ全体が2つのプリミティブだけによって構成されるほど非常に細いので、これは、これらの細い三角形が、変位後に、ドメインの大きな部分にいかなる詳細も追加しないことを意味する)、次いで、比較1403に示されるように、さらに多くの三角形を追加することにより開始する。
【0093】
その後の比較1403~1408に示されるように、改良されたテッセレーション方法は、テッセレーション係数の増加を近似するために、半分の面積の類似する三角形を追加し続ける。奇数小数分割法は、同じことを達成するために、過度の初期に冗長であった細い三角形を追加し続ける。改良されたテッセレーション方法は、ドメイン空間において移動しない頂点を導入する。対照的に、奇数小数分割法において、頂点は、古いものの上で始まって所定位置に伸び、結果として、ジオメトリは、波打っているように見える。改良されたテッセレーション方法は、最後の比較1408に示されるように、十字模様パターンに落ち着いているのに対し、奇数小数分割法は、全ての奇数LOD/TFで頂点の全ての行及び列を追加し続け、これが、今度は、ドメイン空間における全ての頂点を移動させる。
【0094】
特にアニメーションにおいて、パッチのコーナーの頂点TFとはLODにおいて異なる、そのパッチの中心TFをユーザが指定することを可能にすることが、時に望ましい場合がある。これは、例えば生物のツノ(spike)の場合において高さマップが中間部に非常に鋭いジャンプを有する場合、例えば、四辺形パッチ又は三角形パッチにわたってテクスチャに関連付けられた高さマップをより良く近似するために使用され得る。
図15は、(上述した)
図5の方法に対する変形例を示しており、この変形例は、四辺形パッチ又は三角形パッチの中心TF(CENTRE.TF)の使用を可能にする、任意的なさらなる前処理段階(ブロック1502)を追加している。
図15に示されるように、(ブロック1502における)この追加的な前処理段階は、上述した(ブロック504における)前処理段階の前に実施され、(四辺形又は三角形であり得る)入力パッチを分割する。元々の前処理段階(ブロック504)とは異なり、追加的な前処理段階(ブロック1502)は、等値線にも適用され得る。しかしながら、これは、このコンテキストにおいてあまり有用ではない。等値線の場合、等値線は細分割され、新たに追加される中間頂点が、中心TFに割り当てられる。次いで、細分割が、上述したように、2つのサブ等値線(例えば、LEFT-MID及びMID-RIGHT)に対して続けられる。
【0095】
追加的な前処理段階(ブロック1502)は、
図16及び
図17を参照して説明され得る。
図16は、四辺形入力パッチ1602又は三角形入力パッチ1604へのこの段階の適用の概略図を示しており、
図17は、追加的な前処理段階のフロー図を示している。中心テッセレーション係数が有効にされた状態で、ユーザは、パッチごとの中心TFと各コーナー頂点の頂点TF(三角形パッチについては3つ、四辺形パッチについては4つ)とをテッセレータに提供しなければならない。
【0096】
図16に示されるように、追加的な前処理段階は、四辺形入力パッチ1602を4つの四辺形パッチ1606~1609に分割し、三角形入力パッチ1604を3つの四辺形パッチ1610~1612に分割する。これを実現するために、四辺形入力パッチ1602を前処理することは、5つの新たな頂点、すなわち、中心TF(CENTRE.TF)を有する中心頂点1614(全ての4つのサブドメイン1606~1609により共有される)、中間-上頂点1616、中間-右頂点1618、中間-下頂点1620、及び中間-左頂点1622を追加すること(ブロック1702)を必要とする。これらのテッセレーション係数が、新たに追加された頂点の各々について、新たに追加された頂点の隣接コーナーTFのMEAN()を取ることにより算出される(ブロック1706)。様々な例において、式(6)により与えられるMEAN()関数が使用され得る。なぜならば、この関数は、より一貫したテッセレーションパターンをもたらすからである。しかしながら、他の例においては、算術平均が使用されてもよい。
【0097】
三角形入力パッチ1604を前処理することは、4つの新たな頂点、すなわち、中心TF(CENTRE.TF)を有する中心頂点1624(全ての3つのサブドメインにより共有される)、中間-右頂点1626、中間-下頂点1628、及び中間-左頂点1630を追加すること(ブロック1704)を必要とする。これらのテッセレーション係数が、新たに追加された頂点の各々について、新たに追加された頂点の隣接コーナーTFのMEAN()を取ることにより与えられる(ブロック1706において算出される)。上述したように、様々な例において、式(6)により与えられるMEAN()関数が使用され得る。なぜならば、この関数は、より一貫したテッセレーションパターンをもたらすからである。しかしながら、他の例においては、算術平均が使用されてもよい。
【0098】
追加的な前処理段階の最後の段階(ブロック1708)は、各テッセレーション係数を低減させる。様々な例において、各TFは、2*INTERVALだけ低減される。(ブロック504の元々の前処理段階への入力の前の)TFのこの低減は、正しい数の細分割がパッチの各境界エッジ上で行われることと、テッセレーションが生じたことを示すことと、を確実にする。
【0099】
追加的な前処理段階(ブロック1502)において、元の入力パッチを3つ又は4つの四辺形パッチに細分割すると、これらの3つ又は4つの四辺形パッチ(ブロック1708において算出された頂点TFを有する)は、これらが元の入力パッチであるかのように元々の前処理段階(ブロック504)に入力され、前述の方法が、上述したように進む。
図18は、
図15の方法を使用して得られ得る様々な例示的なテッセレーション結果を示している。
【0100】
追加的な前処理段階(ブロック1502及び
図17)が、少なくとも1回、0.0というTFを有する場合でも各ドメインエッジを細分割するという事実に起因して、任意の1つの結ばれているメッシュは、クラッキングが生じ得ないことを確実にするために、完全に中心TFを有するか又は有さないかのいずれかでテッセレーションされるべきである(すなわち、1つの結ばれているメッシュにおける全てのパッチは、同じ方法を使用するべきである、すなわち、これらは全て、
図5の方法又は
図15の方法を使用するべきであり、
図5の方法を使用したいくつかの入力パッチと
図15の方法を使用した他の入力パッチとを有するべきではない)。
【0101】
本明細書に記載の改良されたテッセレーション方法は、既知のテッセレーション方法において生じている上記で詳述した問題のうちの1以上に対処する。様々な例において、改良されたテッセレーション方法は、以下のように、上記で詳述した問題の多く又は全てに対処することができる:
・スナッピングがない-改良されたテッセレーション方法を使用すると、滑らかな遷移を生じさせるために、テッセレーション係数が増加するときに、ジオメトリが小インクリメントだけ追加される。これは、レンダリング時間の予測に役立つ。
・クラッキングがない-上記で例証されたように、改良されたテッセレーション方法は、ドメイン内のTジャンクション又はドメインの境界に沿ったTジャンクションを生じさせない。
・浮遊がない-テッセレータにより導入される各頂点は、テッセレーション係数が増加するとき、そのドメイン空間位置を維持し、したがって、「浮遊」アーチファクトがない。
・過剰/過少テッセレーションがない-エッジの各端における整数頂点テッセレーション係数tが、2
tの細分割に対応する。また、四辺形上の平均頂点テッセレーション係数tは、近似的に、2
2t個の頂点とその2倍の多さのプリミティブと、に対応し、これは最小である。同様に、三角形パッチは、(3/4)2
2t個の頂点とその2倍の多さのプリミティブとに対応する。
・細い三角形がない-上述したように、改良されたテッセレーション方法は、パッチごとの三角形の4つの(又は3つ以下の)クラスだけを生じさせ、これは、パッチごとのルート面積対外周比の最小値の境界を定める。
・空間/時間複雑度-アルゴリズムは、(
図9に示されるように)再帰的であり、各サブドメイン/パッチは、独立して扱うことができ、これは、実質的な並列性をサポートする。入力頂点は、頂点テッセレーション係数のための付加的な固定点値を必要とする。
【0102】
さらに、本明細書に記載の改良されたテッセレーション方法は、様々な例において、以下のさらなる品質を有する:
・向き独立性-(ブロック504の前処理段階において)パッチを、各々の上として中間頂点を有する、扇状の三角形パッチに分割することにより、三角形の向きに対する選択は行われず、したがって、同じテッセレーションが常に生じることになる。
・N角形-改良されたテッセレーション方法は、(前処理段階504の変形例において)パッチを扇状の三角形に分割することにより、N個の辺を有する任意のポリゴンパッチをサポートするよう容易に適合され得る。各ケースにおいて、平均テッセレーション係数tについて、本方法は、約(N/4)22t個の頂点とその2倍の多さのプリミティブとを生成することになる。
【0103】
上記の例は、(例えば、
図5において)三角形パッチ、四辺形パッチ、及び等値線パッチに対して改良されたテッセレーション方法が実施されることを示しているが、本方法は、それらのパッチのサブセットのみに対して(例えば、四辺形パッチのみに対して、三角形パッチのみに対して、又は四辺形パッチ及び三角形パッチのみに対して)実施されてもよいことが理解されよう。
【0104】
図5は、前処理段階(ブロック504)とテッセレーションアルゴリズムの再帰的適用(ブロック506及び508)との両方を含む改良されたテッセレーション方法を示しているが、
図9に示される方法は、代替的に、前処理段階(ブロック504、並びに
図7及び
図8に示されるもの)なく独立して実施されてもよいし、前処理段階(ブロック504)は、代替的に、
図7及び
図8に示されるものとは異なるやり方で実施されてもよいことが理解されよう。同様に、(
図15に示されるように)中心テッセレーション係数が使用される場合、本方法は、前処理段階(ブロック504、並びに
図7及び
図8に示されるもの)なく実施されてもよいし、前処理段階(ブロック504)は、
図7及び
図8に示されるものとは異なるやり方で実施されてもよい。
【0105】
上述した改良されたテッセレーション方法のさらなる変形例においては、頂点テッセレーション係数は、異なるように、すなわち、1以上のスケーリング、トランスレーション、又は他の変換により頂点テッセレーション係数を変換することによって、表現されてもよい。したがって、(例えば、ブロック708、808、及び912において)アップデートされた頂点テッセレーション係数を生成することは、INTERVALだけ減算することとは異なる。例えば、頂点TFは、頂点TFで2をべき乗して√2で除算することでアップデートすることにより、表現され得る。より一般的に、実数に対する可逆関数である任意のF(x)に関して、テッセレーション係数TF’は、TF’=F(TF)により与えられ得る。INTERVALだけ減算する代わりに、以下の関数を使用して、(ブロック708、808、及び912において算出された)頂点TFをアップデートしてもよい:
TF’:=F(F-1(TF’)-INTERVAL)
この例において、(上記の式(3)により与えられるものの代替である)テスト条件は、TF’>F(THRES)又はTF’<F(THRES)である。ここで、不等式の選択は、Fが、順序を保つものであるか順序を逆にするものであるかに依存する。F()によって共役させることにより、本方法における意味的な違いはない。
【0106】
一例において、TF’=F(TF)=2
TFである(すなわち、2を底とする対数で作用しない)場合、(例えば、ブロック708、808、及び912における)頂点TFをアップデートするために使用される関数は以下のようになる:
【数1】
テスト条件は、TF’>2
0=1(2
TFとして)が順序を保つものであることである。
【0107】
上記の説明において、THRES及びINTERVALの値について、具体的な例が提供されているが、さらなる例においては、これらのパラメータの一方又は両方の異なる値が使用されてもよい。
【0108】
上記の例において、2つの可能なMEAN()関数、すなわち、算術平均及び上記の式(6)により与えられるMEAN()関数が説明されている。本明細書に記載の改良されたテッセレーション方法のさらなる例示的な実装例おいては、代替的に、対称的であっても非対称的であってもよいMEAN()関数として、別の関数が使用されてもよい(しかしながら、これは、向き独立性の損失をもたらすであろう)。
【0109】
上記の例において、THRES及びINTERVALの各々についての1つの値及び1つのMEAN()関数(例えば、算術平均又は式(6)により与えられるMEAN()関数のいずれか)が使用されているが、さらなる例においては、THRES及び/若しくはINTERVALについての複数の値、並びに/又は複数のMEAN()関数が使用されてもよい。
【0110】
上述した改良されたテッセレーション方法において、LEFT.TF又はRIGHT.TFがTHRESより大きい場合、新たな頂点が追加される(ここで、「又は」が使用されているが、例えば、式(3)において、その標準的な意味は、LEFT.TF及びRIGHT.TFの一方又は両方が閾値より大きい場合、新たな頂点が追加されるということである)。上述した例に対する変形例においては、テッセレーションは、LEFT.TF及びRIGHT.TFの両方がTHRESより大きい場合に限り、実行されてもよい。
【0111】
上述した改良されたテッセレーション方法において、(上記の式(3)に示されるように)LEFT.TF又はRIGHT.TFがTHRESより大きい場合、新たな頂点が追加されるが、上述した方法に対する変形例においては、LEFT.TF又はRIGHT.TFがTHRES以上である場合、新たな頂点が追加されてもよい。
【0112】
上記の説明において、細分割は、(例えば、ブロック506及び508において)再帰的に適用されるものとして説明されている。しかしながら、さらなる例においては、本方法は、再帰的に適用されなくてもよく、例えば、反復的に(イテレーティブに)適用されてもよい(この場合、1つのレベルの細分割が、全ての現在のパッチに対して実行された後、次のレベルの細分割が、全ての生成されたパッチに対して実行される)。別の例においては、別の非再帰的方法が、実施されてもよい(例えば、65×65グリッド上の各頂点が含められるべきであるかどうかをテストし、次いで、頂点の位置に基づいて、含められた頂点がどのプリミティブの一部であるかを求める)。
【0113】
上述した例において、改良されたテッセレーション方法は、ドメイン空間において実行されるものとして説明されている。上述した方法に対するさらなる変形例においては、テッセレーションは、代替的に、ドメイン空間外で適用されてもよい。
【0114】
改良されたテッセレーション方法に入力される頂点TFは、別個のアプリケーションにより生成され得る(例えば、各頂点からビューワまでの距離に基づいて、例えば、頂点の頂点TFは、目から頂点までの距離の逆数に比例し得る)。様々な例において、本明細書に記載の方法に入力される前に、(例えば、頂点で交差するエッジについての全てのエッジTFの平均を取ることにより)エッジTFを頂点TFに変換するAPIが提供され得る。
【0115】
本明細書に記載の改良されたテッセレーション方法を使用して、オンザフライでテッセレーションを実行することもできるし(例えば、3Dシーン内で視点が変わる場合)、あるいは、本方法をオフラインで使用して、複数の異なる視点のための三角形を事前算出することもできる。
【0116】
本明細書に記載の改良されたテッセレーション方法は、ハードウェアにより実装され得る。様々な例において、本方法は、
図19に示されるように、グラフィックス処理ユニット(GPU)内のハードウェアテッセレーションユニットにより実装され得る。
図19は、GPU内のハードウェアにより実装され得る例示的なGPUパイプライン1900の概略図を示している。
図19に示されるように、パイプライン1900は、頂点シェーダ1902を含む。頂点シェーダ1902は、(例えば、カメラからの頂点の位置の関数として)全ての頂点の頂点テッセレーション係数を算出することを含む、頂点ごとに算出を実行する役割を担う。頂点TFを算出する前に、頂点シェーダは、頂点をワールド空間に変換し、1以上の他の線形変換を適用することもある。頂点シェーダ1902は、メッシュトポロジを認識せず、頂点シェーダ1902に提供された現在の頂点しか認識しない。
【0117】
頂点シェーダ1902とハードウェアテッセレーションユニット(すなわちテッセレータ)1904との間で(又は、パイプライン1900が、頂点シェーダ1902とテッセレータ1904との間に1以上の任意的なハルシェーダを含む場合には、頂点シェーダ1902と
図19には示されていない任意的なハルシェーダとの間で)、トポロジを使用してパッチ(すなわち、頂点の順序付きセット)が構築される(パッチは、描画呼び出しの前にユーザが選択する、テッセレータに記憶されている事前構築されているパッチの選択であり得る)。このパッチ情報が、(設けられている場合には)ハルシェーダに渡される。しかしながら、テッセレータ1904は、頂点TFのみを取得し、パッチ情報の残りは、ドメインシェーダ1906に渡される。
【0118】
ハードウェアテッセレーションユニット(すなわちテッセレータ)1904は、受信した頂点TFを使用して、(例えば、
図5、
図7~
図9、
図15、及び
図17に示されるように)上述した改良されたテッセレーション方法を実施するためのハードウェアロジックを備える。頂点シェーダとは異なり、ハードウェアテッセレーションユニットは(及び任意的なハルシェーダのいずれも)、頂点ごとではなくパッチごとに動作する。(例えば、ブロック706、806、906、及び1706において)新たな頂点TFを算出するための式を実行するのに必要とされるハードウェアを単純化するために、この算出は、(上述した例に示されるように)log2で実行され得、したがって、加算及び減算として実行され得る(又は、乗算及び除算が使用されることもある)。上述したように、ハードウェアテッセレーションユニット1904は、上述した方法の諸態様(例えば、
図9に示される、ブロック506及び608における異なるパッチに対する再帰的処理)を並列に実行するよう構成され得る。ハードウェアテッセレーションユニット1904は、新たな頂点の各々のドメイン空間座標を出力し、そのドメイン空間座標をドメインシェーダ1906に渡す(例えば、
図9のブロック914のように、全てのパッチの詳細をバッファに記憶することにより)。
【0119】
ドメインシェーダ1906は、テッセレータ1904により生成された頂点用の第2の頂点シェーダとして動作し、テッセレータにより頂点が生成されるたびに実行される。ドメインシェーダは、ドメイン空間位置(u,v)を供給し、全てのパッチ情報を与え、完全な頂点構造を出力する。ドメインシェーダは、パッチ制御点及びドメイン空間座標を使用して、新たな頂点を構築し、任意の変位マッピングを適用する(例えば、テクスチャにおいて符号化された何らかの高さマップ又はバンプマップをサンプリングすることにより)。
【0120】
ドメインシェーダ1906が、各パッチの生成された頂点ごとに実行された後、頂点は、ラスタライザ(
図19には示されていない)に渡される。これに前後して(in tandem)、(インデックスバッファの形態の)プリミティブが、テッセレータからラスタライザに渡される。
【0121】
図19のGPUパイプライン1900は、例として示されたに過ぎず、頂点TFを使用する、本明細書に記載の改良されたテッセレーション方法は、任意のGPUアーキテクチャにおいて使用することができる。ハードウェアテッセレーションユニット1904は、頂点シェーダ1904、任意的なハルシェーダ、及びドメインシェーダ1906に加えて、又はこれらに代えて、他のシェーダを含むGPUパイプラインにおいて使用されてもよいことも理解されよう。
【0122】
上述した改良されたテッセレーション方法は、代替的に、ソフトウェア(又は、ソフトウェアとハードウェアとの組合せ)により実装されてもよい。
図20は、任意の形態のコンピューティングデバイス及び/又は電子デバイスとして実装され得、上述したテッセレーション方法を実施するよう構成され得る例示的なコンピューティングベースデバイス2000の様々なコンポーネントを示している。
【0123】
コンピューティングベースデバイス2000は、1以上のプロセッサ2002を備える。1以上のプロセッサ2002は、マイクロプロセッサ、コントローラ、又は、上述した改良されたテッセレーション方法を実行するためにデバイスの動作を制御するためのコンピュータ実行可能な命令を処理する任意の他の適切なタイプのプロセッサとすることができる。いくつかの例において、例えば、システムオンチップアーキテクチャが使用される場合、プロセッサ2002は、(ソフトウェア又はファームウェアではなく)ハードウェアにより改良されたテッセレーション方法の一部を実装する1以上の固定機能ブロック(アクセラレータとも呼ばれる)を含み得る。オペレーティングシステム2004を含むプラットフォームソフトウェア又は任意の他の適切なプラットフォームソフトウェアが、デバイス2000上でアプリケーションソフトウェア2006を実行することを可能にするために、デバイス2000において提供され得る。アプリケーションソフトウェアは、テッセレーションモジュール2008を含み得る。このテッセレーションモジュール2008は、例えば、(
図5又は
図15のブロック504を実装する)前処理モジュール、任意的に、(
図15のブロック1502を実装する)追加的な前処理モジュール、及び(
図5又は
図15のブロック506及び/又は508を実装する)再帰的テッセレーションモジュールを含み得る。
【0124】
コンピュータ実行可能な命令は、コンピューティングベースデバイス2000によりアクセス可能な任意のコンピュータ読み取り可能な媒体を使用して提供され得る。コンピュータ読み取り可能な媒体は、例えば、メモリ2010等のコンピュータ記憶媒体、及び通信媒体を含み得る。メモリ2010等のコンピュータ記憶媒体(すなわち、非一時的なマシン読み取り可能な媒体)は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータ等といった情報を記憶するために任意の方法又は技術により実装された揮発性及び不揮発性の着脱可能及び着脱不可能な媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EPROM、EEPROM、フラッシュメモリ、若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、若しくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気記憶デバイス、又は、コンピューティングデバイスによりアクセスされる情報を記憶するために使用することができる任意の他の非伝送媒体を含むが、これらに限定されるものではない。反対に、通信媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータを、搬送波又は他の伝送機構等の変調されたデータ信号内に具現化することができる。本明細書で定められるように、コンピュータ記憶媒体は、通信媒体を含まない。コンピュータ記憶媒体(すなわち、例えばメモリ2010といった非一時的なマシン読み取り可能な媒体)が、コンピューティングベースデバイス2000内に示されているが、ストレージは、分散されてもよいし、リモートに配置されてもよく、(例えば、通信インタフェース2012を使用して)ネットワーク又は他の通信リンクを介してアクセスされてもよいことが理解されよう。
【0125】
コンピューティングベースデバイス2000はまた、コンピューティングベースデバイス2000と別個であっても統合されてもよいディスプレイデバイスに表示情報を出力するよう構成された入力/出力コントローラを備えることができる。表示情報は、グラフィカルユーザインタフェースを提供することができる。入力/出力コントローラはまた、ユーザ入力デバイス(例えば、マウスやキーボード)等の1以上のデバイスから入力を受信して処理するよう構成され得る。一実施形態において、ディスプレイデバイスは、タッチ式ディスプレイデバイスである場合には、ユーザ入力デバイスとしても動作することができる。入力/出力コントローラはまた、例えば、ローカルに接続された印刷デバイスといった、ディスプレイデバイス以外のデバイスにもデータを出力することができる。
【0126】
「プロセッサ」及び「コンピュータ」という用語は、命令を実行することができるように処理能力を有する任意のデバイス又はその一部を指すものとして本明細書で使用されている。「プロセッサ」という用語は、例えば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU又はVPU)、物理処理ユニット(PPU)、ラジオ処理ユニット(RPU)、デジタル信号プロセッサ(DSP)、汎用プロセッサ(例えば、汎用GPU)、マイクロプロセッサ、CPU外のタスクを加速させるよう設計される任意の処理ユニット等を含み得る。そのような処理能力は、多くの異なるデバイスに組み込まれ、したがって、「コンピュータ」という用語は、セットトップボックス、メディアプレーヤ、デジタルラジオ、PC、サーバ、携帯電話機、携帯情報端末、及び多くの他のデバイスを含むことが、当業者には認識されよう。
【0127】
プログラム命令を記憶するために使用される記憶デバイスは、ネットワークにわたって分散されてもよいことが、当業者には認識されよう。例えば、リモートコンピュータは、説明したプロセスの一例を、ソフトウェアとして記憶することができる。ローカルコンピュータ又はターミナルコンピュータは、リモートコンピュータにアクセスして、プログラムを実行するためにソフトウェアの一部又は全てをダウンロードすることができる。代替的に、ローカルコンピュータは、必要に応じて、ソフトウェアの一部をダウンロードしてもよいし、一部のソフトウェア命令をローカルターミナルで実行し、一部のソフトウェア命令をリモートコンピュータ(又はコンピュータネットワーク)で実行してもよい。当業者に知られている慣用技術を利用することにより、ソフトウェア命令の一部又は全てが、DSP、プログラマブルロジックアレイ等といった専用回路により実行されてもよいことも、当業者には認識されよう。
【0128】
本明細書に記載の方法は、有体の記憶媒体に記憶された、例えば、コンピュータプログラムの形態の、マシンが読み取ることができる形式のソフトウェアを有するよう構成されるコンピュータにより実行され得る。上記コンピュータプログラムは、コンピュータ読み取り可能な記憶媒体上に具現化され得る場合には、コンピュータ上で実行されたときに、説明した方法の構成部分を実行するようにコンピュータを構成するためのコンピュータ読み取り可能なプログラムコード、又は、本明細書に記載の方法のうちの任意の方法の全てのステップを実行するよう適合されたコンピュータプログラムコード手段を含む。有体の記憶媒体(すなわち、非一時的な記憶媒体)の例は、ディスク、サムドライブ、メモリカード等を含み、伝搬信号を含まない。ソフトウェアは、パラレルプロセッサ又はシリアルプロセッサ上での実行に適したものであり得、したがって、方法ステップは、任意の適切な順序で又は同時に実行され得る。
【0129】
本明細書に記載のハードウェアコンポーネントは、コンピュータ読み取り可能なプログラムコードが符号化されている非一時的なコンピュータ読み取り可能な記憶媒体によりもたらされ得る。
【0130】
また、所望の機能を実行するように集積回路を設計するために又はプログラマブルチップを構成するために使用されるものとして、上述したモジュール、機能、コンポーネント、又はロジックを実装するハードウェアの構成を「記述」又は定義するソフトウェア(HDL(ハードウェア記述言語)ソフトウェア等)を包含することも意図されている。すなわち、本明細書に記載の方法のうちの任意の方法を実行するよう構成された処理ユニットをもたらすためのコンピュータ読み取り可能なプログラムコード、又は、本明細書に記載の任意の装置を含む処理ユニットをもたらすためのコンピュータ読み取り可能なプログラムコードが符号化されているコンピュータ読み取り可能な記憶媒体が提供され得る。すなわち、コンピュータシステムは、回路素子の定義とそのような回路素子を組み合わせるためのルールを定義するデータとからデジタル回路の表現を生成するよう構成され得、ここで、非一時的なコンピュータ読み取り可能な記憶媒体は、プロセッサ実行可能な命令を記憶することが可能であり、このプロセッサ実行可能な命令が、そのようなコンピュータシステムにおいて実行されたときに、そのようなコンピュータシステムに、本明細書に記載の処理ユニットをもたらさせる。例えば、非一時的なコンピュータ読み取り可能な記憶媒体は、コンピュータ読み取り可能な命令を記憶することが可能であり、このコンピュータ読み取り可能な命令が、集積回路の出現(manifestation)をもたらすためのコンピュータシステムにおいて処理されたときに、そのようなコンピュータシステムに、本明細書における例で説明した、受信機のプロセッサの出現をもたらさせる、又は、本明細書における例で説明した方法を実行するよう構成されたプロセッサの出現をもたらさせる。プロセッサの出現は、プロセッサ自体、又は、プロセッサをもたらすために使用することができる、プロセッサの表現(例えば、マスク)であり得る。
【0131】
開示した態様を実施する際に使用されるマシン実行可能なデータを記憶するメモリは、非一時的な媒体であり得る。非一時的な媒体は、揮発性であってもよいし、不揮発性であってもよい。非一時的な揮発性媒体の例は、SRAM又はDRAM等といった、半導体ベースのメモリを含む。不揮発性メモリを実装するために使用することができる技術の例は、光メモリ技術、磁気メモリ技術、フラッシュメモリ、相変化メモリ、抵抗RAMを含む。
【0132】
「ロジック」に対する特定の言及は、1以上の機能を実行する構造を指す。ロジックの一例は、1以上の機能を実行するよう構成された回路を含む。例えば、そのような回路は、トランジスタ、及び/又は、製造プロセスにおいて利用可能な他のハードウェア要素を含み得る。そのようなトランジスタ及び/又は他の要素は、メモリを実装及び/又は包含する回路又は構造を形成するために使用され得る。そのような回路又は構造として、例えば、レジスタ、フリップフロップ又はラッチ、ブール演算等の論理演算子、加算器、乗算器、又はシフタなどの数学演算子、及びインターコネクト等がある。そのような要素は、カスタム回路若しくは標準セルライブラリ、マクロとして、又は他のレベルの抽象化において提供され得る。そのような要素は、特定の配置で相互接続され得る。ロジックは、固定機能である回路を含み得、回路は、1以上の機能を実行するようにプログラムされ得る。そのようなプログラミングは、ファームウェア又はソフトウェアのアップデートメカニズム又は制御メカニズムから提供され得る。1つの機能を実行するように識別されたロジックは、構成機能又はサブプロセスを実装するロジックも含み得る。一例において、ハードウェアロジックは、1以上の固定機能演算、状態機械、又はプロセスを実装する回路を有する。
【0133】
当業者には明らかなように、本明細書で提供したいかなる範囲又はデバイス値も、要求された効果を失うことなく、拡張又は変更され得る。
【0134】
上述した効果及び利点は、1つの実施形態に関連することもあるし、複数の実施形態に関連することもあることが理解されよう。実施形態は、上述した問題のいずれか又は全てを解決する実施形態、又は、上述した効果及び利点のいずれか又は全てを有する実施形態に限定されるものではない。
【0135】
「ある(an)」アイテムに対するいかなる言及も、1以上のそのようなアイテムを指す。「備える、含む、有する(comprising)」という用語は、識別された方法ブロック又は要素を含むが、そのようなブロック又は要素が排他的なリストを含まず、装置がさらなるブロック又は要素を含んでもよく、方法がさらなる動作又は要素を含んでもよいことを意味するものとして、本明細書で使用されている。さらに、ブロック、要素、及び動作は、これら自体、暗黙的にクローズドではない。
【0136】
本明細書に記載の方法のステップは、適切である場合には、任意の適切な順序で又は同時に実行され得る。図面におけるボックス間の矢印は、方法ステップの例示的な一シーケンスを示すが、他のシーケンス又は複数のステップの並列実行を除外することを意図するものではない。さらに、個々のブロックは、本明細書に記載の主題の主旨及び範囲から逸脱することなく、本方法のうちの任意の方法から削除され得る。上述した例のうちの任意の例の態様は、要求された効果を失うことなく、上述した他の例のうちの任意の例の態様と組み合わされて、さらなる例が形成され得る。図面の要素が矢印により結ばれて示されている場合、矢印は、要素間の(データ及び制御メッセージを含む)やりとりの例示的な1つの流れを示すに過ぎないことが理解されよう。要素間の流れは、いずれかの一方向又は双方向であり得る。
【0137】
好適な実施形態の上記の説明は、例として提供されたに過ぎず、様々な変更が当業者により行われ得ることが理解されよう。様々な実施形態が、所定の程度の具体性をもって又は1以上の個々の実施形態を参照して上記で説明されたが、当業者であれば、本発明の主旨又は範囲から逸脱することなく、開示した実施形態に対して多数の変更を行うことができるであろう。
【符号の説明】
【0138】
1902 頂点シェーダ
1904 テッセレーションユニット
1906 ドメインシェーダ
2002 プロセッサ
2004 オペレーティングシステム
2006 アプリケーションソフトウェア
2008 テッセレーションモジュール
2010 メモリ
2012 通信インタフェース