(57)【特許請求の範囲】
【請求項１】
パースペクティブ補正されたテクスチャ座標を処理するグラフィクス・システムであって、
４個の各隣接ピクセルにおけるテクスチャ座標を計算する第１の計算手段と、
前記テクスチャ座標間の差を計算する第２の計算手段と、
パースペクティブ補正座標に基づいてパースペクティブ補正係数を計算する第３の計算手段と、
各テクスチャ座標差に前記パースペクティブ補正係数を乗じることにより、前記パースペクティブ補正されたテクスチャ座標のための偏導関数を生成する乗算手段と、
前記偏導関数を用いて画像をレンダリングし、該レンダリングされた画像を表示装置上に表示する手段とを備えるグラフィクス・システム。
【請求項２】
座標間の差を計算する前記第２の計算手段が減算のセットを並列して使用する、請求項１に記載のグラフィクス・システム。
【請求項３】
パースペクティブ補正係数を計算する前記第３の計算手段が、乗算のセットを並列して使用する、請求項１に記載のグラフィクス・システム。
【請求項４】
４個のピクセルすべてのための単一のテクスチャ座標のための前記偏導関数の計算が、１２の減算と３２の乗算を必要とする、請求項１に記載のグラフィクス・システム。
【請求項５】
所与の方向に前記偏導関数を加えることによって後続の座標を求める、請求項１に記載のグラフィクス・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータ・グラフィクスに関し、より詳細にはピクセル濃度と画像テキスチャの選択に関する。
【０００２】
【従来の技術】
コンピュータ・グラフィクスでは、偏導関数を求める目的は、処理する現行ピクセルを基準にしたテクスチャ・マップ内部の変化率を求めることである。偏導関数とは、画面座標を基準にしたテクスチャ座標の偏導関数である。テクスチャ・マップとは、メモリに記憶され、レンダリングされた基本要素（点、線、弧、円錐、球など、画像を作成するための構成単位として使用されるグラフィクス要素）に１ピクセルごとに適用される画像である。このような偏導関数を使用して、１に最も近い変化率を有する詳細度（Level of Detail: LOD）を選択する。
【０００３】
ラスタ・ハードウェアは三角偏導関数を使用してｘおよびｙ方向にステップして画素をフレーム・バッファにレンダリングする。パースペクティブ補正により、テクスチャ・マップ全体の非線形変化が生成され、それによってその結果の画像がレンダリングされる視点に応じた画像になる。通常、導関数は三角導関数と一致するが、テクスチャ座標がパースペクティブ補正される場合にはこれが当てはまらず、ハードウェアは１ピクセルごとに計算を行って正しい導関数を求める必要がある。
【０００４】
したがって、ピクセルごとに別々に導関数を計算する従来の方法よりも乗算が少なくて済む、パースペクティブ補正テクスチャ座標のための偏導関数生成方法があれば望ましいであろう。
【０００５】
【発明が解決しようとする課題】
本発明は、コンピュータ・グラフィクス表示装置におけるパースペクティブ補正テクスチャ座標を処理するグラフィクス・システムを提供する。
【０００６】
【課題を解決するための手段】
本発明は、４個の隣接ピクセルのテクスチャ座標を計算し、次に座標間の差を求めることを含む。次にパースペクティブ補正係数を計算し、これに各座票差を乗じる。
【０００７】
本発明は、パースペクティブ補正されたテクスチャ座標を処理するグラフィクス・システムであって、４個の各隣接ピクセルにおけるテクスチャ座標を計算する第１の計算手段と、前記テクスチャ座標間の差を計算する第２の計算手段と、パースペクティブ補正座標に基づいてパースペクティブ補正係数を計算する第３の計算手段と、各テクスチャ座標差に前記パースペクティブ補正係数を乗じることにより、前記パースペクティブ補正されたテクスチャ座標のための偏導関数を生成する乗算手段と、前記偏導関数を用いて画像をレンダリングし、該レンダリングされた画像を表示装置上に表示する手段とを備えるグラフィクス・システムである。
【０００８】
【発明の実施の形態】
図面、具体的には図１を参照すると、本発明の好ましい実施形態による、本発明を実施することができるデータ処理システムの図が示されている。システム・ユニット１１０と、ビデオ表示端末１０２と、キーボード１０４と、フロッピィ（Ｒ）・ドライブおよびその他のタイプの固定および取外し可能記憶媒体を含むことができる記憶装置１０８と、マウス１０６とを含むコンピュータ１００が図示されている。パーソナル・コンピュータ１００には、たとえばジョイスティック、タッチパッド、タッチ・スクリーン、トラックボール、マイクロフォンなど、追加の入力装置を組み込むこともできる。コンピュータ１００は、米国ニューヨーク州アーモンクにあるインターナショナル・ビジネス・マシーンズ・コーポレーションの製品であるＩＢＭ  ＲＳ／６０００コンピュータやＩｎｔｅｌｌｉＳｔａｔｉｏｎコンピュータなどの任意の適合するコンピュータを使用して実現可能である。図にはコンピュータが示されているが、本発明の他の実施形態はネットワーク・コンピュータなどの他のタイプのデータ処理システムでも実現可能である。また、コンピュータ１００は、動作時にコンピュータ１００内のコンピュータ可読媒体に常駐するシステム・ソフトウェアを使用して実施可能なグラフィカル・ユーザ・インタフェースも含むことが好ましい。
【０００９】
次に図２を参照すると、本発明を実施することができるデータ処理システムのブロック図が示されている。データ処理システム２００は、本発明の処理を実施するコードまたは命令が位置する可能性のある図１に示すコンピュータ１００などのコンピュータの一例である。データ処理システム２００は、ＰＣＩ（Peripheral Component Interconnect）ローカル・バス・アーキテクチャを使用する。図の例は、ＰＣＩバスを使用するが、ＡＧＰ（Accelerated Graphics Port)やＩＳＡ（Industry Standard Architecture）など他のバス・アーキテクチャも使用可能である。ＰＣＩローカル・バス２０６には、ＰＣＩブリッジ２０８を介してプロセッサ２０２とメイン・メモリ２０４が接続されている。ＰＣＩブリッジ２０８は、プロセッサ２０２のための内蔵メモリ・コントローラとキャッシュ・メモリも含むことができる。直接構成要素相互接続またはアドイン・ボードによって、ＰＣＩローカル・バス２０６への追加の接続を行うことができる。図の例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１０、ＳＣＳＩ（Small Computer System Interface）ホスト・バス・アダプタ２１２、および拡張バス・インタフェース２１４が、直接構成要素接続によってＰＣＩローカル・バス２０６に接続されている。一方、拡張スロットに挿入されたアドイン・ボードによって、オーディオ・アダプタ２１６、グラフィクス・アダプタ２１８、およびオーディオ／ビデオ・アダプタ２１９がＰＣＩローカル・バス２０６に接続されている。拡張バス・インタフェース２１４は、キーボードおよびマウス・アダプタ２２０、モデム２２２、および追加メモリ２２４を接続する機能を果たす。ＳＣＳＩホスト・バス・アダプタ２１２は、ハード・ディスク・ドライブ２２６、テープ・ドライブ２２８、およびＣＤ−ＲＯＭドライブ２３０を接続する機能を果たす。典型的なＰＣＩローカル・バス実施態様は、３または４個のＰＣＩ拡張スロットまたはアドイン・コネクタをサポートする。
【００１０】
プロセッサ２０２上ではオペレーティング・システムが稼働し、図２のデータ処理システム２００内の様々な構成要素の調整と制御のために使用される。オペレーティング・システムは、マイクロソフト・コーポレーションが販売するＷｉｎｄｏｗｓ（Ｒ）２０００などの市販オペレーティング・システムとすることができる。Ｊａｖａ（Ｒ）などのオブジェクト指向プログラミング・システムが、オペレーティング・システムと稼働することができ、データ処理システム２００で実行されるＪａｖａ（Ｒ）プログラムまたはアプリケーションからオペレーティング・システムへの呼出しを行う。「Ｊａｖａ（Ｒ）」は、サン・マイクロシステムズ社の商標である。オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムのための命令は、ハード・ディスク・ドライブ２２６などの記憶装置にあり、プロセッサ２０２による実行のためにメイン・メモリ２０４にロードすることができる。
【００１１】
当業者なら、図２のハードウェアは実施態様によって変わることがあることがわかるであろう。フラッシュＲＯＭ（または同等の不揮発性メモリ）や光ディスク・ドライブなど、その他の内部ハードウェアまたは周辺装置を、図２に示すハードウェアに加えて、またはその代わりに使用することができる。また、本発明のプロセスは、マルチプロセッサ・データ処理システムにも適用可能である。
【００１２】
たとえば、データ処理システム２００は、任意選択によりネットワーク・コンピュータとして構成した場合は、図２に点線２３２で任意選択の組込であることを示しているように、ＳＣＳＩホスト・バス・アダプタ２１２、ハード・ディスク・ドライブ２２６、テープ・ドライブ２２８、およびＣＤ−ＲＯＭ２３０を含まなくてもよい。その場合、コンピュータは、正しくはクライアント・コンピュータと呼ばれ、ＬＡＮアダプタ２１０、モデム２２２などの何らかのタイプのネットワーク通信インタフェースを含まなければならない。他の例として、データ処理システム２００は、データ処理システム２００が何らかのタイプのネットワーク通信インタフェースを含むか否かにかかわらず、何らかのタイプのネットワーク通信インタフェースに頼らずにブート可能なように構成されたスタンドアロン・システムとすることができる。また、他の例として、データ処理システム２００は、ＲＯＭまたはフラッシュＲＯＭあるいはその両方がオペレーティング・システム・ファイルまたはユーザ生成データあるいはその両方を記憶する不揮発性メモリとして機能するように構成された、パーソナル・デジタル・アシスタント（ＰＤＡ）とすることもできる。
【００１３】
図２に示す例と上述の各例は、アーキテクチャを限定することを示唆するものではない。たとえば、データ処理システム２００は、ＰＤＡの形態をとる他に、ノートブック・コンピュータまたはハンド・ヘルド・コンピュータとすることもできる。また、データ処理システム２００は、キオスクまたはウェブ機器とすることもできる。本発明のプロセスは、プロセッサ２０２がコンピュータ実施命令を使用して行う。コンピュータ実施命令は、たとえばメイン・メモリ２０４、メモリ２２４などのメモリ、または、１つまたは複数の周辺装置２２６〜２３０などに入れることができる。本発明は、グラフィクス・アダプタ２１８で実施可能である。
【００１４】
シリコン技術の進歩に伴い、１サイクルで複数のテクスチャ・ピクセルを処理することが可能になっている。同時に４個のテクスチャ・ピクセルを点灯させるシステムでは、偏導関数は４個の各隣接ピクセルのテクスチャ座標の算出値間の差を求め、次に、パースペクティブ補正座標に基づく係数を各差に乗じることによって計算することができる。この方法は、各ピクセルごとに別々に偏導関数を計算する従来の方法に比べて乗算が少なくて済む。
【００１５】
以下の説明では、「乗算」という用語は、数値間の乗算のプロセスを指す。ハードウェアでは、乗算を乗算ユニット（すなわち浮動小数点または固定小数点乗算ユニット）に置き換えられることになる。これと同じことは、「減算」や「加算」にも当てはまる。これらの関数は、関数を実施する実際のハードウェア・ユニットに置き換えることができ、そのような関数を実行するコード・ラインを持つソフトウェアで置き換えることもできる。
【００１６】
Ｓ、Ｔ、Ｒ、およびＱは、テクスチャ・マップにインデックスする三角形の各頂点で送られるテクスチャ座標である。大文字のＳ、Ｔ、Ｒ、およびＱは、パースペクティブ補正されていない座標である。
【００１７】
小文字のｓ、ｔ、ｒ、およびｑは、パースペクティブ補正されたテクスチャ座標である。これらは、以下のように表すことができる。
【数１】
0003752186.tif 000002
【００１８】
偏導関数を計算する標準的方法は、画面座標または
【数２】
0003752186.tif 000003
を基準にしてパースペクティブ補正された座標の偏導関数を求めることによって導きだされる。
数式１を使用すると、これによって以下が得られる。
【数３】
0003752186.tif 000004
導関数の商規則を使用すると以下のようになる。
【数４】
0003752186.tif 000005
数式６の右辺の偏導関数は、パースペクティブ補正されていないテクスチャ座標の三角偏導関数である。数式６は以下のように変えることができる。
【数５】
0003752186.tif 000006
数式１および数式４に代入することによって、以下のように標準の数式が得られる。
【数６】
0003752186.tif 000007
【００１９】
数式８は、ハードウェア適用分野で一般的に実施されるものである。１つの偏導関数について２つの乗算と１つの減算が行われる。必要な実際の値は
【数７】
0003752186.tif 000008
である。ここでｕは、ｓの０から１に対して、０からテクスチャ・マップの幅までの範囲のテクスチャ・マップをインデックスする追加の方法である。
【数８】
0003752186.tif 000009
ｗはこのテクスチャ・マップ全体にわたって一定であるため、以下のようになる。
【数９】
0003752186.tif 000010
これによって、以下の最終的な数式が得られる。
【数１０】
0003752186.tif 000011
【００２０】
ある種のハードウェア・システムでは、幅、高さ、および奥行きは２の累乗である。このような場合、乗算を行う代わりに指数を加えることができる。しかし、２の累乗を使用しないテクスチャに移行するシステムが多くなっているためと、本明細書の説明は偏導関数の計算のための汎用的な１組の数式のみを対象としているため、幅係数を乗算として扱う。これによって、４個のピクセルのすべての偏導関数（３Ｄを含む）を同時に計算するのに合計７２の乗算と２４の減算になる。
【００２１】
次に図３を参照すると、本発明によりピクセルの配列を示す略図が図示されている。１サイクルで４個のピクセルを点灯するテクスチャ・エンジンでは、この新しいアルゴリズムを実施することができる。ピクセルは隣接しており、それによって、ｘ値とｙ値の間のデルタが常に１になる。図３にはこの配列が示されている。
【００２２】
数式中のテクスチャ座標の添字は、図３の対応するピクセルの座標を指すことに留意されたい。
パースペクティブ補正がオフの場合、以下のことが言える。
【数１１】
0003752186.tif 000012
この場合、Δｘ＝１（図３参照）であるため、これを以下のように書き換えることができる。
【数１２】
0003752186.tif 000013
しかし、これはテクスチャをパースペクティブ補正した場合には正しくない。この場合も、幅は一定である。
【数１３】
0003752186.tif 000014
数式１に戻ると、ｓ１およびｓ０を以下のように求めることができる。
【数１４】
0003752186.tif 000015
ラスタ処理で、所定の方向に偏導関数を追加することによって後の座標を求める。したがって、以下のようになる。
【数１５】
0003752186.tif 000016
数式１４を使用して、ｓの勾配を求めることができる。
【数１６】
0003752186.tif 000017
数式１９は数式８とは一致しないが、この２つの数式の誤差を求めることができれば、その誤差項を使用して
【数１７】
0003752186.tif 000018
の新たな解を生成することができることは明らかである。誤差は以下の通りである。
【数１８】
0003752186.tif 000019
または
【数１９】
0003752186.tif 000020
この誤差を数式に代入すれば、以下の数式が得られる。
【数２０】
0003752186.tif 000021
数式２２の既約式は以下のようになる。
【数２１】
0003752186.tif 000022
この数式の形は、下の誤差数式（数式２１）と一致することに留意されたい。２つの数式を等式にすると、以下のようになる。
【数２２】
0003752186.tif 000023
したがって、
【数２３】
0003752186.tif 000024
数式１８を数式２５に代入すると以下のようになる。
【数２４】
0003752186.tif 000025
または
【数２５】
0003752186.tif 000026
最終的に
【数２６】
0003752186.tif 000027
を求めようとしているため、数式１０と数式１４を使用して数式２７に代入して数式２７を
【数２７】
0003752186.tif 000028
に置き換えて書き換えることができ、それによって数式２８が得られる。
【数２８】
0003752186.tif 000029
数式２８には、１偏導関数について１つの減算と１つの乗算がある。各偏導関数は、数式２８と同様にして導き出すことができる。合計すると、標準の数式の７２の乗算に対して、４８の乗算になる。
【００２３】
図４を参照すると、本発明による、隣接ピクセルの詳細の定義を示す略図が示されている。残りの偏導関数を定義するには、まず、４個の隣接ピクセルのグループのすべてのデルタを定義しなければならない。図４の各数字は、テクスチャ座標（ｕ）を表す。図４は、
【数２９】
0003752186.tif 000030
として、ｕ０とｕ１との差をｘの変化で割った値を定義している。これと同じことは、図４に示す他の変化にも当てはまる。
【数３０】
0003752186.tif 000031
は、ｕ１とｕ３との差を、ｙの変化で割った値として定義される。ｘの変化とｙの変化が常に１（ピクセルが隣接する）場合、図４では数式２９ないし数式３２が定義されている。
【００２４】
数式２９ないし数式３２は、各デルタの数式を示す。
【数３１】
0003752186.tif 000032
数式２８の同様の導出から、以下の数式のセット（３３ないし４０）が得られる。これらの数式は、ｕが４個のピクセルすべてについてどのように移動するかを記述している。他のテクスチャ構成要素ｖおよびｗの数式も、ｕとまったく同じように求められる。ｕによってｖおよびｗの数式が得られるところにはどこにもでもｖとｗを代入する。
【数３２】
0003752186.tif 000033
次のｖ０の式で、デルタにもｑ１ｑｒ０を乗じる。
【数３３】
0003752186.tif 000034
これは、ｕ、ｖ、およびｗのすべての偏導関数にも適用される。これは、ハードウェア適用分野では、８個の係数を計算することができ、それによって各デルタにそれに相応する値を乗じて最終結果を得ることができることを意味する。
【００２５】
この最終アルゴリズムを数式の形（数式４２ないし７３）で以下に示す。従来技術の標準アルゴリズムの２４の減算と７２の乗算に対して、このアルゴズムは、１２の減算と３２の乗算を使用する。
【００２６】
これらの係数は以下の通りである。
【数３４】
0003752186.tif 000035
偏導関数は以下の通りである。
【数３５】
0003752186.tif 000036
【数３６】
0003752186.tif 000037
【数３７】
0003752186.tif 000038
【００２７】
次に図５を参照すると、本発明による、偏導関数のハードウェア実施態様を示す略図が示されている。このシステムは、一連の減算と乗算によって実施することができる。減算と第１段階の乗算とは並列して行うことができる。第２段階には、残りの乗算のみが含まれる。この図全体は、数式３３ないし４０のハードウェア実施態様を表し、４個のピクセルのテクスチャ座標ｕの偏導関数を計算するのに必要な乗算と減算の数を示している。
【００２８】
図６を参照すると、本発明による、偏導関数のハードウェア実施態様のプロセスを示すフローチャートが示されている。このプロセス・フローは、デルタの計算で開始する（ステップ６０１）。このプロセスは、１組の減算を並列して使用して、数式２９ないし３２によって定義されたデルタを生成する。次に、補正係数を計算する（ステップ６０２）。補正係数は、入力パースペクティブ座標を受け入れて、デルタを乗じる係数（数式４２ないし４９）を生成する、１組の乗算である。ハードウェアでは、これは、デルタの減算と並列して行われる（これらは互いに依存関係がない）。補正係数を計算した後、それらの係数にデルタを乗じて真の偏導関数を得る（ステップ６０３）。
【００２９】
本発明について完全機能データ処理システムの環境で説明したが、本発明のプロセスは命令のコンピュータ可読媒体の形態および様々な形態で配布可能であり、本発明はその配布を行うために実際に使用される特定の信号伝達媒体に関係なく等しく適用されることが、当業者ならわかるということに留意することが重要である。コンピュータ可読媒体の例としては、フロッピィ（Ｒ）・ディスク、ハード・ディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録可能型媒体や、たとえば無線周波数や光波伝送などをの伝送形態を使用した、デジタルおよびアナログ通信リンク、有線または無線通信リンクなどの伝送型媒体がある。コンピュータ可読媒体は、特定のデータ処理システムで実際に使用するためにデコードされるコード化形式の形態をとることができる。
【００３０】
本発明の説明は、例示および説明のために示したものであり、網羅的であることや記載の形態の本発明に限定することを意図したものではない。当業者なら、多くの変更および変形態様がわかるであろう。実施形態は、本発明の原理と実際の適用を最もよく説明するためと、当業者が、企図した特定の用途に適合するように様々な変更を加えた様々な実施態様のために本発明を理解することができるようにするために選定したものである。
【図面の簡単な説明】
【図１】本発明を実施することができるデータ処理システムを示す図である。
【図２】本発明を実施することができるデータ処理システムのブロック図である。
【図３】本発明によるピクセルの配列を示す略図である。
【図４】本発明による隣接ピクセルのデルタの定義を示す略図である。
【図５】本発明による偏導関数のハードウェア実施態様を示す略図である。
【図６】本発明による偏導関数のハードウェア実施態様のプロセスを示すフローチャートである。
【符号の説明】
１００  コンピュータ
１０２  ビデオ表示端末
１０４  キーボード
１０６  マウス
１１０  システム・ユニット
２００  データ処理システム
２０２  プロセッサ
２０４  メイン・メモリ
２０６  ローカル・バス
２０８  ＰＣＩブリッジ
２１０  ＬＡＮアダプタ
２１２  ＳＣＳＩホスト・バス・アダプタ
２１４  拡張バス・インタフェース
２１６  オーディオ・アダプタ
２１８  グラフィクス・アダプタ
２１９  オーディオ／ビデオ・アダプタ
２２０  キーボードおよびマウス・アダプタ
２２２  モデム
【図１】
0003752186.tif 000039
【図２】
0003752186.tif 000040
【図３】
0003752186.tif 000041
【図４】
0003752186.tif 000042
【図５】
0003752186.tif 000043
【図６】
0003752186.tif 000044