(57)【要約】  適応性のあるテクスチャフィルタ処理を実現するシステム、方法及び装置が提供される。プログラム可能なテクスチャフィルタモジュールが、グラフィック・コプロセッサのグラフィック処理パイプラインに導入されるとともに、グラフィック・コプロセッサはホストと集積化される。そして、定義された命令セットからのプログラムが、テクスチャ処理コアにロードされ、そのプログラムに調和したテクスチャデータを処理する。
2007517330.tif 000002
【特許請求の範囲】
【請求項１】
レンダリングされる画素の座標データをフェッチするステップ；
前記画素に対応するテクセル値をフェッチするステップ；
プログラム可能フィルタによって前記テクセル値をフィルタするステップ；及び
前記画素にフィルタされたテクスチャ値を出力するステップ；
を有する方法。
【請求項２】
請求項１に記載の方法であって、テクセル値をフィルタするステップが：
制御レジスタを読み出すこと；及び
ソース位置として前記制御レジスタ内に特定される少なくとも１つの位置を用いること；
を有するところの方法。
【請求項３】
請求項１に記載の方法であって、座標データをフェッチするステップが：
頂点パイプラインからＸ、Ｙ、Ｚ座標を取り出すこと；
を有するところの方法。
【請求項４】
請求項１に記載の方法であって：
複数のレジスタに座標の端数データを書き込むステップ；
をさらに有する方法。
【請求項５】
請求項１に記載の方法であって、出力するステップが：
フィルタされたテクスチャ値をレジスタに書き込むこと；及び
前記フィルタされたテクスチャ値が利用可能であることをプロセッサに信号伝達すること；
を有するところの方法。
【請求項６】
フラグメント処理モジュール；
少なくとも１つの画素に対応するテクスチャデータをプログラム制御でフィルタするための、前記フラグメント処理モジュールと交信するプログラム可能なテクスチャフィルタモジュール；及び
フィルタされたテクスチャデータを既存のフレームバッファと結合させるフレームバッファ処理モジュール；
を有する装置。
【請求項７】
請求項６に記載の装置であって、前記プログラム可能なテクスチャフィルタモジュールが：
複数の制御レジスタ；
複数のソースレジスタ；
複数の暫定レジスタ；及び
少なくとも１つの出力レジスタ；
を有するところの装置。
【請求項８】
請求項７に記載の装置であって、前記ソースレジスタが読み出し専用であるところの装置。
【請求項９】
請求項７に記載の装置であって、前記複数の制御レジスタが：
状態レジスタ；
アドレスレジスタ；
オフセットレジスタ；及び
複数の端数レジスタ；
を有するところの装置。
【請求項１０】
請求項７に記載の装置であって、前記複数の制御レジスタが：
前記ソースレジスタの各々に対応するビットを有し、対応するソースレジスタの標本化が必要であるかどうかを指し示す少なくとも１つのサンプリングレジスタ；
を有するところの装置。
【請求項１１】
請求項６に記載の装置であって、前記プログラム可能なテクスチャフィルタモジュールが：
命令セットを実行する複数の処理コア；
を有するところの装置。
【請求項１２】
請求項１１に記載の装置であって、前記複数のコアのサブセットが少なくとも１つの画素においてフィルタプログラムを並列で実行するところの装置。
【請求項１３】
メモリ；
前記メモリに結合された、テクスチャデータをプログラム制御でフィルタする複数のテクスチャ処理コア；
フィルタされたテクスチャデータを少なくとも１つのフラグメントに当てはめるフラグメント処理モジュール；及び
前記少なくとも１つのフラグメントを用いて作成された画像を表示するディスプレー；
を有するシステム。
【請求項１４】
請求項１３に記載のシステムであって、前記複数のテクスチャ処理コア及び前記フラグメント処理モジュールがホストプロセッサと集積化されているところのシステム。
【請求項１５】
請求項１３に記載のシステムであって、前記複数のテクスチャ処理コア及び前記フラグメント処理モジュールがグラフィック・コプロセッサ内にあるところのシステム。
【請求項１６】
請求項１３に記載のシステムであって：
前記複数のテクスチャ処理コアの各々に関連するレジスタセットを有するシステム。
【請求項１７】
請求項１５に記載のシステムであって：
前記グラフィック・コプロセッサを前記メモリに結合させるグラフィック高速バスをさらに有するシステム。
【請求項１８】
実行可能なコンピュータプログラム命令を収容するコンピュータ読み取り可能記憶媒体であって、前記コンピュータプログラム命令は、実行されるとき、デジタル処理システムに：
レンダリングされる画素の座標データをフェッチするステップ；
前記画素に対応するテクセル値をフェッチするステップ；
プログラム可能フィルタによって前記テクセル値をフィルタするステップ；及び
前記画素にフィルタされたテクスチャ値を出力するステップ；
を有する方法を行わせるところのコンピュータ読み取り可能記憶媒体。
【請求項１９】
請求項１８に記載のコンピュータ読み取り可能記憶媒体であって、実行されるとき、デジタル処理システムに：
制御レジスタを読み出すこと；及び
ソース位置として前記制御レジスタ内に特定される少なくとも１つの位置を用いること；
をさらに有する方法を行わせるところのコンピュータ読み取り可能記憶媒体。
【請求項２０】
請求項１８に記載のコンピュータ読み取り可能記憶媒体であって、実行されるとき、デジタル処理システムに：
頂点パイプラインからＸ、Ｙ、Ｚ座標を取り出すこと；
をさらに有する方法を行わせるところのコンピュータ読み取り可能記憶媒体。
【請求項２１】
請求項１８に記載のコンピュータ読み取り可能記憶媒体であって、実行されるとき、デジタル処理システムに：
複数のレジスタに座標の端数データを書き込むステップ；
をさらに有する方法を行わせるところのコンピュータ読み取り可能記憶媒体。
【請求項２２】
請求項１８に記載のコンピュータ読み取り可能記憶媒体であって、実行されるとき、デジタル処理システムに：
フィルタされたテクスチャ値をレジスタに書き込むこと；及び
前記フィルタされたテクスチャ値が利用可能であることをプロセッサに信号伝達すること；
をさらに有する方法を行わせるところのコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はコンピュータグラフィックスに関し、より具体的には、テクスチャマップデータの処理に関する。
【背景技術】
【０００２】
グラフィック応用、特に３次元（３Ｄ）グラフィック応用は、長い間、パーソナルコンピュータ（ＰＣ）によって為される最も処理が集中する作業の１つとなっている。グラフィック処理能力を向上させるため、グラフィック・コプロセッサが数多く生まれ、今日の大抵のＰＣで幅広く利用可能になっている。グラフィック・コプロセッサはグラフィック応用に要求される集中的なタスク処理を素早く実行するように設計された専用集積回路である。
【０００３】
シーン情報（ソースデータ）の３Ｄ画像（表示出力）への変換は多数の処理を必要とする。集合体におけるこれらの処理は、３Ｄグラフィック・レンダリングパイプラインと呼ばれる。パイプラインによって実行される処理はある一定の基本機能にグループ化され得る。これらの機能の１つがテクスチャマッピングである。テクスチャマッピングは物体表面の特性（例えば、外観、反射率、又はその他のこのような特性）を表す１、２又は３次元のイメージが最終レンダリングにおける物体を表す３次元メッシュに適合される処理である。２次元画像が最も一般的に利用されるが、その他の次元も利用可能である。
【０００４】
テクスチャ画像が最終レンダリングにおける物体に適合されるとき、多数のテクスチャ要素（テクセル）及びソースのテクスチャ画像、並びに画像が位置付けられる画素（ピクセル）数の間で不一致が生じることがよくある。所定範囲内のテクセル数がピクセル数より少ないとき、テクスチャはアップサンプリングされるように要求される。テクスチャをアップサンプリングするとき、中間値を補充するために或る仕組みが用いられなければならない。この仕組みをここでは“テクスチャフィルタリング”と呼ぶことにするが、これは一定機能の状態機械で大いに行われてきた。
【０００５】
大抵の今日のグラフィック・コプロセッサは４形式のテクスチャフィルタリング；点抽出法、バイリニアフィルタリング、トリリニアフィルタリング、及び異方性フィルタリング；に対応している。フィルタリング方法はますます複雑化しているので、それらを実行するために必要とされる状態機械はますます複雑化し、かつグラフィック・コプロセッサ内にますます多くの資産を必要とする。このことは、テクスチャデータの使用が拡張され続けているという事実、例えば、テクスチャデータは色に加えて明暗及びその他の表面特性にも用いられていることと相まって、一般に用いられてきた線形補間を非効率、又はさらに不十分なものにしている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、３次元グラフィック・サブシステムにおけるテクスチャマップデータのプログラム可能なフィルタ処理方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の実施形態について、図面に限定するものではなく、一例を示すものとして説明する。図面では、似通った参照符号は同様の構成要素を示している。この明細書内の“ある”又は“一”実施形態への別々の言及は必ずしも同一の実施形態に向けられたものではなく、このような言及は少なくとも１つの実施形態を意味するものである。
【０００８】
図１Ａは本発明の一実施形態に係るシステムのブロック図である。ホストプロセッサ100はバス102によってメモリ104に結合されている。グラフィック・コプロセッサ106もまたバス102に結合されている。さらに、グラフィック・コプロセッサ106はメモリ104にグラフィック専用高速バス（accelerated  graphic  port；ＡＧＰ）112によって結合されてもよい。ＡＧＰは2002年9月に発行されたＡＧＰ  V3.0インターフェース仕様1.0版（以降、ＡＧＰ仕様）に準拠している。ＡＧＰ112はメモリ104にあるグラフィックデータへの迅速アクセスを可能にしている。また、フレームバッファ108及び表示装置110がバスに結合されている。一部の実施形態では、フレームバッファ108はメモリ104に含まれることもある。グラフィック・コプロセッサ106は画素処理パイプライン120を含んでいる。画素処理パイプライン120内には頂点処理モジュール122、基本組立モジュール124、フラグメント処理モジュール126及びフレームバッファ処理モジュール128がある。頂点処理モジュール122は処理中に、グラフィック画像の頂点群に関する３Ｄ位置情報、色情報及びその他の同様の情報を含み得る頂点データを受け取る。一実施形態では、頂点データはV=X,Y,Z,Tu,Tv,RGBの形態をしている。この表現において、X,Y,Zは頂点の３次元デカルト座標であり、Tu及びTvはテクスチャマップにおいて対応するテクセルの２次元座標であり、RGBは頂点における赤、緑及び青色の値である。頂点データのその他の形態及び内容もまた意図される。
【０００９】
頂点処理モジュールは伝達された３D位置データについて３次元変換を行い、また、例えば明暗を付加してもよい。処理された頂点は連結データを受け取るプリミティブ組立モジュールに移動される。連結データは索引を含んでもよく、この索引とは、受け取った頂点及び索引に基づいてプリミティブ、典型的には３角形、の組立を可能にするものである。
【００１０】
プリミティブはフラグメント処理モジュール126に移動される。フラグメント処理モジュール126はプリミティブを処理して断片を特定し、出力を形成するようにテクスチャデータを適合する。ここで用いられるように、“フラグメント”は、出力を生成するために連続して処理される１つの画素、又は隣接する画素群のことを言う。フラグメント処理は、フラグメントのテクスチャマッピングに関するデータをテクスチャフィルタモジュール130と交換する。
【００１１】
【表１】
2007517330.tif 000003
テクスチャフィルタモジュール130はフラグメント処理モジュール126と交信し、画素に適用するためのテクセルを供給する。一実施例において、テクスチャフィルタモジュール130はプログラム可能である。ここでは、プログラム可能とは、定義された命令セットからの１つ以上の命令で構成されるソフトウェアプログラムを実行可能であることを意味すると見なされる。命令セットの一例を表１で説明している。
【００１２】
これに代わる命令セットが、短い又は長いに拘わらず、本発明の様々な実施形態にて用いられ得る。
【００１３】
一実施形態では、テクスチャフィルタモジュール130は複数のテクスチャ処理コア（texture  processing  core；ＴＰＣ）132を含む（図１Ａには16個のＴＰＣが示されている）。他の実施形態はこれより多くの又は少しのＴＰＣを有してもよい。一実施形態では、単一のＴＰＣが存在する。一実施形態において、各ＴＰＣ132はその他のＴＰＣ132の各々と一緒になって画素の並列処理が可能である。各コア132は、例えば制御レジスタ、ソースレジスタ、暫定レジスタ及び出力レジスタ等の様々な種類のレジスタを含み得るレジスタセット134を備えてもよい。
【００１４】
一実施形態では、制御レジスタはサンプリングレジスタ、状態レジスタ、アドレスレジスタ、オフセットレジスタ、及び複数の端数レジスタを含む。一実施形態では、サンプリングレジスタは、各ソースレジスタに対応し、そのソースレジスタを標本化すべきか否かを指し示す１ビットを有する。例えば、16個のソースレジスタがある場合、サンプリングレジスタは16個のソースレジスタの各々に対応する１ビットを備える16ビットのレジスタとしてもよい。一実施形態では、状態レジスタは、例えばオーバーフロー、ゼロによる除算等の或る一定状態後のＴＰＣの状態を指し示すために用いられる。一実施形態では、アドレスレジスタはテクスチャマップデータのアドレスを格納する32ビットのレジスタとしてもよい。一実施形態では、このレジスタは、プログラマに直接アクセスを提供するのではなく、応用プログラムインターフェース（application  programming  interface；ＡＰＩ）によってのみアクセス可能にされてもよい。オフセットレジスタは、最も近いテクセル座標に対応するテクスチャデータへのオフセットを提供するために用いられてもよい。端数レジスタ群はテクセル標本間の各次元の端数座標を保持するために用いられてもよい。一実施形態では、これらはフラグメント処理モジュール126を備える。上述の一実施形態では、Tu及びTvがテクスチャマッピングされる画素に対応しているV=X,Y,Z,Tu,Tv,RGBがテクスチャフィルタモジュールに提供される。一例として、８画素の１次元テクスチャ座標0.175は、第２（0.125）テクセルと第３（0.25）テクセルとの間に収まる。それは0.２の端数と一致する。この実施形態における端数は(0.175-0.125)/0.125、より一般的には座標から最も近い下側のインクリメントを引いてインクリメント値で割った値、であることが分かる。
【００１５】
図１Ｂは本発明の一実施形態に係るテクスチャサンプリングを示している。一実施形態では、16個のソースレジスタが備えられている。一実施形態では、テクスチャ標本点のTuTv標本位置を囲む４×４の格子内の１つのテクセルに対応する各レジスタが、このような方法でアドレスされた画素に対応する。TuTvはテクセル5及び6並びにテクセル9及び10の間の位置に位置付けられてもよいが、区画内の16個のテクセルのTuTvに割り当てられたテクスチャ値への寄与は、テクスチャフィルタリングプログラムで定められてもよい。ある実施形態では、テクセル5、6、9及び10のみが寄与する。他の実施形態では、16個のテクセル全てが寄与してもよい。さらに他の実施形態では、集団内の対角線の画素の全てが寄与してもよい。例示されるように、テクスチャフィルタリングモジュールのプログラム可能な性質により、堅牢で適応性のあるテクスチャフィルタリングの選択が可能になる。
【００１６】
暫定レジスタは、標本データの中間計算を行うプログラマによって選択的に用いられるように設けられてもよい。出力レジスタは、フィルタリング処理が完了した時点で出力を保存するために設けられる。一実施形態では、32ビットのレジスタが最終結果を受け取るために設けられる。より大きなレジスタが用いられてもよいが、ある実施形態では、32ビットのＡＲＧＢ（アルファ赤緑青）値で十分だと判断される。
【００１７】
実際のフィルタリングは所望のフィルタリングプログラムをテクスチャ処理コアにロードしてテクスチャフィルタモジュール130によって実行されてもよい。フィルタリングプログラムは処理されるフラグメントに対応する。画像領域内では、様々な作用をテクスチャデータに適宜に適用することが好ましい場合がある。このように、個々のグラフィック画像に対して、用いられるフィルタリングプログラムが多数あってもよい。
【００１８】
例えば、画像上の革ジャケットの光沢のある部分に適用されるフィルタリングプログラムは、革ジャケットのすり減った部分に適用されるフィルタリングプログラムとは異なることが多い。テクスチャフィルタモジュールで異なるプログラムを用いることにより、異なる効果が提供され得る。所与のシーン画像をレンダリングしている最中に幾つかのフィルタリングプログラムを使用する方法は、今日の固定機能の仕組みにおいて、所与のシーン画像のレンダリングが、そのシーンの別々の部分に対する別々の固定機能フィルタリング状態の間をどのように切替えればよいかということに類似している。用いられるプログラムは、テクスチャフィルタリングを実行するために、例えば16個のテクセルの何れが実際に標本化されるかということに影響を及ぼす。一実施形態では、テクスチャデータは標本化されることになりそうなテクセルへのアクセスを最適化するようにメモリ内で整えられてもよい。例えば、サンプリングレジスタが４テクセル値毎にアクティブであることを表しているとすると、テクスチャデータはメモリ内で点1、5、9及び13が連続し、点2、6、10及び14が連続し、等々のように保存されてもよい。他の例として、２テクセル毎にアクティブである場合には、1、3、5、7、等々が連続し、2、4、6、8、等々が連続する。メモリ内のこの処理はホストプロセッサ100又はグラフィック・コプロセッサ106によって実行されてもよい。
【００１９】
メモリを配置することは、ある一定量のプロセッサ資源を必要とし、一実施形態では、使用されると思われるテクスチャデータがそれを再配置するのに必要なコストの閾値を超えるときに決定が為される。従って、テクスチャデータの使用がそれを再配置するコストが正当だと判断した場合、一実施形態では、テクスチャデータはアクセスを容易にするようにメモリ内に再配置される。例えば、所与のプログラムで処理されるテクセル数などの客観的な指針に基づいて閾値が選定されてもよい。
【００２０】
一度、テクスチャフィルタリングが完了して出力が生成されると、出力フラグメントの形成を可能にするために、出力値はフラグメント処理モジュール126に戻されてもよい。フラグメント処理モジュール126によって形成された出力は、フレームバッファ処理モジュール128に移される。フレームバッファ処理モジュール128は、ディスプレー110への出力のため、受け取った画素を既存のフレームバッファと結合させる。
【００２１】
図２は本発明の一実施形態に係るテクスチャフィルタリングモジュール設定を示すフロー図である。機能ブロック202にて、テクスチャフィルタプログラムがテクスチャフィルタモジュールのテクスチャ処理コアにロードされる。機能ブロック204にて、フィルタ処理の一部として標本化されることになる標本点を囲むテクセル群を指し示すようにサンプリングレジスタが初期化される。判定ブロック206にて、要求されるサンプリング数で標本化されるテクセル群がメモリ内のテクスチャデータの再編成が正当であると判断するかどうか判定が為される。正当であれば、機能ブロック208にてテクスチャデータが効率的なアクセスのために並べ替えられる。並べ替えの後、又は並べ替えが必要でない場合、機能ブロック210にてアドレスレジスタが初期化される。
【００２２】
図３は本発明の一実施形態に係るテクスチャフィルタリングを示すフロー図である。機能ブロック302にて、テクスチャフィルタが、レンダリングされる画素群に対する座標データを頂点パイプラインからフェッチする。一実施形態では、これらのデータはフラグメント処理モジュールからフェッチされる。機能ブロック304にて、サンプリングレジスタから特定されたテクセル値がメモリからフェッチされる。機能ブロック306にて、端数レジスタに座標データがロードされる。フィルタプログラムを実行するためにテクスチャ処理コアが機能ブロック308にて用いられる。判定ブロック310にて、フィルタプログラムの実行が状態フラグの設定を必要とするかどうか判定が為される。この実行が状態フラグ、例えばゼロでの除算又はオーバーフロー等、を必要とする場合、機能ブロック312にて状態レジスタに適切値がロードされる。状態フラグが不要な場合、又は状態レジスタにロードされた後、機能ブロック314にて、出力値が出力レジスタにロードされ、出力が利用可能であることの信号伝達がなされる。判定ブロック316にて、現在のフィルタプログラムを用いてレンダリングされる画素がもっとあるかどうか判定が為される。あればフローが続けられ、なければ終了する。
【００２３】
上述のフロー図は特定の順序で配列されているが、幾つかの処理が並列に実行されてもよいし、図示されたものとは異なる順序で実行されてもよい。従って、このような並列化又は再配置は本発明の実施形態の範囲及び意図の範囲内である。１つの実施形態においてのみ単一のテクスチャ処理コアがテクスチャフィルタモジュールに存在し得るが、複数のテクスチャ処理コアを備える実施形態において、画素群は図３に示されたフローに従って各コアで並列処理されてもよい。
【００２４】
上記記載により、特定の実施形態を参照しながら本発明について述べてきた。しかし、請求項に記載されるような本発明のより広い意図及び範囲を逸脱することなく、様々な変更及び変形が実施形態に為され得ることは明らかである。従って、明細書及び図面は限定的な意味ではなく例示的な意味であると見なされるものである。
【図面の簡単な説明】
【００２５】
【図１Ａ】本発明の一実施形態に係るシステムを示すブロック図である。
【図１Ｂ】本発明の一実施形態に係るテクスチャサンプリングを示す図である。
【図２】本発明の一実施形態に係るテクスチャフィルタリングモジュール設定を示すフロー図である。
【図３】本発明の一実施形態に係るテクスチャフィルタリングを示すフロー図である。
【図１Ａ】
2007517330.tif 000004
【図１Ｂ】
2007517330.tif 000005
【図２】
2007517330.tif 000006
【図３】
2007517330.tif 000007
【国際調査報告】
2007517330.tif 000008
2007517330.tif 000009
2007517330.tif 000010