(57)【要約】【課題】四辺形、三角形、又は等値線であり得るパッチの各頂点のために定義された頂点テッセレーション係数を使用するテッセレーション方法を提供する。【解決手段】本方法は、コンピュータグラフィックスシステムにおいて実施される。本方法は、頂点テッセレーション係数を閾値と比較することを含む。最初のパッチのエッジを定義している左頂点及び右頂点のうちの一方の頂点テッセレーション係数が、閾値より大きい場合、エッジを２つの部分に分割する新たな頂点を追加することにより、エッジが細分割され、２つの新たなパッチが形成される。新たなパッチの各々は、新たに追加された頂点を含み、新たなパッチの各々における各頂点の頂点テッセレーション係数が算出される。次いで、本方法は、頂点テッセレーション係数のいずれもが閾値以下になるまで、新たに形成されたパッチの各々に対して繰り返される。【選択図】図５
2020170559.tif 000002
【特許請求の範囲】
【請求項１】
エッジにより結ばれている左頂点及び右頂点を含む最初のパッチであって、ドメイン空間において定義されている最初のパッチについて、
前記左頂点の頂点テッセレーション係数及び前記右頂点の頂点テッセレーション係数を、閾値と比較し、
前記左頂点の前記頂点テッセレーション係数及び前記右頂点の前記頂点テッセレーション係数のいずれかが、前記閾値より大きい又は等しいと判定したことに応じて、前記エッジを２つの部分に細分割する新たな頂点を形成し、前記新たな頂点の頂点テッセレーション係数を算出し、前記最初のパッチを分割して、前記左頂点及び前記新たな頂点を含む第１の新たなパッチと、前記右頂点及び前記新たな頂点を含む第２の新たなパッチとを形成し、新たに形成された２つの前記パッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を備えたハードウェアテッセレーションシステム。
【請求項２】
前記ハードウェアロジックは、前記左頂点の前記頂点テッセレーション係数及び前記右頂点の前記頂点テッセレーション係数のいずれも、前記閾値未満であると判定したことに応じて、前記最初のパッチを記述したデータを出力するようにさらに構成される、請求項１に記載のハードウェアテッセレーションシステム。
【請求項３】
前記新たな頂点は、前記エッジを二等分する、請求項１又は２に記載のハードウェアテッセレーションシステム。
【請求項４】
前記ハードウェアロジックは、新たに形成された前記パッチの各々に対して、前記最初のパッチとして、請求項１に記載のプロセスを繰り返すようさらに構成されている、請求項１乃至３のいずれか一項に記載のハードウェアテッセレーションシステム。
【請求項５】
前記ハードウェアロジックは、新たに形成された前記パッチの各々における左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数が前記閾値未満になるまで、新たに形成された前記パッチの各々に対して、前記最初のパッチとして、請求項１に記載の前記プロセスを繰り返すようさらに構成されている、請求項４に記載のハードウェアテッセレーションシステム。
【請求項６】
前記新たな頂点の頂点テッセレーション係数を算出するよう構成されている前記ハードウェアロジックは、
前記左頂点の前記頂点テッセレーション係数及び前記右頂点の前記頂点テッセレーション係数の平均値を算出し、
前記新たな頂点の前記頂点テッセレーション係数を、前記の算出された平均値に等しくなるように設定する
よう構成されているハードウェアロジックを含み、
前記左頂点の前記頂点テッセレーション係数及び前記右頂点の前記頂点テッセレーション係数の前記平均値は、
ＭＥＡＮ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）＝ＭＩＮ（ＡＶＧ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ），ＭＩＮ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）＋ＩＮＴＥＲＶＡＬ）
により与えられ、
ここで、ＬＥＦＴ．ＴＦは、前記左頂点の前記頂点テッセレーション係数であり、ＲＩＧＨＴ．ＴＦは、前記右頂点の前記頂点テッセレーション係数であり、ＡＶＧ（）は、括弧内の値の算術平均であり、ＭＩＮ（）は、括弧内の値のリストのうちの最小であり、ＩＮＴＥＲＶＡＬは、予め定められたパラメータである、請求項１乃至５のいずれか一項に記載のハードウェアテッセレーションシステム。
【請求項７】
新たに形成された前記パッチの各々における各頂点の頂点テッセレーション係数を低減させるよう構成されている前記ハードウェアロジックは、各頂点テッセレーション係数を、予め定められたパラメータＩＮＴＥＲＶＡＬだけ低減させるよう構成されている、請求項１乃至６のいずれか一項に記載のハードウェアテッセレーションシステム。
【請求項８】
前記最初のパッチは、三角形パッチであり、前記三角形パッチは、上頂点、前記右頂点、及び前記左頂点から構成される３つの頂点の順序付きセットである、請求項１乃至７のいずれか一項に記載のハードウェアテッセレーションシステム。
【請求項９】
入力パッチを受信し、
前記入力パッチから１つ又は複数の最初のパッチを生成し、
前記１つ又は複数の最初のパッチの各々に対して、請求項１に記載のプロセスを繰り返す
よう構成されているハードウェアロジック
をさらに備えた、請求項１又は２に記載のハードウェアテッセレーションシステム。
【請求項１０】
前記入力パッチは、３つの頂点を有する三角形パッチであり、１つ又は複数の最初のパッチを生成するよう構成されている前記ハードウェアロジックは、
該３つの頂点の各々の頂点テッセレーション係数を、閾値と比較し、
該３つの頂点の各々の前記頂点テッセレーション係数のいずれも、該閾値より大きくないと判定したことに応じて、前記入力パッチを記述したデータを出力し、
該３つの頂点の各々の前記頂点テッセレーション係数のうち少なくとも１つの頂点テッセレーション係数が、該閾値より大きいと判定したことに応じて、該三角形パッチの中心に新たな頂点を形成し、該新たな頂点の頂点テッセレーション係数を算出し、前記入力パッチを分割して、上頂点として該新たな頂点を有する三角形パッチである３つの最初のパッチを形成し、新たに形成された前記３つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含む、請求項９に記載のハードウェアテッセレーションシステム。
【請求項１１】
前記入力パッチは、４つの頂点を有する四辺形パッチであり、１つ又は複数の最初のパッチを生成するよう構成されている前記ハードウェアロジックは、
前記四辺形パッチの中心に新たな頂点を形成し、
該新たな頂点の頂点テッセレーション係数を算出し、
前記入力パッチを分割して、上頂点として該新たな頂点を有する三角形パッチである４つの最初のパッチを形成し、
新たに形成された前記４つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含む、請求項９に記載のハードウェアテッセレーションシステム。
【請求項１２】
前記入力パッチは、４つの頂点及び中心テッセレーション係数を有する四辺形パッチであり、１つ又は複数の最初のパッチを生成するよう構成されている前記ハードウェアロジックは、
新たな５つの頂点を追加して、前記入力パッチを、４つの四辺形サブ入力パッチに細分割し、
新たに追加された前記５つの頂点の各々の頂点テッセレーション係数を算出し、
新たに形成された前記４つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させ、
前記４つの四辺形サブ入力パッチの各々について、
該四辺形サブ入力パッチの中心に新たな頂点を形成し、
該新たな頂点の頂点テッセレーション係数を算出し、
該四辺形サブ入力パッチを分割して、上頂点として該新たな頂点を有する三角形パッチである４つの最初のパッチを形成し、
新たに形成された前記４つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含む、請求項９に記載のハードウェアテッセレーションシステム。
【請求項１３】
前記入力パッチは、３つの頂点及び中心テッセレーション係数を有する三角形パッチであり、１つ又は複数の最初のパッチを生成するよう構成されている前記ハードウェアロジックは、
新たな４つの頂点を追加して、前記入力パッチを、３つの四辺形サブ入力パッチに細分割し、
新たに追加された前記４つの頂点の各々の頂点テッセレーション係数を算出し、
新たに形成された前記３つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させ、
前記３つの四辺形サブ入力パッチの各々について、
該四辺形サブ入力パッチの中心に新たな頂点を形成し、
該新たな頂点の頂点テッセレーション係数を算出し、
該四辺形サブ入力パッチを分割して、上頂点として該新たな頂点を有する三角形パッチである４つの最初のパッチを形成し、
新たに形成された前記４つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含む、請求項９に記載のハードウェアテッセレーションシステム。
【請求項１４】
コンピュータグラフィックスシステムにおいてテッセレーションを実行する方法であって、
エッジにより結ばれている左頂点及び右頂点を含む最初のパッチであって、ドメイン空間において定義されている最初のパッチについて、
前記左頂点の頂点テッセレーション係数及び前記右頂点の頂点テッセレーション係数を、閾値と比較するステップと、
前記左頂点の前記頂点テッセレーション係数及び前記右頂点の前記頂点テッセレーション係数のいずれかが、前記閾値より大きい又は等しいと判定したことに応じて、前記エッジを２つの部分に細分割する新たな頂点を形成し、前記新たな頂点の頂点テッセレーション係数を算出し、前記最初のパッチを分割して、前記左頂点及び前記新たな頂点を含む第１の新たなパッチと、前記右頂点及び前記新たな頂点を含む第２の新たなパッチとを形成し、新たに形成された前記パッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含む方法。
【請求項１５】
コンピュータ実行可能なプログラムコードを記憶しているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータ実行可能なプログラムコードは、実行されたときに、少なくとも１つのプロセッサに、請求項１４記載の方法を実行させる、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
テッセレーションは、シーンにおけるオブジェクトを表現するサーフェスのセットを、レンダリングにより適した複数のより小さいより単純なピース（プリミティブと呼ばれ、通常は三角形である）に分割するためにコンピュータグラフィックスにおいて使用される技術である。結果として生じるテッセレーションされたサーフェスは、一般に、元のサーフェスの近似であるが、この近似の正確さは、生成されるプリミティブの数を増加させることにより向上させることができるが、プリミティブの数を増加させることは、通常、プリミティブがより小さくなることをもたらす。テッセレーション／細分割の量（amount）は、通常、詳細レベル（ＬＯＤ：level  of  detail）によって決定される。したがって、増加した数のプリミティブは、通常、より高い詳細レベルが必要とされる場合に使用される。例えば、オブジェクトが、ビューワ（viewer）により近いため、且つ／あるいは、オブジェクトが、より複雑な形状を有するためである。しかしながら、より多くの数の三角形の使用は、シーンをレンダリングするのに必要とされる処理労力を増大させる。
【０００２】
三角形プリミティブへの細分割は、通常、形状が四角又は三角である（すなわち、四辺形（quad）又は三角形の）パッチに対して実行され、そのようなパッチを湾曲させて、パッチが表現するオブジェクトのサーフェスにフィットさせる（したがって、パッチは、「サーフェスパッチ」と呼ばれることがある）、且つ／あるいは、パッチに変位マッピングを適用させる。しかしながら、細分割は、湾曲したパッチに対しては実行されず、代わりに、パッチのドメインにおいて実行され（例えば、パッチは、多項式により定義されるというより、平面的であると言える）、このドメインは、（ｕ，ｖ）パラメータの観点で定義され、「パラメトリック空間」と呼ばれ得る。これは、テッセレーションプロセスが、最終的なサーフェスに存在するいずれの湾曲からも独立していることを意味する。
【０００３】
テッセレーションは、（例えば、異なる詳細レベルで、且つ／又は、異なる視点から、シーンの複数の異なるビューを算出するために）前もって実行されることもあるし、（例えば、連続的な詳細レベル又はビュー依存の詳細レベルを提供するために）オンザフライで（on  the  fly）実行されることもある。いくつかの既存のテッセレーション方法を使用すると、ユーザは、要求される詳細レベルが滑らかに変わるとしても、結果として生じるテッセレーションが非連続的に変わる場合には、望ましくない視覚的アーチファクトを経験し得る。
【０００４】
以下に記載の実施形態は、例として提供されるに過ぎず、テッセレーションを実行するための既知の方法及び装置の欠点のいずれか又は全てを解決する実装例を限定するものではない。
【発明の概要】
【０００５】
この発明の概要は、発明を実施するための形態において以下でさらに説明するコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この発明の概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を決定する際の助けとして使用されることを意図するものでもない。
【０００６】
四辺形、三角形、又は等値線（isoline）であり得るパッチの各頂点のために定義された頂点テッセレーション係数を使用するテッセレーション方法が説明される。本方法は、コンピュータグラフィックスシステムにおいて実施される。本方法は、頂点テッセレーション係数を閾値と比較することを含む。最初のパッチのエッジを定義している左頂点及び右頂点のうちの一方の頂点テッセレーション係数が、閾値より大きい場合、エッジを２つの部分に分割する新たな頂点を追加することにより、エッジが細分割され、２つの新たなパッチが形成される。新たに形成されたパッチの各々は、新たに追加された頂点を含み、新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数が算出される。次いで、本方法は、頂点テッセレーション係数のいずれもが閾値以下になるまで、新たに形成されたパッチの各々に対して繰り返される。
【０００７】
第１の態様は、コンピュータグラフィックスシステムにおいてテッセレーションを実行する方法であって、
エッジにより結ばれている左頂点及び右頂点を含む最初のパッチであって、ドメイン空間において定義されている最初のパッチについて、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数を、閾値と比較するステップと、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数のいずれも、閾値より大きくないと判定したことに応じて、最初のパッチを記述したデータを出力するステップと、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数のいずれかが、閾値より大きいと判定したことに応じて、エッジを２つの部分に細分割する新たな頂点を形成し、新たな頂点の頂点テッセレーション係数を算出し、最初のパッチを分割して、左頂点及び新たな頂点を含む第１の新たなパッチと、右頂点及び新たな頂点を含む第２の新たなパッチと、を形成し、新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含む方法を提供する。
【０００８】
新たな頂点は、エッジを二等分し得る。
【０００９】
当該方法は、
新たに形成されたパッチの各々に対して、最初のパッチとして、方法を繰り返すステップ
をさらに含み得る。
新たに形成されたパッチの各々に対して、最初のパッチとして、方法を繰り返すことは、新たに形成されたパッチの各々における左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数が閾値以下になるまで、新たに形成されたパッチの各々に対して、最初のパッチとして、方法を繰り返すことを含み得る。
【００１０】
新たな頂点の頂点テッセレーション係数を算出することは、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数の平均値を算出することと、
新たな頂点の頂点テッセレーション係数を、算出された平均値に設定することと、
を含み得る。
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数の平均値は、
ＭＥＡＮ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）＝ＭＩＮ（ＡＶＧ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ），ＭＩＮ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）＋ＩＮＴＥＲＶＡＬ）
により与えられ得、
ここで、ＬＥＦＴ．ＴＦは、左頂点の頂点テッセレーション係数であり、ＲＩＧＨＴ．ＴＦは、右頂点の頂点テッセレーション係数であり、ＡＶＧ（）は、括弧内の値の算術平均であり、ＭＩＮ（）は、括弧内の値のリストのうちの最小であり、ＩＮＴＥＲＶＡＬは、予め定められたパラメータである。
【００１１】
新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数を低減させることは、新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数の各頂点テッセレーション係数を、予め定められたパラメータＩＮＴＥＲＶＡＬだけ低減させることを含み得る。パラメータＩＮＴＥＲＶＡＬは、０．５であり得る。
【００１２】
閾値は、０であり得る。
【００１３】
最初のパッチは、左頂点及び右頂点からなる２つの頂点により定義されている等値線パッチであり得る。
【００１４】
最初のパッチは、三角形パッチであり得、三角形パッチは、上頂点、前記右頂点、及び前記左頂点からなる３つの頂点の順序付きセットである。分割されたパッチは、新たに形成されたパッチの親パッチであり得、第１の新たなパッチは、親パッチに追加された新たな頂点である上頂点と、親パッチの左頂点である右頂点と、親パッチの上頂点である左頂点と、からなる３つの頂点の順序付きセットであり、第２の新たなパッチは、親パッチに追加された新たな頂点である上頂点と、親パッチの上頂点である右頂点と、親パッチの右頂点である左頂点と、からなる３つの頂点の順序付きセットである。
【００１５】
最初のパッチが三角形パッチである場合、当該方法は、
入力パッチを受信するステップと、
入力パッチから１以上の最初のパッチを生成するステップと、
１以上の最初のパッチの各々に対して、方法を繰り返すステップと、
をさらに含み得る。
入力パッチは、３つの頂点を有する三角形パッチであり得、１以上の最初のパッチを生成するステップは、
３つの頂点の各々の頂点テッセレーション係数を、閾値と比較するステップと、
３つの頂点の各々の頂点テッセレーション係数のいずれも、閾値より大きくないと判定したことに応じて、入力パッチを記述したデータを出力するステップと、
３つの頂点の各々の頂点テッセレーション係数のうち少なくとも１つの頂点テッセレーション係数が、閾値より大きいと判定したことに応じて、三角形パッチの中心に新たな頂点を形成し、新たな頂点の頂点テッセレーション係数を算出し、入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである３つの最初のパッチを形成し、新たに形成された３つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含み得る。
新たな頂点は、三角形パッチの重心に形成され得る。
入力パッチの３つの頂点は、上頂点、左頂点、及び右頂点であり得、三角形パッチの中心における新たな頂点の頂点テッセレーション係数は、
ＭＩＤ．ＴＦ＝ＭＥＡＮ（ＴＯＰ．ＴＦ，ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）
を使用して算出され得、
ここで、ＭＩＤ．ＴＦは、新たな頂点の頂点テッセレーション係数であり、ＴＯＰ．ＴＦは、上頂点の頂点テッセレーション係数であり、ＬＥＦＴ．ＴＦは、左頂点の頂点テッセレーション係数であり、ＲＩＧＨＴ．ＴＦは、右頂点の頂点テッセレーション係数であり、ＭＥＡＮ（）は、括弧内の値の平均である。
【００１６】
ＭＥＡＮ（ＴＯＰ．ＴＦ，ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）は、
ＭＥＡＮ（ＴＯＰ．ＴＦ，ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）＝ＭＩＮ（ＡＶＧ（ＴＯＰ．ＴＦ，ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ），ＭＩＮ（ＴＯＰ．ＴＦ，ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）＋ＩＮＴＥＲＶＡＬ）
を使用して算出され得、
ここで、ＡＶＧ（）は、括弧内の値の算術平均であり、ＭＩＮ（）は、括弧内の値のリストのうちの最小であり、ＩＮＴＥＲＶＡＬは、予め定められたパラメータである。
【００１７】
入力パッチは、４つの頂点を有する四辺形パッチであり得、１以上の最初のパッチを生成するステップは、
四辺形パッチの中心に新たな頂点を形成するステップと、
新たな頂点の頂点テッセレーション係数を算出するステップと、
入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである４つの最初のパッチを形成するステップと、
新たに形成された４つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含み得る。
【００１８】
入力パッチは、４つの頂点及び中心テッセレーション係数を有する四辺形パッチであり得、１以上の最初のパッチを生成するステップは、
新たな５つの頂点を追加して、入力パッチを、４つの四辺形サブ入力パッチに細分割するステップと、
新たに追加された５つの頂点の各々の頂点テッセレーション係数を算出するステップと、
新たに形成された４つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させるステップと、
４つの四辺形サブ入力パッチの各々について、
四辺形サブ入力パッチの中心に新たな頂点を形成するステップと、
新たな頂点の頂点テッセレーション係数を算出するステップと、
四辺形サブ入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである４つの最初のパッチを形成するステップと、
新たに形成された４つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含み得る。
【００１９】
入力パッチは、３つの頂点及び中心テッセレーション係数を有する三角形パッチであり得、１以上の最初のパッチを生成するステップは、
新たな４つの頂点を追加して、入力パッチを、３つの四辺形サブ入力パッチに細分割するステップと、
新たに追加された４つの頂点の各々の頂点テッセレーション係数を算出するステップと、
新たに形成された３つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させるステップと、
３つの四辺形サブ入力パッチの各々について、
四辺形サブ入力パッチの中心に新たな頂点を形成するステップと、
新たな頂点の頂点テッセレーション係数を算出するステップと、
四辺形サブ入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである４つの最初のパッチを形成するステップと、
新たに形成された４つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させるステップと、
を含み得る。
【００２０】
入力パッチの４つ頂点は、左上頂点、右上頂点、左下頂点、及び右下頂点であり得、三角形パッチの中心における新たな頂点の頂点テッセレーション係数は、
ＭＩＤ．ＴＦ＝ＭＥＡＮ（ＴＬＥＦＴ．ＴＦ，ＴＲＩＧＨＴ．ＴＦ，ＢＬＥＦＴ．ＴＦ，ＢＲＩＧＨＴ．ＴＦ）
を使用して算出され得、
ここで、ＭＩＤ．ＴＦは、新たな頂点の頂点テッセレーション係数であり、ＴＬＥＦＴ．ＴＦは、左上頂点の頂点テッセレーション係数であり、ＴＲＩＧＨＴ．ＴＦは、右上頂点の頂点テッセレーション係数であり、ＢＬＥＦＴ．ＴＦは、左下頂点の頂点テッセレーション係数であり、ＢＲＩＧＨＴ．ＴＦは、右下頂点の頂点テッセレーション係数であり、ＭＥＡＮ（）は、括弧内の値の平均である。
【００２１】
ＭＥＡＮ（ＴＬＥＦＴ．ＴＦ，ＴＲＩＧＨＴ．ＴＦ，ＢＬＥＦＴ．ＴＦ，ＢＲＩＧＨＴ．ＴＦ）は、
ＭＥＡＮ（ＴＬＥＦＴ．ＴＦ，ＴＲＩＧＨＴ．ＴＦ，ＢＬＥＦＴ．ＴＦ，ＢＲＩＧＨＴ．ＴＦ）＝ＭＩＮ（ＡＶＧ（ＴＬＥＦＴ．ＴＦ，ＴＲＩＧＨＴ．ＴＦ，ＢＬＥＦＴ．ＴＦ，ＢＲＩＧＨＴ．ＴＦ），ＭＩＮ（ＴＬＥＦＴ．ＴＦ，ＴＲＩＧＨＴ．ＴＦ，ＢＬＥＦＴ．ＴＦ，ＢＲＩＧＨＴ．ＴＦ）＋ＩＮＴＥＲＶＡＬ）
を使用して算出され得、
ここで、ＡＶＧ（）は、括弧内の値の算術平均であり、ＭＩＮ（）は、括弧内の値のリストのうちの最小であり、ＩＮＴＥＲＶＡＬは、予め定められたパラメータである。
【００２２】
新たに形成された最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させることは、新たに形成された最初のパッチの各々における各頂点の頂点テッセレーション係数の各頂点テッセレーション係数を、予め定められたパラメータＩＮＴＥＲＶＡＬだけ低減させることを含み得る。
【００２３】
第２の態様は、
エッジにより結ばれている左頂点及び右頂点を含む最初のパッチであって、ドメイン空間において定義されている最初のパッチについて、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数を、閾値と比較し、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数のいずれも、閾値より大きくないと判定したことに応じて、最初のパッチを記述したデータを出力し、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数のいずれかが、閾値より大きいと判定したことに応じて、エッジを２つの部分に細分割する新たな頂点を形成し、新たな頂点の頂点テッセレーション係数を算出し、最初のパッチを分割して、左頂点及び新たな頂点を含む第１の新たなパッチと、右頂点及び新たな頂点を含む第２の新たなパッチと、を形成し、新たに形成されたパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を備えたハードウェアテッセレーションユニットを提供する。
【００２４】
ハードウェアロジックは、新たに形成されたパッチの各々に対して、最初のパッチとして、方法を繰り返すようさらに構成され得る。
【００２５】
新たな頂点の頂点テッセレーション係数を算出するよう構成されているハードウェアロジックは、
左頂点の頂点テッセレーション係数及び右頂点の頂点テッセレーション係数の平均値を算出し、
新たな頂点の頂点テッセレーション係数を、算出された平均値に設定する
よう構成されているハードウェアロジック
を含み得る。
【００２６】
最初のパッチは、左頂点及び右頂点からなる２つの頂点により定義されている等値線パッチであり得る。
【００２７】
最初のパッチは、三角形パッチであり得、三角形パッチは、上頂点、前記右頂点、及び前記左頂点からなる３つの頂点の順序付きセットである。分割されたパッチは、新たに形成されたパッチの親パッチであり得、第１の新たなパッチは、親パッチに追加された新たな頂点である上頂点と、親パッチの左頂点である右頂点と、親パッチの上頂点である左頂点と、からなる３つの頂点の順序付きセットであり、第２の新たなパッチは、親パッチに追加された新たな頂点である上頂点と、親パッチの上頂点である右頂点と、親パッチの右頂点である左頂点と、からなる３つの頂点の順序付きセットである。
【００２８】
当該ハードウェアテッセレーションユニットは、
入力パッチを受信し、
入力パッチから１以上の最初のパッチを生成し、
１以上の最初のパッチの各々に対して、方法を繰り返す
よう構成されているハードウェアロジック
をさらに備え得る。
【００２９】
入力パッチは、３つの頂点を有する三角形パッチであり得、１以上の最初のパッチを生成するよう構成されているハードウェアロジックは、
３つの頂点の各々の頂点テッセレーション係数を、閾値と比較し、
３つの頂点の各々の頂点テッセレーション係数のいずれも、閾値より大きくないと判定したことに応じて、入力パッチを記述したデータを出力し、
３つの頂点の各々の頂点テッセレーション係数のうち少なくとも１つの頂点テッセレーション係数が、閾値より大きいと判定したことに応じて、三角形パッチの中心に新たな頂点を形成し、新たな頂点の頂点テッセレーション係数を算出し、入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである３つの最初のパッチを形成し、新たに形成された３つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含み得る。
【００３０】
入力パッチは、４つの頂点を有する四辺形パッチであり得、１以上の最初のパッチを生成するよう構成されているハードウェアロジックは、
四辺形パッチの中心に新たな頂点を形成し、
新たな頂点の頂点テッセレーション係数を算出し、
入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである４つの最初のパッチを形成し、
新たに形成された４つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含み得る。
【００３１】
入力パッチは、４つの頂点及び中心テッセレーション係数を有する四辺形パッチであり得、１以上の最初のパッチを生成するよう構成されているハードウェアロジックは、
新たな５つの頂点を追加して、入力パッチを、４つの四辺形サブ入力パッチに細分割し、
新たに追加された５つの頂点の各々の頂点テッセレーション係数を算出し、
新たに形成された４つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させ、
４つの四辺形サブ入力パッチの各々について、
四辺形サブ入力パッチの中心に新たな頂点を形成し、
新たな頂点の頂点テッセレーション係数を算出し、
四辺形サブ入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである４つの最初のパッチを形成し、
新たに形成された４つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含み得る。
【００３２】
入力パッチは、３つの頂点及び中心テッセレーション係数を有する三角形パッチであり得、１以上の最初のパッチを生成するよう構成されているハードウェアロジックは、
新たな４つの頂点を追加して、入力パッチを、３つの四辺形サブ入力パッチに細分割し、
新たに追加された４つの頂点の各々の頂点テッセレーション係数を算出し、
新たに形成された３つの四辺形サブ入力パッチにおける各頂点の頂点テッセレーション係数を低減させ、
３つの四辺形サブ入力パッチの各々について、
四辺形サブ入力パッチの中心に新たな頂点を形成し、
新たな頂点の頂点テッセレーション係数を算出し、
四辺形サブ入力パッチを分割して、上頂点として新たな頂点を有する三角形パッチである４つの最初のパッチを形成し、
新たに形成された４つの最初のパッチの各々における各頂点の頂点テッセレーション係数を低減させる
よう構成されているハードウェアロジック
を含み得る。
【００３３】
第３の態様は、上述したハードウェアテッセレーションユニットを備えたグラフィックス処理ユニットを提供する。
【００３４】
さらなる態様は、
コンピュータ実行可能なプログラムコードを記憶している非一時的なコンピュータ読み取り可能な記憶媒体であって、コンピュータ実行可能なプログラムコードは、実行されたときに、少なくとも１つのプロセッサに、上述した方法を実行させる、非一時的なコンピュータ読み取り可能な記憶媒体と、
上述したハードウェアテッセレーションユニットを備えたグラフィックス処理ユニットと、
上述したハードウェアテッセレーションユニットを規定しているコンピュータ読み取り可能なプログラムコードが符号化されているコンピュータ読み取り可能な記憶媒体と、
上述した方法を実行するよう構成されているハードウェアテッセレーションユニットを規定しているコンピュータ読み取り可能なプログラムコードが符号化されているコンピュータ読み取り可能な記憶媒体と、
を提供する。
【００３５】
当業者には明らかなように、好適な特徴は、必要に応じて組み合わされてもよいし、本発明の態様のうちの任意の態様と組み合わされてもよい。
【図面の簡単な説明】
【００３６】
本発明の実施形態が、例として、図面を参照して説明される。類似する特徴を示すために、図面全体を通じて、共通の参照符号が使用される。
【図１】様々な既知のテッセレーション方法の使用の結果を示す図。
【図２】エッジテッセレーション係数を使用する従来技術の方法と、頂点テッセレーション係数を使用する、本明細書に記載の方法と、を使用して得られた異なる結果の例を示す概略図。
【図３】本明細書に記載の改良されたテッセレーション方法を使用して得られた様々な例示的な結果を示す図。
【図４】本明細書に記載の改良されたテッセレーション方法を使用して得られたさらなる例示的な結果を示す図。
【図５】改良されたテッセレーション方法のフロー図。
【図６】様々な入力パッチを示すとともに、図５の方法の前処理段階を示す概略図。
【図７】三角形入力パッチに関する、図５の方法の前処理段階のフロー図。
【図８】四辺形入力パッチに関する、図５の方法の前処理段階のフロー図。
【図９】前処理段階により出力された３つ又は４つの三角形パッチの各々、又は、入力等値線パッチへのアルゴリズムの再帰的適用のフロー図。
【図１０】図９の方法を示す三角形を示す概略図。
【図１１】本明細書に記載の改良されたテッセレーション方法を示す三角形を示す概略図。
【図１２】本明細書に記載の改良されたテッセレーション方法の例示的な例を示す図。
【図１３】本明細書に記載の改良されたテッセレーション方法を使用して生成され得る三角形クラスを示す概略図。
【図１４】本明細書に記載の改良されたテッセレーション方法を使用して得られた結果と既知のテッセレーション方法を使用して得られた結果との比較を示す図。
【図１５】図５に示されるテッセレーション方法に対する変形例である改良されたテッセレーション方法のさらなる例示的なフロー図。
【図１６】図１５の方法を示す概略図。
【図１７】図１５の方法の追加的な前処理段階のフロー図。
【図１８】図１５の方法を使用して得られた例示的な結果を示す図。
【図１９】例示的なＧＰＵパイプラインの概略図。
【図２０】任意の形態のコンピューティングデバイス及び／又は電子デバイスとして実装され得、本明細書に記載の改良されたテッセレーション方法を実施するよう構成され得る例示的なコンピューティングベースデバイスの様々なコンポーネントを示す図。
【発明を実施するための形態】
【００３７】
本発明の実施形態が、単に例として、以下で説明される。これらの例は、出願人に現在知られている、本発明を実施する最良の態様を表すものであるが、そのような態様は、本発明が実現され得る唯一の態様ではない。本記載は、そのような例の機能と、そのような例を構成して動作させるためのステップのシーケンスと、を説明している。しかしながら、同じ又は均等の機能及びシーケンスは、異なる例により実現されてもよい。
【００３８】
（例えば、四辺形又は三角形の）パッチの各エッジについて定義され、エッジ（したがってパッチ）が何回細分割されるべきであるかを決定するエッジテッセレーション係数（ＴＦ：tessellation  factor）を使用する複数の既知のテッセレーション方法が存在する。図１は、各エッジについては同じテッセレーション係数であるが異なるエッジテッセレーション係数を使用したときの、結果として生じた三角形がどのように異なるかを示している。
【００３９】
図１における１番目の４つの例（ａ）〜（ｄ）は、以下を示している：
（ａ）全ての４つのエッジについてエッジＴＦ＝３である整数分割法（integer  partitioning）
（ｂ）全ての４つのエッジについてエッジＴＦ＝４である整数分割法
（ｃ）全ての４つのエッジについてエッジＴＦ＝３である２のべき乗の整数分割法（power  of  two  integer  partitioning）
（ｂ）全ての４つのエッジについてエッジＴＦ＝４である２のべき乗の整数分割法
【００４０】
整数分割法及び２のべき乗の整数分割法を使用すると、各エッジに沿った頂点は、常に均等に離間する。しかしながら、細分割レベルが変わり、三角形が小さなものではない場合、（以下で説明する）望ましくない視覚的アーチファクトが発生する可能性が非常に高い一方で、小さなポリゴンは、追加的なレンダリングオーバーヘッドを招くので、ポリゴンをこのように小さくすることは望ましくない。この影響は、２のべき乗の整数分割法の場合特に大きい。なぜならば、ステップサイズが、かなり大きくなり得るからである。
【００４１】
図１における２番目の４つの例（ｅ）〜（ｈ）は、（例（ａ）〜（ｄ）とは異なり）変化するオフセットで頂点を生成する小数（fractional）分割法を示している：
（ｅ）全ての４つのエッジについてエッジＴＦ＝３．０である奇数（odd）小数分割法
（ｆ）全ての４つのエッジについてエッジＴＦ＝４．０である奇数小数分割法
（ｃ）全ての４つのエッジについてエッジＴＦ＝３．０である偶数（even）小数分割法
（ｂ）全ての４つのエッジについてエッジＴＦ＝４．０である偶数小数分割法
【００４２】
テッセレーション方法を選択する際の他の考慮事項は、エッジテッセレーション設定の所与の組合せに関して生成される三角形の数だけではない。なぜならば、テッセレーションされるモデルのレンダリングコストは、三角形の数だけでなく、それら三角形のアスペクト比にも部分的に依存するからである。通常、グラフィックスシステム（ソフトウェア又はハードウェア）は、最小外周対面積比（perimeter  to  area  ratio）を示す、所与のスクリーン面積（すなわち、スクリーン画素）の「等辺（equilateral）」三角形を、同じ面積を有するがより高い外周対面積比を有する（細長い）三角形よりも速くレンダリングする。さらに、シェーディングの結果等といった値が、頂点において算出され、次いで、三角形にわたって補間されるときに、より多くの等辺形状の三角形を有することは、より少ないアーチファクトをもたらすべきである。
【００４３】
さらなる考慮事項は、三角形のパターンを生成するために使用されるアルゴリズムの複雑さである。アルゴリズムが、（例えば、異なるように処理される必要がある多くの「特別なケース」を有さず）単純及び／又は規則的であり続けることが可能である場合、これは、ハードウェア実装コスト又はソフトウェア実装コストを低減させることができる。
【００４４】
最後の望まれる考慮事項は、テッセレーションパターンにおける回転／鏡映対称性である。例えば、時計回りにＡＢＣＤであり適切なテッセレーション係数を有する頂点により定義される四辺形パッチは、ＢＣＤＡとしてリストされる頂点を有する「等価な」四辺形と同じ最終三角形メッシュを生成することが好ましい。いくつかの既存のテッセレーション方式は、この特性を保証していない（例えば、図１の例（ｅ）及び（ｆ）における「奇数」テッセレーション方法の中央の正方形を参照されたい）。
【００４５】
本説明において、サーフェスパッチとは、四辺形又は三角形である有界の（bounded）２Ｄドメイン（又は、等値線の場合には、１Ｄ線分）にパラメトリックマッピング関数を適用した結果である、通常は有限のＮ次元サーフェス（又は、等値線の場合には、Ｎ次元カーブセグメント）を指す。結果として生じるサーフェス又は等値線は、Ｎ次元であるとみなすことができる。なぜならば、結果として生じるサーフェス又は等値線は、デカルト（又は同次）空間位置決めのための３つ（又は４つ）の次元だけでなく、テクスチャ座標等といった他のパラメータも含み得るからである。上述したように、サーフェスパッチを湾曲させて、サーフェスパッチが表現するオブジェクトのサーフェスにフィットさせる、且つ／あるいは、サーフェスパッチに変位マッピングを適用させる。しかしながら、テッセレーション（すなわち、パッチの細分割）は、ワールド空間においては実行されず（すなわち、湾曲したサーフェスパッチに対しては実行されず）、代わりに、（パラメトリック空間又はパラメータ空間と呼ばれることもある）ドメイン空間において実行される。ドメイン空間において、ドメイン内の任意の位置は、ドメイン空間座標として知られている２つの座標（ｕ，ｖ）により記述することができ、これは、テッセレーションプロセスが、最終的なサーフェスに存在するいずれの湾曲からも独立していることを意味する。
【００４６】
改良されたテッセレーション方法が本明細書で説明される。このテッセレーション方法を説明する際、「パッチ」という用語は、ドメインの境界を定める（bound）、（等値線、三角形、又は四辺形のそれぞれにつき）２つ、３つ、又は４つの頂点の順序付きセットを指すために使用される。したがって、「ドメイン」という用語は、パッチの頂点により境界が規定された２次元空間を指す。「頂点」という用語は、一般に、位置に加えて他の属性を記述するために使用され、ここで、属性は、コンテキストに応じて異なる。例えば、ドメインシェーダからの出力頂点及び入力制御点は、３Ｄ位置に加えて、法線、接線、テクスチャ等といった他のパラメータを含むのに対し、テッセレータ（すなわち、テッセレーション方法において使用されるもの）における頂点は、ドメイン空間座標及び頂点テッセレーション係数を含む。したがって、テッセレータにおける頂点は、最終三角形を形成する結果として生じるＮ次元頂点又は入力制御点と同じではない。
【００４７】
エッジテッセレーション係数を使用しないが、代わりに、四辺形若しくは三角形の各コーナー頂点、又は等値線の各端頂点について定義されるテッセレーション係数を使用する改良されたテッセレーション方法が、本明細書で説明される。これらのテッセレーション係数は、上述した既知の方法において使用されるエッジテッセレーション係数と区別するために、「頂点テッセレーション係数」と呼ばれる。以下でより詳細に説明するように、パッチに関する頂点テッセレーション係数のうちのいずれかが、定められた閾値より大きい場合、テッセレーション（すなわち、パッチの細分割）が実行される。新たな頂点が追加されたときに、新たな頂点は、エッジを２つの部分に細分割し（様々な例において、これらの２つの部分は、エッジが二等分されるように、等しくなり得る）、本方法は、三角形パッチに対して再帰的に作用する。
【００４８】
本明細書に記載の改良されたテッセレーション方法は、既知のテッセレーション方法において生じている以下の問題のうちの１以上（様々な例においては全て）に対処する：
・スナッピング−大量のテッセレーションが瞬間的に生じることの影響。これは、アニメーションにおける一時的な視覚的アーチファクトを生じさせ得るだけでなく、非連続的なレンダリング時間をもたらす。これは、「２のべき乗」の方法（例えば、図１における例（ｃ）及び（ｄ））の場合に特に問題である。
・クラッキング−境界上のエッジの細分割は、Ｔジャンクション（T-junction）を避けるために、一貫している必要がある。変位マッピングを適用した後、Ｔジャンクションは、ほぼ確実に、クラックの出現をもたらす。ビューワは、オブジェクトを通じてこれを確認できる。
・浮遊（swimming）−テッセレーション係数に応じてドメイン空間内で頂点の位置を移動させることは、変位の量が変わるので、ジオメトリ（geometry）が揺らめいている、すなわち、「浮遊している」ように見えることをもたらす。
・過剰／過少テッセレーション−例えば、３２というテッセレーション係数は、エッジが３２個のセグメントに細分割されることを望むものである。これよりも小さなテッセレーション係数は、シーンをモデル化するのに十分なほどにはメッシュが精緻化されないことをもたらし得る。これよりも大きなテッセレーション係数は、メッシュが精緻化され過ぎて相当の演算を用いることをもたらし得る。
・細い三角形−細い三角形をレンダリングすることは、より多くのエイリアシングアーチファクトをもたらし得ることに加えて、高い演算コストをもたらし得る。なぜならば、三角形のレンダリングコストは、そのスクリーン画素面積に依存するだけでなく、スクリーン画素におけるその外周の長さにもある程度依存するからである。したがって、一般的には、特に、ＬＯＤが変わったときに細い三角形が見えなくなり、細長い三角形が本質的には冗長である場合、Ｎ個の「ほぼ等辺の」三角形により表現されるパッチを、Ｎ個の「細長い」三角形により表現される同じパッチの代わりにレンダリングすることがより効果的である。したがって、以下に記載の方法は、最小ルート面積対外周比（Root  Area  to  Perimeter  Ratio）を最大化することを目的とする。
・空間／時間複雑度−いずれのテッセレーション方法も、理想的には、単純で、高度に並列的であるべきであり、時間複雑度及び空間複雑度（すなわち、レンダリングを実行するのに要する時間及びアルゴリズムを実施するために必要とされるメモリの量）を最小化すべきである。また、頂点のサイズに、多過ぎるビットを追加しないようにしなければならない。なぜならば、これは、メモリ要件を増大させるからである。空間複雑度及び時間複雑度はまた、テッセレーションを実行するために必要とされるハードウェアの物理的エリアにも影響を及ぼす。
【００４９】
パッチのコーナーにおけるＴＦを指定することは、テッセレーションされるパッチ内の結果として生じる三角形のサイズ及び形状のより少ない突然の変化をもたらす。なぜならば、エッジの分割は、固定されない（すなわち、エッジＴＦにより指定された値に固定されない）が、代わりに、エッジの各端における頂点ＴＦにより決定され、細分割レベルの間における段階的な遷移をもたらすために元のエッジ（ドメイン空間における１Ｄの観点で）に沿って滑らかに変化するだけでなく、他のＴＦと組み合わせることで、２Ｄの観点で、それがパッチにわたって滑らかに変化することを可能にするからである。これが、図２にグラフィカルに示されている。図２は、ドメイン空間において、既知の方法を使用してエッジにおけるテッセレーション係数を定義したもの（略図２０２）とコーナー（すなわち、頂点）におけるテッセレーション係数を定義したもの（略図２０４）との間の違いを示している。１番目の略図２０２は、２及び４というエッジテッセレーション係数を有する２つの四辺形の場合における、エッジにわたって２のべき乗の定義されたテッセレーション係数を使用した結果である。２番目の略図２０４は、以下に記載の方法を使用し、（頂点２０６、２０８については）２という頂点テッセレーション係数及び（頂点２１０〜２１６については）４という頂点テッセレーション係数を使用している。
【００５０】
四辺形パッチ及び三角形パッチの両方について様々な整数テッセレーション係数及び小数テッセレーション係数を使用したさらなる例が、図３及び図４に示されている。比較の目的のためだけに、これらの例において、所与の数値の頂点テッセレーション係数が、既知のエッジベースのテッセレーション方式において係数の２を底とする対数を取ることとほぼ同レベルであることに留意されたい。各例の下にあるテキストは、四辺形パッチについては（左上，右上，左下，右下）である順序の頂点テッセレーション係数を示しており、三角形パッチについては（上，左下，右下）である順序の頂点テッセレーション係数を示している。これらの例から、パッチ内の細分割レベルの間において段階的な遷移が存在すること、細い三角形が作成されていないこと、及び、頂点が、ドメイン空間においてその最終位置に配置されており、ＬＯＤが増大しても頂点が移動しないこと（頂点は、ドメイン空間において、固定位置においてのみ現れる又は消えること）が確認できる。
【００５１】
以下で説明するように、頂点ベースのテッセレーション係数とともに、この改良されたテッセレーション方法は、望ましくない視覚的アーチファクトを最小限にする（又は、排除する）。なぜならば、全ての頂点（例えば、三角形への細分割の一部として追加される新たな頂点の各々）が、ドメイン空間において、その最終位置に常に追加されるからである。詳細レベル（したがってＴＦ）が変わると、浮遊／搖動（wobbling）アーチファクトを生じさせ得る従来技術とは異なり、頂点は、サーフェスにわたって「スライド」しない結果となる。
【００５２】
図５は、改良されたテッセレーション方法のフロー図である。この方法は、パッチ（入力パッチと呼ばれる）がテッセレータに提供されたときに開始する。（ハードウェアテッセレータであり得る）テッセレータは、入力パッチを受信する（ブロック５０２）。この入力パッチは、図６に示されるように、三角形パッチ６０２、四辺形パッチ６０４、又は等値線パッチ６０６であり得る。四辺形パッチ６０６は、ドメイン空間において、正方形（（０，０）の頂点、（１，０）の頂点、（０，１）の頂点、及び（１，１）の頂点を有する）であるが、ワールド空間（すなわち、３Ｄ環境又は２Ｄ環境）においてこれが表す形状は、異なる形状であり得る。上述したように、テッセレーションは、ワールド空間においてではなく、ドメイン空間において実行される。
【００５３】
入力パッチが、三角形パッチ又は四辺形パッチである場合、パッチは、「前処理」段階（ブロック５０４）を経て、テッセレーションアルゴリズムが、入力パッチ内の三角形パッチに再帰的に適用される（ブロック５０６）。この前処理段階は、テッセレーションが向き（orientation）から独立したものであることを確実にするために使用され、結果として、等値線パッチ６０６のためには必要とされない（アルゴリズムは、対称的に作用し、したがって、結果として生じるテッセレーションの向き依存性はない）。
【００５４】
入力パッチが、三角形パッチ６０２である場合、前処理段階（ブロック５０４）は、１つの三角形パッチ６０２（これは、入力三角形パッチと同じであり、テッセレーションは必要とされない）又は３つの三角形パッチ６０８〜６１０を出力する。入力パッチが、四辺形パッチ６０４である場合、前処理段階（ブロック５０４）は、４つの三角形パッチ６１２〜６１５を出力する。入力パッチが、等値線パッチである場合、（上述した理由により）前処理は必要とされず、テッセレーションアルゴリズムが、入力等値線パッチに再帰的に適用される（ブロック５０８）。
【００５５】
図７〜図１０は、改良されたテッセレーション方法の段階をより詳細に示している。説明される方法では、以下の表記が使用される：
・ＴＨＲＥＳ−頂点ＴＦが、２を底とする対数を取ったテッセレーションの量の値である場合、例えば、０．０又は０．５に設定され得る、テッセレーションのための閾値。
・ＶＥＲＴＥＸ．ＴＦ−任意の実数であり得る、頂点のテッセレーション係数（しかしながら、様々な例においては、テッセレーション係数が負でない実数であるように、負値は、０にクランプされ得る）。様々な例において、頂点ＴＦは、最小で０．０（テッセレーションなし）及び最大で６．０（最大のテッセレーション）であり、２を底とする対数を取ったテッセレーションの量の値である。例えば、５．０というテッセレーション係数は、３２の細分割に対応する。しかしながら、他の例においては、最大頂点ＴＦは、６．０（すなわち、２を底とする対数が使用されない場合は６４）より大きくてもよい。
・ＩＮＴＥＲＶＡＬ−０でない量。各反復の後、ＶＥＲＴＥＸ．ＴＦがこの量だけ低減される。頂点ＴＦが、２を底とする対数を取ったテッセレーションの量の値である場合、例えば、０．５に設定され得る。
・ＭＥＡＮ（）−２つ、３つ、又は４つの頂点テッセレーション係数の「平均値」を与える対称関数。これは、算術平均であってもよいし、代替関数であってもよい。そのような１つの代替関数が、以下でより詳細に説明される。
以下の説明の目的上、頂点ＴＦは、２を底とする対数を取ったテッセレーションの量である。しかしながら、頂点ＴＦは、代替的に、その実際のフル値（full  value）として記述されてもよく、その場合、以下に記載される頂点ＴＦの算出とパラメータＴＨＲＥＳ及びパラメータＩＮＴＥＲＶＡＬの値とが、これに応じて変更されることが、理解されよう。しかしながら、２を底とする対数が使用される場合、ハードウェア実装がかなり高速になるので、テッセレータへの入力が、（２を底とする対数を使用するのではなく）実際の頂点ＴＦを含む例においては、入力頂点ＴＦは、本明細書に記載の改良されたテッセレーション方法を実施する前に、２を底とする対数に変換され得る。
【００５６】
図７は、三角形入力パッチ６０２に関する前処理段階５０４のフロー図であり、図６に示されるように、三角形パッチの頂点は、「ＴＯＰ（上）」、「ＲＩＧＨＴ（右）」、及び「ＬＥＦＴ（左）」とラベル付けされ得る。どの頂点が「ＴＯＰ」であるかの選択は、任意的であり、この前処理段階は、アルゴリズムが回転的且つ鏡映的に対称であることを確実にする（すなわち、この前処理段階において頂点が考慮される順序にかかわらず、同じテッセレーション結果が達成されることになる）。
【００５７】
図７に示されるように、三角形パッチ（ＴＯＰ，ＲＩＧＨＴ，ＬＥＦＴ）６０２がテッセレータに提供され、いずれかの頂点テッセレーション係数が閾値ＴＨＲＥＳより大きい場合（ブロック７０２において「Ｙｅｓ」）、テッセレーションが生じる。「ＭＩＤ（中間）」と表記されている新たな頂点６１６が、三角形の中心（例えば、重心）に形成され（ブロック７０４）、新たなＭＩＤ頂点の頂点ＴＦが、
ＭＩＤ．ＴＦ＝ＭＥＡＮ（ＴＯＰ．ＴＦ，ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）・・・・・（１）
であるように算出される（ブロック７０６）。ここで、ＭＩＤ．ＴＦは、ＭＩＤ頂点の頂点ＴＦであり、ＴＯＰ．ＴＦは、ＴＯＰ頂点の頂点ＴＦであり、ＬＥＦＴ．ＴＦは、ＬＥＦＴ頂点の頂点ＴＦであり、ＲＩＧＨＴ．ＴＦは、ＲＩＧＨＴ頂点の頂点ＴＦである。次いで、何らかのテッセレーションが生じたときに、全ての４つのテッセレーション係数（すなわち、ＴＯＰ．ＴＦ、ＬＥＦＴ．ＴＦ、ＲＩＧＨＴ．ＴＦ、及びＭＩＤ．ＴＦ）が、パラメータＩＮＴＥＲＶＡＬだけ（すなわち、２を底とする対数表記が使用される場合、ＩＮＴＥＲＶＡＬを減算することによって）低減される（ブロック７０８）。
【００５８】
次いで、３つの三角形パッチ（ＭＩＤ，ＲＩＧＨＴ，ＬＥＦＴ）６１０、（ＭＩＤ，ＬＥＦＴ，ＴＯＰ）６０９、及び（ＭＩＤ，ＴＯＰ，ＲＩＧＨＴ）６０８が形成され（ブロック７１０）、これらの三角形パッチが、以下で説明するように、（ブロック５０６において）テッセレーションアルゴリズムを使用してテッセレーションされる。
【００５９】
頂点テッセレーション係数のいずれも、閾値ＴＨＲＥＳより大きくない場合（ブロック７０２において「Ｎｏ」）、テッセレーションは生じない。この状況において、パッチは、１つのプリミティブとしてテッセレータを単に通過するだけであり（ブロック７１２）、この方法は、過剰にテッセレーションしない。
【００６０】
図８は、四辺形入力パッチ６０４に関する前処理段階５０４のフロー図であり、図６に示されるように、四辺形パッチの頂点は、「ＴＬＥＦＴ（左上）」、「ＴＲＩＧＨＴ（右上）」、「ＢＲＩＧＨＴ（右下）」、及び「ＢＬＥＦＴ（左下）」とラベル付けされ得る。どの頂点が「上」でありどの頂点が「下」であるかの選択は、任意的であり、この前処理段階は、アルゴリズムが回転的且つ鏡映的に対称であることを確実にする（すなわち、この前処理段階において頂点が考慮される順序にかかわらず、同じテッセレーション結果が達成されることになる）。
【００６１】
図８に示されるように、四辺形パッチ（ＴＬＥＦＴ，ＴＲＩＧＨＴ，ＢＬＥＦＴ，ＢＲＩＧＨＴ）６０４がテッセレータに提供されたときに、「ＭＩＤ」と表記されている新たな頂点６１８が、四辺形の中心に、すなわち、ドメイン空間座標（０．５，０．５）に形成され（ブロック８０４）、新しいＭＩＤ頂点の頂点ＴＦが、
ＭＩＤ．ＴＦ＝ＭＥＡＮ（ＴＬＥＦＴ．ＴＦ，ＴＲＩＧＨＴ．ＴＦ，ＢＬＥＦＴ．ＴＦ，ＢＲＩＧＨＴ．ＴＦ）・・・・・（２）
であるように算出される（ブロック８０６）。ここで、ＭＩＤ．ＴＦは、ＭＩＤ頂点の頂点ＴＦであり、ＴＬＥＦＴ．ＴＦは、ＴＬＥＦＴ頂点の頂点ＴＦである、等である。次いで、何らかのテッセレーションが生じたときに、全ての５つのテッセレーション係数（すなわち、ＴＬＥＦＴ．ＴＦ、ＴＲＩＧＨＴ．ＴＦ、ＢＲＩＧＨＴ．ＴＦ、ＢＬＥＦＴ．ＴＦ、及びＭＩＤ．ＴＦ）が、パラメータＩＮＴＥＲＶＡＬだけ（すなわち、２を底とする対数表記が使用される場合、ＩＮＴＥＲＶＡＬを減算することによって）低減される（ブロック８０８）。
【００６２】
次いで、４つの三角形パッチ（ＭＩＤ，ＴＬＥＦＴ，ＴＲＩＧＨＴ）６１２、（ＭＩＤ，ＴＲＩＧＨＴ，ＢＲＩＧＨＴ）６１３、（ＭＩＤ，ＢＲＩＧＨＴ，ＢＬＥＦＴ）６１４、及び（ＭＩＤ，ＢＬＥＦＴ，ＴＬＥＦＴ）６１５が形成され（ブロック８１０）、これらの三角形パッチが、以下で説明するように、（ブロック５０６において）テッセレーションアルゴリズムを使用してテッセレーションされる。
【００６３】
図９は、前処理段階により出力された３つ又は４つの三角形パッチの各々へのアルゴリズムの再帰的適用のフロー図であり、これは、図１０に示される三角形を参照して説明され得る。図１０に示されるように、三角形パッチは、時計回り方向の３つの頂点（ＴＯＰ，ＲＩＧＨＴ，ＬＥＦＴ）の順序付きセットである。１番目の頂点は、常に「ＴＯＰ」頂点であり、（前処理段階により出力された）最初の三角形パッチについて、この「ＴＯＰ」頂点は、前処理（ブロック７０４、８０４）中に追加された「ＭＩＤ」頂点６０８、６１８に対応することに留意されたい。
【００６４】
図９に示されるように、三角形パッチ１０００（最初の反復において、最初のパッチ９００である）を所与として、テッセレーションは、
ＬＥＦＴ．ＴＦ＞ＴＨＲＥＳ又はＲＩＧＨＴ．ＴＦ＞ＴＨＲＥＳ・・・・・（３）
である場合、及び、この場合に限り、生じる（ブロック９０２において「Ｙｅｓ」）。ここで、ＬＥＦＴ．ＴＦは、ＬＥＦＴ頂点の頂点ＴＦであり、ＲＩＧＨＴ．ＴＦは、ＲＩＧＨＴ頂点の頂点ＴＦである。
【００６５】
ＬＥＦＴ．ＴＦ＞ＴＨＲＥＳ又はＲＩＧＨＴ．ＴＦ＞ＴＨＲＥＳである場合（ブロック９０２において「Ｙｅｓ」）、新たな頂点ＭＩＤ１００２が形成される（ブロック９０４）。この頂点ＭＩＤは、ドメイン空間における（線１００４により示される）エッジＬＥＦＴ−＞ＲＩＧＨＴを２つの部分に分割する。次いで、新たなＭＩＤ頂点の頂点テッセレーション係数が、
ＭＩＤ．ＴＦ＝ＭＥＡＮ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）・・・・・（４）
であるように算出される（ブロック９０６）。ここで、ＭＩＤ．ＴＦは、ＭＩＤ頂点の頂点ＴＦであり、ＬＥＦＴ．ＴＦは、ＬＥＦＴ頂点の頂点ＴＦであり、ＲＩＧＨＴ．ＴＦは、ＲＩＧＨＴ頂点の頂点ＴＦである。慣習のため、ＭＩＤが細分割するエッジを定義する頂点ＬＥＦＴ及び頂点ＲＩＴＨＴは、ＭＩＤの「親」と表記される。
【００６６】
多くの例において、新たな頂点ＭＩＤは、ドメイン空間におけるエッジＬＥＦＴ−＞ＲＩＧＨＴを二等分する二等分部（bisector）として追加される。しかしながら、他の例においては、新たな頂点ＭＩＤは、ドメイン空間におけるエッジＬＥＦＴ−＞ＲＩＧＨＴの上にあるがこのエッジを正確には二等分しない位置に、追加されてもよい。様々な例において、エッジに沿ったＭＩＤの位置は、例えば、親頂点の頂点ＴＦを使用して、重み付けされ得る。
【００６７】
２つのサブ三角形パッチ（ＭＩＤ，ＬＥＦＴ，ＴＯＰ）１００６及び（ＭＩＤ，ＴＯＰ，ＲＩＧＨＴ）１００８が形成され（ブロック９０８及び９１０）、各三角形パッチ１００６、１００８における全てのテッセレーション係数が、パラメータＩＮＴＥＲＶＡＬだけ（すなわち、２を底とする対数表記が使用される場合、ＩＮＴＥＲＶＡＬを減算することによって）低減される（ブロック９１２）。次いで、この方法は、これらのパッチの各々に対して再帰的処理を行う。ブロック９０８又はブロック９１０において作成された三角形パッチに対してこの方法を実行するとき、「ＴＯＰ」頂点は、このパッチを作成するために（ブロック９０４において）追加された「ＭＩＤ」頂点１００２に対応し、これは、親パッチの「ＴＯＰ」頂点とは異なることになる（例えば、パッチ１０００は、パッチ１００６及び１００８の親とみなすことができ、パッチ１０００の「ＴＯＰ」頂点１０１０は、パッチ１００６及び１００８の各々の「ＴＯＰ」頂点１００２と同じではない）。
【００６８】
いかなる段階においてもテッセレーションが生じない場合（ブロック９０２において「Ｎｏ」）、（パッチである）プリミティブは、バッファ、例えば、インデックスバッファに追加される（ブロック９１４）。
【００６９】
上述したように、図９の方法は、前処理段階（ブロック５０４）により生成された３つ又は４つの三角形パッチの各々に再帰的に適用され、それら最初のパッチ（３つ又は４つの三角形パッチ）の細分割により作成される任意のパッチに再帰的に適用される。
【００７０】
頂点テッセレーション係数は有限であり、ＩＮＴＥＲＶＡＬが０でない定数であるので、最終的に、（全ての三角形パッチにおける）全ての頂点テッセレーション係数が、最大でＴＨＲＥＳになり、プロセスが終了する。
【００７１】
図１０において確認できるように、新たに追加されたＭＩＤ頂点は、（ブロック９０８及び９１０において）形成された２つのパッチの両方における頂点であり、両方のパッチにおいて、この頂点は、「ＴＯＰ」頂点であるとみなされる。新たに追加されたＭＩＤ頂点の頂点テッセレーション係数の現在の値は、サブパッチの両方に対して再帰的処理が行われるときに、使用されなければならない。例示的な実装例において、これは、各サブパッチに関する頂点ＴＦを複製すること、又は、任意のパッチに関して、その２つのサブパッチに対する再帰的処理の後、各頂点ＴＦが、パラメータＩＮＴＥＲＶＡＬだけ低減される最終ステップをアルゴリズムに有することのいずれかによって確実にすることができる。
【００７２】
図９において使用される同じアルゴリズムが、（ブロック５０８において）等値線パッチにも適用され得るが、上述したように、前処理は必要とされない。等値線パッチの場合、アルゴリズムは、図６を参照して説明され得るように、三角形ではなく線（すなわち、等値線及びサブ等値線）に適用される。
【００７３】
等値線パッチ（ＬＥＦＴ，ＲＩＧＨＴ）６０６が、（最初のパッチ９００として）テッセレータに提供されたとき、ＬＥＦＴ．ＴＦ又はＲＩＧＨＴ．ＴＦがＴＨＲＥＳより大きい場合（ブロック９０２において「Ｙｅｓ」）、この線が細分割される。ＬＥＦＴ．ＴＦ又はＲＩＧＨＴ．ＴＦがＴＨＲＥＳより大きい場合（ブロック９０２において「Ｙｅｓ」）、ドメイン空間においてＬＥＦＴ−＞ＲＩＧＨＴ等値線６０６を細分割する（例えば、二等分する）新たなＭＩＤ頂点６２０が追加される（ブロック９０４）。新たに追加されたＭＩＤ頂点の頂点ＴＦが、
ＭＩＤ．ＴＦ＝ＭＥＡＮ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ）・・・・・（５）
であるように算出される（ブロック９０６）。ここで、ＭＩＤ．ＴＦは、ＭＩＤ頂点の頂点ＴＦであり、ＬＥＦＴ．ＴＦは、ＬＥＦＴ頂点の頂点ＴＦであり、ＲＩＧＨＴ．ＴＦは、ＲＩＧＨＴ頂点の頂点ＴＦである。
【００７４】
ＭＩＤ頂点６２０の追加は、元の等値線６０６を２つのサブ等値線６２２、６２４に分割し（ブロック９０８及び９１０において形成される）、各頂点ＴＦは、２＊ＩＮＴＥＲＶＡＬだけ（例えば、２を底とする対数表記が使用される場合、２＊ＩＮＴＥＲＶＡＬを減算することによって）低減される（ブロック９１２）。これは、三角形パッチが正しい量の細分割を生じさせるよりも速く低減させることに留意されたい。次いで、この方法は、これらのサブ等値線の各々に対して再帰的処理を行い、全ての頂点テッセレーション係数が最大でＴＨＲＥＳになると終了する。
【００７５】
上述した改良されたテッセレーション方法は、ＭＥＡＮ（）関数を使用する。いくつかの例において、この関数は、頂点テッセレーション係数の算術平均であり得、これは、ある頂点から別の頂点に移動するときにジオメトリの滑らかな導入をもたらすことになる一方、このような関数は、しばしば、Ｔジャンクションが現れることと、したがって所定の値の頂点ＴＦ（例えば、パッチにわたる頂点ＴＦの差がかなり極端である場合）についてはクラッキングと、をもたらすことになる。結果として、多くの例において、ＭＥＡＮ（）に関して、代替関数が以下として使用される：
ＭＥＡＮ（ＴＦ１，ＴＦ２，．．．）＝ＭＩＮ（ＡＶＧ（ＴＦ１，ＴＦ２，．．．），ＭＩＮ（ＴＦ１，ＴＦ２，．．．）＋ＩＮＴＥＲＶＡＬ）・・・・・（６）
ここで、ＡＶＧ（）は、括弧内の値のリスト（例えば、上記の例における頂点ＴＦ１、頂点ＴＦ２、．．．）の算術平均であり、ＭＩＮ（）は、括弧内の値のリスト（例えば、上記の例における頂点ＴＦ１、頂点ＴＦ２、．．．）のうちの最小である。
【００７６】
上記で与えられたＭＥＡＮ（）関数は、クラッキングがないことを確実にする、算術平均に最も近い関数であり、これは、以下に記載されるように例証され得る。
【００７７】
上述したように、テッセレーションにおけるＴジャンクションは、クラッキングをもたらす可能性があり、したがって、ドメインの内側で又は２つのドメインにより共有されるエッジに沿って、Ｔジャンクションが生じ得ないことを確実にすることが望まれ得る。本明細書に記載の改良されたテッセレーション方法は、任意のエッジの細分割がエッジ端頂点のテッセレーション係数によってのみ定義される（他によっては定義されない）ことを保証することにより、これを確実にする。したがって、エッジが２つのドメイン（すなわち、２つの隣接ドメイン）により共有される場合、これらのドメインは、その２つの端頂点（及びそれらの頂点テッセレーション係数）を共有し、同じ細分割がもたらされることになる。
【００７８】
上述したように、細分割は、端頂点テッセレーション係数が閾値より大きい場合に限り生じるので、余分な細分割は生じ得ない。唯一のあり得る問題は、前のレベルの細分割が前もって生じなかったことに起因して、細分割が生じるべきときに細分割が生じない場合である。したがって、この問題を回避するために、図１０に示されるようにラベル付けされた頂点を有する三角形パッチ１０００を参照する以下の条件が満たされることが必要である：
ＴＯＰ−＞ＬＥＦＴエッジ上で必要とされるテッセレーションは、ＬＥＦＴ−＞ＲＩＧＨＴエッジ上で生じるテッセレーションを暗示する、すなわち、
（ＴＯＰ．ＴＦ＞ＴＨＲＥＳ又はＬＥＦＴ．ＴＦ＞ＴＨＲＥＳ）
＝＞（ＬＥＦＴ．ＴＦ＋ＩＮＴＥＲＶＡＬ＞ＴＨＲＥＳ又はＲＩＧＨＴ．ＴＦ＋ＩＮＴＥＲＶＡＬ＞ＴＨＲＥＳ）
である。この条件は、一般性を失うことなく、対称性に起因して左側エッジだけを考慮する。
【００７９】
次に、上記で示されたＭＥＡＮ（）関数がこの条件を満たすことが例証され得る。
【００８０】
ケース１：ＬＥＦＴ．ＴＦ＞ＴＨＲＥＳである場合、ＬＥＦＴ．ＴＦ＋ＩＮＴＥＲＶＡＬ＞ＴＨＲＥＳである。
【００８１】
ケース２：ＴＯＰ．ＴＦ＞ＴＨＲＥＳは、以下の２つのサブケースを有する。
【００８２】
ケース２．１：（ＴＯＰが、図１０におけるパッチ１０００に示されるようなパッチの中間頂点であり、これが、図６における頂点６１６又は６１８に対応する、すなわち、ＴＯＰ．ＴＦ＝ＭＥＡＮ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ，．．．）であり、）したがって、
ＴＨＲＥＳ＜ＴＯＰ．ＴＦ
＝ＭＩＮ（ＡＶＧ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ，．．．），ＭＩＮ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ，．．．）＋ＩＮＴＥＲＶＡＬ）
＜＝ＭＩＮ（ＬＥＦＴ．ＴＦ，ＲＩＧＨＴ．ＴＦ，．．．）＋ＩＮＴＥＲＶＡＬ
＜＝ＬＥＦＴ．ＴＦ＋ＩＮＴＥＲＶＡＬ
ゆえに、ＬＥＦＴ．ＴＦ＋ＩＮＴＥＲＶＡＬ＞ＴＨＲＥＳである。
【００８３】
ケース２．２：（ＴＯＰが、図１１におけるパッチ１１００に示されるように、端頂点としてＬＥＦＴを使用して細分割により作成され、ここで、ＴＯＰ１１０２は、エッジＬＥＦＴ−＞ＯＴＨＥＲの細分割により作成される、すなわち、ＴＯＰ．ＴＦ＝ＭＥＡＮ（ＬＥＦＴ．ＴＦ，．．．）であり、）したがって、
ＴＨＲＥＳ＜ＴＯＰ．ＴＦ
＝ＭＩＮ（ＡＶＧ（ＬＥＦＴ．ＴＦ，．．．），ＭＩＮ（ＬＥＦＴ．ＴＦ，．．．）＋ＩＮＴＥＲＶＡＬ）
＜＝ＭＩＮ（ＬＥＦＴ．ＴＦ，．．．）＋ＩＮＴＥＲＶＡＬ
＜＝ＬＥＦＴ．ＴＦ＋ＩＮＴＥＲＶＡＬ
ゆえに、ＬＥＦＴ．ＴＦ＋ＩＮＴＥＲＶＡＬ＞ＴＨＲＥＳである。
【００８４】
ケース２．２において、同じロジックを、ＴＯＰ．ＴＦ＝ＭＥＡＮ（ＲＩＧＨＴ．ＴＦ，．．．）（これは、図１１に示されるものの鏡映（reflection）に対応する）に適用して、所望されるように、ＲＩＧＨＴ．ＴＦ＋ＩＮＴＥＲＶＡＬ＞ＴＨＲＥＳを導出することができる。関数の選択は、最小値＋ＩＮＴＥＲＶＡＬを超えるいかなる関数もこれらの不等式を常に満たすわけではない点において、最適であることにも留意されたい。したがって、ＭＥＡＮ（）関数は、算術平均により近い何らかの関数であり得ない。
【００８５】
改良されたテッセレーション方法が、図１２に示されるように、２を底とする対数表記並びにＴＨＲＥＳ＝０．０及びＩＮＴＥＲＶＡＬ＝０．５を使用した、テッセレーション係数（２，１，１，１）を有する四辺形１２０２をテッセレーションする一例として、さらに説明され得る。前処理段階（ブロック５０４及び図８）において、テッセレーション係数１．２５（ブロック８０６において算出される算術平均値）を有する中間頂点１２０４が追加される（ブロック８０４）。図１２における２番目の例１２０６に示されるように、４つの三角形パッチが、各パッチの上頂点としてこの中間頂点を有するように形成され（ブロック８１０）、（ブロック８０８において）各ＴＦが０．５だけ低減される（これは、ブロック８１０の前又は後に実行され得る）。
【００８６】
三角形パッチの各々に対する最初の再帰的処理（ブロック５０６及び図９）において、図１２における３番目の例１２０８に示されるように、（０．５は閾値ＴＨＲＥＳ＝０．０より大きいので）各下エッジが細分割され（ブロック９０４）、（新たな頂点ＴＦを有する）４つの新たな頂点及び８つの新たなパッチが形成される（ブロック９０４〜９１０）。次いで、図１２における４番目の例１２１０に示されるように、全てのテッセレーション係数が、ＩＮＴＥＲＶＡＬの値である０．５だけ低減される（ブロック９１２）。
【００８７】
８つの三角形パッチの各々に対する次の再帰的処理において、図１２における５番目の例１２１２に示されるように、（０．２５は閾値ＴＨＲＥＳ＝０．０より大きいので、）８つの三角形パッチの各々の下エッジが、新たな頂点を追加し、それら新たな頂点の頂点ＴＦを算出し、１６個の新たなパッチを形成することにより、細分割される（ブロック９０４）。次いで、全てのテッセレーション係数が、再度０．５だけ低減され（ブロック９１２）、さらなる再帰的処理において、（図１２における最後の例１２１４に示されるように）最終的な２つの細分割が行われる。ここで、左上頂点の頂点テッセレーション係数（０．５）のみが閾値より大きい。このステップの後、全ての頂点テッセレーション係数が、最大で０であり（図１２に示されるように、他の頂点ＴＦは負であり得る）、プロセスは終了する。
【００８８】
上述した改良されたテッセレーション方法は、各パッチを独立して扱うので、高度の並列性をもって実装することができる。任意のテッセレーション方法と同様、ドメイン境界に沿って共有される頂点は、複製されないようにキャッシュされ得る。本方法は再帰的であるので、必要とされるチップ（例えば、シリコン）のスペース及びメモリの量は最小限である。例示的な要件の要点が、以下に記載される：
【表１】
2020170559.tif 000003
【００８９】
本提案方法に必要とされる付加的な頂点メンバは、各入力頂点の固定点テッセレーション係数である。Ｍは、出力頂点バッファの現在のサイズであり、α（）は、バッファがどのように構造化されるかに依存するＭの何らかの関数である。α（）は、一般的には、ｌｏｇ（Ｍ）とＭとの間の何かである。
【００９０】
上述したように、等辺三角形又は高ルート面積対外周比を有する三角形をレンダリングするときに、レンダリングするサイクルの最小数が達成される。同様に、そのルート面積対外周比がなくなったときに、例えば劣化三角形（degenerate  triangle）といった最悪のパフォーマンスが生じる。エッジ長ａ、ｂ、及びｃを有する所与の三角形パッチに関して、本提案方法は、図１３に示されるように、（比ａ：ｂ：ｃの辺を有する）Ａ、（比ａ：ｄ：ｃ／２の辺を有する）Ｂ、（比ｄ：ｂ：ｃ／２の辺を有する）Ｃ、及び（比ａ／２：ｂ／２：ｄの辺を有する）Ｄという、（類似性に応じた）三角形の最大４つの異なるクラスをもたらす。パッチが二等辺である（すなわち、ａ＝ｂである）場合、ＢはＣに類似するものであり、したがって、３つのクラスだけが存在する。パッチが、二等辺であり、且つ、上頂点が直角である場合、全ての類似性が存在する（すなわち、三角形の１つのクラスだけが存在する）。全ての場合において、三角形クラスの数は有限であり。したがって、最小ルート面積対外周比が制限され、パッチ自体が劣化したものでない限り、最小ルート面積対外周比はなくなり得ない。対照的に、多くの既知のテッセレーション方法は、ルート面積対外周比の下側限界を有さず、実際、三角形が見えなくなることが、多数生じる。
【００９１】
図１４は、本明細書に記載の改良されたテッセレーション方法を使用して得られた結果と既知のテッセレーション方法である（図１を参照して上述した）奇数小数分割法を使用して得られた結果との比較を示している。８つの別個の比較１４０１〜１４０８が図示されており、改良されたテッセレーション方法を使用して得られた各時間の結果が、左側に図示されており、奇数小数分割法を使用して得られた各時間の結果が、右側に示されている。
【００９２】
１番目の比較１４０１に示されるように、改良されたテッセレーション方法は、テッセレーションが向きから独立していることを確実にするために、奇数小数分割法よりも２つ多いプリミティブをもって開始する。上述したように、これら４つの三角形プリミティブは、前処理段階（ブロック５０４）において生成される。改良されたテッセレーション方法における（ブロック５０６での）アルゴリズムを使用したテッセレーションは、２番目の比較１４０２に示されるように、２つのパッチを類似する三角形に分割することにより開始する。対照的に、（右側に示される）奇数小数分割法において、テッセレーションは、全てがほぼ冗長である１２個の新たな細い三角形を追加し（これらの三角形は、２番目の比較１４０２においてはっきりと見えるように、ドメインのほぼ全体が２つのプリミティブだけによって構成されるほど非常に細いので、これは、これらの細い三角形が、変位後に、ドメインの大きな部分にいかなる詳細も追加しないことを意味する）、次いで、比較１４０３に示されるように、さらに多くの三角形を追加することにより開始する。
【００９３】
その後の比較１４０３〜１４０８に示されるように、改良されたテッセレーション方法は、テッセレーション係数の増加を近似するために、半分の面積の類似する三角形を追加し続ける。奇数小数分割法は、同じことを達成するために、過度の初期に冗長であった細い三角形を追加し続ける。改良されたテッセレーション方法は、ドメイン空間において移動しない頂点を導入する。対照的に、奇数小数分割法において、頂点は、古いものの上で始まって所定位置に伸び、結果として、ジオメトリは、波打っているように見える。改良されたテッセレーション方法は、最後の比較１４０８に示されるように、十字模様パターンに落ち着いているのに対し、奇数小数分割法は、全ての奇数ＬＯＤ／ＴＦで頂点の全ての行及び列を追加し続け、これが、今度は、ドメイン空間における全ての頂点を移動させる。
【００９４】
特にアニメーションにおいて、パッチのコーナーの頂点ＴＦとはＬＯＤにおいて異なる、そのパッチの中心ＴＦをユーザが指定することを可能にすることが、時に望ましい場合がある。これは、例えば生物のツノ（spike）の場合において高さマップが中間部に非常に鋭いジャンプを有する場合、例えば、四辺形パッチ又は三角形パッチにわたってテクスチャに関連付けられた高さマップをより良く近似するために使用され得る。図１５は、（上述した）図５の方法に対する変形例を示しており、この変形例は、四辺形パッチ又は三角形パッチの中心ＴＦ（ＣＥＮＴＲＥ．ＴＦ）の使用を可能にする、任意的なさらなる前処理段階（ブロック１５０２）を追加している。図１５に示されるように、（ブロック１５０２における）この追加的な前処理段階は、上述した（ブロック５０４における）前処理段階の前に実施され、（四辺形又は三角形であり得る）入力パッチを分割する。元々の前処理段階（ブロック５０４）とは異なり、追加的な前処理段階（ブロック１５０２）は、等値線にも適用され得る。しかしながら、これは、このコンテキストにおいてあまり有用ではない。等値線の場合、等値線は細分割され、新たに追加される中間頂点が、中心ＴＦに割り当てられる。次いで、細分割が、上述したように、２つのサブ等値線（例えば、ＬＥＦＴ−ＭＩＤ及びＭＩＤ−ＲＩＧＨＴ）に対して続けられる。
【００９５】
追加的な前処理段階（ブロック１５０２）は、図１６及び図１７を参照して説明され得る。図１６は、四辺形入力パッチ１６０２又は三角形入力パッチ１６０４へのこの段階の適用の概略図を示しており、図１７は、追加的な前処理段階のフロー図を示している。中心テッセレーション係数が有効にされた状態で、ユーザは、パッチごとの中心ＴＦと各コーナー頂点の頂点ＴＦ（三角形パッチについては３つ、四辺形パッチについては４つ）とをテッセレータに提供しなければならない。
【００９６】
図１６に示されるように、追加的な前処理段階は、四辺形入力パッチ１６０２を４つの四辺形パッチ１６０６〜１６０９に分割し、三角形入力パッチ１６０４を３つの四辺形パッチ１６１０〜１６１２に分割する。これを実現するために、四辺形入力パッチ１６０２を前処理することは、５つの新たな頂点、すなわち、中心ＴＦ（ＣＥＮＴＲＥ．ＴＦ）を有する中心頂点１６１４（全ての４つのサブドメイン１６０６〜１６０９により共有される）、中間−上頂点１６１６、中間−右頂点１６１８、中間−下頂点１６２０、及び中間−左頂点１６２２を追加すること（ブロック１７０２）を必要とする。これらのテッセレーション係数が、新たに追加された頂点の各々について、新たに追加された頂点の隣接コーナーＴＦのＭＥＡＮ（）を取ることにより算出される（ブロック１７０６）。様々な例において、式（６）により与えられるＭＥＡＮ（）関数が使用され得る。なぜならば、この関数は、より一貫したテッセレーションパターンをもたらすからである。しかしながら、他の例においては、算術平均が使用されてもよい。
【００９７】
三角形入力パッチ１６０４を前処理することは、４つの新たな頂点、すなわち、中心ＴＦ（ＣＥＮＴＲＥ．ＴＦ）を有する中心頂点１６２４（全ての３つのサブドメインにより共有される）、中間−右頂点１６２６、中間−下頂点１６２８、及び中間−左頂点１６３０を追加すること（ブロック１７０４）を必要とする。これらのテッセレーション係数が、新たに追加された頂点の各々について、新たに追加された頂点の隣接コーナーＴＦのＭＥＡＮ（）を取ることにより与えられる（ブロック１７０６において算出される）。上述したように、様々な例において、式（６）により与えられるＭＥＡＮ（）関数が使用され得る。なぜならば、この関数は、より一貫したテッセレーションパターンをもたらすからである。しかしながら、他の例においては、算術平均が使用されてもよい。
【００９８】
追加的な前処理段階の最後の段階（ブロック１７０８）は、各テッセレーション係数を低減させる。様々な例において、各ＴＦは、２＊ＩＮＴＥＲＶＡＬだけ低減される。（ブロック５０４の元々の前処理段階への入力の前の）ＴＦのこの低減は、正しい数の細分割がパッチの各境界エッジ上で行われることと、テッセレーションが生じたことを示すことと、を確実にする。
【００９９】
追加的な前処理段階（ブロック１５０２）において、元の入力パッチを３つ又は４つの四辺形パッチに細分割すると、これらの３つ又は４つの四辺形パッチ（ブロック１７０８において算出された頂点ＴＦを有する）は、これらが元の入力パッチであるかのように元々の前処理段階（ブロック５０４）に入力され、前述の方法が、上述したように進む。図１８は、図１５の方法を使用して得られ得る様々な例示的なテッセレーション結果を示している。
【０１００】
追加的な前処理段階（ブロック１５０２及び図１７）が、少なくとも１回、０．０というＴＦを有する場合でも各ドメインエッジを細分割するという事実に起因して、任意の１つの結ばれているメッシュは、クラッキングが生じ得ないことを確実にするために、完全に中心ＴＦを有するか又は有さないかのいずれかでテッセレーションされるべきである（すなわち、１つの結ばれているメッシュにおける全てのパッチは、同じ方法を使用するべきである、すなわち、これらは全て、図５の方法又は図１５の方法を使用するべきであり、図５の方法を使用したいくつかの入力パッチと図１５の方法を使用した他の入力パッチとを有するべきではない）。
【０１０１】
本明細書に記載の改良されたテッセレーション方法は、既知のテッセレーション方法において生じている上記で詳述した問題のうちの１以上に対処する。様々な例において、改良されたテッセレーション方法は、以下のように、上記で詳述した問題の多く又は全てに対処することができる：
・スナッピングがない−改良されたテッセレーション方法を使用すると、滑らかな遷移を生じさせるために、テッセレーション係数が増加するときに、ジオメトリが小インクリメントだけ追加される。これは、レンダリング時間の予測に役立つ。
・クラッキングがない−上記で例証されたように、改良されたテッセレーション方法は、ドメイン内のＴジャンクション又はドメインの境界に沿ったＴジャンクションを生じさせない。
・浮遊がない−テッセレータにより導入される各頂点は、テッセレーション係数が増加するとき、そのドメイン空間位置を維持し、したがって、「浮遊」アーチファクトがない。
・過剰／過少テッセレーションがない−エッジの各端における整数頂点テッセレーション係数ｔが、２ｔの細分割に対応する。また、四辺形上の平均頂点テッセレーション係数ｔは、近似的に、２２ｔ個の頂点とその２倍の多さのプリミティブと、に対応し、これは最小である。同様に、三角形パッチは、（３／４）２２ｔ個の頂点とその２倍の多さのプリミティブとに対応する。
・細い三角形がない−上述したように、改良されたテッセレーション方法は、パッチごとの三角形の４つの（又は３つ以下の）クラスだけを生じさせ、これは、パッチごとのルート面積対外周比の最小値の境界を定める。
・空間／時間複雑度−アルゴリズムは、（図９に示されるように）再帰的であり、各サブドメイン／パッチは、独立して扱うことができ、これは、実質的な並列性をサポートする。入力頂点は、頂点テッセレーション係数のための付加的な固定点値を必要とする。
【０１０２】
さらに、本明細書に記載の改良されたテッセレーション方法は、様々な例において、以下のさらなる品質を有する：
・向き独立性−（ブロック５０４の前処理段階において）パッチを、各々の上として中間頂点を有する、扇状の三角形パッチに分割することにより、三角形の向きに対する選択は行われず、したがって、同じテッセレーションが常に生じることになる。
・Ｎ角形−改良されたテッセレーション方法は、（前処理段階５０４の変形例において）パッチを扇状の三角形に分割することにより、Ｎ個の辺を有する任意のポリゴンパッチをサポートするよう容易に適合され得る。各ケースにおいて、平均テッセレーション係数ｔについて、本方法は、約（Ｎ／４）２２ｔ個の頂点とその２倍の多さのプリミティブとを生成することになる。
【０１０３】
上記の例は、（例えば、図５において）三角形パッチ、四辺形パッチ、及び等値線パッチに対して改良されたテッセレーション方法が実施されることを示しているが、本方法は、それらのパッチのサブセットのみに対して（例えば、四辺形パッチのみに対して、三角形パッチのみに対して、又は四辺形パッチ及び三角形パッチのみに対して）実施されてもよいことが理解されよう。
【０１０４】
図５は、前処理段階（ブロック５０４）とテッセレーションアルゴリズムの再帰的適用（ブロック５０６及び５０８）との両方を含む改良されたテッセレーション方法を示しているが、図９に示される方法は、代替的に、前処理段階（ブロック５０４、並びに図７及び図８に示されるもの）なく独立して実施されてもよいし、前処理段階（ブロック５０４）は、代替的に、図７及び図８に示されるものとは異なるやり方で実施されてもよいことが理解されよう。同様に、（図１５に示されるように）中心テッセレーション係数が使用される場合、本方法は、前処理段階（ブロック５０４、並びに図７及び図８に示されるもの）なく実施されてもよいし、前処理段階（ブロック５０４）は、図７及び図８に示されるものとは異なるやり方で実施されてもよい。
【０１０５】
上述した改良されたテッセレーション方法のさらなる変形例においては、頂点テッセレーション係数は、異なるように、すなわち、１以上のスケーリング、トランスレーション、又は他の変換により頂点テッセレーション係数を変換することによって、表現されてもよい。したがって、（例えば、ブロック７０８、８０８、及び９１２において）アップデートされた頂点テッセレーション係数を生成することは、ＩＮＴＥＲＶＡＬだけ減算することとは異なる。例えば、頂点ＴＦは、頂点ＴＦで２をべき乗して√２で除算することでアップデートすることにより、表現され得る。より一般的に、実数に対する可逆関数である任意のＦ（ｘ）に関して、テッセレーション係数ＴＦ’は、ＴＦ’＝Ｆ（ＴＦ）により与えられ得る。ＩＮＴＥＲＶＡＬだけ減算する代わりに、以下の関数を使用して、（ブロック７０８、８０８、及び９１２において算出された）頂点ＴＦをアップデートしてもよい：
ＴＦ’：＝Ｆ（Ｆ−１（ＴＦ’）−ＩＮＴＥＲＶＡＬ）
この例において、（上記の式（３）により与えられるものの代替である）テスト条件は、ＴＦ’＞Ｆ（ＴＨＲＥＳ）又はＴＦ’＜Ｆ（ＴＨＲＥＳ）である。ここで、不等式の選択は、Ｆが、順序を保つものであるか順序を逆にするものであるかに依存する。Ｆ（）によって共役させることにより、本方法における意味的な違いはない。
【０１０６】
一例において、ＴＦ’＝Ｆ（ＴＦ）＝２ＴＦである（すなわち、２を底とする対数で作用しない）場合、（例えば、ブロック７０８、８０８、及び９１２における）頂点ＴＦをアップデートするために使用される関数は以下のようになる：
【数１】
2020170559.tif 000004
テスト条件は、ＴＦ’＞２０＝１（２ＴＦとして）が順序を保つものであることである。
【０１０７】
上記の説明において、ＴＨＲＥＳ及びＩＮＴＥＲＶＡＬの値について、具体的な例が提供されているが、さらなる例においては、これらのパラメータの一方又は両方の異なる値が使用されてもよい。
【０１０８】
上記の例において、２つの可能なＭＥＡＮ（）関数、すなわち、算術平均及び上記の式（６）により与えられるＭＥＡＮ（）関数が説明されている。本明細書に記載の改良されたテッセレーション方法のさらなる例示的な実装例おいては、代替的に、対称的であっても非対称的であってもよいＭＥＡＮ（）関数として、別の関数が使用されてもよい（しかしながら、これは、向き独立性の損失をもたらすであろう）。
【０１０９】
上記の例において、ＴＨＲＥＳ及びＩＮＴＥＲＶＡＬの各々についての１つの値及び１つのＭＥＡＮ（）関数（例えば、算術平均又は式（６）により与えられるＭＥＡＮ（）関数のいずれか）が使用されているが、さらなる例においては、ＴＨＲＥＳ及び／若しくはＩＮＴＥＲＶＡＬについての複数の値、並びに／又は複数のＭＥＡＮ（）関数が使用されてもよい。
【０１１０】
上述した改良されたテッセレーション方法において、ＬＥＦＴ．ＴＦ又はＲＩＧＨＴ．ＴＦがＴＨＲＥＳより大きい場合、新たな頂点が追加される（ここで、「又は」が使用されているが、例えば、式（３）において、その標準的な意味は、ＬＥＦＴ．ＴＦ及びＲＩＧＨＴ．ＴＦの一方又は両方が閾値より大きい場合、新たな頂点が追加されるということである）。上述した例に対する変形例においては、テッセレーションは、ＬＥＦＴ．ＴＦ及びＲＩＧＨＴ．ＴＦの両方がＴＨＲＥＳより大きい場合に限り、実行されてもよい。
【０１１１】
上述した改良されたテッセレーション方法において、（上記の式（３）に示されるように）ＬＥＦＴ．ＴＦ又はＲＩＧＨＴ．ＴＦがＴＨＲＥＳより大きい場合、新たな頂点が追加されるが、上述した方法に対する変形例においては、ＬＥＦＴ．ＴＦ又はＲＩＧＨＴ．ＴＦがＴＨＲＥＳ以上である場合、新たな頂点が追加されてもよい。
【０１１２】
上記の説明において、細分割は、（例えば、ブロック５０６及び５０８において）再帰的に適用されるものとして説明されている。しかしながら、さらなる例においては、本方法は、再帰的に適用されなくてもよく、例えば、反復的に（イテレーティブに）適用されてもよい（この場合、１つのレベルの細分割が、全ての現在のパッチに対して実行された後、次のレベルの細分割が、全ての生成されたパッチに対して実行される）。別の例においては、別の非再帰的方法が、実施されてもよい（例えば、６５×６５グリッド上の各頂点が含められるべきであるかどうかをテストし、次いで、頂点の位置に基づいて、含められた頂点がどのプリミティブの一部であるかを求める）。
【０１１３】
上述した例において、改良されたテッセレーション方法は、ドメイン空間において実行されるものとして説明されている。上述した方法に対するさらなる変形例においては、テッセレーションは、代替的に、ドメイン空間外で適用されてもよい。
【０１１４】
改良されたテッセレーション方法に入力される頂点ＴＦは、別個のアプリケーションにより生成され得る（例えば、各頂点からビューワまでの距離に基づいて、例えば、頂点の頂点ＴＦは、目から頂点までの距離の逆数に比例し得る）。様々な例において、本明細書に記載の方法に入力される前に、（例えば、頂点で交差するエッジについての全てのエッジＴＦの平均を取ることにより）エッジＴＦを頂点ＴＦに変換するＡＰＩが提供され得る。
【０１１５】
本明細書に記載の改良されたテッセレーション方法を使用して、オンザフライでテッセレーションを実行することもできるし（例えば、３Ｄシーン内で視点が変わる場合）、あるいは、本方法をオフラインで使用して、複数の異なる視点のための三角形を事前算出することもできる。
【０１１６】
本明細書に記載の改良されたテッセレーション方法は、ハードウェアにより実装され得る。様々な例において、本方法は、図１９に示されるように、グラフィックス処理ユニット（ＧＰＵ）内のハードウェアテッセレーションユニットにより実装され得る。図１９は、ＧＰＵ内のハードウェアにより実装され得る例示的なＧＰＵパイプライン１９００の概略図を示している。図１９に示されるように、パイプライン１９００は、頂点シェーダ１９０２を含む。頂点シェーダ１９０２は、（例えば、カメラからの頂点の位置の関数として）全ての頂点の頂点テッセレーション係数を算出することを含む、頂点ごとに算出を実行する役割を担う。頂点ＴＦを算出する前に、頂点シェーダは、頂点をワールド空間に変換し、１以上の他の線形変換を適用することもある。頂点シェーダ１９０２は、メッシュトポロジを認識せず、頂点シェーダ１９０２に提供された現在の頂点しか認識しない。
【０１１７】
頂点シェーダ１９０２とハードウェアテッセレーションユニット（すなわちテッセレータ）１９０４との間で（又は、パイプライン１９００が、頂点シェーダ１９０２とテッセレータ１９０４との間に１以上の任意的なハルシェーダを含む場合には、頂点シェーダ１９０２と図１９には示されていない任意的なハルシェーダとの間で）、トポロジを使用してパッチ（すなわち、頂点の順序付きセット）が構築される（パッチは、描画呼び出しの前にユーザが選択する、テッセレータに記憶されている事前構築されているパッチの選択であり得る）。このパッチ情報が、（設けられている場合には）ハルシェーダに渡される。しかしながら、テッセレータ１９０４は、頂点ＴＦのみを取得し、パッチ情報の残りは、ドメインシェーダ１９０６に渡される。
【０１１８】
ハードウェアテッセレーションユニット（すなわちテッセレータ）１９０４は、受信した頂点ＴＦを使用して、（例えば、図５、図７〜図９、図１５、及び図１７に示されるように）上述した改良されたテッセレーション方法を実施するためのハードウェアロジックを備える。頂点シェーダとは異なり、ハードウェアテッセレーションユニットは（及び任意的なハルシェーダのいずれも）、頂点ごとではなくパッチごとに動作する。（例えば、ブロック７０６、８０６、９０６、及び１７０６において）新たな頂点ＴＦを算出するための式を実行するのに必要とされるハードウェアを単純化するために、この算出は、（上述した例に示されるように）ｌｏｇ２で実行され得、したがって、加算及び減算として実行され得る（又は、乗算及び除算が使用されることもある）。上述したように、ハードウェアテッセレーションユニット１９０４は、上述した方法の諸態様（例えば、図９に示される、ブロック５０６及び６０８における異なるパッチに対する再帰的処理）を並列に実行するよう構成され得る。ハードウェアテッセレーションユニット１９０４は、新たな頂点の各々のドメイン空間座標を出力し、そのドメイン空間座標をドメインシェーダ１９０６に渡す（例えば、図９のブロック９１４のように、全てのパッチの詳細をバッファに記憶することにより）。
【０１１９】
ドメインシェーダ１９０６は、テッセレータ１９０４により生成された頂点用の第２の頂点シェーダとして動作し、テッセレータにより頂点が生成されるたびに実行される。ドメインシェーダは、ドメイン空間位置（ｕ，ｖ）を供給し、全てのパッチ情報を与え、完全な頂点構造を出力する。ドメインシェーダは、パッチ制御点及びドメイン空間座標を使用して、新たな頂点を構築し、任意の変位マッピングを適用する（例えば、テクスチャにおいて符号化された何らかの高さマップ又はバンプマップをサンプリングすることにより）。
【０１２０】
ドメインシェーダ１９０６が、各パッチの生成された頂点ごとに実行された後、頂点は、ラスタライザ（図１９には示されていない）に渡される。これに前後して（in  tandem）、（インデックスバッファの形態の）プリミティブが、テッセレータからラスタライザに渡される。
【０１２１】
図１９のＧＰＵパイプライン１９００は、例として示されたに過ぎず、頂点ＴＦを使用する、本明細書に記載の改良されたテッセレーション方法は、任意のＧＰＵアーキテクチャにおいて使用することができる。ハードウェアテッセレーションユニット１９０４は、頂点シェーダ１９０４、任意的なハルシェーダ、及びドメインシェーダ１９０６に加えて、又はこれらに代えて、他のシェーダを含むＧＰＵパイプラインにおいて使用されてもよいことも理解されよう。
【０１２２】
上述した改良されたテッセレーション方法は、代替的に、ソフトウェア（又は、ソフトウェアとハードウェアとの組合せ）により実装されてもよい。図２０は、任意の形態のコンピューティングデバイス及び／又は電子デバイスとして実装され得、上述したテッセレーション方法を実施するよう構成され得る例示的なコンピューティングベースデバイス２０００の様々なコンポーネントを示している。
【０１２３】
コンピューティングベースデバイス２０００は、１以上のプロセッサ２００２を備える。１以上のプロセッサ２００２は、マイクロプロセッサ、コントローラ、又は、上述した改良されたテッセレーション方法を実行するためにデバイスの動作を制御するためのコンピュータ実行可能な命令を処理する任意の他の適切なタイプのプロセッサとすることができる。いくつかの例において、例えば、システムオンチップアーキテクチャが使用される場合、プロセッサ２００２は、（ソフトウェア又はファームウェアではなく）ハードウェアにより改良されたテッセレーション方法の一部を実装する１以上の固定機能ブロック（アクセラレータとも呼ばれる）を含み得る。オペレーティングシステム２００４を含むプラットフォームソフトウェア又は任意の他の適切なプラットフォームソフトウェアが、デバイス２０００上でアプリケーションソフトウェア２００６を実行することを可能にするために、デバイス２０００において提供され得る。アプリケーションソフトウェアは、テッセレーションモジュール２００８を含み得る。このテッセレーションモジュール２００８は、例えば、（図５又は図１５のブロック５０４を実装する）前処理モジュール、任意的に、（図１５のブロック１５０２を実装する）追加的な前処理モジュール、及び（図５又は図１５のブロック５０６及び／又は５０８を実装する）再帰的テッセレーションモジュールを含み得る。
【０１２４】
コンピュータ実行可能な命令は、コンピューティングベースデバイス２０００によりアクセス可能な任意のコンピュータ読み取り可能な媒体を使用して提供され得る。コンピュータ読み取り可能な媒体は、例えば、メモリ２０１０等のコンピュータ記憶媒体、及び通信媒体を含み得る。メモリ２０１０等のコンピュータ記憶媒体（すなわち、非一時的なマシン読み取り可能な媒体）は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータ等といった情報を記憶するために任意の方法又は技術により実装された揮発性及び不揮発性の着脱可能及び着脱不可能な媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、若しくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気記憶デバイス、又は、コンピューティングデバイスによりアクセスされる情報を記憶するために使用することができる任意の他の非伝送媒体を含むが、これらに限定されるものではない。反対に、通信媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータを、搬送波又は他の伝送機構等の変調されたデータ信号内に具現化することができる。本明細書で定められるように、コンピュータ記憶媒体は、通信媒体を含まない。コンピュータ記憶媒体（すなわち、例えばメモリ２０１０といった非一時的なマシン読み取り可能な媒体）が、コンピューティングベースデバイス２０００内に示されているが、ストレージは、分散されてもよいし、リモートに配置されてもよく、（例えば、通信インタフェース２０１２を使用して）ネットワーク又は他の通信リンクを介してアクセスされてもよいことが理解されよう。
【０１２５】
コンピューティングベースデバイス２０００はまた、コンピューティングベースデバイス２０００と別個であっても統合されてもよいディスプレイデバイスに表示情報を出力するよう構成された入力／出力コントローラを備えることができる。表示情報は、グラフィカルユーザインタフェースを提供することができる。入力／出力コントローラはまた、ユーザ入力デバイス（例えば、マウスやキーボード）等の１以上のデバイスから入力を受信して処理するよう構成され得る。一実施形態において、ディスプレイデバイスは、タッチ式ディスプレイデバイスである場合には、ユーザ入力デバイスとしても動作することができる。入力／出力コントローラはまた、例えば、ローカルに接続された印刷デバイスといった、ディスプレイデバイス以外のデバイスにもデータを出力することができる。
【０１２６】
「プロセッサ」及び「コンピュータ」という用語は、命令を実行することができるように処理能力を有する任意のデバイス又はその一部を指すものとして本明細書で使用されている。「プロセッサ」という用語は、例えば、中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ又はＶＰＵ）、物理処理ユニット（ＰＰＵ）、ラジオ処理ユニット（ＲＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、汎用プロセッサ（例えば、汎用ＧＰＵ）、マイクロプロセッサ、ＣＰＵ外のタスクを加速させるよう設計される任意の処理ユニット等を含み得る。そのような処理能力は、多くの異なるデバイスに組み込まれ、したがって、「コンピュータ」という用語は、セットトップボックス、メディアプレーヤ、デジタルラジオ、ＰＣ、サーバ、携帯電話機、携帯情報端末、及び多くの他のデバイスを含むことが、当業者には認識されよう。
【０１２７】
プログラム命令を記憶するために使用される記憶デバイスは、ネットワークにわたって分散されてもよいことが、当業者には認識されよう。例えば、リモートコンピュータは、説明したプロセスの一例を、ソフトウェアとして記憶することができる。ローカルコンピュータ又はターミナルコンピュータは、リモートコンピュータにアクセスして、プログラムを実行するためにソフトウェアの一部又は全てをダウンロードすることができる。代替的に、ローカルコンピュータは、必要に応じて、ソフトウェアの一部をダウンロードしてもよいし、一部のソフトウェア命令をローカルターミナルで実行し、一部のソフトウェア命令をリモートコンピュータ（又はコンピュータネットワーク）で実行してもよい。当業者に知られている慣用技術を利用することにより、ソフトウェア命令の一部又は全てが、ＤＳＰ、プログラマブルロジックアレイ等といった専用回路により実行されてもよいことも、当業者には認識されよう。
【０１２８】
本明細書に記載の方法は、有体の記憶媒体に記憶された、例えば、コンピュータプログラムの形態の、マシンが読み取ることができる形式のソフトウェアを有するよう構成されるコンピュータにより実行され得る。上記コンピュータプログラムは、コンピュータ読み取り可能な記憶媒体上に具現化され得る場合には、コンピュータ上で実行されたときに、説明した方法の構成部分を実行するようにコンピュータを構成するためのコンピュータ読み取り可能なプログラムコード、又は、本明細書に記載の方法のうちの任意の方法の全てのステップを実行するよう適合されたコンピュータプログラムコード手段を含む。有体の記憶媒体（すなわち、非一時的な記憶媒体）の例は、ディスク、サムドライブ、メモリカード等を含み、伝搬信号を含まない。ソフトウェアは、パラレルプロセッサ又はシリアルプロセッサ上での実行に適したものであり得、したがって、方法ステップは、任意の適切な順序で又は同時に実行され得る。
【０１２９】
本明細書に記載のハードウェアコンポーネントは、コンピュータ読み取り可能なプログラムコードが符号化されている非一時的なコンピュータ読み取り可能な記憶媒体によりもたらされ得る。
【０１３０】
また、所望の機能を実行するように集積回路を設計するために又はプログラマブルチップを構成するために使用されるものとして、上述したモジュール、機能、コンポーネント、又はロジックを実装するハードウェアの構成を「記述」又は定義するソフトウェア（ＨＤＬ（ハードウェア記述言語）ソフトウェア等）を包含することも意図されている。すなわち、本明細書に記載の方法のうちの任意の方法を実行するよう構成された処理ユニットをもたらすためのコンピュータ読み取り可能なプログラムコード、又は、本明細書に記載の任意の装置を含む処理ユニットをもたらすためのコンピュータ読み取り可能なプログラムコードが符号化されているコンピュータ読み取り可能な記憶媒体が提供され得る。すなわち、コンピュータシステムは、回路素子の定義とそのような回路素子を組み合わせるためのルールを定義するデータとからデジタル回路の表現を生成するよう構成され得、ここで、非一時的なコンピュータ読み取り可能な記憶媒体は、プロセッサ実行可能な命令を記憶することが可能であり、このプロセッサ実行可能な命令が、そのようなコンピュータシステムにおいて実行されたときに、そのようなコンピュータシステムに、本明細書に記載の処理ユニットをもたらさせる。例えば、非一時的なコンピュータ読み取り可能な記憶媒体は、コンピュータ読み取り可能な命令を記憶することが可能であり、このコンピュータ読み取り可能な命令が、集積回路の出現（manifestation）をもたらすためのコンピュータシステムにおいて処理されたときに、そのようなコンピュータシステムに、本明細書における例で説明した、受信機のプロセッサの出現をもたらさせる、又は、本明細書における例で説明した方法を実行するよう構成されたプロセッサの出現をもたらさせる。プロセッサの出現は、プロセッサ自体、又は、プロセッサをもたらすために使用することができる、プロセッサの表現（例えば、マスク）であり得る。
【０１３１】
開示した態様を実施する際に使用されるマシン実行可能なデータを記憶するメモリは、非一時的な媒体であり得る。非一時的な媒体は、揮発性であってもよいし、不揮発性であってもよい。非一時的な揮発性媒体の例は、ＳＲＡＭ又はＤＲＡＭ等といった、半導体ベースのメモリを含む。不揮発性メモリを実装するために使用することができる技術の例は、光メモリ技術、磁気メモリ技術、フラッシュメモリ、相変化メモリ、抵抗ＲＡＭを含む。
【０１３２】
「ロジック」に対する特定の言及は、１以上の機能を実行する構造を指す。ロジックの一例は、１以上の機能を実行するよう構成された回路を含む。例えば、そのような回路は、トランジスタ、及び／又は、製造プロセスにおいて利用可能な他のハードウェア要素を含み得る。そのようなトランジスタ及び／又は他の要素は、メモリを実装及び／又は包含する回路又は構造を形成するために使用され得る。そのような回路又は構造として、例えば、レジスタ、フリップフロップ又はラッチ、ブール演算等の論理演算子、加算器、乗算器、又はシフタなどの数学演算子、及びインターコネクト等がある。そのような要素は、カスタム回路若しくは標準セルライブラリ、マクロとして、又は他のレベルの抽象化において提供され得る。そのような要素は、特定の配置で相互接続され得る。ロジックは、固定機能である回路を含み得、回路は、１以上の機能を実行するようにプログラムされ得る。そのようなプログラミングは、ファームウェア又はソフトウェアのアップデートメカニズム又は制御メカニズムから提供され得る。１つの機能を実行するように識別されたロジックは、構成機能又はサブプロセスを実装するロジックも含み得る。一例において、ハードウェアロジックは、１以上の固定機能演算、状態機械、又はプロセスを実装する回路を有する。
【０１３３】
当業者には明らかなように、本明細書で提供したいかなる範囲又はデバイス値も、要求された効果を失うことなく、拡張又は変更され得る。
【０１３４】
上述した効果及び利点は、１つの実施形態に関連することもあるし、複数の実施形態に関連することもあることが理解されよう。実施形態は、上述した問題のいずれか又は全てを解決する実施形態、又は、上述した効果及び利点のいずれか又は全てを有する実施形態に限定されるものではない。
【０１３５】
「ある（an）」アイテムに対するいかなる言及も、１以上のそのようなアイテムを指す。「備える、含む、有する（comprising）」という用語は、識別された方法ブロック又は要素を含むが、そのようなブロック又は要素が排他的なリストを含まず、装置がさらなるブロック又は要素を含んでもよく、方法がさらなる動作又は要素を含んでもよいことを意味するものとして、本明細書で使用されている。さらに、ブロック、要素、及び動作は、これら自体、暗黙的にクローズドではない。
【０１３６】
本明細書に記載の方法のステップは、適切である場合には、任意の適切な順序で又は同時に実行され得る。図面におけるボックス間の矢印は、方法ステップの例示的な一シーケンスを示すが、他のシーケンス又は複数のステップの並列実行を除外することを意図するものではない。さらに、個々のブロックは、本明細書に記載の主題の主旨及び範囲から逸脱することなく、本方法のうちの任意の方法から削除され得る。上述した例のうちの任意の例の態様は、要求された効果を失うことなく、上述した他の例のうちの任意の例の態様と組み合わされて、さらなる例が形成され得る。図面の要素が矢印により結ばれて示されている場合、矢印は、要素間の（データ及び制御メッセージを含む）やりとりの例示的な１つの流れを示すに過ぎないことが理解されよう。要素間の流れは、いずれかの一方向又は双方向であり得る。
【０１３７】
好適な実施形態の上記の説明は、例として提供されたに過ぎず、様々な変更が当業者により行われ得ることが理解されよう。様々な実施形態が、所定の程度の具体性をもって又は１以上の個々の実施形態を参照して上記で説明されたが、当業者であれば、本発明の主旨又は範囲から逸脱することなく、開示した実施形態に対して多数の変更を行うことができるであろう。
【符号の説明】
【０１３８】
１９０２  頂点シェーダ
１９０４  テッセレーションユニット
１９０６  ドメインシェーダ
２００２  プロセッサ
２００４  オペレーティングシステム
２００６  アプリケーションソフトウェア
２００８  テッセレーションモジュール
２０１０  メモリ
２０１２  通信インタフェース
【図１】
2020170559.tif 000005
【図２】
2020170559.tif 000006
【図３】
2020170559.tif 000007
【図４】
2020170559.tif 000008
【図５】
2020170559.tif 000009
【図６】
2020170559.tif 000010
【図７】
2020170559.tif 000011
【図８】
2020170559.tif 000012
【図９】
2020170559.tif 000013
【図１０】
2020170559.tif 000014
【図１１】
2020170559.tif 000015
【図１２】
2020170559.tif 000016
【図１３】
2020170559.tif 000017
【図１４】
2020170559.tif 000018
【図１５】
2020170559.tif 000019
【図１６】
2020170559.tif 000020
【図１７】
2020170559.tif 000021
【図１８】
2020170559.tif 000022
【図１９】
2020170559.tif 000023
【図２０】
2020170559.tif 000024