(57)【特許請求の範囲】
【請求項１】
タイル・ベースの３次元コンピュータ・グラフィックス・レンダリング・システムにおいてサーフェスのパッチをテッセレートするための方法であって、
パッチを構成するテッセレートされたプリミティブについてのプリミティブ・インデックスのタイルごとのリストを導出するステップと、
前記パッチの前記プリミティブに対して隠面除去を実行するステップと、
前記隠面除去後に残ったプリミティブのドメイン点を導出するステップと、
表示のために、前記プリミティブをシェーディングするステップと
を含むことを特徴とする方法。
【請求項２】
前記プリミティブ・インデックスのタイルごとのリストを導出するステップは、
パッチ・データを受け取ることと、
前記パッチ・データから、ドメイン点テッセレーション・データ及び連結性テッセレーション・データを決定することと、
前記ドメイン点データ及び前記連結性テッセレーション・データによって要求されるプリミティブを画面空間に投影することと、
このようにして前記投影されたデータから、前記プリミティブ・インデックスのタイルごとのリストを決定することと
を含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記隠面除去のステップは、パッチのドメイン点データを再計算することと、前記ドメイン点データに関連付けられた位置データから、プリミティブがタイル内で可視であるかどうかを決定することと、可視プリミティブのタイルごとのリストを導出することとを含むことを特徴とする、請求項２に記載の方法。
【請求項４】
前記隠面除去後に残ったプリミティブのドメイン点データを導出するステップは、前記ドメイン点データを再計算することと、前記シェーディング・ステップにおいて用いるためにドメイン点の完全な頂点属性を導出することとを含むことを特徴とする、請求項３に記載の方法。
【請求項５】
前記テッセレートされたプリミティブについてのプリミティブ・インデックスのタイルごとのリストを得るステップは、ハル・シェーディング・ユニットからの出力を画面空間ジオメトリ・バッファに提供することを特徴とする、請求項１〜請求項４のいずれかに記載の方法。
【請求項６】
前記プリミティブ・インデックスのタイルごとのリストを導出するステップは、不可視のテッセレートされたデータをいずれも、これらが前記プリミティブ・インデックスのタイルごとのリストに含まれないように除去するステップを含むことを特徴とする、請求項１〜請求項５のいずれかに記載の方法。
【請求項７】
それぞれのタイルごとのリストについてのプリミティブ・インデックスの前記リストは、前記テッセレートされたプリミティブについての圧縮又は非圧縮インデックス・データを含むことを特徴とする、請求項６に記載の方法。
【請求項８】
前記隠面除去を実行するステップは、予め生成された頂点についてキャッシュ・メモリ内にデータを格納するステップを含むことを特徴とする、請求項１〜請求項７のいずれかに記載の方法。
【請求項９】
前記隠面除去後に残ったプリミティブのドメイン点を導出するステップは、プリミティブ頂点についてキャッシュ内にインデックス・データを格納するステップを含むことを特徴とする、請求項１〜請求項８のいずれかに記載の方法。
【請求項１０】
タイル・ベースの３次元コンピュータ・グラフィックス・レンダリング・システムにおいてサーフェスのパッチをテッセレートするための装置であって、
パッチを構成するテッセレートされたプリミティブについてのプリミティブ・インデックスのタイルごとのリストを導出するための手段（４０２）と、
前記パッチの前記プリミティブに対して隠面除去を実行するための手段（４３５）と、
前記隠面除去後に残ったプリミティブのドメイン点を導出するための手段と、
表示のために、前記プリミティブをシェーディングするための手段（４４５）と
を含むことを特徴とする装置。
【請求項１１】
前記プリミティブ・インデックスのタイルごとのリストを導出するための手段は、
パッチ・データを受け取るための手段と、
前記パッチ・データから、ドメイン点テッセレーション・データ及び連結性テッセレーション・データを決定するための手段（５１０、５１５）と、
前記ドメイン点データ及び前記連結性テッセレーション・データによって要求されるプリミティブを画面空間に投影するための手段（５３０）と、
このようにして前記投影されたデータから、前記プリミティブ・インデックスのタイルごとのリストを決定するための手段（５３５）と
を含むことを特徴とする、請求項１０に記載の装置。
【請求項１２】
前記隠面除去を実行するための手段は、パッチのドメイン点データを再計算するための手段と、前記ドメイン点データと関連付けられた位置データから、どこで前記プリミティブがタイル内で可視であるかを決定するための手段と、可視プリミティブのタイルごとのリストを決定するための手段とを含むことを特徴とする、請求項１１に記載の装置。
【請求項１３】
前記隠面除去後に残ったプリミティブのドメイン点データを導出するための手段は、前記ドメイン点データを再計算するための手段と、前記シェーディング・ステップにおいて用いるためにドメイン点の完全な頂点属性データを導出するための手段とを含むことを特徴とする、請求項１２に記載の装置。
【請求項１４】
テッセレートされたプリミティブについてのプリミティブ・インデックスのタイルごとのリストを導出するための前記手段は、出力データを画面空間ジオメトリ・バッファに提供するハル・シェーディング・ユニット（５０５）を含むことを特徴とする、請求項１０〜請求項１３のいずれかに記載の装置。
【請求項１５】
前記プリミティブ・インデックスのタイルごとのリストを導出するための手段（５２５）は、不可視のテッセレートされたデータをいずれも、これらが前記プリミティブ・インデックスのタイルごとのリストに含まれないように除去するための手段を含むことを特徴とする、請求項１０〜請求項１４のいずれかに記載の装置。
【請求項１６】
それぞれのタイルごとのリストについてのプリミティブ・インデックスの前記リストは、前記テッセレートされたプリミティブについての圧縮又は非圧縮インデックス・データを含むことを特徴とする、請求項１５に記載の装置。
【請求項１７】
前記隠面除去を実行するための手段は、予め生成された頂点についてキャッシュ・メモリ（５２２）を含むことを特徴とする、請求項１０〜請求項１６のいずれかに記載の装置。
【請求項１８】
前記隠面除去後に残ったプリミティブのドメイン点を導出するための手段は、プリミティブ頂点についてキャッシュ内にインデックス・データを格納するための手段（５４０）を含むことを特徴とする、請求項１０〜請求項１７のいずれかに記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元コンピュータ・グラフィックスのレンダリング・システムに関し、特に、タイル・ベース・レンダリング・システムにおいてサーフェスのパッチをテッセレートするための方法及び装置に関する。
【背景技術】
【０００２】
高次サーフェスは、コンピュータ・グラフィックス業界においては周知の技術である。多項式の関数である高次サーフェス、即ち「パッチ」は、典型的には、曲面の挙動を記述するために用いられる制御点の集合を、変数「ｔ」（２次元でプロットされる曲線の場合）又は２つの変数ｕ、ｖ（３次元でプロットされる曲線の場合）と曲線のサーフェスとの間の周知の数学的パラメータ関係の観点から定義する。図１は、３Ｄコンピュータ・グラフィックス内で用いられる高次サーフェス型式の周知の例であるベジエパッチを示す。ベジエ面１１０上の点Ｐ１００は、パラメータ座標ｕ、ｖ１２０（ドメイン座標としても知られる）及び対応する制御点ｋi,j１３０の関数によって定義され、
【数１】
0005847159.tif 000002
ここで、Ａ及びＢは、
【数２】
0005847159.tif 000003
と定義される定数である。
【０００３】
Ｐ（ｕ，ｖ）の値は、制御点ｋi,j１３０によって表されるハル１４０内にあることに留意されたい。これは、１つの可能なサーフェス形成の一例に過ぎず、他に多くの可能性があることにも留意されたい。
【０００４】
テッセレーションは、サーフェスを、元のサーフェスの面上にあり、かつその境界内にある、幾つかのより小さな隣接するサーフェスにさらに分割する周知の技術である。図２は、バイナリ分割を用いる、ベジエパッチのドメイン点のテッセレーションを示す。１６個のドメイン点を有し、各軸上の間隔が０．２５であるテッセレートされていないドメイン２００は、テッセレートされたパッチ内の点の最小数を表し、これはベジエ面内の点の数と同じである。１レベルのテッセレーションが２１０において適用され、その結果、元の点の集合のそれぞれの隣接した点の対の間の中点に位置する間隔にて生成されたドメイン点のさらなる集合が得られる。第２のレベルのテッセレーション２２０は、２１０において生成されたこれらの点の間にさらなる中点の集合を導入する。このプロセスが、用途によって定まる適切な所望のレベルのテッセレーションが達成されるまで繰り返される。この手法は、多くの方法のうちの可能な１つの方法を表すものであり、単なる例としてここで提示されるものであることに留意されたい。
【０００５】
マイクロソフトのＤｘ１１アプリケーション・プログラミング・インターフェース（ＡＰＩ）は、グラフィックス・ハードウェア・パイプライン内でパッチを実装するためのプログラム可能な手法を導入する。図３は、Ｄｘ１１  ＡＰＩによって要求されるパイプラインを示す。頂点シェーダ段階３００は、パッチの個別の制御点の集合を取得し、それらに対して、当業者に周知の方式でプログラム可能ハードウェアを用いて任意の数学的変換を適用する。変換された制御点は、次にハル・シェーダ１１０に渡され、ハル・シェーダは、そのパッチのエッジのためのテッセレーション係数を計算し、変換された制御点に対して、アプリケーション定義されたさらなる修正を適用する。
【０００６】
パッチのためのエッジ・テッセレーション係数は、テッセレーション・ユニット３２０に渡される。テッセレーション・ユニットは、ドメイン・テッセレーションと連結性テッセレーションの２つの部分に分けられる。ドメイン・テッセレーションは、図２に関して説明された方式と同様であるがＤＸ１１  ＡＰＩによって規定された特定の手法を用いる方式で、与えられたテッセレーション係数に基づいて、パッチを「ドメイン」点として知られる幾つかの点にさらに分割する。連結性テッセレーションは、得られた「ドメイン」点をどのように組み合わせ又は連結して、テッセレートされたプリミティブを作成するかを決定する。ドメイン・テッセレーションと同様に、これを実施する方法はマイクロソフトのＤｘ１１によって定められており、当業者はそれに精通しているであろう。
【０００７】
テッセレートされたドメイン点は、ドメイン・シェーダ３３０に渡され、ドメイン・シェーダは、それらテッセレートされたドメイン点を、プログラム可能な方式でハル・シェーダによって作成された制御点と組み合わせる。典型的には、ドメイン・シェーダは、図１に関して上で説明したベジエパッチのような周知の曲面形成を適用することになる。得られた値は、次に、変位マッピングのような周知の技術を用いてさらに修正することができる。変位マッピングは、高次サーフェス・テッセレーションの結果をテクスチャ・マップからサンプリングされた高さによって変位させる技術である。変位マッピングは、典型的には、曲面上の点が、容易に定義可能な「ハル」内にはもはや存在しないことを意味する。
【０００８】
タイル・ベース・レンダリング・システムは周知である。これらは、画像を複数の矩形ブロック、即ちタイルにさらに分割する。これを行い、その後でテクスチャリング及びシェーディングを実行する１つの方法が、図４において概略的に示される。これらの技術は周知である。
【０００９】
タイル・ベース・レンダリングは、一般に２つの相に分けられ、その第１相は、以下の操作を実行するジオメトリ処理相として知られる。
最初に、プリミティブ／コマンド・フェッチ・ユニットが、コマンド及びプリミティブ・データをメモリから取り出し、これをジオメトリ処理ユニットに渡す。ジオメトリ処理ユニットは、プリミティブ及びコマンド・データを周知の方法を用いて画面空間に変換する。
このデータは、次にタイリング・ユニットに供給され、タイリング・ユニットは、画面空間ジオメトリからのオブジェクト・データを、定義された矩形領域、即ちタイルの集合の各々についてのオブジェクト・リスト内に挿入する。各タイルについてのタイル・オブジェクト・リストは、そのタイル内に全体的に又は部分的に存在するプリミティブを含む。タイル・オブジェクト・リストは、画面上の全てのタイルについて存在するが、いくつかのオブジェクト・リストは、その中にデータを有さないこともある。
【００１０】
タイル・ベース・レンダリングの第２相は、一般に、以下の操作を実行するラスタ化相と呼ばれる。
オブジェクト・リストは、タイル・パラメータ・フェッチ・ユニットによってフェッチされ、タイル・パラメータ・フェッチ・ユニットは、それらをタイルごとに隠面除去ユニット（ＨＳＲ）に供給し、ＨＳＲは、最終的なシーンに寄与しない（普通は、それらが別のサーフェスによって覆い隠されるという理由で）サーフェスを除去する。ＨＳＲユニットは、タイル内の各プリミティブを処理し、可視ピクセルに関するデータのみをシェーディング・ユニットに渡す。
【００１１】
シェーディング・ユニットは、ＨＳＲからデータを取得し、そのデータを使用して、テクスチャ・ユニットを用いてテクスチャをフェッチし、周知の技術を用いて、可視オブジェクト内の各ピクセルにシェーディングを適用する。シェーディング・ユニットは次に、テクスチャ処理及びシェーディングが施されたデータをオン・チップのタイル・バッファに送る。操作はオン・チップのタイル・バッファに適用されるので、これに関連付けられる外部メモリの帯域幅は排除される。
各タイルが仕上がったら、得られたデータは外部のシーン・バッファに書き込まれる。
【００１２】
タイル・ベース・レンダリング・システムにＤｘ１１プログラム可能テッセレーション・パイプラインを追加することは、最初に十分なテッセレートを行って上述の型式の変位マッピングを適用しないと、パッチ・データをタイリングすることは不可能であることを意味する。この結果として、タイリングされた画面空間パラメータのリスト２０４に関連付けられるメモリ及び帯域幅の要件の著しい増大がもたらされる。
【発明の概要】
【００１３】
本発明の好ましい実施形態は、パッチ・データをタイリングされた画面空間パラメータのバッファへと展開（ｅｘｐａｎｄ）することに関連付けられるメモリ及び帯域幅のコストを伴わずに、タイル・ベース・レンダリング・システムがプログラム可能なテッセレーション／高次サーフェス及び変位マッピングをサポートすることを可能にする、方法及び装置を提供する。このことは、テッセレーション・プロセスを以下の３つの相に分けることによって達成される。
・位置テッセレーション及びタイリング
・位置テッセレーション及び隠面除去
・位置及び属性テッセレーション並びにシェーディング
【００１４】
第１相は、タイル・ベース・レンダリング・システムのジオメトリ処理相内で行われ、各タイルに重なるパッチを構成するプリミティブを参照して、タイリングされた画面空間ジオメトリのリストを作成する。展開されたジオメトリは、この段階ではパラメータ・バッファ内に書き込まれない。これは、パッチの頂点シェーディング及びハル・シェーディングを完全に実行し、ハル・シェーダの出力データを画面空間パラメータ・バッファに書き込むことによって行われる。テッセレーション・ユニットのドメイン・テッセレーション部分は、次に、パッチを構成する全てのドメイン点を作成し、連結性テッセレーション部分は、パッチを構成するプリミティブのインデックス付きリストを作成する。ドメイン・シェーダ３３０は、図３のドメイン・シェーダの位置部分のみを実行してプリミティブの位置データを作成し、次にこれをインデックス付きリストと共に用いて、テッセレートされたプリミティブをタイリングする。この相の結果は、テッセレートされたプリミティブのプリミティブ・インデックスのタイルごとのリストであり、ハル・シェーダの結果は、パラメータ・バッファに１回書き込まれる。テッセレートされたプリミティブ・インデックスのリストは圧縮することができることに留意されたい。
【００１５】
第２相及び第３相は両方とも、タイル・ベース・レンダリングのラスタ化相の間に行われる。
第２相は、パッチ・データに対して隠面除去を実行する。これは、ドメイン点を再計算すること、及び、各タイル内に存在するテッセレートされたプリミティブについて、ドメイン・シェーダの位置のみの部分を実行することによって行われる。これは、可視プリミティブのリストを作成する。
【００１６】
第３相は、隠面除去後に残ったプリミティブについてドメイン点を再計算する。次にドメイン・シェーダがこれらの点に完全に適用され、即ち、頂点属性も計算される。得られたプリミティブは、通常どおりパイプラインの下流へと渡される。第３相は、隠面除去後に実行されるので、残ったプリミティブをその完全な限度まで処理するために必要とされる作業量は、それらのプリミティブが前の２つの相のいずれかにおいて完全に処理される場合と比べて少ない。
一実施形態において、おそらく多少の効率の損失を伴うが、第１相及び第２相を組み合わせて単一の相にすることができる。
【００１７】
ここで本発明の好ましい実施形態を、添付の図面を参照して、例として詳細に説明する。
【図面の簡単な説明】
【００１８】
【図１】ベジエパッチを示す。
【図２】テッセレーションのプロセスを示す。
【図３】Ｄｘ１１プログラム可能テッセレーション・パイプラインを示す。
【図４】上述のような既知のタイル・ベース・レンダリング・システムの概略図を示す。
【図５】本発明の実施形態におけるタイリング相を示す。
【図６】本発明の実施形態の隠面除去相を示す。
【図７】本発明の実施形態における属性相を示す。
【図８】本発明の実施形態をサポートするように改変されたタイル・ベース・レンダリング・システムを示す。
【発明を実施するための形態】
【００１９】
図５は、本発明を具体化する、プログラム可能なテッセレーション・プリミティブをタイル・ベース・レンダリング・システム内で処理するために提案されるシステムのタイリング相を示す。頂点シェーディング・ユニット５００及びハル・シェーディング・ユニット５０６は、Ｄｘ１１に関して上述したように動作する。ハル・シェーディング・ユニットは、計算されたエッジ・テッセレーション係数を、ドメイン・テッセレーション・ユニット５１０及び連結性テッセレーション・ユニット５１５の両方に渡す。ハル・シェーダは、処理された制御点のデータをドメイン・シェーダ５２０にも渡す。
【００２０】
連結性テッセレーション・ユニット５１５は、三角形の頂点インデックスを計算する。これらのインデックスは、ドメイン・テッセレーション・ユニットからの生成されたドメイン点に対するドメイン・シェーダの作用によって生成された頂点を参照する。頂点インデックスは、ドメイン・シェーディング・ユニットによって予め生成された頂点値をキャッシュするキャッシュ・ユニット５２２に渡される。キャッシュは必ずしも必要とされるものではないが、テッセレートされたパッチを構成するプリミティブが相互接続されているという性質は、キャッシュの存在が、ドメイン・シェーディング・ユニットを通じて処理される頂点の数を著しく減らすことができることを意味することに留意されたい。キャッシュ内に頂点が存在しない場合には、これをドメイン・シェーディング・ユニットから得るように要求することができる。
【００２１】
ドメイン・シェーディング・ユニットは、頂点データの位置部分のみを処理する。テッセレートされたジオメトリをタイリングするために必要とされるのは、この部分のみである。キャッシュ・ユニット８は、プリミティブを構成する頂点をクリッピング及びカリング・ユニット５２５に順送りにし、クリッピング及びカリング・ユニットは、背面のプリミティブ、画面からはみ出したプリミティブ、又はサブ・ピクセルのプリミティブ（即ち、不可視のプリミティブ）をいずれも除去する。残ったプリミティブはいずれも投影ユニット５３０に渡され、投影ユニットは、プリミティブ／頂点を画面空間に変換して、これらをタイリング／ユニット５３５によってタイリングすることができるようにする。タイリング・ユニットは、各タイル内にどのプリミティブが存在するかを判断し、タイル・インデックスのリストをインデックス圧縮ユニット５４０に渡す。インデックス圧縮ユニットは、周知の方法を用いてインデックス・ストリームを圧縮する。圧縮されたインデックスは、タイルごとのジオメトリ・リスト５４５に書き込まれ、ハル・シェーディング・ユニット５０５の出力に対する参照も共に書き込まれる。プリミティブ・インデックスは圧縮しなくてもよいが、これは好ましい特徴であることにも留意されたい。このプロセスが、シーン内の全てのパッチに対して繰り返される。
【００２２】
シーンは、全体がパッチ・ベース・プリミティブで構成される必要はなく、従来の三角形、線又は点に基づくジオメトリもシーン内に含まれてもよく、これらのプリミティブは、通常のタイル・ベース・レンダリング・システムの場合と同様に処理されることができることに留意されたい。
【００２３】
上述の方法は、タイリングされたジオメトリのリストのために、生成されたプリミティブの連結性情報を格納するが、連結性情報を有さない一意の頂点のリストのみを格納することもできることにも留意されたい。次にこの情報を用いて、後続のパスにおいて連結性情報を再生することができる。
【００２４】
図６は、図４の後に実行される、パッチ・ベース・ジオメトリのためのラスタ化プロセスの隠面除去相を示す。タイル・パラメータ・フェッチ・ユニット６００は、ハル・シェーダ生成データ、及び、各タイルについてのインデックスの圧縮リストを、ジオメトリ・バッファ６００（図５）からフェッチする。このハル・シェーダ生成データのエッジ・テッセレーション係数成分は、ドメイン・テッセレーション・ユニット６１０に渡され、制御点データは、ドメイン・シェーディング・ユニット６２０に渡される。ハル・シェーダの制御点データの位置部分のみが、タイル・パラメータ・フェッチ・ユニットによってフェッチされることに留意されたい。現在のタイル内に存在するパッチによって生成されたプリミティブのインデックスの圧縮されたリストは、インデックスをキャッシュ・ユニット６１５に渡す前にそれらを復元するインデックス復元ユニット６０５に渡される。
【００２５】
キャッシュ・ユニット６１５は、何回も参照される頂点を一回だけ生成すればよいように、ドメイン・シェーディング・ユニット６２０によって予め生成された頂点のデータを収容する。キャッシュ・ユニットが要求された頂点のデータを持っていない場合には、キャッシュ・ユニットは、ドメイン・シェーダ６２０からのデータを要求し、ドメイン・シェーダは、対応する頂点位置を生成する前に、根底にあるドメイン点データを求めてドメイン・テッセレーション・ユニットからのデータを要求する。タイリング相の場合と同様に、ドメイン・シェーダは、頂点の位置成分のみを生成し続けることに留意されたい。キャッシュ・ユニット６１５は、プリミティブの頂点をクリッピング及びカリング・ユニット６２５に渡し、ここでなんらかのクリッピングがそのプリミティブに対して再度実行される。クリッピング及びカリング・ユニットによって生成された頂点は、次に、それらを画面空間に変換する投影ユニット６３０に渡される。画面空間の頂点／プリミティブは、次に、通常のタイル・ベース・レンダリング・システムの場合と同じように動作する隠面除去ユニット６３５に渡される。隠面除去ユニットは、次に、可視プリミティブ・インデックスのリスト及びパッチ参照を次の動作相に渡す。
【００２６】
図７は、パッチ・ベース・データのためのラスタ化プロセスの属性相を示す。タイル・ベース・パラメータ・フェッチ・ユニット７００は、パッチ・データに対する参照、及び、現在のタイル内のパッチからの可視プリミティブのインデックスのリストを受け取る。タイル・ベース・パラメータ・フェッチ・ユニットは、パッチによって参照されるハル・シェーダ・データをフェッチし、エッジ・テッセレーション係数をドメイン・テッセレーション・ユニット７０５に渡し、制御点データをドメイン・シェーディング・ユニット７１５に渡す。この相において、パラメータ・フェッチ・ユニット７００は、制御点に関連付けられた全てのデータを取り出し、それをドメイン・シェーディング・ユニット７１０に渡すことに留意されたい。プリミティブ頂点のインデックス・データは、キャッシュ・ユニット７１５に渡され、キャッシュ・ユニットは、前の相の場合と同様に、ドメイン・シェーダによって予め生成された頂点に関するデータを収容する。頂点が存在しない場合には、キャッシュ・ユニットは、ドメイン・シェーダ・ユニットがそれを生成することを要求する。この相において、ドメイン・シェーディング・ユニットは、全ての頂点成分を生成するために必要とされるコードを実行する。キャッシュ・ユニットは次に、前の相における場合と同様にプリミティブ頂点をクリッピング、カリング及び投影ユニット７２０及び７２５に渡し、それらは、その後シェーディング・ユニット７３０に渡され、そこで通常のタイル・ベース・レンダリング・プロセスの場合と同様に処理される。
【００２７】
図８は、上述の３相プロセスを用いたテッセレーションをサポートするように修正されたタイル・ベース・レンダリング・システムを示す。プリミティブ／コマンド・フェッチ・ユニット８００は、最初に、プリミティブ及び状態情報をアプリケーションからフェッチし、それらをシェーディング・ユニット８０５に提供する。シェーディング・ユニットは、相１に関して説明したように、頂点シェーディング及びハル・シェーディングを実行する。シェーディング・ユニットは、次に、ハル・シェーディング・データをドメイン・テッセレーション・ユニット８２５及び連結性テッセレーション・ユニット８３０に渡し、同じデータをパラメータ・バッファ８６０に書き出す。ドメイン・テッセレーション・ユニットは、次にドメイン点を生成し、これらはシェーディング・ユニットへとフィードバックされ、シェーディング・ユニットは、ドメイン・シェーダの位置部分を適用し、生成された頂点をキャッシュ・ユニット８５０に送る。連結性テッセレーション・ユニット８３０は、プリミティブ・インデックスをキャッシュ・ユニットに送る。参照された頂点は、次にクリッピング及びカリング・ユニット８５５に送られ、そこで（不可視の）サブ・ピクセル、非サンプル、交差した及び背面のプリミティブがカリングされ、なんらかの必要とされるクリッピングが適用される。得られた頂点は、それらを画面空間に投影する投影ユニット８１５に渡される。得られた画面空間プリミティブは、次にタイリング・ユニット８６５に渡され、相１に関して上で説明したように生成されたタイルごとのプリミティブ・リストがパラメータ・バッファ８６０に書き込まれる。このプロセスは、通常のタイル・ベース・レンダリングの場合と同様に、シーン内の全てのプリミティブに対して繰り返される。
【００２８】
ラスタ化は、通常のタイル・ベース・レンダリング・デバイスと同様に、タイルごとに実行される。オブジェクト・リストは、タイル・パラメータ・フェッチ・ユニット８３５によってフェッチされ、タイル・パラメータ・フェッチ・ユニットは、通常のプリミティブ型式については、通常のタイル・ベース・レンダリング・デバイスに関して説明したように、それらをタイルごとにＨＳＲユニットに供給する。タイル・パラメータ・フェッチ・ユニットは、パッチ・ベース・プリミティブに遭遇した場合には、テッセレーション・プロセスの相１において発せられた、関連付けられたハル・シェーダ出力データをシェーディング・ユニット８０５へとロードする。タイル・パラメータ・フェッチ・ユニットは、次に、ドメイン・シェーダがその上で動作する必要があるテッセレートされたドメインからの頂点のインデックスを、ドメイン・テッセレーション・ユニット８２５に送る。ドメイン・テッセレーション・ユニットは、供給されたインデックスに対応するテッセレートされたドメイン内のｕ、ｖの値を生成し、それらをシェーディング・ユニット８０５に渡し、シェーディング・ユニットは、テッセレーション・プロセスの相２に関して説明されたようにドメイン・シェーダの位置部分を適用する。生成された位置の値は、次にキャッシュ・ユニット８５０に渡される。ドメイン・シェーディングされた頂点位置は、カリング及びクリッピング・ユニットによってキャッシュ８５０から読み出され、カリング及びクリッピング・ユニットは、クリッピングされない／カリングされないプリミティブを投影ユニット８７０に渡し、投影ユニットは、頂点を画面空間に投影する。得られた画面空間プリミティブは、次に隠面除去ユニット８４０に戻され、そこで、通常のタイル・ベース・レンダリングと同様に隠面除去が実行される。隠面除去後に可視のプリミティブはいずれも、タイル・パラメータ・フェッチ・ユニット８３５に戻され、タイル・パラメータ・フェッチ・ユニットは、残ったプリミティブのインデックスをドメイン・テッセレーション・ユニット８２５に対して発行する。得られたドメイン点は、再びシェーディング・ユニット８０５に渡され、シェーディング・ユニットは、いまや、完全なドメイン・シェーダを適用して、必要とされる全ての点及びテクスチャの座標値を作成する。作成された値は、ＦＰＵ８４５に戻される前に、キャッシュ・ブロック、クリッピング／カリング・ブロック及び投影ブロックに渡される。ＦＰＵは、属性のイテレーションをいくらでも実行し、これは次にシェーディング・ユニット８０５へと渡され、そこで通常のピクセル・シェーディングが通常のタイル・ベース・レンダリング・デバイスと同様に実行される。
【符号の説明】
【００２９】
１００：ベジエ面上の点Ｐ
１１０：ベジエ面
１２０：パラメータ座標（ドメイン座標）
１３０：制御点
１４０：ハル
２００：テッセレートされていないドメイン
２１０：テッセレーションの第１のレベル
２２０：テッセレーションの第２のレベル
【図１】
0005847159.tif 000004
【図２】
0005847159.tif 000005
【図３】
0005847159.tif 000006
【図４】
0005847159.tif 000007
【図５】
0005847159.tif 000008
【図６】
0005847159.tif 000009
【図７】
0005847159.tif 000010
【図８】
0005847159.tif 000011