(57)【特許請求の範囲】
【請求項１】
少なくとも第１と第２の選択描画モードを有するグラフィックスパイプラインを有する画像処理装置であって、
前記グラフィックスパイプラインは、
入力と出力とを有するテクスチャリング段階と、
隠面消去段階と、
グラフィックスパイプラインの描画モードに基づいて、グラフィックスパイプライン内の前記テクスチャリング段階の入力前または出力後に、交互に、前記隠面消去段階を選択的に配置する再構成を行う機構と
を備える、装置。
【請求項２】
前記再構成を行う機構は、前記テクスチャリング段階の入力および前記テクスチャリング段階の出力間において前記隠面消去段階を切り替えるスイッチを含む、請求項１に記載の装置。
【請求項３】
前記描画モードは、前記テクスチャリング段階においてアルファチャンネルをアクティブにする描画モードを含み、前記アルファチャンネルがアクティブの場合において、前記再構成を行う機構は、前記テクスチャリング段階の出力時に前記隠面消去段階を起動する、請求項１に記載の装置。
【請求項４】
前記隠面消去段階は、ｚ比較部を含む、請求項１に記載の装置。
【請求項５】
前記隠面消去段階は、ｚバッファを含む、請求項１に記載の装置。
【請求項６】
前記再構成を行う機構は、レジスタに応答して制御される、請求項１に記載の装置。
【請求項７】
前記再構成を行う機構は、前記隠面消去段階を移動する前に、グラフィックスパイプラインをフラッシュする、請求項１に記載の装置。
【請求項８】
画像処理装置がグラフィックスパイプラインを動的に再構成する方法であって、
前記画像処理装置のグラフィックスパイプラインが、前記アルファチャンネルを選択的にアクティブにし、前記アルファチャンネルをアクティブにした状態で又はアクティブにしない状態でテクスチャリングを行うステップと、
前記画像処理装置のグラフィックスパイプラインが、前記アルファチャンネルがアクティブにされない場合には、テクスチャリング前に隠面消去を行い、前記アルファチャンネルがアクティブにされる場合には、テクスチャリング後に隠面消去を行うステップと、を含む方法。
【請求項９】
画像処理装置がグラフィックスパイプラインを再構成する方法であって、
前記画像処理装置のピクセルエンジンが、コマンドを受信し、受信したコマンドに応答して、グラフィックスパイプラインをストールさせるステップと、
前記画像処理装置のピクセルエンジンが、パイプラインがストールしている間に、グラフィックスパイプライン内のピクセルを追跡する同期トークンをグラフィックスパイプライン内に挿入するステップと、
前記画像処理装置のピクセルエンジンが、前記同期トークンがグラフィックスパイプライン内の所定の地点に到達した時を検出して、グラフィックスパイプラインがフラッシュされたことを確認するステップと、
前記画像処理装置のピクセルエンジンが、当該検出に応じて、グラフィックスパイプラインを再構成して、パイプライン内において隠面消去段階を再配置し、ストールを解除するステップと、を含む方法。
【請求項１０】
グラフィックスパイプラインを有する画像処理装置であって、
前記グラフィックスパイプラインは、
選択的にアクティブにすることが可能なアルファチャンネルを含み、
入力および出力を含む少なくとも１つの処理段階と、
アルファチャンネルがアクティブにされるか否かに基づいて、前記処理段階の入力及び前記処理段階の出力の間で選択的に結合可能な隠面消去段階と
を含む、装置。
【請求項１１】
ピクセルエンジンを備えた画像処理装置であって、
前記ピクセルエンジンは、
深度情報を取得するｚ＆エッジラスタライザに結合される第１の入力と、テクスチャ環境部に結合される第２の入力と、
前記第１の入力または前記第２の入力と選択的かつ交互に結合されるｚ比較部とを含み、
前記ピクセルエンジンは、描画モードに基づいて、前記ｚ比較部を前記第１の入力または前記第２の入力に結合する装置。
【請求項１２】
少なくとも第１と第２の選択描画モードを有するグラフィックスパイプラインとして画像処理装置のコンピュータを機能させるプログラムであって、
前記グラフィックスパイプラインとして、
入力と出力とを有するテクスチャリング手段、
隠面消去手段、及び
グラフィックスパイプラインの描画モードに基づいて、グラフィックスパイプライン内の前記テクスチャリング手段の入力前または出力後に、交互に、前記隠面消去手段を選択的に配置する再構成を行う再構成手段、
として前記コンピュータを機能させるためのプログラム。
【請求項１３】
画像処理装置のコンピュータにグラフィックスパイプラインを動的に再構成させるプログラムであって、
アルファチャンネルを選択的にアクティブにし、前記アルファチャンネルをアクティブにした状態で又はアクティブにしない状態でテクスチャリングを行うステップと、
前記アルファチャンネルがアクティブにされない場合には、テクスチャリング前に隠面消去を行い、前記アルファチャンネルがアクティブにされる場合には、テクスチャリング後に隠面消去を行うステップと、
を前記コンピュータに実行させるためのプログラム。
【請求項１４】
画像処理装置のコンピュータにグラフィックスパイプラインを再構成させるプログラムであって、
コマンドを受信し、受信したコマンドに応答して、グラフィックスパイプラインをストールさせるステップと、
パイプラインがストールしている間に、グラフィックスパイプライン内のピクセルを追跡する同期トークンをグラフィックスパイプライン内に挿入するステップと、
前記同期トークンがグラフィックスパイプライン内の所定の地点に到達した時を検出して、グラフィックスパイプラインがフラッシュされたことを確認するステップと、
当該検出に応じて、グラフィックスパイプラインを再構成して、パイプライン内において隠面消去段階を再配置し、ストールを解除するステップと、
を前記コンピュータに実行させるためのプログラム。
【請求項１５】
グラフィックスパイプラインとして画像処理装置のコンピュータを機能させるプログラムであって、
前記グラフィックスパイプラインとして、
アルファチャンネルを選択的にアクティブにする手段、
入力および出力を含む少なくとも１つの処理手段、
隠面消去手段、及び
アルファチャンネルがアクティブにされるか否かに基づいて、前記処理手段の入力及び前記処理手段の出力の間で選択的に前記隠面消去手段を結合する手段、
として前記コンピュータを機能させるためのプログラム。
【請求項１６】
ピクセルエンジンとして画像処理装置のコンピュータを機能させるプログラムであって、
前記ピクセルエンジンとして、
深度情報を取得するｚ＆エッジラスタライザに結合される第１の入力部、
テクスチャ環境部に結合される第２の入力部、
前記第１の入力部又は前記第２の入力部に選択的かつ交互に結合されるｚ比較部、及び
描画モードに基づいて、前記ｚ比較部を前記第１の入力部または前記第２の入力部に結合する結合部、
として前記コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータグラフィックスに関し、より特定的には、家庭用ビデオゲームプラットフォームのような対話式グラフィックスシステムに関する。さらにより特定的には、本発明は、描画モード（たとえば、アルファスレッショルディング）に基づいて、パイプライン内の異なる位置に隠面消去を移動して、３Ｄグラフィックスパイプラインを再構成することに関する。
【０００２】
【従来の技術】
我々の多くは、非常に現実感のある恐竜や宇宙人、アニメ化されたおもちゃといった空想的な生物を含む映像を目にしたことがある。このようなアニメーションは、コンピュータグラフィックスによって可能となっている。このような技術を用いて、コンピュータグラフィックス製作者は、各物体がどのように見えるか、および時間の経過に伴ってどのような外見上の変化が生じるかを特定することができる。そして、コンピュータが、物体をモデル化し、テレビやコンピュータ画面などのディスプレイに表示する。表示画像の各部分の着色や形状が、その光景に存在する個々の物体の位置や向き、各物体に対する照明方向、各物体の面の質感、その他様々な要素に基づいて確実にうまく行なわれるために必要な数多くのタスクは、コンピュータが引き受ける。
【０００３】
コンピュータグラフィックスの生成は複雑なため、ほんの数年前まで、コンピュータで作成した３次元グラフィックスの活用は、高価で専門化されたフライトシミュレータやハイエンドグラフイックスワークステーション、スーパーコンピュータにほぼ限定されていた。人々は、コンピュータシステムによって生成された画像を、映画や制作費の高いテレビ広告において目にすることはあっても、グラフィックス生成を行なうコンピュータに実際に接することはできなかった。このような状況が変化したのは、ニンテンドウ６４（登録商標）やパーソナルコンピュータで利用可能な各種の３Ｄグラフィックスカードなど、比較的安価な３Ｄグラフィックスプラットフォームの出現によるものである。今や、自宅や勤務先でも、比較的安価なコンピュータグラフィックスシステム上において、迫力のある３Ｄアニメーションやシミュレーションと対話的に接することが可能となっている。
【０００４】
グラフィックスシステムデザイナーが常に直面する課題は、グラフィックス処理をどのように高速化するかということである。画像処理時間の短縮は、対話式家庭用ビデオゲームやパーソナルコンピュータのようなリアルタイムグラフィックスシステムにおいて特に重要である。リアルタイムシステムでは、通常、毎秒３０枚の新しい画像フレームを生成する必要がある。
【０００５】
さらなる高速化を実現するために、典型的な現代の３Ｄグラフィックスシステムは、グラフィックスパイプラインを用いて画像を描画する。画像を特定する情報が、パイプラインの一方端に与えられ、描画像が、パイプラインの他方端から出てくる。パイプラインは、多くの異なる処理段階を含んでおり、処理段階において、描画に係わる様々なステップ（例えば、異なる座標システムへの変換、ラスタライズ、テクスチャリング等）を同時に行う。洗濯物の山のうち、あるものを畳んでいる間に、あるものを洗濯機にいれ、またあるものを乾燥機に入れることによって洗濯の時間を節約することができるのと同じように、グラフィックスパイプラインは、ピクセルがパイプラインを下って移動するにつれて、異なる段階の処理を同時に行うことによって、処理時間全体を節約している。
【０００６】
パイプラインの一方端から他方端に情報が到達するのにかかる時間は、パイプラインの「長さ」による。すなわち、表示用の画面ピクセルを生成するためにパイプラインが行う処理ステップの数による。短いパイプラインほど、情報処理は早くなるが、画像処理段階数が少ないので、画像の複雑度は限定される。画像処理段階が追加されている長いパイプラインを用いれば、より複雑な、興味をそそる画像を生成できるが、処理時間は長くなってしまう。
【０００７】
今日における多くの現代グラフィックスシステムにおいて用いられる、速度性能を高めるための通常の技術においては、アプリケーションプログラマ（例えば、ビデオゲームデザイナー）は、現在使われていないグラフィックスパイプライン機能や処理段階をオフすることによって、パイプラインの長さを変えることができる。たとえば、アプリケーションプログラマは、処理に時間のかかるオプションの処理動作（例えば、テクスチャリング、テクスチャフィルタリング、ｚバッファリング等）のオンおよびオフを選択的に行うことができる。アプリケーションプログラマが処理動作のメニューから選択できるようにすることで、柔軟性の高いものとなる。もしアプリケーションプログラマがもっとも高速で行いうる描画に関心があれば、（処理時間の観点から）より安価なパイプライン処理動作を選んで、より高価な他の動作によって得ることができるあろう複雑性の高い画像は見合わせることもできる。複雑性の高い画像に関心があるアプリケーションプログラマは、処理時間は長くなるものの、アラカルトで、必要に応じて、より複雑で高価な機能を起動することができる。
【０００８】
隠面消去は、高価だが、現代の３Ｄグラフィックスパイプラインのほぼすべてによって行われる重要な処理である。現実感のある幻影を創出するには、不透明な面の後ろに隠れてしまうであろう面を隠すことが、グラフィックスパイプラインにとって重要である。不透明な固体を透けて見せてしまっては、現実性の高い画像を創出したことにならない。しかしながら、現実世界において、或る面の後ろにある面のすべてが見えないというわけではない。例えば、窓ガラスのような透明な物体を通して、物体を見ることができる。現実感を出すためには、３Ｄグラフィックスパイプラインは、（不透明な）固体とともに透明な物体もモデル化できたり、ある物体の前にある物体が透明かどうかに基づいて隠面消去処理を行うことができたりしなければならない。現代のグラフィックスシステムでは、「アルファチャンネル」と呼ばれる付加チャンネルを用いることによって透明をモデル化し、「アルファスレッショルディング」やアルファブレンディングを行うことによって、透明化等の効果を達成している。
【０００９】
隠面消去を行うための一般的な方法の一つとして、デプスバッファと呼ばれるものを用いる方法がある。デプスバッファは、ｚ軸がデプス軸であることから「ｚバッファ」とも呼ばれる。ｚバッファは、典型的には、画像の各ピクセル（画素）に対して少なくとも１つの格納場所を与える。グラフィックスパイプラインは、画像を記憶するカラーフレームバッファに面上のピクセルを書き込むと、当該ピクセル位置における面のデプスをｚバッファの対応位置に書き込む。後に、グラフィックスパイプラインが同じ画像位置に別の面を描画するよう要求されると、視点に関連して、描画済みのもののデプスを新たな面のデプスと比較する。もし新たな面が描画済みの面より前にあれば、グラフィックスパイプラインは新たな面の情報を破棄することができる。なぜならば、新たな面は視界から隠れるであろうからである。もし新たに提示された面のデプスが見る者に近ければ、グラフィックスパイプラインは、既に描画されたピクセルを、新たな面用の新しいピクセルと置き換える。なぜなら、新たな面は既に描画された面を隠すであろうからである。もし新たな面が透明であれば、グラフィックスパイプラインは新たに提示された面と既に描画された面とをブレンドして、透明効果を達成する。
【００１０】
隠面消去は、速度性能の観点からすればやや高価な処理である傾向があるので、場合によっては（たとえば、背景画像の再描画中の場合や、隠面消去を必要としない或る種の形状を描画中の場合）、隠面消去をオフにすることがしばしば可能である。しかしながら、隠面消去をすべてなくしてしまうのは、通常望ましくない。なぜならば、多くのまたはほとんどの３Ｄ画像にとって、現実感を与えるために隠面消去が必要だからである。
【００１１】
テクスチャリング段階は、典型的な今日のグラフィックスパイプラインにおいて見受けられる、もう一つの処理段階である。画像の複雑さを増加させつつも、グラフィックスパイプラインが描画しなければならないポリゴンの数をそれに対応して増加させないために、グラフィックスシステム設計者は、２次元テクスチャを画像内のポリゴン面に適用する機能を含めることが多い。たとえば、木を含む画像を作成する場合、長方形または三角形を描き、木を表す２次元の絵などの画像をその面に配置することができる。テクスチャリングによれば、木の各葉や各枝を１つ以上のポリゴンを用いてモデル化する必要がなくなり、それによって、画像を生成するのに必要な処理時間量を大幅に節約することができる。別の例として、煉瓦の壁や木目のあるテーブル面のような複雑な造形面を描画するという場合がある。テーブル面の各木目や壁内の各煉瓦を規定するかわりに、壁やテーブル面の輪郭を規定する幾何学的プリミティブを画像化し、適切なテクスチャをその面に挿入することによって、高度な現実感を与えつつも、それに対応して、速度性能を犠牲にすることなく、各煉瓦や各木目をモデル化することが可能である。
【００１２】
【発明が解決しようとする課題】
テクスチャマッピングは、処理資源を節約するものの、テクスチャマッピング処理は、決して「無償」というわけではない。むしろ、テクスチャマッピングは、比較的時間のかかる処理を必要とすることもあり得るし（特に、テクスチャフィルタリングが起動されている場合）、また、テクスチャ情報をアクセスするためのメモリルックアップをさらに必要とする。しかしながら、テクスチャリングは、画像に対して高い度合いの現実感と複雑さとを比較的安価で付加するので、アプリケーションプログラマは、たとえ処理時間が長くなったとしても、それを利用したいと望むことが多い。
【００１３】
上記の説明からわかるように、グラフィックスパイプラインの長さを短縮するための様々な手法が知られてはいるものの、そのような手法は、グラフィックスシステム設計者および／またはアプリケーションプログラマに対して、画像の複雑さを高めるか、それとも速度性能を高めるか、という選択を迫ることが多い。
したがって、さらなる改良が可能であり、また望まれる。
【００１４】
本発明は、この問題の解決策を提供するものであり、描画モードに基づいてグラフィックスパイプライン内のｚ（デプス）バッファリングの位置を移動する手法および仕組みを提供する。
【００１５】
【課題を解決するための手段および発明の効果】
ラスタライジングパイプラインの早い段階において隠面消去を行えば、ある画像情報のパイプラインの長さを短縮することができる。デプス比較処理によって拒否されたピクセルは、テクスチャリングなどの高価で付加的な処理段階によって処理される必要がないことが多い。なぜならば、そのようなピクセルは、デプス比較によって結局は破棄されてしまうものだからである。テクスチャリングなどの付加的な処理の前に隠面消去を行えば、デプス比較処理に基づいてピクセルを破棄することができ、パイプラインがそのようなピクセルに対して高価な処理を行うという、貴重な時間の無駄を回避することができる。
【００１６】
一方、描画モードによっては、テクスチャリングなどの高価な処理を、隠面消去処理の前に行わなければならない場合もある。たとえば、もしアプリケーションプログラマが、アルファスレッショルディングを行うためにアルファチャンネルを起動することを選択した場合には（例えば、透明をモデリングしたり、テクスチャアルファマッピングなどのアルファに基づく効果を与えるため）、隠面消去をアルファ処理が行われた後まで遅らせなければならない。そうしないと、隠面消去処理は、アルファスレッショルディングの結果を適切に考慮しないものとなってしまう。
【００１７】
我々の発明のある局面によれば、再構成可能なグラフィックスパイプラインに対して、隠面消去段階を与え、この段階は、当該パイプライン内の、パイプライン描画モードによって異なる位置に配置可能である。パイプラインがある描画モードで動作する場合、隠面消去処理をパイプライン内の早い段階において行うことができる。それによって、画像の他の部分によって遮られる画像部分に対して高価な処理を行うという時間の無駄を回避することができる。他の（例えば、アルファスレッショルディングに基づく）描画モードに関しては、隠面消去処理は、パイプラインの終端付近で行われ、その時までには、パイプラインは、当該描画モードに基づいてデプス比較を解釈するのに充分な付加情報を生じさせている。
【００１８】
本発明によって提供される一局面によれば、グラフィックスパイプラインは、第１および第２の代替描画モードを有し、入力と出力とを有するテクスチャリング段階を含む。再構成を行う機構は、グラフィックスパイプラインの描画モードに基づいて、テクスチャリング段階の入力段または出力段に、交互に、隠面消去段階を選択的に配置する。
【００１９】
本発明の他の局面によれば、グラフィックスパイプラインを動的に再構成する方法は、アルファスレッショルディングを選択的に起動することを含む。アルファスレッショルディングが起動されない場合には、隠面消去はテクスチャリングの前に行われる。アルファスレッショルディングが起動される場合には、隠面消去はテクスチャリングの後に行われる。
【００２０】
本発明の他の局面によれば、グラフィックスパイプラインは、選択的に起動可能なアルファスレッショルディングを含む少なくとも１つの処理段階を含む。この処理段階は、入力と出力とを含む。アルファスレッショルディングが起動されるか否かに少なくとも一部は基づいて、当該処理段階の入力または当該処理段階の出力に対して選択的に、隠面消去段階が結合される。
【００２１】
本発明の他の局面は、ｚ＆エッジラスタライザに結合される第１の入力と、テクスチャ環境部に結合される第２の入力とを含むピクセルエンジンを提供する。ｚ部が、第１の入力または第２の入力と選択的かつ交互に結合される。
【００２２】
本発明のさらに他の局面は、グラフィックパイプラインの再構成を同期させる方法であって、
・コマンドを受信し、
・受信したコマンドに応答して、グラフィックパイプラインをストールさせ、
・当該パイプラインがストールしている間に、当該グラフィックスパイプライン内のピクセルを追跡する同期トークンをグラフィックスパイプライン内に挿入し、
・同期トークンが当該グラフィックスパイプラインの所定の点に到達した時を検出して、当該グラフィックスパイプラインがフラッシュされたことを確認し、
・当該検出に応じて、グラフィックスパイプラインを再構成して、パイプライン内において隠面消去段階を再配置し、
・ストールを解除する、
方法を提供する。
【００２３】
我々の発明によってもたらされる利点として、想定された画像処理プロトコルやＡＰＩとの互換性を維持しつつ、ある状況下における速度性能の増加を達成することが挙げられる。たとえば、オープンＧＬ（ＯｐｅｎＧＬ）グラフィックス規格においては、アルファチャンネルによって生じた情報に応じて、デプスバッファリングが行われることが要求される。一例として、オープンＧＬを用いて半透明な物体を描画する方法の一つに、（たとえば、読み出し専用の）デプスバッファリングを可能にしつつ、半透明な物体を描画するというものがある。当該規格の下では、通常の読み出し／書き込み／更新処理において、デプスバッファリングを用いて、その光景における不透明な物体をすべて描き、その後、デプスバッファを読み出し専用とすることによって、これらのデプス値を保存することができる。半透明な物体を描く場合、そのデプス値は、不透明な物体によって設定された値とさらに比較され、もし半透明な物体が不透明な物体の後ろにあれば、半透明な物体は描かれない。しかしながら、半透明な物体が視点のより近くにあれば、デプスバッファ値は変化しないので、半透明な物体は、不透明な物体を除去しない。その代わりに、半透明な物体は、不透明な物体とブレンドされる。本発明は、オープンＧＬの下で実施可能なｇｌＤｅｐｔｈＭａｓｋ型コマンドに対応しており、半透明などのアルファに基づく効果が起動されない場合に、デプスバッファリングをパイプライン内の早い段階に移動するという柔軟性をも提供している。
【００２４】
【発明の実施の形態】
図１は、対話式３Ｄコンピュータグラフィックスシステム５０の例を示す。システム５０は、興味をそそる立体音響を伴う対話式３Ｄビデオゲームをプレイするのに用いることができる。また、これは、他の様々な用途に応用できる。
本例において、システム５０は、デジタル表現や３次元世界モデルを、対話的にリアルタイムで処理することができる。システム５０は、世界のすべてまたは一部を、任意の視点から表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂなどの入力装置からのリアルタイム入力に応答して、視点を対話的に変化させることができる。これにより、ゲームプレイヤは、世界の内部または外部の者から見た世界を見ることができる。システム５０は、リアルタイム３Ｄ対話式表示を要求しないような用途（たとえば、２Ｄ表示生成および／または非対話式表示）に用いることもできるが、上質の３Ｄ画像を非常に高速に表示する能力は、現実感の高いおもしろいゲームプレイなどの視覚的な対話を生成するのに用いることができる。
【００２５】
システム５０を用いてビデオゲームなどのアプリケーションをプレイするためには、ユーザは、まず、ケーブル５８を用いて、メインユニット５４をユーザのカラーテレビ５６などの表示装置に接続する。メインユニット５４は、カラーテレビ５６を制御するためのビデオ信号および音声信号を生成する。ビデオ信号は、テレビ画面５９に表示される画像を制御するものであり、音声信号は、テレビのステレオスピーカ６１Ｌおよび６１Ｒを介して、音として再生される。
【００２６】
また、ユーザは、メインユニット５４を電源に接続する必要がある。この電源は、家庭の壁にある電気コンセントに差し込む従来のＡＣアダプタ（図示せず）であってもよく、家庭用電流を、メインユニット５４に電力供給するのに適切な、より低いＤＣ電圧信号に変換する。他の態様として、電池を用いることも可能である。
【００２７】
ユーザは、ハンドコントローラ５２ａおよび５２ｂを用いて、メインユニット５４を制御してもよい。たとえば、操作部６０を用いて、テレビ５６に表示されるキャラクタが３次元世界内で移動すべき方向（上または下、左または右、近または遠）を指定することができる。また、操作部６０は、他の用途のための入力を与える（たとえば、メニュー選択、ポインタ／カーソル制御など）。コントローラ５２は、様々な形態を取り得る。本例においては、図示された各コントローラ５２は、ジョイスティック、押しボタン、および／または方向スイッチなどの操作部６０を含む。コントローラ５２のメインユニット５４への接続は、ケーブルであってもよいし、電磁波（たとえば、電波または赤外線波）を介した無線であってもよい。
【００２８】
ゲームなどのアプリケーションをプレイするためには、ユーザは、プレイしたいと思う当該ビデオゲームなどのアプリケーションを記憶する適切な記憶媒体６２を選択して、当該記憶媒体をメインユニット５４内のスロット６４に挿入する。記憶媒体６２は、たとえば、特に符号化および／または暗号化された光学および／または磁気ディスクであってもよい。ユーザは、電源スイッチ６６を操作して、メインユニット５４をオンにし、記憶媒体６２に記憶されたソフトウェアに基づいてビデオゲームなどのアプリケーションの実行を開始してもよい。ユーザは、コントローラ５２を操作して、メインユニット５４に入力を与えてもよい。たとえば、操作部６０を操作すると、ゲームなどのアプリケーションが開始されてもよい。他の操作部６０を動かすと、動くキャラクタを異なる方向へ移動させたり、３Ｄ世界内でのユーザの視点を変化させたりすることができる。記憶媒体６２内に記憶された特定のソフトウェアに基づいて、コントローラ５２上の様々な制御部６０は、異なる時に異なる機能を実行することができる。
【００２９】
＜システム全体の電子回路例＞
図２は、システム５０の構成要素例のブロック図を示す。主な構成要素は以下のものを含む。
・メインプロセッサ（ＣＰＵ）１１０、
・メインメモリ１１２、および
・グラフィックス＆音声プロセッサ１１４
【００３０】
本例においては、メインプロセッサ１１０（たとえば、拡張されたＩＢＭのＰｏｗｅｒＰＣ７５０）は、グラフィックス＆音声プロセッサ１１４を介して手持ちコントローラ１０８（および／または他の入力装置）からの入力を受ける。メインプロセッサ１１０は、ユーザ入力に対話的に応答して、たとえば外部記憶媒体６２から光ディスクドライブなどの大容量記憶アクセス装置１０６を介して供給されるビデオゲームなどのプログラムを実行する。一例として、ビデオゲームプレイの場合、メインプロセッサ１１０は、様々な対話的な制御機能に加えて、衝突検出や動画処理を行うことができる。
【００３１】
本例において、メインプロセッサ１１０は、３Ｄグラフィックスコマンドおよび音声コマンドを生成して、グラフィックス＆音声プロセッサ１１４に送る。グラフィックス＆音声プロセッサ１１４は、これらのコマンドを処理して、興味をそそる視覚的な画像をディスプレイ５９に生成したり、興味をそそる立体音響をステレオスピーカ６１Ｒおよび６１Ｌなどの適切な音発生装置に生成したりする。
【００３２】
本例のシステム５０が含むビデオエンコーダ１２０は、グラフィックス＆音声プロセッサ１１４から画像信号を受信して、当該画像信号を、コンピュータモニタや家庭用カラーテレビ５６などの標準的な表示装置に表示するのに適切なアナログおよび／またはデジタルビデオ信号に変換する。また、システム５０が含む音声コーデック（圧縮器／伸長器）１２２は、デジタル化された音声信号の圧縮および伸長を行い、また、必要に応じて、デジタルまたはアナログ音声信号形式への変換を行なってもよい。音声コーデック１２２は、音声入力をバッファ１２４を介して受信して、グラフィックス＆音声プロセッサ１１４に与えて、処理を行なうことができる（たとえば、プロセッサが生成した他の音声信号とミキシングおよび／または大容量記憶アクセス装置１０６のストリーミング音声出力を介して受信する）。本例のグラフィックス＆音声プロセッサ１１４は、音声関連情報を音声タスク用に利用可能な音声メモリ１２６に記憶することができる。グラフィックス＆音声プロセッサ１１４は、処理結果の音声出力信号を音声コーデック１１２に与えて、スピーカ６１Ｌおよび６１Ｒによって再生できるように、（たとえば、バッファ増幅器１２８Ｌおよび１２８Ｒを介して）伸長やアナログ信号への変換が行われる。
【００３３】
グラフィックス＆音声プロセッサ１１４は、システム５０内にある様々な付加的な装置と通信を行うことが可能である。たとえば、パラレルデジタルバス１３０が、大容量記憶アクセス装置１０６および／または他の構成要素との通信に用いられてもよい。シリアル周辺機器バス１３２が、様々な周辺機器などの機器との通信に用いられてもよく、それらの機器としては、たとえば、以下のものを含む。
・プログラム可能な読み出し専用メモリおよび／またはリアルタイムクロック１３４、
・モデム１３６などのネットワークインターフェース（インターネットなどのデジタルネットワークのような、プログラム命令および／またはデータをダウンロードしたりアップロードしたりすることが可能な電気通信ネットワーク１３８に対して、システム５０を接続するようなものであってもよい）、および
・フラッシュメモリ１４０。
【００３４】
別の外部シリアルバス１４２が、付加的な拡張メモリ１４４（たとえば、メモリカード）などの装置との通信に用いられてもよい。コネクタが、様々な装置をバス１３０、１３２、および１４２を接続するために用いられてもよい。
【００３５】
＜グラフィックス＆音声プロセッサの例＞
図３は、グラフィックス＆音声プロセッサ１１４の例のブロック図である。一例として、グラフィックス＆音声プロセッサ１１４は、単一チップＡＳＩＣ（特定用途向けＩＣ）であってもよい。本例において、グラフィックス＆音声プロセッサ１１４は、以下のものを含む。
・プロセッサインターフェース１５０、
・メモリインターフェース／コントローラ１５２、
・３Ｄグラフィックスプロセッサ１５４、
・音声デジタル信号プロセッサ（ＤＳＰ）１５６、
・音声メモリインターフェース１５８
・音声インターフェース＆ミキサ１６０
・周辺機器コントローラ１６２、および
・ディスプレイコントローラ１６４。
【００３６】
３Ｄグラフィックスプロセッサ１５４は、グラフィック処理タスクを行う。音声デジタル信号プロセッサ１５６は、音声処理タスクを行う。ディスプレイコントローラ１６４は、画像情報をメインメモリ１１２からアクセスして、それをビデオエンコーダ１２０に与え、表示装置５６に表示させる。音声インターフェース＆ミキサ１６０は、音声コーデック１２２とインターフェースし、また、別のソースからの音声（たとえば、大容量記憶アクセス装置１０６からのストリーミング音声、音声ＤＳＰ１５６の出力、および音声コーデック１２２を介して受信した外部音声入力）をミキシングすることも可能である。プロセッサインターフェース１５０は、メインプロセッサ１１０およびグラフィックス＆音声プロセッサ１１４間のデータおよび制御インターフェースを提供する。
【００３７】
メモリインターフェース１５２は、グラフィックス＆音声プロセッサ１１４およびメモリ１１２間のデータおよび制御インターフェースを提供する。本例において、メインプロセッサ１１０は、グラフィックス＆音声プロセッサ１１４の一部であるプロセッサインターフェース１５０およびメモリインターフェース１５２を介して、メインメモリ１１２にアクセスする。周辺機器コントローラ１６２は、グラフィックス＆音声プロセッサ１１４および上述の様々な周辺機器間のデータおよび制御インターフェースを提供する。音声メモリインターフェース１５８は、音声メモリ１２６とのインターフェースを提供する。
【００３８】
＜グラフィックスパイプラインの例＞
図４は、３Ｄグラフィックスプロセッサ１５４の例のより詳細な図である。３Ｄグラフィックスプロセッサ１５４は、特に、コマンドプロセッサ２００と、３Ｄグラッフィックスパイプライン１８０とを含む。メインプロセッサ１１０は、データのストリーム（たとえば、グラフィックスコマンドストリームやデータリスト）をコマンドプロセッサ２００に伝達する。メインプロセッサ１１０は、メモリの待ち時間を最小限にするための２レベルキャッシュ１１５を有し、また、グラフィックス＆音声プロセッサ１１４向けの未キャッシュのデータストリームのためのライトギャザリング・バッファ１１１も有する。ライトギャザリング・バッファ１１１は、部分キャッシュラインを集めて完全キャッシュラインとし、このデータを１キャッシュラインずつグラフィックス＆音声プロセッサ１１４に送出して、バスが最大限に利用できるようにする。
【００３９】
コマンドプロセッサ２００は、メインプロセッサ１１０から表示コマンドを受信し、これを解析して、処理に必要な付加データを共通メモリ１１２から取得する。コマンドプロセッサ２００は、頂点コマンドのストリームをグラフィックスパイプライン１８０に与えて、２Ｄおよび／または３Ｄ処理および描画を行う。
グラフィックスパイプライン１８０は、これらのコマンドに基づいて画像を生成する。生成された画像情報は、メインメモリ１１２に転送されて、表示制御部／ビデオインターフェース部１６４によってアクセスできるようにしてもよく、それによって、ディスプレイ５６にパイプライン１８０のフレームバッファ出力が表示される。
【００４０】
図５は、グラフィックスプロセッサ１５４の論理フロー図である。メインプロセッサ１１０は、グラフィックスコマンドストリーム２１０と、表示リスト２１２と、頂点アレイ２１４とをメインメモリ１１２に記憶してもよく、バスインターフェース１５０を介してポインタをコマンドプロセッサ２００に渡す。メインプロセッサ１１０は、メインメモリ１１０内に割り当てた１つ以上のグラフィックス先入れ先出し（ＦＩＦＯ）バッファ２１０にグラフィックスコマンドを記憶する。コマンドプロセッサ２００は、以下のものを取り出す。
・グラフィックスコマンドを受信およびバッファリングして、同期／フロー制御およびロードバランシングを行なうオンチップＦＩＦＯメモリバッファ２１６を介して、メインメモリ１１２からのコマンドストリーム、
・オンチップ呼び出しＦＩＦＯメモリバッファ２１８を介して、メインメモリ１１２からの表示リスト２１２、および
・コマンドストリームからの、および／または頂点キャッシュ２２０を介してメインメモリ１１２内の頂点アレイ２１４からの頂点属性。
【００４１】
コマンドプロセッサ２００は、コマンド処理動作２００ａを行って、属性型を浮動小数点形式に変換し、その結果の完全な頂点ポリゴンデータをグラフィックスパイプライン１８０に渡して、描画／ラスタライズする。プログラム可能なメモリ調停回路１３０（図４参照）は、グラフィックスパイプライン１８０、コマンドプロセッサ２００、および表示制御部／ビデオインターフェース部１６４の間で共通のメインメモリ１１２に対するアクセスを調停する。
【００４２】
図４に示すように、グラフィックスパイプライン１８０は、以下のものを含んでもよい。
・変換部３００、
・セットアップ／ラスタライザ４００、
・テクスチャ部５００、
・テクスチャ環境部６００、および
・ピクセルエンジン部７００。
【００４３】
変換部３００は、２Ｄおよび３Ｄ変換などの様々な処理３００ａを行う（図５参照）。変換部３００は、変換処理３００ａに用いられるマトリックスを記憶する１以上のマトリックスメモリ３００ｂを含んでもよい。変換部３００は、頂点毎に入力される形状を、オブジェクト空間から画面空間へ変換し、入力されるテクスチャ座標を変換して投影テクスチャ座標を計算する（３００ｃ）。変換部３００は、ポリゴンクリッピング／カリング（３００ｄ）を行ってもよい。また、変換部３００ｂによって行われるライティング処理３００ｅによって、一実施例においては、８個の独立した光に対するライティング計算が頂点毎に行われる。また、変換部３００は、エンボス型のバンプマッピング効果を出すためのテクスチャ座標生成（３００ｃ）や、ポリゴンクリッピング／カリング処理（３００ｄ）を行うこともできる。
【００４４】
セットアップ／ラスタライザ４００は、セットアップ部を含む。セットアップ部は、頂点データを変換部３００から受信して三角形セットアップ情報を１以上のラスタライザ（４００ｂ）に送信して、エッジラスタライズ、テクスチャ座標ラスタライズ、およびカラーラスタライズを行う。
【００４５】
テクスチャ部５００（オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよい）、テクスチャリング関連の様々なタスクを行う。タスクには、たとえば、以下のものが含まれる。
・メインメモリ１１２からテクスチャ５０４を取り出す、
・たとえばマルチテクスチャ処理、ポストキャッシュテクスチャ伸長、テクスチャフィルタリング、エンボス、投影テクスチャを用いたシャドウおよびライティング、ならびにアルファ透明およびデプスを用いたＢＬＩＴを含む、テクスチャ処理（５００ａ）、
・バンプマッピング、疑似テクスチャ、テクスチャタイリング効果のためのテクスチャ座標変換を計算するバンプマップ処理（５００ｂ）、および
・間接テクスチャ処理（５００ｃ）。
【００４６】
テクスチャ部５００は、透過されたテクスチャ値をテクスチャ環境部６００に出力して、テクスチャ環境処理を行なう（６００ａ）。テクスチャ環境部６００は、ポリゴンとテクスチャカラー／アルファ／デプスをブレンドし、テクスチャフォグ処理（６００ｂ）をも行って、インバースレンジに基づくフォグ効果を達成する。テクスチャ環境部６００は、複数の段階を提供して、たとえばカラー／アルファ・モジュレーション、エンボス、ディテールテクスチャリング、テクスチャスワッピング、クランピング、およびデプスブレンディングに基づいて、他の興味をそそる様々な環境関連の機能を行うことができる。
【００４７】
ピクセルエンジン７００は、デプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を行う。本例において、ピクセルエンジン７００は、埋め込み（オンチップ）フレームバッファメモリ７０２にデータを記憶する。グラフィックスパイプライン１８０は、１以上の埋め込みＤＲＡＭメモリ７０２を含んでもよく、フレームバッファの内容および／またはテクスチャ情報をローカルに記憶する。現在有効な描画モードによっては、Ｚ比較７００ａ’は、グラフィックスパイプラインの早い段階において行われることもできる（たとえば、アルファスレッショルディングが不要であれば、ｚ比較は早い段階で行うことができる。）。
【００４８】
ピクセルエンジン７００は、コピー処理７００ｃを含む。これは、オンチップフレームバッファの内容をメインメモリに周期的に書き込むものであり、表示／ビデオインターフェース部１６４がアクセスできるようにする。このコピー処理７００ｃを用いて、埋め込みフレームバッファ７０２の内容からテクスチャまでを、メインメモリ１１２にコピーすることもでき、動的なテクスチャ合成効果が得られる。アンチエイリアシングやその他のフィルタリングは、コピーアウト処理中に行うことができる。（最終的にはメインメモリ１１２に記憶される）グラフィックスパイプライン１８０のフレームバッファ出力は、フレーム毎に、表示／ビデオインターフェース部１６４によって読み出される。表示制御部／ビデオインターフェース１６４は、ディジタルＲＧＢピクセル値を与えて、ディスプレイ１０２に表示する。
【００４９】
図６は、パイプラインの始端付近または終端付近において行われうる隠面消去を含むパイプライン１１８の一例のより詳細なブロック図である。本例において、ラスタライズブロック４００ｂ（図５参照）は、エッジ＆デプス（ｚ）ラスタライザを含み、パイプライン１１８によって処理されている各ピクセルについて、ｘ、ｙ、およびｚ情報を、描画されているプリミティブの範囲内に特定のピクセルが存在するかどうかを示すカバレージマスクとともに生成する。図示されている本実施例において、エッジ＆ｚラスタライザ４００ｂは、一度に４ピクセル分の処理を行い、面における平面方程式を指定するためのパラメータの形式で、デプス情報を提供する。デプス比較を行うには、アルファチャンネルが起動されていない限り、この情報で充分である。したがって、そのような状況下において、アプリケーションプログラマは、ピクセルエンジン７００に対し、テクスチャリングの前であってエッジ＆ｚラスタライザ４００ｂの出力時において、隠面消去を行うように指示してもよい。この「始端」デプス比較７００ａ’は、各ピクセルが既に描画された面によって隠されているかどうかを、ｚバッファ７０２ｚの内容に基づいて決定する。本実施例において、始端ｚ比較７００ａは、その結果を、埋め込みフレームバッファＤＲＡＭ７０２内にあるｚバッファ７０２ｚに記憶させる。
【００５０】
アプリケーションプログラマが、ピクセルエンジン７００に対して「始端」デプス比較７００ａ’を与えるように指示している場合は、ピクセルエンジンは、修正されたカバレージマスクの形式でデプス比較結果を符号化する。本例のエッジ＆ｚラスタライザ４００ｂの出力は、ピクセルがプリミティブ内にあるか外にあるかを指定するカバレージマスクを与える。「始端」ｚ比較７００ａ’は、このカバレージマスクを修正して、ピクセルが既に描画された面によって遮られているかどうかを示すようにすることもできる。「始端」ｚ比較ブロック７００ａ’は、本例においては、この修正されたカバレージマスクをテクスチャ座標ラスタライザ４００ｒ１に対して与える。テクスチャ座標ラスタライザ４００ｒ１は、修正されたカバレージマスクを調べて、カバレージマスクの状態に基づいて、ピクセルを破棄することができる。本実施例において、カバレージマスクは、簡素な単一ビットフラグである。（または、アンチエイリアシングのためのスーパーサンプリングが起動される場合には、カバレージマスクは、ピクセル内の複数のスーパーサンプルのそれぞれに対して単一ビットフラグを与えてもよい）。
【００５１】
始端ｚ比較ブロック７００ａ’が起動されている場合、テクスチャ部５００は、隠れて見えないピクセル位置にあるテクスチャ値を生成するという無駄な時間を費やす必要はない。これは、速度性能の観点から重要な利点となり得る。特に、テクスチャ部５００が、テクスチャタイリングおよび／またはマルチテクスチャリングなどの興味をそそる有利な効果を提供する、マルチサイクルの循環テクスチャ部である場合には、有利である。このようなテクスチャリング効果は、画像に対して複雑性や興味を大いに付加することができるが、生成するのに非常に多くの時間がかかる場合がある。隠れて見えないピクセルをテクスチャ部５００によって処理される前に破棄するという機能は、処理サイクルという点で、非常に時間の節約となる。処理サイクルの節約分で、より複雑な光景を生成するために活用したり、画像をより高速に生成したりできる。
【００５２】
本例のパイプライン１１８が対応している描画モードのすべてにおいて、ピクセルをテクスチャリングする前に隠面消去が可能というわけではない。特に、パイプライン１１８は、カラー（Ｒ、Ｇ、Ｂ）チャンネルに加えて、アルファチャンネルに対応可能である。よく知られているように、アルファチャンネルは、たとえば透明化、切り抜き、およびデカリングを含む幅広い効果を与えるのに極めて有用である。好ましい本実施例において、テクスチャ部５００は、アルファ値を有するテクスチャに対応しており、たとえば、（看板型の木のような）切り抜かれた形を作成したりする。しかしながら、アルファチャンネルが起動された場合、ある特定のピクセル位置に存在する面が選択された視点から見て同じピクセル位置に存在する既に描画された面より前にあるという情報だけでは、隠面消去問題を解決するのには充分ではない。特に、アルファチャンネルは、完全または部分的に透明な面やテクスチャのモデリングを可能にするので、ある面が別の面より前にあるからといって、必ずしも他の面を隠すわけではない。したがって、アルファチャンネルが起動される場合、現在の視点から見て、描画されようとする面が既に描画された面の前または後にあるかどうかに基づいて、ピクセルを早い段階で破棄することは不可能である。したがって、本実施例においては、そのような描画モードの場合には、テクスチャリング、カラーブレンディング、およびシェーディングの後までデプス／隠面消去処理を遅らせている。アプリケーションプログラマは、ピクセルエンジン７００に対して、グラフィックスパイプライン（ブロック７００）の終端で、すなわち、テクスチャ部５００、カラーラスタライザ４００ｒ２およびテクスチャ環境部６００によってピクセルが完全に処理された後で、デプス比較を行うよう指示してもよい。
【００５３】
本実施例において、隠面消去のデフォルト位置は、グラフィックスパイプライン１１８（ブロック７００ａ）の終端である。しかしながら、速度性能を向上させるために、可能であれば、隠面消去をグラフィックスパイプライン１１８の始端付近で行う指示をピクセルエンジン７００に対して行うように（始端ｚ比較ブロック７００ａ’を起動するように）アプリケーションプログラマを促してもよい。しかしながら、テクスチャ環境部６００ａがアルファスレッショルディング機能を行っている場合には、アプリケーションプログラマは、グラフィックスパイプライン１１８の終端においてｚ比較を行うように、ピクセルエンジン７００に対して指示しなければならない（ブロック７００ａ）。ｚ比較がテクスチャリングの後に行われ、ｚテストやアルファテストが両方とも済んだ場合、カラーやｚは、フレームバッファ７０２に書き込まれる。アプリケーションプログラマは、たとえば、切り抜かれた形（看板型の木）が正確にｚバッファリングされるために、テクスチャリングの後でｚバッファリングが行われるように、グラフィックスパイプラン１１８を構成しなければならない。
【００５４】
好ましい実施例において、ピクセルエンジンは、制御レジスタ７０１の状態に基づいて、グラフィックスパイプライン１１８の始端および終端間で交互に切り替わる１つのｚ部のみを含むとした。このような例においては、ハードウェアの実現において、チップ資源が節約される。いうまでもなく、重複または複数の異なるｚ部を、ハードウェアまたはソフトウェアロジックに提供してもよく、そのうちの１つを起動し、他のものは透過部として設定されるようにしてもよい。
【００５５】
＜グラフイックスパイプライン１１８の再構成処理の例＞
図７は、隠面消去処理をパイプライン内で移動することによってグラフィックスパイプライン１１８を再構成する方法の一例のフローチャートである。図８〜１３は、図７の再構成処理の例を簡略化して図示説明するものである。特に、図７および図８〜１３は、グラフィックスパイプライン１１８を図示のように再構成する度に処理サイクルの無駄が生じるという不利益を示している。図１４は、この不利益を最小限にする方法を示す。
【００５６】
図８は、グラフィックスパイプライン１１８の簡略図である。本簡略図において、グラフィックスパイプライン１１８は、ピクセルＰをパイプラインの様々な処理段階を経て搬送する実際の物理的なパイプのように描かれている。いうまでもなく、これは、図示のためだけの目的であり、実際の例では、グラフィックスパイプライン１１８は、電子回路および／またはソフトウェアコードによって実現される。
【００５７】
図７および８を参照して、グラフィックスパイプライン１１８は、デプス比較およびｚバッファリング７００ａ’をグラフィックスパイプラインの始端付近で行うように構成されていたと仮定する。さらに、アプリケーションプログラマは、デプス比較処理をグラフィックスパイプライン１１８の終端へ移動する指示を行うように、ピクセルエンジン制御エンジン７０１に対して書き込みを行うと仮定する（図６のブロック７００ａ）（たとえば、アルファスレッショルディングを用いる描画モードを可能にするために）（図７、ブロック７５０）。このコマンドの受信に応じて、ピクセルエンジン７００は、グラフィックスパイプラインをストールさせる（図７、ブロック７５２）。図９は、このストール処理を簡略的に示しており、鉄道の遮断機を例にとって、パイプライン再構成が動的に行われている最中に、これ以上ピクセルがグラフィックスパイプライン１１８を通り抜けることができないように、遮断機が降りているようになっている。
【００５８】
本実施例において、ピクセルエンジン７００は、トークンＴをパイプラインに挿入する（ブロック７５４）。この同期トークンＴは、図９に示すように、残りのピクセルをグラフィックスパイプラインを下って追跡する。そして、グラフィックスパイプライン１１８は、パイプライン内に残存するすべてのピクセルを処理して、過去の描画モードに基づいてフレームバッファを更新する（ブロック７５６）。ピクセルエンジン７００は、グラフィックスパイプラインの終端にある同期トークンＴを探すことによって（図７、ブロック７５８）、パイプライン１１８内のすべてのピクセルがすべて処理された時間や、パイプラインがうまくフラッシュされたことがわかる。トークンＴがグラフィックスパイプライン１１８の終端に現れると、ピクセルエンジン７００は、トークンが到達したこと、および、それによってパイプラインが完全にフラッシュされたことを示す信号（図１０参照）を生成する（図７、７６０）。
【００５９】
パイプラインがフラッシュされると、ピクセルエンジン７００は、グラフィックスパイプラインを再構成して、デプス比較／デプスバッファリング処理段階を、パイプラインの始端（すなわち、テクスチャ処理前）からパイプラインの終端へ移動させる（図７、ブロック７６２；図１１および１２参照）。パイプラインがうまく再構成されると、ピクセルエンジン７００は、ストールを解除することができる（図７、ブロック７６４）。これは、図１３において、遮断機を上げるという例によって図示されている。これで、ピクセルＰは、再構成されたパイプライン内を流れることができ、アルファスレッショルディングに基づく隠面消去やデプス比較も可能となる。
【００６０】
図７の処理を用いて、グラフィックスパイプライン１１８を再構成してｚ比較をグラフィックスパイプラインの終端から始端へ移動させることも可能である。上記の説明からわかるように、グラフィックスパイプライン１１８をこのように動的に再構成すると、不利益が生じる。特に、グラフィックスパイプライン１１８を再構成前にストールしてフラッシュしなければならず、そうしないと、パイプライン内のピクセルが失われたり、予想しないような画像結果が生じたりすることがある。図１４は、不利益を最小限にしつつ、ある光景を描画する間にグラフィックスパイプライン１１８を動的に再構成するための処理の一例を示す。この例においては、ある光景を描画するには、まず、ｚ比較をパイプライン１１８の始端に設定してから（ブロック７６６）、アルファスレッショルディングを要しないすべてのプリミティブを描画する（ブロック７６８）。すべてのプリミティブが済んだら、ｚ比較をパイプラインの終端に移動させてグラフィックスパイプライン１１８を再構成し（ブロック７７０）、その後、残りのプリミティブ（すなわち、アルファを伴うもの）を描画し、アルファテストおよびｚテストの両結果に基づいて、フレームバッファ７０２を更新する（ブロック７７２）。そして、最終的な光景が表示されるようになる。
【００６１】
いうまでもなく、ブロック７６６および７６８は、ブロック７７０および７７２と交換可能であり、アルファテストを要するプリミティブを先に描画し、その後でアルファテストを要しないプリミティブを描画することもできる。グラフィックパイプライン１１８の再構成は、プリミティブ毎に行われることが可能であるが、そのような方法には不利益な点があるので、魅力的でない方法となってしまうので、したがって、もし光景の描画中に描画モードを動的に変更するのであれば、プリミティブがアルファを要するか否かに基づいて分類した方がよい。
【００６２】
＜ｚ比較／デプスバッファリング論理の例＞
図１５は、ブロック７００ａおよび７００ａ’の一実施例を示す。図１５の例では、エッジ＆ｚラスタライザ７００ｂの出力およびテクスチャ環境部６００ａのいずれかを交互に切り替える、一連のマルチプレクサ７７６が与えられている。マルチプレクサ７７６は、図１６のピクセルエンジン制御レジスタ７０１内の「ｚ始端」制御ビットの状態によって制御される。マルチプレクサ７７６は、デプス比較／バッファリングがパイプラインの始端で行われる場合には、エッジ＆ｚラスタライザ４００ｂの出力を選択し、デプス比較／バッファリングがパイプラインの終端で行われる場合には、テクスチャ環境部６００の出力を選択する。
【００６３】
図１５に示すｚ部論理の例には、６つの評価部７７８と、６つのｚ比較部７８０とをさらに含む。本実施例において、ｚ評価部７７８は、配線数を減らすためのピクセルクワッドに対する平面方程式を解く。特に、２７．１形式の単一２８ビットクワッドＺと、ｓ２６．５形式のＺｘおよびＺｙが、ｚ部７００ａおよび７００ａ’に送られる。クワッドＺは、ピクセルクワッドの中心におけるピクセルｚの値である。ｚ評価部７７８は、２８ビット加算器を用いて以下の式を解く。
（Ｚ（ｄｘ，ｄｙ））＝Ｚ＋（Ｚｘ）（ｄｘ）＋（Ｚｙ）（ｄｙ）
【００６４】
ただし、ｘおよびｙは、ピクセル番号およびサンプル位置に基づく。本例において、加算器の上位３ビットは、オーバーフロー／アンダーフロー・クランピングに用いられる。クランピングは、以下に基づいて行われる。
・０００    オーバーフロー／アンダーフローなし
・０１ｘ    オーバーフロー、０ｘｆｆｆｆｆｆへクランプ
・０ｘ１    オーバーフロー、０ｘｆｆｆｆｆｆへクランプ
・１ｘｘ    アンダーフロー、０ｘ００００００へクランプ
【００６５】
本例に示すように、Ｚ比較論理ブロック７８０は、ｚ評価部７７８の出力をｚバッファ７０２ｚから読み出した値と比較する。ｚバッファから読み出したこれらの値は本実施例では「Ｚｄｓｔ」と表記される。本実施例において、ｚバッファ７０２ｚからの値は、９６ビット値である。本一実施例において、これらの記憶された値は圧縮／伸長されて、遠近比に基づいて、異なるレベルの精度を達成する。
【００６６】
図１５に示すように、メインＣＰＵ１１０は、図１５のｚ部に対してライン「ＣＰＵｚ」を介してアクセスする。マルチプレクサ７８２の組を用いて、ｚ比較７８０を行うために、ｚ評価ブロック７７８の出力およびＣＰＵ１１０から与えられたｚ値間の切り替えを行うことができる。
【００６７】
図１６に例示する制御レジスタ７０１は、「ｚ始端（Ｔｏｐ）」制御ビットを与える。このビットは、ｚバッファリングがグラフィックスパイプライン１１８の終端で行われる場合には０に設定され、テクスチャマッピングの前のｚバッファリングの場合には１に設定されてもよい。制御レジスタ７０１は、異なるｚ圧縮モード間の選択を行う機能を提供する（たとえば、リニアｚ圧縮、１４ｅ２ｚ圧縮、１３ｅ３ｚ圧縮、１２ｅ４ｚ圧縮、またはこれらを逆にしたもの）。レジスタ７０１の制御レジスタによって、プログラマは、異なる種類のピクセル間の選択できるようにして、カラーフレームバッファ７０２ｃに記憶するようにしてもよい。
【００６８】
本実施例において、制御レジスタ７０１への書き込みによって、エッジ＆ｚラスタライザ４００ｂからパイプラインの終端に至るパイプラインの段階が、図７，８〜１３に関連して先に説明したようにフラッシュされるようになる。このフラッシュ処理は、本実施例では少なくとも９０周期分行われる。このフラッシュ処理は、コピーされるテクスチャを用いるプリミティブの描画処理とテクスチャコピー処理を同期させるための方法として用いることもできる（たとえば、テクスチャ部５００がテクスチャとして用いようとする前に、コピー対象のテクスチャ全体がフレームバッファに書き込まれていることを確認する目的で）。
【００６９】
図１５のｚ部が「終端」ｚ比較位置に切り替わる場合には、グラフィックスパイプラインのバランスを図る必要がある場合がある。図１７は、パイプラインのバランシング手法を示しており、隠面消去処理の一部または全部が行われている間に先入れ先出しバッファ７９０を用いてカラー情報をバッファするものである。
【００７０】
＜ＡＰＩコマンドフォーマットの例＞
以下に、隠面消去の位置をパイプライン内で動的に移動させるためにグラフィックスシステム５０で用いることができるＡＰＩ（アプリケーション・プログラム・インターフェース）コマンドの例である。
【００７１】
ＧＸＳｅｔＺＣｏｍｐＬｏｃ
説明
この関数は、Ｚバッファリングをテクスチャリングの前に行うか後に行うかを設定する。通常、Ｚバッファリングは、テクスチャリングの前に行うべきである。なぜなら、見えないピクセルをテクスチャリングしないことによって性能が高めることができるからである。しかしながら、アルファ比較を用いる場合は、Ｚバッファリングは、テクスチャリングの後に行うべきである（ＧＸＳｅｔＡｌｐｈａＣｏｍｐａｒｅ参照）。
引数：
【表１】
0004680412.tif 000002
使用例：
ｖｏｉｄ  ＧＸＳｅｔＺＣｏｍｐＬｏｃ（ＧＸＢｏｏｌ  ｂｅｆｏｒｅ＿ｔｅｘ）；
【００７２】
ＧＸＳｅｔＺＭｏｄｅ
説明
この関数は、Ｚバッファ比較モードを設定する。Ｚ比較の結果は、カラー値を埋め込みフレームバッファ（ＥＦＢ）に条件付きで書き込む際に用いられる。
ｃｏｍｐａｒｅ＿ｅｎａｂｌｅがＧＸ＿ＤＩＳＡＢＬＥに設定されると、Ｚバッファリングは禁止されて、Ｚバッファは更新されない。
ｆｕｎｃパラメータは、行われる比較を決定する。比較関数において、新たにラスタライズされたＺ値は、左に置かれ、ＺバッファからのＺ値は右に置かれる。比較結果が偽であれば、新たにラスタライズされたピクセルは破棄される。
パラメータｕｐｄａｔｅ＿ｅｎａｂｌｅは、比較後にＺバッファが新たなＺ値によって更新されるか否かを決定する。また、このパラメータによって、コピー処理中にＺバッファがクリアされるか否かが決定される。ＧＸＣｏｐｙＤｉｓｐおよびＧＸＣｏｐｙＴｅｘ参照。
引数：
【表２】
0004680412.tif 000003
0004680412.tif 000004
【００７３】
ＧＸＳｅｔＡｌｐｈａＣｏｍｐａｒｅ
説明
この関数は、最終的なアクティブなテクスチャ環境（ＴＥＶ）段階からのアルファ出力を用いるアルファ比較関数のためのパラメータを設定する。アクティブなＴＥＶ段階の数は、ＧＸＳｅｔＴｅｖＳｔａｇｅｓを用いて指定される。
出力アルファをブレンディング式に用いて（ＧＸＳｅｔＢｌｅｎｄＭｏｄｅ参照）、ソースピクセルと宛先（フレームバッファ）ピクセルとをどのように組み合わせるかを制御することができる。
【００７４】
アルファ比較処理は、
ａｌｐｈａ＿ｐａｓｓ＝（ａｌｐｈａ＿ｓｒｃ（ｃｏｍｐ０）ｒｅｆ０）（ｏｐ）（ａｌｐｈａ＿ｓｒｃ（ｃｏｍｐ１）ｒｅｆ１）
ただし、ａｌｐｈａ＿ｓｒｃは、最終的なアクティブなＴＥＶ段階からのアルファである。一例として、以下の式を実行することができる。
ａｌｐｈａ＿ｐａｓｓ＝（ａｌｐｈａ＿ｓｒｃ＞ｒｅｆ０）ＡＮＤ（ａｌｐｈａ＿ｓｒｃ＜ｒｅｆ１）
または
ａｌｐｈａ＿ｐａｓｓ＝（ａｌｐｈａ＿ｓｒｃ＞ｒｅｆ０）ＯＲ（ａｌｐｈａ＿ｓｒｃ＜ｒｅｆ１）
【００７５】
Ｚ比較は、テクスチャリングの前に行うことも、後に行うこともできる。ＧＸＳｅｔＺＣｏｍｐＬｏｃ参照。Ｚ比較がテクスチャリングの前に行われる場合は、Ｚは、Ｚテストだけに基づいて書き込まれる。カラーは、Ｚテストおよびアルファテストの両方をパスした場合に書き込まれる。
【００７６】
Ｚ比較がテクスチャリングの後に行われる場合には、カラーおよびＺは、Ｚテストおよびアルファテストの両方をパスすれば書き込まれる。正確なＺバッファを要する（看板型の木のような）切り抜いた形を生成するためにテクスチャを用いる場合には、Ｚバッファをテクスチャリングの後にして、パイプラインを構成しなければならない。
0004680412.tif 000005
【００７７】
ＧＸＳｅｔＢｌｅｎｄＭｏｄｅ
説明
この関数は、グラフィックスプロセッサによって生成されたソース画像が埋め込みフレームバッファ（ＥＦＢ）の内容とどのようにブレンドされるかを決定する。カラー更新は、ＧＸＳｅｔＣｏｌｏｒＵｐｄａｔｅを呼び出すことによって許可されなければならない。種類がＧＸ＿ＢＭ＿ＮＯＮＥに設定される場合は、ソースデータは直接ＥＦＢに書き込まれる。種類がＧＸ＿ＢＭ＿ＢＬＥＮＤに設定される場合は、ソースカラーおよびＥＦＢピクセルは、以下の式を用いてブレンドされる。
ｄｓｔ＿ｐｉｘ＿ｃｌｒ＝ｓｒｃ＿ｐｉｘ＿ｃｌｒ＊ｓｒｃ＿ｆａｃｔｏｒ＋ｄｓｔ＿ｐｉｘ＿ｃｌｒ＊ｄｓｔ＿ｆａｃｔｏｒ
【００７８】
ＥＦＢがＧＸ＿ＰＦ＿ＲＧＢＡ６＿Ｚ２４をピクセルフォーマットとして有する場合は（ＧＸＳｅｔＰｉｘｅｌＦｍｔ参照）、ＧＸ＿ＢＬ＿ＤＳＴＡＬＰＨＡ／ＧＸ＿ＢＬ＿ＩＮＶＤＳＴＡＬＰＨＡを用いることができる。ピクセルフォーマットがＧＸ＿ＰＦ＿ＲＧＢＡ６＿Ｚ２４の場合は、ｓｒｃ＿ｆａｃｔｏｒおよびｄｓｔ＿ｆａｃｔｏｒもアルファチャンネルに適用される。アルファチャンネルをＥＦＢに書き込むためには、ＧＸＳｅｔＡｌｐｈａＵｐｄａｔｅを呼び出してもよい。
種類がＧＸ＿ＢＭ＿ＬＯＧＩＣに設定される場合は、ソースピクセルおよびＥＦＢピクセルは、論理ビットワイズ演算によってブレンドされる。
引数：
【表３】
0004680412.tif 000006
【表４】
0004680412.tif 000007
【表５】
0004680412.tif 000008
0004680412.tif 000009
【００７９】
＜互換可能な他の実施例＞
上述のシステム構成要素５０のうちのあるものは、上述の家庭用ビデオゲームコンソール以外であっても実施できる。たとえば、システム５０のために書き込まれているグラフィックスアプリケーションなどのソフトウェアを、システム５０をエミュレートするかまたはそれと互換性のある他の構成を用いたプラットフォーム上で実行することができる。他のプラットフォームが、システム５０のハードウェアおよびソフトウェア資源の一部または全部をうまくエミュレート、模倣、および／または提供できるのであれば、当該他のプラットフォームは、ソフトウェアをうまく実行することができるであろう。
【００８０】
一例として、エミュレータは、システム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供してもよい。エミュレータシステムは、アプリケーションソフトウェアを書き込む対象であるシステムのハードウェアおよび／またはソフトウェア構成要素の一部またはすべてをエミュレートするハードウェアおよび／またはソフトウェア構成要素を含んでいてもよい。たとえば、エミュレータシステムは、パーソナルコンピュータなどの汎用デジタルコンピュータを備えることができ、これによって、システム５０のハードウェアおよび／またはファームウェアを模倣するソフトウェアエミュレータプログラムが実行される。
【００８１】
汎用デジタルコンピュータの中には（たとえば、ＩＢＭまたはマッキントッシュ製パーソナルコンピュータおよびその互換機）、現在、ＤｉｒｅｃｔＸやその他の標準３ＤグラフィックスコマンドＡＰＩに対応したグラフィックスパイプラインを提供する３Ｄグラフィックスカードが搭載されているものもある。これらには、また、標準的なサウンドコマンドに基づいて高品質の立体音響を提供する立体音響サウンドカードも搭載されている場合もある。エミュレータソフトウェアを実行させるこのようなマルチメディアハードウェアを搭載したコンピュータは、システム５０のグラフィックス性能およびサウンド性能を近似するに充分な性能を有している場合がある。エミュレータソフトウェアは、パーソナルコンピュータプラットフォーム上のハードウェア資源を制御して、ゲームプログラマがゲームソフトウェアを書き込む対象である家庭用ビデオゲームゲームコンソールプラットフォームの処理性能、３Ｄグラフィックス性能、サウンド性能、周辺性能などを模倣する。
【００８２】
図１８は、エミュレーション処理全体の例を示しており、この処理は、ホストプラットフォーム１２０１と、エミュレータ構成要素１３０３と、記憶媒体６２上に与えられているバイナリ画像を実行可能なゲームソフトウェアとを用いる。ホスト１２０１は、汎用または専用デジタルコンピューティング装置であってもよく、たとえばパーソナルコンピュータやビデオゲームコンソールなど、充分な計算能力を備えたプラットフォームが挙げられる。エミュレータ１３０３は、ホストプラットフォーム１２０１上で実行されるソフトウェアおよび／またはハードウェアであってもよく、コマンドやデータなどの記憶媒体６２からの情報をリアルタイムで変換して、ホスト１２０１が処理可能な形式にすることができる。たとえば、エミュレータ１３０３は、システム５０が実行しようとする「ソース」バイナリ画像プログラム命令を記憶媒体６２から取り出して、実行可能な形式またはホスト１２０１によって処理可能な形式に当該プログラム命令を変換する。
【００８３】
一例として、ＩＢＭのＰｏｗｅｒＰＣなどの特定のプロセッサを用いたプラットフォーム上で実行するためにソフトウェアが書き込まれており、ホスト１２０１は、異なる（たとえば、インテルの）プロセッサを用いたパーソナルコンピュータである場合、エミュレータ１３０３は、バイナリ画像プログラム命令の１つまたはシーケンスを記憶媒体１３０５から取り出して、これらのプログラム命令を、インテルのバイナリ画像プログラム命令に相当するものに変換する。また、エミュレータ１３０３は、グラフィックス音声プロセッサ１１４によって処理されるグラフィックスコマンドや音声コマンドを取り出しおよび／または生成し、ハードウェアおよび／またはソフトウェアグラフィックスおよびホスト１２０１で利用可能な音声処理資源によって処理可能な形式に、これらのコマンドを変換する。一例として、エミュレータ１３０３は、これらのコマンドを、ホスト１２０１の特定のグラフィックスおよび／またはサウンドハードウェアによって処理可能なコマンドに変換する（たとえば、ＤｉｒｅｃｔＸ、オープンＧＬおよび／またはサウンドＡＰＩを用いる）。
【００８４】
システム５０のエミュレータの中には、隠面消去処理をグラフィックスパイプライン１１８内で移動させるコマンドを単に「スタブする」（すなわち、無視する）ものもある。ｚバッファリングをグラフィックスパイプラインの終端で行うことはいつでも可能である。なぜなら、その位置におけるｚバッファリングは、すべての描画モードにおいて可能だからである。しかしながら、アプリケーションが制御レジスタ７０１に対して書き込みを行う場合（たとえば、システム５０によって与えられたレジスタアドレス空間内のアドレス０ｘ４３）、そのような書き込みを無視するエミュレータなどのプラットフォームは、書き込みを無視することによって、アプリケーションプログラマが想定している同期を行わない恐れがある。そのため、場合によっては、画像効果が異常になってしまうことがある。したがって、エミュレータの中には、パイプラインの異なる部分において生じるイベント間の同期を与えるコマンドに応答するものがあってもよい。
【００８５】
上述のビデオゲームシステムの機能の一部または全部を提供するために用いられるエミュレータ１３０３には、エミュレータを用いて実行される様々なオプションや画面モードの選択を簡略化または自動化するグラフィックユーザインターフェース（ＧＵＩ）が与えられてもよい。一例として、そのようなエミュレータ１３０３は、ソフトウェアが本来対象としていたホストプラットフォームに比較して、拡張された機能をさらに含んでいてもよい。
【００８６】
図１９は、エミュレータ１３０３と共に用いられるのに適したエミュレーションホストシステム１２０１を示す。システム１２０１は、処理部１２０３と、システムメモリ１２０５とを含む。システムバス１２０７は、システムメモリ１２０５から処理部１２０３までを含む様々なシステム構成要素を結合する。システム１２０７は、メモリバスまたはメモリコントローラ、周辺機器バス、ローカルバスなど、様々なバスアーキテクチャのいずれかを用いたものを含む、数種のバス構成のいずれであってもよい。システムメモリ１２０７は、読み出し専用メモリ（ＲＯＭ）１２５２と、ランダムアクセスメモリ（ＲＡＭ）１２５４とを含む。ベーシック入出力システム（ＢＩＯＳ）１２５６は、パーソナルコンピュータシステム１２０１内の要素間において情報を転送するのを助ける基本ルーチンを含んでおり、ＲＯＭ１２５２に記憶される。システム１２０１は、様々なドライブや、関連したコンピュータが読み取り可能な媒体をさらに含む。ハードディスクドライブ１２０９は、（典型的には固定された）磁気ハードディスク１２１１からの読み出しやそれに対する書き込みを行う。付加的な（選択可能な）磁気ディスクドライブ１２１３は、着脱可能な「フロッピー」などの磁気ディスク１２１５からの読み出しやそれに対する書き込みを行う。光ディスクドライブ１２１７は、ＣＤＲＯＭなどの光媒体のような着脱可能な光ディスク１２１９からの読み出しや、構成によってはそれに対する書き込みも行う。ハードディスクドライブ１２０９および光学ディスクドライブ１２１７は、それぞれ、ハードディスクドライブインターフェース１２２１および光ドライブインターフェース１２２５によって、システムバス１２０７に接続している。ドライブやそれに関連するコンピュータが読み出し可能な媒体によって、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、ゲームプログラムなどのパーソナルコンピュータシステム１２０１のためのデータが不揮発的に記憶される。他の構成においては、コンピュータが読み出し可能な他の種類の媒体が用いられていてもよく、コンピュータによってアクセス可能なデータを記憶できる媒体（たとえば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭｓなど）であってもよい。
【００８７】
エミュレータ１３０３を含む多くのプログラムモジュールは、ハードディスク１２１１、着脱可能な磁気ディスク１２１５、光ディスク１２１９、および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４に記憶されてもよい。そのようなプログラムモジュールは、グラフィックスやサウンドＡＰＩを提供するオペレーティングシステム、１つ以上のアプリケーションプログラム、他のプログラムモジュール、プログラムデータ、ゲームデータを含んでもよい。ユーザは、コマンドや情報を、キーボード１２２７、ポインティングデバイス１２２９、マイク、ジョイスティック、ゲームコントローラ、衛星アンテナ、スキャナなどの入力装置を通じて、パーソナルコンピュータシステム１２０１に対して入力する。このような入力装置は、システムバス１２０７に結合されたシリアルポートインターフェース１２３１を介して処理部１２０３に接続されることが可能であるが、パラレルポートや、ゲームポート用ファイアワイヤーバスまたはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースによって接続されてもよい。モニタ１２３３などの表示装置も、ビデオアダプタ１２３５などのインターフェースを介して、システムバス１２０７に接続される。
【００８８】
また、システム１２０１は、インターネットのようなネットワーク１１５２上での通信を確立するための、モデム１１５４などのネットワークインターフェース手段を含んでもよい。モデム１１５４は、内蔵であっても外付けであってもよく、シリアルポートインターフェース１２３１を介してシステムバス１２０７に接続される。
【００８９】
また、ローカルエリアネットワーク１１５８を介して（または、ワイドエリアネットワーク１１５２、ダイアルアップなどの他の通信路、または他の通信手段を介してもよい）、システム１２０１が遠隔コンピューティング装置１１５０（たとえば、他のシステム１２０１）と通信できるように、ネットワークインターフェース１１５６が与えられてもよい。システム１２０１は、典型的には、プリンタなどの標準周辺機器のような、他の周辺出力装置を含む。
【００９０】
一例において、ビデオアダプタ１２３５は、Ｍｉｃｒｏｓｏｆｔ製ＤｉｒｅｘｔＸ７．０などのバージョンのような標準３Ｄグラフィックスアプリケーションプログラマインターフェースに基づいて出される３Ｄグラフィックスコマンドに応答して、高速３Ｄグラフィックス描画を提供するグラフィックスパイプラインチップセットを含んでいてもよい。立体音響スピーカセット１２３７も、システムバス１２０７に対して、従来の「サウンドカード」のような音声生成インターフェースを介して接続されている。そのようなインターフェースは、バス１２０７から与えられたサウンドコマンドに基づいて高品質な立体音響を生成するための支援をハードウェアや埋め込みソフトウェアに対して行う。このようなハードウェアの機能によって、システム１２０１は、記憶媒体６２に記憶されたソフトウェアを実行するのに充分なグラフィックスおよび音響の速度性能を提供することができる。
【００９１】
上記の書類は、すべて、明示的に述べたものとして本明細書に引用されている。
【００９２】
本発明は、現時点において最も現実的で最適な実施例と思われるものに関連して説明してきたが、本発明は、開示された実施例に限定されるものではなく、添付の請求項の範囲に含まれる様々な変形例や相当する仕組みを含むことを意図していると解釈されるべきである。
【図面の簡単な説明】
【図１】対話式コンピュータグラフィックスシステムの一例の概略図である。
【図２】図１のコンピュータグラフィックスシステムの例のブロック図である。
【図３】図２に示すグラフィックス＆音声プロセッサの例のブロック図である。
【図４】図３に示す３Ｄグラフィックスプロセッサの例のブロック図である。
【図５】図４のグラフィックス＆音声プロセッサの論理フロー図の例である。
【図６】ラスタライジングパイプラインの例のより詳細なブロック図である。
【図７】グラフィックスパイプラインの再構成方法を示すフローチャートの例である。
【図８】図７のグラフィックスパイプラインの再構成処理の簡略図である。
【図９】図７のグラフィックスパイプラインの再構成処理の簡略図である。
【図１０】図７のグラフィックスパイプラインの再構成処理の簡略図である。
【図１１】図７のグラフィックスパイプラインの再構成処理の簡略図である。
【図１２】図７のグラフィックスパイプラインの再構成処理の簡略図である。
【図１３】図７のグラフィックスパイプラインの再構成処理の簡略図である。
【図１４】光景を描画中にグラフィックスパイプラインを動的に再構成する処理例のフローチャートである。
【図１５】再構成可能なｚユニットの例を示す。
【図１６】制御レジスタフォーマットの例を示す。
【図１７】グラフィックスパイプラインの均衡化の例を示す。
【図１８】他の代替可能な実施例を示す。
【図１９】他の代替可能な実施例を示す。
【図１】
0004680412.tif 000010
【図２】
0004680412.tif 000011
【図３】
0004680412.tif 000012
【図４】
0004680412.tif 000013
【図５】
0004680412.tif 000014
【図６】
0004680412.tif 000015
【図７】
0004680412.tif 000016
【図８】
0004680412.tif 000017
【図９】
0004680412.tif 000018
【図１０】
0004680412.tif 000019
【図１１】
0004680412.tif 000020
【図１２】
0004680412.tif 000021
【図１３】
0004680412.tif 000022
【図１４】
0004680412.tif 000023
【図１５】
0004680412.tif 000024
【図１６】
0004680412.tif 000025
【図１７】
0004680412.tif 000026
【図１８】
0004680412.tif 000027
【図１９】
0004680412.tif 000028