(57)【要約】      （修正有）【解決手段】グラフィクスシステムは、効率的なテクスチャパイプラインが、論理的直接および間接テクスチャ座標データをインタリーブし、かつならびに１つのテクスチャ検索ユニットから検索した間接テクスチャルックアップデータを「再循環させて」戻すテクスチャルックアップデータフィードバック経路を提供する１つのテクスチャ座標／データ処理ユニットを利用する。多目的間接テクスチャ参照が、直接テクスチャルックアップのテクスチャ座標に加算されるオフセットへ再循環テクスチャルックアップデータを変換するために、同じテクスチャ座標／座標処理ユニットを使用することによって、達成される。【効果】少数のハードウェアテクスチャ処理ユニットから任意数の論理的直接および／または間接テクスチャマッピングステージの処理を、効率化することができる。【選択図】図５
2011065677.tif 000002
【特許請求の範囲】
【請求項１】
テクスチャデータを含むメモリを有するグラフィクスシステムにおける間接テクスチャ参照方法であって、
(a) データトリプレットを発生するために間接テクスチャ座標を使用し、
(b) 発生したトリプレットに少なくとも部分的に基づいてテクスチャ座標を検索し、そして
(c) プリミティブ上へ所定のテクスチャデータをマッピングするために少なくとも検索したテクスチャ座標を使用する、間接テクスチャ参照方法。
【請求項２】
使用ステップ(a) は、テクスチャメモリにおいて、間接テクスチャ座標を介してトリプレットをマッピングするアレイを参照するステップを含む、請求項１記載の間接テクスチャ参照方法。
【請求項３】
使用ステップ(a) は、メモリにストアされたテクスチャマップから所定のトリプレットデータを取り出すステップを含む、請求項１記載の間接テクスチャ参照方法。
【請求項４】
使用ステップ(c) は、テクスチャメモリにおいて、検索したテクスチャ座標を介してカラー値データをマッピングするアレイを参照するステップを含む、請求項１記載の間接テクスチャ参照方法。
【請求項５】
検索ステップ(b) はマトリクス乗算演算を行い、その演算において、複数の所定の定数および／または可変スカラ要素を含む第１マトリクスが、検索したデータトリプレットを含む第２マトリクスによって乗算される、請求項１記載の間接テクスチャ参照方法。
【請求項６】
トリプレットはｓ，ｔおよびｕテクスチャ座標オフセットを含む、請求項１記載の間接テクスチャ参照方法。
【請求項７】
トリプレットは３つの８ビット２進値を含む、請求項１記載の間接テクスチャ参照方法。
【請求項８】
トリプレットは３つの５ビット２進値を含む、請求項１記載の間接テクスチャ参照方法。
【請求項９】
トリプレットは３つの４ビット２進値を含む、請求項１記載の間接テクスチャ参照方法。
【請求項１０】
トリプレットは３つの３ビット２進値を含む、請求項１記載の間接テクスチャ参照方法。
【請求項１１】
第１マトリクスは１つまたはそれ以上の所定のテクスチャ座標のスカラ関数である要素を含む、請求項５記載の間接テクスチャ参照方法。
【請求項１２】
第１マトリクスは６つの所定のスカラ要素を含む３×２マトリクスである、請求項５記載の間接テクスチャ参照方法。
【請求項１３】
第１マトリクスは次の要素を含んで配置される
【数５】
2011065677.tif 000004
ただし、ｓおよびｔは所定のテクスチャ座標である、請求項５記載の間接テクスチャ参照方法。
【請求項１４】
第１マトリクスは次の要素を含んで配置される
【数６】
2011065677.tif 000005
ただし、ｓおよびｔは所定のテクスチャ座標である、請求項５記載の間接テクスチャ参照方法。
【請求項１５】
テクスチャメモリにストアされたかつ１組の直接テクスチャ座標または１組の間接テクスチャ座標を介してアクセスされるテクスチャデータを含むメモリを有する３Ｄビデオグラフィクスシステムにおいて、ポリゴン上に所定のテクスチャをマッピングするための間接テクスチャ参照方法であって、
(a) テクスチャメモリにストアされたデータトリプレットを検索するために１組の間接テクスチャ座標を使用し、
(b) 検索したデータトリプレットに少なくとも部分的に基づいて１組の修正テクスチャ座標を検索し、そして
(c) 所定のテクスチャに対応してテクスチャメモリにストアされているテクスチャデータを参照するために１組の修正テクスチャ座標を使用する、間接テクスチャ参照方法。
【請求項１６】
検索ステップ(b) は、少なくとも１つのマトリクス乗算演算を行うステップを含み、その演算においては複数の所定の定数および／または可変スカラ要素を含む第１マトリクスが、検索したデータトリプレットを含む第２マトリクスによって乗算される、請求項１５記載の間接テクスチャ参照方法。
【請求項１７】
使用ステップ(c) は、テクスチャメモリにおいて、検索したテクスチャ座標を介してカラー値データをマッピングするアレイを参照するステップを含む、請求項１５記載の間接テクスチャ参照方法。
【請求項１８】
データトリプレットは少なくとも１つのテクスチャ座標オフセットを含む、請求項１５記載の間接テクスチャ参照方法。
【請求項１９】
トリプレットはｓ，ｔおよびｕテクスチャ座標オフセットを含む、請求項１５記載の間接テクスチャ参照方法。
【請求項２０】
トリプレットは３つの８ビット２進値を含む、請求項１５記載の間接テクスチャ参照方法。
【請求項２１】
トリプレットは３つの５ビット２進値を含む、請求項１５記載の間接テクスチャ参照方法。
【請求項２２】
トリプレットは３つの４ビット２進値を含む、請求項１５記載の間接テクスチャ参照方法。
【請求項２３】
トリプレットは３つの３ビット２進値を含む、請求項１５記載の間接テクスチャ参照方法。
【請求項２４】
第１マトリクスは１つまたはそれ以上の所定のテクスチャ座標のスカラ関数である要素を含む、請求項１６記載の間接テクスチャ参照方法。
【請求項２５】
第１マトリクスは６つの所定のスカラ要素を含む３×２マトリクスである、請求項１６記載の間接テクスチャ参照方法。
【請求項２６】
第１マトリクスは次の要素を含んで配置される
【数７】
2011065677.tif 000006
ただし、ｓおよびｔは所定のテクスチャ座標である、請求項１６記載の間接テクスチャ参照方法。
【請求項２７】
第１マトリクスは次の要素を含んで配置される
【数８】
2011065677.tif 000007
ただし、ｓおよびｔは所定のテクスチャ座標である、請求項１６記載の間接テクスチャ参照方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はコンピュータグラフィクスに関し、特にたとえば、家庭用ビデオゲームプラットホームのようなインタラクティブグラフィクスシステムに関する。さらに特定的には、この発明は、グラフィクスシステムにおける直接(direct) および間接(indirect) テクスチャマッピング／処理に関する。
【背景技術】
【０００２】
多くの人々はかなりリアルな恐竜，エイリアン，生き生きとしたおもちゃおよび他の空想的な動物を含む映画をかつて見たことがある。そのようなアニメーションはコンピュータグラフィクスによって可能とされた。そのような技術を用いて、コンピュータグラフィクスのアーティストは、各オブジェクトがどのように見えるべきかや時間の経過とともに外見上どのように変化すべきかを特定し、コンピュータは、そのオブジェクトをモデル化してテレビジョンやコンピュータスクリーンのようなディスプレイに表示する。コンピュータは、表示される映像の各部分を、場面中の各オブジェクトの位置や向き，各オブジェクトを照らすように見える照明の方向，各オブジェクトの表面テクスチャ，および他の要素に正確に基づいて、色付けしまた形作るために必要な多くのタスクを実行する。
【０００３】
コンピュータグラフィクスの生成は複雑であるので、ここ数年前のコンピュータによって生成された３次元（３Ｄ）グラフィクスは、ほとんど高価な特殊なフライトシミュレータ，ハイエンドグラフィクスワークステーションおよびスーパーコンピュータに限られていた。大衆は映画や高価なテレビコマーシャルにおいてこれらのコンピュータシステムによって生成された映像のいくつかを見たが、大部分の人はグラフィクスを生成しているコンピュータに対して実際に相互作用をさせることはできない。たとえば、Nintendo64（登録商標）や今や利用可能であるパソコン用の種々の３Ｄグラフィクスカードのような比較的安価な３Ｄグラフィクスプラットフォームの利用によって、このすべてが変わった。今や、家庭や会社の比較的安価なコンピュータグラフィクスシステム上でエキサイティングな３Ｄアニメーションやシミュレーションに対して相互作用を及ぼすことができる。
【０００４】
グラフィクスシステム設計者が過去に直面した問題は、ポリゴンや他の幾何学的プリミティブを有する所望のディテールの明示的なモデリングへの再分類なしに、レンダリングしたオブジェクト上にリアルに見える表面ディテールを如何に作り出すかということであった。表面ディテールはたとえば頂点間を補間するシェーディングを有する無数の小さい三角形を使ってシミュレートできるが、所望のディテールがより精細かつより複雑になると、三角形や他のプリミティブを用いる明示的なモデリングはグラフィクスシステムに高度な要求をかけ、そして実用的ではない。Ｅキャットマルが先駆しかつＪＦブリンおよびＭＥニューウェルが改良した別の技術は、表面上にデジタイズされたまたは合成されたイメージを「マッピング」することである。（Ｅキャットマルによる「曲面のコンピュータディスプレイのための再分割アルゴリズム」、博士論文、レポートＵＴＥＣ−ＣＳｃ−７４−１３３、コンピュータ科学部門、ユタ大学、ソルトレークシティ、ＵＴ、１９９４年１２月およびＪＦブリンおよびＭＥニューウェルによる「コンピュータ生成イメージにおけるテクスチャおよび反射」、ＣＡＣＭ、１９（１０）、１９７６年１０月、４５２−４５７を参照されたい。）この方法はテクスチャマッピング（またはパターンマッピング）として知られており、そのイメージはテクスチャマップと呼ばれる（または単にテクスチャと呼ばれる）。あるいは、テクスチャマップはイメージによってよりもむしろ手順によって定義される。
【０００５】
典型的には、テクスチャマッピングは、２次元（２Ｄ）の直角座標空間内で定義され、かつたとえば（ｕ，ｖ）または（ｓ，ｔ）のような１対の直角テクスチャ座標を用いてパラメータ化される。テクスチャマップ内での個々の要素はしばしばテクセル(texels)と呼ばれる。各レンダリングしたピクセルにおいて、選択されたテクセルが、そのレンダリングしたオブジェクトの表面の１つまたはそれ以上の材質的な特性を代替しもしくは調整するために用いられる。この処理がしばしばテクスチャマッピングまたは「テクスチャリング」と呼ばれる。
【０００６】
ほとんどの３次元（３Ｄ）のグラフィクスレンダリングシステムはいまや、メモリからテクスチャを検索して、そのテクスチャを、レンダリングしたオブジェクト表面上にマッピングするためのテクスチャリングサブシステムを含む。間接またはマルチテクスチャを利用する洗練されたテクスチャリングの効果はまた、たとえばマルチテクスチャリング、メタテクスチャまたはテクスチャタイリングのような可能性があるが、従来の方法は典型的には、１つのテクスチャリング回路（ユニット）の出力が次のテクスチャリング回路への入力を与える多数の別々のテクスチャ検索／マッピング回路を用いるような複雑なハードウェア構成を結果的に必要とする。そのような重複する回路は本質的にそのような効果を用いないときには無駄である。オンチップでグラフィクス処理する実施例において、より以上のチップ不動産を必要とする付加的な回路は歩留りや信頼性を減じ、そのシステムの全体の製作コストを大きくする。したがって、グラフィクスシステムの設計者に直面しているさらなる問題は、テクスチャマッピングハードウェアの複雑さにおける相応する増分なしに、一層洗練されたテクスチャリング効果を如何に効率的に実現するかということである。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
１つのソリューションは単一のテクスチャアドレシング／マッピング回路を用いて多数のテクスチャリングパス(pass)を行うことである。名目的には、このソリューションは、少なくとも、第１組のテクスチャアドレス座標を発生すること、第１テクスチャをアクセスすること、一時記憶に検索したデータをストアすること、および次のまたは後続のテクスチャリングパスにおける第２テクスチャにアクセスするときに新しい座標を計算する際に使用するために同じ組のテクスチャ座標を再度発生することを要する。この方法はハードウェアの複雑さをいくぶん減じることができるが、時間をかなり消費し、多数回にわたって同じ組のテクスチャ座標を発生／提供しなければならず、モード変更（たとえば直接および間接テクスチャリング動作モード間での切り換え）の間結果的に処理効率を低下させる。さらに、この方法によれば、グラフィクスレンダリングシステムを通るデータ処理の流れを結果的に非常に細分化(course granularity) することになり、ポリゴンのフィルレートに重大な影響を与える。
【課題を解決するための手段】
【０００８】
この問題を解決しかつ３次元グラフィクスシステムのためのテクスチャリング能力の強化されたレパートリを提供するために、この発明は、単一のテクスチャアドレス座標／データ処理ユニットを用いることによって、比較的低いチップ足跡(chip-footprint)を達成する多目的テクスチャリングパイプライン構成を提供する。この処理ユニットは、論理的直接および間接テクスチャ座標データの処理をインタリーブし、検索した間接テクスチャルックアップデータを単一のテクスチャ検索ユニットからテクスチャアドレス座標／データ処理ユニットへ「再循環させる」ためのテクスチャルックアップデータフィードバック経路を提供する。この発明のインタリーブした座標処理および再循環／フィードバックデータ配置によれば、少数のハードウェアテクスチャ処理ユニットから任意数の論理的直接および／または間接テクスチャマッピングステージの処理を、一方で全体のデータ処理の流れにおける細分化を防止しながら、効率化することができる。
【０００９】
この発明によって提供される１つの局面において、グラフィクス処理のテクスチャリングパイプライン部分の再循環／データフィードバック構成は、多数のレンダリングパスおよび／または一時的なテクスチャ記憶ハードウェアの必要なしに、論理的直接および間接テクスチャ処理の両方のために、単一のテクスチャルックアップ（検索）ユニットの効率的な使用および再使用を可能とする。
【００１０】
この発明によって提供される他の局面によれば、テクスチャアドレス（座標）処理ハードウェアは、再循環／フィードバックテクスチャデータに基づく種々の座標計算を行い、かつ実質的に連続的なインタリーブされた流れ（たとえばシステムを通してのグラフィクスデータの処理の流れにおける「細分化」を回避するように）直接および間接座標データの両方を処理するように構成される。このユニークなインタリーブされた処理／データ再循環テクスチャパイプライン構成は、強化された様々の直接および間接テクスチャリングのアプリケーションを提供するために、最小量のハードウェアを使用しながら、効率的かつ柔軟性のあるテクスチャ座標処理およびテクスチャ検索／マッピング動作を可能とする。
【００１１】
この発明によって提供される他の局面によれば、論理的直接および間接テクスチャルックアップを行うための座標データの効率的な連続処理は、単一のテクスチャ座標処理ハードウェアユニット内においてピクセル毎の直接および間接座標データの両方の処理をインタリーブすることによって達成される。たとえば、間接テクスチャ座標ストリーム中の「バブル」（不使用サイクル）を探すために、そしてテクスチャマッパ(mapper)の最大の使用のためにそのような「バブル」へ計算したテクスチャ座標データを挿入するために、セレクタが用いられ得る。
【００１２】
この発明によって提供されるさらに他の局面によれば、ハードウェアによって実現したテクスチャリングパイプラインは、同じテクスチャデータ検索ユニットが
・直接および間接テクスチャの両方のルックアップ、および
・間接テクスチャルックアップデータの供給
のために使用されかつ再使用され得るテクスチャルックアップデータフィードバック経路を含む。同じテクスチャアドレス（座標）処理ユニットが論理的直接および間接テクスチャ座標データの両方を処理するためにかつ新／修正テクスチャ座標を計算するために使用されかつ再使用され得る。
【００１３】
この発明によって提供されるさらに他の局面によれば、１組のテクスチャマッピングパラメータが、テクスチャマッピング動作を行うように制御されるテクスチャマッピングユニットへ提示される。このテクスチャマッピング動作の結果は、同じテクスチャマッピングユニットの入力へフィードバックされる別の組のテクスチャマッピングパラメータを提示するために再循環されかつ使用される。テクスチャマッピングユニットはこれらの再循環されたパラメータに応答して別のテクスチャマッピング動作を実行し、さらなるテクスチャマッピング結果を提供する。
【００１４】
第１のテクスチャマッピング動作は間接テクスチャマッピング動作を含み、第２のテクスチャマッピング動作は直接テクスチャマッピング動作を含む。直接テクスチャマッピング動作を行うためのテクスチャマッピングユニットへのテクスチャマッピングパラメータの処理および提示は、間接テクスチャマッピング動作を行うためのテクスチャマッピングパラメータの処理および提示でインタリーブされる。
【００１５】
この発明によって提供される別の局面によれば、間接テクスチャ参照方法は、テクスチャ座標を検索するために次に使用されるデータトリプレット(triplet) を発生するために間接テクスチャ座標を使用する。検索したテクスチャ座標は、次いで、プリミティブ上へ所定のテクスチャデータをマッピングするために使用される。
【００１６】
この発明によって提供されるさらに別の局面によれば、テクスチャメモリにストアされた検索データトリプレットが、テクスチャメモリにストアされたテクスチャデータを参照するために次いで使用される所定テクスチャに対応する１組の修正テクスチャ座標を検索するために使用される。
【００１７】
この発明によって提供されるなおも他の局面によれば、グラフィクスシステムは
・少なくとも１つのデータ乗算器と少なくとも１つのデータ累算器との配置を含む論理的直接および間接座標データのインタリーブされた処理のためのテクスチャ座標／データ処理ユニット；
・座標／データ処理ユニットに接続されてテクスチャメモリにストアされたテクスチャデータを検索するテクスチャデータ検索ユニット；および
・さらなる処理のために検索テクスチャデータをテクスチャ座標／データ処理ユニットを通してリサイクルさせるためのテクスチャデータ検索ユニットからテクスチャ座標／データ処理ユニットへのデータフィードバック経路を備え、
・１組のテクスチャ座標に応答して検索ユニットが処理ユニットへ検索テクスチャデータを与え、レンダリングされたイメージオブジェクトの表面へテクスチャをマッピングする際に使用される修正テクスチャ座標を検索する。
【００１８】
この発明によって提供されるなおも他の局面によれば、レンダリングされかつ表示されたイメージの表面へ１つまたはそれ以上の異なるテクスチャおよび／またはテクスチャ特性に対応するテクスチャデータを選択的にマッピングするためのテクスチャ処理システムは、マトリクス（行列式）の要素によって間接テクスチャデータを乗算することによって１組のオフセットテクスチャ座標を生成するテクスチャ座標オフセットマトリクス配置を含み、そこでは、マトリクスの１つまたはそれ以上の要素が１つまたはそれ以上の所定の直接テクスチャ座標の数学的な関数であり、マトリクスの１つまたはそれ以上の要素が選択的にロードされる。
【００１９】
この発明によって提供されるさらに他の局面によれば、１組の間接テクスチャ座標がテクスチャメモリにストアされているデータトリプレットを検索するのに使用され、１組の修正テクスチャ座標がその検索したデータトリプレットの少なくとも一部に基づいて検索される。１組の修正テクスチャ座標は、次いで、テクスチャメモリにストアされたデータを検索するために使用される。これらのステップは所定数のデータ検索のために反復的に繰り返され、そしてその繰り返しからの結果である１組の検索テクスチャ座標がプリミティブ上に所定のテクスチャデータをマッピングするために使用される。
【００２０】
この発明によって提供されるなおも他の局面によれば、１組の一般化したＡＰＩ(application program interface) 間接テクスチャマッピング関数が、テクスチャリングパイプライン装置によって定義されかつサポートされ、その装置は、少なくとも４つの間接テクスチャ動作（間接ルックアップステージ）を行うためのかつ少なくとも８つの予め規定したテクスチャの１つおよび少なくとも８つの予め規定した組のテクスチャ座標の１つを各間接テクスチャリング動作に選択的に関連付けるためのアーギュメント(arguments：引数) を特定するのを許容する。定義したＡＰＩ間接テクスチャマッピング関数はまた、テクスチャスケール、バイアスおよび座標ラップ因子、さらには多様なテクスチャ座標オフセット乗算マトリクス構成ならびにテクスチャリングパイプライン内での新／修正テクスチャルックアップ座標を計算するための関数を特定するのを許容する。
【００２１】
この発明によって提供されるなおも他の局面によれば、テクスチャアドレス（座標）処理ユニットは、間接テクスチャルックアップから検索したテクスチャカラー／データを標準（非間接）テクスチャルックアップのテクスチャ座標に加えられるオフセットへ変換する。フィードバック経路は、テクスチャ検索ユニットからそのテクスチャ検索ユニットへテクスチャ座標を発生し／提供するために使用されるテクスチャ座標処理ユニットへのテクスチャカラー／データ出力を提供する。
【００２２】
この発明に従ったその他の局面によれば、少なくとも１対のＦＩＦＯバッファを含む１つのテクスチャアドレス処理ユニットが、「直接」（標準非間接）および「間接」テクスチャ座標の両方の処理をインタリーブしかつ同期化するために利用され、１つのテクスチャデータ検索ユニットが、新／修正テクスチャルックアップ座標を計算するためにテクスチャアドレス処理ユニットへ間接テクスチャルックアップデータを検索しかつ再循環させるために使用される。１つの実施例においては、この検索された間接テクスチャルックアップデータは３，４，５または８ビットの多ビットの２進データトリプレットとして処理される。このデータトリプレットは、主メモリ内のテクスチャマップにアクセスするための修正オフセットテクスチャ座標を計算するために、直接座標データもしくはテクスチャアドレス処理の先のサイクル／ステージからの計算データと必要に応じて結合される前に、３×２要素のテクスチャ座標オフセットマトリクスによって乗算される。オフセットマトリクスの要素の値はプログラマブルであり、選択された所定の定数または直接座標に基づく値を使用する連続的な処理サイクル／ステージのために動的に規定されてもよい。多様なオフセットマトリクス構成が選択可能であり、プログラマブルな定数に基づく要素を含む少なくとも３つのオフセットマトリクス構成および１組の直接テクスチャ座標からの値に基づく要素を含む２つの「可変」マトリクス構成から選択可能である。検索したテクスチャデータを自由にバイアスしかつスケーリングするための回路がまた設けられる。
【００２３】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２４】
【図１】図１はインタラクティブコンピュータグラフィクスシステムの実施例を示す全体図である。
【図２】図２は図１実施例のコンピュータグラフィクスシステムのブロック図である。
【図３】図３は図２に示す実施例のグラフィクス／オーディオプロセサのブロック図である。
【図４】図４は図３に示す実施例の３Ｄグラフィクスプロセサのブロック図である。
【図５】図４のグラフィクス／オーディオプロセサの例示的な論理フロー図である。
【図６】図６はこの発明に従って間接テクスチャ処理の論理的全体図を図解するブロック図である。
【図７】図７は標準（非間接）テクスチャルックアップの単純な基本的な例を図解する機能ブロック図である。
【図８】図８はこの発明に従った間接テクスチャルックアップの単純な基本的な例を図解する機能ブロック図である。
【図９】図９はこの発明に従って間接テクスチャ処理を実現するための例示的な物理的構成の全体図を図解するブロック図である。
【図１０】図１０はテクスチャアドレス（座標／データ）プロセサ動作の論理的な全体図を図解するブロック図である。
【図１１】図１１は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図１２】図１２は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図１３】図１３は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図１４】図１４は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図１５】図１５は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図１６】図１６は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図１７】図１７は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図１８】図１８は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図１９】図１９は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図２０】図２０は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図２１】図２１は直接および間接テクスチャ処理をインタリーブするための例示したテクスチャリングパイプラインにおける直接および間接データの動的な進行を図解するブロック図である。
【図２２】図２２はこの発明に従って間接テクスチャ処理を実現するための例示ステップを図解するフロー図である。
【図２３】図２３はこの発明に従った標準（非間接）テクスチャ処理の例を図解する機能動作図である。
【図２４】図２４はこの発明に従ってインタリーブされた標準（非間接）および間接テクスチャ処理の例を図解する機能動作図である。
【図２５】図２５は図５に示すテクスチャ座標／バンプ処理ユニットの詳細な例を示すブロック図である。
【図２６】図２６は図２５に示す間接テクスチャルックアップデータ／座標処理ロジック（ｐｒｏｃ）の詳細な例を示すブロック図である。
【図２７】図２７は図２６の処理ロジック回路（ｐｒｏｃ）によって使用される例示的なテクスチャオフセットマトリクスを示す。
【図２８】図２８は図２６の処理ロジック回路（ｐｒｏｃ）によって使用される例示的なテクスチャオフセットマトリクスを示す。
【図２９】図２９は図２６の処理回路中における動作を制御するための制御ロジックレジスタの例示的なデータフィールドフォーマットを図解するブロック図である。
【図３０】図３０は別の互換性のある実施例を示す。
【図３１】図３１は別の互換性のある実施例を示す。
【発明を実施するための形態】
【００２５】
図１は対話型（インタラクティブ）３Ｄコンピュータグラフィクスシステム５０の一例を示す。システム５０は対話型３Ｄビデオゲームをステレオ音声とともにプレイするのに用いられ得る。これはまた多様な他のアプリケーションにも用いられ得る。
【００２６】
この実施例において、システム５０は３次元世界のディジタル表現ないしモデルをインタラクティブにかつリアルタイムに処理することができる。システム５０は、任意の視点から、その世界の一部または全部を表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂまたは他の入力デバイスからのリアルタイム入力に応答して、視点をインタラクティブに変化できる。このことによって、ゲームプレーヤは、その世界内もしくは外の誰かの目を通してその世界を見ることができる。システム５０は、リアルタイム３Ｄインタラクティブ表示を必要としないアプリケーション（たとえば２Ｄ表示の発生やおよび／またはノンインタラクティブ表示）に使用できるが、高品質の３Ｄ映像を非常に速く表示する能力は、非常にリアルでエキサイティングなゲームプレイや他のグラフィクスインタラクションを創造するのに使用され得る。
【００２７】
システム５０を用いてビデオゲームまたは他のアプリケーションをプレイするために、ユーザはまず、主ユニット５４を、カラーテレビ５６または他の表示装置に、両者の間にケーブル５８を接続することによって、接続する。主ユニット５４はカラーテレビ５６を制御するためのビデオ信号およびオーディオ信号を発生する。ビデオ信号はテレビジョン画面５９上に表示されている映像を制御するものであり、オーディオ信号はテレビのステレオスピーカ６１Ｌおよび６１Ｒを通して音声として再生される。
【００２８】
ユーザはまた主ユニット５４を電源につなぐ必要がある。この電源は従来のＡＣアダプタ（図示せず）であってよく、そのＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、主ユニット５４を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例ではバッテリが用いられてもよい。
【００２９】
ユーザは主ユニット５４を制御するために手持ちコントローラ５２ａおよび５２ｂを用いる。コントロール６０は、たとえば、３Ｄ世界内においてテレビ５６に表示されているキャラクタが移動すべき方向（上または下、左または右、近づいてまたは遠ざかって）を指示するために使用され得る。コントロール６０は、また他のアプリケーションのための入力（たとえばメニュー選択，ポインタ／カーソル制御，その他）を与える。コントローラ５２は多様な形態をとり得る。この実施例においては、図示されるコントローラ５２は、各々ジョイスティック，押しボタンおよび／または方向スイッチのようなコントロール６０を含む。コントローラ５２は、ケーブルによって、もしくは電磁波（たとえば電波または赤外線）を介してワイヤレスで、主ユニット５４に接続され得る。
【００３０】
ゲームのようなアプリケーションをプレイするために、ユーザはビデオゲームもしくはプレイしたいと思う他のアプリケーションをストアしている適宜の記憶媒体６２を選択し、その記憶媒体を主ユニット５４のスロット６４に差し込む。記憶媒体６２は、たとえば、特別にエンコードされおよび／または記号化された光学的ならびに／もしくは磁気的ディスクであってよい。ユーザは主ユニット５４をオンするために電源スイッチ６６を操作し、主ユニットがその記憶媒体６２にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザは主ユニットに入力を与えるためにコントローラ５２を操作する。たとえば、コントロール６０を操作することによってゲームもしくは他のアプリケーションをスタートさせる。他のコントロール６０を動かすことによって、動画キャラクタを異なる方向に移動させ、または３Ｄ世界におけるユーザの視点を変化させる。記憶媒体６２にストアされている具体的なソフトウェアによって、コントローラ５２上の種々のコントロール６０は異なる時間で異なる機能を達成することができる。
【００３１】
全体システムの例
図２はシステム５０の例示的なコンポーネントのブロック図であり、重要なコンポーネントは、
・主プロセサ（ＣＰＵ）１１０，
・主メモリ１１２，および
・グラフィクス／オーディオプロセサ１１４を含む。
【００３２】
この実施例において、主プロセサ１１０（たとえばＩＢＭパワーＰＣ７５０の改良版）は、手持ちコントローラ５２（および／または他の入力デバイス）からの入力をグラフィクス／オーディオプロセサ１１４を通して受ける。主プロセサ１１０はユーザ入力にインタラクティブに応答し、光ディスクドライブのような大容量記憶媒体アクセス装置１０６を介して、たとえば外部記憶媒体６２から供給されるビデオゲームもしくは他のプログラムを実行する。一例として、ビデオゲームプレイの状況では、主プロセサ１１０は、多様なインタラクティブ制御機能に加えて、衝突検出および動画処理を実行する。
【００３３】
この実施例では、主プロセサ１１０は３Ｄグラフィクス／オーディオコマンドを発生し、それらをグラフィクス／オーディオプロセサ１１４に送る。グラフィクス／オーディオプロセサ１１４はこれらのコマンドを処理し、ディスプレイ５９上での可視映像を生成し、ステレオスピーカ６１Ｒおよび６１Ｌもしくは他の適宜の音声発生デバイス上でのステレオ音声を生成する。
【００３４】
実施例のシステム５０はビデオエンコーダ１２０を含み、このビデオエンコーダは、グラフィクス／オーディオプロセサ１１４からの映像信号を受けて、その映像信号をコンピュータモニタや家庭用テレビ５６のような標準的な表示装置上での表示に適したアナログおよび／またはディジタルビデオ信号に変換する。システム１００はまたオーディオコーデック（圧縮器／伸長器）１２２を含み、このオーディオコーデックはディジタル化されたオーディオ信号を圧縮しかつ伸長するとともに、必要に応じてディジタルオーディオ信号のフォーマットとアナログオーディオ信号のフォーマットとの間で変換を行う。オーディオコーデック１２２はバッファ１２４を介してオーディオ入力を受けることができ、処理（たとえば、プロセサが生成したおよび／または大容量記憶媒体アクセス装置１０６のストリームオーディオ出力を介して受信した他のオーディオ信号とのミキシング）するために、そのオーディオ入力をグラフィクス／オーディオプロセサ１１４に与える。この実施例におけるグラフィクス／オーディオプロセサ１１４は、オーディオタスクに利用可能なオーディオメモリ１２６にオーディオ関連情報をストアすることができる。グラフィクス／オーディオプロセサ１１４は、結果的に得られるオーディオ出力信号を、圧縮およびアナログ信号への変換のために、オーディオコーデック１２２に与え、したがってそのオーディオ出力信号が（たとえばバッファアンプ１２８Ｌおよび１２８Ｒを介して）スピーカ６１Ｌおよび６１Ｒによって再生され得る。
【００３５】
グラフィクス／オーディオプロセサ１１４はシステム１００内に存在するであろう種々の付加的なデバイスと通信する能力を有する。たとえば、パラレルディジタルバス１３０は大容量記憶媒体アクセス装置１０６および／または他のコンポーネントと通信するために用いられる。シリアル周辺バス１３２は多様な周辺機器または、たとえば、
・ＰＲＯＭおよび／またはＲＴＣ（リアルタイムクロック）１３４，
・モデム１３６もしくは他のネットワークインタフェース（それはシステム１００を、プログラム命令および／またはデータがダウンロードもしくはアップロードされ得るインターネットあるいは他のディジタルネットワークのようなテレコミュニケーションネットワーク１３８に接続する），および
・フラッシュメモリ１４０を含む他のデバイスと通信する。
別の外部シリアルバス１４２は、付加的な拡張メモリ１４４（たとえばメモリカード）もしくは他のデバイスと通信するために使用され得る。コネクタが種々のデバイスをバス１３０，１３２および１４２に接続するために使用され得る。
【００３６】
グラフィクス／オーディオプロセサの例
図３は実施例のグラフィクス／オーディオプロセサ１１４を示すブロック図である。或る実施例においては、グラフィクス／オーディオプロセサ１１４はシングルチップＡＳＩＣであってよい。この実施例においては、グラフィクス／オーディオプロセサ１１４は、
・プロセサインタフェース１５０，
・メモリインタフェース／コントローラ１５２，
・３Ｄグラフィクスプロセサ１５４，
・オーディオディジタル信号プロセサ（ＤＳＰ）１５６，
・オーディオメモリインタフェース１５８，
・オーディオインタフェース／ミキサ１６０，
・周辺コントローラ１６２，および
・表示コントローラ１６４を含む。
【００３７】
３Ｄグラフィクスプロセサ１５４はグラフィクス処理タスクを実行する。オーディオディジタル信号プロセサ１５６はオーディオ処理タスクを実行する。表示コントローラ１６４は主メモリ１１２からの映像情報にアクセスし、表示装置１０２上での表示のためにその映像情報をビデオエンコーダ１２０に与える。オーディオインタフェース／ミキサ１６０はオーディオコーデック１２２をインタフェースし、また異なるソースからのオーディオ（たとえば、大容量記憶媒体アクセス装置１０６からのオーディオストリーム，オーディオＤＳＰ１５６の出力，およびオーディオコーデック１２２を通して受ける外部オーディオ入力）をミックスすることができる。プロセサインタフェース１５０は主プロセサ１１０およびグラフィクス／オーディオプロセサ１１４の間のデータおよび制御インタフェースを提供する。
【００３８】
メモリインタフェース１５２はグラフィクス／オーディオプロセサ１１４とメモリ１１２との間のデータおよび制御インタフェースを提供する。この実施例においては、主プロセサ１１０は、プロセサインタフェース１５０およびグラフィクス／オーディオプロセサ１１４の一部であるメモリインタフェース１５２を介して、主メモリ１１２にアクセスする。周辺コントローラ１６２はグラフィクス／オーディオプロセサ１１４と上で述べた種々の周辺機器との間のデータおよび制御インタフェースを提供する。オーディオメモリインタフェース１５８はオーディオメモリ１２６とのインタフェースを提供する。
【００３９】
グラフィクスパイプラインの例
図４は図３の３Ｄグラフィクスプロセサ１５４をより詳細に示すグラフィクス処理システムを示す。この３Ｄグラフィクスプロセサ１５４は、とりわけ、コマンドプロセサ２００および３Ｄグラフィクスパイプライン１８０を含む。主プロセサ１１０はデータストリーム（たとえばグラフィクスコマンドストリームおよび表示リスト）をコマンドプロセサ２００に通信する。主プロセサ１１０はメモリレイテンシを最小化するために２レベルキャッシュ１１２を有し、さらにまたグラフィクス／オーディオプロセサ１１４に向けられたキャッシュされていないデータストリームのための書込収集(write-gathering)バッファ１１１を有する。この書込収集バッファ１１は部分キャッシュラインを全キャッシュラインに集め、バスの最大使用時に、グラフィクス／オーディオプロセサ１１４からのデータを１つのキャッシュラインに送る。
【００４０】
コマンドプロセサ２００は主プロセサ１１０からの表示コマンドを受け、それらを解剖し、メモリコントローラ１５２を介して共用メモリ１１２からのそのコマンドを処理するに必要な付加的なデータを入手する。コマンドプロセサ２００は、２Ｄおよび／または３Ｄ処理およびレンダリングのために、頂点コマンドのストリームをグラフィクスパイプライン１８０に与える。グラフィクスパイプライン１８０はこれらのコマンドに基づいて映像を生成する。結果として得られた映像情報は、表示コントローラ／ビデオインタフェースユニット１６４によるアクセスのために主メモリ１２０に転送され得て、この映像情報は表示装置１５６上にパイプライン１８０のフレームバッファ出力を表示する。
【００４１】
図５はグラフィクスプロセサ１５４を用いて実行される処理を図解的に示すブロック論理フロー図である。主プロセサ１０は、グラフィクスコマンドストリーム２１０，表示リスト２１２および頂点アレイ２１４を主メモリ１１２にストアし、ポインタをバスインタフェース１５０を介してコマンドプロセサ２００に送る。主プロセサ１１０は主メモリ１１０内に割り付けられた１つ以上のグラフィクスＦＩＦＯバッファ２１０にグラフィクスコマンドをストアする。このコマンドプロセサ２００は、
・同期／フロー制御および負荷バランスのためにグラフィクスコマンドを受けかつバッファするオンチップＦＩＦＯメモリバッファ２１６を介して主メモリ１１２からのコマンドストリーム，
・オンチップコールＦＩＦＯメモリバッファ２１８を介して主メモリ１１２からの表示リスト２１２，および
・コマンドストリームからおよび／または主メモリ１１２の頂点アレイ２１４からの頂点アトリビュートを頂点キャッシュ２２０を介して取り込む。
【００４２】
コマンドプロセサ２００はコマンド処理動作２００ａを実行し、そのコマンド処理動作２００ａはアトリビュート形式を浮動小数点フォーマットに変換し、結果的に得られた完全頂点ポリゴンデータをレンダリング／ラスタライゼーションのためにグラフィクスパイプライン１８０に与える。プログラマブルメモリ調停回路１３０（グラフィクスメモリ要求調停回路：図４）は、グラフィクスパイプライン１８０，コマンドプロセサ２００および表示コントローラ／ビデオインタフェースユニット１６４の間での共用主メモリ１１２へのアクセスを調停する。
【００４３】
図４は、グラフィクスパイプライン１８０が
・変換ユニット３００，
・セットアップ／ラスタライザ４００，
・テクスチャユニット５００，
・テクスチャ環境ユニット６００，および
・ピクセルエンジン７００を含むことを示す。
【００４４】
変換ユニット３００は多様な２Ｄおよび３Ｄ変換および他の動作３００ａ（図５）を実行する。変換ユニット３００は変換処理３００ａに用いられるマトリクスをストアするための１つ以上のマトリクスメモリ３００ｂを含む。変換ユニット３００は、入来する頂点毎のジオメトリをオブジェクト空間からスクリーン空間へ変換し、そして入来するテクスチャ座標を変換しかつ投影テクスチャ座標（３００ｃ）を計算する。変換ユニット３００はまたポリゴンクリッピング／カリング(clipping/culling)３００ｄを実行する。変換ユニット３００ｂによってまた達成される照明処理３００ｅが、この実施例では８つまでの独立した照明について、頂点毎に照明計算を行う。変換ユニット３００は、エンボス(embossed)タイプのバンプマッピング効果およびポリゴンクリッピング／カリング動作（３００ｄ）のために、テクスチャ座標を発生する（３００ｃ）。
【００４５】
セットアップ／ラスタライザ４００はセットアップユニットを含み、このセットアップユニットは、変換ユニット３００からの頂点データを受け、三角形セットアップ情報を、エッジラスタライゼーション，テクスチャ座標ラスタライゼーションおよびカラーラスタライゼーションを実行する１つ以上のラスタライザユニット（４００ｂ）に送る。
【００４６】
テクスチャユニット５００は、オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよく、たとえば、
・主メモリ１１２からのテクスチャ５０４の検索、
・たとえばマルチテクスチャ処理，ポストキャッシュテクスチャ伸長，テクスチャフィルタリング，エンボシング，投影テクスチャの使用を通しての陰影付け，およびアルファトランスパーレンシおよびデプスを用いるＢＬＩＴを含むテクスチャ処理（５００ａ）、
・バンプマッピング，偽(pseudo)テクスチャおよびテクスチャタイル(tiling)効果（５００ｂ）のためのテクスチャ座標置換を計算するバンプマップ処理、および
・間接テクスチャ処理（５００ｃ）を含むテクスチャリングに関連する種々のタスクを実行する。
【００４７】
グラフィクスパイプライン１８０は、種々の直接および間接テクスチャリングの特徴の実現を容易にする多目的テクスチャリングパイプラインアーキテクチャを含む。図５に示すように、このテクスチャリングパイプラインは、基本的に
・テクスチャデータルックアップ検索を行うためのテクスチャユニット５００ａ
・テクスチャ座標／テクスチャデータ処理のための間接テクスチャ／バンプユニット５００ｂ／５００ｃ
・テクスチャルックアップデータフィードバック経路５００ｄ
・ステージ化したカラーデータおよびアルファデータ（透明データ）のブレンドのためのテクスチャ環境ユニット６００を含む。
【００４８】
ユニット５００ａ，５００ｂおよび５００ｃの再使用は、たとえばマルチテクスチャリングを含む多様な興味ある効果を提供するように使用される。さらに、この発明は、これらのコンポーネントの再使用／再循環を通して、間接テクスチャリングをサポートする。ハードウェアによって実現する実施例において、テクスチャアドレス座標／バンプ処理ブロック５００ｂおよび間接テクスチャデータ処理ブロック５００ｃは、単一のテクスチャ座標／データ処理ユニットの一部であり、テクスチャリングパイプラインは、テクスチャユニット５００ａから検索したテクスチャ間接ルックアップデータがデータフィードバック接続５００ｄを介して、テクスチャアドレス座標／バンププロセサ５００ｂ／５００ｃへ戻されるように構成される。このテクスチャ座標／データ処理ユニットは間接テクスチャルックアップから検索したテクスチャデータを、他の（標準／非間接）テクスチャルックアップのためにテクスチャ座標に次に加えられるオフセットに変換する。
【００４９】
上で述べたフィードバック経路配置を用いることによって、検索したテクスチャデータが、新／修正テクスチャルックアップ座標を得るためのさらなる処理／計算のためにテクスチャ処理パイプラインへ効率的に「再循環されて」戻され得る。この再循環／リサイクルテクスチャルックアップデータ配置によって、増強された多様な間接テクスチャアプリケーションを提供する間接テクスチャマッピング／処理動作を効率的かつフレキシブルにする。間接テクスチャマッピング／処理の種々のアプリケーションのいくつかは、たとえば
・テクスチャラッピング
・メタテクスチャ
・テクスチャタイルマップ
・擬似３Ｄテクスチャ
・環境マップ化されたバンプマッピングを提供することができる。
【００５０】
テクスチャユニット５００はテクスチャ環境処理（６００ａ）のためにフィルタされたテクスチャ値をテクスチャ環境ユニット６００に出力する。テクスチャ環境ユニット６００は、ポリゴンおよびテクスチャカラー／アルファ／デプスをブレンドし、また逆レンジベース(reverse range based)のフォグ効果を達成するために、テクスチャフォグ処理（６００ｂ）を実行する。テクスチャ環境ユニット６００はたとえばカラー／アルファ変調，エンボシング，詳細テクスチャ，テクスチャスワッピング，クランピングおよびデプスブレンディングに基づく多様な他の環境関連機能を実行する多段階を提供する。
【００５１】
ピクセルエンジン７００はデプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を実行する。この実施例では、ピクセルエンジン７００はデータを埋め込み（オンチップ）フレームバッファメモリ７０２にストアする。グラフィクスパイプライン１８０は、フレームバッファおよび／またはテクスチャ情報をローカルにストアするために１つ以上の埋め込みＤＲＡＭメモリ７０２を含む。ｚ比較７００ａは、現在有効なレンダリングモードに依存して、グラフィクスパイプライン１８０におけるより早い段階で実行される（たとえば、ｚ比較は、もしアルファブレンディングが要求されていないならば早くに実行され得る）。このピクセルエンジン７００は表示コントローラ／ビデオインタフェースユニット１６４による主メモリ１１２へのアクセスのために、オンチップフレームバッファ７０２を周期的に書き込むコピー動作７００ｃを含む。このコピー動作７００ｃはまた動的テクスチャ合成効果のために、埋め込みフレームバッファ７０２の内容を主メモリ１１２中のテクスチャにコピーするために使用され得る。アンチエイリアシング(anti-aliasing)および他のフィルタリングがコピー動作中に実行され得る。最終的に主メモリ１１２にストアされるグラフィクスパイプライン１８０のフレームバッファ出力は、表示コントローラ／ビデオインタフェースユニット１６４によってフレーム毎に読み出される。表示コントローラ／ビデオインタフェース１６４は表示装置５６上での表示のためにディジタルＲＧＢピクセル値を与える。
実施例の間接テクスチャリング−論理的全体図
図６はシステム５０によってサポートされる間接テクスチャリングの論理的全体図を示す。この図６に図示されたような論理的全体図によれば、ラスタライザ６０００がＮ組の間接テクスチャアドレス（座標）ADDR_A0ないしADDR_A(N-1)、およびＭ組の直接テクスチャアドレス（座標）ADDR_B0ないしADDR_B(M-1)を発生する。このＮ組の間接テクスチャ座標ADDR_A0ないしADDR_A(N-1)は、Ｎの対応する論理的テクスチャルックアップユニット６００２，６００４，６００６（A0ないしA(N-1)）へ送られる。各論理的テクスチャルックアップユニットは、１つの実施例では、同じ物理的なテクスチャルックアップユニットをＮ回再使用することによって設けられるが、これは、それの各々が独特のかつ異なるテクスチャマップであるテクスチャマップからの対応するテクセル値をルックアップ（検索）するために受信した間接テクスチャ座標を使用する。これらのルックアップ動作によって、Ｎ組の間接テクスチャルックアップ値DATA_A0ないしDATA_A(N-1)が得られ、そのルックアップ値はテクスチャアドレスプロセサ６００８に与えられる。テクスチャアドレスプロセサ６００８はまた、Ｍ組の直接テクスチャ座標入力ADDR_A0ないしADDR_A(N-1)を受信する。
【００５２】
テクスチャアドレスプロセサ６００８は、間接テクスチャルックアップデータおよび直接テクスチャ座標の所定の関数に基づいて、新／修正直接テクスチャアドレス（座標）ADDR_C0ないしADDR_C(K-1)を計算する。このＫ組の計算した直接テクスチャ座標（アドレス）ADDR_C0ないしADDR_C(K-1)の各々は、対応する論理的テクスチャルックアップユニットＣ０（６０１０）およびＣ１（６０１２）ないしＣ（Ｋ−１）（６０１４）へ送られる。１つの実施例上では、これらの論理的テクスチャユニットＣ０−Ｃ（Ｋ−１）は、論理的テクスチャユニットＡ０−Ａ（Ｎ−１）を提供するために使用される同じ物理的テクスチャマッパを再使用することによって提供され得る。各テクスチャルックアップユニットＣ０ないしＣ（Ｋ−１）は、対応するテクスチャマップ内のテクセル値をルックアップするために、受信した座標を使用する。
【００５３】
Ｋ組のテクスチャルックアップ値DATA_C0ないしDATA_C(K-1)は、そのテクスチャルックアップの結果として得られ、次いで、ピクセルシェーダ(shader)６０１６へ与えられる。ピクセルシェーダ６０１６は、０，１またはそれ以上の組のラスタ化（グローシェーディング：Gouroud shading)カラーと一緒に、Ｋ組の受信テクスチャ値を受信する。ピクセルシェーダ６０１６は、次いで、たとえばビデオディスプレイフレームバッファへ送られ得るカラー出力値を生成するために、所定のシェーディング関数に従って、その受信したテクスチャ値DATA_C0ないしDATA_C(K-1)を使用する。
【００５４】
理解を助けるために、図７および図８が、それぞれ、標準（非間接）テクスチャルックアップ動作および間接テクスチャルックアップ動作の簡単な例を図解する。図７に示すように、標準テクスチャマッピングルックアップ動作９５０は、少なくとも１組の標準（非間接）テクスチャ座標とテクスチャマップＩＤとを入力として特定する必要がある。この例についていえば、テクスチャカラーデータが、（適宜のテクスチャマップから）テクスチャユニット５００ａ（図５）によって検索され、次いで、カラーブレンドのためにテクスチャ環境ユニット（ＴＥＶ）６００ａに与えられる。
【００５５】
間接テクスチャルックアップ動作の一例においては、図８に示すように、テクスチャマッピングは多数のステージ／サイクルにおいて生じる。第１ステージ中、１組の間接テクスチャ座標が間接テクスチャマッピング動作９５２に対応するテクスチャマップＩＤとともに、入力９０１として与えられる。次のもしくは後続のステージにおいては、間接テクスチャルックアップ９５２からの検索データが、入力テクスチャマップＩＤ９０７を使用する他の（標準）テクスチャルックアップ９５０のための１組の新／修正座標９０５を生成するために、１組の標準（非間接）テクスチャ座標９０３に関連して使用される。各ステージ中、種々のプログラマブルな動作９０９がその検索データおよび座標上で実行され、新／修正ルックアップ座標を得る。１つの実施例においては、図８の例におけるブロック９５２および９５０が、ステージ化されあるいは再循環の態様で再使用もしくはリサイクルされる同じハードウェアによって行われる。
直接および間接テクスチャアドレシングの例
図９は、直接および間接テクスチャリングを実現するためのかつインタリーブされた態様での物理的なテクスチャマッピングユニットの再使用を提供する実施例の基本的な物理的構成を示す。ラスタライザ７０００は各ピクセルに関連するすべての直接および間接テクスチャアドレス座標セットを順次発生する。この実施例において、ラスタライザ７０００は、ピクセルタイル（すなわち、２×２または他のピクセル領域）における４つのピクセルのための座標セットを並列に与える。しかしながら、他の実施例も可能である。図示した実施例において、ラスタライザ７０００は、まず、ピクセル毎のすべての直接テクスチャ座標セット（たとえばADDR_B0ないしADDR_B(M-1)）が後続するピクセル毎の間接テクスチャ座標（たとえば、DATA_A0ないしDATA_A(N-1)）を発生する。各ピクセルは、実行されているテクスチャリング動作に依存して異なる量の直接および間接座標データを有する。たとえば、或るピクセルは間接テクスチャアドレシングを必要とせず関連する間接座標データを持たないが、他のピクセルは１つまたはそれ以上の間接テクスチャアドレシング動作を必要とし、１つまたはそれ以上の対応する組の関連する直接および間接座標を有する。
【００５６】
グラフィクスパイプライン１８０のテクスチャ処理回路の実施例において、テクスチャ処理は同じテクスチャアドレスプロセサおよび同じテクスチャ検索ユニットを利用して達成される。テクスチャ処理ハードウェアの効率的な使用を最大にしかつパイプラインを通しての全体のデータ処理の流れにおける細分化を回避するために、ローカルな直接および間接テクスチャアドレス（座標）およびテクスチャデータのルックアップ（検索）が実質的に連続してかつインタリーブされた態様で実行される。ピクセル毎にラスタライザ７０００によって発生された間接テクスチャ座標セットが、スイッチＳ０（７００２）およびＳ１（７０１０）を介して、１つのテクスチャ検索ユニット７０１２へ直接送られ、他方、非間接（論理的直接）座標セットは直接座標ＦＩＦＯ（ｄＦＩＦＯ）７００６に置かれる。
【００５７】
グラフィクスパイプラインの実施例において、テクスチャ検索ユニット７００８はクロック毎に少なくとも１つのテクスチャ上で動作し、１つ以上のテクスチャのために状態情報およびキャッシュ記憶を維持することによって、多数のテクスチャリング作業(context:：コンテキスト)を同時に取り扱うことができる。検索した間接テクスチャデータDATA_A0ないしDATA_A(N-1)はフィードバック経路７０１８を介して、スイッチＳ２から間接データＦＩＦＯ（ｉＦＩＦＯ）７００４へ送られ、そこで、必要になるまで、その検索した間接テクスチャデータがストアされる。直接テクスチャ座標はスイッチＳ０を介して直接座標ＦＩＦＯ（ｄＦＩＦＯ）７００６へ送られ、それらは必要になるまでそこにストアされる。図６に関連して説明した上述の実施例において、間接データＦＩＦＯ７００４はＮ組の間接テクスチャデータを受信し、直接座標データＦＩＦＯ７００６はＭ組の直接テクスチャ座標を受信する。テクスチャアドレスプロセサ７００８は次いで、入来直接テクスチャ座標および検索間接テクスチャデータの所定の関数に基づいて新たなＫ組のテクスチャ座標を計算する。論理的直接および間接座標の処理がインタリーブされるので、連続する間接テクスチャ動作間に介在する１つ以上の直接テクスチャ動作があるときには常に、直接座標の処理は対応する間接データの検索に遅れる。したがって、バッファ（たとえばＦＩＦＯ）７００４および７００６は、検索した間接テクスチャルックアップデータおよび適宜の対応する組の直接座標を、それらが同時にテクスチャアドレスプロセサ７００８へ与えられる前に、同期化し、再整列する。
【００５８】
Ｋ組の計算したテクスチャ座標ADDR_C0ないしADDR_C(K-1)はＫクロックに亘って順次出力される。スイッチＳ１（７０１０）は、テクスチャユニット７０１２へ与えるために、計算したテクスチャ座標データ（のセット）を入来間接テクスチャ座標ストリームへインタリーブする。このスイッチＳ１は、入来する間接テクスチャ座標ストリーム中における未使用のもしくは遊びサイクル（「バブル」）を探し、これらのサイクル中において計算したテクスチャ座標データ（のセット）を挿入することによってインタリーブする。スイッチＳ２（７０１４）は結果的に得られたテクスチャルックアップデータDATA_C0ないしDATA_C(K-1)およびラスタ化カラーをピクセルシェーダ７０１６へ発送する。ピクセルシェーダ（ＴＥＶ）７０１６は所定のシェーディング関数を与え、かつたとえばビデオディスプレイフレームバッファへ次に送られる１組のカラー値を出力する。
【００５９】
実施例のハードウェアにおいて、テクスチャアドレスプロセサの動作は次の２つの典型的な動作的な制約を利用することによって簡単になる。
【００６０】
(1) 計算したテクスチャ座標の組の数すなわちＫはラスタ化した直接テクスチャ座標の組の数すなわちＭと等しい。
【００６１】
(2) 計算したテクスチャ座標の組の値すなわちADDR_C[i]は、直接テクスチャ座標の組ADDR_B[i]，少なくとも１組の間接テクスチャデータDATA_A[j]および（任意的に）先の処理ステージからの計算した結果ADDR_C[i-1]の関数ｆ（ａ，ｂ，ｃ）である。この動作の関係は次の数１によって表される。
【００６２】
［数１］
ADDR_C[i]＝ｆ（ADDR_B[i]，DATA_A[j]，ADDR_C[i-1]）
図１０は上述の動作的な関係に従ったテクスチャアドレス（座標／データ）プロセサ７００８の実施例の論理図を示す。バッファ７００９は先のサイクルからの計算したテクスチャ座標の結果をストアし、それを必要に応じて与える。注意深くＦＩＦＯをアドレスすることによって、正しい間接テクスチャDATA_A の値が適当な処理サイクル／ステージで利用可能である。
テクスチャ処理パイプラインにおけるインタリーブされた処理の例
図１１−図２１は図９の構成の動的なインタリーブ動作を図解する。これらの図は、図９の循環テクスチャリングパイプラインの上述の実施例においてインタリーブされた直接および間接テクスチャ処理の結果としての連続的な処理ステージでのピクセル直接座標データおよびピクセル間接テクスチャデータの相対的な経過の一例を図解する一連のブロック図を示す。この図示した例において、最初のピクセルＰＸ０が間接テクスチャリング動作を要求する。図１１に示すように、このピクセルＰＸ０に関連する１組の間接テクスチャ座標（PX0 IND）および対応の組の直接テクスチャ座標（PX0 DIR）がラスタライザ４００によってスイッチＳ０でちょうどテクスチャリングパイプラインに入るように与えられる。
【００６３】
図１２において、ピクセルＰＸ０のための間接座標PX0 IND は、スイッチＳ０およびＳ１を介して、テクスチャユニット５００ａに直接与えられる。ピクセルＰＸ０のための直接座標PX0 DIR は、ピクセルＰＸ０のための直接座標に後続し、間接座標が処理されている間の一時的な記憶のために、スイッチＳ０を介して、直接ＦＩＦＯ（ｄＦＩＦＯ）７００４に与えられる。テクスチャユニット７０１２はピクセルＰＸ０のための間接座標PX0 IND に基づいて間接テクスチャルックアップを実行し、計算したデータ（図１３参照）を与えるとともに、次の図１４に示すように、検索した間接テクスチャルックアップデータPX0 Dataを、たとえばスイッチＳ２を介して、テクスチャリングパイプライン入力へ戻し与える（再循環させる）。図１４に示すように、再循環された間接テクスチャルックアップデータPX0 Dataは間接ＦＩＦＯ（ｉＦＩＦＯ）に与えられ、このルックアップデータは関連する直接テクスチャ座標のセットPX0 DIR と効果的に対にされる（バッファ７００４および７００６の間の同期化によって）。間接テクスチャルックアップデータPX0 Dataおよび直接テクスチャ座標のセットPX0 DIR は、ピクセルＰＸ０についての新／修正テクスチャアドレス座標のセットを計算するために、テクスチャアドレスプロセサによって一緒に処理されるように用意される。テクスチャリングパイプラインはバッファ７００４および７００６からのこの１組の値を、テクスチャ座標（図１５参照）を計算することによって消費し、このテクスチャ座標はテクスチャをマッピングしかつシェーダ（図１６参照）へカラー／アルファテクセルデータを与える。
【００６４】
図１４に戻って、ラスタライザが、後続するピクセルをテクスチャリングするために、スイッチＳ０でのテクスチャパイプライン入力にテクスチャ座標のセットを与え続けるものと仮定する。この例において、ピクセルＰＸ０に後続する一連の後続ピクセルたとえばＰＸ０ないしＰＸ４９は直接テクスチャリング動作だけを使用してテクスチャリングされる。ラスタライザは、ピクセル毎に、適宜の直接テクスチャ座標のセットPX1 DIR ないしPX49 DIRを与え、それらは図１５に示すような直接座標ＦＩＦＯ（ｄＦＩＦＯ）にスイッチＳ０を介して向けられる。テクスチャアドレスプロセサがピクセルＰＸ０のための新／修正テクスチャアドレス座標を計算し終えると、そのテクスチャアドレスプロセサは直接テクスチャ座標のセットPX1 DIR （図１６を参照）を受け入れる。
【００６５】
図１６によってまた示されるように、ラスタライザが、間接テクスチャリング動作を用いてテクスチャリングされるべき、ピクセルＰＸ４９に続くピクセルＰＸ５０を次に与えるものと仮定する。図１７によって図解されるように、スイッチＳ０は、ピクセルＰＸ５０のための入来間接テクスチャ座標のセットPX50 INDをテクスチャ検索ユニット７０１２へ直接与える。間接テクスチャ座標に優先権を与えることは、一般に、間接テクスチャマッピングから結果的に得られた間接データが、それが必要なときまでにバッファ７００４中に存在する（したがってパイプラインが動かなくなったりサイクルの浪費を防止する）ことである。しかしながら、この実施例においては、レンダリングシーケンスにおける後のピクセル（たとえばＰＸ５０）のための間接テクスチャ座標は、そのシーケンス中においてそれより早いピクセル（たとえばＰＸ２）を検索ユニットが処理する前に、テクスチャ検索ユニット７０１２によって処理されることに留意されたい。この実施例のテクスチャ処理パイプラインによって提示されるこのような動的インタリービングは効率の面から見て有利である。
【００６６】
図１７に示すように、ピクセルＰＸ５０についての入来直接テクスチャ座標のセットPX50 DIRがスイッチＳ０を介してバッファリングのために直接座標ＦＩＦＯ（ｄＦＩＦＯ）に与えられる（図１７にまた示すように、直接座標のセットPX1 DIR に対応するピクセルＰＸ１のためのテクスチャカラーPX1 TEX Color がこの時点においてテクスチャ検索ユニットによってテクスチャルックアップから出力され、スイッチＳ２を介してピクセルシェーダに向けられる）。
【００６７】
次に、図１８に示すように、間接座標のセットPX50 INDに基づいてテクスチャ検索ユニットがテクスチャルックアップを行った後、テクスチャ検索ユニットによって検索された間接テクスチャルックアップデータPX50 DataがスイッチＳ２を介して、間接テクスチャデータＦＩＦＯ（ｉＦＩＦＯ）へ再循環される。図１８はまた、ｄＦＩＦＯからのストリーム中の次の直接座標の組PX2 DIR がテクスチャアドレスプロセサによって処理されかつスイッチＳ１を介してテクスチャ検索ユニットへ与えられることを示す。
【００６８】
図１９は、テクスチャ検索ユニットから出力されかつスイッチＳ２を介してピクセルシェーダへ向けられている直接座標のセットPX2 DIR に対応するピクセルＰＸ２のためのテクスチャカラーPX2 TEX Color を示す。この同じ処理ステージで、バッファｄＦＩＦＯからの次の直接テクスチャ座標のセットPX3 DIR がテクスチャアドレスプロセサによって処理されかつスイッチＳ１を介してテクスチャ検索ユニットへ与えられ、間接テクスチャルックアップデータPX50 Dataが対応のＰＸ５０の直接座標のバッファ７００６を通しての伝搬を待っているバッファｉＦＩＦＯにセーブされる。
【００６９】
図２０における例によって図解されるように、ｄＦＩＦＯにおける直接座標ストリームPX5 DIR ないしPX49 DIRは、次いで、テクスチャアドレスユニットによって処理されかつスイッチＳ１を介してテクスチャ検索ユニット７０１２に与えられる。そのストリーム中の直接座標のセットPX5 DIR ないしPX49 DIRに対応する検索テクスチャカラーの各々は、次いで、スイッチＳ２を介してピクセルシェーダへ与えられる。間接テクスチャルックアップデータPX50 Data（これは、ｄＦＩＦＯ中におけるピクセルＰＸ５０のための対応する直接座標PX50 DIRと一致がとれるまでｉＦＩＦＯ７００４中に保持される）は、すべての直接座標のセットPX5 DIR ないしPX49 DIRの挿入がすべて処理されたとき、最終的に図２１に示すように開放される準備が整う。ｉＦＩＦＯにストアされた間接テクスチャデータPX50 Data は、次いで、それに対応する直接座標の組PX50 DIRと対にされ得て、ピクセルＰＸ５０のための新／修正テクスチャ座標の組を計算するためにテクスチャアドレスプロセサへ与えられ得る。
さらに詳細な例
図２２は実施例についての間接テクスチャマッピングを行うために使用される基本的な処理ステップを示すフロー図である。図２２の大部分のステップは、一般的な間接テクスチャリングＡＰＩ関数８０１によって設定され、この関数８０１はテクスチャユニット５００およびテクスチャ環境ユニット６００による間接テクスチャを処理するためのパラメータを設定する。
【００７０】
システム５０は、まず、間接テクスチャとしての使用のためにテクスチャイメージ／データをテクスチャメモリ５０２にストアする（ブロック８００）。１つまたはそれ以上のＡＰＩコマンド関数（ブロック８０２−８１０）に基づいて、コマンドプロセサ２００が、次いで、特定の組の間接テクスチャ座標をテクスチャ検索ユニット５００ａ（図５参照）へ与え、このユニット５００ａはテクスチャメモリ５０４にアクセスし、間接テクスチャルックアップデータ（図８）を検索する（ブロック９５２）。この例示した実施例において、１つまたはそれ以上のＡＰＩ間接テクスチャ関数８０１によって、グラフィクスアプリケーションがテクスチャマップとテクスチャ座標との間の関係を設定できかつ間接および直接テクスチャ参照動作を行うときにどの組のテクスチャマップと座標とが用いられるべきかを特定する。たとえば、基本的な間接テクスチャリング動作においては、１つまたはそれ以上の組の間接テクスチャ座標が特定され（ブロック８０２）、１つまたはそれ以上のテクスチャマップが認識され（ブロック８０４）、新／修正テクスチャ座標を計算するためのパラメータおよび処理順序ならびに間接テクスチャ参照の数が特定され（ブロック８０６）、１つまたはそれ以上のテクスチャマップが間接テクスチャとして認識され（ブロック８０８）、そして１組の間接テクスチャ座標が間接テクスチャマップに関連付けられる（ブロック８１０）。
【００７１】
間接テクスチャルックアップ動作から検索されたデータは、さらなる処理のために、フィードバック接続５００ｄを介して、同じテクスチャアドレス（座標）バンプ／処理回路５００ｂ／５００ｃに「再循環して」戻される。テクスチャバンプ／処理回路５００ｂ／５００ｃは、次いで、現在の標準（非間接）テクスチャ座標および／または予め規定されたテクスチャスケール，バイアスおよび回転データに基づいて新たなテクスチャ座標を計算する際の座標オフセット因子として、その検索した間接テクスチャルックアップデータを使用する（ブロック８１２）。この新／修正座標は、次いで、ポリゴンへのテクスチャマッピングのための標準直接（非間接）座標として用いられる（ブロック８１４；図８ブロック９５０）。あるいは、これらの新／修正座標はなおも別のテクスチャマッピング動作におけるテクスチャマッピングハードウェアのさらなる再循環を介しての付加的な／後続の座標計算のために再度使用され得る。この方法において、多数の間接レベルがステージ化され、１つのテクスチャ座標バンプ／処理回路５００ｂ／５００ｃおよび１つのテクスチャ検索ユニット５００ａを用いて処理される。最後に、検索されたテクスチャルックアップデータは、たとえばステージ化されたカラーブレンドのために他のテクスチャとともに、テクスチャ環境ユニット６００へ与えられる。
テクスチャ動作とシェーダ動作との協働の例
システム５０の実施例において、上で述べた間接および直接テクスチャリング動作がテクスチャ環境ユニット６００内において循環シェーダの対応するステージとともに協働する。同時係属中の「グラフィクスシステムのための再循環シェーディングツリーブレンダ」を参照されたい。
【００７２】
図２３はシェーダステージと協働するために標準テクスチャマッピングを如何に設定するかの例を図解する機能図である。たとえばＡＰＩ関数によって特定されたテクスチャルックアップパラメータが標準（非間接）テクスチャ座標のセットに関連してストアされたテクスチャマップを認識する。テクスチャルックアップは、メモリにストアされたその認識されたテクスチャマップにアクセスするために、テクスチャ座標のセットを使用して行われる。検索したテクスチャルックアップデータは、次いで、カラーブレンドのために、ＴＥＶユニット６００に送られる。
【００７３】
この発明の実施例において、ＴＥＶユニット６００によって、個々の処理ステージ中においてポリゴンテクスチャリングおよびシェーディングを達成するために、プログラマブルなカラーデータのブレンド動作が可能である。これらのステージは適宜のＡＰＩコマンド関数によって予め規定される。実施例においては、１６までのＴＥＶ処理ステージが予め規定され得る。各ステージには処理順序ＩＤ（番号）が割り当てられ、その順序に従って処理される。この例においては、選択されたＴＥＶ処理ステージ９１０は、テクスチャ座標ＩＤ９１４および関連のテクスチャマップＩＤ９１６を特定する１組のテクスチャルックアップパラメータ９１２に関連付けられる。適宜のテクスチャが関連座標を用いてルックアップされ、検索されたテクスチャデータが対応するＴＥＶステージのブレンドのために与えられる。図９はこの実施例が８つまでのテクスチャおよび１６までのＴＥＶステージを提供することを示すが、別の実施例においては任意の数が使用できる。
【００７４】
テクスチャ座標／テクスチャマップの対のリストが、GXSetNumTev ステージのコマンドによって設定されるように多数の再循環ステージを使用するGXSetTevOrder コマンドによって特定された順序で、再循環テクスチャユニット５００およびテクスチャ環境ユニット６００によって処理される。図９に示す特別の例においては、ＡＰＩコマンドGX_TEXCOORDIDno.7によって指定された１組のテクスチャ座標が、GX_TEXMAP ID のＡＰＩコマンドによって指定されるテクスチャマップｎｏ．３を使用する直接テクスチャマッピングを実行するために使用される。この例における具体的なテクスチャルックアップの結果は、GXSetTevOrderのAPIコマンドによって指定されるようなＴＥＶステージ０における処理のために、テクスチャ環境ユニット６００へ送られる。この例においては、ｎｏ．２を指定した他の組のテクスチャ座標が、さらなるテクスチャマッピングステージ（たとえばステージｎｏ．３）におけるテクスチャマップｎｏ．４を用いるさらなるテクスチャマッピング処理において使用され、このテクスチャルックアップの結果がさらに、ＴＥＶ処理ステージｎｏ．３においてテクスチャ環境ユニット６００によって処理される。図２３は、第５番目のテクスチャルックアップステージにおいてＩＤ番号ｎｏ．３によって認識される１組のテクスチャ座標およびＩＤ番号ｎｏ．４によって認識されるテクスチャマップを用いる別の例のテクスチャルックアップステージｎｏ．５を示し、このテクスチャルックアップの結果はＴＥＶステージｎｏ．５によって処理される。同様に、ｎｏ．５のテクスチャ座標のセットはさらなるテクスチャマップｎｏ．６および第７番目のテクスチャルックアップおよび関連するＴＥＶ処理ステージをルックアップするために使用され、１組のテクスチャ座標ｎｏ．６は第９番目のテクスチャルックアップステージにおいてテクスチャマップｎｏ．７をルックアップするために使用され、このテクスチャルックアップの結果が第９番目のＴＥＶ処理ステージを使用して処理される。GXSetTevOrderのAPIコマンドが順番を特定し、そこでは、種々のテクスチャ座標／テクスチャマップのＩＤ対がテクスチャユニット５００およびテクスチャ環境ユニット６００によって処理される。図２３に示す具体的な順序および具体的なＩＤは単なる例示である。
【００７５】
図２４は循環シェーダステージと協働するために一連の標準および間接テクスチャ処理を如何に設定するかの例を図解する機能図である。この例において、選択されたＴＥＶ処理ステージは標準および間接テクスチャルックアップ動作の両方を特定する１組のテクスチャルックアップパラメータ９１１に関連付けられる。間接マッピングのための１組の間接ルックアップパラメータ９１３は間接テクスチャ座標ＩＤ９０４を対応するテクスチャマップＩＤ９１６に関連付ける。この場合、テクスチャ座標は「間接」座標として特定される。間接テクスチャルックアップが行われ、間接テクスチャルックアップの結果が、新／修正テクスチャ座標を得るために、標準テクスチャ座標と結合される。新／修正テクスチャ座標は、次いで、関連するテクスチャマップ９１６をアクセスするために使用され、結果的に得られたテクスチャルックアップデータが対応するＴＥＶステージのために与えられる。
【００７６】
図２４の例において、付加的なＡＰＩコマンドGXSetIndTexOrder，GXSetNumIndStages およびGXSetTevIndirectが間接テクスチャルックアップ動作を実施するために使用される。図示する具体的な例において、テクスチャ座標／テクスチャマップの対ｎｏ．０が間接テクスチャルックアップを実行するために使用され、その間接テクスチャルックアップの結果が演算器９０９（図８）によって、循環処理ステージ０において指定されたテクスチャマップｎｏ．３を使用して直接テクスチャルックアップを行うために、ｎｏ．７によって指定された１組のテクスチャ座標と結合される。同じようにして、テクスチャ座標／テクスチャマップの対ｎｏ．１が、演算器９０９が対応する直接テクスチャマップｎｏ．４上でのテクスチャマッピングを行うためにテクスチャ座標のセットｎｏ．２と結合させる検索データを作るために、間接テクスチャルックアップを行うために使用される。図２４に示す具体的な例において、テクスチャマップｎｏ．２を用いるさらなる間接テクスチャルックアップおよび１組のテクスチャ座標ｎｏ．４が間接テクスチャルックアップの結果を与え、その結果を、演算器９０９が、テクスチャ座標ｎｏ．３／テクスチャマップｎｏ．５の対を（ＴＥＶ処理ステージｎｏ．５において）および第７番目のＴＥＶ処理ステージにおいて、１組のテクスチャ座標ｎｏ．５／テクスチャマップｎｏ．６の対を使用する２つの連続する直接テクスチャルックアップのために使用する。図２４に示される特別なテクスチャ座標のＩＤ番号，テクスチャマップのＩＤ番号およびＴＥＶ処理ステージの番号は単なる例示である。
ＡＰＩ間接テクスチャ関数のコマンドの例
図２３−図２４に示すように、１つまたはそれ以上のグラフィクスＡＰＩ関数が、直接および間接テクスチャリング動作を設定しかつ開始させるために使用される。間接テクスチャ動作およびパラメータを設定するためのＡＰＩ関数の例は以下のように規定され得る。
GXSetIndTexOrder
この関数は間接ルックアップとともに使用されるテクスチャ座標およびテクスチャマップを特定するために使用される。
【００７７】
引数
ind_stage   影響を受けている間接ステージ
tex_coord   このステージのために使用されるテクスチャ座標。或るテクスチャ座標は間接および標準ステージによって同時に共用され得る。
tex_map   このステージのために使用されるテクスチャマップ。或るテクスチャマップは間接または標準テクスチャマップであり、両方のものではない。
【００７８】
さらに詳しくいえば、引数の例は次のようである。
u8  NumIndtex;  //間接テクスチャの数
GXIndTex StageID  IndexTesId[];   //影響を受けている間接テクスチャ
GXTexMapID  Tex_map[];  //このステージのために使用される間接テクスチャマップ（ＩＤ）
GXTexCoordID  Tex_coord[];  //各間接テクスチャマップ毎の関連するテクスチャ座標
上述の関数は特定のテクスチャマップおよびテクスチャ座標を間接テクスチャマップＩＤネームと関連付ける。それは、或る間接ルックアップとともに使用するために、テクスチャ座標およびテクスチャマップを特定する。１つの例示において、次のような別の引数が可能であるが、特定されたテクスチャマップは間接または直接テクスチャのいずれかとして用いられ、両方には用いられない。
【００７９】
使用例
void  GXSetIndTexOrder (GXIndTex StageID ind_stage, GXTexCoordID tex_coord, GXTexMapID tex_map）；
GXSetTevIndirect（GXSetIndirectTexture) 
これは、或る標準ＴＥＶステージのルックアップを修正するために間接ルックアップからの結果を如何に使用するかを制御するために使用される汎用関数である。
【００８０】
引数
tev_stage   影響を受けているＴＥＶステージ
ind_stage   このＴＥＶステージとともに使用する間接ステージの結果
format  間接オフセットおよび間接「バンプ」アルファを使用するために間接結果から何ビットを検索するかを示す
bias_sel   間接オフセットの各コンポーネントにバイアスを加えるかどうかを示す
matrix_sel   オフセットを乗算するための間接マトリクスおよびスケール値を示す
wrap_s   標準テクスチャ座標のＳ成分とともに使用するラッピングファクタを示す
wrap_t   標準テクスチャ座標のＴ成分とともに使用するラッピングファクタを示す
add_prev  先のＴＥＶステージからのテクスチャ座標結果が加えられるべきかどうかを示す
utc_lod   ミップマップ（mipmap）ＬＯＤ計算のために未修正テクスチャ座標(GX_TRUE) を用いるか修正テクスチャ座標(GX_FALSE)を用いるかを示す
alpha_sel   もしあれば、どのオフセット成分が間接「バンプ」アルファを供給するかを示す
より詳細にいうと、以下のような引数の例がある
GXTevStageID  TevStageId; //ＴＥＶカラー結合ステージのＩＤネーム
GXIndTexStageID   indStage; //このＴＥＶステージとともに用いられる間接テクスチャステージ
CXIndTexFormat  Fmt; // 間接テクスチャオフセットのフォーマット
GXIndTexBiasSel   Bias; //どのオフセット（Ｓ，Ｔ）がバイアスを受けるかを選択する
GXIndTexAlphaSel  AlphaSel; //間接テクスチャアルファ出力を選択する
GXIndMtxID  Matrix_Sel; // テクスチャオフセットマトリクスおよびスケールを選択する
GXIndTexWrap  WrapS; // 直接Ｓ座標のラップ値
GXIndTexWrap  WrapT; // 直接Ｔ座標のラップ値
GXBool  IndLOD; //詳細レベル（ＬＯＤ）のための修正テクスチャ座標の使用
GXBool  AddPrev; // 先のステージからの出力をテクスチャ座標に加える
上述の関数によって、特別のＴＥＶステージに関連する或る間接テクスチャを処理するための種々のパラメータのすべてを設定することができる。この関数は、間接テクスチャマップをＴＥＶカラー結合ステージに関連付け、検索した間接テクスチャルックアップデータ（カラー値）が如何にしてテクスチャ座標オフセット（すなわち、３，４，５または８ビットフォーマット）へ変換されるかを特定し、テクスチャオフセットマトリクスおよびテクスチャスケール値を選択し、テクスチャ座標ラップパラメータおよび計算した新／修正座標がミップマップテクスチャとともに詳細レベル（ＬＯＤ）のために使用されるべきかどうかを特定する。この関数によって、また、先のステージ中におけるテクスチャ処理ロジック５１２（下に示す）からの計算した出力を現在のステージにおけるテクスチャ座標に加えるかどうかを選択することができる。
【００８１】
使用例
void GXSetTevIndirect (GXTevStageID tev_stage, GXIndTexStageID  ind_stage, GXIndTexFormat format,GXIndTexBiasSel  bias_sel, GXIndTexMtxID  matrix_sel, GXIndTexWrap  wrap_s,GXIndTexWrap  wrap_t, GXBool add_prev, GXBool  utc_lod,GXIndTexAlphaSel alpha_sel) ;
GXSetIndTexMtx
この関数は３つの静的間接マトリクスの１つおよび関連するスケールファクタを設定させる。間接マトリクスおよびスケールは、標準ルックアップ中に使用させるようにオフセットを生成するために、間接ルックアップの結果を処理するために使用される。このマトリクスは、間接ルックアップカラーから検索され（かつ必要に応じてバイアスされた）［ＳＴＵ］オフセットによって乗算される。このマトリクスベクトル乗算において、マトリクスは左側であり、［ＳＴＵ］列のベクトルは右側である。
【００８２】
マトリクス値は、符号および１０小数ビット（２の補数）としてハードウェア中にストアされる。したがって、ストアされる最も小さい数は−１であり、最も大きい数は（１−１／１０２４）またはほぼ０．９９９である。＋１をストアすることはできないので、すべてのマトリクス値を２で割り（したがって、＋１が＋０．５になる）かつ補正のためにスケール値に１を加えることが考えられる。
【００８３】
より詳しくいうと、以下のような引数の例がある。
GXIndTexMtsID   MtxId;//テクスチャオフセットマトリクスネーム
F32   Offset Matrix[3][2];//テクスチャオフセットマトリクスのためのマトリクス要素
GXIndTexFormat  Fmt;//スケーリングのための指数値
上述の例のＡＰＩ関数は、ルックアップデータ処理ロジック（ｐｒｏｃ）５１２におけるマトリクスＭおよびスケール値を設定する。検索された間接テクスチャルックアップデータ（たとえばテクスチャ座標オフセットｓ，ｔ，ｕ）はオフセットマトリクス５２５（Ｍ）およびスケールファクタ５２６によって乗算される。このオフセットマトリクスは間接処理ロジック５１２（以下を参照）内において使用される３×２要素のマトリクス要素を特定するＡＰＩ関数パラメータである。好ましい実施例においては、マトリクス要素は（−１，１）の範囲内にある。スケール指数はスケールファクタを設定するために使用される２のべき数指数を特定するパラメータである。スケール指数の好ましい範囲は（−３２，３２）である。
【００８４】
使用例
void GXSetIndTexMtx(GXIndTexMtxID mtx_sel, f32 offset_mtx[2][3], s8 scale_exp)
GXSetIndTevOrder
上述の関数は標準非間接テクスチャマップおよびテクスチャ座標を間接テクスチャマップのＩＤネームに関連付ける。
GXSetTevStageID   stage 
GXSetTexCoordID   coord 
GXChannelID   color 
使用例
void GXSetIndTexOrder (GXIndTevStageID tev_stage, cood,GXTexCoordID cood,GXChannelID  color);
GXSetNumIndStages 
この関数はどれほど多くの間接ルックアップが起こるかを設定するために使用される。これらの間接ルックアップからの結果は、次いで、任意の番号の標準ＴＥＶステージのためにルックアップを変更するために使用される。
GXSetNumIndStages u8 stages 
上述の関数は間接テクスチャルックアップステージの番号を設定する。
【００８５】
使用例
void GXSetNumIndStages(u8 stages);
GXSetNumTevStages 
この関数は、連続する番号のＴＥＶステージをイネーブルする。出力ピクセルカラー（フォギングおよびブレンドの前の）が最終ステージからの結果である。最終のＴＥＶステージはレジスタにGX_TEVPREV を書き込まなければならない。GXSetTevColorOp およびGXSetTevAlphaOp を参照。少なくとも１つのＴＥＶステージがイネーブルされなければならない。もしＺテクスチャがイネーブルされると、そのＺテクスチャは最終ステージにおいてルックアップされなければならない。GXSetZTexture を参照。
【００８６】
ＴＥＶステージへのライティングカラー，テクスチャ座標およびテクスチャマップの関連がGXSetTevOrder を用いて設定される。利用可能なテクスチャ座標の数がGXSetNumTexGens を用いて設定される。利用可能なカラーチャネルの数がGXSetNumChans を用いて設定される。
【００８７】
GXInitがｎステージを１へ設定する。
【００８８】
引数
nStages アクティブなＴＥＶステージの数。最小値は１で最大値は１６である。さらに詳しくいうと
GXSetNumTevStages u8 stages 
上述の関数はＴＥＶカラーブレンドステージの数を設定する。この関数はテクスチャユニット５００およびテクスチャ環境ユニット６００によって行われている再循環の量に関連するパラメータおよびその再循環ステージが行われるシーケンスを設定する。
【００８９】
使用例
void GXSetNumTevStages(u8 nStages);
GXSetIndCoordTexScale 
この関数は、間接ステージと標準ＴＥＶステージとの間でテクスチャ座標を共用したいとき使用される。それによって、対応する標準マップより小さい間接マップとともに使用するためにテクスチャ座標をスケールダウンすることができる。
【００９０】
引数
ind_stage   影響を受けている間接ステージ
scale_s   Ｓ座標のためのスケールファクタ
scale_t   Ｔ座標のためのスケールファクタ
より詳細にいうと、引数の例は以下のようである。
GXIndTexMap ID  IndTexId;// 間接テクスチャネーム
GXIndTexScale   Scale S;//Ｓ座標のためのスケール値
GXIndTexScale   Scale T;//Ｔ座標のためのスケール値
上述の関数は間接テクスチャ座標をスケーリングするための値を設定する。テクスチャ座標は、投影分割の後かつ標準非間接テクスチャ座標への加算の前にスケーリングされる。
【００９１】
使用例
void GXSetIndTexCoordScale (GXIndTexStageID ind_stage,GXIndTexScale scale_s,GXIndTexScale scale_t); 
この関数は、１つのＴＥＶステージのために先のステージで計算されたものとして同じテクスチャ座標を使いたいときに使用される。このことは、GXSetTevIndBumpST についてと同じように、先のステージのテクスチャ座標が計算のために１ステージ以上必要とするときにのみ有用である。
【００９２】
引数の例
tev_stage   変更されているＴＥＶステージ
使用例
void GXSetTevIndRepeat(GXTevStageID tev_stage); 
GXSetTevIndBumpST 
この関数は環境マッピングされバンプマッピングされた間接ルックアップを設定する。この間接マップは（Ｓ，Ｔ）空間中におけるオフセットを特定する。この種のルックアップは計算のために３ＴＥＶステージを必要とする。最初の２つのＴＥＶステージはテクスチャルックアップをディスエーブルする。３番目のステージではルックアップが実際に行われる。追加的なルックアップのために計算されたテクスチャ座標を再使用するために後続のＴＥＶステージにおいてGXSetTevIndRepeat を使用することができる。表面ジオメトリは、各頂点において、ノーマル(normal) ／バイノーマル(binormal) ／タンジェント(tangents) を与えなければならない。
【００９３】
引数の例
tev_stage   影響を受けているＴＥＶステージ
ind_stage   このＴＥＶステージとともに使用する間接ステージの結果
matrix_sel   オフセットを乗算するための間接スケール値を示す
使用例
void GXSetTevIndBumpST(GXTevStageID tev_stage,GXIndTexStageID ind _stage,GXIndTexMtxID matrix_sel); 
GXSetTevIndBumpXYZ
この関数は環境マッピングされバンプマッピングされた間接ルックアップを設定する。この間接マップはオブジェクト（Ｘ，Ｙ，Ｚ）空間中におけるオフセットを特定する。この種のルックアップは計算のために１つだけのＴＥＶステージを要する。間接マトリクスはノーマル（法線）のためにオブジェクト空間から目の空間への変換をロードしなければならない。表面ジオメトリは各頂点での標準法線を与えるだけでよい。
【００９４】
引数の例
tev_stage   影響を受けているＴＥＶステージ
ind_stage   このＴＥＶステージとともに使用する間接ステージの結果
matrix_sel   オフセットを乗算するための間接マトリクスおよびスケール値を示す。
【００９５】
使用例
void GXSetTevIndBumpXYZ(GXTevStageID tev_stage,GXIndTexStageID ind_stage,GXIndTexMtxID matrix_sel); 
GXSetTevDirect
この関数は特定された標準ＴＥＶステージのためのすべての間接オフセットをオフするために使用される。
【００９６】
引数の例
tev_stage   変更されているＴＥＶステージ
使用例
void GXSetTevDirect(GXTevStageID tev_stage);
GXSetTevIndWarp 
この関数によって、間接マップが、標準ＴＥＶステージルックアップとともに使用されるテクスチャ座標をワープさせまたは歪めることができる。間接マップは８ビットのオフセットを持つ必要があり、それは符号化されあるいは符号化されていない。実際に「符号化されている」ことは「バイアスされている」ことを意味し、したがって、もし符号化オフセットがGX_TRUEであれば、間接マップからルックアップされた値から１２８が減算される。この間接結果は標準テクスチャ座標を修正しあるいは完全に置き換えることができる。間接オフセットを修正するために間接マトリクスおよびスケールを使用することができる。
【００９７】
引数
tev_stage   影響を受けているＴＥＶステージ
ind_stage   このＴＥＶステージとともに使用する間接ステージの結果
signed_offsets   ８ビットのオフセットが符号化／バイアス(GX_TRUE) または符号化されない(GX_FALSE)であるかを示す。
replace_mode  オフセットが標準テクスチャ座標を置換すべき(GX_TRUE) かまたは(GX_FALSE)へ加算されるべきかを示す。
matrix_sel  オフセットを乗算するための間接マトリクスおよびスケール値を示す。
【００９８】
使用例
void GXSetTevIndWarp (GXTevStageID tev_stage, GXIndTexStageID ind_ stage, GXBool signed_offsets, GXBool replace_mode, GXIndTexMtxID matrix_sel);
GXSetTevIndTile 
この関数は間接テクスチャを用いてテクスチャタイルを実現するために使用される。標準テクスチャマップはタイルの定義を特定するだけであることに注目されたい。ポリゴンに付与されるべきテクセルの実際の数は基本タイルサイズと間接マップのサイズとの関数である。適当なテクスチャ座標スケールを設定するために、GXSetTexCoordScaleManuallyをコールしなければならない。標準ＴＥＶステージのように間接ステージのために同じテクスチャ座標を使用するためには、GXSetIndTexScaleを使用することができる。
【００９９】
引数の例
tev_stage   影響を受けているＴＥＶステージ
ind_stage   このＴＥＶステージとともに用いるための間接ステージの結果
tilesize_s   Ｓ次元におけるタイルのサイズ
tilesize_t   Ｔ次元におけるタイルのサイズ
Tilespacing_s   Ｓ次元におけるタイルの空間
Tilespacing_t   Ｔ次元におけるタイルの空間
Format  使用する間接テクスチャフォーマットを示す
matrix_sel   オフセットにどの間接マトリクスおよびスケール値を乗算するかを示す
bias_sel   擬似３Ｄテクスチャのためのタイルスタック方向を示す
alpha_sel   もしあれば（擬似３Ｄテクスチャのための）間接「バンプ」アルファを供給するオフセット成分を示す
使用例
void GXSetTevIndTile (GXTevStageID tev_stage, GXIndTexStageID ind_stage, u16 tilesize_s, u16 tilesize_t, u16 tilespacing_s, u16 tilespacing_t,
GXIndTexFormat format, GXIndTexMtxID matrix_sel, GXIndTexBiasSel bias_sel, GXIndTexAlphaSel alpha_sel);
GXSetTevIndRepeat 
この関数は１つのＴＥＶステージのために、先のステージにおいて計算されたものとして同じテクスチャ座標を使用するときに使用される。これはテクスチャ座標が計算のために１つ以上の処理サイクル／ステージを必要とするときに有用である。
【０１００】
引数の例
Tev_stage   変更されているＴＥＶステージ
使用例
void GXSetTevIndRepeat(GXTevStageID tev_stage); 
GXSetAlphaCompare 
この関数は最後のアクティブなＴＥＶステージからのアルファ出力を使用するアルファ比較関数のためのパラメータを設定する。アクティブなＴＥＶステージの数はGXSetTevStagesを使うことによって特定される。出力アルファは、ソースおよび宛先（フレームバッファ）ピクセルが如何に結合されるかを制御するためにブレンド式（GXSetBlendModeを参照）において用いられ得る。
【０１０１】
アルファ比較動作は数２に従って行われる。
【０１０２】
［数２］
alpha_pass=(alpha_src(comp0)(ref0)(op)(alpha_src(comp)ref1)
ここで、alpha_src は最終のアクティブなＴＥＶステージからのアルファである。一例として、以下の式を実現できる。
【０１０３】
［数３］
alpha_pass=(alpha_src>ref0)AND(alpha_src<ref1)
または
［数４］
alpha_pass=(alpha_src>ref0)OR(alpha_src<ref1) 
Ｚ比較がテクスチャリングの前または後に生じる。Ｚ比較をテクスチャリングの前に行う場合には、ＺはＺテストのみに基づいて書き込まれる。もしＺテストおよびアルファテストが通過するならカラーが書き込まれる。
【０１０４】
Ｚ比較がテクスチャリングの後に行われるときには、Ｚテストおよびアルファテストが通過するならカラーおよびＺが書き込まれる。正しくＺバッファされる必要がある切り抜き形状（ビルボードツリーのような）を作るためにテクスチャを用いるときには、Ｚバッファリングはテクスチャリングの後にすべきである。
【０１０５】
引数の例
comp0   比較サブ関数０
ref0  サブ関数０のための基準値８ビット
op  サブ関数０とサブ関数１とを結合するための演算  受け入れられた値：GX_AOP_AND，GX_AOP_OR，GX_AOP_XOR，GX_AOP_XNOR
comp1   比較サブ関数１
ref1  サブ関数１のための基準値８ビット
使用例
void GXSetAlphaCompare (GXCompare comp0,u8 ref0, GXAlphaOp op, GXCompare comp1, u8 ref1);
ハードウェアの実施例
或る好ましい実施例では、テクスチャユニット５００およびテクスチャ環境ユニット６００はグラフィックチップ上のハードウェア中に実現され、上で述べたようにテクスチャマッピング動作の効率的な再循環を提供するように設計される。さらに詳細にいえば、テクスチャアドレス座標／バンプ処理ブロック５００ｂ／５００ｃはハードウェアにおいて実現され、テクスチャマッピングブロック５００ａおよびテクスチャ環境ブロック６００ａへの１組の適宜の入力を提供する。ブロック５００ａおよび６００ａを再循環させるために使用するシーケンスロジックに関連するブロック５００ｂおよび５００ｃは、ブロック５００ａおよび６００ａを効率的に再使用するために種々の再循環ステージに対して適宜のタイミングで一連の適宜の入力を提示する。或る場合には経路５００ｄを介してフィードバックループを作り、そこでは、ブロック５００ａの出力が修正されかつ後の順次の再循環処理ステージにおけるその入力へ再び与えられる。このことによって、好ましい実施例において同じハードウェア回路を何回も何回も再使用／再循環させることによって実現された個別のテクスチャ処理ステージの論理シーケンスが得られる。この結果的に得られる機能性によって、追加的なハードウェアの要求なしに、任意の所望数の論理的テクスチャマッピング処理ステージを提供する。種々のテクスチャ処理ステージの各々に追加的なハードウェアを設けることは速度性能を向上するが追加的なチップ不動産およびそれに関連する複雑さの犠牲を伴う。ここで開示した技術を用いることによって、任意数の論理的テクスチャマッピングステージが単一の組のテクスチャマッピングハードウェアを用いて提供され得る。もちろん、速度性能を改善する他の実現方法において、多数のテクスチャマッピングステージを図２３および図２４に示すような順次にではなく並列的に行うことができるように、テクスチャマッピングハードウェアを折り返すことは可能である。同じまたは異なるテクスチャマッピングハードウェアの多数の組を提供するそのような別の実施例においてさえ、ここで開示した再循環および間接テクスチャマッピング技術を付与することは、より一般的なハードウェアの機能性および柔軟性を、特別な進歩したテクスチャマッピング効果を達成するためにアプリケーションプログラマによって特定される特別の一連のおそらく複雑なテクスチャマッピング動作またはステージに拡張する際に有用である。
【０１０６】
図２５および図２６は、論理的直接および／または間接テクスチャマッピングルックアップのためにテクスチャユニット５００へ種々のパラメータを集めかつ提示するために使用される特別なハードウェアの一例を示す。図２５はテクスチャ座標／バンプ処理ハードウェア５００ｂ／５００ｃの実施例のハードウェアのブロック図を示し、図２６は図２５実施例における例示の処理および計算ロジックを示す。好ましい実施例において、図２５／図２６のハードウェアによって達成される特別の機能が、座標／バンプ処理ユニット５００ｂ／５００ｃ内のハードウェア制御ロジックレジスタ５０３へグラフィクスパイプラインを送る制御データによって制御される。グラフィクスパイプライン１８０中の各ユニット内で生じる論理的機能および計算動作は、グラフィクスパイプラインを通して分配されるレジスタデータパケット中のコマンドプロセサ２００によって与えられる制御コード（ビット）によって決定される。適宜の制御コード／値が、１つまたはそれ以上のクロックサイクルの間制御を入力するための各ユニット内の制御ロジックレジスタに置かれる。
【０１０７】
テクスチャ座標処理／バンプブロック５００ｂ／５００ｃの具体的な実施例の図２５の高位ブロック図を参照して、論理的直接および間接テクスチャ座標およびハードウェア制御レジスタデータは、ラスタライザ４００（図５参照）からグラフィクスパイプライン１８０のデータバスライン５０１（ｘｙｍ）をわたって、テクスチャ座標処理／バンプユニット５００ｂ／５００ｃへ送られる。パイプラインコマンドバス５０５（ｃｍｄ）上のグラフィクスパイプライングローバルコマンドデータは入来テクスチャ座標が「直接」または「間接」かを特定する。直接テクスチャ座標（すなわち、標準非間接テクスチャ座標）および間接テクスチャ座標はラスタライザから、パイプラインデータバスライン５０７（ｓｔ）を介して与えられ、グラフィクスパイプラインを通しての処理の細粒化を維持するように、実質的に連続的なインタリーブ態様において一緒に処理される。間接テクスチャルックアップデータはテクスチャユニット５００ａから検索され、データフィードバック経路５００ｄ（図５）に対応するテクスチャカラー／データバス５１８（ｃｏｌ）を介して、座標処理／バンプユニット５００ｂ／５００ｃへ「再循環されて」戻される。
【０１０８】
コマンドプロセサ２００から受信した制御レジスタデータは間接テクスチャリング動作を制御するためにレジスタ５０３にストアされる。ストアされた制御レジスタデータのいくつかが、たとえば、座標／ルックアップデータ処理ロジック５１２（ｐｒｏｃ）（たとえば、図２６におけるレジスタデータライン５２０によって示すように）において生じる種々の計算動作を選択しかつ制御するために利用される。コマンドデコーダおよび同期化回路ｓｙｎｃ０（５０２）はライン５０１（ｘｙｍ）上の入来データが１組の直接テクスチャ座標であるか間接テクスチャ座標であるかあるいは制御ロジックレジスタパケットであるかを判断する。入来直接座標はデータ同期化回路５１０（ｓｙｎｃ２）および処理ロジックユニット（ｐｒｏｃ）５１２によるさらなる処理のためにＦＩＦＯユニット５０６（ｄＦＩＦＯ）へ送られる。入来間接座標はテクスチャユニット５００ａ（図５）への通過のために出力データ同期化回路５０４（ｓｙｎｃ１）へ直接送られる。同期化回路ｓｙｎｃ０（５０２），ｓｙｎｃ１（５０４）およびｓｙｎｃ２（５１０）は、ラスタライザ（４００）からの間接および直接テクスチャ座標ならびにテクスチャユニットからの検索間接テクスチャルックアップデータのタイミングおよび取扱いを制御するためにデータルーティングおよび同期化を行う。実際上、同期化回路ｓｙｎｃ０（５０２），ｓｙｎｃ１（５０４）およびｓｙｎｃ２（５１０）は図９におけるスイッチＳ０，Ｓ１およびＳ２のそれぞれの機能を達成する。
【０１０９】
テクスチャユニット５００ａからテクスチャカラー／データフィードバックバス５１８（ｃｏｌ）を介して受信した入来「リサイクル」間接テクスチャルックアップデータはＦＩＦＯユニット５０８（ｉＦＩＦＯ）中に置かれる。直接座標は、ＦＩＦＯユニット５０６のｓｔ出力において、ＦＩＦＯユニット５０６（ｄＦＩＦＯ）のｃｏｌ出力５１９における入来間接テクスチャルックアップデータと整合される。同期化回路５１０（ｓｙｎｃ２）はさらなる座標データ整合を行い、レジスタ５０３中にストアされている制御ロジックコードに基づく間接テクスチャ処理動作のために１組の完全なオペランドを組み立てて処理ユニット５１２（ｐｒｏｃ）へ与える。これらのオペランドは、たとえば、テクスチャオフセットマトリクス要素のための乗算係数／定数や処理ユニット５１２（ｐｒｏｃ）内でテクスチャ座標計算を行うためのルックアップデータフォーマットパラメータを含む。座標データおよび検索間接テクスチャルックアップデータが処理ユニット５１２によって処理された後、結果的に得られたデータ（たとえば新／修正テクスチャ座標）は同期化回路５０４（ｓｙｎｃ１）へ送られ、そこで、そのデータは同期化回路５０２（ｓｙｎｃ０）からの間接テクスチャ座標のストリームとインタリーブされ、テクスチャ検索ユニット５００ａへ与えられる。
【０１１０】
間接テクスチャルックアップデータ／座標処理ユニット５１２（ｐｒｏｃ）中の処理および計算ロジックの図２６に示す例を参照して、受信された間接テクスチャルックアップデータは３つのデータ成分（ｓ，ｔおよびｕテクスチャオフセットと呼ばれる）を有するデータトリプレットの形式である。成分毎のデータビットの数は、間接テクスチャリング動作における具体的な間接テクスチャマップが用いられる態様および目的に一部依存する。間接テクスチャルックアップデータはまた、透明シェーディング／ブレンドのためにグラフィクスパイプライン中のどこかで用いられる「バンプアルファデータ」を含む。ｃｏｌバス５１９上の検索された間接テクスチャルックアップデータ（たとえば、ｓ，ｔおよびｕオフセットデータ）はまず、フォーマット選択ブロック５２１を通して送られ、このブロック５２１は検索した間接テクスチャルックアップデータが「バンプアルファ」データであるのか３，４，５または８ビットの多ビット２進データトリプレットとして処理されるべきかを選択する。このフォーマット選択ブロックはバイアスユニット５２３へオフセットデータトリプレットを与え、「バンプアルファ」データはグラフィクスパイプライン中のどこかで透明ブレンドの際に使用するためにバンプアルファ選択マルチプレクサ５３２へ送られる。
【０１１１】
この発明の好ましい実施例では、フォーマットユニットロジックはｃｏｌ入力バス５１９上の２４ビットデータトリプレットから８，５，４または３ビットの３つのテクスチャオフセットデータ成分を検索するとともに、ｘｙｍバス上の可能な出力のために５ビットのバンプアルファ選択値（ｂｓ，ｂｔおよびｂｕ）を検索する。バイパスマルチプレクサ５３２は、パイプラインｘｙｍバス上へ出力されるように１つのバンプアルファ値ｂｓ，ｂｔまたはｂｕの選択を許容するために設けられる。任意のバイアス値がバイアスユニット５２３によってデータトリプレットへ与えられる。たとえば、８ビットのデータトリプレット成分が選択されたとすると、−１２８のバイアスがバイアスユニット５２３によって与えられ符号付オフセットを許容する（８ビット以下のデータトリプレット成分が使用されるならば、たとえば、＋１のバイアスが与えられる）。
【０１１２】
マトリクス選択マルチプレクサ５２４によって、マトリクス乗算動作５２５を行うために、選択された直接座標または定数がロードされる。さらに、モジュロラップユニット５２７が、関連する標準間接テクスチャ座標上に随意的に座標ラップ動作を行うために設けられる。たとえば、ＡＰＩ関数を用いるとすると、０，１６，３２，６４，１２８または２５６のラップ値を特定する。
【０１１３】
マトリクス乗算動作５２５はマトリクス要素Ｍを用いてデータトリプレット上で行われる。たとえば、データトリプレットがマトリクス乗算動作５２５に関連する３要素ベクトルデータレジスタＶにロードされ、次いで、マトリクス要素Ｍ（図２３）によって乗算される。マトリクス乗算動作５２５は、たとえば、間接テクスチャカラーｃｏｌバス５１９を介して検索したｓ，ｔおよびｕテクスチャオフセットトリプレットの回転、スケーリングおよび再マッピングのために使用される。マトリクス要素Ｍの値は可変であり、選択したマトリクス構成を使用するテクスチャ処理サイクル／ステージ毎に動的に規定され得る。好ましい実施例においては、乗算マトリクスは、選択されたロジック制御レジスタデータ５２０から規定される要素を含む３定数マトリクスの１つから、もしくはパイプラインｓｔ座標データバス５２２を介して得られる現在の直接テクスチャ座標から検索された要素を有する２つの「可変」マトリクスの１つから選択されたプログラマブルな構成を有する３×２要素マトリクスである。適宜のＡＰＩ関数を用いることによって、３つの異なる静的マトリクスもしくは２つの異なる可変マトリクスを予め規定することができ、或る間接テクスチャ動作についてどのマトリクスを使用すべきかを選択することができる。
【０１１４】
図２７はマトリクスプログラマブル静的定数要素ｍａ，ｍｂ，ｍｃ，ｍｄ，ｍｅおよびｍｆを使用するテクスチャオフセットマトリクス乗算動作の一例を図解する。テクスチャオフセット値を与えるデータトリプレット成分ｓ，ｔおよびｕを含む検索間接テクスチャルックアップデータは演算のために乗数列ベクトルマトリクスとして使用される。結果的に得られた積値は１対の新／修正テクスチャ座標ｓ′およびｔ′である。好ましい構成において、マトリクスの要素は−１から＋１の範囲内の多ビット２進浮動小数点値によって表される。図２８は２つの「可変」マトリクスの例、パイプラインｓｔ座標データバス５２２を介して得られる現在の直接テクスチャ座標（ｓ，ｔ）から検索した要素を有するマトリクスＡおよびマトリクスＢを図解する。再度図２６を参照して、スケールロジック５２６は随意的なスケーリング動作を行うために設けられる。スケールユニット５２６はマトリクス乗算の結果をスケールする。スケールの量はユーザによって特定される２のべき数である。たとえば、ＡＰＩ関数を用いる場合、−３２から＋３１の範囲内の２の指数を特定することによってスケール値を選択する。このスケール値は、間接テクスチャリング動作に関連する標準テクスチャマップのサイズにわたってテクスチャオフセットを引き延ばすために使用される。
【０１１５】
ラップロジック５２７は随意的に、最終加算の前に、直接テクスチャ座標へ（モジュロ）ラップを与える。ラップサイズは、たとえば、制御ロジックレジスタを通るＡＰＩ関数によって特定される２のプログラマブルなべき数である。
【０１１６】
上述の処理動作が行われると、計算したオフセットが加算器５２８を使用して現在の直接テクスチャ座標へ加算される。この結果は、さらなる直接または間接テクスチャルックアップのために使用される新／修正テクスチャ座標となる。ステージ出力再循環バッファ５３０が、先の処理ステージからの計算結果を随意的に加算するのを許容する。結果的に得られた計算した新／修正座標はテクスチャ検索ユニット５００ａへ通過される。
制御レジスタフォーマットのハードウェアの例
図２９は処理ユニット５１２内におけるパラメータおよび動作を規定しかつ制御するために使用されるロジック制御レジスタデータフィールドフォーマットの例を示す。たとえば、或るデータフィールドは静的マトリクス要素として使用するためにプログラマブルな定数を通過するために使用される。他のフィールドはデータトリプレットフォーマット，制御バイアスおよびスケールファクタを規定し、間接動作ステージの数を示し、あるいは処理ロジックユニット５１２内における動作のための他のパラメータを提供する。
【０１１７】
以下の表は、間接テクスチャ／バンプユニット５００ｂ／５００ｃおよび処理ロジック５１２内での動作を制御するための制御レジスタの記述の限定されない例示を示す。
【０１１８】
【表１】
2011065677.tif 000003
【０１１９】
処理ロジックユニットにおいて、図２４に示す制御レジスタのために、レジスタMTXiが３つのマトリクスのためのマトリクス要素（すなわち、ｉ＝０，１，２）を規定する。レジスタCMDiが１６のＴＥＶステージ（ｉ＝０−１５）の各々のためのバンプコマンドを規定し、レジスタIMASK が８つまでのテクスチャの各々の直接または間接使用を規定する。
モード変更
実施例において、パイプライン中におけるモード変更が制御レジスタアドレス−データ対（これは、たとえば、パイプライン中の回路に関連する特別なハードウェアロジック制御レジスタのアドレスおよびその回路を制御するための適宜の制御データ／命令を含む）を、ラスタライザによって出力されるラスタライゼーションデータとインタリーブすることによって取り扱われる。この制御レジスタアドレス−データ対の情報はデータとともにグラフィクスパイプラインへ流れ落ち、それが影響するデータとともに正しい順序でインタリーブされる。したがって、大部分の随意的なモード変更はパイプラインを「フラッシング」（一掃する）ことなしに行われ得る。制御レジスタデータのためにそれの最初の宛先に届くまでにパイプライン内に多数の経路データがあるということによってモード切換は幾分複雑になっていて、たとえば、以下に例示するような動作的な制約を守ることによってより効率的な動作が得られる。
【０１２０】
(1) テクスチャアドレスプロセサ５００ｂ／５００ｃに影響を及ぼすハードウェアの制御レジスタデータが直接テクスチャ座標ＦＩＦＯ（ｄＦＩＦＯ）を通って（たとえば、スイッチＳ０を介して）送られる。
【０１２１】
(2) テクスチャユニット５００ａにおける直接コンテキストに影響を及ぼすハードウェア制御レジスタデータはテクスチャアドレスプロセサにおける直接テクスチャ座標ＦＩＦＯ（ｄＦＩＦＯ）を通してテクスチャユニット５００ａへ送られる。
【０１２２】
(3) テクスチャユニット５００ａにおいて間接テクスチャリングコンテキストに影響を及ぼすハードウェア制御レジスタデータはラスタライザ４００からテクスチャユニット５００ａへ（たとえば、スイッチＳ０およびＳ１を介して）直接送られる。
【０１２３】
(4) ピクセルシェーダ（ＴＥＶ）またはフレームバッファ７０２に影響を及ぼすハードウェア制御レジスタデータは直接テクスチャ座標ＦＩＦＯ（ｄＦＩＦＯ），テクスチャアドレスプロセサ５００ｂ／５００ｃおよびテクスチャユニット５００ａを通して送られる。
【０１２４】
この発明の実施例において、可能なテクスチャリングコンテキストは、直接コンテキストまたは間接コンテキストのいずれかとして規定される。直接コンテキストは直接テクスチャデータだけを取扱い、間接コンテキストは間接テクスチャデータだけを取り扱う。たとえば、間接動作から直接動作へもしくは直接動作から間接動作への間の１つまたはそれ以上のコンテキストの定義における変更がグラフィクスパイプラインの部分的なフラッシングを必要とする。
間接テクスチャ処理結果の例
理解されるように、上で述べた直接および間接テクスチャ処理アーキテクチャを再循環させることによって極めて柔軟性のあるかつ仮想的に無限の機能性を与えることができる。アプリケーションプログラマは任意の数の直接もしくは間接テクスチャマッピング動作の任意のシーケンスを提供するために任意数の論理的テクスチャマッピングステージを含ませることができる。この強力な能力によって、アプリケーションプログラマは、多数の複雑かつ興味深いテクスチャマッピングによる視覚効果を動的に作り上げることができる。
【０１２５】
一例として、間接テクスチャはテクスチャワープ効果のために使用され得る。この例の場合、間接テクスチャは表面テクスチャを引き延ばしさもなければ歪ませるために使用される。動的な歪み効果は間接マップをスワッピングすることによって（もしくは間接マップまたは座標を修正することによって）達成され得る。この効果は或るシーン内の或る表面に付与することができもしくはこの１ステップを全体のシーンにこの効果を付与するように採用することができる。後者の場合、そのシーンはまず通常のようにレンダリングされ、次いで、テクスチャマップへコピーされる。間接テクスチャを用いて画面へマッピングされる大きな矩形を描画することができる。テクスチャワープはきらめき(shimmering)効果，特別レンズ効果，および種々の幻覚的な効果を生成するために使用され得る。
【０１２６】
他の例として、間接的な特徴はまたテクスチャタイルマップを描画することを許容する。このシナリオにおいて、１つのテクスチャマップが多様なタイルのための基本的な定義を保有する。間接テクスチャマップは、次いで、２Ｄ表面上の具体的な位置に具体的なタイルを置くために使用される。間接テクスチャによって、１つのポリゴンだけが描画されればよい。
【０１２７】
互換性のある他の実施例
上述のシステム５０は上で述べた家庭用ビデオゲームコンソールの構成以外としても実現できる。たとえば、或るものは、システム５０をエミュレートする異なる構成を有するプラットフォームもしくはそれと同等のものにおいて、システム５０のために書かれたグラフィクスアプリケーションや他のソフトウェアを実行させることができる。もし、他のプラットフォームがシステム５０のいくつかのもしくはすべてのハードウェアおよびソフトウェアリソースをエミュレートしシミュレートしおよび／または提供することができれば、その他のプラットフォームはそのソフトウェアを成功裏に実行することができる。
【０１２８】
一例として、エミュレータがシステム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供できる。そのエミュレータシステムは、それのためにアプリケーションソフトウェアが書かれているシステムのいくつかのもしくはすべてのハードウェアおよび／またはソフトウェアコンポーネンツをエミュレートしもしくはシミュレートするソフトウェアおよび／またはハードウェアコンポーネンツを含む。たとえば、エミュレータシステムはパソコンのような汎用ディジタルコンピュータを含み、それはシステム５０のハードウェアおよび／またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行する。上述のオーディオシステムのＤＳＰ処理がパソコンによってエミュレートされ得る。
【０１２９】
或る汎用ディジタルコンピュータ（たとえばＩＢＭやマッキントッシュのパソコンおよびそれらの同等物）は、ダイレクトＸ(DirectX)または他の標準的な３ＤグラフィクスコマンドＡＰＩｓに従った３Ｄグラフィクスパイプラインを提供する３Ｄグラフィクスカードを備える。それらはまた、音声コマンドの標準的なセットに基づいて高品質のステレオ音声を提供するステレオ音声カードを備える。エミュレータソフトウェアを実行するそのようなマルチメディアのハードウェアを備えるパソコンは、システム５０のグラフィクスおよび音声性能とほぼ等しい十分な性能を有する。エミュレータソフトウェアはパソコンプラットフォーム上のハードウェアリソースを制御して、それのためにゲームプログラマがゲームソフトウェアを書いた家庭用ビデオゲームコンソールプラットフォームの処理，３Ｄグラフィクス，音声，周辺および他の能力をシミュレートする。
【０１３０】
図３０はホストプラットフォーム１２０１，エミュレータコンポーネント１３０３および記憶媒体６２上のゲームソフトウェア実行可能バイナリ映像を用いる全体のエミュレーション処理を図解する。ホスト１２０１は、たとえばパソコン，ビデオゲームコンソールあるいは十分な計算力を有する任意の他のプラットフォームのような汎用または特定目的ディジタル計算装置である。エミュレータ１３０３はそのホストプラットフォーム１２０１上で走るソフトウェアおよび／またはハードウェアであり、記憶媒体６２からのコマンド，データおよび他の情報のそのホスト１２０１によって実行可能な形態へのリアルタイム変換を行う。たとえば、エミュレータ１３０３は記憶媒体６２からシステム５０によって実行されるように意図された「ソース」であるバイナリ映像プログラム命令を取り込み、これらのプログラム命令をホスト１２０１によって実行されもしくは処理され得るターゲットとなる形態に変換する。
【０１３１】
一例として、ソフトウェアがＩＢＭパワーＰＣまたは他の特定のプロセサを用いるプラットフォーム上での実行のために書かれかつホスト１２０１が異なる（たとえばインテル）プロセサを用いるパソコンである場合、エミュレータ１２０３は記憶媒体１３０５からの１つのもしくは一連のバイナリ映像プログラム命令を取り込み、これらのプログラム命令を１つまたはそれ以上の同等のインテルのバイナリ映像プログラム命令に変換する。エミュレータ１２０３はまたグラフィクス／オーディオプロセサ１１４によって処理されるように意図されたグラフィクスコマンドおよびオーディオコマンドを取り込みかつ／あるいは生成し、そしてホスト１２０１上で利用可能なハードウェアおよび／またはソフトウェアグラフィクス／オーディオ処理リソースによって処理され得る形態にこれらのコマンドを変換する。一例として、エミュレータ１３０３はホスト１２０１の特別なグラフィクスおよび／または音声ハードウェア（たとえば標準的なダイレクトＸ，オープンＧＬおよび／または音声ＡＰＩｓ）によって処理され得るコマンドにこれらのコマンドを変換する。
【０１３２】
上で述べたビデオゲームシステムのいくつかのもしくはすべての特徴を与えるために用いられるエミュレータ１３０３は、また、エミュレータを使ってゲームを走らせている種々のオプションおよびスクリーンモードの選択を簡単化しもしくは自動化するグラフィックユーザインタフェース（ＧＵＩ）を備える。一例において、そのようなエミュレータ１３０３はさらにそのソフトウェアが本来的に目的とされたホストプラットフォームに比べてより増強された機能性を含むこともできる。
【０１３３】
エミュレータ内の特別なグラフィクスサポートハードウェアが図９ないし図２３によって図解した実施例の間接テクスチャ参照の特徴や関数を含まない場合には、エミュレータ設計者は、次のいずれかを選択すればよい。
【０１３４】
・間接テクスチャ参照コマンドをそのグラフィクスサポートハードウェアが理解する他のグラフィクスＡＰＩコマンドに翻訳する。
【０１３５】
・プロセサの速度に依存する性能における潜在的な低下とともに間接テクスチャ参照をソフトウェアで実現する。
【０１３６】
・間接テクスチャ参照を利用する効果を含まないレンダリングイメージを提供するように間接テクスチャ参照コマンドを「スタブする」（すなわち、無視する）。
【０１３７】
図６のフロー図は、全体としてソフトウェアで、全体的にハードウェアで、あるいはハードウェアとソフトウェアとの組み合わせによって実現できるが、好ましい実施例は、速度性能の向上や他の利点のために、これらの計算の大部分をハードウェアで行う。しかしながら、他の実施例（たとえば、非常に速いプロセサが利用可能である場合）では、類似のまたは同一のイメージ結果を与えるために、ここで述べる処理の幾つかまたはすべてをソフトウェアで実現してもよい。
【０１３８】
図３１はエミュレータ１３０３で用いるに適したエミュレーションホストシステム１２０１を図解的に示す。このシステム１２０１は処理ユニット１２０３およびシステムメモリ１２０５を含む。システムバス１２０７がシステムメモリ１２０５を含む種々のシステムコンポーネンツを処理ユニット１２０３に結合する。システムバス１２０７は多様なバスアーキテクチャのいずれかを用いるメモリバスもしくはメモリコントローラ，周辺バスおよびローカルバスを含むいくつかのタイプのバス構造の任意のものである。システムメモリ１２０７はＲＯＭ１２５２およびＲＡＭ１２５４を含む。起動中においてのようにパソコンシステム１２０１中の要素（要素）間に情報を伝送する手助けをする基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）１２５６がＲＯＭ１２５２中にストアされる。システム１２０１はさらに種々のドライブおよび関連のコンピュータ読出可能な媒体を含む。ハードディスクドライブ１２０９が（典型的には固定の）磁気ハードディスク１２１１から読み出しそれへ書き込む。付加的な（たぶんオプションとしての）磁気ディスクドライブ１２１３が着脱可能な「フロッピィ」または他の磁気ディスク１２５１から読み出しかつそれへ書き込む。光ディスクドライブ１２１７はＣＤ−ＲＯＭあるいは他の光学媒体のような着脱自在な光ディスク１２１９から読み出しかつそれへ書き込む。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、ハードディスクドライブインタフェース１２２１および光ディスクドライブインタフェース１２２５によって、システムバス１２０７にそれぞれ接続される。これらのドライブおよびその関連するコンピュータ読出可能な媒体は、パソコンシステム１２０１のためのコンピュータ読出可能な命令，データ構造，プログラムモジュール，ゲームプログラムおよび他のデータの不揮発性の記憶媒体を提供する。他の構成では、コンピュータによってアクセス可能なデータをストアすることができる他のタイプのコンピュータ読出可能な媒体（たとえば磁気カセット，フラッシュメモリカード，ディジタルビデオディスク，ベルヌーイカートリッジ，ＲＡＭ，ＲＯＭあるいはその他のもの）がまた使用できる。
【０１３９】
エミュレータ１３０３を含む多数のプログラムモジュールがハードディスク１２１１，着脱可能な磁気ディスク１２１５，光ディスク１２１９および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４にストアされ得る。このようなプログラムモジュールはグラフィクス／音声ＡＰＩｓ，１つ以上のアプリケーションプログラム，他のプログラムモジュール，プログラムデータおよびゲームデータを提供するオペレーティングシステム（ＯＳ）を含む。ユーザは、キーボード１２２７，ポインティングデバイス１２２９，マイクロフォン，ジョイスティック，ゲームコントローラ，衛星アンテナ(satellite dish)，スキャナあるいはその他のもののような入力デバイスを通して、パソコンシステム１２０１にコマンドおよび情報を入力することができる。これらのそして他の入力デバイスは、システムバス１２０７に結合されたシリアルポートインタフェース１２３１を通して処理ユニット１２０３に接続され得るが、パラレルポート，ゲームポートファイヤワイヤバス(Fire Wire)もしくはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースによって接続されてもよい。モニタまたは他のタイプの表示デバイスがまたビデオアダプタ１２３５のようなインタフェースを介してシステムバス１２０７に接続される。
【０１４０】
システム１２０１はモデム１１５４またはインターネットのようなネットワーク１１５２を通しての通信を確立するための他のネットワークインタフェース手段を含む。内蔵もしくは外付けであってよいモデム１１５４はシリアルポートインタフェース１２３１を介してシステムバス１２３に接続される。システム１２０１がローカルエリアネットワーク１１５８を介して遠隔コンピュータ装置１１５０（たとえば他のシステム１２０１）と通信するのを許容するために、ネットワークインタフェース１１５６がまた設けられてもよい（もしくはそのような通信はダイヤルアップもしくは他の通信手段のようなワイドエリアネットワーク１１５２もしくは他の通信経路を介してもよい）。システム１２０１はプリンタのような周辺出力装置および他の標準的な周辺装置を含む。
【０１４１】
一例では、ビデオアダプタ１２３５は、マイクロソフト(Microsoft)のダイレクトＸ７．０、または他のバージョンのような標準的な３Ｄグラフィクスアプリケーションプログラマインタフェースに基づいて発行された３Ｄグラフィクスコマンドに応答して、高速の３Ｄグラフィクスレンダリングを提供する３Ｄグラフィクスパイプラインチップセットを含んでもよい。１組のスピーカ１２３７はまた、バス１２０７によって与えられる音声コマンドに基づいて高品質ステレオ音声を生成するハードウェアおよび埋め込みソフトウェアを提供する従来の「音声カード」のような音声生成インタフェースを介して、システムバス１２０７に接続される。これらのハードウェア能力によって記憶媒体１３０５中にストアされているソフトウェアを再生するためにシステム１２０１に十分なグラフィクスおよび音声の速度性能を与えることができる。
【０１４２】
上で述べたビデオゲームシステムのいくつかのもしくはすべての特徴を与えるために使用されるエミュレータ１３０３は、また、そのエミュレータを用いて実行しているゲームのための種々のオプションおよびスクリーンモードの選択を単純化しもしくは自動化するグラフィックユーザインタフェース（ＧＵＩ）を備えてもよい。一例として、そのようなエミュレータ１３０３は本来的にそのソフトウェアを意図していたホストプラットフォームに比べてより増強された機能性を含んでいてもよい。
【０１４３】
最も現実的かつ好ましい実施例であると現在考えられているものに関連してこの発明が説明されたが、この発明は開示された実施例に限定されるものではなく、逆に、特許請求の範囲内に含まれる種々の変形例や等価的な構成をカバーするように意図されていることを理解されたい。
【符号の説明】
【０１４４】
５０  …インタラクティブ３Ｄコンピュータグラフィクスシステム
５４  …主ユニット
１１０  …主プロセサ
１１２  …主メモリ
１８０  …グラフィクスパイプライン
２００  …キャッシュ／コマンドプロセサ
３００  …変換ユニット
４００，６０００  …ラスタライザ
５００，６００２−６００６，６０１０−６０１４  …テクスチャユニット
６００  …テクスチャ環境ユニット
６００８  …テクスチャアドレスプロセサ
６０１６  …ピクセルシェーダ
【図１】
2011065677.tif 000008
【図２】
2011065677.tif 000009
【図３】
2011065677.tif 000010
【図４】
2011065677.tif 000011
【図５】
2011065677.tif 000012
【図６】
2011065677.tif 000013
【図７】
2011065677.tif 000014
【図８】
2011065677.tif 000015
【図９】
2011065677.tif 000016
【図１０】
2011065677.tif 000017
【図１１】
2011065677.tif 000018
【図１２】
2011065677.tif 000019
【図１３】
2011065677.tif 000020
【図１４】
2011065677.tif 000021
【図１５】
2011065677.tif 000022
【図１６】
2011065677.tif 000023
【図１７】
2011065677.tif 000024
【図１８】
2011065677.tif 000025
【図１９】
2011065677.tif 000026
【図２０】
2011065677.tif 000027
【図２１】
2011065677.tif 000028
【図２２】
2011065677.tif 000029
【図２３】
2011065677.tif 000030
【図２４】
2011065677.tif 000031
【図２５】
2011065677.tif 000032
【図２６】
2011065677.tif 000033
【図２７】
2011065677.tif 000034
【図２８】
2011065677.tif 000035
【図２９】
2011065677.tif 000036
【図３０】
2011065677.tif 000037
【図３１】
2011065677.tif 000038