(57)【要約】【課題】滑らかな曲線および滑らかな曲線によって定義された形状をレンダリングするための改善された技術およびシステムを提供すること。【解決手段】滑らかな曲線は、曲線1の内側にあるテクセルを所定の閾値より大きい値に設定し、曲線1の外側にあるテクセルを閾値より小さい値に設定する(または逆も同様に)ことによりグラフィックステクスチャで表される。  そこで、サンプリングされた位置について返されたテクスチャ値は、サンプリングされた位置が曲線1の内側にあるものとして処理されるべきかどうかを決定するために使用できる。  テクスチャは、双線形フィルタリングを使用するサンプリングに合わせて最適化される。【選択図】図1
2010092479.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス処理システムにおいて滑らかな曲線によって定義されている形状をレンダリングする方法であって、
1つまたは複数のプリミティブ内のサンプリング位置についてテクスチャ内のテクスチャ値をサンプリングすることによりレンダリングされる前記1つまたは複数のプリミティブに前記形状を定義する前記曲線に対応する曲線を表すグラフィックステクスチャを適用するステップと、
前記サンプリング位置が前記曲線のどちらの側にあるものとして処理されるべきかを決定するために、前記サンプリングされたテクスチャ値を使用するステップと、
を含むことを特徴とする方法。
【請求項２】
前記グラフィックステクスチャは、前記テクスチャが表す前記曲線の一方の側にある前記テクスチャ内のすべての位置で選択された閾値より小さいサンプリングされたテクスチャ値を返し、前記曲線の他方の側にある前記テクスチャ内のすべての位置で前記選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成され、
前記1つまたは複数のプリミティブの前記サンプリングされたサンプリング位置が前記曲線のどちらの側にあるものとして処理されるべきかを決定するために、前記1つまたは複数のプリミティブの前記サンプリングされたサンプリング位置に対する前記サンプリングされたテクスチャ値を、前記曲線に対する前記選択された閾値テクスチャ値と比較するステップを含むことを特徴とする請求項1に記載の方法。
【請求項３】
前記テクスチャは、特定の選択されたテクスチャフィルタリングプロセスを使用して前記テクスチャがサンプリングされるときに前記テクスチャが前記滑らかな曲線を最も正確に表すように構成され、
前記テクスチャが構成されている前記特定の選択されたテクスチャフィルタリングプロセスを使用して、前記テクスチャ内の前記テクスチャ値をサンプリングするステップを含むことを特徴とする請求項1または2に記載の方法。
【請求項４】
前記滑らかな曲線を表す前記テクスチャは、双線形フィルタリングを使用してサンプリングするように手直しされることを特徴とする請求項1から3のいずれか一項に記載の方法。
【請求項５】
レンダリングされる形状を2つ以上の分離した形状に分割するステップと、
前記形状が別々に分離した形状に分割され、それぞれの分離した形状をレンダリングするステップと、
を含むことを特徴とする請求項1から4のいずれか一項に記載の方法。
【請求項６】
滑らかな曲線によって定義されている形状をレンダリングするため、グラフィックス処理システムで使用するテクスチャを生成する方法であって、
滑らかな曲線を表すテクスチャテクセルの配列を含むグラフィックステクスチャマップを、
前記テクスチャが表す前記滑らかな曲線の一方の側にある前記テクスチャマップ内の位置から取られたテクスチャサンプルが、閾値テクスチャ値より小さいテクスチャ値を返すように設定し、また前記滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが、前記閾値テクスチャ値より大きいテクスチャ値を返すように前記テクスチャマップ内の前記テクセル値を設定することにより、生成するステップを含むことを特徴とする方法。
【請求項７】
前記テクスチャをサンプリングするときに使用されることが意図されている特定のテクスチャフィルタリングプロセスに基づき前記テクスチャの前記テクセルのうちの少なくともいくつかに対し使用される前記テクセル値を選択するステップを含むことを特徴とする請求項6に記載の方法。
【請求項８】
前記テクスチャに使用する前記テクスチャ値のうちの少なくともいくつかは、前記特定のテクスチャフィルタリングプロセスを表す費用関数を使用し、次いで、1つまたは複数の最適化アルゴリズムを使ってその費用関数を最小化することにより決定されることを特徴とする請求項7に記載の方法。
【請求項９】
前記テクスチャ内にあるときに前記テクスチャが表す前記滑らかな曲線の前記位置と、特定のテクスチャサンプリングプロセスを使用して前記テクスチャの前記テクセルがサンプリングされるときに前記曲線の前記示されている位置との間のそれぞれの誤差を表す費用関数を最小化することにより、前記テクスチャに使用する前記テクセル値のうちの少なくともいくつかを決定するステップを含むことを特徴とする請求項6から8のいずれか一項に記載の方法。
【請求項１０】
前記滑らかな曲線を表す前記テクスチャマップ内に格納されている前記テクセルのうちの少なくともいくつかの前記値は、双線形フィルタリングが前記テクスチャのサンプリングに使用されることに基づき選択されることを特徴とする請求項6から9のいずれか一項に記載の方法。
【請求項１１】
グラフィックス処理システムにおいて滑らかな曲線によって定義されている形状をレンダリングする装置であって、
滑らかな1つまたは複数の曲線を表す1つまたは複数のグラフィックステクスチャを格納するための手段と、
1つまたは複数のプリミティブ内のサンプリング位置についてテクスチャ内のテクスチャ値をサンプリングすることによりレンダリングされる前記1つまたは複数のプリミティブに滑らかな曲線を表すグラフィックステクスチャを適用するための手段と、
前記曲線のどちらの側にサンプリング位置があるものとして処理されるべきかを決定するために、サンプリングされた1つまたは複数のテクスチャ値を使用する手段と、
を備えることを特徴とする装置。
【請求項１２】
それぞれのテクスチャは、前記テクスチャが表す曲線の一方の側にある前記テクスチャ内の任意の位置をサンプリングすることで選択された閾値より小さいサンプリングされたテクスチャ値を返し、前記曲線の他方の側にある前記テクスチャ内の任意の位置をサンプリングすることで前記選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成され、
前記1つまたは複数のプリミティブの前記サンプリングされたサンプリング位置が前記曲線のどちらの側にあるものとして処理されるべきかを決定するために、前記1つまたは複数のプリミティブの前記サンプリングされたサンプリング位置に対する前記サンプリングされたテクスチャ値を曲線に対する前記選択された閾値テクスチャ値と比較する手段を備えることを特徴とする請求項11に記載の装置。
【請求項１３】
それぞれのテクスチャに対する前記格納されている値は、特定の選択されたテクスチャフィルタリングプロセスを使用して前記テクスチャがサンプリングされるときに前記テクスチャが前記滑らかな曲線を最も正確に表すように設定され、
前記テクスチャが構成されている前記特定のテクスチャフィルタリングプロセスを使用して1つまたは複数のプリミティブ内のサンプリング位置についてテクスチャ値をサンプリングすることによりレンダリングされる前記1つまたは複数のプリミティブに滑らかな曲線を表す格納されているテクスチャを適用するための手段を備えることを特徴とする請求項11または12に記載の装置。
【請求項１４】
前記滑らかな曲線を表す前記1つまたは複数のテクスチャは、双線形フィルタリングを使用してサンプリングするように手直しされることを特徴とする請求項11から13のいずれか一項に記載の装置。
【請求項１５】
レンダリングされる形状を2つ以上の分離した形状に分割するための手段と、
前記形状が別々に分離した形状に分割され、それぞれの分離した形状をレンダリングするための手段と、
を備えることを特徴とする請求項11から14のいずれか一項に記載の装置。
【請求項１６】
滑らかな曲線によって定義されている形状をレンダリングするため、グラフィックス処理システムで使用するテクスチャを生成するための装置であって、前記装置は、
滑らかな曲線を表すためにテクスチャテクセルの配列を含むグラフィックステクスチャマップを生成するための手段を備え、前記手段は、
前記テクスチャが表す前記滑らかな曲線の一方の側にある前記テクスチャマップ内の位置から取られたテクスチャサンプルが、閾値テクスチャ値より小さいテクスチャ値を返すように設定し、また前記滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが、前記閾値テクスチャ値より大きいテクスチャ値を返すように前記テクスチャマップ内の前記テクセル値を設定するための手段を備えることを特徴とする装置。
【請求項１７】
前記テクスチャをサンプリングするときに使用されることが意図されている特定のテクスチャフィルタリングプロセスに基づき、前記テクスチャの前記テクセルのうちの少なくともいくつかに対し使用される前記テクセル値を選択するための手段を備えることを特徴とする請求項16に記載の装置。
【請求項１８】
前記テクスチャに使用する前記テクスチャ値のうちの少なくともいくつかを、前記特定のテクスチャフィルタリングプロセスを表す費用関数を使用し、次いで、1つまたは複数の最適化アルゴリズムを使ってその費用関数を最小化することにより、決定するための手段を備えることを特徴とする請求項17に記載の装置。
【請求項１９】
前記テクスチャ内にあるときに前記テクスチャが表す前記滑らかな曲線の前記位置と、特定のテクスチャサンプリングプロセスを使用して前記テクスチャの前記テクセルがサンプリングされるときに前記曲線の前記示されている位置との間の、それぞれの誤差を表す費用関数を最小化することにより、前記テクスチャに使用する前記テクセル値のうちの少なくともいくつかを決定するための手段を備えることを特徴とする請求項16から18のいずれか一項に記載の装置。
【請求項２０】
前記滑らかな曲線を表す前記テクスチャマップ内に格納されている前記テクセルのうちの少なくともいくつかの前記値を、双線形フィルタリングが前記テクスチャのサンプリングに使用されることに基づいて設定するための手段を備えることを特徴とする請求項16から19のいずれか一項に記載の装置。
【請求項２１】
滑らかな曲線によって定義されている形状をレンダリングするため、グラフィックス処理システムで使用するグラフィックステクスチャマップであって、前記テクスチャマップは、
テクスチャテクセルの配列で構成され、
その中で、テクセル値は、前記テクスチャが表す滑らかな曲線の一方の側にある前記テクスチャマップ内の位置から取られたテクスチャサンプルが、閾値テクスチャ値より小さいテクスチャ値を返すように設定され、また前記滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが、前記閾値テクスチャ値より大きいテクスチャ値を返すように設定されることを特徴とするグラフィックステクスチャマップ。
【請求項２２】
前記テクスチャに対する前記テクセル値は、さらに、特定の選択されたテクスチャフィルタリングプロセスを使用して前記テクスチャがサンプリングされるときに前記テクスチャが前記滑らかな曲線を最も正確に表すように設定されることを特徴とする請求項21に記載のグラフィックステクスチャマップ。
【請求項２３】
プログラム要素がデータ処理手段上で実行されたときに請求項1から10のいずれか一項に記載の方法を実行するコンピュータソフトウェアコード部分を備えることを特徴とするコンピュータプログラム要素。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックス処理システムに関するものであり、具体的には、グラフィックス処理システムでの滑らかな曲線などの滑らかな形状のレンダリング処理に関するものである。
【０００２】
本発明は、三次元グラフィックスの処理を特に参照しつつ説明されるが、当業者であれば理解するように、これは二次元グラフィックスの処理にも同様に適用可能である。
【背景技術】
【０００３】
当技術分野で知られているように、3Dグラフィックス処理は、通常、表示するシーンを複数の類似の基本コンポーネント(いわゆる「プリミティブ」)に分割して、3Dグラフィックス処理オペレーションを実行しやすくすることから始める。これらの「プリミティブ」は、通常、三角形などの単純な多角形の形態をとる。
【０００４】
表示するシーンに対応するプリミティブは、通常、グラフィックス処理システム用のアプリケーションプログラムインターフェイスにより生成され、そのために、グラフィックスの表示を必要とするアプリケーション(例えば、ゲーム)から受け取ったグラフィックス描画命令(リクエスト)を使用する。
【０００５】
それぞれのプリミティブは、このステージでは、通常、一組の頂点により定義され、一組の頂点により表される。1つのプリミティブに対するそれぞれの頂点には、その頂点を表す一組のデータ(位置、色、テクスチャ、および他の属性データ)が関連付けられている。次いで、このデータは、例えば、表示する頂点(頂点が関係する(複数の)プリミティブ)のラスター処理およびレンダリングを行うときに使用される。
【０００６】
例えば画面またはプリンタなどの出力表示デバイスにシーンを表示するために、シーンに対するプリミティブおよびそれらのプリミティブの頂点が生成され、定義された後、これらは、グラフィックス処理システムにより処理されうる。
【０００７】
このプロセスは、基本的に、処理するシーン領域を覆うサンプリング点の配列の中のどのサンプリング点が1つのプリミティブによって覆われるかを判定すること、そしてそのサンプリング点でそのプリミティブを表すためにそれぞれのサンプリング点が(例えば、色などに関して)持つべき外観を決定することを伴う。これらのプロセスは、一般に、ラスター処理およびシェーディングとそれぞれ称される。
【０００８】
ラスター処理プロセスでは、1つのプリミティブに対し使用されるべきサンプル位置(つまり、表示するシーン内でプリミティブを表すために使用されるサンプル点の(x,y)位置)を決定する。これは、典型的には、1つのプリミティブの複数の頂点の位置を使用して決定される。
【０００９】
次いで、シェーディングプロセスは、サンプル点でプリミティブを表示する(つまり、それぞれのサンプル点に「陰影を付ける」)のに必要な、赤色、緑色、および青色(RGB)値ならびに「アルファ」(透明度)値などのデータを導出する。これは、当技術分野で知られているように、テクスチャの適用、サンプル点データ値のブレンドなどを伴うことがある。
【００１０】
(3Dグラフィックスの文献では、「ラスター処理」という用語は、ときには、サンプル位置およびシェーディングへの両方のプリミティブ変換を指すために使用される。しかし、ここでの「ラスター処理」は、サンプリング点アドレスのみへのプリミティブデータの変換を指すために使用される。)
【００１１】
これらのプロセスは、典型的には、サンプリング点を、グラフィックス処理オペレーション(シェーディングなど)の実行対象となる「フラグメント」と通常呼ばれる個別のグラフィック構成要素として「表現する」ことにより実行される。それぞれのサンプリング点は、実際には、注目するサンプリング点でプリミティブに陰影を付けるために使用されるフラグメントによって表される。フラグメントは、単一のサンプリング点または複数のサンプリング点を表す(関連付けられている)ことが可能である。「フラグメント」は、シェーディングプロセス(シェーディングパイプライン)を通るグラフィック構成要素である。
【００１２】
(したがって、「フラグメント」は、事実上、プリミティブの所定の1つ(または複数)の画面空間サンプル点に補間されるようなプリミティブデータの集合(に関連付けられたもの)である。これは、さらに、注目する1つまたは複数のサンプル点(フラグメント位置)でプリミティブに陰影を付けるのに必要なプリミティブ毎のおよび他の状態データをも含むことができる。それぞれのグラフィックスフラグメントは処理されるときにシーンの1つの「ピクセル」に事実上相当するものと考えるのは道理にかなっている。)
【００１３】
それぞれのグラフィックス「フラグメント」は、最終的な出力表示に含まれる単一ピクセル(画素)に対応しうる(ピクセルは、最終的な表示内において特異点であるため、グラフィックスプロセッサのオペレーション(レンダリング)対象の「フラグメント」と表示のピクセルとの間に1対1のマッピングがありうる)。しかし、フラグメントと表示ピクセルとの間に1対1対応関係がない場合もありえ、例えば、縮小などの特定の形態の後処理が最終画像を表示するのに先立ってレンダリングされた画像に対し実行される。
【００１４】
表示するため滑らかな形状、特に、滑らかな曲線によって定義された形状(滑らかな曲線を辺または境界として持つ)を効果的に、また正確にレンダリングできるということが、グラフィックス処理システムにおいてますます望ましい技術となってきている。一般に、曲線の一次導関数が区分的連続である、連続する辺または境界曲線を持つ形状は、グラフィックス処理の観点からは滑らかな形状(滑らかな曲線によって定義された形状)であるとみなされうる(また、本発明および応用の目的に関して、滑らかな形状、およびそれに対応して、滑らかな曲線であると考えられる)。グラフィックス処理におけるこのような滑らかな曲線の例としては、ベジエ曲線、スプライン曲線、および円弧がある。
【００１５】
例えば、近年、コンピュータグラフィックスでは、いわゆる「ベクターグラフィックス」を使用することが次第に一般的になってきている。
【００１６】
ベクターグラフィックスは、経路を形成するようにアンカー点で連結される、1つまたは複数の線分、例えば、直線または曲線(二次(ベジエ)曲線、楕円弧、三次(ベジエ)曲線など)などの、個別に定義された幾何学的オブジェクトの使用に基づく。
【００１７】
ベクターグラフィックスオブジェクト/経路は、通常、「ユーザー空間」と呼ばれるもので定義され、操作される。しかし、例えばベクターグラフィックスオブジェクト/経路をビデオディスプレイまたはプリンタ上に表示するためには、ユーザー空間定義ベクターグラフィックスは、ピクセルベースのディスプレイに適したフォーマット、つまり、プリミティブおよびサンプリング点ベース形式に変換されなければならない。この変換を実行するときに、ベクターグラフィックスオブジェクトの滑らかな曲線または形状を保持することは困難な場合があるが、それは、オブジェクトが、実際には、オブジェクトを表示するために使用されるサンプリング位置およびピクセルに合わせてラスター処理されなければならないからである。
【００１８】
表示のため滑らかな形状をレンダリングする、知られている技術の1つは、形状をレンダリングプロセス用に多数の小さな直線セクションに細分するものである。しかし、これは、例えば、CPU時間およびレンダリング帯域幅に関して高いパフォーマンスコストを有する。
【００１９】
滑らかな曲線をレンダリングするための他の知られている技術は、陰関数曲線を使用するもの、つまり、所定のサンプリング点が曲線の内側にあるのか外側にあるのかを判定するために陰関数式を評価するものである。しかし、すべての滑らかな形状が、このような陰関数形式に変換できるわけではなく、この技術は、どのような場合でも、陰関数曲線を評価するために専用レンダリングハードウェアまたは超高精度フラグメントシェーダーハードウェアを必要とする。
【発明の概要】
【発明が解決しようとする課題】
【００２０】
そこで、出願人は、滑らかな曲線および滑らかな曲線によって定義された形状をレンダリングするための改善された技術およびシステムを提供する余地があると確信している。
【課題を解決するための手段】
【００２１】
本発明の第1の態様によれば、グラフィックス処理システムにおいて滑らかな曲線によって定義される形状をレンダリングする方法が提供され、この方法は、
1つまたは複数のプリミティブ内のサンプリング位置についてテクスチャ内のテクスチャ値をサンプリングすることによりレンダリングされる1つまたは複数のプリミティブに形状を定義する曲線に対応する曲線を表すグラフィックステクスチャを適用するステップと、
サンプリングされたテクスチャ値を使用して、サンプリング位置が曲線のどちらの側にあるものとして処理されるべきかを決定するステップとを含む。
【００２２】
本発明の第2の態様によれば、グラフィックス処理システムにおいて滑らかな曲線によって定義される形状をレンダリングするための装置が実現され、この装置は、
滑らかな1つまたは複数の曲線を表す1つまたは複数のグラフィックステクスチャを格納するための手段と、
1つまたは複数のプリミティブ内のサンプリング位置についてテクスチャ内のテクスチャ値をサンプリングすることによりレンダリングされる1つまたは複数のプリミティブに滑らかな曲線を表すグラフィックステクスチャを適用するための手段と、
サンプリングされた1つまたは複数のテクスチャ値を使用して、曲線のどちらの側にサンプリング位置があるものとして処理されるべきかを決定するための手段とを備える。
【００２３】
本発明では、滑らかな曲線によって定義される形状(つまり、実際には、滑らかな曲線を辺または境界として有する)は、形状を定義する滑らかな曲線をテクスチャとして表し、次いでテクスチャを適切な1つまたは複数のプリミティブに適用することによりレンダリングされる。形状は、テクスチャ内のテクスチャ値をサンプリングし、サンプリングされた値を使用して、それぞれのサンプリング点が曲線のどちらの側にあるのかを判定することにより、表示用に描画される。これにより、グラフィックス処理システムは、与えられた任意の点が、曲線(ひいては形状)の内側にあるのか、または曲線(ひいては形状)の外側にあるのかを効率よく判定することができる。
【００２４】
本発明では、滑らかな曲線をテクスチャで表し、次いでそれをプリミティブに適用してこのようなやり方で形状(曲線)を描画するという方法により、コストの低い、既存のおよび知られているテクスチャマッピングシステムならびにハードウェアを使用して、滑らかな形状(および滑らかな曲線)をレンダリングするために使用されうる技術を実現する。したがって、以下でさらに説明されるように、本発明により、「プレーン」のテクスチャマッピングのみを使用して滑らかな曲線をより効率よくレンダリングすることが可能になる。したがって、本発明を使用すると、低コストの、例えば、固定された機能を持つ、グラフィックスハードウェア上で、また未修正の、および従来の、既存の固定された機能を持つ、グラフィックスハードウェア上で滑らかな形状(および曲線)をより効果的にレンダリングすることが容易になり、また例えば、細分技術および/または滑らかな曲線をレンダリングするために現在使用されている専用のハードウェアを使用する必要性を回避することができる。
【００２５】
1つまたは複数の滑らかな曲線は、テクスチャ内の与えられた位置に対するテクスチャ値をサンプリングすることで、システムが、テクスチャ内のその位置が曲線のどちらの側にあるのかを判定することができるように(複数の)テクスチャで表されるべきである。
【００２６】
特に好ましい一実施形態では、これは、曲線の一方の側のすべてのテクスチャ位置が、特定の好ましくは選択された閾値より小さいサンプリングされたテクスチャ値を返し、曲線の他方の側のすべてのテクスチャ位置が、閾値より大きいサンプリングされたテクスチャ値を返すようにテクスチャを構成することにより行われる。このことは、テクスチャがサンプリングされたときに、サンプリングされた点が曲線の内側にあるのか、または外側にあるのかを判定するためにサンプリングされたテクスチャ値が使用されることを意味している(サンプリングされたテクスチャ値が、曲線の閾値テクスチャ値より大きいか、または小さいかに応じて(または逆も同様に))。
【００２７】
これらの構成では、サンプリングされたテクスチャ値は、これに応じて好ましくは、サンプリングされた位置が曲線のどちらの側にあるかを、サンプリングされたテクスチャ値と曲線の閾値とを比較することにより判定するために使用される。この比較は、「より大きい(>)」もしくは「以上(>=)」の比較(または「より小さい(<)」もしくは「以下(<=)」の比較)としてもよい。好ましい、一実施形態では、「以上」(または「以下」)のテストが使用され、これは、本発明を使用したときに典型的なグラフィックスプロセッサによって実行される丸めを使用するとうまくいくことが判明している。
【００２８】
サンプリングされた位置が曲線のどちらの側にあるのかの判定(例えば、比較テスト)の結果は、好ましくは、そのサンプリングされた位置のさらなる処理を制御するために使用される。好ましくは、この判定の結果は、実際には、適宜滑らかな形状(曲線)に関してさらに処理がなされないようにサンプリング位置を保持するか、または破棄するために使用される。好ましくは、このテストの結果、サンプリングされた位置が曲線の内側にあることが判明した場合、プリミティブ内の対応する位置はそれに応じて陰影が付けられる(例えば、着色される)が、曲線の外側にある場合、プリミティブ内の位置は陰影を付けられず、注目する滑らかな形状に必要な特性を有する(例えば、好ましくは、形状の処理がさらに行われないように破棄される)。
【００２９】
したがって、好ましい一実施形態では、本発明は、サンプリング位置が曲線のどちらの側にあるかの判定の結果(比較テストの結果)に従って(複数の)サンプリング位置に陰影を付けるステップを含むか、または陰影を付けるための手段を備える。
【００３０】
したがって、例えば、また好ましくは、曲線の内側にあると判定された点は、好ましくは、特定の色および/または外観を施され、曲線の外側にあると判定された点は、異なる色を施される(有する)ことが許される(例えば、シーン内の他の何らかのオブジェクトまたは形状によって決定される色)。
【００３１】
言い換えると、その、またはそれぞれのサンプリング位置は、好ましくは、少なくとも一部はその位置が曲線のどちら側にあると判定された結果に従って陰影を付けられる(着色される)。
【００３２】
シェーディングは、例えば、テクスチャが適用されるパスと同じ処理パスで実行されうるか、またはテクスチャテストの結果が格納され(例えば、ステンシルバッファに)、次いでシェーディングが、後のパスで実行される。好ましい一実施形態では、シェーディングは、後続のパスで実行されるが、これは、滑らかな曲線と正多角形(交差し、互いに重なり合うこともありうる)の両方を組み合わせることが必要な場合に役立つ。
【００３３】
そこで、本発明の第3の態様によれば、グラフィックス処理システムにおいて滑らかな曲線によって定義される形状をレンダリングする方法が提供され、この方法は、
形状を定義する曲線に対応する曲線を表すグラフィックステクスチャを1つまたは複数のプリミティブ内のサンプリング位置についてテクスチャ値をサンプリングすることによりレンダリングされる1つまたは複数のプリミティブに適用するステップであって、テクスチャは曲線の一方の側にあるテクスチャ内のすべての位置が選択された閾値より小さいサンプリングされたテクスチャ値を返し、曲線の他方の側にあるテクスチャ内のすべての位置が選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成される、ステップと、
このステップを実行する際に、1つまたは複数のプリミティブのサンプリングされたサンプリング点に対するサンプリングされたテクスチャ値を曲線に対する選択された閾値テクスチャ値と比較して、1つまたは複数のプリミティブのサンプリングされた1つまたは複数のサンプリング点が曲線のどちらの側にあるものとして処理されるべきかを決定するステップとを含む。
【００３４】
本発明の第4の態様によれば、グラフィックス処理システムにおいて滑らかな曲線によって定義される形状をレンダリングするための装置が実現され、この装置は、
1つまたは複数の滑らかな曲線を表す1つまたは複数のグラフィックスステクスチャを格納するための手段であって、それぞれのテクスチャはそのテクスチャが表す曲線の一方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より小さいサンプリングされたテクスチャ値を返し、曲線の他方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成される、手段と、
1つまたは複数のプリミティブ内のサンプリング位置についてテクスチャ値をサンプリングすることによりレンダリングされる1つまたは複数のプリミティブに滑らかな曲線を表す格納されているテクスチャを適用するための手段と、
1つまたは複数のプリミティブのサンプリングされたサンプリング点に対するサンプリングされたテクスチャ値を曲線に対する選択された閾値テクスチャ値と比較して、1つまたは複数のプリミティブの1つまたは複数のサンプリング点が曲線のどちらの側にあるものとして処理されるべきかを決定するための手段とを備える。
【００３５】
同様に、本発明の第5の態様によれば、表示用に滑らかな曲線によって定義される形状をレンダリングする方法が提供され、この方法は、
形状が表示されるシーン領域を覆う1つまたは複数のプリミティブを生成するステップと、
1つまたは複数のグラフィックスフラグメントを生成するように1つまたは複数のプリミティブをラスター処理するステップであって、それぞれのフラグメントは1つまたは複数のプリミティブによって覆われる1つまたは複数のサンプリング点を表す、ステップと、
形状を定義する滑らかな曲線に対応する曲線を表すグラフィックステクスチャをフラグメントに適用するステップであって、テクスチャは曲線の一方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より小さいサンプリングされたテクスチャ値を返し、曲線の他方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成され、
それぞれのフラグメントについて、
テクスチャ内の対応する1つまたは複数の位置をサンプリングして、サンプリングされた1つまたは複数のテクスチャ値を決定し、
フラグメントに対するサンプリングされた1つまたは複数のテクスチャ値を曲線に対する閾値テクスチャ値と比較し、
フラグメントおよび/またはそのフラグメントによって表される1つまたは複数のサンプリング位置を、比較結果に基づき曲線の内側にあるものとしてまたは外側にあるものとして処理することにより実行されるステップとを含む。
【００３６】
本発明の第6の態様によれば、表示のため滑らかな曲線によって定義される形状をレンダリングするための装置が実現され、この装置は、
形状が表示されるシーン領域を覆う1つまたは複数のプリミティブを生成するための手段と、
0個以上のグラフィックスフラグメントを生成するように1つまたは複数のプリミティブをラスター処理するための手段であって、それぞれの生成されたフラグメントは1つまたは複数のプリミティブによって覆われる1つまたは複数のサンプリング点を表す、手段と、
形状を定義する滑らかな曲線に対応する曲線を表すグラフィックステクスチャを生成されたフラグメントに適用するための手段であって、テクスチャは曲線の一方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より小さいサンプリングされたテクスチャ値を返し、曲線の他方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成され、それぞれのフラグメントについて、テクスチャ内の対応する1つまたは複数の位置をサンプリングして、サンプリングされた1つまたは複数のテクスチャ値を決定することにより前記適用を行うための手段と、
フラグメントに対するサンプリングされた1つまたは複数のテクスチャ値を曲線に対する閾値テクスチャ値と比較するための手段と、
フラグメントおよび/またはそのフラグメントによって表される1つまたは複数のサンプリング位置を、比較結果に基づき曲線の内側にあるものとしてまたは外側にあるものとして処理するための手段とを備える。
【００３７】
本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。そこで、例えば、比較テストは、好ましくは「以上」(「以下」)テストである。同様に、比較の結果は、好ましくは格納され、その後の処理パスで(複数の)フラグメントのシェーディングおよび/または(複数の)サンプリング位置を制御するために使用される(したがって、これにより、(複数の)フラグメントおよび/または(複数の)サンプリング位置は、効果的に、曲線の内側にあるか、または外側にあるものとして保持されるか、または破棄される)。
【００３８】
本発明のこれらの態様の好ましい一実施形態では、フラグメント毎に単一のテクスチャルックアップがあり、フラグメントは、比較テストの結果として破棄される(または破棄されない)。
【００３９】
またここでは、当技術分野で知られているように、形状が表示されるシーン領域を覆う(複数の)プリミティブを、フラグメントの個数がゼロになるようにラスター処理することが可能である、つまり、形状が表示されてもシーン内には現れないということを事実上意味することに留意されたい。この場合、適用されるテクスチャに対しフラグメントはないことになる。しかし、典型的には、これらのプリミティブは、1つまたは複数のフラグメント(少なくとも1つのフラグメント)にラスター処理され、するとこの場合、テクスチャは上記のようにこれらのフラグメントに対し適用される。
【００４０】
本発明において滑らかな形状(および曲線)を表し、レンダリングするために使用されるテクスチャは、望みどおりに構築され、構成されうる。
【００４１】
好ましい一実施形態では、テクスチャは、当技術分野で知られているように、テクセル値の配列として構成され、それぞれのテクセル(テクスチャ位置)にはテクスチャマップ内におけるその位置の対応するテクスチャ値が関連付けられている。したがって、テクスチャを構成するテクセルのテクセル値は、この構成において、テクスチャが表す曲線の一方の側のテクスチャ位置がサンプリングされたときに、サンプリングされたテクスチャ値が曲線に対する選択された閾値より小さくなるように選択され、設定されるべきであり、また逆も同様である。
【００４２】
本発明は、さらに、曲線を表すテクスチャの構成およびテクスチャそれ自体に及ぶ。例えば、テクスチャは、別々に生成され(そして格納され)、および/または予め、そして次に、例えば、使用するグラフィックスプロセッサに送られるということが考えられる。本発明は、これらの活動とともに、滑らかな形状(および、曲線)をレンダリングするためのテクスチャの使用にも及ぶ。
【００４３】
そこで、本発明の第7の態様によれば、滑らかな曲線によって定義された形状をレンダリングするためにグラフィックス処理システムで使用するテクスチャを生成する方法が提供され、この方法は、
滑らかな曲線を表すテクスチャテクセルの配列を含むグラフィックステクスチャマップを、
滑らかな曲線の一方の側にあるテクスチャマップ内の位置から取られたテクスチャサンプルが、閾値テクスチャ値より小さいテクスチャ値を返すように、また滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが、閾値テクスチャ値より大きいテクスチャ値を返すようにテクスチャマップ内のテクセル値を設定することにより生成するステップを含む。
【００４４】
本発明の第8の態様によれば、滑らかな曲線によって定義された形状をレンダリングするためにグラフィックス処理システムで使用するテクスチャを生成するための装置が実現され、この装置は、
滑らかな曲線を表すためにテクスチャテクセルの配列を含むグラフィックステクスチャマップを生成するための手段を備え、前記手段は、
滑らかな曲線の一方の側にあるテクスチャマップ内の位置から取られたテクスチャサンプルが、閾値テクスチャ値より小さいテクスチャ値を返すように、また滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが、閾値テクスチャ値より大きいテクスチャ値を返すようにテクスチャマップ内のテクセル値を設定することにより生成するための手段を備える。
【００４５】
本発明の第9の態様によれば、滑らかな曲線によって定義された形状をレンダリングするためにグラフィックス処理システムで使用するグラフィックステクスチャマップが形成され、このテクスチャマップは、
テクスチャテクセルの配列で構成され、
その中で、テクセル値は、テクスチャが表す滑らかな曲線の一方の側にあるテクスチャマップ内の位置から取られたテクスチャサンプルが、閾値テクスチャ値より小さいテクスチャ値を返すように、また滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが、閾値テクスチャ値より大きいテクスチャ値を返すように設定される。
【００４６】
当業者であれば理解するように、本発明のこれらの態様および実施形態はすべて、適宜、本明細書で説明されている好ましい特徴のうちの1つまたは複数あるいはすべてを備えることができ、好ましくは備える。例えば、生成された1つまたは複数のテクスチャマップは、好ましくは、後から使用できるように格納しておく。
【００４７】
上記のように、本発明のこれらの態様および実施形態では、曲線を表すテクスチャマップは、曲線のいずれかの側にあるサンプリングされたテクスチャ点が曲線の閾値より大きいか、または小さいかのいずれかのサンプリングされたテクスチャ値を与えるように構成される。このことは、テクスチャがサンプリングされたときに、サンプリングされた点が曲線の内側にあるのか、または外側にあるのかを判定するためにサンプリングされたテクスチャ値が使用されることを意味している(サンプリングされたテクスチャ値が、曲線の閾値テクスチャ値より大きいか、または小さい場合(または逆も同様に))。
【００４８】
ここでは、本発明の態様および実施形態のすべての目的および意図は、曲線の一方の側にあるすべてのテクスチャ位置が曲線の選択された閾値より小さいサンプリングされたテクスチャ値を返すことを(逆もまた同様に)保証し、テクスチャ位置が置かれている曲線の側を容易に判定できるようにすることであることに留意されたい。
【００４９】
しかし、サンプリングされたテクスチャ位置が曲線の選択された閾値に等しい値を返す場合もありうる。実際、曲線の閾値に等しいサンプリングされたテクスチャ値を返す一列のテクスチャ位置がテクスチャ内にあるのが典型的である。
【００５０】
サンプリングされたときに曲線の閾値を返すこれらのテクスチャ位置は、それに応じて、テクスチャ内に等高線を形成し(サンプリングされたとき)、その等高線上では任意の点に対するサンプリングされたテクスチャ値は曲線の閾値テクスチャ値に等しくなる。したがって、テクスチャ内のこの等高線は(サンプリングされるときに)、テクスチャによって示されるように曲線の線を効果的に表し、したがって表すものとして効果的にみなされうる(テクスチャがマッピングされるときに)(曲線閾値等高線上のテクスチャ位置をサンプリングすることで、曲線の閾値を返し、したがってそのような位置は、実際に、曲線の一方または他方の側ではなく、テクスチャ内に現れるときに曲線の「上に」載るものとみなすことができるからである)。
【００５１】
したがって、できる限り、曲線について設定された閾値に対応するテクスチャ内の等高線が、テクスチャが表すその滑らかな曲線の線(したがって、実際には、滑らかな形状の辺)に厳密に一致し、また滑らかな曲線の線を厳密に、好ましくは可能な限り厳密に表すようにテクスチャを構成することが好ましいが、それは、このことが、テクスチャがサンプリングされたときにテクスチャが表す曲線(および形状)をより正確に反映することを意味すべきであるからである。
【００５２】
曲線の閾値を有する等高線の「上に」載っている(つまり、サンプリングされたときに曲線の閾値を返す)サンプルテクスチャ位置を特別な場合として(例えば、レンダリングされるときに曲線の線を区別するように)処理することは可能であろうが、好ましい一実施形態では、これは行われず、閾値に等しいテクスチャサンプルは、好ましくは、使用される比較テストの結果に従って単純に処理される(例えば、曲線の閾値の等高線の「上に」載っている点が閾値よりより大きい点と同じものとして処理される場合の、「以上」テストであるか、または曲線の閾値の等高線の「上に」載っている点が閾値より小さい点と同じものとして処理される場合の、「より大きい」テストであるか、などである)。
【００５３】
したがって、ここでは、一般的に、テクスチャ内の曲線の閾値等高線上の位置が、テクスチャが表す曲線の線に厳密に一致し、好ましくはその曲線の線と可能な限り厳密に一致するようにテクスチャを構成することが望ましいが、閾値等高線上の点が特別な場合として処理されるか、または識別されるようにテクスチャのサンプリングを意図的に構成する必要はないことにも留意されたい。むしろ、好ましくは、テストを単に行って、サンプリングされた位置が曲線の内側にあるものとして、または外側にあるものとして処理されるべきかどうかを確認するだけでよい。
【００５４】
上記の原則が守られている限り、テクスチャのテクセルに割り当てられた値は、好適な、また望ましい方法で設定され、構成されうる。例えば、望ましい範囲のテクセル値、および曲線閾値テクスチャ値が使用されうる。
【００５５】
特に好ましい一実施形態では、テクセル値は、0から1の範囲([0,1])に制約される。この場合、好ましい曲線閾値テクスチャ値の1つは0.5であるが、0.3や0.7などの他の値も、同様に使用することが可能である(また好ましい一実施形態では、使用される)。テクセル値は、他の範囲上に拡大することも許され、必要ならば、他の閾値も使用可能である。固定小数点または浮動小数点形式のテクスチャ(テクセル値)も、必要に応じて使用できる。
【００５６】
好ましい一実施形態では、曲線の一方の側にあるすべてのテクセルは、「1」などの「0.5」より大きい値に設定され、曲線の他方の側にあるすべてのテクセルは、「0」などの「0,5」より小さい値に設定され、曲線閾値は、「0.5」に設定される。これにより、テクセルをサンプリングすることによりテクスチャ位置が曲線のどちらの側にあるかを示す構成が得られる。
【００５７】
特に好ましい一実施形態では、テクセル値は、複数のビットを使用して表される。これにより、使用されるテクスチャ内のテクセル値の分解能を細かくすることができ、より正確なレンダリング性能をもたらしうる。そこで、好ましい一実施形態では、テクセル値のグレースケールが使用される。好ましくは、8ビット値または16ビット値が使用される。
【００５８】
出願人は、与えられたテクスチャサンプルのテクスチャマップからそのテクスチャ内に返される値は、使用されているテクスチャルックアップ(サンプリング)プロセスに依存する、例えば、テクスチャがサンプリングされるときに何らかの形式のフィルタリングまたは補間が適用されるかどうかに依存することを認識している。例えば、テクセルの同一の配列について、双線形フィルタリングを使用するテクスチャサンプリングプロセスは、サンプリング位置に最も近い位置にあるテクセルの値を単純に取るテクスチャルックアップと比べて、与えられたサンプリング位置に対する異なるテクセル値を返すことができる。
【００５９】
さらに、出願人は、これは、レンダリング結果を改善するために本発明で使用される滑らかな曲線を表すテクスチャを構成する際に利用することができると認識している。特に、出願人は、滑らかな曲線を表すテクスチャ内のテクセル値が、テクスチャが使用される場合に使用されるテクスチャサンプリングプロセス(フィルタリング)に合わせて手直し（tailored）または最適化できる場合、与えられたテクスチャ分解能について滑らかな形状(および曲線)をより正確にレンダリングすることが可能になると認識している。
【００６０】
(ここで、テクスチャの分解能を単に高めるだけで曲線レンダリングの精度を高めることが常に可能であろうという点に留意されたい。しかし、こうすることが、常に可能であったり、望ましいことであったりするわけではない。使用されるテクスチャサンプリング技術に合わせてテクスチャを手直しすることは、テクスチャ分解能を高めなくてもレンダリング精度を高める代替え手段となり、および/またはメモリ使用量の所定の増加に対して実効テクスチャ分解能の増大をもたらしうる)。
【００６１】
したがって、特に好ましい一実施形態では、滑らかな曲線を表すテクスチャのテクセル値が、滑らかな曲線をレンダリングするために使用される(べき)ときにテクスチャに適用されるテクスチャサンプリングプロセスに従って(に基づき)設定もしくは選択される。したがって、例えば、使用中のテクスチャをサンプリングするときに双線形フィルタリングが使用される場合、そのテクスチャについて格納されているテクセル値は、好ましくは、テクスチャ内の与えられた位置をサンプリングするために双線形フィルタリングが使用された場合に適切なテクスチャ値が返されるように選択される(点が曲線の内側にあるのか、外側にあるのかを示すために)。
【００６２】
言い換えると、滑らかな曲線を表すテクスチャは、好ましくは、使用されるテクスチャサンプリング(補間)技術に合わせて手直しされる。これにより、テクスチャフィルタリング(サンプリング)の後のレンダリングの結果が改善される。
【００６３】
そこで、本発明の第10の態様によれば、グラフィックス処理システムにおいて滑らかな曲線によって定義される形状をレンダリングする方法が提供され、この方法は、
形状を定義する曲線に対応する曲線を表すグラフィックステクスチャをレンダリングされる1つまたは複数のプリミティブに適用するステップであって、テクスチャは曲線の一方の側にあるテクスチャ内のすべての位置が選択された閾値より小さいサンプリングされたテクスチャ値を返し、曲線の他方の側にあるテクスチャ内のすべての位置が選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成され、それぞれのテクスチャについて格納されている値はさらに特定の選択されたテクスチャフィルタリングプロセスを使用してテクスチャがサンプリングされるときにテクスチャが滑らかな曲線を最も正確に表すように設定され、前記プリミティブへの適用のために、テクスチャが構成される特定のテクスチャフィルタリングプロセスを使用して1つまたは複数のプリミティブ内のサンプリング位置についてテクスチャ値をサンプリングすることにより実行されるステップと、
このステップを実行する際に、1つまたは複数のプリミティブのサンプリングされたサンプリング点に対するサンプリングされたテクスチャ値を曲線に対する選択された閾値テクスチャ値と比較して、1つまたは複数のプリミティブのサンプリングされた1つまたは複数のサンプリング点が曲線のどちらの側にあるものとして処理されるべきかを決定するステップとを含む。
【００６４】
本発明の第11の態様によれば、グラフィックス処理システムにおいて滑らかな曲線によって定義される形状をレンダリングするための装置が実現され、この装置は、
1つまたは複数の滑らかな曲線を表す1つまたは複数のグラフィックスステクスチャを格納するための手段であって、それぞれのテクスチャはそのテクスチャが表す曲線の一方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より小さいサンプリングされたテクスチャ値を返し、曲線の他方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成され、それぞれのテクスチャについて格納されている値はさらに特定の選択されたテクスチャフィルタリングプロセスを使用してテクスチャがサンプリングされるときにテクスチャが滑らかな曲線を最も正確に表すように設定される、手段と、
テクスチャが構成されている特定のテクスチャフィルタリングプロセスを使用して1つまたは複数のプリミティブ内のサンプリング位置についてテクスチャ値をサンプリングすることにより、レンダリングされる1つまたは複数のプリミティブに滑らかな曲線を表す格納されているテクスチャを適用するための手段と、
1つまたは複数のプリミティブのサンプリングされたサンプリング点に対するサンプリングされたテクスチャ値を曲線に対する選択された閾値テクスチャ値と比較して、1つまたは複数のプリミティブの1つまたは複数のサンプリング点が曲線のどちらの側にあるものとして処理されるべきかを決定するための手段とを備える。
【００６５】
同様に、本発明の第12の態様によれば、表示用に滑らかな曲線によって定義される形状をレンダリングする方法が提供され、この方法は、
形状が表示されるシーン領域を覆う1つまたは複数のプリミティブを生成するステップと、
1つまたは複数のグラフィックスフラグメントを生成するように1つまたは複数のプリミティブをラスター処理するステップであって、それぞれのフラグメントはプリミティブまたは複数のプリミティブのうちの1つのプリミティブによって覆われる1つまたは複数のサンプリング点を表す、ステップと、
形状を定義する滑らかな曲線に対応する滑らかな曲線を表すグラフィックステクスチャをフラグメントに適用するステップであって、テクスチャは曲線の一方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より小さいサンプリングされたテクスチャ値を返し、曲線の他方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成され、テクスチャに対する格納されている値はさらにテクスチャが特定の選択されたテクスチャフィルタリングプロセスを使用してサンプリングされるときにテクスチャが滑らかな曲線を最も正確に表すように設定され、
それぞれのフラグメントについて、
テクスチャが構成されている特定のテクスチャフィルタリングプロセスを使用してテクスチャ内の対応する1つまたは複数の位置をサンプリングしてサンプリングされた1つまたは複数のテクスチャ値を決定し、
フラグメントに対するサンプリングされた1つまたは複数のテクスチャ値を曲線に対する閾値テクスチャ値と比較し、
フラグメントおよび/またはそのフラグメントによって表される1つまたは複数のサンプリング位置を、比較結果に基づき曲線の内側にあるものとしてまたは外側にあるものとして処理することにより実行されるステップとを含む。
【００６６】
本発明の第13の態様によれば、表示のため滑らかな曲線によって定義される形状をレンダリングするための装置が実現され、この装置は、
形状が表示されるシーン領域を覆う1つまたは複数のプリミティブを生成するための手段と、
0個以上のグラフィックスフラグメントを生成するように1つまたは複数のプリミティブをラスター処理するための手段であって、それぞれの生成されたフラグメントはプリミティブまたは複数のプリミティブのうちの1つのプリミティブによって覆われる1つまたは複数のサンプリング点を表す、手段と、
形状を定義する曲線に対応する滑らかな曲線を表すグラフィックステクスチャを生成されるフラグメントに適用するための手段であって、テクスチャは曲線の一方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より小さいサンプリングされたテクスチャ値を返し、曲線の他方の側にあるテクスチャ内の任意の位置をサンプリングすることで選択された閾値より大きいサンプリングされたテクスチャ値を返すように構成され、それぞれのテクスチャについて格納されている値はさらに特定の選択されたテクスチャフィルタリングプロセスを使用してテクスチャがサンプリングされるときにテクスチャが滑らかな曲線を最も正確に表すように設定され、それぞれのフラグメントについて、テクスチャが構成される特定のテクスチャフィルタリングプロセスを使用してテクスチャ内の対応する1つまたは複数の位置をサンプリングしサンプリングされた1つまたは複数のテクスチャ値を決定することにより前記フラグメントへの適用が実行される、手段と、
フラグメントに対するサンプリングされた1つまたは複数のテクスチャ値を曲線に対する閾値テクスチャ値と比較するための手段と、
フラグメントおよび/またはそのフラグメントによって表される1つまたは複数のサンプリング位置を、比較結果に基づき曲線の内側にあるものとしてまたは外側にあるものとして処理するための手段とを備える。
【００６７】
本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。そこで、例えば、比較テストは、好ましくは「以上」(「以下」)テストである。同様に、比較の結果は、好ましくは格納され、その後の処理パスでフラグメントのシェーディングおよび/またはサンプリング位置を制御するために使用される(したがって、これにより、フラグメントおよび/またはサンプリング位置は、効果的に、曲線の内側にあるか、または外側にあるものとして保持されるか、または破棄される)。
【００６８】
同様に、本発明のこれらの態様の好ましい一実施形態では、フラグメント毎に単一のテクスチャルックアップがあり、フラグメントは、比較テストの結果として破棄される(または破棄されない)。
【００６９】
したがって、本発明の第14の態様によれば、滑らかな曲線によって定義された形状をレンダリングするためにグラフィックス処理システムで使用するテクスチャを生成する方法が提供され、この方法は、
滑らかな曲線を表すテクスチャテクセルの配列を含むグラフィックステクスチャマップを、
テクスチャをサンプリングするときに使用されることが意図されている特定のテクスチャフィルタリングプロセスに基づきテクスチャのテクセルに対し使用されるテクセル値を選択し、
テクスチャに対するテクセル値を、特定のテクスチャフィルタリングプロセスを使用して滑らかな曲線の一方の側にあるテクスチャマップ内の位置から取られたテクスチャサンプルが閾値テクスチャ値より小さいテクスチャ値を返し、また特定のテクスチャフィルタリングプロセスを使用して滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが閾値より大きいテクスチャ値を返すように設定することにより、生成するステップを含む。
【００７０】
本発明の第15の態様によれば、滑らかな曲線によって定義された形状をレンダリングするためにグラフィックス処理システムで使用するテクスチャを生成するための装置が実現され、この装置は、
滑らかな曲線を表すためにテクスチャテクセルの配列を含むグラフィックステクスチャマップを生成するための手段を備え、この手段は、
テクスチャをサンプリングするときに使用されることが意図されている特定のテクスチャフィルタリングプロセスに基づきテクスチャのテクセルに対し使用されるテクセル値を選択するための手段と、
テクスチャに対するテクセル値を、特定のテクスチャフィルタリングプロセスを使用して滑らかな曲線の一方の側にあるテクスチャマップ内の位置から取られたテクスチャサンプルが閾値テクスチャ値より小さいテクスチャ値を返し、また特定のテクスチャフィルタリングプロセスを使用して滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが閾値より大きいテクスチャ値を返すように設定するための手段と、を備える。
【００７１】
本発明の第16の態様によれば、滑らかな曲線によって定義された形状をレンダリングするためにグラフィックス処理システムで使用するグラフィックステクスチャマップが形成され、このテクスチャマップは、
テクスチャテクセルの配列を含み、
テクセル値は、テクスチャが表す滑らかな曲線の一方の側にあるテクスチャマップ内の位置から取られたテクスチャサンプルが閾値テクスチャ値より小さいテクスチャ値を返し、また滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが閾値テクスチャ値より大きいテクスチャ値を返すように設定され、
テクスチャに対するテクセル値は、さらに、特定の選択されたテクスチャフィルタリングプロセスを使用してテクスチャがサンプリングされるときにテクスチャが滑らかな曲線を最も正確に表すように設定される。
【００７２】
当業者であれば理解するように、本発明のこれらの態様および実施形態はすべて、適宜、本明細書で説明されている好ましい特徴のうちの1つまたは複数あるいはすべてを備えることができ、好ましくは備える。
【００７３】
本発明のこれらの態様および実施形態では、テクスチャは、所望のテクスチャフィルタリングプロセスとともに使用するように構成されうる。最も好ましくは、特定の選択されたテクスチャフィルタリングプロセスは、補間プロセス、つまり、テクセルとテクセルの間にある位置に対するテクスチャ値を補間するフィルタリングプロセスである。一般に、与えられたサンプリング位置における補間の重みおよび座標が特定のテクセルに対し予測可能であるテクスチャ補間(フィルタリング)技術と適合するようにテクスチャ内のテクセル値を手直しすることが可能である。したがって、一般に、等方性を有する補間プロセスを使用することが可能であろう。そこで、例えば、テクスチャは、三重線形フィルタリングとともに使用するように手直しする(最適化する)ことが可能であり、また一実施形態では手直し(最適化)される。そうすると、例えば、滑らかな曲線を表すテクスチャをミップマップ形式で形成することができる。
【００７４】
特に好ましい一実施形態では、滑らかな曲線を表すテクスチャは、双線形フィルタリングを使用してサンプリングするように手直し(最適化)される。双線形フィルタリングは、「安価な」固定機能グラフィックスハードウェアにも存在するふつうに使われているテクスチャサンプリング技術であり、したがって双線形フィルタリングとともに使用するように本発明を手直しすると、グラフィックスプロセッサへの適用可能性、特に安価なグラフィックス処理ハードウェアへの適用可能性が向上する。
【００７５】
したがって、特に好ましい一実施形態では、滑らかな曲線を表すテクスチャマップ内に格納されているテクセルの値は、テクスチャのサンプリングに双線形フィルタリングが使用されるということに基づいて(つまり、テクスチャ内の位置をサンプリングするために双線形フィルタリングが使用されたときに、適切なテクスチャ値が返されるように)選択される。同様に、テクスチャは、好ましくは、滑らかな形状をレンダリングするために使用されている場合に双線形フィルタリング技術を使用してサンプリングされる。
【００７６】
双線形フィルタリングなどのある種の形式の補間またはフィルタリング機能が、テクスチャをサンプリングするために使用される場合、好ましくは、テクスチャのテクセルのビット分解能が1を超える、例えば、8ビットまたは16ビットのテクセル値をとる(つまり、それぞれのテクセルがその値を表すために複数のビットを利用できる)。これにより、テクセル値の分解能を高めることができ、対応するテクスチャフィルタリングプロセスと組み合わせたときに、例えば、返されるサンプリングされた位置の値と曲線の真の等高線との一致度を高めることができる。
【００７７】
また、ある種の形式のフィルタリングまたは補間プロセスを使用してテクスチャがサンプリングされる場合、曲線の与えられた側にあるテクセルの値は、常に、曲線の閾値より大きい(またはそれぞれ小さい)が、テクスチャ内の曲線の閾値等高線の周りでは、その等高線に近いテクセルは、曲線の同じ側にあるものの曲線の閾値等高線からは遠い位置にあるテクセルに比べて高い(またはそれぞれ低い)値を有することがあることにも留意されたい。
【００７８】
これは、双線形フィルタリングなどのフィルタリングプロセスを使用して曲線の線の周りのテクスチャ位置がサンプリングされるときに所望のテクスチャ値が返されるようにするためには、曲線の与えられた側にあるテクセルは曲線のその側に対して可変値を有する必要がある場合があるからである。実際、一般的には、曲線の閾値等高線の周りで一定範囲のテクセル値にわたってある程度の変化がありえ、これは、それに比べて曲線の閾値等高線から遠い距離のところでテクスチャ値が一様であってもそうなる。
【００７９】
したがって、特に好ましい一実施形態では、テクスチャは、曲線の閾値等高線の付近のテクセル値が一定範囲の値にわたって変化するが、それに比べて曲線の閾値等高線から遠い距離のところにある曲線の与えられた側にあるテクセルはそれぞれ同じテクセル値を有するように形成される。テクセル値が曲線上で変化する場合にその曲線の閾値等高線の周りの範囲の広がりは、例えば、テクスチャがサンプリングされるときに適用されるフィルタカーネルのサイズに依存する。好ましくは、また例えば双線形フィルタリングの場合に、テクセル値は、曲線の閾値等高線のそれぞれの側でテクセル最大2つ分までの、またはテクセル最大4つ分までの距離に対し変化する。
【００８０】
最も好ましくは、曲線の閾値等高線から大きく隔たった距離にあるすべてのテクセルは、曲線の一方の側で、「1」などの曲線の閾値より大きい与えられた値に設定され、曲線の他方の側の等高線から大きく隔たった距離にあるすべてのテクセルは、曲線の閾値より小さい与えられた値に設定される。
【００８１】
同様に、曲線の閾値等高線に近い位置にあり、曲線の閾値より小さいテクスチャ値で表される曲線の側にあるテクセルは、曲線のその側で曲線のその等高線から離れているところにあるテクセルよりなおいっそう低いテクセル値を有することができ、また実際に有することが好ましい(または逆も同様に)。
【００８２】
テクスチャ(テクスチャに使用されるテクセル値のいくつかまたはすべて)は、使用されるテクスチャサンプリングプロセスに合わせて、曲線が所望のまた好適な方法によりそのサンプリングプロセスに対し最も正確に表されるように最適化または手直しされうる。
【００８３】
好ましくは、テクスチャ内の値は、選択されたテクスチャサンプリングプロセスによるサンプリングの後に(局所的)誤差の総和が最小化されるように設定(計算)される。したがって、例えば、双線形フィルタリングの場合、テクスチャで使用される値は、好ましくは、例えば、テクセル中心にある正しい値を持つことを必ずしも目的とせずに、双線形フィルタリングの後に(局所的)誤差の総和を最小化するように設定される。
【００８４】
特に好ましい一実施形態では、使用するテクセル値は、サンプリングプロセスを表すために使用されうる費用関数を導出し、次いでシミュレーテッドアニーリング法などの1つまたは複数の最適化アルゴリズムを使用してその費用関数を最小にすることにより決定され、選択(設定)される。
【００８５】
そこで、本発明の第17の態様によれば、滑らかな曲線によって定義された形状をレンダリングするためにグラフィックス処理システムで使用するテクスチャを生成する方法が提供され、このときに、テクセル値は、テクスチャが表す滑らかな曲線の一方の側にあるテクスチャマップ内の位置から取られたテクスチャサンプルが、閾値テクスチャ値より小さいテクスチャ値を返すように、また滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが、閾値テクスチャ値より大きいテクスチャ値を返すように設定され、この方法は、
テクスチャ内にあるときの曲線の位置と特定のテクスチャサンプリングプロセスを使用してテクスチャのテクセルがサンプリングされるときの曲線の示されている位置との間のそれぞれの誤差を表す費用関数を最小化することによりテクスチャに使用するテクセル値の集合を決定するステップを含む。
【００８６】
本発明の第18の態様によれば、滑らかな曲線によって定義された形状をレンダリングするためにグラフィックス処理システムで使用するテクスチャを生成するための装置が実現され、  このときに、テクセル値は、テクスチャが表す滑らかな曲線の一方の側にあるテクスチャマップ内の位置から取られたテクスチャサンプルが、閾値テクスチャ値より小さいテクスチャ値を返すように、また滑らかな曲線の他方の側にある位置から取られたテクスチャサンプルが、閾値テクスチャ値より大きいテクスチャ値を返すように設定され、この装置は、
テクスチャ内にあるときの曲線の位置と特定のテクスチャサンプリングプロセスを使用してテクスチャのテクセルがサンプリングされるときの曲線の示されている位置との間のそれぞれの誤差を表す費用関数を最小化することによりテクスチャに使用するテクセル値の集合を決定するための手段を備える。
【００８７】
当業者であれば理解するように、本発明のこれらの態様および実施形態はすべて、適宜、本明細書で説明されている好ましい特徴のうちの1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、テクスチャは、好ましくは、双線形フィルタリングを使用してサンプリングされることが意図されている。
【００８８】
本発明のこれらの態様および実施形態では、テクセル値の最適化は、好ましくは、テクセル値を変数として含む費用関数を定め、次いでその費用関数の最小化を試み、それに応じてテクセル値を選択するという形で実行される。
【００８９】
特に好ましい一実施形態では、使用するテクセル値のいくつかまたはすべては、テクスチャ内のテクセルの間の曲線の経路を考慮し、曲線の経路がテクセル間にある点において曲線に対する閾値テクスチャ値を(可能な限り)返すようにテクセルのいくつかまたはすべての値を最適化することを試みることにより(使用するテクセル値を導出するための費用関数が定められる)決定される(次いで、このことで、テクスチャ内の閾値等高線が可能な限り(テクスチャのテクセル配列を通じて)テクスチャ内の曲線の経路(線)と一致することが保証されるべきなので)。
【００９０】
特に好ましいこのような一実施形態では、特に、曲線を表すテクスチャが双線形フィルタリング用に最適化される場合に、使用するテクセル値のいくつかまたはすべては、隣接するテクセルのそれぞれの対の間の(テクスチャ内の)曲線の経路を考慮し、曲線がテクセルの対を結ぶ直線と交差する点において閾値テクスチャ値を返すように対の中のテクセルの値を最適化することを試みることにより(使用するテクセル値を導出するための費用関数が定められる)決定される。
【００９１】
したがって、特に好ましい一実施形態では、費用関数は、(テクセル配列を通じて)曲線の経路(線)を曲線の経路(線)とそれぞれのテクセル中心を結ぶ直線との一連の交わりに分け、次いで曲線とそれぞれの2つのテクセル中心を結ぶ直線との交わり点で所望の曲線閾値が得られるようにそれぞれのテクセル値を調節することを試みることにより生成される。
【００９２】
これは、好ましくは、テクセルの適切な各対毎に、またそれぞれのテクセル対の個別の費用関数の総和として決定されたテクセルのすべての対に対する全費用関数(最適化)について繰り返される。
【００９３】
したがって、特に好ましい一実施形態では、テクスチャに使用するテクセル値は、それぞれの関連するテクセル対(好ましくはテクスチャ内の曲線の経路(線)(実際には、事実上テクスチャ内の閾値等高線)(等高線は曲線の経路と一致することが意図されているため)をまたぐテクセル対のそれぞれ(およびそれぞれのみ))に関して決定された局所的費用関数の総和である大域的費用関数を使用し、大域的最適化法を使用して大域的(全体的)誤差(この構成では、局所的な(個々のテクセル対の)誤差の総和となる)を最小化する構成を見つけようとすることで、決定される。
【００９４】
これらの構成では(また一般的に)、個別のテクセル対毎の局所的費用関数(2つのテクセル値の調節)は、好ましくは、一連の相互に関連する最適化問題とみなされる。
【００９５】
それぞれのテクセル対に対する費用関数(最適化)において、好ましくは、1つのまたはその目的(費用の考慮)は、テクセルの対(の間)を結ぶ直線上の曲線の実際の交差(交わり)点とテクセル値がサンプリングされるときに示される交差点との間の差を最小化することである。(理想的には、テクセル値をサンプリングすることで、曲線の真の交差点が示されるべきであるが、これは、常に可能であるとは限らないため、その目的はこの誤差を最小化することなのである。)
【００９６】
この因子は、好ましくは、実際の交差点位置とテクセル値によって示されるような位置との間の誤差を費用関数に含めることにより考慮される。
【００９７】
また、費用関数は、費用関数が生成するテクセル値が(テクスチャで表されている曲線について)利用可能なテクセル値の範囲の大部分および好ましくは範囲全体(例えば、グレースケール)(例えば、[0,1])を使用するように構成されることが好ましい。これは、曲線の閾値等高線がより高い分解能で定義されることを保証するのに役立つ。
【００９８】
これは、好ましくは、特に上記の構成において、考慮されるテクセル対のテクセル値の差が注目するテクセルの対を結ぶ直線に関して曲線がなす角度を反映するように費用関数を設定することにより実現される。例えば、曲線が2つのテクセルの間の直線に垂直である場合、理想的には、テクセル値の間の差は、テクセル値の利用可能な(許容される)範囲全体に等しいもの(例えば、「1」)であるべきである。その一方で、曲線が2つのテクセルの間の直線に平行である場合、テクセル値の差は「0」であるべきである。
【００９９】
好ましい一実施形態では、費用関数は、これを考慮し達成することを試みるための一因子として曲線と2つのテクセルの間の直線とがなす角度の正弦を使用する。
【０１００】
また、費用関数が、曲線がテクセルの対の間の直線にほとんど平行である場合により小さな重みを辺に適用するように構成されることが好ましいが、この場合のように、テクセル値をサンプリングするときの「誤差」は曲線の位置を同じだけ歪ませる傾向を持たない。これは、好ましくは、導出された「費用」値に重みを適宜付けるために、費用関数に曲線とテクセルの間の直線とがなす角度の正弦の平方に関係する因子を含めることにより行われる。
【０１０１】
この費用関数は、好ましくは、テクセルのそれぞれの適切な個別の対に関して導出され、適用され、またこの形式で定義されたテクセル値のそれぞれの個別の対に対する費用関数は、考慮(テスト)されているすべてのテクセル対にわたって総和され、これにより全体の曲線(テクスチャ)に対する全体的または「大域的」費用関数が得られるが、その後、これは、最適化アルゴリズムを使用して注目する曲線に使用するテクセル値を導出することで最小化される(それぞれのテクセル対に使用する最適なテクセル値を見つけるため)。任意の好適な最適化プロセスが使用可能であるが、シミュレーテッドアニーリングが好ましい。
【０１０２】
その後、決定されたテクセル値は、好ましくは、滑らかな曲線を表すグラフィックステクスチャとして格納される。
【０１０３】
好ましくは、曲線に関する費用関数は、テクスチャがサンプリングされるときに曲線の経路(閾値等高線)の位置の指示に影響を及ぼすテクセル(テクセル対)(例えば、および好ましくは、閾値等高線の位置にわたる、またはまたがる(つまり、テクスチャ内の曲線の経路が間を通過する)(直接)隣接するテクセルのそれぞれの対)に関してのみ評価され(したがって、テクセル値が設定され)る。これは、他のテクセル(閾値等高線からさらに遠い)は、テクスチャがサンプリングされるときに(例えば、および特に、双線形フィルタリングがテクスチャのサンプリングに使用される場合に)決定されたその等高線の示されている位置に影響を及ぼすべきでなく、したがってその配置に応じて、曲線の閾値の上または下の値に単純に設定することができるからである。
【０１０４】
したがって、特に好ましい一実施形態では、費用関数は、曲線の閾値等高線に近い位置にあるテクセルについて、好ましくは曲線の閾値等高線に隣接するテクセルについて(のみ)、最も好ましくは曲線の閾値等高線にわたる、またはまたがる直接隣接するテクセルの対について(のみ)、テクセル値(のみ)を決定するために使用され、その際に、残りのテクセル(つまり、曲線の線(閾値等高線)から遠い位置にあるテクセル)はそれぞれ(費用関数を使用してそれらのテクセルに使用する値を導出するのではなく)曲線の閾値の上または下にある値に単純に設定される。
【０１０５】
同様に、好ましい一実施形態では、上述のように、テクスチャ内の曲線の経路は、実際には、曲線をまたがるテクセルのそれぞれの対の間の曲線の一連の交わりに分けられ、それぞれの対の2つのテクセル値の調節は一連の相互に関連する最適化問題として処理され、曲線から遠い位置にあるテクセルは適宜曲線に対して選択された閾値の上または下にある値に設定されている。
【０１０６】
同様に、特定のテクスチャサンプリング(フィルタリング)プロセスに合わせたテクスチャの最適化または手直し(意図されたテクスチャサンプリングプロセスに基づくテクスチャ値の設定)は、テクスチャがサンプリングされるときに閾値等高線の位置の指示に影響を及ぼすテクセル(例えば、および好ましくは、その等高線の位置にわたる、またはまたがる(直接)隣接するテクセルのそれぞれの対(つまり、等高線が間を通る))に関してのみ実行される(それに応じてテクセル値が設定され)ことが特に好ましい。これは、上述のように、他のテクセル(閾値等高線からさらに遠い)は、テクスチャがサンプリングされるときに決定されたその等高線の示されている位置に影響を及ぼすべきでなく、したがってその配置に応じて、曲線の閾値の上または下の値に単純に設定することができるからである。
【０１０７】
したがって、特に好ましい一実施形態では、テクセル値のすべてではなく数個のみが、使用されるテクスチャサンプリングプロセスに基づき特に設定される。最も好ましくは、曲線の閾値等高線に近い位置にあるテクセルについて、好ましくは曲線の閾値等高線に隣接するテクセルについて(のみ)、最も好ましくは曲線の閾値等高線にわたる、またはまたがる直接隣接するテクセルの対について(のみ)、テクセル値のみが、使用されるテクスチャサンプリングプロセスに基づき特に設定され(少なくとも双線形フィルタリングを使用してテクスチャがサンプリングされる場合、また他の種類のフィルタリングでは他のテクセルを設定することが必要になることもある)、その際に、残りのテクセル(つまり、曲線の線(閾値等高線)から遠い位置にあるテクセル)は上述のようにそれぞれ曲線の閾値の上または下にある値に単純に設定される。
【０１０８】
滑らかな曲線を表すテクスチャは、作成された後、後から曲線(曲線によって定義された形状(曲線をその辺(境界)として有する))をレンダリングするために使用できるように格納することができ、好ましくは格納される。
【０１０９】
テクスチャが表す滑らかな曲線によって定義される形状をレンダリングするために本発明のテクスチャを実際に使用する場合には、例えば、任意の好適なグラフィックステクスチャマッピングプロセスを使用することができる。
【０１１０】
上述のように、特に好ましい一実施形態では、テクスチャは、形状が現れるシーン領域を覆う1つまたは複数のプリミティブを最初に生成し、次いで、テクスチャをその1つまたは複数のプリミティブに適用してそれに応じてその1つまたは複数のプリミティブに陰影を付けることにより、表示する滑らかな形状をレンダリングするために使用される。
【０１１１】
この1つまたは複数のプリミティブは、例えば、描画される形状が現れるシーン領域を覆う境界ボックスを定義することにより、望みどおりに生成されうる。
【０１１２】
プリミティブを生成するときに、生成された(複数の)プリミティブがテクスチャの所望の(および適切な)領域のみをサンプリングすることを保証する必要がある場合がある(これは、特に、以下でさらに説明するように、複数の曲線が同じテクスチャで表される場合に言える)。これは、必要な場合に、望むとおりに達成されうる。好ましい一実施形態では、レンダリングされる入力曲線(形状)に対する制御点の凸包を覆うプリミティブが、このことを保証しようとして生成される。(必要ならば、例えば、2つの端点のうちの1つが、凸包の一部でない場合に、入力曲線(形状)は、2つの端点の間の直線が必ず凸包の一部となるように2つに分割されうる。
【０１１３】
次いで、生成されたプリミティブは、生成されたサンプリング点およびフラグメントに合わせてラスター処理され、曲線を表すテクスチャが、当技術分野で知られているように、プリミティブサンプリング点(および/またはフラグメント)位置に対応するテクスチャ内のサンプリング位置によって1つまたは複数のプリミティブのそれぞれのサンプリング点(および/またはフラグメント)に適用される。(上述のように、テクスチャは、双線形フィルタリングなどの適切なテクスチャフィルタリングプロセス、好ましくは双線形フィルタリングを使用して、サンプリングされる。)
【０１１４】
次いで、サンプリングされたテクスチャ値が注目する曲線に対し設定された閾値と比較され、それに応じて対応する(複数の)サンプリング位置および/または(複数の)フラグメントが保持されるか、または破棄される。
【０１１５】
この「比較して破棄する」操作は、注目するグラフィックス処理システムに望ましい、また好適な方法で実行されうる。
【０１１６】
例えば、固定機能ハードウェアを有するグラフィックス処理システムでは、サンプリングされたテクスチャ値を比較して、曲線の外側にあるサンプリング点を破棄するために、アルファ値を曲線閾値(例えば、0.5)に設定したアルファテストを使用することが可能であり、また好ましくは使用する。プログラム可能なフラグメントシェーダーハードウェアを有するグラフィックス処理システムでは、比較および条件付き破棄ルーチンを使用することが可能であり、好ましくは使用される。
【０１１７】
特に好ましい一実施形態では、描画される与えられた形状(曲線)は、2つ以上の分離した形状(曲線)に分割され、形状(曲線)のそれぞれの異なる部分は、次いで、(例えば、異なる曲線表現テクスチャまたは同じ曲線テクスチャの異なる部分を使用して)別々にレンダリングされる。
【０１１８】
好ましい一実施形態では、これは、特異点を有する曲線(尖点を含む曲線)によって定義された形状を、その特異点(または複数の特異点)のところで分割するために行われ、これにより曲線(幾何学的図形)の(複数の)特異点のそれぞれの側で別々に曲線(形状)の部分を描画する。この構成により、(以降で考察するように)曲線内の特異点を(複数の)テクスチャ内のテクセルグリッド線上に正確に配置する必要性をなくすことができる。
【０１１９】
(また、テクスチャによって表される曲線が、(1つまたは複数の)特異点を有する場合に、曲線内の(複数の)特異点が、テクスチャのテクセルの中心を結ぶグリッド線上に正確に置かれるようにテクスチャを構成することも可能であろう(好ましい一実施形態では、これが行われる)。これは、特異点の不連続な導関数は、テクセル「グリッド」上にあり、したがって、「特異点」で曲線を分割する必要をなくすことができる。)
【０１２０】
また、例えばレンダリングアーティファクトの数を減らしやすくなるように、レンダリングプロセス用に非常に大きな形状を小さな形状に分割することが望ましい場合もある。
【０１２１】
同様に、ループを含む曲線によって定義された形状などの、自己交差形状を、自己交差しない2つ(またはそれ以上の)形状に分割し、次いで、別々に描画(レンダリング)することで、そのような形状に対する本発明の技術を使用することを容易にすることが可能であろう。
【０１２２】
特に好ましい一実施形態では、それぞれが異なる曲線および/または与えられた曲線の異なる部分を表す複数の異なるテクスチャが生成され、格納される。次いで、描画される与えられた形状(曲線)に対し、その形状(曲線)に最も適しているテクスチャが識別され、選択され、形状(曲線)をレンダリングするために使用されうる。テクスチャ内の曲線の好適な範囲を表すことにより、ほとんど何でもよいと言える任意の湾曲形状をレンダリングすることが可能である。
【０１２３】
実際、出願人は、描画することが望まれる可能性のあるすべてではないとしてもほとんどの曲線セクションは、実際に、いくつかの曲線族のうちの1つに分類され、したがって、比較的少数のテクスチャを使用してそもそも描画したい曲線のすべてではないとしても大半を表すことが可能であることを認識している。
【０１２４】
好ましい一実施形態では、複数の異なる曲線は同じテクスチャマップ内に格納される。これは、例えば、テクスチャ内の曲線を空間的に分離し、次いで、注目する曲線についてテクスチャ内の適切な領域をサンプリングすることにより行われうる。
【０１２５】
本発明が使用される場合、好ましくは、1つまたは複数の滑らかな曲線を表す1つまたは複数のテクスチャが予め生成され、次いで、グラフィックス処理システムで使用できるように適宜格納され、例えば、好ましくは、グラフィックス処理システムが使用する他の(静的)テクスチャマップとともに格納される。次いで、所定のアプリケーションが、注目する滑らかな曲線(注目する滑らかな曲線によって定義された形状)が描画されるときに適用されるテクスチャを呼び出すことができる。
【０１２６】
本発明においてテクスチャで表される滑らかな形状および滑らかな曲線は、好適な、また望ましい、そのような形状および曲線を含みうる。上述のように、特に好ましい一実施形態では、滑らかな曲線またはそれぞれの滑らかな曲線は、曲線の一次導関数(曲線の経路の一次導関数)が区分的連続である、連続な曲線である。好ましくは、この曲線は、ベジエ曲線、スプライン曲線、および/または円弧でもあるか、またはその代わりにベジエ曲線、スプライン曲線、および/または円弧である。
【０１２７】
同様に、本発明が適用可能である(適用される)滑らかな曲線によって定義された形状は、好適な滑らかな曲線を辺または境界として有する形状とすることができる。したがって、本発明においてテクスチャで表される(またテクスチャを使用してレンダリングされる)滑らかな形状は、曲線の一次導関数(曲線の経路の一次導関数)が部分的連続である、連続な曲線をその辺(境界)として有する任意の形状を含むことができ、また好ましくは含む。好ましくは、形状を定義する(形状の辺を定義する)曲線は、ベジエ曲線、スプライン曲線、および/または円弧である。
【０１２８】
出願人は、さらに、いくつかの曲線族内のすべての曲線が、アフィン変換を使用して「正準曲線」とここでは称される定義済みの、単一の、または基本的な基準曲線の少なくとも一部に変換されうることを認識している。例えば、二次曲線の場合、与えられた二次曲線は、アフィン変換を使用して、基本的な二次曲線y=x2に変換することができ、したがって、これは、二次曲線に使用されうる「正準」曲線である。
【０１２９】
したがって、これにより、単一の曲線、つまり正準曲線に関する情報を使用して、レンダリングのためグラフィックス処理システムによって受け取られる滑らかな形状を定義することができる複数の滑らかな曲線に関する情報を決定することができる。言い換えると、例えば、レンダリングされるグラフィックス処理システムによって受け取られうる滑らかな形状を定義することができるそれぞれの個別の滑らかな曲線に関してデータを導出または格納しなければならないということはなく、正準曲線に関するデータを導出または格納するだけでよい。次いで、このデータは、「正準曲線」が表す滑らかな曲線の族(集合)に属す個別の滑らかな曲線のそれぞれによって定義された形状をレンダリングするために使用されうる。
【０１３０】
したがって、特に好ましい一実施形態では、1つまたは複数の、好ましくは複数の基準または「正準」曲線を表すテクスチャが生成され、使用される。
【０１３１】
当業者であれば、レンダリングされる形状を定義する所定の入力された滑らかな曲線は、例えば描画される形状を定義する曲線がテクスチャで表されるときに曲線の向きと正確に一致しない場合に、テクスチャで表されテクスチャに格納されるときに対応する滑らかな曲線のプロファイルと正確に一致しないことがあることを理解するであろう。例えば、入力される形状(曲線)は、テクスチャで表されるときに曲線に関して回転されるか、またはスケーリングされうる。これらの場合、テクスチャ内で内接する(複数の)曲線は、ディスプレイ上に表示されるときに入力形状(曲線)を正しく描画するように、適宜、表示される形状(曲線)上にマッピングされる必要がある。
【０１３２】
このような変換は、好ましくは、アフィン変換を使用して、テクスチャを、描画される形状(曲線)とマッチさせるステップを含むことができる。したがって、好ましい一実施形態では、本発明は、テクスチャを適用する前に、描画される形状(曲線)にマッピングできるようにテクスチャを変換するステップを含む。
【０１３３】
テクスチャで表されるときに(複数の)曲線を描画される形状(曲線)にマッピングするプロセスは、好適な、また望ましい方法で実行できる。好ましい一実施形態では、テクスチャ内で内接する曲線を表示する画像上にマッピングするプロセスは、描画される入力曲線(描画すべき形状を定義する曲線)を定義する制御点に対するテクスチャ座標を計算し、次いで、(例えば、グラフィックスプロセッサの補間ハードウェアを使用して)曲線上でテクスチャ座標を線形補間することにより行われる。
【０１３４】
制御点におけるテクスチャ座標は、望みどおりに決定され、必要ならば異なる種類の曲線に対し異なる方法を使用することもできる。
【０１３５】
例えば、二次曲線の場合、それぞれの入力曲線は、テクスチャ内に格納されている曲線のアフィン変換バージョンだけとすべきである。毎回曲線全体を使用することにより、制御点のそれぞれに対し固定テクスチャ座標が使用され、必要な変換が、サーフェス空間内の制御点と(テクスチャ空間内の)テクスチャ座標との対を作ることにより暗黙のうちに定義されうる。
【０１３６】
三次曲線の場合、曲線は、好ましくは、最初に蛇行曲線、ループ曲線、尖点曲線、「無限遠尖点」曲線(つまり、変曲点が無限に遠く離れている尖点を持つ曲線)、退化曲線、または放物線として分類される。放物線は、二次曲線であり、好ましくは、そのようなものとして取り扱われる。退化曲線は、好ましくは、曲線を1つまたは複数の直線に分割する形で取り扱われる。
【０１３７】
他の曲線については、曲線の変曲点(inf10およびinf11)が、好ましくは計算される。次いで、格納されている曲線が、変曲点が常に-1と1にあるように構成された場合、[inf10..inf11]->[-1..1]からの線形変換が計算されうる。こうすることで、入力曲線の始点および終点のパラメータ位置(0および1)は、テクスチャ空間内のそれらの位置に変換されうる。これで、テクスチャが覆う必要のある正準テクスチャ空間内のパラメータ範囲が知られる。
【０１３８】
ループ曲線および蛇行曲線については、次いで、必要なパラメータ範囲を覆うテクスチャ(例えば、最もズームインされたテクスチャ)を見つけるために、格納されているテクスチャが探索される。(これは、尖点および無限遠尖点曲線には必要ない。)
【０１３９】
次いで、格納されている曲線(変曲点が-1と1にある)は、好ましくは、変曲点を入力曲線の変曲点、inf10およびinf11にマッピングするためにスケーリングし直される。次いで、この変換は、好ましくは、格納されている曲線の制御点に適用され、これにより、適切な変換された制御点位置が得られ、次いで、これは、入力曲線の対応する制御点に対するテクスチャ座標として使用することができ、また好ましくは使用される。
【０１４０】
複数の曲線が1つのテクスチャ内に詰め込まれている場合、変換をテクスチャ座標に適用してテクスチャの正しい部分集合をサンプリングする必要があると思われる。これは、好ましくは、「入力」ボックスを格納されているテクスチャの所望の部分を覆う「ボックス」に変換するために必要なスケーリングおよび平行移動(つまり、[0..1]×[0..1]->[u_1..u_2]×[v_1..v_2]の変換を行う)を計算し、次いで、決定された変換を、曲線がテクスチャ全体を覆っているかのように計算されているテクスチャ座標に適用することにより実行される。
【０１４１】
上記から理解されるように、本発明の好ましい一実施形態では、グラフィックス処理システムは、表示するためレンダリングされる滑らかな曲線によって定義される入力形状(つまり、滑らかな曲線をその辺(境界)として有する)を受け取る。次いで、グラフィックス処理システムは、レンダリングされる形状を定義する曲線に対応する曲線を表すテクスチャを識別し、テクスチャで表され、定義されているような曲線と一致するために必要な、レンダリングされる形状を定義する曲線への必要なマッピングまたは変換を導出し、次いで、本発明の方法で、導出された必要な変換またはマッピングを使用して、レンダリングされる形状を定義する曲線に対応する曲線を表すテクスチャを使用して形状をレンダリングする。
【０１４２】
上記から理解されるように、本発明では、テクスチャ内でその辺または境界として定義されている滑らかな曲線を有する形状を効果的に描画することができる(曲線の一方の側にある点は、曲線の他方の側にある点と異なる描画がなされるからである)。したがって、本発明は、関連する曲線を辺または境界として有する、および/または関連する曲線を等高線または境界線として有する形状をレンダリングするために効果的に使用することができる(つまり、曲線の異なる側にある点は異なる描画となるように)。
【０１４３】
実際、本発明は、形状の辺を定義する(表す)曲線のいずれかの側にある点を識別するために使用することができ、これにより、形状を効率よく描画することができる。したがって、本発明で使用されるテクスチャは、レンダリングされる形状の辺または等高線を定義する曲線を表すものとみなせる。
【０１４４】
したがって、本発明は、辺または等高線曲線の一次導関数が区分的連続である、連続な辺および/または等高線曲線を有する任意の形状(滑らかな形状)(つまり、本発明を使用してレンダリングできる滑らかな曲線によって定義された形状)をレンダリングするために使用されうる。
【０１４５】
(本発明のテクスチャおよび技術は、もちろん、曲線それ自体を実際に描画するためにも、それが望ましいのであれば、曲線それ自体も定義するので、使用可能であろう。)
【０１４６】
特に好ましい一実施形態では、本発明のさまざまな機能は、表示デバイスのフレームバッファに書き込まれるデータを生成して出力する単一のグラフィックス処理プラットフォーム上で実行される。
【０１４７】
本発明は、「パイプライン化された」構成を有するレンダラーなど、任意の形態または構成のレンダラーに適用可能である(この場合、レンダラーは、レンダリングパイプラインの形態をとる)。好ましい一実施形態では、これは、ハードウェアグラフィックスレンダリングパイプラインに適用される。本発明のさまざまな機能および要素などは、例えば、好ましくは、適切な機能ユニット、処理ロジック、プロセッサ、マイクロプロセッサ装置などにより必要に応じて実装されうる。
【０１４８】
本発明は、即時モードレンダリング、遅延モードレンダリング、タイルベースレンダリングなど、すべてのレンダリング形式に適用可能である。好ましい一実施形態では、これは、遅延モードレンダリングおよびタイルベースレンダラーにおいて、また遅延モードレンダリングおよびタイルベースレンダラーのために使用される。
【０１４９】
上記から理解されるように、本発明は、もっぱらというわけではないが、3Dグラフィックスプロセッサおよび処理デバイスに特に適用可能であり、それに応じて、本明細書で説明されている本発明の複数の態様のうちの1つまたは複数の態様の装置を含む、または本明細書で説明されている本発明の複数の態様のうちの1つまたは複数の態様に従って動作する、3Dグラフィックスプロセッサおよび3Dグラフィックス処理プラットフォームにも拡大適用される。上述の特定の機能を実行するためにハードウェアが必要であることを前提条件とすると、そのような3Dグラフィックスプロセッサは、他の何らかの方法で、3Dグラフィックスプロセッサが備える、通常の機能ユニットなどの1つまたは複数またはすべてを備えることができる。
【０１５０】
本発明は、同様にして、2Dグラフィックスプロセッサおよび2Dグラフィックス処理にも拡大適用される。
【０１５１】
当業者であれば、本発明の説明されている態様および実施形態はすべて、適宜、本明細書で説明されている好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備えることをまた理解するであろう。
【０１５２】
本発明による方法は、少なくとも部分的にはソフトウェアを使用して、例えばコンピュータプログラムを使用して実装されうる。そのため、他の態様から見たときに、本発明は、データ処理手段にインストールされたときに本明細書で説明されている方法を実行するように特に適合されたコンピュータソフトウェア、データ処理手段上でプログラム要素が実行されたときに本明細書で説明されている方法を実行するコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、およびデータ処理システム上でプログラムが実行されたときに本明細書で説明されている1つまたは複数の方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムを提供することがわかる。データプロセッサは、マイクロプロセッサシステム、プログラマブルFPGA(フィールドプログラマブルゲートアレイ)などとしてよい。
【０１５３】
本発明は、さらに、データ処理手段を備えるグラフィックスプロセッサ、レンダラー、またはマイクロプロセッサシステムを動作させるために使用されたときに前記データ処理手段と併せて前記プロセッサ、レンダラー、またはシステムに本発明の方法のステップを実行させるそのようなソフトウェアを含むコンピュータソフトウェアキャリアにも拡大適用される。このようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROM、またはディスクなどの物理的記憶媒体とすることが可能であるか、またはケーブル上の電子信号、光信号、または衛星もしくは同様のものなどへの無線信号などの信号とすることが可能である。
【０１５４】
さらに、本発明の方法のステップすべてが、コンピュータソフトウェアによって実行される必要はないことは理解されるであろうし、したがって、さらに広い観点から、本発明は、コンピュータソフトウェア、および本明細書で説明されている方法の複数のステップのうちの少なくとも1つを実行するためにコンピュータソフトウェアキャリア上にインストールされたそのようなソフトウェアを提供する。
【０１５５】
したがって、本発明は、コンピュータシステムとともに使用するためコンピュータプログラム製品として適宜具現化されうる。そのような実装は、コンピュータ可読媒体、例えば、ディスケット、CD-ROM、ROM、またはハードディスクなどの、有形の媒体上に固定された、あるいは限定はしないが、光またはアナログ通信回線を含む有形の媒体上で、あるいは限定はしないが、マイクロ波、赤外線、または他の伝送技術を含む無線技術の無形の手段を使用して、モデムまたは他のインターフェイスデバイスを介して、コンピュータシステムに伝送可能な、一連のコンピュータ可読命令を含むことができる。これら一連のコンピュータ可読命令は、本明細書ですでに説明されている機能の全部または一部を具現化する。
【０１５６】
当業者であれば、このようなコンピュータ可読命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するために多くのプログラミング言語で作成されうることを理解するであろう。さらに、このような命令は、限定はしないが半導体、磁気、または光を含む、現在の、または将来のメモリ技術を使用して格納されるか、または、限定はしないが光、赤外線、またはマイクロ波を含む、現在の、または将来の通信技術を使用して伝送されうる。このようなコンピュータプログラム製品は、印刷または電子文書を添付した取り外し可能媒体、例えばシステムROMまたは固定ディスク上のコンピュータシステムにプリインストールされている、例えば市販ソフトウェアとして配布されるか、あるいはサーバーまたはネットワーク、例えばインターネットまたはワールドワイドウェブ上の電子掲示板から配布されうることが考えられる。
【０１５７】
次に、本発明の多数の好ましい実施形態について、付属の図面を参照しつつ、例のみを使って説明する。
【図面の簡単な説明】
【０１５８】
【図１】本発明に基づくテクスチャによる滑らかな曲線の表現の一実施形態を示す略図である。
【図２】図1のテクスチャで使用されるテクセル値の導出の一実施形態を示す略図である。
【図３】単一のテクスチャマップ内で複数の滑らかな曲線を表すテクスチャの格納を示す略図である。
【図４】図3のテクスチャにおける曲線の等高線領域の拡大されたセクションを示す略図である。
【図５】図1に示されているテクスチャなどのテクスチャの、グラフィックスプリミティブへの適用を示す略図である。
【図６】本発明の一実施形態で表示する滑らかな曲線のレンダリングを示す略図である。
【図７】本発明の一実施形態におけるグラフィックステクスチャにおける尖点を含む曲線の表現を示す略図である。
【発明を実施するための形態】
【０１５９】
上述のように、本発明の実施形態の基本的前提条件は、曲線の一方の側でテクスチャをサンプリングすることで、特定の閾値より低いサンプリングされたテクスチャ値が得られ、曲線の他方の側でテクスチャをサンプリングすることで、特定の閾値より大きいサンプリングされたテクスチャ値が得られるように、滑らかな曲線をテクスチャで表すというものである。
【０１６０】
図1は、滑らかな曲線1を表すためのそのようなテクスチャの第1の実施形態を示している。
【０１６１】
図1a)は、低い分解能での全体的なテクスチャを示し、基本的に、曲線1のそれぞれの側へのテクスチャ位置が異なるテクスチャ値に設定され、異なるテクスチャ値を返す原理を例示している。図1b)は、テクスチャ内に現れるときの曲線1の線の周りにおける図1a)のテクスチャの拡大図であり、特に、テクスチャ内に現れるときの曲線1の付近でテクセル値がどのように変化するかを示している。
【０１６２】
図1に示されているように、曲線1に内側にあるテクセルは、「0.5」より大きい値に設定され(値「1」は、図1に白色で示されている)、曲線1の外側にあるテクセルは、「0.5」より小さい値に設定される(値「0」は、図1に黒色で示されている)。したがって、テクスチャ内のサンプリング位置が検索される場合、サンプリングされた位置について返されたテクスチャ値は、サンプリングされた位置が曲線1の内側にあるものとして処理されるべきかどうかを決定するために使用されうる。実際には、曲線1に対する閾値は、0.5とみなすことができる。
【０１６３】
(図1に示されているテクスチャは、「反転した」または逆の曲線または形状を描画するために等しく使用することができ、「黒色」は、曲線の「内側」にあるものとして処理され、「白色」は、曲線の外側にあるものとして処理されるということが理解できるであろう。実際には、好ましい一実施形態では、グラフィックスシステムは、このことを実行できるように構成される。これは、例えば、サンプリングされたテクスチャ値を、曲線に対する閾値の2倍から減算し(つまり、2*threshold(この場合には、1.0を与える)-sampled_texture_valueを行い)、次いで、その値と閾値とを比較することにより実行できる(これは、実際には、テクスチャの意味を「ひっくり返す」))。
【０１６４】
図1に示されているテクスチャは、8ビットテクスチャである(つまり、それぞれのテクセル値を表すために8ビットを使用する)。それぞれのテクセルには、単一の値が関連付けられている(したがって、テクスチャは、好都合なことに、単一チャネルテクスチャとすることができる)。
【０１６５】
この実施形態では、テクスチャ内のテクセルは、0から1(含む)までの範囲に収まる値を持つことができ、曲線の等高線に対する閾値は、0.5に設定される。他の構成も、もちろん、可能である。
【０１６６】
また、図1に示されているテクスチャは、以下でさらに説明されるように、双線形フィルタリングを使用してサンプリングするように最適化されている。
【０１６７】
(当技術分野で知られているように、双線形フィルタリングは、テクスチャマップのテクセルに割り当てられている値からテクスチャマップ内の位置に対する値を補間する一方法である。これは、サンプリング位置に最も近い4つのテクセルと重心座標から導出される係数との凸結合
bilinear(s,t)=(1-s) (1-t) texeli,j+s(1-t) texeli+1,j+(1-s) t texeli,j+1+s t texeli+1,j+1
とみなせるが、ただし、(s,t)は、注目するサンプリング位置の座標であり、texeli,jなどは、その位置に最も近い4つのテクセルである。)
【０１６８】
上述のように、出願人は、双線形フィルタリングを使用してサンプリングするため曲線を表すテクスチャを最適化することにより、テクスチャが使用されるときのサンプリングプロセスは、注目する曲線の表現を改善することができ、また改善することを認識している。
【０１６９】
双線形フィルタリングとともに使用する、図1に示されているテクスチャの最適化は、この実施形態では、変数としてテクセル値を含む費用関数を設定し、次いで、その費用関数の最小化を試み、それに応じてテクセル値を選択するという形で実行される。
【０１７０】
この実施形態では、費用関数は、曲線の経路(線)を曲線の経路とそれぞれのテクセル中心を結ぶ直線との一連の交わりに分け、次いで曲線と2つのテクセル中心を結ぶ直線との交わり点で所望の曲線閾値が得られるようにそれぞれのテクセル値を調節することを試みることにより生成される。
【０１７１】
図2は、これを例示し、滑らかな曲線10が通過するテクセル11の例示的なグリッドを示している。テクセル12、13が考慮される場合、理想的には、それぞれのテクセル値は、曲線10とテクセル12、13を結ぶ直線15とが交わる点14でテクスチャが双線形サンプリングされる場合に、サンプリングされたテクスチャ値は、曲線に対する閾値テクスチャ値(この実施形態では0.5である)と正確に等しくなければならないように設定されるべきである。
【０１７２】
しかし、それぞれのテクセルは、この方法で最適化される必要のある値を持つ複数のテクセル対に関与することがあり、したがって、テクセル値をテクセルの与えられた対に関して所望の結果を生み出す正確な値に設定することは必ずしも可能でない。
【０１７３】
したがって、テクスチャに使用するテクセル値は、関連するそれぞれのテクセル対(実際には、注目する曲線の経路(線)をまたぐそれぞれのテクセル対(実際には、これはまた、曲線の閾値を有するテクスチャ内の等高線をまたぐそれぞれのテクスチャ対))に関して決定された局所的費用関数の総和である大域的費用関数を使用し、次いで、大域的最適化法を使用して、大域的(全体的)誤差を最小にする構成を見つけようとし、使用する最適なテクセル値を見つけることを試みることにより決定される。
【０１７４】
それぞれの個別テクセル対に対する局所的費用関数(2つのテクセル値の調節)は、この実施形態では、以下のような一連の相互に関連する最適化問題とみなされる。
【０１７５】
第1に、上述のように、目的の1つは、テクセルの対を結ぶ直線15上の曲線の実際の交差点14とテクセル値によって決定されるような交差点(つまり、テクセル12、13の双線形サンプリング値から、定義されている曲線閾値に等しいサンプル値(この場合0.5)が得られる直線15上の点)との間の差を最小化することである。この因子は、実際の交差点位置とテクセル値によって示されるような位置との間の誤差を費用関数に含めることにより考慮される。
【０１７６】
第2に、費用関数は、テクセル値の結果として得られる差が、曲線10がテクセルの対を結ぶ直線15と交差する角度θを反映するように構成される。これは、曲線10が直線15に垂直な場合には、テクセル値12、13の間の差は、それが取り得る最大値であり(この場合は1である)、曲線10が直線15とほとんど平行である場合には、テクセル値12、13の間の差は、0に近づくことを保証することを試みるためである。これは、テクセルに、利用可能なテクセル値の範囲全体(この場合は0から1)が割り当てられる(使用する)ことを保証するのに役立ち、これにより、より高い分解能を持つ曲線を定義することができる。
【０１７７】
この実施形態では、これは、曲線10と費用関数内の因子としてテクセルを結ぶ直線15との間の角度θの正弦を使用することにより達成される。
【０１７８】
最後に、曲線がテクセルの間の直線15にほとんど平行な場合に曲線10に対する交差点14を正確に位置決めすることはあまり重要でない(テクスチャがサンプリングされるときの交差点の誤差は、この場合、あまり悪影響を及ぼさないからである)。これは、この実施形態では、交角θの正弦の二乗に関係する係数を使用して費用関数における辺に重みを付けることにより可能である。
【０１７９】
次いで、この形式で定義されているテクセル値のそれぞれの個別の対に対する費用関数が、考慮されているテクセル値の対すべてにわたって総和され、全体の曲線に対する「大域的」つまり全体的な費用関数が得られる。
【０１８０】
この結果、この実施形態において、
【０１８１】
【数１】
2010092479.tif 000003
【０１８２】
の形式の費用関数が得られ、
ただし、式中、
w1およびw2は、例えば変化する最適化をテストするため繰り返し、必要に応じて選択され、変更できる重み値であり、
iは、費用関数がテストされる際のテクセル対であり、
Nは、費用関数が評価され、総和される際に取られるテクセル対の総数であり、
θiは、i番目のテクセル対に対する曲線の交角であり、
texeliaおよびtexelibは、i番目のテクセル対のテクセルに対するそれぞれのテクセル値であり、
wantedcrosspointiは、真の曲線が交差するテクセルのi番目の対を結ぶ直線上の点であり、
bilinearcrosspointiは、テクセルのi番目の対を結ぶ直線上の点であり、与えられたテクセル値を使用した双線形フィルタリングの結果は、定義されている閾値曲線値(この場合は、0.5)を返し、したがって、
【０１８３】
【数２】
2010092479.tif 000004
【０１８４】
となる。
【０１８５】
この式は、bilinearcrosspointiについてthreshold=bilinear(bilinearcrosspointi,0)を解くことにより導出される。
【０１８６】
実際には、この費用関数において、係数
|wantedcrosspointi-bilinearcrosspointi|
は、テクセル値がサンプリングされるときに決定されるような曲線の交差点と曲線の求められている交差点との間の差の絶対値を表し、
係数
|texelib-texelia|-sinθi
は、利用可能なテクセル値の全範囲が使用されることを保証し(解が割り当てられているすべてのテクセル値を閾値(この場合0.5)に押しつぶしてしまうのを防ぐ)、
係数
sin2θi
は、曲線がテクセル間の直線にほとんど平行である辺が費用関数において小さい重みを有するようにする(および逆もまた同様)。
【０１８７】
次いで、この費用関数は、それぞれのテクセル対に使用する最適なテクセル値texelia、texelibを見つけるために最小化される。この実施形態では、これは、シミュレーテッドアニーリング法を使用して行われるが、他の最適化アルゴリズムも、必要ならば使用可能である。次いで、決定されたテクセル値は、滑らかな曲線を表すグラフィックステクスチャとして格納される。
【０１８８】
この実施形態では、このプロセスは、複数の異なる滑らかな曲線および/または与えられた滑らかな曲線の複数の部分について繰り返され、これにより、複数の異なる滑らかな曲線を表すテクスチャマップの集合を構築する。
【０１８９】
この実施形態においてテクスチャで表される滑らかな曲線は、一次導関数が区分的連続である、連続な曲線を含む。これらは、例えば、ベジエ曲線、スプライン曲線、および/または円弧としてよい。
【０１９０】
1つまたは複数の基準もしくは「正準」曲線を表すテクスチャも、生成され使用される。(上述のように、「正準曲線」は、アフィン変換を使用して与えられた曲線族の中のすべての曲線が変換されうる基準または基本曲線である。)
【０１９１】
本発明の実施形態では、与えられたテクスチャマップが、テクスチャ内の異なる曲線を空間的に分離することにより複数の異なる滑らかな曲線および滑らかな曲線の部分のテクスチャ表現を格納するために使用される。図3は、これを例示しており、また単一のテクスチャ23全体に格納される複数の滑らかな曲線20、21、22などを示している。テクスチャ23の適切な領域をサンプリングすることにより、それで表される滑らかな曲線が描画されうる。
【０１９２】
図4は、図3に示されているテクスチャ23に格納されている複数の曲線のうちの1つの曲線の曲線等高線領域26の拡大されたセクション24の概略を示している。この図からわかるように、等高線26の周りのテクセル値は、曲線の閾値より高い値によって表される曲線の側にある曲線の等高線26から遠い位置にあるテクセル28より高い(軽い)値を有する、曲線の等高線26に近い位置にあるいくつかのテクセル27を含む(および逆もまた同様に)、曲線の等高線のいずれかの側に合わせて変化する。これは、曲線が双線形サンプリングされる場合、所望のテクスチャ値が返されることを保証するためである。
【０１９３】
異なる滑らかな曲線を表すテクスチャを同じテクスチャマップの異なる部分として格納すると、多数の曲線を単一のテクスチャ内に格納することができ、例えば、本発明を使用するときに滑らかな曲線をレンダリングするために必要なテクスチャ変更回数を減らすことができる。
【０１９４】
実際、出願人は、実際にはグラフィックス処理で描画する必要があると思われるすべてではないとしてもほとんどの滑らかな曲線セクションは、比較的少数の曲線族によって表すことができ、したがって、比較的少ないテクスチャを使用してそれらの所望の曲線をすべて容易に表すことが可能であることに気づいた。
【０１９５】
滑らかな曲線の集合を表すテクスチャの集合がこのようにして生成され、グラフィックス処理システムで使用できるように格納された後、テクスチャを使用して、滑らかな曲線によって定義された形状(つまり、滑らかな曲線に対応する曲線を辺(境界)として有する形状)を描画することができる。これは、基本的に、形状が描画されるシーン(表示)領域を覆うプリミティブを生成し、次いで、形状を描画するのに適したテクスチャをプリミティブに適用することにより行われる。
【０１９６】
テクスチャがプリミティブに適用されると、テクスチャ値は、そのプリミティブ内のサンプリング点についてサンプリングされ、サンプリングされたテクスチャ値は、サンプル位置を曲線の内側(つまり、実際には、曲線によって定義された形状の辺または境界の内側)にあるものとして条件付きで描画し(陰影を付け)(サンプリングされたテクスチャ値が曲線の閾値より小さい場合、または逆も同様に)、またはサンプル位置を曲線(形状)の外側にあるものとして破棄する(サンプリングされたテクスチャ値が曲線の閾値以上である場合、または逆も同様に)ために使用される。
【０１９７】
図5は、これを例示しており、またプリミティブ51への曲線50を表すテクスチャの適用の概略を示している。この場合、プリミティブ51の明色領域52は、曲線50の内側に入るものとして描画される。
【０１９８】
次に、この実施形態においてテクスチャを使用して形状をレンダリングするためのプロセスの好ましい一実施形態についてさらに詳しく説明することにする。
【０１９９】
最初に、グラフィックス処理システムが、「滑らかな」形状をレンダリングする必要性を識別する。次いで、通常の方法で、滑らかな形状が表示される画面領域を覆う1つまたは複数のプリミティブを生成する。この実施形態では、描画される形状の辺を定義する曲線の制御点の凸包を覆う三角形が生成される。
【０２００】
次いで、これらのプリミティブは、シェーディング用のシェーディングパイプラインに渡されるフラグメントに通常の方法でラスター処理される。(起こりうることだが、プリミティブをラスター処理しても、フラグメントが生成されない場合(プリミティブが表示されるシーンのサンプリング点を実際には覆っていないため)、プロセスはここで停止することができるが、これは、形状が、表示されるシーン内に実際には見えないことを意味する。)
【０２０１】
次いで、描画される形状の辺を定義する滑らかな曲線に対応するテクスチャマップ(またはテクスチャマップの一部)は、当技術分野で知られているように、(複数の)プリミティブが覆うシーン内の1つまたは複数のサンプリング点の位置について滑らかな曲線を表すテクスチャからテクスチャサンプルを取ることにより、1つまたは複数のプリミティブに適用される。この実施形態では、単一のテクスチャルックアップがフラグメント毎に実行される。(他の処理方法も、もちろん、可能である。)
【０２０２】
次いで、それぞれのサンプリングされたテクスチャ値が、曲線について定義された閾値テクスチャ値と比較され、次いで、サンプル位置が、比較の結果に応じて、曲線(したがって形状)の内側に入っているものとして描画(レンダリング)されるか、または曲線の外側にあるものとして破棄される。テクスチャサンプルは、双線形フィルタリング(双線形フィルタリング機能を有効にして)を使用して取られ、このときに、この実施形態では、テクスチャマップが、上述のように、双線形フィルタリングを使用するサンプリングに合わせて手直しされる。
【０２０３】
サンプリングされたテクスチャ値と曲線閾値との比較は、固定機能グラフィックスハードウェアにおいて、アルファテストに対する比較アルファ値が曲線閾値(この場合は、例えば0.5)に設定されているグラフィックス「アルファテスト」を使用して実行され、これにより、曲線の外側にあるサンプリング点および/またはフラグメントを破棄するようにできる。プログラム可能なシェーダーハードウェアでは、例えば、比較および条件付き破棄ルーチンを使用して比較を実行できる。
【０２０４】
この実施形態では、「比較および破棄」テストに「以上(>=)」テストが使用される。実行後、このテストの結果は、ステンシルバッファに格納され、後の処理パスで曲線を描画するためにシェーディングを適用するときに使用される。(もちろん、曲線テストと同じパスでシェーディングを実行することも等しく可能であろう。)
【０２０５】
当業者であれば理解するように、描画される形状(形状の辺を定義する曲線)が、テクスチャ内に格納されているとおりに曲線と正確に一致しない状況がありうる。この場合、描画される形状(曲線)は、テクスチャ内に格納されるときに曲線にマッピングされなければならず、したがって、曲線を表すテクスチャは適切に適用(サンプリング)できる。同様に、レンダリングされる画像内のサンプリング位置は、曲線を表すテクスチャ内の適切なサンプリング位置にマッピングされなければならず、したがって、ここでもまた、形状(曲線)を正しく描画できる。
【０２０６】
この実施形態では、テクスチャ内で内接する曲線を表示する画像上にマッピングするプロセスは、描画される入力形状の曲線を定義する制御点に対するテクスチャ座標を計算し、次いで、グラフィックスプロセッサの補間ハードウェアを使用して曲線上でテクスチャ座標を線形補間することにより行われる。
【０２０７】
二次曲線の場合、それぞれの入力曲線は、テクスチャ内に格納されている曲線のアフィン変換バージョンだけとすべきである。したがって、この実施形態では、毎回曲線全体が使用され、制御点のそれぞれに対し固定テクスチャ座標が使用され、必要な変換が、サーフェス空間内の制御点と(テクスチャ空間内の)テクスチャ座標との対を作ることにより暗黙のうちに定義されうる。
【０２０８】
三次曲線の場合、曲線は、好ましくは、最初に蛇行曲線、ループ曲線、尖点曲線、「無限遠尖点」曲線(つまり、変曲点が無限に遠く離れている尖点を持つ曲線)、退化曲線、または放物線として分類される。放物線は、二次曲線であり、そのようなものとして取り扱われる。退化曲線は、曲線を1つまたは複数の線に分割する形で取り扱われる。
【０２０９】
他の曲線については、曲線の変曲点(inf10およびinf11)が、計算される。格納されている曲線(テクスチャ)は、変曲点が常に-1と1にあるように構成され、したがって[inf10..inf11]->[-1..1]からの線形変換が計算されうる。こうすることで、入力曲線の始点および終点のパラメータ位置(0および1)は、テクスチャ空間内のそれらの位置に変換されうる。これで、テクスチャが覆う必要のある正準テクスチャ空間内のパラメータ範囲が知られる。
【０２１０】
ループ曲線および蛇行曲線については、次いで、必要なパラメータ範囲を覆うテクスチャ(例えば、最もズームインされたテクスチャ)を見つけるために、格納されているテクスチャが探索される。(これは、尖点および無限遠尖点曲線には必要ない。)
【０２１１】
次いで、選択された格納されている曲線(テクスチャ)(変曲点が-1と1にある)は、変曲点を入力曲線の変曲点、inf10およびinf11にマッピングするためにスケーリングし直される。次いで、この変換は、格納されている曲線の制御点に適用され、これにより、適切な変換された制御点位置が得られ、次いで、これは、入力曲線の対応する制御点に対するテクスチャ座標として使用される。
【０２１２】
複数の曲線が1つのテクスチャ内に詰め込まれている場合、変換をテクスチャ座標に適用してテクスチャの正しい部分集合をサンプリングする必要があると思われる。これは、この実施形態では、ボックス[0..1]×[0..1]->[u_1..u_2]×[v_1..v_2]の変換を行うのに必要なスケーリングおよび平行移動を計算し、次いで、変換を、曲線がテクスチャ全体を覆っているかのように計算されているテクスチャ座標に適用することにより実行される。
【０２１３】
図6は、これらのプロセスを例示しており、また描画される形状を定義する曲線を、分類、テクスチャ探索、テクスチャ座標計算、およびレンダリングのステージに通す操作の概略を示している。
【０２１４】
図6に示されているように、描画すべて形状を定義する与えられた滑らかな入力曲線70は、最初にステップa)で分類される。この例では、分類により、曲線を「蛇行曲線」として識別する。
【０２１５】
次いで、システムは、蛇行曲線を表す格納されているテクスチャ71を探索して、入力曲線70と最もよく一致する格納されている蛇行曲線を見つける(ステップb))。
【０２１６】
これが完了したら、入力曲線70をテクスチャ71に格納されている曲線にマッピングするために必要なテクスチャ座標計算およびプリミティブ生成が、図6のステップc)で示されているように実行される。
【０２１７】
最後に、入力曲線は、図6のステップd)に示されているように選択されたテクスチャを使用してレンダリングされる。
【０２１８】
この実施形態では、描画される与えられた入力曲線(形状)を個別のセクションに分割し、それぞれのセクションが別々に描画されるようにすることも可能である(例えば、異なるテクスチャまたは同じテクスチャの異なる部分を使用して)。これは、例えば、de Casteljauアルゴリズムを使用して、ベジエ曲線に対し実行されうる。他の好適なアルゴリズムも、もちろん、必要ならば使用可能である。
【０２１９】
この実施形態では、描画される形状(曲線)のこのような分割は、非常に大きな形状を描画するときに、小さな形状に分割してレンダリングアーティファクトを減らすために実行される。同様に、ループを含む曲線によって定義された形状などの、自己交差形状は、自己交差しない2つ(またはそれ以上の)形状に分割され、次いで、形状が別々に描画(レンダリング)される。
【０２２０】
描画される曲線(形状)のこのような分割は、さらに、特異点(尖点)を有する曲線をその特異点のところで分割して、レンダリング誤差を引き起こす曲線内の特異点を回避するために実行される。
【０２２１】
(曲線内の特異点の取り扱いを改善するための代替メカニズムとしては、曲線がテクスチャで表されるときに、すべての特異点が、必ず、テクセルを結ぶ水平線と垂直線からなるグリッド上に来るようにする方法がある。図7は、これを例示しており、また尖点の特異点61がテクセルの中心64を結ぶグリッド線62上に置かれるようにテクスチャ63で表される尖点曲線60を示している。
【０２２２】
上述のように、また上記から理解されるように、本発明の方法で滑らかな曲線をレンダリングする結果として、曲線を辺または境界として有する形状を描画することになる(曲線の一方の側にある点は、曲線の他方の側にある点と異なる形で描画(レンダリング)されるからである)。例えば、図3からわかるように、本発明で使用されているテクスチャは、注目する曲線を辺または境界または等高線として有する形状を表すものとみなせる。
【０２２３】
したがって、この実施形態および本発明は、実際に、関連する曲線を辺または境界として有する、および/または関連する曲線を等高線または境界線として有する形状をレンダリングすると考えられる(つまり、曲線の異なる側にある点は異なる描画となるように)。
【０２２４】
上記から、本発明は、少なくとも好ましい実施形態において、とりわけ、安価な固定機能3Dグラフィックスハードウェア上で、また未修正の既存のハードウェアグラフィックスアクセラレータ上で使用できる滑らかな曲線によって定義される形状の効果的なレンダリングを行うための方法およびシステムを実現することがわかる。これにより、例えば、安価なおよび/または固定機能のグラフィックスハードウェアを使用して新しい曲線レンダリング用APIおよびアプリケーションをハードウェアで高速化することができる。
【０２２５】
したがって、本発明は、「基本的」なグラフィックスハードウェアのみを使用して実装可能である。また、これにより、例えば、滑らかな曲線をレンダリングするための既存の細分割アプローチと比べた場合に、CPU時間がかなり短縮され、レンダリング帯域幅が低減され、したがって、消費電力が小さくなる。
【０２２６】
これは、少なくとも本発明の好ましい実施形態では、滑らかな曲線をグラフィックステクスチャとして表し、次いで、グラフィックステクスチャマッピングを使用して曲線によって定義された形状をレンダリングすることにより実現される。
【符号の説明】
【０２２７】
1  滑らかな曲線
10  滑らかな曲線
11  テクセル
12、13  テクセル
14  交差点
15  直線
20、21、22  滑らかな曲線
23  単一のテクスチャ
24  拡大されたセクション
26  曲線の等高線領域
27、28  テクセル
50  曲線
51  プリミティブ
52  明色領域
60  尖点曲線
61  特異点
70  曲線
71  テクスチャ
【図２】
2010092479.tif 000005
【図３】
2010092479.tif 000006
【図６】
2010092479.tif 000007
【図７】
2010092479.tif 000008
【図１】
2010092479.tif 000009
【図４】
2010092479.tif 000010
【図５】
2010092479.tif 000011
【外国語明細書】
2010092479.tif 000012
2010092479.tif 000013
2010092479.tif 000014
2010092479.tif 000015
2010092479.tif 000016
2010092479.tif 000017
2010092479.tif 000018
2010092479.tif 000019
2010092479.tif 000020
2010092479.tif 000021
2010092479.tif 000022
2010092479.tif 000023
2010092479.tif 000024
2010092479.tif 000025
2010092479.tif 000026
2010092479.tif 000027
2010092479.tif 000028
2010092479.tif 000029
2010092479.tif 000030
2010092479.tif 000031
2010092479.tif 000032
2010092479.tif 000033
2010092479.tif 000034
2010092479.tif 000035
2010092479.tif 000036
2010092479.tif 000037
2010092479.tif 000038
2010092479.tif 000039
2010092479.tif 000040
2010092479.tif 000041
2010092479.tif 000042
2010092479.tif 000043
2010092479.tif 000044
2010092479.tif 000045
2010092479.tif 000046
2010092479.tif 000047
2010092479.tif 000048
2010092479.tif 000049
2010092479.tif 000050
2010092479.tif 000051
2010092479.tif 000052
2010092479.tif 000053
2010092479.tif 000054
2010092479.tif 000055
2010092479.tif 000056
2010092479.tif 000057
2010092479.tif 000058
2010092479.tif 000059
2010092479.tif 000060
2010092479.tif 000061
2010092479.tif 000062
2010092479.tif 000063
2010092479.tif 000064
2010092479.tif 000065
2010092479.tif 000066
2010092479.tif 000067
2010092479.tif 000068
2010092479.tif 000069
2010092479.tif 000070
2010092479.tif 000071
2010092479.tif 000072
2010092479.tif 000073
2010092479.tif 000074
2010092479.tif 000075
2010092479.tif 000076
2010092479.tif 000077
2010092479.tif 000078
2010092479.tif 000079
2010092479.tif 000080
2010092479.tif 000081
2010092479.tif 000082
2010092479.tif 000083
2010092479.tif 000084
2010092479.tif 000085
2010092479.tif 000086
2010092479.tif 000087
2010092479.tif 000088
2010092479.tif 000089
2010092479.tif 000090
2010092479.tif 000091
2010092479.tif 000092