(57)【特許請求の範囲】
【請求項１】
メモリ中にストアされているポリゴン頂点データおよびテクスチャデータに少なくも部分的に応答してイメージをレンダリングしかつ表示する、かつ直接および間接モードでテクスチャ座標処理を行うことができる、グラフィクスシステムにおいて、平坦表面についてモデル化されるバンプマップ関数に基づいて環境を写しこんだバンプマッピングをする方法であって、
(a) オブジェクト表面に関連する頂点アトリビュートデータとして頂点毎に法線，従法線および接線ベクトル情報を供給し、かつ前記ベクトル情報に基づいてテクスチャ座標を発生するステップ、
(b) メモリ中にテクスチャデータとしてストアされているバンプマップデータを参照するために１組の間接モードのテクスチャ座標を使用するステップ、
(c) ステップ(b) で参照されたバンプマップデータを、前記法線，従法線および接線ベクトル情報から発生されたテクスチャ座標と組み合わせて、バンプマップデータに少なくとも部分的に基づいて、ベクトル‐摂動テクスチャ座標を計算するステップ、
(d) メモリ中にテクスチャデータとしてストアされる複数の異なるカラーおよび／またはイメージデータマップにおけるテクセルへのルックアップを行なう際の再使用のために、計算した摂動テクスチャ座標をセーブするステップ、
(e) ステップ(d) においてセーブされる、計算した摂動テクスチャ座標に基づいて、メモリ中にテクスチャデータとしてストアされているライトマップにおけるテクセルへのルックアップを行って、ピクセルをシェーディングするためのライティングデータを抽出するステップ、および
(f) ステップ(d) においてセーブされかつステップ(e)で使用される、計算した摂動テクスチャ座標に基づいてかつ、メモリ中にテクスチャデータとして記憶されている環境マップにおけるテクセルへのルックアップを行なって、前記ピクセルをシェーディングするためのカラーデータを抽出するステップを含み、
前記ステップ(a)‐(f) は１レンダリングパスの間に実行され、
少なくとも前記ライトマップおよび前記環境マップから取得したライティングデータおよびカラーデータに基づいて、前記ピクセルをシェーディングする、方法。
【請求項２】
グラフィクス頂点コマンド関数が、頂点毎の法線，接線および従法線のアトリビュートを特定し、またはメモリ中にストアされているそのような各アトリビュートに対する別のインデックスを特定する、請求項１記載の方法。
【請求項３】
テクスチャデータとしてストアされたバンプマップデータは、平坦表面について２次元にモデル化されたサーフェスバンプ関数によって定義される高低差を表すバンプ関数の偏導関数データ（ｄＳｄＴ）または前進差分データを含む、請求項１記載の方法。
【請求項４】
２つまたはそれ以上の異なるライトマップからテクセルを抽出するために、前記セーブされた、計算した摂動テクスチャ座標が同じレンダリングパスで再使用される、請求項１記載の方法。
【請求項５】
前記計算した摂動テクスチャ座標はグラフィックシステム内において動作するテクスチャ座標処理ハードウェアに関連する記憶バッファにセーブされる、請求項１記載の方法。
【請求項６】
テクスチャデータとして記憶されるバンプマップデータは、フラット表面に対する２次元でモデル化された表面バンプ関数Ｆ（ｕ，ｖ）の予め計算した前進差分値ＦｕおよびＦｖを含む、請求項１記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はコンピュータグラフィクスに関し、特にたとえば、家庭用ビデオゲームプラットホームのようなインタラクティブグラフィクスシステムに関する。さらに特定的には、グラフィクスシステムにおいて環境を写し込んだバンプマッピングを行うため方法および装置に関する。
【０００２】
【発明の背景および発明の概要】
多くの人々はかなりリアルな恐竜，エイリアン，生き生きとしたおもちゃおよび他の空想的な動物を含む映画をかつて見たことがある。そのようなアニメーションはコンピュータグラフィクスによって可能とされた。そのような技術を用いて、コンピュータグラフィクスのアーティストは、各オブジェクトがどのように見えるべきかや時間の経過とともに外見上どのように変化すべきかを特定し、コンピュータは、そのオブジェクトをモデル化してテレビジョンやコンピュータスクリーンのようなディスプレイに表示する。コンピュータは、表示される映像の各部分を、場面中の各オブジェクトの位置や向き，各オブジェクトを照らすように見える照明の方向，各オブジェクトの表面テクスチャ，および他の要素に正確に基づいて、色付けしまた形作るために必要な多くのタスクを実行する。
【０００３】
コンピュータグラフィクスの生成は複雑であるので、ここ数年前のコンピュータによって生成された３次元（３Ｄ）グラフィクスは、ほとんど高価な特殊なフライトシミュレータ，ハイエンドグラフィクスワークステーションおよびスーパーコンピュータに限られていた。大衆は映画や高価なテレビコマーシャルにおいてこれらのコンピュータシステムによって生成された映像のいくつかを見たが、大部分の人はグラフィクスを生成しているコンピュータに対して実際に相互作用をさせることはできない。たとえば、Nintendo64（登録商標）や今や利用可能であるパソコン用の種々の３Ｄグラフィクスカードのような比較的安価な３Ｄグラフィクスプラットフォームの利用によって、このすべてが変わった。今や、家庭や会社の比較的安価なコンピュータグラフィクスシステム上でエキサイティングな３Ｄアニメーションやシミュレーションに対して相互作用を及ぼすことができる。
【０００４】
グラフィクスシステム設計者が過去に直面した問題は、ポリゴンや他の幾何学的プリミティブを有する所望のディテールの明示的なモデリングへの再分類なしに、レンダリングしたオブジェクト上にリアルに見える表面ディテールを如何に作り出すかということであった。表面ディテールはたとえば頂点間を補間する陰影付けを有する無数の小さい三角形を使ってシミュレートできるが、所望のディテールがより精細かつより複雑になると、三角形や他のプリミティブを用いる明示的なモデリングはグラフィクスシステムに高度な要求をかけ、そして実用的ではない。Ｅキャットマルが先駆しかつＪＦブリンおよびＭＥニューエルが改良した別の技術は表面上にデジタイズされたまたは合成されたイメージを「マッピング」することである。（Ｅキャットマルによる「曲面のコンピュータディスプレイのための再分割アルゴリズム」、博士論文、レポートＵＴＥＣ−ＣＳｃ−７４−１３３、コンピュータ科学部門、ユタ大学、ソルトレークシティ、ＵＴ、１９９４年１２月およびＪＦブリンおよびＭＥニューエルによる「コンピュータ生成イメージにおけるテクスチャおよび反射」、ＣＡＣＭ、１９（１０）、１９７６年１０月、４５２−４５７を参照されたい。）この方法はテクスチャマッピング（またはパターンマッピング）として知られており、そのイメージはテクスチャマップと呼ばれる（または単にテクスチャと呼ばれる）。あるいは、テクスチャマップはイメージによってよりもむしろ手順によって規定される。
【０００５】
典型的には、テクスチャマップは、２次元の直角座標空間内で規定され、かつたとえば（ｕ，ｖ）または（ｓ，ｔ）のような１対の直角テクスチャ座標を用いてパラメータ化される。テクスチャマップ内での個々のエレメント（要素）はしばしばテクセル(texel) と呼ばれる。各レンダリングしたピクセルにおいて選択されたテクセルがそのレンダリングしたオブジェクトの表面の１つまたはそれ以上の材質的な特性を代替しもしくはスケーリングするために用いられる。この処理がしばしばテクスチャマッピングまたは「テクスチャリング」と呼ばれる。
【０００６】
ほとんどの３次元のグラフィクスレンダリングシステムはいまや、メモリからテクスチャを検索してそのテクスチャをレンダリングしたオブジェクト表面にマッピングするためのテクスチャリングサブシステムを含むが、グラフィクスシステム設計者の直面する他の問題は、たとえば、ランダムな表面の傷(flaws)，でこぼこ(irregularities, roughness)，隆起(バンプ：bump)，あるいは他の非平滑表面変形を有する実際のオブジェクトの表面と同じような方法で、種々のライティング(lighting) 条件に反応する本物らしく見える表面特性をもって、３Ｄオブジェクトを如何にテクスチャリングするかである。標準的な(regular) テクスチャマッピングはそのようなリアリズムを与えることはない。なぜなら、テクスチャイメージは一般的に２次元でありかつレンダリングした場面内でのライティングの位置または方向における変化に応答して反応しもしくは外観を変化させることができないからである。いくつかの例ではそのような微小な表面特性が実際にモデリングされ得たかもしれないが、そのような複雑な表面を３Ｄオブジェクトにトランスレートしかつレンダリングするために要する時間は、大部分のリアルタイムでのもしくはインタラクティブなゲームアプリケーションをほとんど不可能にする。したがって、この問題に対する種々のソリューションが提案されている。たとえば、一般的に「バンプマッピング」として知られている技術が開発され、それによって、非平坦表面の変化をライティングされたオブジェクト上に生成するという効果を近似することができる。たとえば、ＪＦブリンの「しわのある表面のシミュレーション」コンピュータグラフィクス、（ＳＩＧＲＡＰＨ’７８会報）、ｖｏｌ．１２，Ｎｏ． ３、ｐｐ．２８６−２９２（１９７８年８月）および「コンピュータ合成画像のための光反射のモデル」、コンピュータグラフィクスおよび教育的技術の第４回会議の会報（１９７７年）を参照されたい。
【０００７】
基本的に、バンプマッピングによれば、グラフィクスアプリケーションのプログラマは、微小表面変化を高低差(height difference) としてモデリングし、かつ次いで、それらの差の値を表面ライティング効果を計算する際に用いる表面の法線ベクトルへの摂動(perturbation) として１つの表面にわたって付与することによって、たくさんのジオメトリを使うことなしに、オブジェクトの表面に本物らしさを付加することができる。実際に、バンプマッピングは、ピクセルベースで表面法線を摂動することによって、ポリゴン（またはプリミティブ）のシェーディングを修正する。下にあるジオメトリがほぼ平坦であっても、シェーディングによって表面をでこぼこに(bumpy) 見せることができる。
【０００８】
従来のバンプマッピング技術はいくらかの改良を提案するけれども、グラフィクスシステムの設計者が直面する別の問題は、「エンボス(emboss)」スタイルのバンプマッピングのようなバンプマッピングの単純な形に対する従来のアプローチは、典型的には、バンプマップと１つの拡散光源との間の相互作用を考慮するだけであるということである。さらに、多くの場合、バンプマップは、特定の表面ジオメトリを有するオブジェクトのためにジオメトリ形状が構成される（すなわちパラメータ化される）という意味において、具体的なジオメトリ形状に不都合に「拘束」され、ジオメトリとして類似の表面においてのみ十分に機能するだけである。さらに、もしオブジェクトが回転されると、バンプマップはその全表面（たとえば、回転後に新たに見えることとなった表面領域）に付与できない。
【０００９】
レンダリングしたオブジェクト上に本物らしく見える表面を付与する他の公知の技術は、「環境マッピング」と呼ばれる方法を使用する。環境マッピング（Environment Mapping：ＥＭ）はまた「反射マッピング(reflection mapping)」と呼ばれ、曲がった表面における反射の近似を生成する簡単でパワフルな方法である。この技術は、ブリンおよびニューエルによって「コンピュータ生成イメージにおけるテクスチャおよび反射」としてＡＣＭのコミュニケーションＶｏｌ．１９，ｎｏ． １０，ｐｐ．５４２−５４７（１９７６年１０月）で紹介されている。従来、方法は、看者から反射器上の点へのレイ(ray) で開始する。このレイは、次いで、その点における法線に対して反射される。レイトレーシング処理において行われているように直近の表面との交点を見つけることに代えて、ＥＭは環境を包含するイメージへのインデックスとして反射ベクトルの方向を使用する。この環境マッピングによる近似は、オブジェクトと環境マッピングで反射されている光とが離れていて、かつ反射器はそれ自身を反射しないということを前提にしている。このような前提を保持すれば、反射器の周りの環境がそれを取り巻く２次元投影として取り扱われ得る。
【００１０】
環境マッピングの基本的なステップないし手順は次の通りである。
【００１１】
・環境の２次元イメージ（これが環境マップである）を生成する。
【００１２】
・反射性オブジェクトを含む各ピクセル毎に、オブジェクトの表面上の位置における法線を計算する（もしピクセル毎のＥＭが利用できないなら、法線はポリゴンの頂点で計算される）。
【００１３】
・ビューベクトル(view vector) および法線から反射ベクトルを計算する。
【００１４】
・反射方向におけるオブジェクトを表現する環境マップへのインデックスを計算するために反射ベクトルを用いる。
【００１５】
・現在のピクセルをカラーリングするために環境マップからのデータを使用する。
【００１６】
さらに、種々の公知の「投影器(projector) 」機能があり、それは１つまたはそれ以上のテクスチャへ反射ベクトルをマッピングするために使用される。球体(sphere) マップがまた共通的に使用されるけれども、ブリンおよびニューエルのアルゴリズムおよびグリーネ(Grene) のキュービック環境マッピング技術は古典的なマッピング方法である。
【００１７】
過去にかなり多くの仕事がなされたが、さらなる改良が可能でありかつ要望されている。
【００１８】
この発明は、環境を写し込んだバンプマッピング(environment-mapped bump-mapping：ＥＭＢＭ）を行うための装置および例示的な手順を提供することによって、以前の技術を改良する。この発明によって提供される１つの局面によれば、グラフィクスシステムにおけるＥＭＢＭは、表面のパラメータからテクスチャ座標を発生することによって行われ、テクスチャ座標を摂動するためにバンプマッピングを行い、摂動されたテクスチャ座標に基づいて環境マッピングを行い、そして環境マッピングから得られたイメージを表示する。バンプマッピングはモデリング空間における３次元モデルを使用して表面の摂動をモデリングし、もしくは目空間における２次元において表面の摂動をモデリングする。これらの異なるモデリング技術は異なる利点や特徴を与える。
【００１９】
より詳細に述べると、１つのＥＭＢＭ技術は３次元中において表面の摂動をモデリングするためにバンプマップを用いる。バンプマッピング演算の出力はマトリクス乗算計算に与えられ、それによって任意の方向における回転が行える。結果的に得られた回転した値が、環境マッピングのために、法線ベクトル値と組み合わされる。
【００２０】
他の実施例においては、バンプマップは偏導関数(partial derivative) を用いて２次元中において表面の摂動をモデリングする。バンプマッピング出力は、環境マッピングのためのテクスチャ座標を与えるために、積和計算を用いる法線ベクトルの偏導関数と組み合わされる。変換マトリクスの逆関数が、その法線ベクトルの偏導関数を変換するために、ジオメトリ変換のために使用される。
【００２１】
より詳細に述べると、第１の実施例のＥＭＢＭ手順は、テクスチャとしてメモリにストアされている予め計算したバンプマップを使用して、具体的なオブジェクトの表面ジオメトリについて３Ｄ（ｄＸｄＹｄＺ）においてモデリングされたオブジェクト表面の法線の摂動の非常に速い処理を可能にする。第２実施例のＥＭＢＭ手順は平坦表面（ｄＳｄＴ）に関してモデリングされた法線の摂動のために用いられ、それは、特定の表面ジオメトリとともにバンプマップを使用する必要がなく、種々の異なるレンダリングしたオブジェクト形状に対して環境マッピング／ライティングを与えることができる。
【００２２】
この発明の局面によって提供されるＥＭＢＭ方法は、頂点毎の新たな摂動された法線ベクトルを効果的に生成するために、レンダリングしたポリゴンの各頂点からの予め計算したオブジェクト表面の法線（すなわち、法線(Normal)，接線(Tangent) および従法線(Binormal) ベクトル）と一緒に、間接テクスチャとしてアクセスされる予め構成したバンプマップテクスチャを使用する。この新たな摂動された法線ベクトルは、次いで、環境テクスチャマップをルックアップ(look up) するために使用される。たとえば、環境テクスチャマップは、レンダリングしたオブジェクトを取り巻く環境の球体反射マップもしくは、ライティングを含むテクスチャマップあるいは、より複雑な表面のライティング効果を作り出すための他のデータであり得る。
【００２３】
実施例は、間接テクスチャ(indirect-texture) バンプマップからの抽出ルックアップデータ上での所定のマトリクス乗算演算（たとえば、モデリング空間から目空間への変換）を行うために、グラフィクスパイプライン中において特定化したテクスチャデータ／座標処理「バンプユニット」を提供する。このバンプユニットは、プログラマブルな３×２要素の乗算マトリクスおよび多数の直交軸についてバンプマッピングしたオブジェクトの回転を許容するスケーリング回路を使用する。バンプユニットはまた、計算した座標データ出力値を後続の処理サイクルにおいて再使用するために、出力記憶バッファを備える。
【００２４】
この発明によって提供される別の局面によれば、１つまたはそれ以上の具体的な表面ジオメトリについてのオブジェクト表面の法線の摂動が、具体的なグラフィクスアプリケーションを実行する前に、テクスチャとしてメモリにストアされている予め計算したｄＸｄＹｄＺバンプマップを用いて３Ｄ中においてモデリングされる（すなわち、個々のバンプマップ内のテクセル値が３Ｄモデリング空間において頂点毎の表面法線ベクトルのオフセットを特定する）。ハードウェアによって実現されたテクスチャリングパイプラインは、次いで、ＥＭＢＭのｄＸｄＹｄＺテクスチャのルックアップを行う。ここに開示した実施例においては、これは、間接テクスチャルックアップを用いて実現され、たとえば球体反射環境マップへのルックアップのための摂動されたテクスチャ座標を計算するために、ｄＸｄＹｄＺバンプマップデータを得る。実行時間中、グラフィクスアプリケーションは、具体的な表面ジオメトリを有するオブジェクトをそのジオメトリのための予め計算したｄＸｄＹｄＺバンプマップテクスチャと一致ないし調和(match)させ、そのバンプマップを「間接」テクスチャとしてアクセスする。
【００２５】
プログラマブルな３×２乗算マトリクスはバンプユニットのハードウェアによって実現でき、そのようなｄＸｄＹｄＺのバンプマッピングされたオブジェクトをレンダリングしかつ表示するときに改良された多能性(versatility) を与える。たとえば、マトリクスは、テクスチャ座標成分の目空間への変換を許容するために適宜の変換定数をプログラマブルにロードし、または２つまたはそれ以上の直交軸についてオブジェクトを回転させながらｄＸｄＹｄＺバンプマップテクスチャリングを実現するためにテクスチャ座標をダイナミックにロードする。ｄＸｄＹｄＺバンプマップ間接ルックアップデータは、次いで、頂点法線毎に発生したテクスチャ座標成分と一緒に用いられ、環境マップへのルックアップのための摂動されたテクスチャ座標を計算する。
【００２６】
ｄＸｄＹｄＺバンプマップテクスチャは個々の表面ジオメトリのためにカスタムにパラメータ化され、したがって、それらが設計された具体的なオブジェクトに効果的に「拘束」されるが、ＥＭＢＭへのこのアプローチはその処理が非常に速く、１つのシェーディング／カラーブレンドステージに対応する１つのテクスチャ座標処理ステージだけが必要であるという点で有利である。さらに、この発明の好ましい実施例では、バンプマッピングされたオブジェクトは、オブジェクト表面上におけるバンプマッピング効果への中断(disruption) なしに、少なくとも２つの直交軸についてダイナミックに回転され得る。
【００２７】
この発明によって提供される他の局面によれば、オブジェクト表面の法線の摂動は平坦表面に関して初期的にモデリングされ、次いで、アプリケーションの実行時間中に、法線の摂動が、異なるもしくは任意のジオメトリ形状を有するレンダリングしたオブジェクトの表面にマッピングされる。偏導関数データを含む予め計算したバンプｄＳｄＴマップが２Ｄテクスチャとしてメモリにストアされ、次いで、「間接」テクスチャとしてアクセスされる。予め計算したｄＳｄＴバンプマップデータは、たとえば、従来の描画プログラム２Ｄもしくは他のイメージからデータの前進差分(forward difference) を取ることによって抽出され得る。基本的に、法線，接線および従法線ベクトルはモデリングした３Ｄオブジェクト表面のポリゴン頂点アトリビュートとして頂点毎に特定され、最初にビュー空間（目空間／カメラ空間）へ回転（変換）され、次いで、予め計算したバンプマップデータと一緒に使用されて頂点毎の摂動された法線を計算する。この摂動された法線は、次いで、光（ライト）もしくは環境マップをルックアップするために使用される。換言すれば、従法線および接線を発生したテクスチャ座標成分は予め計算した偏導関数のｄＳｄＴバンプマップデータ（間接テクスチャとしてストアされている）によってスケーリング（乗算）され、次いで、数サイクル／ステージにわたって法線ベクトルを発生したテクスチャ座標成分と組み合わされる。その結果として得られた計算したテクスチャ座標は適当に摂動された法線ベクトルに対応し、それは、次いで、光もしくは環境マップをルックアップするために使用される。
【００２８】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００２９】
【実施例】
図１は対話型（インタラクティブ）３Ｄコンピュータグラフィクスシステム５０の一例を示す。システム５０は対話型３Ｄビデオゲームをステレオ音声とともにプレイするのに用いられ得る。これはまた多様な他のアプリケーションにも用いられ得る。
【００３０】
この実施例において、システム５０は３次元世界のディジタル表現ないしモデルをインタラクティブにかつリアルタイムに処理することができる。システム５０は、任意の視点から、その世界の一部または全部を表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂまたは他の入力デバイスからのリアルタイム入力に応答して、視点をインタラクティブに変化できる。このことによって、ゲームプレーヤは、その世界内もしくは外の誰かの目を通してその世界を見ることができる。システム５０は、リアルタイム３Ｄインタラクティブ表示を必要としないアプリケーション（たとえば２Ｄ表示の発生やおよび／またはノンインタラクティブ表示）に使用できるが、高品質の３Ｄ映像を非常に速く表示する能力は、非常にリアルでエキサイティングなゲームプレイや他のグラフィクスインタラクションを創造するのに使用され得る。
【００３１】
システム５０を用いてビデオゲームまたは他のアプリケーションをプレイするために、ユーザはまず、主ユニット５４を、カラーテレビ５６または他の表示装置に、両者の間にケーブル５８を接続することによって、接続する。主ユニット５４はカラーテレビ５６を制御するためのビデオ信号およびオーディオ信号を発生する。ビデオ信号はテレビジョン画面５９上に表示されている映像を制御するものであり、オーディオ信号はテレビのステレオスピーカ６１Ｌおよび６１Ｒを通して音声として再生される。
【００３２】
ユーザはまた主ユニット５４を電源につなぐ必要がある。この電源は従来のＡＣアダプタ（図示せず）であってよく、そのＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、主ユニット５４を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例ではバッテリが用いられてもよい。
【００３３】
ユーザは主ユニット５４を制御するために手持ちコントローラ５２ａおよび５２ｂを用いる。コントロール６０は、たとえば、３Ｄ世界内においてテレビ５６に表示されているキャラクタが移動すべき方向（上または下、左または右、近づいてまたは遠ざかって）を指示するために使用され得る。コントロール６０は、また他のアプリケーションのための入力（たとえばメニュー選択，ポインタ／カーソル制御，その他）を与える。コントローラ５２は多様な形態をとり得る。この実施例においては、図示されるコントローラ５２は、各々ジョイスティック，押しボタンおよび／または方向スイッチのようなコントロール６０を含む。コントローラ５２は、ケーブルによって、もしくは電磁波（たとえば電波または赤外線）を介してワイヤレスで、主ユニット５４に接続され得る。
【００３４】
ゲームのようなアプリケーションをプレイするために、ユーザはビデオゲームもしくはプレイしたいと思う他のアプリケーションをストアしている適宜の記憶媒体６２を選択し、その記憶媒体を主ユニット５４のスロット６４に差し込む。記憶媒体６２は、たとえば、特別にエンコードされおよび／または記号化された光学的ならびに／もしくは磁気的ディスクであってよい。ユーザは主ユニット５４をオンするために電源スイッチ６６を操作し、主ユニットがその記憶媒体６２にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザは主ユニットに入力を与えるためにコントローラ５２を操作する。たとえば、コントロール６０を操作することによってゲームもしくは他のアプリケーションをスタートさせる。他のコントロール６０を動かすことによって、動画キャラクタを異なる方向に移動させ、または３Ｄ世界におけるユーザの視点を変化させる。記憶媒体６２にストアされている具体的なソフトウェアによって、コントローラ５２上の種々のコントロール６０は異なる時間で異なる機能を達成することができる。
全体システムの例
図２はシステム５０の例示的なコンポーネントのブロック図であり、重要なコンポーネントは、
・主プロセサ（ＣＰＵ）１１０，
・主メモリ１１２，および
・グラフィクス／オーディオプロセサ１１４
を含む。
【００３５】
この実施例において、主プロセサ１１０（たとえばＩＢＭパワーＰＣ７５０の改良版）は、手持ちコントローラ５２（および／または他の入力デバイス）からの入力をグラフィクス／オーディオプロセサ１１４を通して受ける。主プロセサ１１０はユーザ入力にインタラクティブに応答し、光ディスクドライブのような大容量記憶媒体アクセス装置１０６を介して、たとえば外部記憶媒体６２から供給されるビデオゲームもしくは他のプログラムを実行する。一例として、ビデオゲームプレイの状況では、主プロセサ１１０は、多様なインタラクティブ制御機能に加えて、衝突検出および動画処理を実行する。
【００３６】
この実施例では、主プロセサ１１０は３Ｄグラフィクス／オーディオコマンドを発生し、それらをグラフィクス／オーディオプロセサ１１４に送る。グラフィクス／オーディオプロセサ１１４はこれらのコマンドを処理し、ディスプレイ５９上での可視映像を生成し、ステレオスピーカ６１Ｒおよび６１Ｌもしくは他の適宜の音声発生デバイス上でのステレオ音声を生成する。
【００３７】
実施例のシステム５０はビデオエンコーダ１２０を含み、このビデオエンコーダは、グラフィクス／オーディオプロセサ１１４からの映像信号を受けて、その映像信号をコンピュータモニタや家庭用テレビ５６のような標準的な表示装置上での表示に適したアナログおよび／またはディジタルビデオ信号に変換する。システム１００はまたオーディオコーデック（圧縮器／伸長器）１２２を含み、このオーディオコーデックはディジタル化されたオーディオ信号を圧縮しかつ伸長するとともに、必要に応じてディジタルオーディオ信号のフォーマットとアナログオーディオ信号のフォーマットとの間で変換を行う。オーディオコーデック１２２はバッファ１２４を介してオーディオ入力を受けることができ、処理（たとえば、プロセサが生成したおよび／または大容量記憶媒体アクセス装置１０６のストリームオーディオ出力を介して受信した他のオーディオ信号とのミキシング）するために、そのオーディオ入力をグラフィクス／オーディオプロセサ１１４に与える。この実施例におけるグラフィクス／オーディオプロセサ１１４は、オーディオタスクに利用可能なオーディオメモリ１２６にオーディオ関連情報をストアすることができる。グラフィクス／オーディオプロセサ１１４は、結果的に得られるオーディオ出力信号を、圧縮およびアナログ信号への変換のために、オーディオコーデック１２２に与え、したがってそのオーディオ出力信号が（たとえばバッファアンプ１２８Ｌおよび１２８Ｒを介して）スピーカ６１Ｌおよび６１Ｒによって再生され得る。
【００３８】
グラフィクス／オーディオプロセサ１１４はシステム１００内に存在するであろう種々の付加的なデバイスと通信する能力を有する。たとえば、パラレルディジタルバス１３０は大容量記憶媒体アクセス装置１０６および／または他のコンポーネントと通信するために用いられる。シリアル周辺バス１３２は多様な周辺機器または、たとえば、
・ＰＲＯＭおよび／またはＲＴＣ（リアルタイムクロック）１３４，
・モデム１３６もしくは他のネットワークインタフェース（それはシステム１００を、プログラム命令および／またはデータがダウンロードもしくはアップロードされ得るインターネットあるいは他のディジタルネットワークのようなテレコミュニケーションネットワーク１３８に接続する），および
・フラッシュメモリ１４０
を含む他のデバイスと通信する。
別の外部シリアルバス１４２は、付加的な拡張メモリ１４４（たとえばメモリカード）もしくは他のデバイスと通信するために使用され得る。コネクタが種々のデバイスをバス１３０，１３２および１４２に接続するために使用され得る。
グラフィクス／オーディオプロセサの例
図３は実施例のグラフィクス／オーディオプロセサ１１４を示すブロック図である。或る実施例においては、グラフィクス／オーディオプロセサ１１４はシングルチップＡＳＩＣであってよい。この実施例においては、グラフィクス／オーディオプロセサ１１４は、
・プロセサインタフェース１５０，
・メモリインタフェース／コントローラ１５２，
・３Ｄグラフィクスプロセサ１５４，
・オーディオディジタル信号プロセサ（ＤＳＰ）１５６，
・オーディオメモリインタフェース１５８，
・オーディオインタフェース／ミキサ１６０，
・周辺コントローラ１６２，および
・表示コントローラ１６４
を含む。
【００３９】
３Ｄグラフィクスプロセサ１５４はグラフィクス処理タスクを実行する。オーディオディジタル信号プロセサ１５６はオーディオ処理タスクを実行する。表示コントローラ１６４は主メモリ１１２からの映像情報にアクセスし、表示装置１０２上での表示のためにその映像情報をビデオエンコーダ１２０に与える。オーディオインタフェース／ミキサ１６０はオーディオコーデック１２２をインタフェースし、また異なるソースからのオーディオ（たとえば、大容量記憶媒体アクセス装置１０６からのオーディオストリーム，オーディオＤＳＰ１５６の出力，およびオーディオコーデック１２２を通して受ける外部オーディオ入力）をミックスすることができる。プロセサインタフェース１５０は主プロセサ１１０およびグラフィクス／オーディオプロセサ１１４の間のデータおよび制御インタフェースを提供する。
【００４０】
メモリインタフェース１５２はグラフィクス／オーディオプロセサ１１４とメモリ１１２との間のデータおよび制御インタフェースを提供する。この実施例においては、主プロセサ１１０は、プロセサインタフェース１５０およびグラフィクス／オーディオプロセサ１１４の一部であるメモリインタフェース１５２を介して、主メモリ１１２にアクセスする。周辺コントローラ１６２はグラフィクス／オーディオプロセサ１１４と上で述べた種々の周辺機器との間のデータおよび制御インタフェースを提供する。オーディオメモリインタフェース１５８はオーディオメモリ１２６とのインタフェースを提供する。
グラフィクスパイプラインの例
図４は図３の３Ｄグラフィクスプロセサ１５４をより詳細に示すグラフィクス処理システムを示す。この３Ｄグラフィクスプロセサ１５４は、とりわけ、コマンドプロセサ２００および３Ｄグラフィクスパイプライン１８０を含む。主プロセサ１１０はデータストリーム（たとえばグラフィクスコマンドストリームおよび表示リスト）をコマンドプロセサ２００に通信する。主プロセサ１１０はメモリレイテンシを最小化するために２レベルキャッシュ１１２を有し、さらにまたグラフィクス／オーディオプロセサ１１４に向けられたキャッシュされていないデータストリームのための書込収集(write-gathering)バッファ１１１を有する。この書込収集バッファ１１は部分キャッシュラインを全キャッシュラインに集め、バスの最大使用時に、グラフィクス／オーディオプロセサ１１４からのデータを１つのキャッシュラインに送る。
【００４１】
コマンドプロセサ２００は主プロセサ１１０からの表示コマンドを受け、それらを解剖し、メモリコントローラ１５２を介して共用メモリ１１２からのそのコマンドを処理するに必要な付加的なデータを入手する。コマンドプロセサ２００は、２Ｄおよび／または３Ｄ処理およびレンダリングのために、頂点コマンドのストリームをグラフィクスパイプライン１８０に与える。グラフィクスパイプライン１８０はこれらのコマンドに基づいて映像を生成する。結果として得られた映像情報は、表示コントローラ／ビデオインタフェースユニット１６４によるアクセスのために主メモリ１２０に転送され得て、この映像情報は表示装置１５６上にパイプライン１８０のフレームバッファ出力を表示する。
【００４２】
図５はグラフィクスプロセサ１５４を用いて実行される処理を図解的に示すブロック論理フロー図である。主プロセサ１０は、グラフィクスコマンドストリーム２１０，表示リスト２１２および頂点アレイ２１４を主メモリ１１２にストアし、ポインタをバスインタフェース１５０を介してコマンドプロセサ２００に送る。主プロセサ１１０は主メモリ１１０内に割り付けられた１つ以上のグラフィクスＦＩＦＯバッファ２１０にグラフィクスコマンドをストアする。このコマンドプロセサ２００は、
・同期／フロー制御および負荷バランスのためにグラフィクスコマンドを受けかつバッファするオンチップＦＩＦＯメモリバッファ２１６を介して主メモリ１１２からのコマンドストリーム，
・オンチップコールＦＩＦＯメモリバッファ２１８を介して主メモリ１１２からの表示リスト２１２，および
・コマンドストリームからおよび／または主メモリ１１２の頂点アレイ２１４からの頂点アトリビュートを頂点キャッシュ２２０を介して
取り込む。
【００４３】
コマンドプロセサ２００はコマンド処理動作２００ａを実行し、そのコマンド処理動作２００ａはアトリビュート形式を浮動小数点フォーマットに変換し、結果的に得られた完全頂点ポリゴンデータをレンダリング／ラスタライゼーションのためにグラフィクスパイプライン１８０に与える。プログラマブルメモリ調停回路１３０（グラフィクスメモリ要求調停回路：図４）は、グラフィクスパイプライン１８０，コマンドプロセサ２００および表示コントローラ／ビデオインタフェースユニット１６４の間での共用主メモリ１１２へのアクセスを調停する。
【００４４】
図４は、グラフィクスパイプライン１８０が
・変換ユニット３００，
・セットアップ／ラスタライザ４００，
・テクスチャユニット５００，
・テクスチャ環境ユニット６００，および
・ピクセルエンジン７００
を含むことを示す。
【００４５】
変換ユニット３００は多様な２Ｄおよび３Ｄ変換および他の動作３００ａ（図５）を実行する。変換ユニット３００は変換処理３００ａに用いられるマトリクスをストアするための１つ以上のマトリクスメモリ３００ｂを含む。変換ユニット３００は、入来する頂点毎のジオメトリをオブジェクト空間からスクリーン空間へ変換し、そして入来するテクスチャ座標を変換しかつ投影テクスチャ座標（３００ｃ）を計算する。変換ユニット３００はまたポリゴンクリッピング／カリング(clipping/culling)３００ｄを実行する。変換ユニット３００ｂによってまた達成される照明処理３００ｅが、この実施例では８つまでの独立した照明について、頂点毎に照明計算を行う。変換ユニット３００は、エンボス(embossed)タイプのバンプマッピング効果およびポリゴンクリッピング／カリング動作（３００ｄ）のために、テクスチャ座標を発生する（３００ｃ）。
【００４６】
セットアップ／ラスタライザ４００はセットアップユニットを含み、このセットアップユニットは、変換ユニット３００からの頂点データを受け、三角形セットアップ情報を、エッジラスタライゼーション，テクスチャ座標ラスタライゼーションおよびカラーラスタライゼーションを実行する１つ以上のラスタライザユニット（４００ｂ）に送る。
【００４７】
テクスチャユニット５００は、オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよく、たとえば、
・主メモリ１１２からのテクスチャ５０４の検索、
・たとえばマルチテクスチャ処理，ポストキャッシュテクスチャ伸長，テクスチャフィルタリング，エンボシング，投影テクスチャの使用を通しての陰影付け，およびアルファトランスパーレンシおよびデプスを用いるＢＬＩＴを含むテクスチャ処理（５００ａ）、
・バンプマッピング，偽(pseudo)テクスチャおよびテクスチャタイル(tiling)効果（５００ｂ）のためのテクスチャ座標置換を計算するバンプマップ処理、および
・間接テクスチャ処理（５００ｃ）
を含むテクスチャリングに関連する種々のタスクを実行する。
【００４８】
図６ないし図２９は標準（非間接）および間接テクスチャルックアップ動作を行うための例示的なテクスチャ処理を図解する。この例示的なグラフィクスパイプライン回路および標準および間接テクスチャルックアップ動作を行うための手順のより詳細な説明は同時係属中の「グラフィクスシステムにおいて直接および間接テクスチャを処理するための方法および装置」（特願２００１−４２６６７号）に開示されていて、ここではそれを参照することによって取り入れる。
【００４９】
テクスチャユニット５００はテクスチャ環境処理（６００ａ）のためにフィルタされたテクスチャ値をテクスチャ環境ユニット６００に出力する。テクスチャ環境ユニット６００は、ポリゴンおよびテクスチャカラー／アルファ／デプスをブレンドし、また逆レンジベース(reverse range based)のフォグ効果を達成するために、テクスチャフォグ処理（６００ｂ）を実行する。テクスチャ環境ユニット６００はたとえばカラー／アルファ変調，エンボシング，詳細テクスチャ，テクスチャスワッピング，クランピングおよびデプスブレンディングに基づく多様な他の環境関連機能を実行する多数のステージを提供する。テクスチャ環境ユニット６００はまた、１つのパスでハードウェア内のテクスチャを結合（たとえば、減算）する。テクスチャ環境ユニットに関するより詳細は、「グラフィクスシステム用再循環シェードツリーブレンダ」（特願２００１−８１８９２号）に開示されていて、ここでは参照によってそれを取り入れる。
【００５０】
ピクセルエンジン７００はデプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を実行する。この実施例では、ピクセルエンジン７００はデータを埋め込み（オンチップ）フレームバッファメモリ７０２にストアする。グラフィクスパイプライン１８０は、フレームバッファおよび／またはテクスチャ情報をローカルにストアするために１つ以上の埋め込みＤＲＡＭメモリ７０２を含む。ｚ比較７００ａは、現在有効なレンダリングモードに依存して、グラフィクスパイプライン１８０におけるより早い段階で実行される（たとえば、ｚ比較は、もしアルファブレンディングが要求されていないならば早くに実行され得る）。このピクセルエンジン７００は表示コントローラ／ビデオインタフェースユニット１６４による主メモリ１１２へのアクセスのために、オンチップフレームバッファ７０２を周期的に書き込むコピー動作７００ｃを含む。このコピー動作７００ｃはまた動的テクスチャ合成効果のために、埋め込みフレームバッファ７０２の内容を主メモリ１１２中のテクスチャにコピーするために使用され得る。アンチエイリアシング(anti-aliasing：エイリアス補正)および他のフィルタリングがコピー動作中に実行され得る。最終的に主メモリ１１２にストアされるグラフィクスパイプライン１８０のフレームバッファ出力は、表示コントローラ／ビデオインタフェースユニット１６４によってフレーム毎に読み出される。表示コントローラ／ビデオインタフェース１６４は表示装置５６上での表示のためにディジタルＲＧＢピクセル値を与える。
ＥＭＢＭ手順の例
図３０は一般的なＥＭＢＭ手順の例を示す。高度に抽象化していくと、この発明のＥＭＢＭ手順の好ましい実施例は、表面法線や従法線（たとえば、法線および／または接線および従法線ベクトル）のような表面パラメータからテクスチャ座標を発生する（ブロック１４００Ａ）。これらの表面パラメータは、たとえば、ライティング計算に基づく変換ユニット３００によってもしくは主プロセサ１１０によって与えられる。
【００５１】
テクスチャ座標は表面パラメータに基づいて発生され、そして間接バンプマップテクスチャは結果的に得られたテクスチャ座標をオフセットする（摂動する）ために使用される（ブロック１４００Ｂ）。摂動されたテクスチャ座標は、次いで、環境テクスチャマップをルックアップするために使用される（ブロック１４００Ｃ）。環境テクスチャマップは複雑化したライティング効果を含んでもよく、あるいは、それはまた、たとえば、環境の球体反射マップもしくは他の所要の環境マップであってよい。結果的に得られたイメージは、次いで、処理されかつ表示される（ブロック１４００Ｄ）。
【００５２】
この発明に従ったＥＭＢＭは、上で述べた同時係属中の特許出願中において説明されるような間接テクスチャ処理の使用を通して達成される。このことによって、低価格のハードウェアを用いる１つのレンダリングパスにおいて多数のテクスチャルックアップを行うことができる。
【００５３】
上で述べた例においてバンプマップ中で表面の摂動をモデリングするために少なくとも２つの方法がある。１つの方法は、マッピングされているオブジェクトの表面ジオメトリを調和させる３次元モデルを使用することである。この３次元モデルはマッピングされている表面に対する３次元（ｘ，ｙ，ｚ）における高低差を記述することができる。３次元における高低差（それはｓ，ｔ，ｕのテクスチャ座標に対応する３つの座標の各々における偏導関数によって表現される）は、目空間中に変換され、そして回転され（たとえばオブジェクト回転の場合）、次いで、表面法線を摂動して環境マッピングのためのテクスチャ座標を提供するために使用される。
【００５４】
他の方法は、バンプマップを使用する２次元モデルを使用するためにバンプマップ中で表面の摂動をモデリングすることである。この２次元モデルはマッピングされているオブジェクトの表面ジオメトリに正確に対応する必要はない。２次元モデルはマッピングされている表面に対する２次元（ｘ，ｙ）における高低差を記述することができる。２次元における高低差（これはｘおよびｙ、すなわちｓおよびｔのテクスチャ座標における偏導関数によって表現され得る）は、次いで、表面従法線（接線および従法線）を摂動するために使用され、そしてそれぞれの摂動された従法線および表面法線は組み合わされて環境マッピングのためのテクスチャ座標を提供する。
【００５５】
第１の実施例においては、法線ベクトルの摂動が３Ｄ（ｄＸｄＹｄＺ）においてモデリングされ、アプリケーションプログラムが実行されている間、対応する類似のジオメトリ表面と調和ないし一致され、目空間へ変換される。この方法は、計算のためにごくわずかの座標処理ステージだけが必要であるので、バンプマッピングしたイメージを非常に速くレンダリングするという利点を有する。第２の実施例では、法線の摂動は平坦表面（ｄＳｄＴ）についてモデリングされ、アプリケーションプログラムの実行中において任意のオブジェクト表面上へマッピングされる。この第２の実施例はより多能的であるが、摂動された法線テクスチャ座標を計算するために、より以上の座標処理ステージおよび追加的な従法線表面ベクトル情報を必要とする（たとえば、間接テクスチャ参照動作を行う座標処理およびＴＥＶステージに関する上で述べた同時係属中の出願を参照されたい）。
【００５６】
３Ｄ（ｄＸｄＹｄＺ）においてモデリングされた摂動に基づくＥＭＢＭ
図３２は３Ｄ（ｄＸｄＹｄＺ）中においてモデリングされた法線ベクトルの摂動を使用するＥＭＢＭの例示的なプロセスを図解する論理的ブロック図である。１つの好ましい実施例においては、環境マッピングは球体反射マップを用いて行われ得る。実行されるＥＭＢＭのｄＸｄＹｄＺテクスチャルックアップは、基本的には、摂動された法線の球体反射マップ中へのルックアップである。（「間接」演算または動作について、これは符号化オフセットを使用するテクスチャワープ演算に類似する。）ＥＭＢＭのための法線ベクトルの摂動は頂点ベースで計算される。この例において、間接バンプマップ１４０１は、３Ｄモデリング空間における摂動された法線ベクトルのオフセットを含む。頂点における表面法線ベクトルが初期的に目空間へ回転（変換）される。回転した法線ベクトルのｘおよびｙの目空間成分から発生されたテクスチャ座標は、次いで、ｄＸｄＹｄＺバンプマップテクスチャから得られるオフセット（すなわち、偏導関数データｄＦ／ｄｘ，ｄＦ／ｄｙ）によってスケーリング（乗算）され、環境またはライティングマップへのテクスチャルックアップを行うために、法線テクスチャ座標の新たなセット（すなわち、摂動されたテクスチャ座標ｎ′ｘおよびｎ′ｙ）を発生する。
【００５７】
図３１の論理的ブロック図に示すように、間接テクスチャルックアップ動作（演算）は間接座標ｓ０，ｔ０を使用して行われ、直接テクスチャルックアップは座標ｓ１，ｔ１を用いて行われる。間接テクスチャルックアップの結果として、オフセットデータｓ，ｔおよびｕ（１４０２）が、たとえばｃｏｌバス５１９（図２６）にまたがる多ビットＲ，ＧおよびＢカラーチャネルラインを経由して、ｄＸｄＹｄＺバンプマップ１４０１から抽出される。この例において、バンプ関数Ｆの偏導関数データｄＦ／ｄｘおよびｄＦ／ｄｙに対応するｓおよびｔのオフセットデータだけが、摂動された法線成分のテクスチャ座標を計算する際に使用される。同じサイクル／ステージの間、法線ベクトル成分ｎｘおよびｎｙから発生されたテクスチャ座標ｓ１，ｔ１（１４０３）が、ｓおよびｔオフセットデータ１４０２によってスケーリング（乗算）される。この例において、ｓ１およびｔ１座標データは標準（非間接）座標としてバンプ処理ユニット５１２に与えられ、間接テクスチャルックアップからのオフセットデータＶ（１４０５）による乗算のためにマトリクスＭ（１４０４）にロードされる。結果的にスケーリングされた座標積ｎ′ｘ（１４０６）およびｎ′ｙ（１４０７）は摂動された法線を表し、環境マップルックアップ（１４０８）を行うために使用される。上述の実施例のために、バンプ処理ユニット５１２（図２５）において３×２マトリクスＭがモデリング空間から目空間への変換を行うために適宜のマトリクス要素をロードし、そして所望の場合、任意の複数の軸についてその場合マッピングしたオブジェクトの回転をロードする。アプリケーションプログラムは標準（非間接）座標ｓ１，ｔ１のために法線ベースのテクスチャ座標発生（テクセゲンtexgen）をセットアップする必要がある。
【００５８】
平坦表面（ｄＳｄＴ）についてモデリングした摂動に基づくＥＭＢＭ
図３２は単純化した平坦表面のＥＭＢＭ動作の例を示す。この例において、マッピングされている表面の位置を特定するテクスチャ座標ｓ，ｔが間接テクスチャルックアップ（１４１０）を行うために使用される。間接テクスチャは、バンプマップ関数によって規定される高低差を表すｄｂ／ｄｓ，ｄｂ／ｄｔ偏導関数を特定する。これらの偏導関数はテクスチャユニット５００によって、たとえば、ｃｏｌバス５１４（図２６）にまたがる多ビットの赤（Ｒ）および緑（Ｇ）カラーチャネルラインを介して、出力され得る。図３３はそのような偏導関数を与えるバンプマップテクスチャの例を示し、図３４が対応するバンプマップ関数を図解する。
【００５９】
間接テクスチャルックアップによって与えられる偏導関数はバンプユニット５００ｂに供給される。図３５はこれらの偏導関数とともにバンプユニット５００ｂが行うものの単純化した例を示す。バンプユニット５００ｂは従法線を偏導関数によって乗算し、次いで、その結果を合計する。すなわち、数１を実行する。
【００６０】
【数１】
0004658378.tif 000002
【００６１】
バンプユニット５００ｂは、次いで、この結果を使用して（たとえば合計することによって）表面法線を摂動する。結果的に得られた摂動された法線は環境マッピング（１４３４）のためのテクスチャ座標として使用される。
【００６２】
図３６は平坦表面（ｄＳｄＴ）についてモデリングした法線ベクトルの摂動を使用するＥＭＢＭの方法の一例を図解するより詳細な論理的ブロック図である。この実施例において、環境マッピングは球体反射マップを用いて行われる。ＥＭＢＭｄのＳｄＴテクスチャルックアップは、基本的に、球体反射マップへの摂動された法線のルックアップである。法線ベクトル座標の摂動が頂点毎のベースで計算される。これらの摂動は、接線，従法線および法線ベクトルを発生したテクスチャ座標（ｓ２，ｔ２），（ｓ３，ｔ３），（ｓ４，ｔ４）および間接テクスチャバンプマップから得られる偏導関数情報に基づく。この実施例において、間接バンプマップ（１４１０）は、平坦表面（ｄＳｄＴ）に関してモデリングされたＳおよびＴのための予め計算したデルタ（すなわち、偏導関数情報オフセット）を含む。頂点毎の表面法線，従法線および接線が目空間へ回転され、テクスチャ座標（ｓ２，ｔ２）（１４１２），（ｓ３，ｔ３）（１４１４），および（ｓ４，ｔ４）（１４１６）が各ベクトルのｘおよびｙの目空間成分（（Ｔｘ，Ｔｙ），（Ｂｘ，Ｂｙ），（Ｎｘ，Ｎｙ））から発生される。テクスチャ座標（ｓ２，ｔ２）（１４１２）および（ｓ３，ｔ３）（１４１４）を発生した接線および従法線が、間接テクスチャバンプマップ（１４１０）への間接テクスチャルックアップ中に抽出された予め計算した偏導関数オフセット（Ｆｕ，Ｆｖ）（１４１７）によってスケーリング（乗算）される（１４１３，１４１５）。結果的に得られたｘ成分の座標積ＦｕＴｙ（１４１８）およびＦｕＢｙ（１４２０）がｘ成分座標Ｎｘ（１４２２）に組み合わ（加算）され（１４３０）、摂動された法線のｘ成分テクスチャ座標ｎ′ｘを与える。同様に、結果的に得られたｙ成分の座標積ＦｖＴｙ（１４２４）およびＦｖＢｙ（１４２６）がｙ成分座標Ｎｙ（１４２８）と組み合わされ（１４３２）、摂動された法線のｙ成分テクスチャ座標ｎ′ｙを与える。２つの摂動された法線のテクスチャオフセット座標ｎ′ｘおよびｎ′ｙは、次いで、１つまたはそれ以上のテクスチャ環境もしくはライトマップへの標準（非間接）テクスチャルックアップを行う際に使用される（１４３４）。
【００６３】
図３７は平坦表面モデルを使用するＥＭＢＭを行うための例示的なステップを示す。この例において、最初のステージはバンプマップをルックアップする（ブロック１５０２）。第２および第３ステージは従法線を処理する（ブロック１５０４，１５０６）。第４ステージは法線を処理しかつライトマップ０(lightmap0)（たとえば、鏡面ライティング）をルックアップする（ブロック１５０８）。第５ステージはライトマップ１(lightmap1)（たとえば、拡散ライティング）をルックアップする（ブロック１５１０）。２つのライトマップを持たせる必要はなく、もし望むなら異なる数のライトマップが使用されてもよい。
【００６４】
図３８は１つの実施例におけるこの全体の手順を示すフロー図である。ブロック１４４０はバンプマップおよび環境ライトマップを創りもしくは与え、偏導関数（それは主プロセサ１１０上で実行されているアプリケーションによってダイナミックに計算され得る）を発生し、間接テクスチャ中へストアする。
【００６５】
ブロック１４４１は頂点毎の法線，従法線および接線ベクトルを供給する（これは変換ユニット３００によって行われる）。実施例において、これらの値は頂点毎に区別してインデックスされ、バンプマッピングのために必要なデータ量を圧縮するようにしている。ベクトルのすべてが１つのベースポインタ(base pointer)を共用する。
【００６６】
ブロック１４４１はまた、ベクトルを目空間へ回転させることができ、ｘおよびｙ座標を与える。これは図３６における標準（非間接）テクスチャ座標（ｓ２，ｔ２），（ｓ３，ｔ３），（ｓ４，ｔ４）のための法線ベースのテクスチャ発生をセットアップすることによって行われる。テクスチャ座標はポリゴン中で繰り返され、各ピクセル毎に間接テクスチャマッピングハードウェアへ供給される（ブロック１４４１）。
【００６７】
ブロック１４４２は偏導関数バンプマップからの偏導関数（高さオフセット）データをルックアップするためにテクスチャ座標ｓ１，ｔ１を用いる。これらの抽出された値は接線座標ｓ２，ｔ２によって乗算され、その結果がバンプユニット５００ｂによって保持される。ブロック１４４３は従法線座標ｓ３，ｔ３をこれら同じ偏導関数によって乗算し、先の積に加算する。ブロック１４４４は、次いで、法線座標ｓ４，ｔ４へ積和を加算し、環境マッピングのための摂動された法線座標を発生する。ブロック１４４５は任意の数の付加的なライトまたは環境マップをルックアップするためにこれらの値を再使用する。環境マッピングは、次いで、従来の方法で表面イルミネーションとブレンドされ（ブロック１４４６）、その結果が表示される。
【００６８】
図３９は図３８のプロセスを通して具体的なハードウェア処理が如何にステップ化されるかのより詳細なフロー図を示す。表１が平坦表面（ｄＳｄＴ）に関連してモデリングされた摂動に基づくＥＭＢＭのための連続的な処理ステージ中に行われる演算の順序の一例を示し、複数（２つ）の環境マッピングを行う。
【００６９】
【表１】
0004658378.tif 000003
【００７０】
上述の例において、ＴＥＶステージ３ないし５は、lightmap0（鏡面）＋lightmap1（拡散）＋表面のようなブレンドを行う。
動作理論
上で説明したように、バンプマッピングによって、多数のジオメトリを使用することなく、イメージに本物らしさを付加することができる。基本的に、バンプマッピングはピクセル毎に表面法線を効果的に摂動することによってポリゴンのシェーディングを変更する。このシェーディングは、その下にあるジオメトリはほぼ平坦であるにも拘わらず、表面をでこぼこに見せる。次のような議論がバンプマッピングの基本的な計算を簡単に説明する。
【００７１】
バンプマッピングの計算
一般に、表面の「でこぼこ(bumpiness) 」は２Ｄの高さの場(height field)で表され、「バンプマップ」と呼ばれる。このバンプマップは、各点（ｕ，ｖ）における法線Ｎに沿った平坦表面Ｐ（ｕ，ｖ）と所望のでこぼこ表面Ｐ′（ｕ，ｖ）との間のスカラ差Ｆ（ｕ，ｖ）で規定される。したがって、でこぼこ表面は数２で与えられる。
【００７２】
【数２】
0004658378.tif 000004
【００７３】
通常、Ｐはポリゴンを用いてモデリングされ、Ｆは描画プログラムまたは他のツールを用いて２Ｄイメージとしてモデリングされる。点（ｕ，ｖ）における法線ベクトルＮ′は、ｕおよびｖにおけるＰ′の偏導関数のクロス乗積ないし交差積によって計算され得る。この議論のために、偏導関数の項は次のような単純化した数３によって規定される。
【００７４】
【数３】
0004658378.tif 000005
【００７５】
したがって、Ｐ′（ｕ，ｖ）の偏導関数は数４および数５からの連鎖律を使って計算され得る。
【００７６】
【数４】
0004658378.tif 000006
【００７７】
【数５】
0004658378.tif 000007
【００７８】
【数６】
0004658378.tif 000008
【００７９】
もしＦが十分小さい場合を想定すると、上記数６における最後の項をほぼゼロと見なすことができ、偏導関数は数７のように表すことができる。
【００８０】
【数７】
0004658378.tif 000009
【００８１】
Ｎ′について交差積が数８で表されかつ数９のような定義が成り立つので、Ｎ′についての数８は数１０のように単純化できる。
【００８２】
【数８】
0004658378.tif 000010
【００８３】
【数９】
0004658378.tif 000011
【００８４】
【数１０】
0004658378.tif 000012
【００８５】
数１１のような接線ベクトルについての／Ｔ（Ｔバー）および／Ｂ（Ｂバー）ベクトルの表記を用いれば、摂動された法線は数１２に従って計算できる。
【００８６】
【数１１】
0004658378.tif 000013
【００８７】
【数１２】
0004658378.tif 000014
【００８８】
値ＦｕＦｖはたとえば、２Ｄバンプマップの「前進差分」を通してオフラインで計算される。ＰｕおよびＰｖは表面定義から直接にもしくは表面パラメータ化に適用される前進差分から計算され得る。前進差分は公知の従来の方法であって、或る方向における高さの場（バンプマップ）の第１導関数を計算（近似）するために使用され得る。たとえば、１次元のバンプマップが高さ関数Ｆ（ｓ）として表される場合、前進差分は数１３で与えられる。
【００８９】
【数１３】
0004658378.tif 000015
【００９０】
もし、たとえば、デルタがｓにおける１つのテクセルであり、バンプマップの幅がｗであれば、前進差分は、ｓがマップ座標に正規化されているとすると、数１４で与えられる。
【００９１】
【数１４】
0004658378.tif 000016
【００９２】
もしＦが連続するなら、上述の式がＦの第１導関数を近似する。２Ｄバンプマップについて、前進差分の計算は数１５のような偽コード(pseudo-code)の例によって行うことができる。
【００９３】
【数１５】
0004658378.tif 000017
【００９４】
ＡＰＩ  ＥＭＢＭ関数のコマンド
図２４−図２５に示すように、１つまたはそれ以上のグラフィクスＡＰＩ関数が偏った(deviational)間接テクスチャルックアップ動作をセットアップしかつ初期化するために使用される。間接テクスチャ動作（演算）をセットアップするための例示のＡＰＩ関数およびＥＭＢＭを行うためのパラメータが以下のように定義される。
【００９５】
GXSetTevIndBumpXYZ
この関数はＥＭＢＭのｄＸｄＹｄＺテクスチャの間接ルックアップをセットアップする。間接マップはオブジェクト（Ｘ，Ｙ，Ｚ）空間におけるオフセットを特定する。この種のルックアップは計算のためにただ１つのＴＥＶステージを必要とする。オブジェクト空間から目空間への法線についての変換を間接マトリクスがロードしなければならない。表面ジオメトリは各頂点において標準法線を与えるだけである。
【００９６】
【表２】
0004658378.tif 000018
【００９７】
GXSetTevIndBumpST
この関数はＥＭＢＭのｄＳｄＴテクスチャ間接ルックアップをセットアップする。間接マップは（Ｓ，Ｔ）空間におけるオフセットを特定する。このルックアップ関数はオフセットテクスチャ座標を計算するために３つのＴＥＶステージを必要とする。結果的に得られたテクスチャ座標は関数コールにおいて特定されたものの後の２ステージで利用される。最初の２ＴＥＶステージはテクスチャルックアップをディスエーブルする。３番目のステージではルックアップが実際に行われる。ＡＰＩ  GXSetTevIndRepeat 関数（後述）を後続のＴＥＶステージで使用し、追加のルックアップのために計算したテクスチャ座標を再使用することができる。表面ジオメトリは各頂点における法線／従法線／接線を与える。この関数は、入力標準ＳおよびＴ（これはオブジェクト法線から来る）に関連付けられるべきＳおよびＴオフセットを変換するために、バンプ処理ユニットにおいてダイナミックな形式のマトリクスの使用を利用可能にする。バンプユニットによって与えられるスケール値は２で割った反射マップのサイズ（かつしたがって反射マップは２の平方べきである）のサイズを含む。テクスチャ座標計算のためには静止(status)マトリクスは使用されず、ダイナミックマトリクス（すなわち図２３（図１２））のマトリクスＡおよびマトリクスＢならびにスケール値だけが用いられる。アプリケーションプログラムはテクスチャルックアップからの最初の２つのＴＥＶブレンドステージをディスエーブルしなければならない。
【００９８】
【表３】
0004658378.tif 000019
【００９９】
ＥＭＢＭ（ｄＳｄＴ）ルックアップのためのテクスチャ座標の計算のために３つのＴＥＶステージを使用することによって、その結果を利用して１以上のルックアップを行うことができる。たとえば、鏡面および拡散ライトマップについてのルックアップを行うことができる。計算のために３つのステージを使うことなしに連続的なルックアップを行うために、テクスチャ座標をフィードバックする特徴を使用することができる。
【０１００】
GXSetTevIndRepeat
この関数は、先のステージで計算したと同じテクスチャ座標を或るＴＥＶステージで使いたいときに使用する。これは、計算するのにテクスチャ座標が１つ以上のステージを必要とするときに有用であり、GXSetTevIndBumpST についても同様である。
【０１０１】
【表４】
0004658378.tif 000020
【０１０２】
互換性のある他の実施例
上述のシステム５０のあるものは上で述べた家庭用ビデオゲームコンソールの構成以外としても実現できる。たとえば、或るものは、システム５０をエミュレートする異なる構成を有するプラットフォームもしくはそれと同等のものにおいて、システム５０のために書かれたグラフィクスアプリケーションや他のソフトウェアを実行させることができる。もし、他のプラットフォームがシステム５０のいくつかのもしくはすべてのハードウェアおよびソフトウェアリソースをエミュレートしシミュレートしおよび／または提供することができれば、その他のプラットフォームはそのソフトウェアを成功裏に実行することができる。
【０１０３】
一例として、エミュレータがシステム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供できる。そのエミュレータシステムは、それのためにアプリケーションソフトウェアが書かれているシステムのいくつかのもしくはすべてのハードウェアおよび／またはソフトウェアコンポーネンツをエミュレートしもしくはシミュレートするソフトウェアおよび／またはハードウェアコンポーネンツを含む。たとえば、エミュレータシステムはパソコンのような汎用ディジタルコンピュータを含み、それはシステム５０のハードウェアおよび／またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行する。上述のオーディオシステムのＤＳＰ処理がパソコンによってエミュレートされ得る。
【０１０４】
或る汎用ディジタルコンピュータ（たとえばＩＢＭやマッキントッシュのパソコンおよびそれらの同等物）は、ダイレクトＸ(DirectX)または他の標準的な３ＤグラフィクスコマンドＡＰＩｓに従った３Ｄグラフィクスパイプラインを提供する３Ｄグラフィクスカードを備える。それらはまた、音声コマンドの標準的なセットに基づいて高品質のステレオ音声を提供するステレオ音声カードを備える。エミュレータソフトウェアを実行するそのようなマルチメディアのハードウェアを備えるパソコンは、システム５０のグラフィクスおよび音声性能とほぼ等しい十分な性能を有する。エミュレータソフトウェアはパソコンプラットフォーム上のハードウェアリソースを制御して、それのためにゲームプログラマがゲームソフトウェアを書いた家庭用ビデオゲームコンソールプラットフォームの処理，３Ｄグラフィクス，音声，周辺および他の能力をシミュレートする。
【０１０５】
図４０はホストプラットフォーム１２０１，エミュレータコンポーネント１３０３および記憶媒体６２上のゲームソフトウェア実行可能バイナリ映像を用いる全体のエミュレーション処理を図解する。ホスト１２０１は、たとえばパソコン，ビデオゲームコンソールあるいは十分な計算力を有する任意の他のプラットフォームのような汎用または特定目的ディジタル計算装置である。エミュレータ１３０３はそのホストプラットフォーム１２０１上で走るソフトウェアおよび／またはハードウェアであり、記憶媒体６２からのコマンド，データおよび他の情報のそのホスト１２０１によって実行可能な形態へのリアルタイム変換を行う。たとえば、エミュレータ１３０３は記憶媒体６２からシステム５０によって実行されるように意図された「ソース」であるバイナリ映像プログラム命令を取り込み、これらのプログラム命令をホスト１２０１によって実行されもしくは処理され得るターゲットとなる形態に変換する。
【０１０６】
一例として、ソフトウェアがＩＢＭパワーＰＣまたは他の特定のプロセサを用いるプラットフォーム上での実行のために書かれかつホスト１２０１が異なる（たとえばインテル）プロセサを用いるパソコンである場合、エミュレータ１２０３は記憶媒体１３０５からの１つのもしくは一連のバイナリ映像プログラム命令を取り込み、これらのプログラム命令を１つまたはそれ以上の同等のインテルのバイナリ映像プログラム命令に変換する。エミュレータ１２０３はまたグラフィクス／オーディオプロセサ１１４によって処理されるように意図されたグラフィクスコマンドおよびオーディオコマンドを取り込みかつ／あるいは生成し、そしてホスト１２０１上で利用可能なハードウェアおよび／またはソフトウェアグラフィクス／オーディオ処理リソースによって処理され得る形態にこれらのコマンドを変換する。一例として、エミュレータ１３０３はホスト１２０１の特別なグラフィクスおよび／または音声ハードウェア（たとえば標準的なダイレクトＸ，オープンＧＬおよび／または音声ＡＰＩｓ）によって処理され得るコマンドにこれらのコマンドを変換する。
【０１０７】
上で述べたビデオゲームシステムのいくつかのもしくはすべての特徴を与えるために用いられるエミュレータ１３０３は、また、エミュレータを使ってゲームを走らせている種々のオプションおよびスクリーンモードの選択を簡単化しもしくは自動化するグラフィックユーザインタフェース（ＧＵＩ）を備える。一例において、そのようなエミュレータ１３０３はさらにそのソフトウェアが本来的に目的とされたホストプラットフォームに比べてより増強された機能性を含むこともできる。
【０１０８】
エミュレータ内における特定のグラフィクスサポートハードウェアが例示的なＥＭＢＭ、間接テクスチャ参照の特徴、および図６−図３９で図示した機能（関数）を含まない場合には、エミュレータの設計者は、
・ＥＭＢＭおよび間接テクスチャ参照コマンドを、グラフィクスサポートハードウェアが理解する他のグラフィクスＡＰＩコマンドにトランスレートするか、・プロセサの速度に依存する性能における潜在的な相応の減少で、ＥＭＢＭおよび間接テクスチャ参照をソフトウェア的に実現するか、
・ＥＭＢＭおよび間接テクスチャ参照を利用した効果を含まないレンダリングイメージを与えるように、ＥＭＢＭや間接テクスチャ参照コマンドを「無視」する
のどれかの選択肢を有する。
【０１０９】
図６−図３６の論理ブロック図は、全体として、ソフトウェアで、ハードウェアで、あるいはソフトウェアとハードウェアの組み合わせによって、実現でき、他方、好ましい実施例は、これらの計算の殆どをハードウェア（たとえば、バンプユニット５００ｂ）を用いて行い、大きくした速度性能や他の利点を得るようにしている。しかしながら、他の実施例（たとえば、非常に速いプロセサが利用できるような場合）には、ここで述べた処理のいくつかまたは全部をソフトウェアで実現し、類似のまたは同一のイメージ効果を与えるようにしてもよい。
【０１１０】
図４１はエミュレータ１３０３で用いるに適したエミュレーションホストシステム１２０１を図解的に示す。このシステム１２０１は処理ユニット１２０３およびシステムメモリ１２０５を含む。システムバス１２０７がシステムメモリ１２０５を含む種々のシステムコンポーネンツを処理ユニット１２０３に結合する。システムバス１２０７は多様なバスアーキテクチャのいずれかを用いるメモリバスもしくはメモリコントローラ，周辺バスおよびローカルバスを含むいくつかのタイプのバス構造の任意のものである。システムメモリ１２０７はＲＯＭ１２５２およびＲＡＭ１２５４を含む。起動中においてのようにパソコンシステム１２０１中のエレメント（要素）間に情報を伝送する手助けをする基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）１２５６がＲＯＭ１２５２中にストアされる。システム１２０１はさらに種々のドライブおよび関連のコンピュータ読出可能な媒体を含む。ハードディスクドライブ１２０９が（典型的には固定の）磁気ハードディスク１２１１から読み出しそれへ書き込む。付加的な（たぶんオプションとしての）磁気ディスクドライブ１２１３が着脱可能な「フロッピィ」または他の磁気ディスク１２５１から読み出しかつそれへ書き込む。光ディスクドライブ１２１７はＣＤ−ＲＯＭあるいは他の光学媒体のような着脱自在な光ディスク１２１９から読み出しかつそれへ書き込む。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、ハードディスクドライブインタフェース１２２１および光ディスクドライブインタフェース１２２５によって、システムバス１２０７にそれぞれ接続される。これらのドライブおよびその関連するコンピュータ読出可能な媒体は、パソコンシステム１２０１のためのコンピュータ読出可能な命令，データ構造，プログラムモジュール，ゲームプログラムおよび他のデータの不揮発性の記憶媒体を提供する。他の構成では、コンピュータによってアクセス可能なデータをストアすることができる他のタイプのコンピュータ読出可能な媒体（たとえば磁気カセット，フラッシュメモリカード，ディジタルビデオディスク，ベルヌーイカートリッジ，ＲＡＭ，ＲＯＭあるいはその他のもの）がまた使用できる。
【０１１１】
エミュレータ１３０３を含む多数のプログラムモジュールがハードディスク１２１１，着脱可能な磁気ディスク１２１５，光ディスク１２１９および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４にストアされ得る。このようなプログラムモジュールはグラフィクス／音声ＡＰＩｓ，１つ以上のアプリケーションプログラム，他のプログラムモジュール，プログラムデータおよびゲームデータを提供するオペレーティングシステム（ＯＳ）を含む。ユーザは、キーボード１２２７，ポインティングデバイス１２２９，マイクロフォン，ジョイスティック，ゲームコントローラ，衛星アンテナ(satellite dish)，スキャナあるいはその他のもののような入力デバイスを通して、パソコンシステム１２０１にコマンドおよび情報を入力することができる。これらのそして他の入力デバイスは、システムバス１２０７に結合されたシリアルポートインタフェース１２３１を通して処理ユニット１２０３に接続され得るが、パラレルポート，ゲームポートファイヤワイヤバス(Fire Wire)もしくはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースによって接続されてもよい。モニタまたは他のタイプの表示デバイスがまたビデオアダプタ１２３５のようなインタフェースを介してシステムバス１２０７に接続される。
【０１１２】
システム１２０１はモデム１１５４またはインターネットのようなネットワーク１１５２を通しての通信を確立するための他のネットワークインタフェース手段を含む。内蔵もしくは外付けであってよいモデム１１５４はシリアルポートインタフェース１２３１を介してシステムバス１２３に接続される。システム１２０１がローカルエリアネットワーク１１５８を介して遠隔コンピュータ装置１１５０（たとえば他のシステム１２０１）と通信するのを許容するために、ネットワークインタフェース１１５６がまた設けられてもよい（もしくはそのような通信はダイヤルアップもしくは他の通信手段のようなワイドエリアネットワーク１１５２もしくは他の通信経路を介してもよい）。システム１２０１はプリンタのような周辺出力装置および他の標準的な周辺装置を含む。
【０１１３】
一例では、ビデオアダプタ１２３５は、マイクロソフト(Microsoft)のダイレクトＸ７．０、または他のバージョンのような標準的な３Ｄグラフィクスアプリケーションプログラマインタフェースに基づいて発行された３Ｄグラフィクスコマンドに応答して、高速の３Ｄグラフィクスレンダリングを提供する３Ｄグラフィクスパイプラインチップセットを含んでもよい。１組のスピーカ１２３７はまた、バス１２０７によって与えられる音声コマンドに基づいて高品質ステレオ音声を生成するハードウェアおよび埋め込みソフトウェアを提供する従来の「音声カード」のような音声生成インタフェースを介して、システムバス１２０７に接続される。これらのハードウェア能力によって記憶媒体１３０５中にストアされているソフトウェアを再生するためにシステム１２０１に十分なグラフィクスおよび音声の速度性能を与えることができる。
【０１１４】
上で参照したすべての書類をここで、参照によって取り入れる。
【０１１５】
最も現実的かつ好ましい実施例であると現在考えられているものに関連してこの発明が説明されたが、この発明は開示された実施例に限定されるものではなく、逆に、特許請求の範囲内に含まれる種々の変形例や等価的な構成をカバーするように意図されていることを理解されたい。
【図面の簡単な説明】
【図１】図１はインタラクティブコンピュータグラフィクスシステムの実施例を示す全体図である。
【図２】図２は図１実施例のコンピュータグラフィクスシステムのブロック図である。
【図３】図３は図２に示す実施例のグラフィクス／オーディオプロセサのブロック図である。
【図４】図４は図３に示す実施例の３Ｄグラフィクスプロセサのブロック図である。
【図５】図４のグラフィクス／オーディオプロセサの例示的な論理フロー図である。
【図６】図６はこの発明に従った間接テクスチャ処理の論理的全体図を図解するブロック図である。
【図７】図７は標準（非間接）テクスチャルックアップの単純な基本的な例を図解する機能ブロック図である。
【図８】図８はこの発明に従った間接テクスチャルックアップの単純な基本的な例を図解する機能ブロック図である。
【図９】図９はこの発明に従った間接テクスチャ処理を実現するための例示的な物理的構成の全体図を図解するブロック図である。
【図１０】図１０はテクスチャアドレス（座標／データ）プロセサ動作の論理的な全体図を図解するブロック図である。
【図１１】図１１はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図１２】図１２はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図１３】図１３はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図１４】図１４はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図１５】図１５はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図１６】図１６はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図１７】図１７はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図１８】図１８はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図１９】図１９はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図２０】図２０はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図２１】図２１はインタリーブした直接および間接テクスチャ処理の結果としての例示したテクスチャリングパイプラインにおけるピクセル直接座標およびピクセル間接テクスチャデータの相対的な進行を図解するブロック図である。
【図２２】図２２はこの発明に従って間接テクスチャ処理を実現するための例示的なステップを図解するフロー図である。
【図２３】図２３はこの発明に従った標準（非間接）テクスチャ処理の例を図解する機能動作図である。
【図２４】図２４はこの発明に従った標準（非間接）および間接テクスチャ処理の例を図解する機能動作図である。
【図２５】図２５は図５に示すテクスチャ座標／バンプ処理ユニットの詳細な例を示すブロック図である。
【図２６】図２６は図２５に示す間接テクスチャルックアップデータ／座標処理ロジック（ｐｒｏｃ）の詳細な例を示すブロック図である。
【図２７】図２７は図２６の処理ロジック回路（ｐｒｏｃ）によって使用される例示的なテクスチャオフセットマトリクスを示す。
【図２８】図２８は図２６の処理ロジック回路（ｐｒｏｃ）によって使用される例示的なテクスチャオフセットマトリクスを示す。
【図２９】図２９は図２６の処理回路中における動作を制御するための制御ロジックレジスタの例示的なデータフィールドフォーマットを図解するブロック図である。
【図３０】図３０は実施例のＥＭＢＭプロセスを示す。
【図３１】  図３１は３Ｄ（ｄＸｄＹｄＺ）内でモデリングした法線ベクトルの摂動を用いるＥＭＢＭの例示的なプロセスを図解する論理的ブロック図である。
【図３２】図３２は単純化した平坦表面のＥＭＢＭである。
【図３３】図３３は平坦表面のバンプマップテクスチャの例を示す。
【図３４】図３４は平坦表面のバンプマップの例を示す。
【図３５】図３５は平坦表面（ｄＳｄＴ）実施例のためのバンプマッピングの単純化した例を図解する論理的ブロック図である。
【図３６】  図３６は平坦表面（ｄＳｄＴ）に関してモデリングされた法線ベクトルの摂動を用いるＥＭＢＭの例示的なプロセスを図解する論理的ブロック図である。
【図３７】図３７は平坦表面（ｄＳｄＴ）のアプローチを用いてモデリングしたＥＭＢＭのための例示的なプロセスを示す。
【図３８】図３８は図３６実施例を実現するために行われる例示的なステップのフロー図である。
【図３９】図３９は図３６実施例を実現するための例示的なステップのより詳細なフロー図である。
【図４０】図４０は互換性のある実施例を示す。
【図４１】図４１は別の互換性のある実施例を示す。
【符号の説明】
５０  …インタラクティブ３Ｄコンピュータグラフィクスシステム
５４  …主ユニット
１１０  …主プロセサ
１１２  …主メモリ
１８０  …グラフィクスパイプライン
２００  …キャッシュ／コマンドプロセサ
３００  …変換ユニット
４００  …ラスタライザ
５００，６００２−６００６，６０１０−６０１４  …テクスチャユニット
６００  …テクスチャ環境ユニット
【図１】
0004658378.tif 000021
【図２】
0004658378.tif 000022
【図３】
0004658378.tif 000023
【図４】
0004658378.tif 000024
【図５】
0004658378.tif 000025
【図６】
0004658378.tif 000026
【図７】
0004658378.tif 000027
【図８】
0004658378.tif 000028
【図９】
0004658378.tif 000029
【図１０】
0004658378.tif 000030
【図１１】
0004658378.tif 000031
【図１２】
0004658378.tif 000032
【図１３】
0004658378.tif 000033
【図１４】
0004658378.tif 000034
【図１５】
0004658378.tif 000035
【図１６】
0004658378.tif 000036
【図１７】
0004658378.tif 000037
【図１８】
0004658378.tif 000038
【図１９】
0004658378.tif 000039
【図２０】
0004658378.tif 000040
【図２１】
0004658378.tif 000041
【図２２】
0004658378.tif 000042
【図２３】
0004658378.tif 000043
【図２４】
0004658378.tif 000044
【図２５】
0004658378.tif 000045
【図２６】
0004658378.tif 000046
【図２７】
0004658378.tif 000047
【図２８】
0004658378.tif 000048
【図２９】
0004658378.tif 000049
【図３０】
0004658378.tif 000050
【図３１】
0004658378.tif 000051
【図３２】
0004658378.tif 000052
【図３３】
0004658378.tif 000053
【図３４】
0004658378.tif 000054
【図３５】
0004658378.tif 000055
【図３６】
0004658378.tif 000056
【図３７】
0004658378.tif 000057
【図３８】
0004658378.tif 000058
【図３９】
0004658378.tif 000059
【図４０】
0004658378.tif 000060
【図４１】
0004658378.tif 000061