(57)【特許請求の範囲】
【請求項１】
平面充填されたプリミティブデータをジオメトリシェーダへ供給するための方法であって、
プロセッサが、
元の一連の頂点及び元の一連の接続性情報に基き、新たな一連の平面充填された頂点及び新たな一連の接続性情報を平面充填エンジンで計算することと、
前記元の一連の頂点と、前記新たな一連の平面充填された頂点とを、第１の伝送を介して、前記平面充填エンジンから頂点シェーダに送信することと、
前記元の一連の頂点に対する前記新たな一連の接続性情報と、前記新たな一連の平面充填された頂点とを、第２の伝送を介して、前記平面充填エンジンから前記頂点シェーダを通過することなく前記ジオメトリシェーダに送信することと、
前記元の一連の頂点及び前記新たな一連の平面充填された頂点に基き、前記頂点シェーダで、修正された頂点データを生成することと、
前記新たな一連の接続性情報に基き前記修正された頂点データの一部を前記頂点シェーダから前記ジオメトリシェーダに送信することと、
前記修正された頂点データの前記一部により画定されるプリミティブを処理することと、を実行する方法。
【請求項２】
請求項１の方法であって、
前記元の一連の頂点がスレッショルドを満たさない場合に、表面データ出力を処理するための前記平面充填エンジンの使用を無効にすることを更に備えた方法。
【請求項３】
請求項２の方法であって、前記スレッショルドは観察平面からの距離によって定義される方法。
【請求項４】
請求項３の方法であって、前記スレッショルドは、特定のＧＰＵパイプラインの計算能力、表示領域及びユーザの好みのうち少なくとも一つに基いて調節される方法。
【請求項５】
請求項１の方法であって、前記修正された頂点データを前記頂点シェーダ内の評価シェーダに記憶することを更に備えた方法。
【請求項６】
請求項５の方法であって、
前記修正された頂点データの一部を前記送信することは、前記修正された頂点データの前記一部を前記評価シェーダから送信することを備えている方法。
【請求項７】
平面充填されたプリミティブデータをジオメトリシェーダへ供給するためのグラフィックス処理ユニットであって、
元の一連の頂点及び元の一連の接続性情報に基き、新たな一連の平面充填された頂点及び新たな一連の接続性情報を計算し、前記元の一連の頂点と、前記新たな一連の平面充填された頂点とを、第１の伝送を介して頂点シェーダに送信し、前記元の一連の頂点に対する前記新たな一連の接続性情報と、前記新たな一連の平面充填された頂点とを、第２の伝送を介して、前記頂点シェーダを通過することなく前記ジオメトリシェーダに送信するように構成された平面充填エンジンと、
前記元の一連の頂点及び前記新たな一連の平面充填された頂点に基き、修正された頂点データを生成するように構成された頂点シェーダと、
前記新たな一連の平面充填された頂点を前記頂点シェーダから受け取り、前記新たな一連の接続性情報に基き前記修正された頂点データの一部を要求し、前記修正された頂点データの前記一部により画定されるプリミティブを処理するように構成されたジオメトリシェーダと、を備えたグラフィックス処理ユニット。
【請求項８】
請求項７のグラフィックス処理ユニットであって、前記平面充填エンジンは前記元の一連の頂点がスレッショルドを満たさない場合に無効にされるグラフィックス処理ユニット。
【請求項９】
請求項８のグラフィックス処理ユニットであって、前記スレッショルドは観察平面からの距離によって画定されるグラフィックス処理ユニット。
【請求項１０】
請求項９のグラフィックス処理ユニットであって、前記スレッショルドは、特定のＧＰＵパイプラインの計算能力、表示領域及びユーザの好みのうち少なくとも一つに基いて調節されるグラフィックス処理ユニット。
【請求項１１】
請求項７のグラフィックス処理ユニットであって、前記頂点シェーダは前記修正された頂点データを評価シェーダに記憶するように構成されているグラフィックス処理ユニット。
【請求項１２】
請求項１１のグラフィックス処理ユニットであって、前記ジオメトリシェーダは前記修正された頂点データの前記一部を前記評価シェーダから受け取るように構成されているグラフィックス処理ユニット。
【請求項１３】
平面充填されたプリミティブデータをプロセッサがジオメトリシェーダへ供給することを可能にするために記録されたコンピュータプログラムを有するコンピュータ可読記憶デバイスであって、
前記コンピュータプログラムは、コンピューティングデバイスによって実行されると、
元の一連の頂点及び元の一連の接続性情報に基き、新たな一連の平面充填された頂点及び新たな一連の接続性情報を平面充填エンジンで計算することと、
前記元の一連の頂点と、前記新たな一連の平面充填された頂点とを、第１の伝送を介して、前記平面充填エンジンから頂点シェーダに送信することと、
前記元の一連の頂点に対する前記新たな一連の接続性情報と、前記新たな一連の平面充填された頂点とを、第２の伝送を介して、前記平面充填エンジンから前記頂点シェーダを通過することなく前記ジオメトリシェーダに送信することと、
前記元の一連の頂点及び前記新たな一連の平面充填された頂点に基き、前記頂点シェーダで、修正された頂点データを生成することと、
前記新たな一連の接続性情報に基き前記修正された頂点データの一部を前記頂点シェーダから前記ジオメトリシェーダに送信することと、
前記修正された頂点データの前記一部により画定されるプリミティブを処理することと、
を前記コンピュータデバイスに実行させる、コンピュータ可読記憶デバイス。
【請求項１４】
請求項１３のコンピュータ可読記憶デバイスであって、
前記コンピュータプログラムは、前記元の一連の頂点がスレッショルドを満たさない場合に、表面データ出力を処理するための前記平面充填エンジンの使用を無効にすることを更に含むコンピュータ可読記憶デバイス。
【請求項１５】
請求項１４のコンピュータ可読記憶デバイスであって、前記スレッショルドは観察平面からの距離によって定義されるコンピュータ可読記憶デバイス。
【請求項１６】
請求項１５のコンピュータ可読記憶デバイスであって、前記スレッショルドは、特定のＧＰＵパイプラインの計算能力、表示領域及びユーザの好みのうち少なくとも一つに基いて調節されるコンピュータ可読記憶デバイス。
【請求項１７】
請求項１３のコンピュータ可読記憶デバイスであって、
前記コンピュータプログラムは、前記修正された頂点データを前記頂点シェーダ内の評価シェーダに記憶することを更に含むコンピュータ可読記憶デバイス。
【請求項１８】
請求項１７のコンピュータ可読記憶デバイスであって、
前記コンピュータプログラムは、前記修正された頂点データの一部を前記評価シェーダから取り出すことを更に含むコンピュータ可読記憶デバイス。
【請求項１９】
請求項１の方法であって、前記元の一連の接続性情報及び前記新たな一連の接続性情報の各々は、前記元の一連の頂点と前記新たな一連の平面充填された頂点との間の接続を特定する情報を含む、方法。
【請求項２０】
請求項７のグラフィックス処理ユニットであって、前記元の一連の接続性情報及び前記新たな一連の接続性情報の各々は、前記元の一連の頂点と前記新たな一連の平面充填された頂点との間の接続を特定する情報を含む、グラフィックス処理ユニット。
【請求項２１】
請求項１３のコンピュータ可読記憶デバイスであって、前記元の一連の接続性情報及び前記新たな一連の接続性情報の各々は、前記元の一連の頂点と前記新たな一連の平面充填された頂点との間の接続を特定する情報を含む、コンピュータ可読記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してグラフィックス処理ユニットにおける平面充填動作を最適化することに関する。
【背景技術】
【０００２】
グラフィックス処理ユニット（ＧＰＵ）はグラフィックス処理動作に対して最適化された特殊目的の集積回路である。ＧＰＵは多くの場合、グラフィックス処理を必要とするアプリケーション、例えばビデオゲームアプリケーションを実行するために使用されるコンピュータデバイス（例えばパーソナルコンピュータ、レンダリングファーム又はサーバ、携帯型デバイス、デジタルテレビジョン等）内に組み込まれる。
【０００３】
最新のＧＰＵ実装においては、グラフィックス動作の処理は種々の機能ユニットに分けられ、その各々は処理パイプラインの異なる段階内に配置される。典型的には、ＧＰＵへの入力は、一連の頂点及びそれらの頂点が互いにどのように接続されているかを特定する幾つかの接続性情報の形態にある。一連の頂点と当該一連の頂点のための接続性情報との組み合わせが幾何プリミティブ(geometric primitive)を画定する(defines)。しばしば幾何プリミティブの選択は三角形であり、三角形は３つの頂点と接続性情報として提示される３つの辺縁とによって画定される。
【０００４】
各幾何プリミティブが描画(rendering)のためＧＰＵによって処理されるとき、個々の頂点は頂点シェーダ(vertex shader)によって処理される。頂点シェーダは個々の頂点に適用する動作を実行するために一般的には使用される。それらの動作の例は変換(transform)動作及び明暗(lighting)動作を含む。それらの動作の結果として、計算された頂点位置、当該頂点でのプリミティブの色、及びテクスチュアマッピング(texture mapping)のための当該頂点でのでテクスチュア座標に関するデータが一般的に算出される。
【０００５】
個々の頂点を取り込んだ計算が実行された後、パイプラインの追加的な段階が全部のプリミティブに対する処理を実行してよい。概してジオメトリシェーダ(geometry shader)と称されるこの段階は、プリミティブ全体に対してグラフィックス技術を適用することができ、場合によっては追加的なプリミティブの生成をもたらす。例えばジオメトリシェーダは、頂点を再配置しあるいはファー及びフィン(fur and fin)技術を利用するために置換マップ(displacement map)を適用するのに用いられてよい。
【０００６】
ジオメトリシェーダ段階が完了すると、その出力は二次元画像への変換のためのラスタライザ(rasterizer)へ通常は送られ、更なる強化(enhancements)がピクセルシェーダによって実行され得る。
【０００７】
ジオメトリシェーダによって実行される技術は、描画されるオブジェクトの見え方を強化する目的のために典型的には追加的なプリミティブの生成をもたらす。置換マップを適用することによって、例えば追加的なプリミティブが追加的な頂点を提供するために生成され、追加的な頂点は次いでテクスチュアビットマップに従って置換される。一般的に、この技術の計算においてはより多くのプリミティブが用いられるので、最終オブジェクトはより滑らかに且つよりリアルに見えるであろう。しかし、多すぎる頂点を提供することは、頂点シェーダ及びジオメトリシェーダに過剰な負荷を与え得るので、特に描画されているオブジェクトが観察面から著しい距離に位置している場合にオブジェクトの顕著に改善された描画をもたらすことはできない。
【０００８】
従来の実装又は実施は、頂点シェーダ段階の直前にプリミティブの数を増やすための平面充填エンジン(tessellation engine)を用いることに頼ってきた。例えば、共通の保有に係る、バックナー等(buckner et al.)に対する米国特許出願公開番号２００４／００８５３１２（出願番号１０／２８７，１４３）は、その全体を参照することによりここに組み込まれ、当該平面充填を実行するための方法及び装置を開示している。しかし、従来の実装又は実施は、単に平面充填エンジンからの出力が頂点シェーダによって処理され次いでディスプレイへの描画のためのラスタライザに伝達されることを可能にしてきたにすぎない。もし従来の実装を用いる開発者がプリミティブを平面充填することによりプリミティブカウントを増やしたいとして、平面充填されたプリミティブをジオメトリシェーダを介して実行したとすると、平面充填された出力をメモリ内のどこかに記憶することが必要であった。開発者はその結果、ジオメトリシェーダが平面充填されたデータに対してその計算を実行することを可能にするために、平面充填されたデータに対してＧＰＵパイプラインを再動作させる必要があった。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従って、平面充填されたデータをジオメトリシェーダにおいて更に処理する場合に平面充填に起因する描画コストを低減する改良された技術が求められている。
【課題を解決するための手段】
【００１０】
本発明の実施形態は平面充填されたプリミティブデータをジオメトリシェーダへ供給するための方法を含む。方法は、元の一連の頂点及び元の一連の接続性データに基き一連の平面充填された頂点及び計算された一連の接続性データを平面充填エンジンで計算することと、元の一連の頂点及び一連の平面充填された頂点に基き頂点シェーダで計算された頂点データを生成することと、計算された一連の接続性データをジオメトリシェーダで受け取ることと、計算された一連の接続性データに基き計算された頂点データの一部をジオメトリシェーダで要求することと、計算された頂点データの一部により画定されるプリミティブを処理することとを備えている。
【００１１】
本発明の実施形態は追加的に、平面充填されたプリミティブデータをジオメトリシェーダへ供給するためのグラフィックス処理ユニットを含む。グラフィックス処理ユニットは、元の一連の頂点及び元の一連の接続性データに基き一連の平面充填された頂点及び計算された一連の接続性データを計算するための平面充填エンジンと、元の一連の頂点及び一連の平面充填された頂点に基き計算された頂点データを生成するための頂点シェーダと、計算された一連の接続性データを受け取り、計算された一連の接続性データに基き計算された頂点データの一部を要求し、計算された頂点データの一部により画定されるプリミティブを処理するためのジオメトリシェーダとを備えている。
【００１２】
本発明の実施形態は更に、平面充填されたプリミティブデータをプロセッサがジオメトリシェーダへ供給することを可能にするために記録されたコンピュータプログラム論理を有するコンピュータ使用可能媒体を備えたコンピュータプログラム製品を含む。コンピュータプログラム論理は、プロセッサが、元の一連の頂点及び元の一連の接続性データに基き一連の平面充填された頂点及び計算された一連の接続性データを平面充填エンジンで計算し、元の一連の頂点及び一連の平面充填された頂点に基き頂点シェーダで計算された頂点データを生成し、計算された一連の接続性データをジオメトリシェーダで受け取り、計算された一連の接続性データに基き計算された頂点データの一部をジオメトリシェーダで要求し、計算された頂点データの一部により画定されるプリミティブを処理することを可能にするデータ及び／又は命令を備えている。
【００１３】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に記述されている。本発明がここに記述される特定の実施形態に限定されないことを特記しておく。当該実施形態は例示の目的のみのためにここに提示されている。追加的な実施形態はここに含まれる教示に基き関連分野を含めた当業者にとって明らかであろう。
【図面の簡単な説明】
【００１４】
添付の図面は、ここに組み込まれまた出願書類の一部をなし、本発明の実施形態を示しそして、明細書と共に本発明の原理を説明し並びに関連分野を含めた当業者が本発明をつくり及び使用することを可能にするのに更に役立つ。
【００１５】
【図１】図１は本発明の実施形態に従う典型的なＧＰＵパイプライン実装を示す図である。
【００１６】
【図２】図２は本発明の実施形態に従い平面充填エンジンを組み込んだ典型的なＧＰＵパイプライン実装を示す図である。
【００１７】
【図３】図３は本発明の実施形態に従い平面充填エンジンを組み込んだ最適化されたＧＰＵパイプライン実装を示す図である。
【００１８】
【図４】図４は本発明に従うＧＰＵパイプライン実装の段階の間での通信を示す図である。
【００１９】
【図５】図５は本発明の実施形態に従い平面充填エンジンを有するＧＰＵパイプライン実装がジオメトリシェーダによる処理を強化するように動作可能なステップを示すフローチャートである。
【００２０】
【図６】図６は本発明の実施形態が実装され得る例示的なコンピュータシステムを示す図である。
【００２１】
【図７】図７は本発明の実施形態が実装され得るコンピュータシステムにおけるインタフェース階層を例示的に示す図である。
【００２２】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に記述されている。本発明がここに記述される特定の実施形態に限定されないことを特記しておく。当該実施形態は例示の目的のみのためにここに提示されている。追加的な実施形態はここに含まれる教示に基き関連分野を含めた当業者にとって明らかであろう。
【発明を実施するための形態】
【００２３】
《序論》
本発明の以下の詳細な説明は、この発明に合致する例示的な実施形態を示す添付の図面を参照する。他の実施形態も可能であり、本発明の精神及び範囲内で実施形態に対して修正がなされ得る。従って、詳細な説明は本発明を限定することを意図されたものではない。むしろ本発明の範囲は添付の特許請求の範囲によって画定される。
【００２４】
本発明はソフトウエア、ハードウエア、ファームウエア、及び／又は図面に示された実体の多くの異なる実施形態において後述するように実装又は実施され得ることが当業者にとって明らかであろう。本発明を実装又は実施するハードウエアの特別な制御を伴ういかなる現実的なソフトウエアコードも本発明を限定していない。このように、本発明の動作上の挙動は、ここに提示される詳細さのレベルを前提として実施形態の修正及び変更が可能であるとの理解のもとに記述されることになる。また、そして当業者にとって明らかであろうように、この発明の種々の実施形態のシミュレーション、合成及び／又は製造は、一つには、一般的なプログラミング言語（例えばＣ又はＣ＋＋）、ＶｅｒｉｌｏｇＨＤＬ、ＶＨＤＬ、ＡｌｔｅｒａＨＤＬ（ＡＨＤＬ）等を含むハードウエア記述言語（ＨＤＬ）、あるいは他の利用可能なプログラミングを含むコンピュータ可読コード（上述したような）及び／又は回路等キャプチュアツール（例えば回路キャプチュアツール）の使用を通して達成され得る。このコンピュータ可読コードは、半導体、磁気ディスク、光学ディスク（例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ）を含むあらゆる既知のコンピュータ使用可能媒体内に配置されてよく、またコンピュータが使用可能な（例えば可読な）伝送媒体（例えばデジタル、光学的、又はアナログ系の媒体を含む搬送波又は他のあらゆる媒体）において具現化されるコンピュータデータ信号として処置されてよい。従って、コードは、インターネット及びそれと同等のもの(the Internet and internets)を含む通信網を介して伝送されてよい。上述したシステム及び技術により達成される機能及び／又は提供される構造は、プログラムコードにおいて具現化されるコア（例えばＧＰＵコア）内に表現することができ、また集積回路の生産の一部としてハードウエアに変換されてよいことが理解される。
【００２５】
図１は少なくとも４つの処理段階を有する典型的なグラフィックス処理ユニット（ＧＰＵ）パイプライン１００を示している。最新のＧＰＵパイプライン１００は大抵、頂点シェーダ１０２段階、ジオメトリシェーダ１０４段階、ラスタライザ１０６段階、及びピクセルシェーダ１０８段階を有している。ＧＰＵパイプライン１００の典型的な使用においては、グラフィックスアプリケーションが頂点シェーダ１０２に一連の頂点及び一連の接続性データを供給する。この一連の頂点及び一連の接続性データは一緒に、描画されるべきオブジェクト又は場面を画定する。
【００２６】
頂点シェーダ１０２は一連の頂点を操作して頂点毎動作を実行するように動作可能である。これらの動作は例えば変換動作及び明暗動作を含む。頂点シェーダは、例えばオブジェクトを包含する複数頂点の各々にオフセットを付加することでオブジェクトを場面の範囲内で動かすことによって、描画されるべきオブジェクトをグラフィックスアプリケーションが操作することを可能にする。例として、グラフィックスアプリケーションが描画されるべきオブジェクトをｘ，ｙ，ｚ空間内のｘ軸に沿って５単位だけ動かしたい場合、オブジェクトを包含している各頂点のｘ座標に対する＋５のオフセットを計算して、オフセットされた新たな場所へのオブジェクト全体の動きをもたらす上で、頂点シェーダは有用であろう。本発明の実施形態によると、そのような計算は、単一命令多重データ（ＳＩＭＤ）命令をＧＰＵパイプライン１００に対して発行することによって達成される。
【００２７】
ジオメトリシェーダ１０４は、更なる操作に備えて一連の操作された頂点及び一連の接続性データを頂点シェーダから取得する。ジオメトリシェーダ１０４はプリミティブとして知られる単純な幾何学形状に対して動作するように構成される。プリミティブは任意の一連の頂点データ及び当該一連のデータ内での頂点間の接続性データであってよいが、多くのジオメトリシェーダ１０４実装は主として複数三角形上で動作する。三角形は３つの頂点とこれら３つの頂点の間の接続性データとにより画定される。ジオメトリシェーダ１０４は例えば、一連のプリミティブ内の頂点を再配置しあるいは一連のプリミティブに対してファー及びフィン技術を利用するために置換マップを適用するのに用いられてよい。
【００２８】
前述の技術を適用するジオメトリシェーダ１０４の結果は、追加的な頂点及び接続性データの生成であってよく、従って追加的なプリミティブを形成してよい。例えば、置換マップの適用は、以前には頂点が位置していなくてよかったオブジェクトの領域を置換するために、追加的な頂点及び対応する接続性データの生成をもたらしてよい。
【００２９】
頂点シェーダ１０２及びジオメトリシェーダ１０４で適用される技術は、より滑らかでより複雑なオブジェクトをもたらす、ジオメトリシェーダ１０４への入力としてのより高いプリミティブカウントからの利益を享受する傾向にある。従って、頂点シェーダ１０２及びジオメトリシェーダ１０４でのプリミティブ操作技術の適用からより良い結果を得るために、ＧＰＵパイプライン１００への入力として高次の表面を用いることが有益である。
【００３０】
ラスタライザ１０６は最終的な一連の頂点と一連の接続性データとを取り込み、二次元内に描画されるとすれば、一連の頂点及び一連の接続性データからなるどんな場面が対応する視点から見えるであろうかを、観測面に基き決定する。この描画される場面は、典型的には二次元ディスプレイデバイス上に表示される準備が整っている一連の画素（ピクセル）からなり、次いでピクセル毎レベルでの追加的な処理のためにピクセルシェーダ１０８へ送られる。
【００３１】
前述したように、画像品質を目的として追加的なプリミティブを有して連携することが、ＧＰＵパイプライン１００内でプリミティブの処理を実行する場合に概して有益である。
【００３２】
図２はＧＰＵパイプライン２００を示すブロック図である。ＧＰＵパイプライン２００は頂点シェーダ２０３並びにＧＰＵパイプライン１００におけるのと同様のジオメトリシェーダ１０４、ラスタライザ１０６及びピクセルシェーダ１０８を含む。ＧＰＵパイプラインはまた、既存のプリミティブに基き追加的なプリミティブを導入する処理を達成するための平面充填エンジン２０２を含み、処理は「平面充填(tessellation)」として知られている。
【００３３】
平面充填エンジン２０２は一連の頂点データ及び一連の接続性データを取り込み、結果としてのプリミティブを平面充填するように動作し、新たな一連の頂点データ及び新たな接続性データを更なる処理のために頂点シェーダ２０３に供給する。共通の保有に係る、バックナー等(buckner et al.)に対する米国特許出願公開番号２００４／００８５３１２（出願番号１０／２８７，１４３）は、その全体を参照することによりここに組み込まれ、当該平面充填を実行するための方法及び装置を開示している。平面充填エンジン２０２の出力は次いで、従来の経路におけるように頂点シェーダ２０３へ送られ、頂点シェーダ２０３が新たな一連の頂点を計算してそれらを評価シェーダ２０４内に記憶することを可能にする。ラスタライザ１０６は続いて評価シェーダ２０４から頂点を検索し(retrieve)前述のように動作を継続することができる。
【００３４】
この実装においては、平面充填された出力がジオメトリシェーダ１０４によって検索され得るようにする手段が無いので、平面充填された出力に対してＧＰＵパイプライン２００内でジオメトリシェーダ動作を実行することは可能ではない。従って、ジオメトリシェーダ１０４技術を平面充填されたデータに適用するためには、平面充填されたデータをメモリ内のどこかに記憶し、頂点シェーダ２０３への入力としての平面充填されたデータを用いてＧＰＵパイプライン２００を再起動してデータをジオメトリシェーダ１０４に渡すことが必要となろう。
【００３５】
《平面充填を伴う最適化されたＧＰＵパイプライン》
図３は本発明の実施形態に従う最適化されたＧＰＵパイプライン３００を示している。ＧＰＵパイプライン３００は平面充填エンジン２０２、頂点シェーダ２０３、評価シェーダ２０４、ジオメトリシェーダ１０４、ラスタライザ１０６、及びピクセルシェーダ１０８を含む。
【００３６】
平面充填エンジン２０２は、本発明の実施形態に従い、一連の頂点及び一連の接続性情報をメモリ位置（図示せず）から検索する（又は受け取る）ように動作する。共通の保有に係る、バックナー等(buckner et al.)に対する米国特許出願公開番号２００４／００８５３１２（出願番号１０／２８７，１４３）は、その全体を参照することによりここに組み込まれ、そこに開示されている一つのように平面充填技術を適用することは、本発明の実施形態に従って平面充填エンジンが平面充填されたプリミティブを生成することを可能にする。
【００３７】
本発明の追加的実施形態によると、平面充填エンジン２０２での平面充填技術の適用は、元の入力プリミティブに対する元の頂点の出力の他、平面充填された頂点をももたらす。平面充填エンジンによって、新たな接続性情報が元の頂点及び平面充填された頂点に対応して生成される。例示的な実施形態では、平面充填された頂点は重心座標として出力される。
【００３８】
図３に示されるように、平面充填エンジン２０２からの出力はジオメトリシェーダ１０４及び頂点シェーダ２０３の両方に伝達される。本発明の実施形態によると、平面充填エンジン２０２は、元の頂点の他に平面充填された頂点をも包含する一連の計算された頂点を頂点シェーダ２０３へ伝達する。頂点シェーダ２０３は、本発明の実施形態に従って、一連の計算された頂点に対して頂点値を計算するように動作する。本発明の追加的な実施形態によると、頂点シェーダ２０３は、一連の計算された頂点の頂点に対して追加的な頂点動作、例えば変換動作を実行するように動作する。関連分野を含めた当業者であれば、頂点シェーダの機能が頂点レベル操作のための周知の技術を含むことを理解するであろう。一連の計算された頂点に対する全ての変更が実行される場合、一連の計算された頂点は評価シェーダ２０４へ書き込まれる。本発明の実施形態によると、評価シェーダ２０４は一連の計算された頂点が書き込まれるリングバッファを備えている。
【００３９】
平面充填エンジン２０２は更に、元の及び平面充填された全ての頂点の接続性データを直接的にジオメトリシェーダ１０４へ伝達する。ジオメトリシェーダ１０４はその後この接続性データを用いて、接続性データの一部(subset)によって画定されるプリミティブに対応する頂点を取得するように本発明の実施形態に従って動作することができる。ジオメトリシェーダ１０４は、本発明の実施形態に従って、頂点シェーダ２０３によって既に記憶された頂点データを評価シェーダ２０４から検索する。
【００４０】
図４の通信フロー図４００は本発明の実施形態に従うこの処理を更に示している。フロー図４００は平面充填エンジン２０２、頂点シェーダ２０３、評価シェーダ２０４、及びジオメトリシェーダ１０４の間での通信を示している。平面充填を実行した後ステップ４０２では、平面充填エンジン２０２が元の及び平面充填された一連の頂点を頂点シェーダ２０３へ伝達する。計算された一連の頂点を算出する際、ステップ４０４において頂点シェーダ２０３は、計算された一連の頂点を評価シェーダ２０４に記憶する。更にステップ４０６では、平面充填エンジン２０２が全ての頂点に対する計算された接続性データを直接的にジオメトリシェーダ１０４へ伝達する。
【００４１】
次いでステップ４０８では、接続性データを掌握したジオメトリシェーダ１０４が本発明の実施形態に従って、接続性データによって画定されるプリミティブに対応する一連の頂点を要求する。ステップ４１０では評価シェーダ２０４が次いで、要求された頂点を提供する。ジオメトリシェーダ１０４は次いで、ステップ４１０で返された頂点に対してプリミティブレベル動作を実行するように動作することができる。
【００４２】
《動作の方法》
図５は本発明の実施形態に従って図３のＧＰＵパイプライン３００が最適化された平面充填されたグラフィックスを提供するように動作可能なステップを示すフローチャート５００である。方法はステップ５０１で開始されてステップ５０２に進み、平面充填が要求されたかどうかが決定される。
【００４３】
本発明の実施形態によると、平面充填は所定のスレッショルドが満たされた場合にのみ適用される。このスレッショルドは、例えば描画されているオブジェクトへの観察平面からの距離、オブジェクトの曲率、又は他の基準であってよい。関連分野を含めた当業者であれば、グラフィックスアプリケーションの使用者が複雑性を知覚する能力に対して描画されたオブジェクトの複雑性を最適化するために、他のスレッショルドが存在することを認識するであろう。またスレッショルドは、本発明の実施形態に従い、特定のＧＰＵパイプライン３００の計算能力、表示領域、及び使用者の好み等の考察に基いて修正される。ステップ５０２で平面充填が要求されない場合には、方法は平面充填を行うことなしにステップ５０６に進む。
【００４４】
ステップ５０４では平面充填が平面充填エンジン２０２において実行され、平面充填エンジン２０２は平面充填された頂点を計算して、元の及び平面充填された全ての頂点の間での接続を画定する新たな接続性データを生成する。ステップ５０６では、本発明の実施形態に従って頂点シェーダ２０３が修正された頂点データを計算する。既に開示されたように、頂点シェーダ２０３は図４のステップ４０２で元の及び平面充填された一連の頂点を受け取り、それに基いて頂点シェーダ２０３はステップ４０４で一連の計算された頂点を生成するように動作することができる。本発明の追加的な実施形態によると、一連の計算された頂点は評価シェーダ２０４内に記憶される。
【００４５】
方法はステップ５０８に進み、評価シェーダ２０４が接続性データを平面充填エンジン２０２から受け取る。ステップ５１０では、ジオメトリシェーダ１０４が接続性データに対応するプリミティブを識別し、対応する頂点を検索する。本発明の実施形態によると、ジオメトリシェーダ１０４は、頂点シェーダ２０３によって既に記憶されている頂点を評価シェーダ２０４から検索する。ジオメトリシェーダ１０４は次いで、検索されたプリミティブに対してプリミティブレベル動作を実行し、方法はステップ５１２で終了する。
【００４６】
《コンピュータシステム実装》
本発明の種々の側面がソフトウエア、ファームウエア、ハードウエア、又はそれらの組み合わせによって実装され得る。図６は本発明又はその一部がコンピュータ可読コードとして実装され得る例示的なコンピュータシステム６００を示している。例えば、図５のフローチャート５００により示される方法がシステム６００内に実装されてよい。本発明の種々の実施形態がこの例示的なコンピュータシステム６００に関して説明される。本明細書を読んだ後で、どのようにして他のコンピュータシステム及び／又はコンピュータアーキテクチュアを用いて本発明を実装するかについて、関連分野を含めた当業者にとって明白になろう。
【００４７】
コンピュータシステム６００は１つ以上のプロセッサ、例えばプロセッサ６０４を含む。プロセッサ６０４は特定用途のあるいは汎用のプロセッサであってよい。プロセッサ６０４は通信基盤(communication infrastructure)６０６（例えばバス又はネットワーク）に接続される。
【００４８】
コンピュータシステム６００はまた、望ましくはランダムアクセスメモリ（ＲＡＭ）である主メモリ６０８を含み、更に補助メモリ６１０を含むことができる。補助メモリ６１０は例えば、ハードディスクドライブ６１２、リムーバブル記憶装置６１４、及び／又はメモリスティックを含んでいてよい。リムーバブル記憶装置６１４はフレキシブルディスクドライブ、磁気テープドライブ、光学ディスクドライブ、フラッシュメモリ等を備えていてよい。リムーバブル記憶装置６１４は周知の方法によりリムーバブル記憶ユニット６１８から読み出し及び／又はリムーバブル記憶ユニット６１８へ書き込みする。リムーバブル記憶ユニット６１８はフレキシブルディスク、磁気テープ、光学ディスク等を備えていてよく、リムーバブル記憶装置６１４によって読み出され且つ書き込まれる。関連分野を含めた当業者に理解されるであろうように、リムーバブル記憶ユニット６１８はコンピュータソフトウエア及び／又はデータが既に記憶されたコンピュータ利用可能記憶媒体を含む。
【００４９】
代替的な実装においては、補助メモリ６１０は、コンピュータプログラム又は他の命令がコンピュータシステム６００に読み込まれることを可能にする他の同様の手段を含むことができる。当該手段は例えばリムーバブル記憶ユニット６２２及びインタフェース６２０を含んでよい。当該手段の例は、プログラムカートリッジ及びカートリッジインタフェース（それらの例はビデオゲームデバイスにおいて見られる）、リムーバブルメモリチップ（例えばＥＰＲＯＭ又はＰＲＯＭ）及び関連するソケット、並びにソフトウエア及びデータをリムーバブル記憶ユニット６２２からコンピュータシステム６００へ転送することを可能にする他のリムーバブル記憶ユニット６２２及びインタフェース６２０を含むことができる。
【００５０】
コンピュータシステム６００はまた通信インタフェース６２４を含むことができる。通信インタフェース６２４はソフトウエア及びデータがコンピュータシステム６００と外部デバイスの間で転送されることを可能にする。通信インタフェース６２４はモデム、ネットワークインタフェース（例えばＬＡＮカード）、通信ポート、ＰＣＭＣＩＡスロット及びカード等を含んでいてよい。通信インタフェース６２４を介して転送されるソフトウエア及びデータは、電子的、電磁気的、光学的であってよい信号、又は通信インタフェース６２４によって受け取られることが可能な他の信号の形態にある。これらの信号は通信パス６２６を介して通信インタフェース６２４へ供給される。通信パス６２６は信号を伝え、ワイヤ若しくはケーブル、光ファイバ、電話線、携帯電話リンク、ＲＦリンク又は他の通信チャネルを用いて実装され得る。
【００５１】
この文書では、「コンピュータプログラム媒体」及び「コンピュータ使用可能媒体」という用語は、リムーバブル記憶ユニット６１８、リムーバブル記憶ユニット６２２、及びハードディスクドライブ６１２に組み込まれるハードディスクを一般的には参照して用いられる。通信パス６２６を介して伝えられる信号もまた、ここに説明される論理を具現化することができる。コンピュータプログラム媒体及びコンピュータ使用可能媒体はまた、主メモリ６０８及び補助メモリ６１０等のメモリ半導体（例えばＤＲＡＭ等）であってよいメモリを参照してよい。これらのコンピュータプログラム製品はコンピュータシステム６００にソフトウエアを供給するための手段である。
【００５２】
コンピュータプログラム（コンピュータ制御論理あるいはデータ及び／又は命令とも称される）は主メモリ６０８及び／又は補助メモリ６１０内に記憶される。コンピュータプログラムはまた、通信インタフェース６２４を介しても受け取られることができる。当該コンピュータプログラムは、実行されたときに、ここで論じられる本発明をコンピュータシステム６００が実施又は実装することを可能にする。特に、コンピュータプログラムは、実行されたときに、上述した図５のフローチャート５００で示される方法におけるステップのような本発明の処理をプロセッサ６０４が実施又は実装することを可能にする。従って、当該コンピュータプログラムはコンピュータシステム６００の制御器に相当する。ソフトウエアを用いて本発明が実施又は実装される場合、ソフトウエアはコンピュータプログラム製品内に記憶されていてよく、リムーバブル記憶装置６１４、インタフェース６２０、ハードディスクドライブ６１２又は通信インタフェース６２４を用いてコンピュータシステム６００内に取り込まれてよい。
【００５３】
本発明はまた、任意のコンピュータ利用可能媒体上に記憶されるソフトウエアを備えるコンピュータプログラム製品に向けられている。当該ソフトウエアは、１つ以上のデータ処理デバイス内で実行されたときに、１つ以上のデータ処理デバイスにここで説明されているような又は前述したような動作をさせ、ここに説明される本発明の実施形態を実行するコンピュータデバイス（例えばＡＳＩＣ又はプロセッサ）の合成及び／又は製造を可能にする。本発明の実施形態は、現在知られている又は将来知られることになる任意のコンピュータ使用可能又はコンピュータ可読の媒体を採用する。コンピュータ使用可能媒体の例は、限定はされないが、主要記憶デバイス（例えば任意の種類のランダムアクセスメモリ）、補助記憶デバイス（例えばハードドライブ、フレキシブルディスク、ＣＤ＿ＲＯＭ、ＺＩＰディスク、テープ、磁気記憶デバイス、光学記憶デバイス、ＭＥＭＳ、ナノテクノロジー記憶デバイス等）、及び通信媒体（例えば有線及び無線通信ネットワーク、ローカルエリアネットワーク、広域ネットワーク、イントラネット等）を含む。
【００５４】
《アプリケーションレベル実装》
図７は本発明の実施形態に従いグラフィックスアプリケーション７０２がここに開示されるグラフィックスハードウエアと相互作用するように動作可能な種々の抽象化階層を示す図表７００である。アプリケーション７０２は、グラフィックスＡＰＩ７０４及びオペレーティングシステム（ＯＳ）ＡＰＩ７０６を含む幾つかのアプリケーションプログラミングインタフェース（ＡＰＩ）にメッセージを送ることができる。グラフィックスＡＰＩ７０４は例えば、ワシントン、レドモンドのマイクロソフトコーポレーション（Microsoft Corporation of Redmond, Washington）によって開発されたマイクロソフトダイレクトＸ１０(Microsoft DirectX 10)、又はカリフォルニア、サニーベイルのシリコングラフィックスインク(Silicon Graphics, Inc. of Sunnyvale, California)によって開発されたオープングラフィックスライブラリ(Open Graphics Library)（ＯｐｅｎＧＬ）を含む。
【００５５】
種々のＡＰＩは更にグラフィックスハードウエア製造業者によって一般的には提供される抽象階層と相互作用して、特定のグラフィックスハードウエア、即ちグラフィックスハードウエアドライバ７０８と相互作用してよい。通信の種々のレベルがオペレーティングシステムカーネル７１０によって受け取られ、オペレーティングシステムカーネル７１０は次いで適切なメッセージをグラフィックスハードウエア７１２へ送る。
【００５６】
本発明の実施形態によると、前述した図３のグラフィックスパイプライン３００はグラフィックスハードウエア７１２内に実装される。本発明の追加的な実施形態によると、グラフィックスハードウエアドライバ７０８及びグラフィックスＡＰＩ７０４はグラフィックスパイプライン３００の平面充填の特徴を用いて最適化される。
【００５７】
《結論》
本発明の種々の実施形態が上に説明されてきたが、それらは例示のみを目的として提示されたものであり、限定を目的とはしていない。添付の特許請求の範囲で画定されるような本発明の精神及び範囲から逸脱することなしに、形態及び詳細における種々の変更がここになされ得ることが関連分野をも含めた当業者によって理解されるであろう。本発明はこれらの例示に限定されないことが理解されるべきである。本発明はここに説明されるように動作する任意の要素に適用可能である。従って、本発明の広さ及び範囲は上述のいかなる例示的実施形態によっても限定されるべきではなく、後述の特許請求の範囲及びそれらの均等なものに従ってのみ画定されるべきである。
【図１】
0005616333.tif 000002
【図２】
0005616333.tif 000003
【図３】
0005616333.tif 000004
【図４】
0005616333.tif 000005
【図５】
0005616333.tif 000006
【図６】
0005616333.tif 000007
【図７】
0005616333.tif 000008