(57)【要約】グラフィックス処理装置（ＧＰＵ）上で実行されるグラフィックス・パイプラインを用いて２次元（２−Ｄ）曲線を効率的にテッセレーションするための方法、システム、及びコンピュータ記憶媒体が提供される。中央処理装置（ＣＰＵ）は、１以上の２−Ｄ曲線を有するジオメトリを、扇形基点及び４つの制御点を有する少なくとも１つのベジェ扇形を有する中間テッセレーションに変換する。中間テッセレーションは、グラフィックス・パイプラインに送信される。グラフィックス・パイプラインにおけるハル・シェーダは、ベジェ扇形の４つの制御点を含むバウンディング・ボックスの幅又は高さの最大値に基づいてベジェ扇形曲線を定められた数の三角形に細分割することにより、ベジェ扇形曲線を近似するよう構成される。グラフィックス・パイプラインにおけるドメイン・シェーダは、ベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するよう構成される。
2016520920.tif 000002
【特許請求の範囲】
【請求項１】
１以上のコンピュータ記憶媒体であって、当該コンピュータ記憶媒体は、当該コンピュータ記憶媒体上に具現化されたコンピュータ実行可能命令を有し、前記コンピュータ実行可能命令が実行されたとき、前記コンピュータ実行可能命令は、アンチエイリアシングされた２次元曲線をレンダリングする方法を実行し、前記方法は、
シーン・データ内のオブジェクトからテッセレーションされたジオメトリック形状のセットを生成することにより、前記シーン・データを中間テッセレーションに変換するステップであって、前記ジオメトリック形状のセットは、４つの制御点及び扇形基点を有する少なくとも１つのベジェ扇形を含む、ステップと、
とりわけ、前記少なくとも１つのベジェ扇形の前記４つの制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいて前記少なくとも１つのベジェ扇形の曲線を定められた数の三角形に細分割することにより、前記少なくとも１つのベジェ扇形の前記曲線を近似するように、グラフィックス・パイプラインにおけるハル・シェーダを構成するための第１の命令を生成するステップと、
前記少なくとも１つのベジェ扇形の前記曲線に沿った前記定められた数の三角形の各々についての頂点位置を決定するように、前記グラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第２の命令を生成するステップと、
前記中間テッセレーションを前記グラフィックス・パイプラインに送信するステップと、
を含む、コンピュータ記憶媒体。
【請求項２】
前記方法は、
前記グラフィックス・パイプラインにおけるレンダリング・ターゲット記憶値を定めるための第３の命令を生成するステップと、
前記グラフィックス・パイプラインにおけるラスタライザ用のサンプリング・レートを定めるための第４の命令を生成するステップであって、前記サンプリング・レートは、前記レンダリング・ターゲット記憶値から独立して定められる、ステップと、
をさらに含む、請求項１記載のコンピュータ記憶媒体。
【請求項３】
前記方法は、
前記第１の命令、前記第２の命令、前記第３の命令、及び前記第４の命令を、グラフィックス処理装置における関数を構成するアプリケーション・プログラミング・インタフェースに送信するステップ
をさらに含む、請求項２記載のコンピュータ記憶媒体。
【請求項４】
前記定められた数の三角形は、最大高さ値又は最大幅値の１以上の範囲と、対応する細分割ファクタと、を含むルックアップ・テーブルに基づいて決定される、請求項２記載のコンピュータ記憶媒体。
【請求項５】
前記定められた数の三角形の各々についての前記頂点位置は、ベルンシュタイン多項式を部分的に用いて決定される、請求項２記載のコンピュータ記憶媒体。
【請求項６】
グラフィックス処理装置（ＧＰＵ）上で実行されるグラフィックス・パイプラインにおいてオブジェクトの中間テッセレーションをラスタライズする方法であって、前記中間テッセレーションは、４つの制御点及び扇形基点を有する少なくとも１つのベジェ扇形を含み、当該方法は、
コンピューティング・デバイスの中央処理装置（ＣＰＵ）から、前記中間テッセレーションを受信するステップと、
とりわけ、前記少なくとも１つのベジェ扇形の曲線を定められた数の三角形に細分割することにより、前記少なくとも１つのベジェ扇形の前記曲線を近似するように、前記グラフィックス・パイプラインにおけるハル・シェーダを構成するための第１の命令を受信するステップと、
前記コンピューティング・デバイスを通じて、前記第１の命令に基づいて前記ハル・シェーダを構成するステップと、
前記少なくとも１つのベジェ扇形の前記曲線に沿った前記定められた数の三角形の各々についての頂点位置を決定するように、前記グラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第２の命令を受信するステップと、
前記コンピューティング・デバイスを通じて、前記第２の命令に基づいて前記ドメイン・シェーダを構成するステップと、
を含む、方法。
【請求項７】
前記ハル・シェーダが、入力カバレッジ・マスクの前記少なくとも１つのベジェ扇形に対して前記第１の命令を実行するステップと、
前記ドメイン・シェーダが、前記入力カバレッジ・マスクの前記少なくとも１つのベジェ扇形に対して前記第２の命令を実行するステップと、
をさらに含む、請求項６記載の方法。
【請求項８】
前記ハル・シェーダが、前記中間テッセレーションの前記少なくとも１つのベジェ扇形に対して前記第１の命令を実行するステップは、部分的に、
前記少なくとも１つのベジェ扇形の前記４つの制御点を含む最小バウンディング・ボックスを算出するステップと、
前記最小バウンディング・ボックスの高さ及び幅のうちの少なくとも１つの最大値を決定するステップと、
最大高さ値又は最大幅値の１以上の範囲と、対応する細分割ファクタと、を含むルックアップ・テーブルにアクセスするステップと、
前記最小バウンディング・ボックスの前記高さ及び前記幅のうちの少なくとも１つの前記最大値を、前記ルックアップ・テーブルにおける前記１以上の範囲のうちの少なくとも１つとマッチングするステップと、
前記のマッチングされた範囲に対応する細分割ファクタを決定するステップと、
前記少なくとも１つのベジェ扇形の前記曲線を、前記細分割ファクタと等しい数の三角形に細分割するステップと、
を含む、請求項７記載の方法。
【請求項９】
前記グラフィックス・パイプラインにおけるレンダリング・ターゲット記憶値を定めるための第３の命令を受信するステップと、
前記コンピューティング・デバイスを通じて、前記レンダリング・ターゲット記憶値に対応する、前記ＧＰＵにおけるメモリの量を割り当てるステップと、
前記グラフィックス・パイプラインにおけるラスタライザ用のサンプリング・レートを定めるための第４の命令を受信するステップであって、前記サンプリング・レートは、前記レンダリング・ターゲット記憶値から独立して定められる、ステップと、
前記コンピューティング・デバイスを通じて、前記サンプリング・レートでシーン・データをサンプリングするように前記ラスタライザを構成するステップと、
をさらに含む、請求項６記載の方法。
【請求項１０】
前記サンプリング・レートは、前記レンダリング・ターゲット記憶値より大きい、請求項９記載の方法。
【請求項１１】
前記レンダリング・ターゲット記憶値は、レンダリング画像における１ピクセル毎ピクセルと等しく、前記サンプリング・レートは、４サブピクセル毎ピクセルに設定される、請求項９記載の方法。
【請求項１２】
前記第１の命令は、
（Ａ）前記ハル・シェーダが、前記少なくとも１つのベジェ扇形を２つの辺及び１つの湾曲辺を有する変形三角形として扱うことを指定するtriというドメイン命令と、
（Ｂ）前記少なくとも１つのベジェ扇形の内部を分割するための分割命令と、
（Ｃ）前記少なくとも１つのベジェ扇形の前記湾曲辺が三角形のセットに細分割されることを指定する出力トポロジ命令と、
（Ｄ）前記少なくとも１つのベジェ扇形の前記分割により内部三角形が生成されないことを指定する内部テッセレーション・ファクタ命令であって、内部三角形は、前記少なくとも１つのベジェ扇形の前記曲線の境界とエッジを共有しない三角形を含む、内部テッセレーション・ファクタ命令と、
をさらに含む、請求項６記載の方法。
【請求項１３】
前記分割命令は、整数分割命令及びフラクショナル分割命令のうちの少なくとも１つを含む、請求項１２記載の方法。
【請求項１４】
グラフィックス処理装置（ＧＰＵ）を制御するためのアプリケーション・プログラム・インタフェース（ＡＰＩ）を記憶しているコンピュータ記憶媒体であって、前記ＡＰＩは、
とりわけ、少なくとも１つのベジェ扇形を定める４つの制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいて前記少なくとも１つのベジェ扇形の曲線を定められた数の三角形に細分割することにより前記少なくとも１つのベジェ扇形の前記曲線を近似するためにハル・シェーダ・コンポーネントにより使用されるパラメータを定める細分割ファクタ・プロパティと、
前記少なくとも１つのベジェ扇形の前記曲線に沿った前記定められた数の三角形の各々についての頂点位置を決定するためにドメイン・シェーダ・コンポーネントにより使用されるパラメータを定める位置ファクタ・プロパティと、
を含む、コンピュータ記憶媒体。
【請求項１５】
前記ＡＰＩは、
レンダリング画像に対して前記ＧＰＵ上で割り当てられるメモリの量を定めるレンダリング・ターゲット記憶プロパティと、
ラスタライザ・コンポーネントにより使用されるサンプリング・レートを定めるサンプリング・レート・プロパティと、
をさらに含む、請求項１４記載のコンピュータ記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
２次元（２−Ｄ）グラフィックス・ライブラリの主要なタスクのうちの１つは、シーン・データを取得し、シーン・データを、弧、ベジェ曲線、及び直線セグメント等の高レベル・プリミティブにテッセレーションし、コンピュータ・ディスプレイ上での出力又はビットマップ・ファイル・フォーマットでの記憶のために、データをラスタライズすることである。高速化のために、グラフィックス・ライブラリは、レンダリングのいくつかの段階をグラフィックス処理装置（ＧＰＵ）にオフロードすることがある。弧及びベジェ曲線等のジオメトリ（幾何学的形状）（geometry）は、一般に、オフロードに対する特定の課題をもたらしている。というのは、ＧＰＵは、通常、そのようなジオメトリを処理することができないからである、あるいは、高いピクセル単位のコストでしか、そのようなタイプのジオメトリを処理することができないからである。したがって、オフロードする前に、中央処理装置（ＣＰＵ）は、まず、弧及びベジェ曲線を、ＧＰＵが処理できる三角形等の低レベル・プリミティブに変換しなければならない。これは、貴重なＣＰＵ処理能力を消費し、しばしば、レンダリング・プロセスにおけるボトルネックの原因となる。
【発明の概要】
【０００２】
この概要は、発明を実施するための形態において以下でさらに説明されるコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を決定する際の助けとして使用されることを意図するものでもない。
【０００３】
本発明の実施形態は、とりわけ、ＧＰＵ上で実行されるグラフィックス・パイプラインを用いて２−Ｄ曲線を効率的にテッセレーションするためのシステム、方法、及びコンピュータ記憶媒体に関する。ＣＰＵは、１以上の２−Ｄ曲線を有するシーン・データ及び／又はオブジェクトを、少なくとも１つのベジェ扇形（Bezier  fan）を有する中間テッセレーション（intermediate  tessellation）に変換する。中間テッセレーションは、グラフィックス・パイプラインに送信される。グラフィックス・パイプラインにおけるハル・シェーダは、ベジェ扇形の制御点を含むバウンディング・ボックス（bounding  box）の幅又は高さの最大値に基づいてベジェ扇形曲線を定められた数の三角形に細分割することにより、ベジェ扇形曲線を近似するよう構成される。グラフィックス・パイプラインにおけるドメイン・シェーダは、ベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するよう構成される。
【０００４】
本発明の実施形態は、ターゲット独立ラスタライゼーション（ＴＩＲ：target  independent  rasterization）とともに使用することができる。ＴＩＲは、グラフィックス・パイプラインにおけるラスタライゼーション段階中に取得されるピクセル・サンプルの数（「サンプリング・レート」として知られている）が、レンダリング画像用に割り当てられるメモリから独立して指定されることを可能にする。
【図面の簡単な説明】
【０００５】
以下において、添付の図面を参照しながら本発明が詳細に説明される。
【図１】本発明の実施形態を実施する際に使用するのに適した例示的なコンピューティング環境のブロック図。
【図２】本発明の実施形態を実施する際に使用するのに適した、２次元曲線用のテッセレーション方法を定めるための例示的なコンピューティング・システム・アーキテクチャのブロック図。
【図３】本発明の実施形態を実施する際に使用するのに適した、１以上の三角形及び１以上のベジェ扇形を有する中間テッセレーションをラスタライズする際に使用されるグラフィックス・パイプラインの図。
【図４】本発明の一実施形態に従ったベジェ扇形の図。
【図５】本発明の一実施形態に従った中間テッセレーションの図。
【図６】本発明の一実施形態に従った、グラフィックス処理装置上で実行されるグラフィックス・パイプラインにおいてテッセレーションされた中間テッセレーションの図。
【図７】本発明の一実施形態に従ったベジェ扇形の４つの制御点を含むバウンディング・ボックスの図。
【図８】本発明の一実施形態に従った、グラフィックス処理装置上で実行されるグラフィックス・パイプラインにおいてテッセレーションされた中間テッセレーションの図。
【図９】本発明の一実施形態に従った、アンチエイリアシングされた２次元曲線をレンダリングする例示的な方法のフロー図。
【図１０】本発明の一実施形態に従った、２次元曲線をテッセレーションするようグラフィックス処理装置に指示する例示的な方法のフロー図。
【発明を実施するための形態】
【０００６】
本発明の主題が、法的要件を満たすよう、本明細書において特定的に説明される。しかしながら、説明自体は、本特許の範囲を限定するよう意図されるものではない。そうではなく、本発明者らは、特許請求される主題が、他の現在の技術又は将来の技術と協働して、本明細書で説明するステップとは異なるステップ又は類似のステップの組合せを含む他の形でも具現化され得ることを意図している。さらに、用語「ステップ」及び／又は用語「ブロック」は、使用される方法の様々な要素を含むよう本明細書において使用され得るが、これらの用語は、個々のステップの順序が明示的に記載されない限り、及び、個々のステップの順序が明示的に記載されるときを除いて、本明細書で開示する様々なステップ間のいずれかの特定の順序を示すものとして解釈されるべきではない。
【０００７】
本明細書で説明する技術の様々な態様は、概して、とりわけ、ＧＰＵ上で実行されるグラフィックス・パイプラインを用いて２−Ｄ曲線を効率的にテッセレーションするためのシステム、方法、及びコンピュータ記憶媒体を対象とする。ＣＰＵは、１以上の２−Ｄ曲線を有するシーン・データ・オブジェクトを、扇形基点（fan  origin）及び４つの制御点を有する少なくとも１つのベジェ扇形を有する中間テッセレーションに変換する。中間テッセレーションは、グラフィックス・パイプラインに送信される。グラフィックス・パイプラインにおけるハル・シェーダは、ベジェ扇形の４つの制御点を含むバウンディング・ボックスの幅又は高さの最大値に基づいてベジェ扇形曲線を定められた数の三角形に細分割することにより、ベジェ扇形曲線を近似するよう構成される。グラフィックス・パイプラインにおけるドメイン・シェーダは、ベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するよう構成される。
【０００８】
本発明の実施形態は、ターゲット独立ラスタライゼーション（ＴＩＲ）とともに使用することができる。ＴＩＲは、グラフィックス・パイプラインにおけるラスタライゼーション段階中に取得されるピクセル・サンプルの数（「サンプリング・レート」として知られている）が、レンダリング画像用に割り当てられるメモリから独立して指定されることを可能にする。
【０００９】
したがって、一実施形態において、本発明は、実行されたときにアンチエイリアシングされた２−Ｄ曲線をレンダリングする方法を実行する、１以上のコンピュータ記憶媒体上に具現化されたコンピュータ実行可能命令を有する１以上のコンピュータ記憶媒体を対象とする。この方法は、シーン・データを、シーン・データ内のオブジェクトからテッセレーションされたジオメトリック形状（geometric  shape）のセットを含む中間テッセレーションに変換するステップを含む。ジオメトリック形状のセットは、４つの制御点及び扇形基点を有する少なくとも１つのベジェ扇形を含む。とりわけ、少なくとも１つのベジェ扇形の４つの制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいて少なくとも１つのベジェ扇形の曲線を定められた数の三角形に細分割することにより、少なくとも１つのベジェ扇形の曲線を近似するようにグラフィックス・パイプラインにおけるハル・シェーダを構成するための第１の命令が生成される。少なくとも１つのベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するようにグラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第２の命令が生成される。中間テッセレーションは、グラフィックス・パイプラインに送信される。
【００１０】
別の実施形態において、本発明は、ＧＰＵ上で実行されるグラフィックス・パイプラインにおいてオブジェクトの中間テッセレーションをラスタライズする方法を対象とし、ここで、中間テッセレーションは、４つの制御点及び扇形基点を有する少なくとも１つのベジェ扇形を含む。当該方法は、コンピューティング・デバイスのＣＰＵから中間テッセレーションを受信するステップと、とりわけ、少なくとも１つのベジェ扇形の曲線を定められた数の三角形に細分割することにより、少なくとも１つのベジェ扇形の曲線を近似するようにグラフィックス・パイプラインにおけるハル・シェーダを構成するための第１の命令を受信するステップと、を含む。ハル・シェーダは、コンピューティング・デバイスを通じて、第１の命令に基づいて構成される。少なくとも１つのベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するようにグラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第２の命令が受信される。ドメイン・シェーダは、コンピューティング・デバイスを通じて、第２の命令に基づいて構成される。
【００１１】
さらに別の実施形態において、本発明は、ＧＰＵを制御するためのアプリケーション・プログラム・インタフェース（ＡＰＩ）を記憶しているコンピュータ記憶媒体を対象とする。ＡＰＩは、とりわけ、ベジェ扇形を定める４つの制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいて少なくとも１つのベジェ扇形の曲線を定められた数の三角形に細分割することにより少なくとも１つのベジェ扇形の曲線を近似するためにハル・シェーダ・コンポーネントにより使用されるパラメータを定める細分割ファクタ・プロパティ（subdivision-factor  property）を含む。ＡＰＩはまた、少なくとも１つのベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するためにドメイン・シェーダ・コンポーネントにより使用されるパラメータを定める位置ファクタ・プロパティ（position-factor  property）を含む。
【００１２】
本発明の実施形態の概要について簡潔に説明したが、次いで、本発明の実施形態を実施する際に使用するのに適した例示的な動作環境について説明する。概して複数の図、特に図１をまず参照すると、本発明の実施形態を実施するための例示的な動作環境が、コンピューティング・デバイス１００として、概して図示及び規定されている。コンピューティング・デバイス１００は、適切なコンピューティング環境の一例に過ぎず、本発明の使用又は機能の範囲に関して何らかの限定を示唆するよう意図されるものではない。コンピューティング・デバイス１００は、図示されるコンポーネントのいずれか１つ又は組合せに関連する何らかの依存関係又は要件を有するものとして解釈されるべきではない。
【００１３】
本発明は、携帯情報端末又は他のハンドヘルド・デバイス等のコンピュータ又は他のマシンにより実行されるプログラム・コンポーネント等のコンピュータ実行可能命令を含むコンピュータ・コード又はマシンが使用可能な命令の一般的コンテキストにおいて説明され得る。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、及び同様のものを含むプログラム・コンポーネントは、特定のタスクを実行する、あるいは特定の抽象データ型を実装するコードを指す。本発明の実施形態は、ハンドヘルド・デバイス、コンシューマ向け電子デバイス、汎用コンピュータ、特殊コンピューティング・デバイス等を含む様々なシステム構成において実施され得る。本発明の実施形態はまた、タスクが通信ネットワークを介してリンクされているリモート処理デバイスにより実行される分散コンピューティング環境において実施されてもよい。
【００１４】
引き続き図１を参照すると、コンピューティング・デバイス１００は、次のデバイスを直接的又は間接的に接続するバス１１０を含む：メモリ１１２、１以上のプロセッサ１１４、１以上のプレゼンテーション・コンポーネント１１６、入力／出力（Ｉ／Ｏ）ポート１１８、Ｉ／Ｏコンポーネント１２０、例示的な電源１２２、及びＧＰＵ１２４。バス１１０は、（アドレス・バス、データ・バス、又はこれらの組合せ等の）１以上のバスであり得るものを表す。明瞭さのために、図１の様々なブロックが線を用いて示されているが、実際には、様々なコンポーネントを描くことはそれほど明瞭ではなく、たとえて言うならば、線は、より正確にはグレーであり曖昧であろう。例えば、ディスプレイ・デバイス等のプレゼンテーション・コンポーネントはＩ／Ｏコンポーネント１２０であるとみなすことができる。また、ＣＰＵ及びＧＰＵはメモリを有する。図１の図は、本発明の１以上の実施形態に関連して使用することができる例示的なコンピューティング・デバイスの単なる例である。「ワークステーション」、「サーバ」、「ラップトップ」、「ハンドヘルド・デバイス」等のカテゴリ間で区別はなされない。なぜならば、これら全てが、図１の範囲内であることが意図され、「コンピュータ」又は「コンピューティング・デバイス」を指すからである。
【００１５】
コンピューティング・デバイス１００は、通常、様々なコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピューティング・デバイス１００によりアクセス可能な任意の利用可能な媒体とすることができ、揮発性媒体及び不揮発性媒体、リムーバブル媒体及び非リムーバブル媒体の両方を含む。コンピュータ読み取り可能媒体は、コンピュータ記憶媒体及び通信媒体を含む。コンピュータ記憶媒体は、信号自体を含まない。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータ等の情報の記憶のために任意の方法又は技術により実装された揮発性及び不揮発性のリムーバブル媒体及び非リムーバブル媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、若しくは他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、若しくは他の磁気記憶デバイス、又は、所望の情報を記憶するために使用することができ、コンピューティング・デバイス１００によりアクセスされ得る任意の他の媒体を含むが、これらに限定されるものではない。一方、通信媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータを、搬送波又は他の伝送機構等の変調されたデータ信号内に具現化するものであり、任意の情報配信媒体を含む。用語「変調されたデータ信号」は、信号内の情報を符号化するように設定又は変更された特性のうちの１以上の有する信号を意味する。限定ではなく、例として、通信媒体は、有線ネットワーク又は直接配線接続等の有線媒体と、音響、ＲＦ、赤外線、及び他の無線媒体等の無線媒体と、を含む。上記の任意の組合せも、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
【００１６】
メモリ１１２は、揮発性メモリ及び／又は不揮発性メモリの形態のコンピュータ記憶媒体を含む。メモリ１１２は、リムーバブルであってもよいし、非リムーバブルであってもよいし、これらの組合せであってもよい。例示的なメモリは、ソリッドステート・メモリ、ハード・ドライブ、光ディスク・ドライブ等を含む。コンピューティング・デバイス１００は、バス１１０、メモリ１１２、又はＩ／Ｏコンポーネント１２０等の様々なエンティティからデータを読み出す１以上のプロセッサ１１４を含む。１以上のプレゼンテーション・コンポーネント１１６は、データ・インジケーションをユーザ又は他のデバイスに提示する。例示的なプレゼンテーション・コンポーネント１１６は、ディスプレイ・デバイス、スピーカ、印刷コンポーネント、振動コンポーネント等を含む。Ｉ／Ｏポート１１８は、コンピューティング・デバイス１００が、いくつかは内蔵式であり得るＩ／Ｏコンポーネント１２０を含む他のデバイスに論理的に接続されることを可能にする。例示的なＩ／Ｏコンポーネント１２０は、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、カメラ、スキャナ、プリンタ、無線デバイス等を含む。例示的なＩ／Ｏコンポーネント１２０とのインタラクションは、タッチ、音声、ジェスチャ、及び同様のものを介するものであり得る。
【００１７】
コンピューティング・デバイス１００のコンポーネントは、画像処理において使用され得る。例えば、コンピューティング・デバイス１００を使用して、生画像を処理して様々なエフェクト及び調整を生画像に適用する、図３のグラフィックス・パイプライン３００と同様のグラフィックス・パイプラインを実装することができる。グラフィックス・パイプラインは、デジタル画像に対して実行される一連のオペレーションを含む。このようなパイプラインは、一般に、利用可能なハードウェアを活用しながらデジタル画像の効率的な処理を可能にするよう設計される。
【００１８】
グラフィックス・パイプラインを実装するために、ＧＰＵ１２４上の１以上の手続き型シェーダが使用される。手続き型シェーダは、グラフィックス・データに対して特殊オペレーションを実行するための、ＧＰＵ１２４の特殊処理サブユニットである。手続き型シェーダの一例は、例えば、ベジェ扇形等の２−Ｄ曲線を概して処理するハル・シェーダ１２６である。例えば、ハル・シェーダ１２６は、２−Ｄ曲線を定める制御点を含む最小バウンディング・ボックスに関連付けられた寸法に基づいて、２−Ｄ曲線を定められた数の三角形に細分割することに関連する演算を適用することができる。手続き型シェーダの別の例は、ドメイン・シェーダ１２８である。例えば、ハル・シェーダ１２６の出力は、ドメイン・シェーダ１２８に渡され、次いで、ドメイン・シェーダ１２８は、２−Ｄ曲線に沿った定められた数の三角形の各々についての頂点位置を決めるための演算を適用する。頂点シェーダ及びピクセル・シェーダ等の他の手続き型シェーダも使用される。これらのシェーダについては、図３を参照して以下でより詳細に説明する。手続き型シェーダが、そのオペレーションを終えた後、情報がＧＰＵバッファ１３０に配置され得る。この情報は、取り付けられたディスプレイ・デバイス上に表示されてもよいし、さらなるオペレーションのためにホストに返送されてもよい。
【００１９】
ＧＰＵバッファ１３０は、処理されたシーン・データが記憶され得るＧＰＵ１２４上の記憶位置を提供する。様々な処理オペレーションが、シーン・データに対して実行されるので、そのデータは、ＧＰＵバッファ１３０からアクセスされ、変更され、そして、ＧＰＵバッファ１３０に再度記憶され得る。ＧＰＵバッファ１３０は、処理中のデータがグラフィックス・パイプラインにより変換されている間、処理中のデータがＧＰＵ１２４に存在し続けることを可能にする。ＧＰＵ１２４からメモリ１１２へのデータの転送は、時間を消費するので、処理オペレーションが完了するまでデータはＧＰＵバッファ１３０に存在し続けることが好ましいことであり得る。
【００２０】
ハル・シェーダ１２６及びドメイン・シェーダ１２８に関して、命令をハル・シェーダ１２６及びドメイン・シェーダ１２８にダウンロードすることにより、特殊機能が実現され得る。さらに、多くの異なるオペレーションの機能が、ピクセル・シェーダ及びラスタライザ等の他のコンポーネント向けに調整された命令セットにより提供され得る。例えば、ネゲート、再マッピング、バイアシング、及び他の機能が、多くのグラフィックス・アプリケーションに有用である。２−Ｄ曲線を処理するようにＧＰＵ１２４上でハル・シェーダ１２６及びドメイン・シェーダ１２８をプログラムできることは、ＧＰＵ１２４のパラレル・アーキテクチャを使用することにより実現される処理速度のため、グラフィックス・オペレーションにとって有効である。このような特殊命令セットは、開発を容易にしてパフォーマンスを向上させることにより、付加価値を与えることができる。命令数制限、及び、シェーダ１２６及び１２８の他のハードウェア制限を超えないと仮定すると、これらの命令を実行することにより、ハル・シェーダ１２６及びドメイン・シェーダ１２８は、様々な機能を実行することができる。ハル・シェーダ１２６、ドメイン・シェーダ１２８、及び他のコンポーネントは、１以上のアプリケーション・プログラム・インタフェース（ＡＰＩ）を通じて命令を受信することができる。
【００２１】
図２を参照すると、本発明の実施形態とともに使用するのに適した例示的なコンピューティング・システム・アーキテクチャ２００を示すブロック図が示されている。図２に示されるコンピューティング・システム・アーキテクチャ２００は、１つの適切なコンピューティング・システムの単なる例であり、本発明の使用又は機能の範囲を限定するものではない。コンピューティング・システム・アーキテクチャ２００は、いずれか１つのモジュール／コンポーネント又はモジュール／コンポーネントの組合せに関連する何らかの依存関係又は要件を有するものとして解釈されるべきではない。
【００２２】
コンピューティング・システム・アーキテクチャ２００は、コンピューティング・デバイス２０６及びディスプレイ２１６を含む。コンピューティング・デバイス２０６は、画像モジュール２０８、ＧＰＵドライバ２１０、ＡＰＩモジュール２１２、及びオペレーティング・システム２１４を備える。コンピューティング・デバイス２０６は、例えば、図１を参照して上述したコンピューティング・デバイス１００等の任意のタイプのコンピューティング・デバイスとすることができる。限定ではなく、例に過ぎないが、コンピューティング・デバイス２０６は、パーソナル・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・デバイス、モバイル・ハンドセット、コンシューマ向け電子デバイス、又は同様のものであり得る。
【００２３】
画像モジュール２０８は、レンダリングされるオブジェクト又はシーンのデータを送信する。画像モジュール２０８は、オブジェクト又はシーンがレンダリングされるためのコンピュータ・プログラムであり得る。レンダリングされるオブジェクト又はシーンは、ビデオ・ゲーム画像、ビデオ・クリップ、動画像、及び静止スクリーン画像を含み得るが、これらに限定されるものではない。オブジェクトは、３次元又は２次元であり得る。ＡＰＩモジュール２１２は、画像モジュール２０８等のコンピュータ・プログラムによりなされるリクエストをサポートするための、オペレーティング・システム２１４により提供され得るインタフェースである。Ｄｉｒｅｃｔ３Ｄ（登録商標）及びＯｐｅｎＧＬ（登録商標）は、画像モジュール２０８のリクエストをサポートするＡＰＩの例である。デバイス２０６は、ディスプレイ・デバイス２１６と通信する。
【００２４】
画像モジュール２０８は、グラフィックス・パイプラインにおける１以上のコンポーネント用の構成命令を提供することができる。この命令は、オペレーティング・システム２１４により提供されてもよい。この命令は、ＧＰＵドライバ２１０の関数を画像モジュール２０８に公開しているＡＰＩモジュール２１２に渡され得る。ＡＰＩモジュール２１２は、受信した命令に基づいて、ＧＰＵドライバ２１０内の関数を構成することができる。後でより詳細に説明するように、ＡＰＩモジュール２１２は、とりわけ、２−Ｄ曲線を定める制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいて２−Ｄ曲線を定められた数の三角形に細分割することにより２−Ｄ曲線を近似するために図１のハル・シェーダ１２６等のハル・シェーダにより使用されるパラメータを定める細分割ファクタ・プロパティを有する。ＡＰＩモジュール２１２はまた、２−Ｄ曲線に沿った定められた数の三角形の各々についての頂点位置を決定することにより２−Ｄ曲線を位置決めするために図１のドメイン・シェーダ１２８等のドメイン・シェーダにより使用されるパラメータを定める位置ファクタ・プロパティを有することができる。さらに、ＡＰＩモジュール２１２は、レンダリング画像に対してＧＰＵ上で割り当てられるメモリの量を定めるレンダリング・ターゲット記憶プロパティ（render-target  storage  property）と、ラスタライザ・コンポーネントにより使用されるサンプリング・レートを定めるサンプリング・レート・プロパティと、を有することができる。画像モジュール２０８は、これらのプロパティ用の命令をフレーム単位で提供してもよいし、１つのシーン又はオブジェクトをレンダリングしている間に、これらの関数を複数回変更してもよい。
【００２５】
図３を参照すると、例示的なグラフィックス・パイプライン３００が示されている。グラフィックス・パイプライン３００は、シーン・データを、ディスプレイ・デバイス上に表示され得るそのシーン・データのラスタライズされたビットマップ表現（カバレッジ・マスク（coverage  mask）又はレンダリング画像としても知られている）に変換する段階を含む。グラフィックス・パイプライン３００は、入力アセンブラ３１０、頂点シェーダ３１２、ハル・シェーダ３１４、テッセレータ３１６、ドメイン・シェーダ３１８、ジオメトリ・シェーダ３２０、ラスタライザ３２４、ピクセル・シェーダ３２６、及び出力マージャ３２８を含む。（例えば、グラフィックス・パイプライン３００とＧＰＵバッファ３３０とを結んでいる矢印により示されるように、）グラフィックス・パイプライン３００により生成されたレンダリング画像は、レンダリング画像用に割り当てられたＧＰＵバッファ３３０に書き込まれ得る。図３に示されるグラフィックス・パイプライン３００は、例示的なものであり、さらなるコンポーネントが追加されてもよいし、コンポーネントが除去されてもよい。
【００２６】
入力アセンブラ３１０は、メモリ（例えば、ＧＰＵバッファ３３０）から、頂点、並びに、ベジェ扇形に関連付けられた制御点及び扇形基点を読み出し、それらのデータ点（例えば、三角形及びベジェ扇形のセット）からジオメトリを形成し、パイプライン・ワーク・アイテム（pipeline  work  item）を作成する。プリミティブの各セット（例えば、三角形及びベジェ扇形）が、グラフィックス・パイプライン３００上で、別個のパス（pass）として処理される。しかしながら、効率化のために、複数のジオメトリからの同様のプリミティブが、グラフィックス・パイプライン上で、単一のパスにおいて一緒に処理されてもよい。
【００２７】
三角形プリミティブは、頂点シェーダ３１２及びピクセル・シェーダ３２６を用いてラスタライズされる。頂点シェーダ３１２は、数学操作を３−Ｄ環境におけるオブジェクトの頂点データに対して実行することにより３−Ｄ環境におけるオブジェクトに特別なエフェクトを加算するために使用されるグラフィックス処理関数である。ジオメトリ・シェーダ３２０は、グラフィックス・パイプライン３００の最初の部分に送信されたプリミティブから、点、線、及び三角形等の新たなグラフィックス・プリミティブを生成する。ラスタライザ３２４は、ディスプレイ又はファイルへの出力のために、シーン・データをラスタ画像（例えば、ピクセル）に変換する。ラスタライザ３２４は、複数サブピクセル毎ピクセルで（at  several  sub-pixels  per  pixel）、シーン・データをサンプリングすることができる。ピクセル・シェーダ３２６は、通常は、例えば、リアリズム、バンプ・マッピング、シャドウ、アンチエイリアシング、及び爆発エフェクト（explosion  effect）といったエフェクトを画像上に適用するために、ピクセル・カラーを操作する機能を果たす。これは、ピクセル単位でエフェクトを計算するグラフィックス関数である。出力マージャ３２８は、ブレンド・オペレーション、デプス・オペレーション、及びステンシル・オペレーションを実行する。出力マージャ３２８により生成されたレンダリング画像は、ＧＰＵバッファ３３０に書き込まれる。
【００２８】
ベジェ扇形プリミティブは、ハル・シェーダ３１４、テッセレータ３１６、及びドメイン・シェーダ３１８に加えて、上記にて概説した他のシェーダ及び／又はコンポーネントを用いてラスタライズされる。以下でより詳細に説明するように、ハル・シェーダ３１４は、とりわけ、ベジェ扇形が変形三角形（deformed  triangle）として扱われることを指定し、その変形三角形の内部を１以上の三角形及び曲線セグメントに分割し、その曲線セグメントがどのように細分割されるかを指定することによりその曲線セグメントを近似する。例えば、ハル・シェーダ３１４は、ベジェ扇形の制御点を含むバウンディング・ボックスの寸法に基づいて曲線セグメントを近似するために使用される三角形の数を指定する。テッセレータ３１６は、ハル・シェーダ３１４により指定されたパラメータに基づいて、ベジェ扇形のテッセレーションを実行する。
【００２９】
テッセレータ３１６の出力は、ドメイン・シェーダ３１８に渡される。ドメイン・シェーダ３１８はまた、ハル・シェーダ３１４からの直接的な入力として、ベジェ扇形に関連付けられた４つの制御点及び扇形基点を少なくとも受信する。ドメイン・シェーダ３１８は、ベジェ扇形の曲線セグメントに沿った三角形の各々の頂点位置を出力するために、例えば、ベルンシュタイン多項式を用いて、これらの値を処理する。したがって、高レベルにおいて、ハル・シェーダ３１４は、２−Ｄ曲線を有するジオメトリの全体形状を表すために使用されるパラメータを指定し、ドメイン・シェーダ３１８は、ジオメトリを位置決めする。
【００３０】
次に図４に移ると、ベジェ扇形の図が示され、概して符号４００により参照される。ベジェ扇形４００は、扇形基点Ｏとして知られている１つの頂点４１０と、扇形外形（fan  contour）４１１として知られている３次ベジェ（cubic  Bezier）と、により定められる。図４に示されるように、扇形外形４１１は、全ての点（ｔ，ｖ）＝Ｂ（ｔ）＊ｖ＋Ｏ＊（１−ｖ）（０≦ｔ，ｖ≦１）をカバーする。ここで、Ｂ（ｔ）は、［０，１］間隔（例えば、点４１２と点４１４との間）にわたるベジェ扇形のパラメータ表示（parameterization）であり、Ｏは、扇形基点４１０である。図４に見られるように、変数ｔは、ベジェ曲線に沿って第１の点（点４１６）がどれくらい離れて位置するかを表し、変数ｖは、扇形基点Ｏと第１の点４１６とを結ぶ線に沿った第２の点（点４１８）の距離を表す。
【００３１】
図４に示されるベジェ扇形４００は、ＣＰＵが、オブジェクトを取得し、そのオブジェクトを、ベジェ扇形４００及び三角形等の高レベル・プリミティブを有する中間テッセレーションにテッセレーションした後に生成される。例えば、図５に示されるオブジェクト５１０等のオブジェクトについて、ＣＰＵは、図形基点（figure  origin）５１２として、オブジェクト５１０のバウンディング・ボックスの中心を選択する。次いで、オブジェクト５１０の各セグメントが「ウォークされる（walked）」。直線セグメントに遭遇すると、その直線セグメントの両端点及び図形基点５１２により定められる頂点を有する三角形が出力される。これが、図５の三角形５１４、５１６、及び５１８により示されている。ベジェ・セグメントに遭遇すると、ベジェ扇形が、扇形外形としてのベジェ曲線自体と扇形基点としての図形基点５１２とを用いて出力される。図５は、２つのベジェ扇形５２０及び５２２を示している。このようにして生成されたベジェ扇形は、４つの制御点及び扇形基点のセットとして定められ得る、あるいはコード化され得る。例えば、ベジェ扇形５２０は、扇形基点としての図形基点５１２と制御点５２４、５２６、５２８、及び５３０とを用いてコード化され得る。
【００３２】
上記プロセスから生成されるベジェ扇形は、自己交差していることがあり、プリミティブは、オーバーラップすることがある。これは、ベジェ扇形が自己交差せず、プリミティブがオーバーラップしないことを確実にするために、ＣＰＵがベジェ扇形をさらに細分割することにより対処され得る。あるいは、結果として生じるカバレッジ・マスクの任意の部分がオーバーラップする場合、カバレッジ・マスクは、まず、ＸＯＲ論理ブレンドにより、中間ビットマップにレンダリングされ得る。図５に示される中間テッセレーションは、３次ベジェ扇形を含むが、本発明の実施形態は、グラフィックス・パイプラインを通じたさらなるパスを費やして、弧及び２次ベジェ等のさらなるセグメント・タイプをサポートするように拡張され得る。代替実施形態において、Ｎ個のセグメント・タイプを有するオブジェクトが、三角形と、扇形外形が対応するタイプのセグメントにより定められる扇形タイプの（Ｎ−１）個のセットと、に対応するプリミティブのＮ個のセットに細分割され得る。
【００３３】
次に図６に移ると、図６は、図３のハル・シェーダ３１４等のハル・シェーダにより処理された後のベジェ扇形６００を示している。図５を参照して上述したように、ハル・シェーダは、入力として、ベジェ扇形６００を定める扇形基点６１０と４つの制御点６１２、６１４、６１６、及び６１８とを受信する。ハル・シェーダは、ベジェ扇形６００を処理するために、パラメータのセットを使用する。そのパラメータのセットは、
Domain:  “tri”
Partitioning:  “integer”
Output  topology:  “triangle_cw”
SV_TessFactor:  {1,  1,  contourTessellationFactor}
SV_InsideTessFactor:  1
を含む。
【００３４】
triというドメイン（domain）・パラメータは、ベジェ扇形６００が変形三角形として扱われることを指定する。代替実施形態において、ベジェ扇形６００は、変形四角形として扱われてもよい。integerという分割（partitioning）パラメータは、変形三角形の内部が、整数分割（integer  partitioning）を用いて分割されることを示す。例えば、内部点６２０を用いて、ベジェ扇形６００は、曲線セグメント６２６と、２つの三角形６２２及び６２４と、に分割されている。ここで、２つの三角形６２２及び６２４はそれぞれ、曲線セグメント６２６の境界（例えば、線６２８及び６３０）とエッジを共有している。曲線セグメント６２６は、点６１２から点６１８へ延びる。代替実施形態において、フラクショナル分割（fractional  partitioning）を用いて、変形三角形の内部を分割してもよい。出力トポロジ（output  topology）・パラメータは、曲線セグメント６２６が、各三角形の頂点が時計回りに指定される三角形のセットを用いて近似されることを指定する。
【００３５】
内部テッセレーション・ファクタ（inside  tessellation  factor）は、テッセレーションによりどれだけの数の三角形が生成されるかに影響を及ぼす。内部三角形は、ベジェ扇形６００の曲線セグメントの境界（例えば、線６２８及び６３０）とエッジを共有しない三角形として定められる。内部テッセレーション・ファクタは、内部三角形がテッセレーションにより生成されないことを示す１に設定されている。外形テッセレーション・ファクタ（contour  tessellation  factor）は、オフラインで生成されるルックアップ・テーブルを使用することにより実行時に動的に選択される整数である。外形テッセレーション・ファクタは、図６に示される内部点６２０から放射状に広がる三角形を用いて曲線セグメント６２６をどれくらい細かく細分割するかを指定する。すなわち、外形テッセレーション・ファクタは、細分割において使用される三角形の数を指定する。一般に、曲線セグメントが、過度に粗くテッセレーションされると、レンダリング画像は、可視のファセッティング（faceting）を有することになる。一方、曲線セグメントが、過度に細かくテッセレーションされると、ＧＰＵは過負荷となり、処理時間が長くなる。本発明は、過度に粗いテッセレーションと過度に細かいテッセレーションとの間の均衡をとるために、外形テッセレーション・ファクタを使用する。
【００３６】
上述したように、外形テッセレーション・ファクタは、ルックアップ・テーブルを使用することにより実行時に動的に選択される整数である。ルックアップ・テーブルは、外形テッセレーション・ファクタの予め定められたセット（例えば、２、４、８、１６、３２、及び６４）を選択し、それら外形テッセレーション・ファクタの各々について関連するバウンディング・ボックスの寸法を算出することにより、（コンパイルに先立って）オフラインで生成される。詳細には、各テッセレーション・ファクタｎについて、ｄｉｓｔＣｈｅｂｙｃｈｅｖ（Ｂ（ｔ），Ｌｎ（ｔ））の最大値（以降Ｄｎと呼ばれる）が、
ｄｉｓｔＣｈｅｂｙｃｈｅｖ（ｐ，ｑ）＝ｍａｘ（｜ｐｘ−ｑｘ｜，｜ｐｙ−ｑｙ｜）
により算出される。Ｂ（ｔ）は、３次ベジェについての、ベルンシュタイン基底関数に基づくベジェの正準パラメータ表示であり（ｔは０〜１の範囲をとる）、
Ｂ（ｔ）＝ｔ３＊Ｃ０＋３（１−ｔ）ｔ２＊Ｃ１＋３（１−ｔ）２ｔ＊Ｃ２＋（１−ｔ）３＊Ｃ３
である。ここで、Ｃ０，．．．，Ｃ３は、４つのベジェ制御点であり、これらのｘ座標及びｙ座標はそれぞれ、間隔［０，１］の範囲をとることが可能である。Ｌｎ（ｔ）は、点Ｂ（０）と点Ｂ（１／ｎ）と点Ｂ（２／ｎ）と，．．．，点（ｎ／ｎ）とを結ぶポリライン・セグメントの正規化弧長パラメータ表示であり（ｔは０〜１の範囲をとる）、ｔは、間隔［０，１］の範囲をとる。これは、９個の未知数（４つの制御点のｘ座標及びｙ座標、並びにｔ）と、１８個の制約（制御点についての１６個及びｔについての２個）と、を含む非線形制約最適化問題であり、周知技術を用いて解析的又は数値的に解くことができる。本発明は、実装調整可能な定数εを含み、この定数εは、ベジェ・テッセレーションが真のベジェから外れ得る最大距離についての上限である（本発明では１／４を選択している）。最後に、値
【数１】
2016520920.tif 000003
が、ハル・シェーダがアクセス可能なテーブルに記憶される。
【００３７】
例示的なルックアップ・テーブルが以下に提供される。
【表１】
2016520920.tif 000004
【００３８】
実行時において、ベジェ扇形の４つの制御点を含む最小バウンディング・ボックスが算出される。例示的なバウンディング・ボックス７２４が、図７に示されている。バウンディング・ボックス７２４は、点Ｃ０  ７１０、点Ｃ１  ７１２、点Ｃ２  ７１４、及び点Ｃ３  ７１６に示されるベジェ扇形の４つの制御点を含む。バウンディング・ボックス７２４は、高さ７２０及び幅７２２を有する。バウンディング・ボックス７２４の最大寸法が決定される（例えば、高さ７２０又は幅７２２の一方）。最大寸法が、ルックアップ・テーブルにおける適切な範囲とマッチングされ、最小外形テッセレーション・ファクタｎが、
【数２】
2016520920.tif 000005
であるように選択される。ｍａｘＤｉｍｅｎｓｉｏｎが、
【数３】
2016520920.tif 000006
を超える場合、ベジェ扇形は、ＣＰＵ上で、三角形にテッセレーションされる。
【００３９】
ドメイン・シェーダは、入力として、ハル・シェーダから、ベジェ扇形制御点Ｃ０、Ｃ１、Ｃ２、Ｃ３、扇形基点Ｏ、及びSV_DomainLocation(t,  u,  v)を受信する。ドメイン位置（domain  location）は、０≦ｔ，ｕ，ｖ≦１且つｔ＋ｕ＋ｖ＝１を意味し、ｕを無視することが可能である重心座標（Barycentric  coordinate）で指定される。ドメイン・シェーダは、出力として、曲線セグメント（例えば、図６の曲線セグメント６２６）に沿った三角形の各々についての頂点位置Ｐを送信する。各頂点位置Ｐは、以下の式を用いて計算される。
Ｐ（ｔ，ｖ）＝Ｂ（ｔ）＊ｖ＋Ｏ＊（１−ｖ）
ここで、Ｂ（ｔ）は、以下のベルンシュタイン多項式である。
Ｂ（ｔ）＝ｔ３＊Ｃ０＋３（１−ｔ）ｔ２＊Ｃ１＋３（１−ｔ）２ｔ＊Ｃ２＋（１−ｔ）３＊Ｃ３
【００４０】
ドメイン・シェーダの出力が、図８に示されている。図８は、図６に示されたベジェ扇形と同じベジェ扇形を示している（図８ではベジェ扇形８００としてラベリングされている）。三角形の各々は、頂点位置Ｐ（例えば、頂点位置Ｐ１，．．．，Ｐ９）において、曲線セグメント６２６と交わる。２つの例示的な頂点位置が、符号８１０及び８１２で示されている。
【００４１】
次に図９に移ると、アンチエイリアシングされた２−Ｄ曲線をレンダリングする例示的な方法のフロー図が示され、概して符号９００により参照される。アンチエイリアシングされたグラフィックスは、段々状ではなく、真っ直ぐか、あるいは滑らかに見える直線及び／又は曲線を含むレンダリング画像である。アンチエイリアシングされたレンダリング画像は、図３のグラフィックス・パイプライン３００等のグラフィックス・パイプラインのコンポーネントを使用するアンチエイリアシング・プロセスにより生成される。レンダリングは、シーン・データのラスタライズされたビットマップ表現を生成するプロセスである。レンダリング画像は、レンダリング・プロセスの完了のために実際に表示される必要はない。方法９００は、画像コンポーネントにより実行され得る。画像コンポーネントの例は、ワープロ・アプリケーション、スプレッドシート・アプリケーション、プレゼンテーション・アプリケーション、個人連絡帳アプリケーション、ゲーム、及び２次元画像を生成する他のアプリケーションを含む。
【００４２】
ステップ９１０において、シーン・データが、シーン・データ内のオブジェクトからテッセレーションされたジオメトリック形状のセットを生成することにより、中間テッセレーションに変換される。中間テッセレーションは、扇形基点及び４つの制御点により定められる少なくとも１つのベジェ扇形を含む。他の例示的なジオメトリック形状は、三角形及び弧セグメントを含み得る。一実施形態において、この変換ステップは、ＣＰＵ上で実行されるソフトウェアにより行われる。
【００４３】
ステップ９１２において、グラフィックス・パイプラインにおけるハル・シェーダを構成するための第１の命令が生成される。ハル・シェーダは、ベジェ扇形を定める４つの制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいてベジェ扇形の曲線又は曲線セグメントを定められた数の三角形に細分割することによりベジェ扇形の曲線又は曲線セグメントを近似するよう構成される。上述したように、曲線を近似するために使用される三角形の数は、最大高さ値又は最大幅値の１以上の範囲と、対応する細分割ファクタ又は外形テッセレーション・ファクタと、を含む予め算出されているルックアップ・テーブルに基づいて決定される。第１の命令は、ＡＰＩに送信され得、次いで、ＡＰＩが、ＧＰＵ上のハル・シェーダを構成する。
【００４４】
ステップ９１４において、グラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第２の命令が生成される。ドメイン・シェーダは、例えば、ベルンシュタイン多項式を用いて、ベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するよう構成される。第２の命令も、ＡＰＩに送信され得、次いで、ＡＰＩが、ＧＰＵ上のドメイン・シェーダを構成する。ステップ９１６において、中間テッセレーションが、ＣＰＵからＧＰＵ上で実行されているグラフィックス・パイプラインに送信される。
【００４５】
方法９００は、グラフィックス・パイプラインにおけるレンダリング・ターゲット記憶値を定めるための第３の命令を生成するステップをさらに含み得る。レンダリング・ターゲット記憶値は、レンダリング画像に割り当てられるメモリの量を定める。レンダリング画像は、グラフィックス・パイプラインを通じた中間テッセレーションの実行の最終結果であり得る。第３の命令は、ＡＰＩに送信され得、次いで、ＡＰＩが、ＧＰＵ上のプロセスを構成する。
【００４６】
グラフィックス・パイプラインにおけるラスタライザ用のサンプリング・レートを定めるための第４の命令も生成され得る。サンプリング・レートは、レンダリング・ターゲット記憶値から独立して定められる。これらの項目は別々に定められるので、これらの項目の値は、ともに関連付けられる必要はない。一実施形態において、メモリ、すなわち、レンダリング・ターゲット記憶値は、レンダリング・ビットマップ表現の１倍（1x）に設定される。例えば、レンダリング画像が、４８０ピクセル×４８０ピクセルである場合、割り当てられるメモリは、２３０４００ピクセルを記憶するのに十分であればよい。サンプリング・レートは独立して定められるので、サンプリング・レートは、４８０×４８０のレンダリング・ビットマップ表現に対して２３０４００ピクセルのメモリ割り当てがなされる場合であっても、４サブピクセル毎ピクセルとすることができる。第４の命令は、ＡＰＩに送信され得、次いで、ＡＰＩが、ＧＰＵ上のプロセスを構成する。
【００４７】
さらなる命令が生成されてもよい。例えば、中間テッセレーションを処理するようにグラフィックス・パイプラインにおけるピクセル・シェーダを構成するための命令が生成されてもよい。命令は、中間テッセレーション内のジオメトリック形状がオーバーラップしているかオーバーラップしていないかに応じて変わり得る。ジオメトリック形状がオーバーラップしていないシナリオにおいて、ピクセル・シェーダは、中間テッセレーション内に設定されたビットの数をカウントし、その結果を実数に正規化し（normalize）、その実数をレンダリング・ターゲットの現在のコンテンツに加算する（add）よう構成される。一方、ジオメトリック形状間にオーバーラップが存在する場合、ピクセル・シェーダは、レンダリング・ターゲットにどの色が加算される（added）か、あるいはレンダリング・ターゲットからどの色が減算される（subtracted）かを判定するための論理プロセスを用いて、ドメイン・シェーダにより送信された１以上の三角形を、レンダリング・ターゲットの現在のコンテンツと結合するよう構成される。一実施形態において、この論理プロセスは、ビットマップ排他的論理和（ＸＯＲ）演算である。別の実施形態において、この論理プロセスは、ビットマップＯＲ演算である。
【００４８】
次に図１０に移ると、オブジェクトの中間テッセレーションをラスタライズするようＧＰＵに指示する方法１０００のフロー図が示されている。中間テッセレーションは、４つの制御点及び扇形基点を有する少なくとも１つのベジェ扇形を含む。方法１０００は、ＡＰＩにより実行され得る。
【００４９】
ステップ１０１０において、ＧＰＵは、コンピューティング・デバイスのＣＰＵから、中間テッセレーションを受信する。中間テッセレーションは、１以上の直線セグメントと、扇形基点及び４つの制御点により定められる少なくとも１つのベジェ扇形と、を有するオブジェクトの高レベル表現を含む。ステップ１０１２において、ＧＰＵは、とりわけ、ベジェ扇形の曲線を定められた数の三角形に細分割することによりベジェ扇形の曲線を近似するように、ＧＰＵ上で実行されるグラフィックス・パイプラインにおけるハル・シェーダを構成するための第１の命令を受信する。
【００５０】
第１の命令はまた、ハル・シェーダが、ベジェ扇形を２つの辺及び１つの湾曲辺（curved  side）を有する変形三角形として扱うことを指定するtriというドメイン命令を含み得る。第１の命令はまた、ベジェ扇形の内部を分割するための分割命令と、ベジェ扇形の曲線が、各三角形の頂点が時計回りに指定される三角形のセットを用いて細分割されることを指定する出力トポロジ命令と、を含み得る。第１の命令は、内部三角形（例えば、ベジェ扇形の曲線セグメントの境界とエッジを共有しない三角形）が存在しないことを確実にする１という内部テッセレーション・ファクタ命令をさらに含む。
【００５１】
ステップ１０１４において、ハル・シェーダが、第１の命令に基づいて、コンピューティング・デバイスにより構成される。ステップ１０１６において、ＧＰＵは、ベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するようにグラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第２の命令を受信する。ステップ１０１８において、ドメイン・シェーダが、第２の命令に基づいて構成される。
【００５２】
方法１０００は、ハル・シェーダが、中間テッセレーションのベジェ扇形に対して第１の命令を実行するステップをさらに含む。ハル・シェーダは、ベジェ扇形の４つの制御点を含む最小バウンディング・ボックスを算出し、バウンディング・ボックスの幅又は高さいずれかの最大値を決定する。最大高さ値又は最大幅値の範囲と、対応する外形テッセレーション・ファクタと、を含むルックアップ・テーブルがアクセスされ、バウンディング・ボックスの最大値が、ルックアップ・テーブルにおける範囲のうちの１つとマッチングされる。マッチングされた範囲に対応する細分割ファクタ又は外形テッセレーション・ファクタが、ルックアップ・テーブルから決定され、このファクタが、ベジェ扇形曲線を外形テッセレーション・ファクタと等しい数の三角形に細分割するために使用される。方法１０００は、ドメイン・シェーダが、ベジェ扇形曲線に沿った定められた数の三角形の各々についての頂点位置を決定するためにベジェ扇形に対して第２の命令を実行するステップをさらに含む。
【００５３】
さらなる命令が、ＧＰＵにより受信され得る。例えば、ＧＰＵ上で実行されるグラフィックス・パイプラインにおけるレンダリング・ターゲット記憶値を定めるための命令が受信される。この命令は、プログラムから受信されてもよい。レンダリング・ターゲット記憶値に対応する、ＧＰＵにおけるメモリの量が割り当てられる。メモリは、ＧＰＵ用のドライバにより割り当てられてもよい。ＧＰＵ上のグラフィックス・パイプラインにおけるラスタライザ用のサンプリング・レートを定めるための命令も受信され得る。サンプリング・レートは、レンダリング・ターゲット記憶値から独立して定められる。ラスタライザは、そのサンプリング・レートでシーン・データをサンプリングするよう構成される。ラスタライザは、ＧＰＵ内のドライバを通じて構成されてもよい。サンプリング・レート及びレンダリング・ターゲット記憶値は、互いから独立したものであり得る。一態様において、レンダリング・ターゲット記憶値が、レンダリング画像における１ピクセル毎ピクセル（one  pixel  per  pixel）と等しい場合、サンプリング・レートは、レンダリング・ターゲット記憶値よりも大きいものであり得、サンプリング・レートは、４サブピクセル毎ピクセルに設定される。
【００５４】
本発明の実施形態について、限定ではなく例示として説明した。所定の特徴及び下位組合せが有用であり、他の特徴及び下位組合せを参照することなく使用されてもよいことが理解されよう。これは、請求項により考慮されるものであり、請求項の範囲内である。
【図１】
2016520920.tif 000007
【図２】
2016520920.tif 000008
【図３】
2016520920.tif 000009
【図４】
2016520920.tif 000010
【図５】
2016520920.tif 000011
【図６】
2016520920.tif 000012
【図７】
2016520920.tif 000013
【図８】
2016520920.tif 000014
【図９】
2016520920.tif 000015
【図１０】
2016520920.tif 000016
【国際調査報告】
2016520920.tif 000017
2016520920.tif 000018
2016520920.tif 000019