(57)【特許請求の範囲】
【請求項１】
３ＤグラフィックスレンダリングシステムにおいてＺバッファリングを行う方法であって、
第１のクリッピング面ｚ＝ｚｎｅａｒをＺ＝０平面に対して相対的に近いＺ軸位置に設定し、第２のクリッピング面ｚ＝ｚｆａｒをＺ＝０平面に対して相対的に遠いＺ軸位置に設定し、当該Ｚ軸上で０、ｚｎｅａｒ、ｚｆａｒをこの順で並べることと、
Ｚ値クランピング面ｚ＝ｚｎｅａｒ２をｚｎｅａｒ２＝ｚｎｅａｒ＊（１＜＜ｎ）に設定することと、
ｚｎｅａｒ２＜ｚ＜ｚｆａｒであるＺ値を有する画素についてＺバッファリングを行うことと、
ｚｎｅａｒ＜Ｚ＜ｚｎｅａｒ２である画素についてＺ値を所定の値にクランピングし、対応する画素データを表示フレームバッファに最初から最後に向かう順序で書き込むこととを含む、方法。
【請求項２】
前記クランピングされるＺ値のための前記所定の値はゼロである、請求項１に記載の方法。
【請求項３】
０＜Ｚ＜ｚｎｅａｒであるＺ値を有する画素についてクリッピングすることをさらに含む、請求項１または２に記載の方法。
【請求項４】
前記第１のクリッピング面は、Ｚ＝０平面に相対的に近くＺ値が実質的に０に近い正の値となるＺ軸位置に設定される、請求項１乃至３の何れか１つに記載の方法。
【請求項５】
プロセッサと、変換およびライティング回路を有しかつアンチエイリアス化シーンのレンダリング中にＺ値圧縮動作を行う別個のグラフィックス処理パイプラインとを有する、３Ｄグラフィックスレンダリングシステムであって、
グラフィックスパイプラインＺ値圧縮回路に含まれる加算器およびビットマスキング回路を含み、
前記加算器は、優先符号化器とシフタとの間に接続され、
前記グラフィックスパイプラインＺ値圧縮回路は、Ｚ値圧縮動作よりも前にＺ値２進データを所定の数のビット位置だけ左にシフトさせることにより、Ｚ値の所定の範囲内にあるＺ値を所定のＺ値に有効にクランプするために用いられる、３Ｄグラフィックスレンダリングシステム。
【請求項６】
前記所定のＺ値はゼロである、請求項５に記載の３Ｄグラフィックスレンダリングシステム。
【請求項７】
前記Ｚ値の所定の範囲は、
Ｚ＝０平面に対して相対的に近い所定のＺ軸位置に定義されるＺクリッピング面ｚ＝ｚｎｅａｒおよび、ｚｎｅａｒ２＝ｚｎｅａｒ＊（１＜＜ｎ）（ｎは前記左シフトされるビット位置の数に等しい）に定義されるＺクランピング面ｚ＝ｚｎｅａｒ２との間によって決定される、請求項５に記載の３Ｄグラフィックスレンダリングシステム。
【請求項８】
前記グラフィックスパイプラインＺ値圧縮回路は、Ｚ値圧縮動作よりも前にＺ値２進データを所定の数のビット位置だけ左にシフトさせることにより、ｚｎｅａｒ＜Ｚ＜ｚｎｅａｒ２にあるＺ値を所定のＺ値にクランプし、かつ、０＜Ｚ＜ｚｎｅａｒであるＺ値を有する画素についてクリッピングするために用いられる、請求項７に記載の３Ｄグラフィックスレンダリングシステム。
【請求項９】
Ｚバッファリングを行う３Ｄグラフィックスレンダリングシステムであって、
第１のクリッピング面ｚ＝ｚｎｅａｒをＺ＝０平面に対して相対的に近いＺ軸位置に設定し、第２のクリッピング面ｚ＝ｚｆａｒをＺ＝０平面に対して相対的に遠いＺ軸位置に設定し、当該Ｚ軸上で０、ｚｎｅａｒ、ｚｆａｒをこの順で並べる手段と、
Ｚ値クランピング面ｚ＝ｚｎｅａｒ２をｚｎｅａｒ２＝ｚｎｅａｒ＊（１＜＜ｎ）に設定する手段と、
ｚｎｅａｒ２＜ｚ＜ｚｆａｒであるＺ値を有する画素についてＺバッファリングを行う手段と、
ｚｎｅａｒ＜Ｚ＜ｚｎｅａｒ２である画素についてＺ値を所定の値にクランピングし、対応する画素データを表示フレームバッファに最初から最後に向かう順序で書き込む手段とを備える、３Ｄグラフィックスレンダリングシステム。
【請求項１０】
Ｚバッファリングを行う３Ｄグラフィックスレンダリングシステムに含まれるコンピュータを、
第１のクリッピング面ｚ＝ｚｎｅａｒをＺ＝０平面に対して相対的に近いＺ軸位置に設定し、第２のクリッピング面ｚ＝ｚｆａｒをＺ＝０平面に対して相対的に遠いＺ軸位置に設定し、当該Ｚ軸上で０、ｚｎｅａｒ、ｚｆａｒをこの順で並べる手段と、
Ｚ値クランピング面ｚ＝ｚｎｅａｒ２をｚｎｅａｒ２＝ｚｎｅａｒ＊（１＜＜ｎ）に設定する手段と、
ｚｎｅａｒ２＜ｚ＜ｚｆａｒであるＺ値を有する画素についてＺバッファリングを行う手段と、
ｚｎｅａｒ＜Ｚ＜ｚｎｅａｒ２である画素についてＺ値を所定の値にクランピングし、対応する画素データを表示フレームバッファに最初から最後に向かう順序で書き込む手段として機能させる、プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータグラフィックスに関し、より詳細には家庭用ビデオゲームプラットフォームなどの対話式グラフィックスシステムに関する。さらに、より詳細には、本発明は、アンチエイリアス化シーンをレンダリングする際に視覚的に重要なＺ成分の精度を最大化しかつＺ近傍クリッピングを回避するための、Ｚ近傍範囲におけるＺ値クランピングに関する。
【０００２】
【従来の技術】
我々の多くは、驚くほどリアルな恐竜、異星人、アニメーション化された玩具、およびその他の空想的な生物を含む映画を観たことがある。このようなアニメーションは、コンピュータグラフィックスによって可能となる。こうした技術を用いることにより、コンピュータグラフィックスアーチストは、各オブジェクトがどのように見えるべきか、また時間とともにどのように外見が変化すべきを指定することができ、そしてコンピュータがオブジェクトをモデリングし、これらをテレビやコンピュータスクリーンなどのディスプレイ上に表示する。このコンピュータは、シーン中の各オブジェクトの位置および方向、各オブジェクトに光が入射しているように見える方向、各オブジェクトの表面テクスチャ、およびその他の要素に基づき、表示された画像の各部分がちょうど正しく色付けされかつ形付けられていることを確実にするために必要な多くの処理の実行を担当する。
【０００３】
コンピュータグラフィックスの生成は複雑であるため、ほんの数年前では、コンピュータ生成された３次元グラフィックスは、高価な専用のフライトシミュレータ、ハイエンドのグラフィックスワークステーション、およびスーパーコンピュータに概ね限定されていた。大衆は、これらのコンピュータシステムによって生成された画像のいくつかを映画や高価なテレビ広告で見ることはあったが、我々の大部分は、グラフィックス生成を行うコンピュータに実際に接触することはできなかった。これが全て、例えばニンテンドウ６４（登録商標）などの比較的安価な３Ｄグラフィックスプラットフォームや、現在パーソナルコンピュータで利用可能な様々な３Ｄグラフィックスカードが利用可能になることにより変貌した。今や、家庭またはオフィスにて、比較的安価なコンピュータグラフィックスシステム上で刺激的な３Ｄアニメーションおよびシミュレーションと接触することが可能である。
【０００４】
【発明が解決しようとする課題】
大部分の３Ｄグラフィックスコンピュータシステムは、Ｚ軸（シーン奥行き）値を典型的に含むポリゴン頂点属性データに応答して、表示用に画像をレンダリングし準備する。オブジェクトを３Ｄシーン中におけるそれらの各奥行き（すなわち観察者／カメラからの距離）に応じて適切にレンダリングするために、Ｚバッファリングと呼ばれる周知の技術がしばしば用いられる。大量の３Ｄ画像ポリゴン頂点属性データの処理は非常に時間がかかり得るため、グラフィックスシステムの設計者はしばしば、非表示画像データの処理を無くすためのポリゴン間引きおよびクリッピング処理を用いる。この非表示画像データは典型的には、「カメラ空間」と呼ばれる（「スクリーン空間」とも呼ばれる）仮想的３Ｄ画像レンダリング空間内の、所定の「クリッピング」平面によって区切られた視錐台の外側にあるポリゴン頂点データである。例えば、カメラ（ビューポート）位置より後ろにある３Ｄシーンまたはオブジェクトの一部はレンダリングされる必要がなく、間引きあるいはクリップされてもよい。同様に、シーン距離において非常に遠くの（すなわちシーン奥行きあるいはＺ軸に沿ってカメラ／視点位置から遠くの）シーン部分および３Ｄオブジェクトは、レンダリングされる必要がない。
【０００５】
遠クリッピング面が近クリッピング面の奥行きの何倍もになるような近クリッピング面および遠クリッピング面の両方を用いて、シーン奥行きクリッピングを行ってもよい。シーンデプスクリッピングはまた、カメラ／視点位置（すなわちＺ＝０平面）かその後ろにあるクリッピング面を用いて、あるいは近クリッピング面を全く用いずに行われてもよい。ただし、本明細書において詳細には述べない様々な理由で、カメラ／視点位置にある、あるいはカメラ／視点位置に非常に近い３Ｄオブジェクトのレンダリングは、小さなＺ値が関係することにより、オーバーフローおよびラッピングエラーなどの特定のデータ処理問題を起こし得る。例えば、ジオメトリ投影の場合、カメラ（Ｚ＝０）面に「近すぎる」頂点のｗ（均一座標スケールファクタ）値は非常に小さくなる。スクリーン空間変換動作中に頂点ｘ、ｙおよびｚ座標属性をそのような小さいｗ値で除算するとしばしば、精度およびオーバーフローの問題が起こる。特にｗ＝０の場合、得られるスケール値は無限大になる。近平面に対してジオメトリクリッピングすることによりこのような問題を回避できる。すなわち、違反する頂点を持つ各三角形を近平面によって部分に分解し、「近すぎる」方の半分を捨てる。従って、カメラ／視点位置より前の近クリッピング面を用いてシーンデプスクリッピングを行う場合、近クリッピング面は、そのようなオーバーフローまたはラッピングエラーが起こらないようにカメラ前方の十分遠くに位置されなければならない。
【０００６】
あるいは、近クリッピング面を用いずに、またはカメラ／視点位置かその後ろにあるクリッピング面を用いてシーンデプスクリッピングが行われる場合は、このようなオーバーフローおよびラッピング問題を予防する責任を、カメラ位置とレンダリングされたオブジェクトとの間の許容距離を規制することによってアプリケーションプログラムに負わせる必要がある。グラフィックスシステムの設計者が過去に直面した１つの問題は、表示された３Ｄ画像オブジェクトで観察者の平面（すなわちカメラ／視点平面）に近づくもののポリゴンのクリッピングに関連する、特定の望ましくない視覚的効果をいかにして回避するかである。特に、グラフィックスアーチストおよびゲーム開発者は、観察者の前に位置するクリッピング面によってクリッピングされた３Ｄオブジェクトを見ることを嫌がる。これはオブジェクトに穴を開けてしまい、オブジェクトが中空であるという印象を与えるからである。１つの解決策は、近クリッピング面が視点／カメラ平面（すなわちＺ＝０平面）に非常に近いような６面からなる視錐台クリッピングボックスを定義し、いかなる３Ｄアニメーション化オブジェクトも近クリッピング面より視点／カメラ平面側に近く来てはならないというアプリケーションプログラムルールを立てることである。近クリッピング面が視点／カメラ平面に非常に近く置かれることにより、視点／カメラ平面のやや近くにレンダリングされる必要があるオブジェクトが、クリッピングの悪影響を受けるほど近くに来る可能性が少なくなる。残念なことに、近クリッピング面を視点／カメラ平面に非常に近く置くことは、遠クリッピング面に向けてのＺ奥行き精度を減少させる。このＺ精度の問題は、限られた数のＺバッファビットしか奥行き精度に利用できない場合に特に悪化する。Ｚ値を表現するためのビット数が少なくなるほど、精度問題が大きくなる。
【０００７】
ハードウェアにおいてＺ軸奥行き値を表現するために例えば２４ビット以上の多くのビットが利用可能であるグラフィックスシステムにおいてＺバッファリングを行う場合、Ｚ値精度は問題ではないかもしれない。しかし、Ｚ軸奥行き値を表すために利用可能なビットがより少ない特定のシステムまたは実施形態においては、十分なＺ値精度の欠如により、Ｚバッファリング性能および正確さが深刻な影響を受けてしまうかもしれない。例えば、特定の実施形態においては、記憶メモリ制約に対応するためにデータ圧縮を行うことが望ましいこともある。Ｚデータ圧縮が行われると、正確なＺバッファリングを提供するためのＺ精度の度合いが悪影響を受け得る。
【０００８】
【課題を解決するための手段および発明の効果】
本発明はまた、３Ｄグラフィックスレンダリングシステムにおいて、Ｚ値奥行きデータが圧縮されなければならない場合にＺバッファリングを行う際に、Ｚ値奥行き精度を確保するための技術および構成を提供することにより、上記の問題を解決する。
【０００９】
本発明はまた、３Ｄグラフィックスレンダリングシステムにおいて、Ｚ値奥行き精度を確保しながら、オブジェクトが視点／カメラ平面に近くレンダリングされすぎたときに発生する望ましくない視覚的アーチファクトを回避するために、Ｚクリッピング面を視点／カメラ平面の非常に近くで用いることを可能にするための技術および構成を提供することにより、上記の問題を解決する。
【００１０】
本発明はまた、３Ｄグラフィックスレンダリングシステムにおいて、１つの頂点に対応するＺ奥行き値が例えば２３ビット以下を用いて表されるようなＺバッファリングを行うための技術および構成を提供することにより、上記の問題を解決する。
【００１１】
より具体的には、本発明の一実施例において、Ｚ＝０視点／カメラ（ビューポート）平面から所定の範囲内におけるＺ値クランピングを提供することにより、Ｚクランピング構成を用いて視覚的に重要なＺ成分の精度を改善する。この構成は、Ｚ精度を確保しながら、視点／カメラ平面に近くレンダリングされたオブジェクトがクリッピングされたときに発生する望ましくない視覚的アーチファクトを回避するために、Ｚクリッピング面を視点／カメラ平面の非常に近くで用いることを可能にする。近クリッピング面「ｚｎｅａｒ」は、Ｚ＝０平面に非常に近いＺ平面に設定され、遠クリッピング面「ｚｆａｒ」は、Ｚ＝０平面から遠くのＺ平面に設定される。そしてクランピング面「ｚｎｅａｒ２」を、Ｚ＝ｚｎｅａｒ＊（１＜＜ｎ）に位置するように設定する。ここでｎは、ｚｎｅａｒ２平面の位置をｚｎｅａｒ平面に対して相対的に設定することによってそのシーンのＺ解像度を効果的に決定する整数である。ｚｎｅａｒ２平面とＺ遠クリッピング面との間の範囲内にある全ての画素について、Ｚバッファリングが行われる。ｚｎｅａｒ平面とｚｎｅａｒ２平面との間の範囲内にあるいかなる画素も、そのＺ値が例えばゼロに、あるいはクランピング面のＺ値にクランプされる。ｚ＜ｚｎｅａｒである全ての画素について、ハードウェアジオメトリクリッピングが行われる。
【００１２】
一実施例において、グラフィックスパイプラインに設けられた従来のＺ値圧縮回路が、Ｚ値の所定の範囲内におけるＺクランピングを行うように拡張される。拡張された回路は、圧縮前にＺ値を１ビット以上左にシフトするための加算器および、ゼロ以外のシフトされた最上位ビットをゼロにマスクアウトするためのゲートを含む。
【００１３】
【発明の実施の形態】
図１は、対話式３Ｄコンピュータグラフィックスシステム５０の一例を示す。
システム５０は、対話式３Ｄビデオゲームを面白いステレオ音とともにプレイするために用いられ得る。また、様々な他の応用例にも用いられ得る。
【００１４】
本例において、システム５０は、３次元世界のデジタル表現物あるいはモデルを、対話式にリアルタイムで処理することが可能である。システム５０は、その世界のうちの一部または全部を、いかなる任意の視点から表示することもできる。例えば、システム５０は、手持ちコントローラ５２ａ、５２ｂまたはその他の入力デバイスからのリアルタイム入力に応答して、対話式に視点を変更することができる。これにより、ゲームのプレーヤが、その世界の中または外側にいる人の目を通じて、その世界を見ることが可能になる。システム５０は、リアルタイム３Ｄ対話式表示を必要としない応用例（例えば、２Ｄ表示生成および／または非対話式表示）に用いられ得るが、非常に素早く高品質３Ｄ画像を表示できる能力を、非常にリアルかつ刺激的なゲームプレイまたはその他のグラフィカルな対話を創出するために用いることができる。
【００１５】
システム５０を用いて、ビデオゲームまたはその他のアプリケーションをプレイするために、ユーザは、まず、ケーブル５８を両者の間に接続することによって、メインユニット５４を自分のカラーテレビ５６またはその他のディスプレイデバイスに接続する。メインユニット５４は、カラーテレビ５６を制御するための映像信号と音声信号との両方を生成する。映像信号は、テレビスクリーン５９上に表示される画像を制御するものであり、音声信号は、テレビのステレオスピーカ６１Ｌ、６１Ｒを介して音として再生される。
【００１６】
ユーザは、また、メインユニット５４を電源に接続する必要がある。この電源は、標準的な家庭用電気コンセントに接続して家庭電流をメインユニット５４に電力供給するために、適切なより低いＤＣ電圧信号に変換する従来のＡＣアダプタ（図示せず）であり得る。他の実施形態として、電池を用い得る。
【００１７】
ユーザは、メインユニット５４を制御するためにハンドコントローラ５２ａ、５２ｂを用い得る。コントロール６０は、例えば、テレビ５６上に表示されたキャラクターが３Ｄ世界内で移動するべき方向（上下、左右、近くあるいは遠く）を指定するために用い得る。コントロール６０は、また、他のアプリケーション（例えば、メニュー選択、ポインタ／カーソル制御など）のための入力を提供する。コントローラ５２は、様々な形態を取り得る。本例においては、図示したコントローラ５２は、それぞれジョイスティック、プッシュボタンおよび／または方向スイッチとしてのコントロール６０を含む。コントローラ５２は、ケーブルを介して、あるいは電磁（例えば高周波または赤外線）波を介して無線でメインユニット５４に接続され得る。
【００１８】
ゲームなどのアプリケーションをプレイするためには、ユーザは自分がプレイしたいビデオゲームあるいはその他のアプリケーションを記憶している適切な記憶媒体６２を選択し、その記憶媒体をメインユニット５４のスロット６４に挿入する。記憶媒体６２は、例えば、専用にコード化されたおよび／または暗号化された光学および／または磁気ディスクであり得る。ユーザは、パワースイッチ６６を操作してメインユニット５４をオンにし、記憶媒体６２に記憶されたソフトウェアに基づいて、メインユニットにビデオゲームあるいはその他のアプリケーションの実行を開始させ得る。ユーザは、コントローラ５２を操作してメインユニット５４に入力を供給し得る。例えば、コントロール６０を操作することにより、ゲームあるいはその他のアプリケーションを開始させ得る。その他のコントロール６０を動かすことにより、アニメーション化されたキャラクターを異なる方向に移動させたり、３Ｄ世界におけるユーザの視点を変更することができる。記憶媒体６２に記憶された特定のソフトウェアに依存して、コントローラ５２上の様々なコントロール６０は、異なる時刻において異なる機能を実行することができる。
【００１９】
システム全体の電子回路例
図２に、システム５０の要素例のブロック図を示す。主要な要素として以下のものを含む。
・メインプロセッサ（ＣＰＵ）１１０、
・メインメモリ１１２、および
・グラフィックスおよび音声プロセッサ１１４
【００２０】
本例において、メインプロセッサ１１０（例えば、機能拡張型ＩＢＭ  Ｐｏｗｅｒ  ＰＣ７５０）は、手持ちコントローラ１０８（および／または他の入力装置）からの入力を、グラフィックスおよびプロセッサ１１４を介して受け取る。メインプロセッサ１１０は、ユーザ入力に対話式に応答し、例えば、外部記憶媒体６２から光ディスクドライブなどの大容量記憶アクセス装置１０６を介して供給されるビデオゲームあるいはその他のプログラムを実行する。一例としてビデオゲームプレイの場合、メインプロセッサ１１０は、様々な対話式機能および制御機能に加えて、衝突検出およびアニメーション処理を実行することができる。
【００２１】
本例において、メインプロセッサ１１０は、３Ｄグラフィックスコマンドおよび音声コマンドを生成し、これらをグラフィックスおよび音声プロセッサ１１４に送る。グラフィックスおよび音声プロセッサ１１４は、これらのコマンドを処理することにより、ディスプレイ５９上に面白い視覚画像を生成し、ステレオスピーカ６１Ｒ、６１Ｌまたはその他の適切な音声生成装置上で面白いステレオ音を生成する。
【００２２】
例示のシステム５０は、グラフィックスおよび音声プロセッサ１１４から画像信号を受け取って、画像信号をコンピュータモニタまたは家庭用カラーテレビ５６などの標準的な表示装置上での表示に適したアナログおよび／またはデジタル映像信号に変換するビデオ符号化器１２０を有する。システム５０はまた、デジタル化された音声信号を圧縮および伸長し、また必要に応じてデジタルおよびアナログの音声信号化フォーマット間の変換を行う音声コーデック（圧縮器／伸長器）１２２を有する。音声コーデック１２２は、バッファ１２４を介して音声入力を受け取り、これらをグラフィックスおよび音声プロセッサ１１４に処理（例えば、プロセッサが生成する、および／または大容量記憶アクセス装置１０６の音声ストリーミング出力を介して受け取る他の音声信号との混合）のために供給することができる。本例におけるグラフィックスおよび音声プロセッサ１１４は、音声関連の情報を、音声タスクについて利用可能である音声メモリ１２６中に記憶することができる。グラフィックスおよび音声プロセッサ１１４は、結果として得られた音声出力信号を、伸長およびアナログ信号への変換（例えばバッファアンプ１２８Ｌ、１２８Ｒを介して）のために音声コーデック１２２に供給することにより、スピーカ６１Ｌ、６１Ｒによって再生できるようにする。
【００２３】
グラフィックスおよび音声プロセッサ１１４は、システム５０内に存在し得る様々な追加的なデバイスと連絡する能力を有する。例えば、大容量記憶アクセス装置１０６および／またはその他の要素と連絡するために、パラレルデジタルバス１３０を用い得る。シリアル周辺バス１３２は、例えば、
・プログラム可能なリードオンリーメモリおよび／またはリアルタイムクロック１３４、
・モデム１３６その他のネットワーク化インターフェース（これは、プログラム命令および／またはデータをダウンロードまたはアップロードすることができるインターネットあるいはその他のデジタルネットワークなどの通信ネットワーク１３８に、システム５０を接続し得る）、および
・フラッシュメモリ１４０
を含む、様々な周辺デバイスまたはその他のデバイスと連絡し得る。
【００２４】
追加的な拡張メモリ１４４（例えばメモリカード）やその他のデバイスと連絡するために、さらなる外部シリアルバス１４２を用い得る。コネクタを用いて様々なデバイスをバス１３０、１３２、１４２に接続し得る。
【００２５】
グラフィックスおよび音声プロセッサの例
図３は、グラフィックスおよび音声プロセッサ１１４の一例のブロック図である。一例において、グラフィックスおよび音声プロセッサ１１４は、単一チップのＡＳＩＣ（アプリケーション専用集積回路）であり得る。本例において、グラフィックスおよび音声プロセッサ１１４は、以下を含む。
・プロセッサインターフェース１５０
・メモリインターフェース／コントローラ１５２
・３Ｄグラフィックスプロセッサ１５４
・音声デジタル信号プロセッサ（ＤＳＰ）１５６
・音声メモリインターフェース１５８
・音声インターフェースおよびミキサ１６０
・周辺コントローラ１６２、および
・ディスプレイコントローラ１６４
【００２６】
３Ｄグラフィックスプロセッサ１５４は、グラフィックス処理タスクを行う。音声デジタル信号プロセッサ１５６は、音声処理タスクを行う。ディスプレイコントローラ１６４は、メインメモリ１１２からの画像情報にアクセスし、これをディスプレイデバイス１０２上に表示するためにビデオ符号化器１２０に供給する。音声インターフェースおよびミキサ１６０は音声コーデック１２２とインターフェースし、また異なるソースからの音声（例えば大容量記憶アクセス装置１０６からの音声ストリーミング、音声ＤＳＰ１５６の出力、および音声コーデック１２２を介して受け取られる外部音声入力）を混合することができる。プロセッサインターフェース１５０は、メインプロセッサ１１０とグラフィックスおよび音声プロセッサ１１４との間のデータおよび制御インターフェースを提供する。
【００２７】
メモリインターフェース１５２は、グラフィックスおよび音声プロセッサ１１４とメモリ１１２との間の、データおよび制御インターフェースを提供する。本例において、メインプロセッサ１１０は、グラフィックスおよび音声プロセッサ１１４の一部であるプロセッサインターフェース１５０およびメモリインターフェース１５２を介して、メインメモリ１１２にアクセスする。周辺コントローラ１６２は、グラフィックスおよび音声プロセッサ１１４と、上述した様々な周辺機器との間の、データおよび制御インターフェースを提供する。音声メモリインターフェース１５８は、音声メモリ１２６とのインターフェースを提供する。
【００２８】
グラフィックスパイプラインの例
図４は、３Ｄグラフィックスプロセッサ１５４の一例のより詳細な図を示す。３Ｄグラフィックスプロセッサ１５４は、特に、コマンドプロセッサ２００および３Ｄグラフィックスパイプライン１８０を含む。メインプロセッサ１１０は、データのストリーム（例えば、グラフィックスコマンドストリームおよび表示リスト）を、コマンドプロセッサ２００に通信する。メインプロセッサ１１０は、メモリ待ち時間を最小にするために２レベルキャッシュ１１５を有し、また、グラフィックスおよび音声プロセッサ１１４を対象とした非キャッシュデータストリーム用の書き込み収集バッファ１１１を有している。書き込み収集バッファ１１１は、部分キャッシュラインを集めて完全なキャッシュラインにし、データを一度につき１キャッシュラインずつグラフィックスおよび音声プロセッサ１１４に送り出すことにより、バス利用率を最大にする。
【００２９】
コマンドプロセッサ２００は、メインプロセッサ１１０から表示コマンドを受け取って解析する（これらを処理するために必要な任意の追加的なデータは、共有メモリ１１２から得る）。コマンドプロセッサ２００は、頂点コマンドのストリームを、２Ｄおよび／または３Ｄ処理およびレンダリングのためにグラフィックスパイプライン１８０に供給する。グラフィックスパイプライン１８０は、これらのコマンドに基づいて画像を生成する。得られた画像情報は、ディスプレイコントローラ／ビデオインターフェースユニット１６４（パイプライン１８０のフレームバッファ出力をディスプレイ１０２上に表示する）によるアクセスのために、メインメモリ１１２に転送され得る。
【００３０】
図５は、グラフィックスプロセッサ１５４の論理フロー図である。メインプロセッサ１１０は、グラフィックスコマンドストリーム２１０、表示リスト２１２、および頂点配列２１４をメインメモリ１１２に格納し得、バスインターフェース１５０を介してコマンドプロセッサ２００にポインタを渡し得る。メインプロセッサ１１０は、メインメモリ１１０内に割り当てた１つ以上のグラフィックス先入れ先出し（ＦＩＦＯ）バッファ２１０に、グラフィックスコマンドを格納する。コマンドプロセッサ２００は、
・同期／フロー制御および負荷バランスを取るためグラフィックスコマンドを受け取りバッファリングするオンチップＦＩＦＯメモリバッファ２１６を介して、メインメモリ１１２からのコマンドストリーム、
・オンチップコールＦＩＦＯメモリバッファ２１８を介して、メインメモリ１１２からの表示リスト２１２、および
・頂点キャッシュ２２０を介して、コマンドストリームからおよび／またはメインメモリ１１２中の頂点配列２１４からの頂点属性）
を取り込む。
【００３１】
コマンドプロセッサ２００は、属性タイプを浮動小数点フォーマットに変換し、得られた完全な頂点ポリゴンデータをレンダリング／ラスタライゼーションのためにグラフィックスパイプライン１８０に渡すコマンド処理動作２００ａを行う。プログラム可能なメモリ調停回路１３０（図４を参照）は、共有メインメモリ１１２へのアクセスを、グラフィックスパイプライン１８０、コマンドプロセッサ２００、およびディスプレイコントローラ／ビデオインターフェースユニット１６４間で調停する。
【００３２】
図４は、グラフィックスパイプライン１８０が以下を含み得ることを示している。
・変換ユニット３００
・セットアップ／ラスタライザ４００
・テクスチャユニット５００
・テクスチャ環境ユニット６００、および
・画素エンジン７００
【００３３】
変換ユニット３００は、様々な２Ｄおよび３Ｄ変換ならびにその他の動作３００ａを行う（図５を参照）。変換ユニット３００は、変換処理３００ａで用いられる行列を格納するための、１つ以上のマトリックスメモリ３００ｂを有し得る。変換ユニット３００は、受け取った図形を頂点毎にオブジェクト空間からスクリーン空間に変換し、また、受け取ったテクスチャ座標を変換し投影テクスチャ座標を生成する（３００ｃ）。変換ユニット３００は、ポリゴンクリッピング／間引き３００ｄを行う。やはり変換ユニット３００ｂによって行われるライティング処理３００ｅは、一実施例において最高８個の独立のライティングまでに対し、頂点毎のライティング演算を提供する。変換ユニット３００は、また、エンボススタイルのバンプマッピング効果のためのテクスチャ座標生成（３００ｃ）を行い得る。また、本明細書においてより詳細に後述するように、変換ユニット３００は奥行き（Ｚ値）圧縮およびクランピングを行う。
【００３４】
セットアップ／ラスタライザ４００は、変換ユニット３００から頂点データを受け取り、トライアングルセットアップ情報を、境界のラスタライズ、テクスチャ座標のラスタライズおよび色のラスタライズを行う１つ以上のラスタライザユニット（４００ｂ）に送るセットアップユニットを有する。
【００３５】
テクスチャユニット５００（オンチップテクスチャメモリ（ＴＭＥＭ５０２）を含み得る）は、テクスチャリングに関連する様々な処理を行う。これには、例えば、
・メインメモリ１１２からのテクスチャ５０４の取り出し、
・例えば、マルチテクスチャ処理、キャッシュ後テクスチャ伸長、テクスチャフィルタリング、エンボス化、投影テクスチャの使用を介した陰影および明暗、ならびにアルファ透明度および奥行きをともなうＢＬＩＴを含むテクスチャ処理（５００ａ）、
・バンプマッピング、擬似テクスチャ、およびテクスチャタイル化効果（５００ｂ）についてのテクスチャ座標変位の演算のためのバンプマップ処理、および
・間接テクスチャ処理（５００ｃ）
が含まれる。
【００３６】
テクスチャユニット５００は、通常（非間接的）および間接的テクスチャルックアップ動作の両方を用いて、テクスチャ処理を行う。通常および間接的テクスチャルックアップ動作を行うための例示のグラフィックスパイプライン回路ならびに手順のより詳細な記載が、「Ｍｅｔｈｏｄ  Ａｎｄ  Ａｐｐａｒａｔｕｓ  Ｆｏｒ  Ｄｉｒｅｃｔ  Ａｎｄ  Ｉｎｄｉｒｅｃｔ  Ｔｅｘｔｕｒｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｉｎ  Ａ  Ｇｒａｐｈｉｃｓ  Ｓｙｓｔｅｍ」の名称を有する同一譲受人に譲渡された同時係属中の特許出願シリアルＮｏ．０９／７２２，３８２（弁理士受付番号７２３−９６１）、および２０００年８月２３日付け出願に係るその対応仮出願シリアルＮｏ．６０／２２６，８９１に開示されている。これらの両方を本明細書において参考のため援用する。
【００３７】
テクスチャユニット５００は、フィルタリングされたテクスチャ値を、テクスチャ環境処理のため（６００ａ）にテクスチャ環境ユニット６００に出力する。テクスチャ環境ユニット６００は、ポリゴンおよびテクスチャ色／アルファ／奥行きをブレンドし、また、逆レンジ型フォグ効果を達成するためのテクスチャフォグ処理（６００ｂ）を行い得る。テクスチャ環境ユニット６００は、例えば色／アルファ変調、エンボス化、詳細テクスチャリング、テクスチャスワッピング、クランピング、および奥行きブレンディングに基づき、様々な他の面白い環境関連の機能を行うためのステージを複数提供し得る。テクスチャ環境ユニット６００はまた、ハードウェア内においてテクスチャを１回のパスで組み合わせる（例えば減算）ことができる。テクスチャ環境ユニット６００に関するさらなる詳細については、「Ｒｅｃｉｒｃｕｌａｔｉｎｇ  Ｓｈａｄｅ  Ｔｒｅｅ  Ｂｌｅｎｄｅｒ  ｆｏｒ  ａ  Ｇｒａｐｈｉｃｓ  Ｓｙｓｔｅｍ」の名称を有する同一譲受人に譲渡された出願シリアルＮｏ．０９／７２２，３６７（弁理士受付番号７２３−９６８）および２０００年８月２３日付け出願に係るその対応仮出願シリアルＮｏ．６０／２２６，８８８を参照のこと。これらの両方を本明細書において参考のため援用する。
【００３８】
ピクセルエンジン７００は、奥行き（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を行う。本例において、ピクセルエンジン７００は、データを埋め込み（オンチップ）フレームバッファメモリ７０２に格納する。グラフィックスパイプライン１８０は、フレームバッファおよび／またはテクスチャ情報をローカルに格納するための１つ以上の埋め込みＤＲＡＭメモリ７０２を有し得る。ｚ比較７００ａ'は、また、現在有効なレンダリングモードに依存して、グラフィックスパイプライン１８０中のより早い段階で行われ得る（例えば、アルファブレンディングが必要でなければ、ｚ比較は、より早くに行われ得る）。ピクセルエンジン７００は、オンチップフレームバッファ７０２をディスプレイ／ビデオインターフェースユニット１６４によるアクセスのためにメインメモリ１１２に周期的に書き込むコピー動作７００ｃを含む。このコピー動作７００ｃは、また、動的テクスチャ合成効果を得るために、埋め込みフレームバッファ７０２の内容をメインメモリ１１２内のテクスチャにコピーするためにも用いられ得る。
【００３９】
このグラフィックスシステム例において、コピーアウト動作中に、アンチエイリアシングおよびその他のフィルタリングも行うことができる。アンチエイリアシングに関するさらなる詳細については、いずれも「Ｍｅｔｈｏｄ  Ａｎｄ  Ａｐｐａｒａｔｕｓ  Ｆｏｒ  Ａｎｔｉ−Ａｌｉａｓｉｎｇ  Ｉｎ  Ａ  Ｇｒａｐｈｉｃｓ  Ｓｙｓｔｅｍ」の名称を有する、２０００年８月２３日付け出願に係る仮出願Ｎｏ．６０／２２６，９００ならびに２０００年１１月２８日付け出願に係るその対応実用特許出願Ｎｏ．０９／７２６，２２６（弁理士受付番号７２３−９６４）を参照のこと。これらの両方を本明細書において参考のため援用する。
【００４０】
グラフィックスパイプライン１８０のフレームバッファ出力（最終的には、メインメモリ１１２に格納される）は、各フレームごとにディスプレイ／ビデオインターフェースユニット１６４によって読み出される。ディスプレイコントローラ／ビデオインターフェースユニット１６４は、ディスプレイ１０２上に表示するためのデジタルＲＧＢ画素値を提供する。
【００４１】
Ｚクランピング構成の例
Ｚ＝０である視点／カメラ（ビューポート）平面の前方の所定の範囲内にある画素のＺ値をゼロにクランプすることにより、Ｚクランピング構成を用いてレンダリングされたシーン要素の視覚的に重要なＺ軸（奥行き）属性の精度を改善する。図６は、スクリーン空間で見た、本発明のＺ値クランピング構成の一例を示す。Ｚクリッピング面２０１「ｚｎｅａｒ」は、Ｚ＝０視点／カメラ平面２０２の非常に近くに定義されることにより、オブジェクトが視点／カメラ平面に近くレンダリングされすぎたときに発生する望ましくない視覚的アーチファクトを回避する。クランピング平面２０３「ｚｎｅａｒ２」は、ｚｎｅａｒ２がｚｎｅａｒ＊（１＜＜ｎ）に等しいＺ平面に位置するように設定され、ここでｎは、ｚｎｅａｒ２平面の位置をｚｎｅａｒ平面に対して相対的に設定することによってそのシーンのＺ解像度を効果的に決定する整数である。また、遠クリッピング面２０４「ｚｆａｒ」がＺ＝０平面から遠くのＺ平面に設定される。ｚｎｅａｒ２平面とＺ遠クリッピング面との間の範囲内にある全ての画素について、Ｚバッファリングが行われる。ｚｎｅａｒ平面とｚｎｅａｒ２平面との間の範囲内にあるいかなる画素も、そのＺ値が例えばゼロに、（あるいはｚｎｅａｒ２クランピング面のＺ値などの最小のＺ値）にクランプされ、ｚ＜ｚｎｅａｒである全ての画素について、幾何学図形に対して通常の（ｎｏｒｍａｌ）クリッピングが行われる。
【００４２】
図７は、グラフィックス処理システムにおいてＺバッファリングを実施する際に改善されたＺ精度を得るための、概要処理ステップ３０１のセットの一例のフローチャートを示す。「Ｚ」奥行き値が、ブロック３０２に示すように、ポリゴン頂点属性として汎用的に演算されるかあるいはグラフィックスレンダリングシステムに供給される。本発明のＺクランピング方法において、ブロック３０４に示すように、クリッピング平面「ｚｎｅａｒ」がＺ＝０平面の非常に近くのＺ軸平面に設定され、別のクリッピング平面「ｚｆａｒ」がＺ＝０平面から遠くのＺ軸位置に設定される。また、ブロック３０６に示すように、クランピング平面「ｚｎｅａｒ２」が、Ｚ＝ｚｎｅａｒ２＝ｚｎｅａｒ＊（１＜＜ｎ）であるＺ軸平面に位置するように設定され、ここでｎは、ｚｎｅａｒ２平面の位置をｚｎｅａｒ平面に対して相対的に設定することによってそのシーンのＺ解像度を効果的に決定する整数である（すなわち、ｚｎｅａｒ２平面がｚｎｅａｒ平面から遠くに位置するほど、レンダリングされたシーンのうちでｚｎｅａｒ２平面よりもカメラ／視点平面から遠い部分について得られるＺバッファリング解像度は大きくなる）。ブロック３０８に示すように、ｚｎｅａｒ２＜Ｚ＜ｚｆａｒであるＺ値を有する全ての画素に対して通常の（ｎｏｒｍａｌ）Ｚバッファリングが行われる。ブロック３１０に示すように、ｚｎｅａｒおよびｚｎｅａｒ２クランピング面に等しいまたはその間にあるＺ値を有する（すなわちｚｎｅａｒ≦Ｚ≦ｚｎｅａｒ２）画素については、Ｚ値がクランプされ（例えばゼロあるいはｚｎｅａｒ２平面の値などの最小の値にクランプされ）、対応する画素がフレームバッファに最初から最後に向かう順序で書き込まれる。ブロック３１２に示すように、Ｚ＜ｚｎｅａｒである画素について従来のジオメトリクリッピングが行われる。本グラフィックスパイプライン実施例において、以下のハードウェア実施例に説明されるように、図７のステップの大部分は変換ユニット３００内のクリッピングロジックおよび拡張Ｚ圧縮ロジックによって実行される。
【００４３】
ハードウェア実施例
グラフィックスパイプライン例１８０において、変換ユニット３００は、クリッピング面ロジック回路およびＺ圧縮ロジック回路の両方を有している。アンチエイリアス化された画素の処理は、限られたサイズのＺバッファ（すなわち埋め込みフレームバッファ７０２）により多くのデータを格納することを必要とするため、この実施例においてＺ値圧縮はフルシーンアンチエイリアシングが許可されたときにのみ行われる。このようなＺ圧縮回路は通常、演算された２４ビットＺ属性値を１６ビット値に圧縮するように動作する。図８は、まったくＺ値のクランピングなしで、Ｚ圧縮を得るために用いられ得るハードウェアロジック回路例を示す。このＺ圧縮回路例は本質的に、優先符号化器３２０および、４個の２４ビットＺ値に圧縮を行ってこれらを１６ビット値に変換するシフタ３２２を備えている。
【００４４】
このグラフィックスパイプライン１８０の実施例において、圧縮アルゴリズムが、一種の逆浮動小数点符号化を行う。従来の浮動小数点表記では分解能の大部分を数値スケールの下端側に向かってクランプするが、スクリーン空間Ｚの性質上、分解能の大部分を数値スケールの上端側に提供することが必要とされる。これを実現するために、３つの圧縮方式が用いられる。３つの方式の選択は、レンダリングされたシーンに用いられた特定の近−対−遠比に基づいてなされる。例えば、正射影または小さな遠−対−近比を用いるとき、入力Ｚ値から低い方の８ビットが単純に除去されるような、直接的線形圧縮マッピングが用いられる。中程度の遠−対−近比については、１４ｅ２表記を用いた１６ビットへの浮動小数点変換を用いて、２４ビットのＺ値を表現する。この形の圧縮により、近平面において有効１５ビットの解像度ビットおよび遠平面において１７ビットの解像度が得られる。高い遠−対−近比については、１３ｅ３表記を用いた１６ビットへの浮動小数点変換を用いて、２４ビットのＺ値を表現する。これは、近平面において１４ビットおよび遠平面において２０ビットの有効解像度が得られる。
【００４５】
上述の圧縮に対する浮動小数点変換アプローチの１つの直接的かつ単純な実施形態は、指数およびシフト値を選択し、シフト値の分だけ入力値をシフトし、高次ビット位置においてこの指数を追加することを包含する。本実施例において、以下の表に示すように、入力Ｚ値の上位ビットが含まれる特定の値の範囲を検出することにより、指数およびシフト値が選択される。
１４ｅ２表記圧縮の場合
【表１】
0004740490.tif 000002
１３ｅ３表記圧縮の場合
【表２】
0004740490.tif 000003
【００４６】
本例において変換ユニット３００は、Ｚ近クリッピング面およびＺ遠クリッピング面（ならびに適切なＸおよびＹ軸クリッピング面）をプログラマブルに設定し提供するために、従来のハードウェアクリッピング回路を用いてもよい。Ｚクランピング構成を実現しＺクランピング平面を上述のように設定するために、変換ユニット３００は図９に示す拡張Ｚ圧縮ロジック回路を用いる。Ｚ値圧縮に加えて、この回路は、上述の２つの浮動小数点変換圧縮方式のうちの１つを実現する前に、入力Ｚ値の最上位ビットから１つ以上の左シフトを行う。図９に示すようにこの拡張回路構成は、優先符号化器３２０、４ビット（またはそれ以下）加算器３２４およびシフタ３２４、ならびに最上位Ｚ値ビットをマスクするためにＡＮＤゲート（図示せず）を用いる。予め圧縮された入力Ｚ値の左シフトはプログラマブル加算器３２４によって決定され、ここでｎは実行されるべき左シフトの回数を表す。
【００４７】
他の互換性のある実施例
上述のシステム要素５０のうちのいくつかは、上述の家庭用ビデオゲームコンソール構成以外としても実施可能である。例えば、システム５０用に書かれたグラフィックスアプリケーションまたはその他のソフトウェアを、システム５０をエミュレートするなどして互換性を有する異なる構成を持ったプラットフォーム上で実行することができる。もしその別のプラットフォームがシステム５０のハードウェアおよびソフトウェアリソースの一部または全部をうまくエミュレート、シミュレートおよび／または提供することができれば、その別のプラットフォームは、ソフトウェアを首尾よく実行することができる。
【００４８】
一例として、エミュレータは、システム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供し得る。このエミュレータシステムは、アプリケーションソフトウェアが書かれたシステムのハードウェアおよび／またはソフトウェア要素の一部または全部をエミュレートまたはシミュレートする、ソフトウェアおよび／またはハードウェア要素を有し得る。例えば、エミュレータシステムは、システム５０のハードウェアおよび／またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行するパーソナルコンピュータなどの汎用のデジタルコンピュータからなっていてもよい。
【００４９】
汎用デジタルコンピュータのいくつか（例えばＩＢＭまたはマッキントッシュのパーソナルコンピュータおよび互換機）は現在、ＤｉｒｅｃｔＸまたはその他の標準的な３ＤグラフィックスコマンドＡＰＩと適合する３Ｄグラフィックスパイプラインを提供する３Ｄグラフィックスカードを備えている。また、標準的な音声コマンドのセットに基づいて高品質なステレオ音を提供するステレオサウンドカードを備えている場合もある。このようなマルチメディア−ハードウェアを備えたパーソナルコンピュータがエミュレータソフトウェアを実行すれば、システム５０のグラフィックスおよびサウンド性能に匹敵する十分な能力を有し得る。エミュレータソフトウェアは、ゲームプログラマがゲームソフトウェアを書いた対象である家庭用ビデオゲームコンソールプラットフォームの処理、３Ｄグラフィックス、音声、周辺およびその他の機能をシミュレートするように、パーソナルコンピュータプラットフォーム上のハードウェアリソースを制御する。
【００５０】
図１０は、ホストプラットフォーム１２０１、エミュレータ要素１３０３、および記憶媒体６２上に記憶されたゲームソフトウェア実行可能２値画像を用いたエミュレーション処理の全体例を示す。ホスト１２０１は、例えばパーソナルコンピュータ、ビデオゲームコンソール、または十分な演算能力を有する任意のその他のプラットフォームなどの、汎用あるいは専用のデジタル演算装置であり得る。エミュレータ１３０３は、ホストプラットフォーム１２０１上で稼働し、記憶媒体６２からのコマンド、データおよびその他の情報の、ホストによって処理される形式へのリアルタイム変換を提供するソフトウェアおよび／またはハードウェアであり得る。例えば、エミュレータ１３０３は、システム５０によって実行されることが意図される「ソース」２値画像プログラム命令を記憶媒体６２から取り込み、これらのプログラム命令を、ホスト１２０１によって実行その他の処理を行われ得る対象形式に変換する。
【００５１】
一例として、ソフトウェアが、ＩＢＭ  ＰｏｗｅｒＰＣまたはその他の特定のプロセッサを用いたプラットフォーム上で実行されるように書かれており、ホスト１２０１が異なる（例えばインテルの）プロセッサを用いたパーソナルコンピュータである場合は、エミュレータ１３０３は、１つまたは一連の２値画像プログラム命令を記憶媒体６２から取り込み、これらのプログラム命令を、１つ以上の同等なインテルの２値画像プログラム命令に変換する。エミュレータ１３０３はまた、グラフィックスおよび音声プロセッサ１１４によって処理されることを意図されたグラフィックスコマンドおよび音声コマンドを取り込みおよび／または生成し、これらのコマンドを、ホスト１２０１上において利用可能であるハードウェアおよび／またはソフトウェアグラフィックスおよび音声処理リソースによって処理され得る単数または複数のフォーマットに変換する。一例として、エミュレータ１３０３は、これらのコマンドを、ホスト１２０１の特定のグラフィックスおよび／または音声ハードウェアによって処理され得るコマンドに変換し得る（例えば、標準的なＤｉｒｅｃｔＸ、ＯｐｅｎＧＬ、および／または音声ＡＰＩを用いて）。
【００５２】
上述のビデオゲームシステムの一部または全ての特徴を提供するために用いられるエミュレータ１３０３には、また、そのエミュレータを用いて実行されるゲームの様々なオプションやスクリーンモードの選択を単純化あるいは自動化するグラフィックスユーザインターフェース（ＧＵＩ）が備えられてもよい。一例において、そのようなエミュレータ１３０３は、また、ソフトウェアが本来意図されたホストプラットフォームに比較して、より高度な機能性をさらに含んでもよい。エミュレータ内の特定のグラフィックスサポートハードウェアが図７、８および９に示すｚ近傍処理機能を含まない場合、エミュレータの設計者は、
・プロセッサの速度に依存して性能が減少し得るが、ｚ近傍処理機能をソフトウェアで実現するか、あるいは
・ｚ近傍処理を「スタブ（すなわち無視）」することにより、近画像アーチファクトを有するレンダリングされた画像を提供する
という選択肢を有する。
【００５３】
図６のフローチャートは、その全体をソフトウェアで実現するか、全体をハードウェアで実現するか、あるいはハードウェアとソフトウェアの組み合わせで実現し得るが、好適な実施例においては、より高い速度性能およびその他の利点を得るためにこれらの計算の大部分をハードウェアで行う。しかし、他の実施形態（例えば非常に高速なプロセッサが利用可能である場合）において、図６の演算およびステップをソフトウェアで実現して同様なまたは同じ画像結果を提供することができる。
【００５４】
図１１は、エミュレータ１３０２とともに適切に用いられるエミュレーションホストシステム１２０１を示す。システム１２０１は、処理ユニット１２０３およびシステムメモリ１２０５を有する。システムバス１２０７が、システムメモリ１２０５を含む様々なシステム要素を、処理ユニット１２０３に接続する。システムバス１２０７は、メモリバスまたはメモリコントローラを含む数種のタイプのバス構造、周辺バス、および様々なバスアーキテクチャのうちのいずれかを用いた局所バスのうちのいずれでもよい。システムメモリ１２０７は、リードオンリーメモリ（ＲＯＭ）１２５２およびランダムアクセスメモリ（ＲＡＭ）１２５４を有する。パーソナルコンピュータシステム１２０１内の要素間の情報の転送（例えばスタートアップ中など）に役立つ基本的なルーチンを含んだ基本入力／出力システム（ＢＩＯＳ）１２５６が、ＲＯＭ１２５２に格納されている。システム１２０１はさらに、様々なドライブおよび関連するコンピュータ可読性の媒体を有する。ハードディスクドライブ１２０９は、（典型的には固定の）磁気ハードディスク１２１１から読み出し、またこれに対して書き込む。追加的な（可能なオプションである）磁気ディスクドライブ１２１３は、着脱可能な「フロッピー」またはその他の磁気ディスク１２１５から読み出し、また、これに対して書き込む。光ディスクドライブ１２１７は、ＣＤ  ＲＯＭまたはその他の光メディアなどの着脱可能な光ディスク１２１９から読み出し、また、いくつかの構成においては、これに対して書き込む。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、それぞれハードディスクドライブインターフェース１２２１および光ドライブインターフェース１２２５によって、システムバス１２０７に接続されている。そのドライブおよびそれに対応するコンピュータ可読性媒体は、コンピュータ可読性の命令、データ構造、プログラムモジュール、ゲームプログラムおよびパーソナルコンピュータシステム１２０１のためのその他のデータを、不揮発的に記憶する。その他の構成において、コンピュータによりアクセス可能なデータを格納することができる他のタイプのコンピュータ可読性媒体、例えば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイ（Ｂｅｒｎｏｕｌｌｉ）カートリッジ、ランダムアクセスメモリ（ＲＡＭ）リードオンリーメモリ（ＲＯＭ）などもまた使用され得る。
【００５５】
エミュレータ１３０３を含む複数のプログラムモジュールは、ハードディスク１２１１、着脱式磁気ディスク１２１５、光ディスク１２１９、および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４上に記憶され得る。このようなプログラムモジュールは、グラフィックスおよび音声ＡＰＩを提供するオペレーティングシステム、１つ以上のアプリケーションプログラム、その他のプログラムモジュール、プログラムデータおよびゲームデータを含んでもよい。ユーザは、キーボード１２２７、ポインティング装置１２２９、マイク、ジョイスティック、ゲームコントローラ、衛星放送用アンテナ、スキャナなどの入力装置を介して、コマンドおよび情報を、パーソナルコンピュータシステム１２０１に入力し得る。これらおよびその他の入力装置は、システムバス１２０７に接続されたシリアルポートインターフェース１２３１を介して処理ユニット１２０３に接続されることができるが、パラレルポート、ゲームポートファイヤワイヤバスまたはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースによって接続されてもよい。また、モニタ１２３３またはその他のタイプの表示装置が、ビデオアダプタ１２３５などのインターフェースを介して、システムバス１２０７に接続される。
【００５６】
システム１２０１は、インターネットなどのネットワーク１１５２を介して通信を確立するための、モデム１１５４やその他のネットワークインターフェース手段を有し得る。内部でも外部でもよいモデム１１５４が、シリアルポートインターフェース１２３１を介してシステムバス１２３に接続されている。また、システム１２０１が、局所エリアネットワーク１１５８を介してリモート演算装置１１５０（例えば、別のシステム１２０１）と通信することを可能にするために、ネットワークインターフェース１１５６が提供され得る（あるいはこのような通信は、広域ネットワーク１１５２またはダイヤルアップやその他の通信手段などの他の通信パスを介して行われてもよい）。システム１２０１は典型的には、プリンタその他の標準的な周辺デバイスなどの、他の周辺出力デバイスを有し得る。
【００５７】
一例において、ビデオアダプタ１２３５は、マイクロソフトのＤｉｒｅｃｔＸ７．０または他バージョンなどの標準的な３Ｄグラフィックスアプリケーションプログラマインターフェースに基づいて発せられる３Ｄグラフィックスコマンドに応答して、高速な３Ｄグラフィックスレンダリングを提供する３Ｄグラフィックスパイプラインチップセットを有し得る。また１組のステレオスピーカ１２３７が、従来の「サウンドカード」などのサウンド発生インターフェースを介してシステムバス１２０７に接続されていることにより、バス１２０７によって供給される音声コマンドに基づいて高品質なステレオ音声を生成するためのハードウェアおよび埋め込みソフトウェアサポートを提供する。これらのハードウェア能力は、システム１２０１が、記憶媒体６２に格納されたソフトウェアをプレイするために十分なグラフィックスおよびサウンド速度能力を提供することを可能にする。
【００５８】
上記参照した全ての文献を、本明細書において参照のため援用する。
【００５９】
以上、本発明を、最も実用的で好ましい実施形態であると現時点で判断される内容について説明してきたが、本発明は、開示された実施形態にのみ制限されるべきものではなく、反対に、記載したクレームの範囲内において様々に変更、および同等な内容が適用されるものとする。
【図面の簡単な説明】
【図１】図１は、対話式コンピュータグラフィックスシステムの一例の全体図である。
【図２】図１の例のコンピュータグラフィックスシステムのブロック図である。
【図３】図２に示す例のグラフィックスおよび音声プロセッサのブロック図である。
【図４】図３に示す例の３Ｄグラフィックスプロセッサのブロック図である。
【図５】図４のグラフィックスおよび音声プロセッサの、論理フロー図例である。
【図６】本発明に従って、Ｚ近傍範囲においてＺクランピングを実現するためのステップ例を示すフローチャートである。
【図７】本発明のＺ近傍クランピング構成のスクリーン空間を示す図である。
【図８】本発明のグラフィックスパイプライン実施例においてＺ圧縮を実現するためのハードウェアロジック図の例である。
【図９】本発明のグラフィックスパイプライン実施例においてＺ近傍クランピング構成の一例を実現するためのハードウェアロジック図である。
【図１０】別の互換的な実施例を示す図である。
【図１１】別の互換的な実施例を示す図である。
【図１】
0004740490.tif 000004
【図２】
0004740490.tif 000005
【図３】
0004740490.tif 000006
【図４】
0004740490.tif 000007
【図５】
0004740490.tif 000008
【図６】
0004740490.tif 000009
【図７】
0004740490.tif 000010
【図８】
0004740490.tif 000011
【図９】
0004740490.tif 000012
【図１０】
0004740490.tif 000013
【図１１】
0004740490.tif 000014