(57)【特許請求の範囲】
【請求項１】
デプスバッファリングにより陰面消去のｚテストを行う、３Ｄイメージを生成するイメージ生成装置であって、
テクスチャマッパへテクスチャ座標を与える手段、
テクスチャマッパを使用してテクスチャ座標に基づいて、記憶したｚテクスチャマップを再サンプリングする手段、
前記デプスバッファリングのためのデータを特定するために、アクセスした記憶したｚテクスチャマップに少なくとも部分的に基づいて、スクリーンもしくは目空間においてデプスブレンドを行う手段、および
デプスバッファしたデータに少なくとも部分的に基づいてイメージをレンダリングする手段を備え、
前記デプスブレンドを行う手段は、ピクセル毎のプリミティブｚ値のオフセットに対する置換として、アクセスした記憶したｚテクスチャマップ値を用いる、イメージ生成装置。
【請求項２】
記憶したｚテクスチャマップは、対応するカラーテクセルフォーマットと互換のある複数のｚテクセルフォーマットのいずれか１つを有するｚテクセルを含む、請求項１記載のイメージ生成装置。
【請求項３】
さらに、ｚテクスチャマップをデプスバッファへレンダリングし、次いで、レンダリングしたｚテクスチャマップをデプスバッファからテクスチャマッパへコピーする手段を備える、請求項１または２記載のイメージ生成装置。
【請求項４】
さらに、ｚテクセル値を使用して、表面に対応するラスタライズしたｚ値を選択的にオフセットしもしくは置換する手段を備える、請求項１ないし３のいずれかに記載のイメージ生成装置。
【請求項５】
テクスチャマッパは、共通のマルチパステクスチャマッピングハードウェアを使用して、異なるパスにおいて、カラーおよびｚテクスチャマッピングを行う、請求項１ないし４のいずれかに記載のイメージ生成装置。
【請求項６】
さらに、ｚテクセル値とラスタライズした表面ｚ値とのスクリーン空間におけるブレンドにバイアス値を加える手段を備える、請求項１ないし５のいずれかに記載のイメージ生成装置。
【請求項７】
隠れ表面除去演算における使用のためにデプス値を生成する、zブレンダであって、
ピクセルに対応する少なくとも１つのラスタライズしたデプス値を受けるようにされた第１入力、
少なくとも１つのｚテクセル値を受けるようにされた第２入力、
第１および第２入力に結合され、第１入力に第２入力を選択的に加えることによってまたは第１入力を第２入力で置換することによって前記ピクセルについてのｚブレンドを与えるブレンドロジック、および
ｚブレンドへバイアス値を加算して前記隠れ表面除去演算における使用のために少なくとも１つのデプス値を与える別のブレンドロジックを備える、ｚブレンダ。
【請求項８】
グラフィクスパイプラインにおけるマルチステージのテクスチャ環境ピクセルシェーダであって、
複数の入力選択器、
複数の入力選択器に結合されるテクスチャ環境演算器、
少なくとも１つの中間値記憶レジスタ、および
少なくとも１つのステージにおいて、再サンプリングしたｚテクセル値にピクセル毎のプリミティブ表面ｚ値をブレンドして遮蔽テストのためのブレンドしたｚ値を与えるｚブレンダを備える、グラフィクスパイプライン。
【請求項９】
ｚブレンダは最後のピクセルシェーダステージ内においてブレンドする、請求項８記載のグラフィクスパイプライン。
【発明の詳細な説明】
【０００１】
【発明の分野】
この発明はコンピュータグラフィクスに関し、より特定的には、家庭用ビデオゲームプラットフォームのようなインタラクティブなグラフィクスシステムに関する。さらに特定的には、この発明は、シーンの遮蔽を可視化する複雑さを増大させるための２次元ｚテクスチャデプスマップの使用に関する。
【０００２】
【発明の背景および発明の概要】
多くの人々はかなりリアルな恐竜，エイリアン，生き生きとしたおもちゃおよび他の空想的な動物を含む映画をかつて見たことがある。そのようなアニメーションはコンピュータグラフィクスによって可能とされた。そのような技術を用いて、コンピュータグラフィクスのアーティストは、各オブジェクトがどのように見えるべきかや時間の経過とともに外見上どのように変化すべきかを特定し、コンピュータは、そのオブジェクトをモデル化してテレビジョンやコンピュータスクリーンのようなディスプレイに表示する。コンピュータは、表示される映像の各部分を、場面中の各オブジェクトの位置や向き，各オブジェクトを照らすように見える照明の方向，各オブジェクトの表面テクスチャ，および他の要素に正確に基づいて、色付けしまた形作るために必要な多くのタスクを実行する。
【０００３】
コンピュータグラフィクスの生成は複雑であるので、ここ数年前のコンピュータによって生成された３次元（３Ｄ）グラフィクスは、ほとんど高価な特殊なフライトシミュレータ，ハイエンドグラフィクスワークステーションおよびスーパーコンピュータに限られていた。大衆は映画や高価なテレビコマーシャルにおいてこれらのコンピュータシステムによって生成された映像のいくつかを見たが、大部分の人はグラフィクスを生成しているコンピュータに対して実際に相互作用をさせることはできない。たとえば、Nintendo64（登録商標）や今や利用可能であるパソコン用の種々の３Ｄグラフィクスカードのような比較的安価な３Ｄグラフィクスプラットフォームの利用によって、このすべてが変わった。今や、家庭や会社の比較的安価なコンピュータグラフィクスシステム上でエキサイティングな３Ｄアニメーションやシミュレーションに対して相互作用を及ぼすことができる。
【０００４】
多年に亘って、グラフィクスシステムの設計者が直面した問題は、３Ｄジオメトリを用いて増大した複雑さのすべての局面をモデリングするコストの負担なしに、シーンの可視的な複雑さを増大させるという問題である。この問題に対して種々のソリューションが提案された。１つの例として、コンピュータグラフィクスは長い間分子モデル（たとえば、複雑な化学合成構造における数百ないし数千の分子）のイメージを表示してきた。このような分子モデルは、異なるデプス(depth)に割り当てられるべき分子モデル内で異なるパーツ（たとえば、分子）を必要とする。複雑な分子モデルを作り上げる数百ないし数千のポリゴンのモデリングに関する計算の複雑さを回避するために、１９８０年代の早い時期に使用された１つの技術は、モデル中の各異なる分子を２Ｄ「スプライト(sprite)」（たとえば、ビットマップ化したカラー画像）として定義することであった。平面デプスイメージ（たとえば、一定デプスの「デプスストライプ」）が各カラースプライトに関連づけられた。分子モデルをレンダリングするために、いわゆる「ブリット（blit：複写）」演算が、種々のカラースプライトをカラーフレームバッファ内の適宜の位置にコピーし、また関連のデプスストライプをデプス（ｚ）バッファの適宜の位置にコピーするために使用された。１つの例示的な配置においては、「ｚブリット(z-blit)」演算器は、典型的には、「ブリット」の平面内での１対１のコピーを使用して、ｚバッファ内のベースデプス値にオフセットとしてデプスイメージを加えた。そのような技術は異なるデプスで異なるオブジェクトを効率的にレンダリングするために使用され得た。
【０００５】
モデリングおよびレンダリングのコストの相応の増加を負うことなしにイメージの複雑さを増大させることにテクスチャリング(texturing)がまた広い範囲で成功している。一般的にいえば、テクスチャリングは、何らかのイメージ、関数あるいは他のデータを用いて表面の各位置の外観を変更する。一例として、レンガ壁における各レンガのジオメトリを精細に表現するのに代えて、レンガ壁の２次元のカラーイメージが１つのポリゴンの表面に付与され得る。そのポリゴンを見るとき、ポリゴンが位置している場所にカラーイメージが現れる。モデリングにおける大きな節約を理由として、この方法でイメージと表面とを結合することによってメモリや速度が得られ、テクスチャリングが広く受け入れられるようになり、ほとんどの現代の３Ｄグラフィクスシステムはそれを何らかの形であるいは他の形で使用する。
【０００６】
テクスチャリングは、たとえば、異なる表面デプスの外観を作るのに使用される。１つの興味深いテクスチャリング技術は、「バンプマッピング(bump mapping)」と呼ばれる。バンプマッピングは、或る形態で（たとえば、でこぼこ、しわ、波打ち、ざらざら、等）、表面を非平坦に見せる。バンプマッピングの隠れた基本的な技術思想は、テクスチャをアクセスすることによって表面上の表面法線を変更することである。表面が光源によって照らされているとき、結果的に得られた計算が、バンプ（でこぼこ）および表面粗さの可視的な外観を作り出す。たとえば、平成１３年６月２１日付で出願した「グラフィクスレンダリングシステムにおいてエンボス型のバンプマッピングを導入するためにテクスチャ座標の置換を効率的に行う方法および装置」と題する同時係属中の特許出願（特願２００１−１８７５２４）および平成１３年５月２４日付でした「グラフィクスシステムにおいて環境を写し込んだバンプマッピングを行う方法および装置」と題する同時係属中の特許出願（特願２００１−１５５０７９）を参照されたい。なお、ここでは、それらのすべてを参照によって取り入れる。
【０００７】
バンプマッピング技術は表面の複雑さの説得力のある錯覚を与えることができるけれども、バンプマップが付与された下地の表面がその基礎となるプリミティブによって規定される単純な（たとえば、平面）表面であり続けるという制限を有している。このことが理由で、表面の複雑さの錯覚はオブジェクトのシルエットの周囲をつぶす。そのようなエッジにおいて、看者はリアルなバンプがなく単にスムーズな外形線があるということに気がつく。たとえば、平滑な球体の外観をでこぼこにするためにバンプマッピングのようなテクスチャ技術を用いることを考える。球体が３Ｄ世界中において他のオブジェクトの一部を遮蔽するように置かれているがこの他のオブジェクトの一部は見えるような場合を仮定する。隠れた表面の視点から、その球体のエッジの可視性は、でこぼことは反対に、絶対的に平滑である。これは、テクスチャリング効果が球体のカラーまたはアルファだけを変更し、選択した視点に関連してそれが後ろにある他のオブジェクトを遮蔽する観点から、球体の特性を変更しないからである。現実の世界において、もし球体が実際にでこぼこしていれば、我々は、シルエットのエッジまたは球体の後ろに部分的に隠れたオブジェクトとの他の交点においてでこぼこを見ることができる。
【０００８】
シェード(Shade)等は、「層化デプスイメージ(Layered Depth Image)」と題するＳＩＧＧＲＡＰＨ９８コンピュータグラフィクス会報、年次会議シリーズ、２３１−２４１ページ（１９９８年７月１９−２４日）において、シーンを歪ませかつ視差を補正する目的のために、スプライトにデプスを付与するために、２Ｄイメージへデプス情報を付加することを述べている。この論文は、スプライトの各ピクセルにおいて非平面の置換成分を付加することによって、スプライトのリアリズムを高めることを述べている。シェード等の論文は、デプス付きのスプライトは、或る状況下では、ｚバッファリングなしで、テクスチャマッピングを用いてレンダリングすることができると述べている。
【０００９】
過去に多くの仕事がなされたが、さらなる改良が可能でありかつ望まれている。
【００１０】
この発明は、プリミティブのデプスをブレンドする際の使用のためにスプライトデプスイメージをテクスチャマッピング（「ｚ」テクスチャ）するようにされたグラフィクスパイプライン中のカラーテクスチャマッピングハードウェアを使用することによって、そのような改良を提供する。結果的に得られたピクセルのＺ置換(displacement)オフセットは、デプスバッファされ(depth buffered)（たとえば、各ピクセルにおいてｚテクスチャとプリミティブデプスの位置との間をブレンドすることによって）、比較的低コストで、遮蔽ベースの(occlusion-based)可視化効果を提供する。
【００１１】
この発明によって提供される１つの局面によれば、３Ｄイメージを生成する方法は、テクスチャマッパへテクスチャ座標を付与するステップ、テクスチャ座標に基づいて記憶しているｚテクスチャマップをアクセス（たとえば、再サンプリング）するためにテクスチャマッパを使用するステップを含む。たとえば、テクスチャマッパは不均一なもしくは非直線マッピングをその記憶しているｚテクスチャマップに与える。デプスブレンドがそのアクセスされた記憶ｚテクスチャマップに基づいて行われ（たとえば、サンプリングしたプリミティブのｚ値とサンプリングしたｚテクスチャ値との間でブレンドすることによって）、オブジェクトの異なるピクセルについて異なる結果的なｚ値を与える。この発明のこの局面によれば、再サンプリングしたｚイメージは、サンプリングした３Ｄ表面上に効果的にマッピングされる。イメージは特定したデプスバッファされたデータに少なくとも部分的に基づいてレンダリングされる。
【００１２】
この発明によって提供される他の局面によれば、ｚブレンダは第１および第２入力を含む。第１入力は少なくとも１つのピクセルに対応する少なくとも１つのラスタライズされたデプス値を受けるようにされる。第２入力は少なくとも１つのｚテクセル値を受けるようにされる。ブレンドロジックが第１および第２入力に結合され、第１入力に第２入力をブレンドし、ｚブレンドを与える。別のブレンドロジックは、ｚブレンドへバイアス値を加え、隠れ表面除去演算(hidden surface removal operation)における使用のために、少なくとも１つのデプス値を与える。
【００１３】
この発明によって提供されるさらに他の局面によれば、テクスチャユニットと内蔵ｚバッファとを含むグラフィクスパイプラインは、内蔵ｚバッファの少なくとも一部をテクスチャマッパに関連するテクスチャメモリへコピーすることができ、コピーしたｚテクスチャに基づいてｚテクスチャマッピング演算を行う。
【００１４】
この発明によって提供されるなおも他の局面によれば、内蔵テクスチャメモリを有するテクスチャユニットとカラーフレームバッファおよびｚバッファを含む内蔵フレームバッファとを備えるグラフィクスパイプラインによって、内蔵テクスチャメモリが複数のフォーマットのいずれかでｚテクスチャをストアするように構成され得る。
【００１５】
この発明によって提供される他の局面によれば、マルチステージのテクスチャ環境ピクセルシェーダは、複数の入力選択器、複数の入力選択器に結合されたテクスチャ環境演算器、および少なくとも１つの中間値記憶レジスタを含む。ｚブレンダは、そのマルチステージテクスチャ環境ユニットの少なくとも１つのステージにおいてｚテクセル値にプリミティブ表面ｚ値をブレンドするようにされ、遮蔽テスト(occulusion-testing)のためのブレンドしたｚ値を与える。
【００１６】
この発明によって提供される付加的な特徴は次のようである。
【００１７】
・カラー／アルファテクスチャリングのために、そしてデプス付スプライトまたは他のアプリケーションのためのｚテクスチャリングのために、共通のテクスチャマッピングハードウェアが使用される。
【００１８】
・ｚブレンダが目空間もしくはスクリーン空間においてｚブレンド動作を行い、表面ｚ値にｚテクセル値をブレンドする。
【００１９】
・ｚテクセルはプリミティブ表面のデプスに関連する絶対デプスもしくはデプス置換を表現し得る。
【００２０】
・ｚテクセル値はプリミティブ表面のｚ値に加えられもしくは置換される。
【００２１】
・一定バイアスが、もし望むなら、ｚブレンドに加算される。
【００２２】
・結果的に得られたデプス値が遮蔽テストのために使用される。
【００２３】
・ｚテクスチャは内蔵ｚバッファの部分的なコピーアウトによって発生され得て、コピーしたデプス値をテクスチャマッピングハードウェアに与える。
【００２４】
・多数のｚテクセルフォーマットがサポートされる。
【００２５】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００２６】
【実施例】
図１は対話型（インタラクティブ）３Ｄコンピュータグラフィクスシステム５０の一例を示す。システム５０は対話型３Ｄビデオゲームをステレオ音声とともにプレイするのに用いられ得る。これはまた多様な他のアプリケーションにも用いられ得る。
【００２７】
この実施例において、システム５０は３次元世界のディジタル表現ないしモデルをインタラクティブにかつリアルタイムに処理することができる。システム５０は、任意の視点から、その世界の一部または全部を表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂまたは他の入力デバイスからのリアルタイム入力に応答して、視点をインタラクティブに変化できる。このことによって、ゲームプレーヤは、その世界内もしくは外の誰かの目を通してその世界を見ることができる。システム５０は、リアルタイム３Ｄインタラクティブ表示を必要としないアプリケーション（たとえば２Ｄ表示の発生やおよび／またはノンインタラクティブ表示）に使用できるが、高品質の３Ｄ映像を非常に速く表示する能力は、非常にリアルでエキサイティングなゲームプレイや他のグラフィクスインタラクションを創造するのに使用され得る。
【００２８】
システム５０を用いてビデオゲームまたは他のアプリケーションをプレイするために、ユーザはまず、主ユニット５４を、カラーテレビ５６または他の表示装置に、両者の間にケーブル５８を接続することによって、接続する。主ユニット５４はカラーテレビ５６を制御するためのビデオ信号およびオーディオ信号を発生する。ビデオ信号はテレビジョン画面５９上に表示されている映像を制御するものであり、オーディオ信号はテレビのステレオスピーカ６１Ｌおよび６１Ｒを通して音声として再生される。
【００２９】
ユーザはまた主ユニット５４を電源につなぐ必要がある。この電源は従来のＡＣアダプタ（図示せず）であってよく、そのＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、主ユニット５４を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例ではバッテリが用いられてもよい。
【００３０】
ユーザは主ユニット５４を制御するために手持ちコントローラ５２ａおよび５２ｂを用いる。コントロール６０は、たとえば、３Ｄ世界内においてテレビ５６に表示されているキャラクタが移動すべき方向（上または下、左または右、近づいてまたは遠ざかって）を指示するために使用され得る。コントロール６０は、また他のアプリケーションのための入力（たとえばメニュー選択，ポインタ／カーソル制御，その他）を与える。コントローラ５２は多様な形態をとり得る。この実施例においては、図示されるコントローラ５２は、各々ジョイスティック，押しボタンおよび／または方向スイッチのようなコントロール６０を含む。コントローラ５２は、ケーブルによって、もしくは電磁波（たとえば電波または赤外線）を介してワイヤレスで、主ユニット５４に接続され得る。
【００３１】
ゲームのようなアプリケーションをプレイするために、ユーザはビデオゲームもしくはプレイしたいと思う他のアプリケーションをストアしている適宜の記憶媒体６２を選択し、その記憶媒体を主ユニット５４のスロット６４に差し込む。記憶媒体６２は、たとえば、特別にエンコードされおよび／または記号化された光学的ならびに／もしくは磁気的ディスクであってよい。ユーザは主ユニット５４をオンするために電源スイッチ６６を操作し、主ユニットがその記憶媒体６２にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザは主ユニットに入力を与えるためにコントローラ５２を操作する。たとえば、コントロール６０を操作することによってゲームもしくは他のアプリケーションをスタートさせる。他のコントロール６０を動かすことによって、動画キャラクタを異なる方向に移動させ、または３Ｄ世界におけるユーザの視点を変化させる。記憶媒体６２にストアされている具体的なソフトウェアによって、コントローラ５２上の種々のコントロール６０は異なる時間で異なる機能を達成することができる。
全体システムの例
図２はシステム５０の例示的なコンポーネントのブロック図であり、重要なコンポーネントは、
・主プロセサ（ＣＰＵ）１１０，
・主メモリ１１２，および
・グラフィクス／オーディオプロセサ１１４
を含む。
【００３２】
この実施例において、主プロセサ１１０（たとえばＩＢＭパワーＰＣ７５０の改良版）は、手持ちコントローラ５２（および／または他の入力デバイス）からの入力をグラフィクス／オーディオプロセサ１１４を通して受ける。主プロセサ１１０はユーザ入力にインタラクティブに応答し、光ディスクドライブのような大容量記憶媒体アクセス装置１０６を介して、たとえば外部記憶媒体６２から供給されるビデオゲームもしくは他のプログラムを実行する。一例として、ビデオゲームプレイの状況では、主プロセサ１１０は、多様なインタラクティブ制御機能に加えて、衝突検出および動画処理を実行する。
【００３３】
この実施例では、主プロセサ１１０は３Ｄグラフィクス／オーディオコマンドを発生し、それらをグラフィクス／オーディオプロセサ１１４に送る。グラフィクス／オーディオプロセサ１１４はこれらのコマンドを処理し、ディスプレイ５９上での可視映像を生成し、ステレオスピーカ６１Ｒおよび６１Ｌもしくは他の適宜の音声発生デバイス上でのステレオ音声を生成する。
【００３４】
実施例のシステム５０はビデオエンコーダ１２０を含み、このビデオエンコーダは、グラフィクス／オーディオプロセサ１１４からの映像信号を受けて、その映像信号をコンピュータモニタや家庭用テレビ５６のような標準的な表示装置上での表示に適したアナログおよび／またはディジタルビデオ信号に変換する。システム１００はまたオーディオコーデック（圧縮器／伸長器）１２２を含み、このオーディオコーデックはディジタル化されたオーディオ信号を圧縮しかつ伸長するとともに、必要に応じてディジタルオーディオ信号のフォーマットとアナログオーディオ信号のフォーマットとの間で変換を行う。オーディオコーデック１２２はバッファ１２４を介してオーディオ入力を受けることができ、処理（たとえば、プロセサが生成したおよび／または大容量記憶媒体アクセス装置１０６のストリームオーディオ出力を介して受信した他のオーディオ信号とのミキシング）するために、そのオーディオ入力をグラフィクス／オーディオプロセサ１１４に与える。この実施例におけるグラフィクス／オーディオプロセサ１１４は、オーディオタスクに利用可能なオーディオメモリ１２６にオーディオ関連情報をストアすることができる。グラフィクス／オーディオプロセサ１１４は、結果的に得られるオーディオ出力信号を、圧縮およびアナログ信号への変換のために、オーディオコーデック１２２に与え、したがってそのオーディオ出力信号が（たとえばバッファアンプ１２８Ｌおよび１２８Ｒを介して）スピーカ６１Ｌおよび６１Ｒによって再生され得る。
【００３５】
グラフィクス／オーディオプロセサ１１４はシステム１００内に存在するであろう種々の付加的なデバイスと通信する能力を有する。たとえば、パラレルディジタルバス１３０は大容量記憶媒体アクセス装置１０６および／または他のコンポーネントと通信するために用いられる。シリアル周辺バス１３２は多様な周辺機器または、たとえば、
・ＰＲＯＭおよび／またはＲＴＣ（リアルタイムクロック）１３４，
・モデム１３６もしくは他のネットワークインタフェース（それはシステム１００を、プログラム命令および／またはデータがダウンロードもしくはアップロードされ得るインターネットあるいは他のディジタルネットワークのようなテレコミュニケーションネットワーク１３８に接続する），および
・フラッシュメモリ１４０
を含む他のデバイスと通信する。
別の外部シリアルバス１４２は、付加的な拡張メモリ１４４（たとえばメモリカード）もしくは他のデバイスと通信するために使用され得る。コネクタが種々のデバイスをバス１３０，１３２および１４２に接続するために使用され得る。
グラフィクス／オーディオプロセサの例
図３は実施例のグラフィクス／オーディオプロセサ１１４を示すブロック図である。或る実施例においては、グラフィクス／オーディオプロセサ１１４はシングルチップＡＳＩＣであってよい。この実施例においては、グラフィクス／オーディオプロセサ１１４は、
・プロセサインタフェース１５０，
・メモリインタフェース／コントローラ１５２，
・３Ｄグラフィクスプロセサ１５４，
・オーディオディジタル信号プロセサ（ＤＳＰ）１５６，
・オーディオメモリインタフェース１５８，
・オーディオインタフェース／ミキサ１６０，
・周辺コントローラ１６２，および
・表示コントローラ１６４
を含む。
【００３６】
３Ｄグラフィクスプロセサ１５４はグラフィクス処理タスクを実行する。オーディオディジタル信号プロセサ１５６はオーディオ処理タスクを実行する。表示コントローラ１６４は主メモリ１１２からの映像情報にアクセスし、表示装置１０２上での表示のためにその映像情報をビデオエンコーダ１２０に与える。オーディオインタフェース／ミキサ１６０はオーディオコーデック１２２をインタフェースし、また異なるソースからのオーディオ（たとえば、大容量記憶媒体アクセス装置１０６からのオーディオストリーム，オーディオＤＳＰ１５６の出力，およびオーディオコーデック１２２を通して受ける外部オーディオ入力）をミックスすることができる。プロセサインタフェース１５０は主プロセサ１１０およびグラフィクス／オーディオプロセサ１１４の間のデータおよび制御インタフェースを提供する。
【００３７】
メモリインタフェース１５２はグラフィクス／オーディオプロセサ１１４とメモリ１１２との間のデータおよび制御インタフェースを提供する。この実施例においては、主プロセサ１１０は、プロセサインタフェース１５０およびグラフィクス／オーディオプロセサ１１４の一部であるメモリインタフェース１５２を介して、主メモリ１１２にアクセスする。周辺コントローラ１６２はグラフィクス／オーディオプロセサ１１４と上で述べた種々の周辺機器との間のデータおよび制御インタフェースを提供する。オーディオメモリインタフェース１５８はオーディオメモリ１２６とのインタフェースを提供する。
グラフィクスパイプラインの例
図４は図３の３Ｄグラフィクスプロセサ１５４をより詳細に示すグラフィクス処理システムを示す。この３Ｄグラフィクスプロセサ１５４は、とりわけ、コマンドプロセサ２００および３Ｄグラフィクスパイプライン１８０を含む。主プロセサ１１０はデータストリーム（たとえばグラフィクスコマンドストリームおよび表示リスト）をコマンドプロセサ２００に通信する。主プロセサ１１０はメモリレイテンシを最小化するために２レベルキャッシュ１１２を有し、さらにまたグラフィクス／オーディオプロセサ１１４に向けられたキャッシュされていないデータストリームのための書込収集(write-gathering)バッファ１１１を有する。この書込収集バッファ１１は部分キャッシュラインを全キャッシュラインに集め、バスの最大使用時に、グラフィクス／オーディオプロセサ１１４からのデータを１つのキャッシュラインに送る。
【００３８】
コマンドプロセサ２００は主プロセサ１１０からの表示コマンドを受け、それらを解剖し、メモリコントローラ１５２を介して共用メモリ１１２からのそのコマンドを処理するに必要な付加的なデータを入手する。コマンドプロセサ２００は、２Ｄおよび／または３Ｄ処理およびレンダリングのために、頂点コマンドのストリームをグラフィクスパイプライン１８０に与える。グラフィクスパイプライン１８０はこれらのコマンドに基づいて映像を生成する。結果として得られた映像情報は、表示コントローラ／ビデオインタフェースユニット１６４によるアクセスのために主メモリ１２０に転送され得て、この映像情報は表示装置１５６上にパイプライン１８０のフレームバッファ出力を表示する。
【００３９】
図５はグラフィクスプロセサ１５４を用いて実行される処理を図解的に示すブロック論理フロー図である。主プロセサ１０は、グラフィクスコマンドストリーム２１０，表示リスト２１２および頂点アレイ２１４を主メモリ１１２にストアし、ポインタをバスインタフェース１５０を介してコマンドプロセサ２００に送る。主プロセサ１１０は主メモリ１１０内に割り付けられた１つ以上のグラフィクスＦＩＦＯバッファ２１０にグラフィクスコマンドをストアする。このコマンドプロセサ２００は、
・同期／フロー制御および負荷バランスのためにグラフィクスコマンドを受けかつバッファするオンチップＦＩＦＯメモリバッファ２１６を介して主メモリ１１２からのコマンドストリーム，
・オンチップコールＦＩＦＯメモリバッファ２１８を介して主メモリ１１２からの表示リスト２１２，および
・コマンドストリームからおよび／または主メモリ１１２の頂点アレイ２１４からの頂点アトリビュートを頂点キャッシュ２２０を介して
取り込む。
【００４０】
コマンドプロセサ２００はコマンド処理動作２００ａを実行し、そのコマンド処理動作２００ａはアトリビュート形式を浮動小数点フォーマットに変換し、結果的に得られた完全頂点ポリゴンデータをレンダリング／ラスタライゼーションのためにグラフィクスパイプライン１８０に与える。プログラマブルメモリ調停回路１３０（グラフィクスメモリ要求調停回路：図４）は、グラフィクスパイプライン１８０，コマンドプロセサ２００および表示コントローラ／ビデオインタフェースユニット１６４の間での共用主メモリ１１２へのアクセスを調停する。
【００４１】
図４は、グラフィクスパイプライン１８０が
・変換ユニット３００，
・セットアップ／ラスタライザ４００，
・テクスチャユニット５００，
・テクスチャ環境ユニット６００，および
・ピクセルエンジン７００
を含むことを示す。
【００４２】
変換ユニット３００は多様な２Ｄおよび３Ｄ変換および他の動作３００ａ（図５）を実行する。変換ユニット３００は変換処理３００ａに用いられるマトリクスをストアするための１つ以上のマトリクスメモリ３００ｂを含む。変換ユニット３００は、入来する頂点毎のジオメトリをオブジェクト空間からスクリーン空間へ変換し、そして入来するテクスチャ座標を変換しかつ投影テクスチャ座標（３００ｃ）を計算する。変換ユニット３００はまたポリゴンクリッピング／カリング(clipping/culling)３００ｄを実行する。変換ユニット３００ｂによってまた達成される照明処理３００ｅが、この実施例では８つまでの独立した照明について、頂点毎に照明計算を行う。変換ユニット３００は、エンボス(embossed)タイプのバンプマッピング効果およびポリゴンクリッピング／カリング動作（３００ｄ）のために、テクスチャ座標を発生する（３００ｃ）。
【００４３】
セットアップ／ラスタライザ４００はセットアップユニットを含み、このセットアップユニットは、変換ユニット３００からの頂点データを受け、三角形セットアップ情報を、エッジラスタライゼーション，テクスチャ座標ラスタライゼーションおよびカラーラスタライゼーションを実行する１つ以上のラスタライザユニット（４００ｂ）に送る。
【００４４】
テクスチャユニット５００は、オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよく、たとえば、
・主メモリ１１２からのテクスチャ５０４の検索、
・たとえばマルチテクスチャ処理，ポストキャッシュテクスチャ伸長，テクスチャフィルタリング，エンボシング，投影テクスチャの使用を通しての陰影付け，およびアルファトランスパーレンシおよびデプスを用いるＢＬＩＴを含むテクスチャ処理（５００ａ）、
・バンプマッピング，偽(pseudo)テクスチャおよびテクスチャタイル(tiling)効果（５００ｂ）のためのテクスチャ座標置換を計算するバンプマップ処理、および
・間接テクスチャ処理（５００ｃ）
を含むテクスチャリングに関連する種々のタスクを実行する。
【００４５】
テクスチャユニット５００はテクスチャ環境処理（６００ａ）のためにフィルタされたテクスチャ値をテクスチャ環境ユニット６００に出力する。テクスチャ環境ユニット６００は、ポリゴンおよびテクスチャカラー／アルファ／デプスをブレンドし、また逆レンジベース(reverse range based)のフォグ効果を達成するために、テクスチャフォグ処理（６００ｂ）を実行する。テクスチャ環境ユニット６００はたとえばカラー／アルファ変調，エンボシング，詳細テクスチャ，テクスチャスワッピング，クランピングおよびデプスブレンドに基づく多様な他の環境関連機能を実行する多数のステージを提供する。簡単にいうと、この実施例のテクスチャ環境ユニット６００は、頂点毎のライティング，テクスチャおよび一定カラーをピクセルカラーを形成するために結合し、次いで、ｚテクスチャのためのｚブレントを含むフォギング(fogging) およびブレンド(blending) を行う。ハードウェアで実現した１組のテクスチャ環境カラー／アルファ結合器は、コールされたテクスチャ環境ステージにおける多数のサイクル（各々は独立した制御を有する）に亘って再使用され、それによってマルチテクスチャリングや他のブレンド機能を実現する。好ましい実施例は１６のテクスチャ環境ステージをサポートしているが、他の実施例が異なる数のステージをサポートしてもよい。
【００４６】
この好ましい実施例では、ピクセルエンジ７００は、カラーおよびデプスデータをカラーフレームバッファおよびデプスバッファを含む内蔵（オンチップの）ＤＲＡＭ（１ＴＳＲＡＭ）フレームバッファメモリ７０２にストアする。ピクセルエンジン７００はデプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を実行する。Ｚ比較は、現在有効なレンダリングモード（たとえば、アルファ閾を要さない）に依存して、グラフィクスパイプライン１８０のより早いステージ（たとえば、テクスチャリングの前）に行われる。しかしながら、好ましい実施例のｚテクスチャリングのために、パイプラインの終りでｚバッファリングをすることが望ましい。このピクセルエンジン７００は、表示コントローラ／ビデオインタフェースユニット１６４によるアクセスのために、オンチップフレームバッファ７０２を主メモリ１１２へ周期的に書き込むコピー動作７００ｃを含む。このコピー動作７００ｃはまた、動的カラーまたはテクスチャ合成効果のために、内蔵フレームバッファのカラーやｚ情報を主メモリ１１２中のテクスチャにコピーするために使用され得る。アンチエイリアシング(anti-aliasing：エイリアス補正)および他のフィルタリングがコピーアウト動作中に実行され得る。グラフィクスパイプライン１８０のカラーフレームバッファの出力（これは最終的に主メモリ１１２にストアされる）は、表示コントローラ／ビデオインタフェースユニット１６４によってフレーム毎に読み出される。表示コントローラ／ビデオインタフェース１６４は表示装置５６上での表示のためにディジタルＲＧＢピクセル値を与える。
Ｚテクスチャリングの例
実施例のグラフィクスパイプライン１８０は、フレームバッファ７０２がデプス付スプライトのように小さいカラーとデプスイメージとの複合物であるイメージベース(image-based)でのレンダリングを容易にするために、カラーテクスチャとデプス（「ｚ」）テクスチャとの結合をサポートしている。この発明によって提供される技術は対応するデプステクスチャを有するカラーテクスチャを用いてイメージを発生することに限定されるものではないけれども、そのようなデプス付スプライトは、特に、ビデオゲームや比較的安価な他のインタラクティブなアプリケーションにおいて増大した視覚化(visualigation)カラーおよび遮蔽の複雑さを与えるのに有用である。
【００４７】
図６はカラーテクスチャＴｃとｚテクスチャＴｚとを用いる例示的なｚテクスチャリング演算を示す。ここにおいて、スプライトは、平坦表面上にレンダリングされたテクスチャマップまたはアルファ（透明）付のもしくはアルファなしのイメージとみなされる。対応するｚテクスチャＴｚはテクスチャマップまたはイメージにおける各イメージ要素（テクセル：texel）毎にｚ置換または絶対デプスを与え、そのｚ置換は各異なるイメージ要素毎に相違し得る。図６の単純化したブロック図において、変換ユニット３００によって行われるテクスチャ座標発生５００（１）が、カラーテクスチャＴｃをルックアップしかつマッピングするために使用されるテクスチャ座標を発生する。結果的に得られたカラーテクセル（これは標準的なテクスチャフィルタリング技術を用いてフィルタリングされてもよい）がブレンドされ、さもなくばテクスチャ環境ユニット６００によってプリミティブ表面へ与えられる。結果的に得られたピクセルがイメージ化および／または別の処理のために、内蔵カラーフレームバッファ７０２ｃにストアされる。
【００４８】
この実施例において、テクスチャ座標発生５００（１）はまた、ｚテクスチャマッピング／再サンプリングにおける使用のためのテクスチャ座標を発生する。テクスチャメモリ５０２がｚテクスチャＴｚを多様な異なるフォーマットでストアし得て、テクスチャユニット５００がカラーテクスチャマッピングのために使用されたと同じもしくは異なるテクスチャ座標を使用して（たとえば非直線もしくは不均一マッピングを使用して）、ｚテクスチャＴｚをルックアップしかつマッピングすることができる。テクスチャユニット５００から出力される結果的に得られたｚテクセルがｚブレンダ６００ｚへ与えられる。ｚブレンダ６００ｚはｚテクセルデプス値に表面デプスをブレンドし、ｚテクスチャは表面デプス上にマッピングされもしくはその表面デプスをｚテクセルデプス値に置換する。ｚブレンド演算から結果的に得られるピクセルデプス値は、内蔵ｚバッファ７０２ｚに関連して動作するｚ比較７００ａ（図５参照）を使用する隠れ表面除去演算に与えられる。このｚバッファに関連する隠れ表面除去演算によって、そのシーン中においてテクスチャマッピングしたイメージのどの部分が他のオブジェクトによって遮蔽されるのかをｚテクスチャＴｚが制御できる。
【００４９】
図７はデプス付スプライトのための例示的なカラーテクスチャＴｃを示し、図８はデプス付スプライトのための例示的な対応するｚテクスチャＴｚを示す。図７におけるカラーテクスチャＴｃがブッシュ(bush)の２次元イメージを与える。図８の例示的なｚテクスチャＴｚがこの同じブッシュの２次元絶対的もしくは置換マップを与える。図８において、たとえば、ブッシュの前面部分のデプス（置換）ｚ１に対応するｚ１はその後面部分に対応するデプス（置換）値ｚ２，ｚ３，ｚ４，ｚ５，ｚ６より選択した視点に近いｚ値を有するものとして定義される。この補助的なｚテクスチャデプス情報を用いることによって、そのシーンにおける他のオブジェクトがブッシュの図７のカラーイメージの部分を遮蔽することができるようになり、他のオブジェクトはまたこのカラーテクスチャイメージの他の部分によって遮蔽される。たとえば、ｚ２とｚ３との間のデプス位置において定義されている鳥(bird)はブッシュを通して「飛ぶ」ように表すことができる。ブッシュｚ１，ｚ２の前面部分は、鳥がブッシュのこれらの部分の「後ろ」を通過するので、鳥を遮蔽することができる。これに対して、鳥はブッシュの部分ｚ３，ｚ４，ｚ５，ｚ６の「前を」を飛ぶので、鳥はブッシュのこれらの部分を遮蔽することができる。したがって、かなりの程度の遮蔽の複雑さを、カラーテクスチャリング演算に共用されるシステム５０のメカニズムを用いて、低コストで実現することができる。図８の例示的なｚテクスチャは領域によるデプスエンコード(depth encoding)を示すが、これは、任意の複雑な遮蔽可視化効果を与えるために、ｚテクスチャの種々のｚテクセル位置の各々において異なるデプス（置換）をストアすることによって、この実施例において達成される。
Ｚテクスチャブレンド演算の例
図９はｚテクスチャブレンド演算６００ｚの一例を概略的に図解する。この図９の例において、プリミティブ表面ｚ値はピクセルクォードラプレットの中心での基準デプスｚ０の形で、テクスチャブレンド演算６００ｚに与えられる。システム５０の実施例は、ピクセルのクォードラプレット（２×２）のために基準デプスｚ０および２つのスロープ(slope)ｚｘおよびｚｙとしてデプス（ｚ）を計算する。なお、この実施例においては、これらの値は、選択した視点（たとえば、世界空間におけるカメラ位置）に基づいて、変換ユニット３００によって既にオブジェクト（世界：world）空間からスクリーン空間へ変換されている。この実施例において、基準デプスｚ０およびスロープｚｘおよびｚｙがプリミティブ表面のデプス平面を特定する平面計算式を規定する。
【００５０】
ｚテクスチャリングが実施例においてイネーブルされると、スロープ値ｚｘ，ｚｙが無視される。４つのｚテクセルがテクスチャブレンド演算６００ｚへピクセルクォードラプレットの４つのピクセルの各々毎のテクスチャマッピングの結果として提示される。テクスチャブレンド演算６００ｚは、プリミティブ基準デプスｚ０と、テクスチャユニット５００によってピクセル位置へ既にマッピングされている４つのｚテクセルの適宜の１つのデプスとをブレンドすることによって、クォードラプレット中の各ピクセルのｚを計算する。この実施例においてピクセルはクォードラプレット中において並列に処理されるが、他の実施例においては、ピクセル個々に、ピクセル対で、３つ毎に、８つ毎に、あるいは他の任意の都合のよい方法で処理され得る。
【００５１】
この実施例において、ブレンドは、基準ｚへ（テクスチャマッピングした）ｚテクセル値を選択的に加えることによって（この場合、ｚテクセルはデプス置換を表す）、もしくは基準ｚを（テクスチャマッピングした）ｚテクセル値で置換することによって（この場合、ｚテクセルは絶対デプス値を表す）、達成される。これは、再サンプリングしたｚイメージ（テクスチャ）とサンプリングした３Ｄ表面との間のブレンド／マッピングを、ｚテクスチャが各ピクセル毎に異なるプリミティブデプス値／オフセットを潜在的に与えるように、達成する。この実施例において、アプリケーションのプログラマは、置換／加算制御６５２の状態の比較を通して２つの演算（加算もしくは置換）のいずれが行われるべきであるかを特定する。実施例において、ピクセルｚ値は各加算器６５０の一方入力に与えられる。加算器６５０の各々の他方入力は置換／加算制御６５２の状態に依存して、基準デプスｚ０または０の値のいずれかを受ける。
【００５２】
加算器６５４の付加的な組が例示的なテクスチャブレンド演算６００ｚ中に設けられ、加算器６５０によって出力される合計に随意的なバイアス値６５６を加算する。したがって、この例においてｚテクスチャがイネーブルされると、ｚテクセルは基準ｚをオフセットしまたは置換し（すなわち、ｚスロープは加算されない）、一定バイアスがその結果に加算され得る。
【００５３】
図示した具体的な例において、テクスチャ加算器６５０，６５４は好ましい実施例ではクランプせず、したがって、アプリケーションプログラマはオーバフローがないことを確実にしなければならない。しかしながら、クランプや他のオーバフロー制御が他の実施例において用いられてもよい。加算や置換の他のブレンド演算もまた望むならば用いることができる。実施例においてはカスケードな加算器６５０，６５４が用いられたが、他の構成（たとえば、３入力加算器）がブレンドまたは他の結合もしくは計算関数を与えるために使用されてもよい。
【００５４】
Ｚテクスチャブレンド演算６００ｚは結果的に計算されたブレンドしたｚ値ｚ０，ｚ１，ｚ２およびｚ３を、隠れ表面除去処理のためのデプスバッファ比較へ与える（クォードラプレット中の４つのピクセルの各々についてデプス情報を与える）。もしｚバッファリングがイネーブルされると、結果的に得られたピクセルｚ値は、内蔵ｚバッファ７０２ｚにストアされているピクセルについて現在のｚ値と比較される。グラフィクスパイプライン１８０は、ｚテクスチャを用いるときには、テクスチャルックアップの後、隠れ表面除去を行うように構成されなければならず、さもなければ、ｚテクスチャリングの前に行われる隠れ表面除去がｚブレンド演算６００ｚによって発生されたｚ値を考慮しないことになるからである。
【００５５】
実施例において、変換ユニット３００は、世界（オブジェクト）空間からスクリーン空間へ入力頂点を変換するために、モデルビューマトリクス(Model View Matrix) を用い、ラスタライゼーションやテクスチャリングが世界（オブジェクト）空間に対するスクリーン空間中において行われる。ｚブレンド６００が実施例においてはラスタライジングパイプラインの一部として行われるので、ｚテクスチャリングはスクリーン空間中で行われる。世界（オブジェクト）空間に対するスクリーンもしくは目空間においてｚ値をブレンドすることによって、ハードウェアコストを減じるが、そこにはトレードオフがある。スクリーン空間は非直線座標空間であるので、スクリーン空間における具体的なΔｚは与えられるｚに依存して異なるデプスを表す。同じことが目空間についても言える。換言すれば、このような座標システムにおいては、具体的なΔｚは対応する表面が選択した視点からどれだけ近くあるいはどれだけ離れているかに依存して異なる差分デプスを表現する。この制限はビデオゲームにおいては大きな制限とはなり得ない。なぜなら、ビデオゲームプログラマは、通常、特定の表面が現れる視点からの適宜の距離を設定しまたは制御できるからである。しかしながら、他のアプリケーション（たとえばフライトシミュレータ）においては、スクリーンもしくは目空間中におけるｚブレンド演算の非直線的な性質は補正（たとえば、ｚオフセットの投影補正および／または世界空間に基づく補間）を必要とするかもしれない。この実施例においては、アプリケーションプログラマはｚテクセルをこの問題を克服するために絶対デプス値として定義する。
Ｚテクセルフォーマットの例
実施例においては、ｚテクスチャブレンド演算６００ｚは多様なｚテクセルフォーマットを受け入れる。例示的なｚテクセルフォーマットが図１０，図１１および図１２に示される。図１０の例のｚテクセルフォーマットは未符号化(unsigned)８ビット値を与える。図１１の例のｚテクセルフォーマットは未符号化１６ビット値を与える。図１２の例のｚテクセルフォーマットは未符号化２４ビット値を与える。例示のテクスチャブレンド演算６００ｚは図１０および図１１のテクセルフォーマットを、それらを右揃え(right-justifying)（すなわち、最下位ビット位置のテクセル値を置換しかつ最上位ビットにゼロ（０）を挿入する）ことによって、２４ビット値へ変換する。実施例においては、加算器６５０，６５４は２４ビット加算器を含み、バイアス値６５６は２４ビットの一定バイアスであってよい。テクスチャブレンド演算６００ｚの出力における付加的な変換が行われ、内蔵ｚバッファ７０２ｚにストアされているｚ値との比較に先立って、２４ビットの結果を１６ビットフォーマット（または他のフォーマット）へ変換するようにしてもよい。
【００５６】
実施例において、図１０，図１１および図１２に示す種々のｚテクセルフォーマットが対応のカラーテクセルフォーマットと互換性がある。たとえば、図１０に示す８ビットのｚテクセルフォーマットは、テクスチャハードウェアに対して、Ｉ８カラー（輝度）テクセルフォーマットと同じものとして現れる。同じように、図１１に示す１６ビットのテクセルフォーマットは、テクスチャハードウェアの観点から、ＩＡ８カラー（輝度）／アルファテクセルフォーマットと同じに現れ、そして図１２に示す２４ビットのｚテクセルフォーマットはテクスチャハードウェアの観点からＲＧＢＡ８カラーテクセルフォーマットと同じに現れる。カラーとｚテクセルフォーマットとの間のこのような互換性によって、カラーテクスチャＴｃをルックアップしかつマッピングするために使用される同じ実施例のテクスチャハードウェアがまたｚテクスチャＴｚをルックアップしかつマッピングするために使用される。実施例におけるテクスチャユニット５００は再循環し、或るプリミティブフラグメントについて多数のテクスチャルックアップを反復して行うことができるので、好ましい実施例においてｚテクスチャリングがカラーテクスチャリング演算のために使用される同じテクスチャハードウェアを用いて行われ得る。このことがチップ不動産の点で多大な節約を与え、他方ではハードウェア速度でグラフィクスパイプライン１８０によってｚテクスチャリングが行われ得る。
テクスチャ環境ユニットＺテクスチャブレンド
実施例において、図９のｚテクスチャブレンド演算６００ｚはテクスチャ環境ユニット６００の最終ステージの一部として行われる。図１３はテクスチャ環境ユニット６００の例示的なブロック図を示す。このテクスチャ環境ユニット６００は、平成１３年３月２２日付で出願した「グラフィクスシステムのための再循環シェードツリーブレンダ」と題する同時係属中の特許出願（特願２００１−８１８９２）に一層詳細に説明されていて、ここではそれを参照によって取り入れる。この例において、ラスタライズされたカラーが一連のステージ選択入力６５６へ与えられる。テクスチャ環境演算６５８は入力のこの選択した組で行われて出力を与える。テクスチャ環境演算６５８は次のものを含む多数の異なる演算のどれかから選択され得る。
【００５７】
・変調(modulate)，変調２ｘ，変調４ｘ
・加算
・加算符号化(signed)，加算符号化２ｘ
・減算
・加算平滑(smooth)
・拡散アルファのブレンド、テクスチャアルファのブレンド、要素(factor)アルファのブレンド、現在アルファのブレンド
・予め乗算したテクスチャアルファのブレンド
・変調アルファおよびカラー加算
・変調カラーおよびアルファ加算
・変調逆アルファおよびカラー加算
・変調逆カラーおよびアルファ加算
・鏡面カラーおよびテクスチャ
・エンボシング
・詳細テクスチャ
・他の演算
１組の４つの入力／出力レジスタ６６０が、結果を一時的にストアするために、もしくは１つのステージからの結果を次のステージへパスさせるために、あるいはユーザ定義の一定カラーを供給するために、設けられる。これらのカラーレジスタ６６０はすべてのテクスチャ環境ステージの間で共用される。この実施例では、最終ステージが、その出力を「GX_Tevprev 」レジスタ６６０（４）へ送る。最終テクスチャ環境ステージによって作られたアルファがアルファ比較演算器６６２に与えられる。アルファ比較の結果がフレームバッファへのカラー（および望めばｚについても）の書き込みを条件付きでマスクするために使用され得る。もしイネーブルされると、フォグが最終テクスチャ環境ステージから出力されたピクセル値に付与される。
【００５８】
この実施例において、上で述べたｚブレンド演算６００ｚは、テクスチャ環境ユニット６００の最終ステージの一部として行われる。ｚテクスチャがイネーブルされているとき、カラーがまたその最終テクスチャ環境ユニット６００のステージから出力されるが、実施例の最終ステージのテクスチャ入力がｚテクスチャによって占有され、そのためにそれはカラーソースとしては使用され得ない。したがって、この実施例においては、ｚテクスチャにさらなるテクスチャ環境演算を付与することはできない。しかしながら、他の実施例にはこのような制限はなく、もし望めば、テクスチャ環境再循環の付加的なステージを提供することができる。ｚテクスチャリングがイネーブルされたときでさえ、最終ステージのすべての他のカラー入力およびすべてのテクスチャ環境演算が使用され得る。テクスチャ環境ステージのアルファ側はこの実施例においてはｚテクスチャによって影響を受けず、したがって、アクティブでかつ機能的なままにされ、たとえば、カラーテクスチャ透明を与える。
【００５９】
図１４はｚテクスチャブレンドハードウェアの具体例の実施例を含む例示的なテクスチャ環境フォグ計算ユニットを示す。この実施例において、テクスチャラスタライザによって発生されたラスタライズしたｚ値はｚブレンド回路６００ｚ′へ提示される。テクスチャユニットによるテクスチャマッピング関数を通して与えられるｚテクスチャ値はｚブレンド回路６００ｚ′に提示される（たとえば、テクスチャカラーをテクスチャ環境ユニット６００へ与えるために使用されると同じバスを用いて）。Ｚブレンド回路６００ｚ′は図９に示しかつ上で説明したようなｚテクスチャブレンドコンポーネントを含んでよい。４つの結果的に得られたｚ値（クォードラプレットのピクセル毎に１つ）がｚオフセット回路６０２に提示され、この回路６０２はスクリーン空間中において、クォードラプレット内のピクセルの範囲を用いることによって返送された現在のクォードラプレットの中心でのｚの値を計算する。スクリーン−目空間へのｚ変換ブロック６０４は、フォグ計算（もしあれば）の目的のためにスクリーン空間から目空間へｚを変換し、所要のフォグ濃度（もしあれば）に関連する定数によってその結果を乗算することができる。点線で示した経路が直投影の場合におけるこの演算を行う別の方法を示す。図１４に示す残りの回路は種々のフォグ関数を与えるために使用される。
Ｚテクスチャリング制御レジスタの例
図１５はｚテクスチャリングを行うためにテクスチャ環境ユニット６００を制御するために使用される例示的なテクスチャ環境ｚテクスチャ制御レジスタを示す。この実施例においては、レジスタ６９０がｚブレンド６００ｚにおいて使用されるｚバイアス６５６を特定する。レジスタ６９２はｚテクセルタイプ（たとえば、未符号化８、未符号化１６、未符号化２４）を選択する「z_type」フィールドおよびｚ演算のタイプ（たとえば、ディスエーブル、加算もしくは置換）を特定する「z_op」フィールドを含む。
Ｚテクスチャソースの例
図１６は実施例におけるｚテクスチャＴｚのための例示的なソースを示す。予め計算したＺｔテクスチャが光ディスクのような大容量記憶を介して供給され、主メモリ１１２にストアされ、もしくはそれらが主プロセサ１１０によって計算され得る。さらに、この実施例においては、ｚテクスチャは内蔵フレームバッファ７０２から主メモリ１１２へのコピーアウト動作中に内蔵ｚバッファ７０２ｚからコピーされ得て、グラフィクスパイプラインがｚテクスチャを動的に作り出すようにする。より詳細には、実施例のピクセルエンジン７００の図１７に示すコピーアウトパイプラインはカラーフレームバッファ７０２ｃおよびｚバッファ７０２ｚの間を選択するマルチプレクサ７５０を含む。ｚバッファ７０２ｚがマルチプレクサ７５０によって選択されたとき、例示のコピーアウトパイプラインはｚバッファ７０２ｚからのタイルを主メモリ１１２へコピーアウトすることができ、この主メモリ１１２は次いで、ｚテクスチャＴｚとしての使用のためにテクスチャメモリ５０２へ読み込まれる。たとえば、ｚバッファ７０２ｚは２４ビットｚフォーマットに設定され得て、この２４ビットｚフォーマットは、次いで、図１２に示すｚテクセルフォーマット中にコピーされる（ＲＧＢＡ８カラーテクセルに相当するフォーマット）。好ましい実施例においては、コピーアウトパイプラインは図１０および図１１に示す８ビットもしくは１６ビットのｚテクセルフォーマットへのコピーアウトを提供せず、超サンプリングモードにおいて内蔵フレームバッファが動作されたときにコピーアウト動作を行う。別の実施例はこれらの具体的な制限を回避することもできる。
ＡＰＩコールの例
次のものはＡＰＩコールの例であり、実施例のシステム５０は上で述べたｚテクスチャリング関数および演算を行うために使用する。
【００６０】
GXSetZTExture
説明
この関数はＺテクスチャ演算を制御する。Ｚテクスチャはイメージベースでのレンダリングアルゴリズムを実現するために使用され得る。カラーおよびデプスイメージ平面からなる複合イメージは内蔵フレームバッファ（ＥＦＢ）中に埋め込まれる。
【００６１】
通常、ピクセルのクォードラプレット（２×２）のためのＺは基準Ｚと２つのスロープとして計算される。Ｚテクスチャリングがイネーブルされると、Ｚは基準Ｚ(op=GX_ZT_ADD)へＺテクセルを加算することによってもしくは基準ＺをＺテクセル値(op=GX_ZT_REPLACE)で置換することによって計算される。
【００６２】
Ｚテクスチャは、イネーブルされたとき、最終のアクティブなテクスチャ環境（ＴＥＶ）ステージ（GXSetTevStagesを参照）から出力される。Ｚテクスチャリングがイネーブルされると、最終のＴＥＶステージのテクスチャカラーが利用できないが、すべての他のカラー入力および演算が利用可能である。ピクセルカラーは最終のアクティブなＴＥＶステージから出力される。この実施例においては、Ｚテクスチャは、Ｚテクスチャロジックへ直接供給され、テクスチャ環境ユニット６００によって再び演算されることはない。
【００６３】
例示のＺテクセルフォーマットは、未符号化８ビット(GX_TF_Z8) 、１６ビット(GX_TF_Z16)、もしくは２４ビット(GX_TF_Z24X8(３２ビットテクスチャ))フォーマットであり得る。グラフィクスプロセサはＺテクスチャを、最下位ビットにおけるテクセル値を置換しかつ残りの最上位ビットにゼロ（０）を挿入することによって２４ビット値へ変換する。２４ビットの一定バイアスがＺテクスチャに加算される。もしピクセルフォーマットがGX_PF_RGB565_Z16 であれば、２４ビットの結果が、ＥＦＢのＺとの比較に先立って現在の１６ビットのＺフォーマットへ変換される。
【００６４】
Ｚテクスチャ計算は、実施例においては、フォグ範囲計算より前に行われる。GXInitはＺテクスチャリングをディスエーブルする。
【００６５】
【表１】
0004863574.tif 000002
【００６６】
GXZTexOp
【００６７】
【表２】
0004863574.tif 000003
【００６８】
これらのコマンドは上で述べた図１５の実施例のテクスチャ制御レジスタへ書き込む。
【００６９】
GXTexFmt
実施例は以下のカラーおよびｚテクセルフォーマットをサポートする。
【００７０】
【表３】
0004863574.tif 000004
【００７１】
GXInit
説明
この関数はグラフィクスプロセサのデフォルト状態を設定する。それは一般的には任意の他のＧＸ関数より前にコールされる。GXInitはＣＰＵからのグラフィクスコマンドをグラフィクスプロセサ（ＧＰ）へ通信する中間的なモードの方法をセットアップする。特定され得るパラメータの１つはｚテクスチャリングをイネーブル／ディスエーブルするためのものである。
【００７２】
「デフォルト」はｚテクスチャリングについてはディスエーブルする。
【００７３】
以下のコードフラグメントはGXInitをコールした後のいくつかの関連デフォルト状態の設定を記述する。
【００７４】
【表４】
0004863574.tif 000005
【００７５】
実施例においてｚテクスチャリングをアクティブにするために、GXInitが「GX_ZT_Enable」パラメータおよび適宜のｚテクスチャフォーマット特定子を含む「GXSetZtexture」とともにコールされなければならない。
互換性のある他の実施例
上述のシステム５０のあるものは上で述べた家庭用ビデオゲームコンソールの構成以外としても実現できる。たとえば、或るものは、システム５０をエミュレートする異なる構成を有するプラットフォームもしくはそれと同等のものにおいて、システム５０のために書かれたグラフィクスアプリケーションや他のソフトウェアを実行させることができる。もし、他のプラットフォームがシステム５０のいくつかのもしくはすべてのハードウェアおよびソフトウェアリソースをエミュレートしシミュレートしおよび／または提供することができれば、その他のプラットフォームはそのソフトウェアを成功裏に実行することができる。
【００７６】
一例として、エミュレータがシステム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供できる。そのエミュレータシステムは、それのためにアプリケーションソフトウェアが書かれているシステムのいくつかのもしくはすべてのハードウェアおよび／またはソフトウェアコンポーネンツをエミュレートしもしくはシミュレートするソフトウェアおよび／またはハードウェアコンポーネンツを含む。たとえば、エミュレータシステムはパソコンのような汎用ディジタルコンピュータを含み、それはシステム５０のハードウェアおよび／またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行する。上述のオーディオシステムのＤＳＰ処理がパソコンによってエミュレートされ得る。
【００７７】
或る汎用ディジタルコンピュータ（たとえばＩＢＭやマッキントッシュのパソコンおよびそれらの同等物）は、ダイレクトＸ(DirectX)または他の標準的な３ＤグラフィクスコマンドＡＰＩｓに従った３Ｄグラフィクスパイプラインを提供する３Ｄグラフィクスカードを備える。それらはまた、音声コマンドの標準的なセットに基づいて高品質のステレオ音声を提供するステレオ音声カードを備える。エミュレータソフトウェアを実行するそのようなマルチメディアのハードウェアを備えるパソコンは、システム５０のグラフィクスおよび音声性能とほぼ等しい十分な性能を有する。エミュレータソフトウェアはパソコンプラットフォーム上のハードウェアリソースを制御して、それのためにゲームプログラマがゲームソフトウェアを書いた家庭用ビデオゲームコンソールプラットフォームの処理，３Ｄグラフィクス，音声，周辺および他の能力をシミュレートする。
【００７８】
図１８はホストプラットフォーム１２０１，エミュレータコンポーネント１３０３および記憶媒体６２上のゲームソフトウェア実行可能バイナリ映像を用いる全体のエミュレーション処理を図解する。ホスト１２０１は、たとえばパソコン，ビデオゲームコンソールあるいは十分な計算力を有する任意の他のプラットフォームのような汎用または特定目的ディジタル計算装置である。エミュレータ１３０３はそのホストプラットフォーム１２０１上で走るソフトウェアおよび／またはハードウェアであり、記憶媒体６２からのコマンド，データおよび他の情報のそのホスト１２０１によって実行可能な形態へのリアルタイム変換を行う。たとえば、エミュレータ１３０３は記憶媒体６２からシステム５０によって実行されるように意図された「ソース」であるバイナリ映像プログラム命令を取り込み、これらのプログラム命令をホスト１２０１によって実行されもしくは処理され得るターゲットとなる形態に変換する。
【００７９】
一例として、ソフトウェアがＩＢＭパワーＰＣまたは他の特定のプロセサを用いるプラットフォーム上での実行のために書かれかつホスト１２０１が異なる（たとえばインテル）プロセサを用いるパソコンである場合、エミュレータ１２０３は記憶媒体１３０５からの１つのもしくは一連のバイナリ映像プログラム命令を取り込み、これらのプログラム命令を１つまたはそれ以上の同等のインテルのバイナリ映像プログラム命令に変換する。エミュレータ１２０３はまたグラフィクス／オーディオプロセサ１１４によって処理されるように意図されたグラフィクスコマンドおよびオーディオコマンドを取り込みかつ／あるいは生成し、そしてホスト１２０１上で利用可能なハードウェアおよび／またはソフトウェアグラフィクス／オーディオ処理リソースによって処理され得る形態にこれらのコマンドを変換する。一例として、エミュレータ１３０３はホスト１２０１の特別なグラフィクスおよび／または音声ハードウェア（たとえば標準的なダイレクトＸ，オープンＧＬおよび／または音声ＡＰＩｓ）によって処理され得るコマンドにこれらのコマンドを変換する。
【００８０】
エミュレータプラットホーム上のグラフィクスハードウェアがもしｚテクスチャリングをサポートしていないなら、ｚテクスチャリングは、ソフトウェア的にエミュレートされる必要があるか、もしくは特徴を全くサポートしないかである。ｚテクスチャリング演算が「もみ消される(stubbed)」（すなわち、無視される）なら、エミュレータは、本来のプラットホームのイメージの結果とは正確には一致しない変則的なイメージの結果を与えるかも知れない。Ｚテクスチャリングは、種々の異なる方法（たとえば、主メモリ中の外部ｚバッファに作用するソフトウェアエミュレーションルーチン）を使用して、エミュレートすることができる。
【００８１】
上で述べたビデオゲームシステムのいくつかのもしくはすべての特徴を与えるために用いられるエミュレータ１３０３は、また、エミュレータを使ってゲームを走らせている種々のオプションおよびスクリーンモードの選択を簡単化しもしくは自動化するグラフィックユーザインタフェース（ＧＵＩ）を備える。一例において、そのようなエミュレータ１３０３はさらにそのソフトウェアが本来的に目的とされたホストプラットフォームに比べてより増強された機能性を含むこともできる。
【００８２】
図１９はエミュレータ１３０３で用いるに適したエミュレーションホストシステム１２０１を図解的に示す。このシステム１２０１は処理ユニット１２０３およびシステムメモリ１２０５を含む。システムバス１２０７がシステムメモリ１２０５を含む種々のシステムコンポーネンツを処理ユニット１２０３に結合する。システムバス１２０７は多様なバスアーキテクチャのいずれかを用いるメモリバスもしくはメモリコントローラ，周辺バスおよびローカルバスを含むいくつかのタイプのバス構造の任意のものである。システムメモリ１２０７はＲＯＭ１２５２およびＲＡＭ１２５４を含む。起動中においてのようにパソコンシステム１２０１中のエレメント（要素）間に情報を伝送する手助けをする基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）１２５６がＲＯＭ１２５２中にストアされる。システム１２０１はさらに種々のドライブおよび関連のコンピュータ読出可能な媒体を含む。ハードディスクドライブ１２０９が（典型的には固定の）磁気ハードディスク１２１１から読み出しそれへ書き込む。付加的な（たぶんオプションとしての）磁気ディスクドライブ１２１３が着脱可能な「フロッピィ」または他の磁気ディスク１２５１から読み出しかつそれへ書き込む。光ディスクドライブ１２１７はＣＤ−ＲＯＭあるいは他の光学媒体のような着脱自在な光ディスク１２１９から読み出しかつそれへ書き込む。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、ハードディスクドライブインタフェース１２２１および光ディスクドライブインタフェース１２２５によって、システムバス１２０７にそれぞれ接続される。これらのドライブおよびその関連するコンピュータ読出可能な媒体は、パソコンシステム１２０１のためのコンピュータ読出可能な命令，データ構造，プログラムモジュール，ゲームプログラムおよび他のデータの不揮発性の記憶媒体を提供する。他の構成では、コンピュータによってアクセス可能なデータをストアすることができる他のタイプのコンピュータ読出可能な媒体（たとえば磁気カセット，フラッシュメモリカード，ディジタルビデオディスク，ベルヌーイカートリッジ，ＲＡＭ，ＲＯＭあるいはその他のもの）がまた使用できる。
【００８３】
エミュレータ１３０３を含む多数のプログラムモジュールがハードディスク１２１１，着脱可能な磁気ディスク１２１５，光ディスク１２１９および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４にストアされ得る。このようなプログラムモジュールはグラフィクス／音声ＡＰＩｓ，１つ以上のアプリケーションプログラム，他のプログラムモジュール，プログラムデータおよびゲームデータを提供するオペレーティングシステム（ＯＳ）を含む。ユーザは、キーボード１２２７，ポインティングデバイス１２２９，マイクロフォン，ジョイスティック，ゲームコントローラ，衛星アンテナ(satellite dish)，スキャナあるいはその他のもののような入力デバイスを通して、パソコンシステム１２０１にコマンドおよび情報を入力することができる。これらのそして他の入力デバイスは、システムバス１２０７に結合されたシリアルポートインタフェース１２３１を通して処理ユニット１２０３に接続され得るが、パラレルポート，ゲームポートファイヤワイヤバス(Fire Wire)もしくはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースによって接続されてもよい。モニタまたは他のタイプの表示デバイスがまたビデオアダプタ１２３５のようなインタフェースを介してシステムバス１２０７に接続される。
【００８４】
システム１２０１はモデム１１５４またはインターネットのようなネットワーク１１５２を通しての通信を確立するための他のネットワークインタフェース手段を含む。内蔵もしくは外付けであってよいモデム１１５４はシリアルポートインタフェース１２３１を介してシステムバス１２３に接続される。システム１２０１がローカルエリアネットワーク１１５８を介して遠隔コンピュータ装置１１５０（たとえば他のシステム１２０１）と通信するのを許容するために、ネットワークインタフェース１１５６がまた設けられてもよい（もしくはそのような通信はダイヤルアップもしくは他の通信手段のようなワイドエリアネットワーク１１５２もしくは他の通信経路を介してもよい）。システム１２０１はプリンタのような周辺出力装置および他の標準的な周辺装置を含む。
【００８５】
一例では、ビデオアダプタ１２３５は、マイクロソフト(Microsoft)のダイレクトＸ７．０、または他のバージョンのような標準的な３Ｄグラフィクスアプリケーションプログラマインタフェースに基づいて発行された３Ｄグラフィクスコマンドに応答して、高速の３Ｄグラフィクスレンダリングを提供する３Ｄグラフィクスパイプラインチップセットを含んでもよい。１組のスピーカ１２３７はまた、バス１２０７によって与えられる音声コマンドに基づいて高品質ステレオ音声を生成するハードウェアおよび埋め込みソフトウェアを提供する従来の「音声カード」のような音声生成インタフェースを介して、システムバス１２０７に接続される。これらのハードウェア能力によって記憶媒体１３０５中にストアされているソフトウェアを再生するためにシステム１２０１に十分なグラフィクスおよび音声の速度性能を与えることができる。
【００８６】
上で参照したすべての書類をここで、参照によって取り入れる。
【００８７】
最も現実的かつ好ましい実施例であると現在考えられているものに関連してこの発明が説明されたが、この発明は開示された実施例に限定されるものではなく、逆に、特許請求の範囲内に含まれる種々の変形例や等価的な構成をカバーするように意図されていることを理解されたい。
【図面の簡単な説明】
【図１】図１はインタラクティブコンピュータグラフィクスシステムの実施例を示す全体図である。
【図２】図２は図１実施例のコンピュータグラフィクスシステムのブロック図である。
【図３】図３は図２に示す実施例のグラフィクス／オーディオプロセサのブロック図である。
【図４】図４は図３に示す実施例の３Ｄグラフィクスプロセサのブロック図である。
【図５】図４のグラフィクス／オーディオプロセサの例示的な論理フロー図である。
【図６】図６は例示的なｚテクスチャリング技術のブロック図である。
【図７】図７は例示的なカラーテクスチャを示す。
【図８】図８は例示的なｚテクスチャを示す。
【図９】図９は例示的なｚテクスチャのブレンド演算のブロック図である。
【図１０】図１０は例示的なｚテクセルフォーマットを示す。
【図１１】図１１は例示的なｚテクセルフォーマットを示す。
【図１２】図１２は例示的なｚテクセルフォーマットを示す。
【図１３】図１３は実施例においてｚブレンドのために使用される例示的なテクスチャ環境ユニットのブロック図である。
【図１４】図１４は例示的なテクスチャ環境ユニットのｚブレンドロジックのブロック図である。
【図１５】図１５は例示的なｚテクスチャ制御レジスタを示す。
【図１６】図１６は実施例における例示的なｚテクスチャソースを示す。
【図１７】図１７は例示的なコピーアウトパイプラインを示す。
【図１８】図１８は互換性のある実施例を示す。
【図１９】図１９は別の互換性のある実施例を示す。
【符号の説明】
５０  …インタラクティブ３Ｄコンピュータグラフィクスシステム
５４  …主ユニット
１１０  …主プロセサ
１１２  …主メモリ
１８０  …グラフィクスパイプライン
２００  …キャッシュ／コマンドプロセサ
３００  …変換ユニット
４００  …ラスタライザ
５００  …テクスチャユニット
６００  …テクスチャ環境ユニット
７００  …ピクセルエンジン
７０２  …内蔵フレームバッファ
７０２ｃ  …カラーフレームバッファ
７０２ｚ  …ｚバッファ
【図１】
0004863574.tif 000006
【図２】
0004863574.tif 000007
【図３】
0004863574.tif 000008
【図４】
0004863574.tif 000009
【図５】
0004863574.tif 000010
【図６】
0004863574.tif 000011
【図７】
0004863574.tif 000012
【図８】
0004863574.tif 000013
【図９】
0004863574.tif 000014
【図１０】
0004863574.tif 000015
【図１１】
0004863574.tif 000016
【図１２】
0004863574.tif 000017
【図１３】
0004863574.tif 000018
【図１４】
0004863574.tif 000019
【図１５】
0004863574.tif 000020
【図１６】
0004863574.tif 000021
【図１７】
0004863574.tif 000022
【図１８】
0004863574.tif 000023
【図１９】
0004863574.tif 000024