(57)【特許請求の範囲】
【請求項１】
ハードウェアに基づく再循環シェーダを含むグラフィックスシステムにおいてグラフィックス画像を生成する方法であって、当該方法は、
（ａ）前記再循環シェーダが、画像化される面を表す情報を取得するステップであって、当該情報は、透明度・不透明度に係るアルファ情報を含む、ステップ；
（ｂ）前記再循環シェーダが、前記アルファ情報に基づく複数のアルファ比較を、少なくとも部分的に実行して、対応する複数のアルファ比較の結果を提供するステップ；
（ｃ）前記再循環シェーダが、前記複数のアルファ比較の結果の論理結合を行うステップ；および
（ｄ）前記グラフィックスシステムは、当該論理結合に少なくとも部分的に基づき前記グラフィックス画像をレンダリングするステップを含み、
前記ハードウェアに基づく再循環シェーダは、複数の異なる入力を受け、その入力に戻されて供給され得る出力を生成するシェーダであって、Ｍ個のアルファ入力に対するＮ個の論理アルファ演算を提供することによって、プログラム可能なアルファ情報の演算を実行し得るシェーダであり、ここで、ＮおよびＭは、１より大きい整数である、方法。
【請求項２】
前記ステップ（ｄ）は、前記論理結合に基づいてピクセルを処理対象から除くか否かを選択することを含む、請求項１に記載の方法。
【請求項３】
前記ステップ（ｄ）は、前記論理結合に基づいて、前記グラフィックス画像に含まれるオブジェクトのシルエットの輪郭線または内部輪郭のカラーをブレンドするか否かを選択的に決定することを含む、請求項１に記載の方法。
【請求項４】
前記ステップ（ｂ）および（ｃ）は、その処理対象に含まれる２つのアルファ値の差の絶対値を求めること含む、請求項１に記載の方法。
【請求項５】
ハードウェアに基づく再循環シェーダを含むリアルタイムレンダリングシステムにおいて、画像化される対象である１以上のオブジェクトまたは当該オブジェクトの部分構造のアウトライニングを実行するための方法であって、
（ａ）前記再循環シェーダが、画像化される対象を表す情報を取得するステップであって、当該情報は、前記オブジェクトまたは当該オブジェクトの部分構造を識別するためのオブジェクト識別子をアルファチャンネルに含む、ステップ；
（ｂ）前記再循環シェーダが、前記画像化される対象を表す情報に基づく複数のアルファ比較を、少なくとも部分的に実行して、対応する複数のアルファ比較の結果を提供するステップ；
（ｃ）前記再循環シェーダが、前記複数のアルファ比較の結果の論理結合を行うステップ；および
（ｄ）前記リアルタイムレンダリングシステムが、当該論理結合に少なくとも部分的に基づき前記オブジェクトまたは当該オブジェクトの部分構造の輪郭線または内部輪郭線をフレームバッファに選択的に書き込むステップを含み、
前記ハードウェアに基づく再循環シェーダは、複数の異なる入力を受け、その入力に戻されて供給され得る出力を生成するシェーダであって、Ｍ個のアルファ入力に対するＮ個の論理アルファ演算を提供することによって、プログラム可能なアルファ情報の演算を実行し得るシェーダであり、ここで、ＮおよびＭは、１より大きい整数である、方法。
【請求項６】
比較されている所与のピクセルのアルファ値をａ0とし、その隣接ピクセルのアルファ値がａ1である場合、前記再循環シェーダは、［ａ0−ａ1］の絶対値を計算する、請求項５に記載の方法。
【請求項７】
前記再循環シェーダは、比較されている一方のアルファ値からもう一方のアルファ値を減算して、そのクランプされていない結果を出力する、請求項５に記載の方法。
【請求項８】
前記再循環シェーダは、予め定めた閾値を超えるアルファ差分値を検出するように動作する、請求項５に記載の方法。
【請求項９】
前記再循環シェーダが、クランプされていない負の結果を生じると、当該結果は変換されて、最上位ビットセットを有するアルファ値となる、請求項５に記載の方法。
【請求項１０】
前記再循環シェーダは、複数のアルファ演算結果に基づいて、予め定めたカラー値にブレンドを行なう、請求項５に記載の方法。
【請求項１１】
前記再循環シェーダは、第１のパス内において第１の方向の輪郭線を書き込み、第２のパス内において第２の方向の輪郭線を書き込む、請求項５に記載の方法。
【請求項１２】
前記方法は、アルファチャンネルから得たテクスチャをマッピングして、当該テクスチャを用いてアルファ差分を前記再循環シェーダによる評価のために提供することをさらに含む、請求項５に記載の方法。
【請求項１３】
グラフィックスシステムであって、
テクスチャ座標マトリックス乗算器を含むテクスチャ部と、
アルファチャンネルを含むハードウェアに基づく再循環シェーダと、
アルファ画像を記憶可能な組み込みフレームバッファと、
アルファ画像を前記フレームバッファからコピーして前記テクスチャ部がテクスチャとして利用できるようにする、コピーアウトパイプラインとを備え、
ここで、
（ａ）前記再循環シェーダは、画像化される面を表す情報を取得し；
（ｂ）前記再循環シェーダは、前記アルファチャネルの値に基づく複数のアルファ比較を、少なくとも部分的に実行して、対応する複数のアルファ比較の結果を提供し；
（ｃ）前記再循環シェーダは、前記複数のアルファ比較の結果の論理結合を行い；そして
（ｄ）前記グラフィックスシステムは、当該論理結合に少なくとも部分的に基づきグラフィックス画像を、前記組み込みフレームバッファにレンダリングし、
ここで、前記再循環シェーダは、複数の異なる入力を受け、その入力に戻されて供給され得る出力を生成するシェーダであって、Ｍ個のアルファ入力に対するＮ個の論理アルファ演算を提供することによって、プログラム可能なアルファ値の演算を実行し得るシェーダであり、ここで、ＮおよびＭは、１より大きい整数である、グラフィックスシステム。
【請求項１４】
前記再循環シェーダは、前記複数の論理的アルファ比較を論理的に結合し、前記結合結果に基づいて、所定のカラーをブレンドする、請求項１３に記載のグラフィックスシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータグラフィックスに関し、より特定的には、家庭用ビデオゲームプラットフォームのような対話式グラフィックスシステムに関する。さらにより特定的には、本発明は、Ｎ個のアルファチャンネル演算の論理結合を用いて、漫画のアウトライニングなどのフォトリアリスティックでない画像を含む興味深いグラフィックス効果を生じさせることに関する。
【０００２】
【従来の技術】
我々の多くは、非常に現実感のある恐竜や宇宙人、アニメ化されたおもちゃといった空想的な生物を含む映像を目にしたことがある。このようなアニメーションは、コンピュータグラフィックスによって可能となっている。このような技術を用いて、コンピュータグラフィックス製作者は、各物体がどのように見えるか、および時間の経過に伴ってどのような外見上の変化が生じるかを特定することができる。そして、コンピュータが、物体をモデル化し、テレビやコンピュータ画面などのディスプレイに表示する。表示画像の各部分の着色や形状が、そのシーンに存在する個々の物体の位置や向き、各物体に対する照明方向、各物体の面の質感、その他様々な要素に基づいて確実にうまく行なわれるために必要な数多くのタスクは、コンピュータが引き受ける。
【０００３】
コンピュータグラフィックスの生成は複雑なため、ほんの数年前まで、コンピュータで作成した３次元グラフィックスの活用は、高価で専門化されたフライトシミュレータやハイエンドグラフイックスワークステーション、スーパーコンピュータにほぼ限定されていた。人々は、コンピュータシステムによって生成された画像を、映画や制作費の高いテレビ広告において目にすることはあっても、グラフィックス生成を行なうコンピュータに実際に接することはできなかった。このような状況が変化したのは、ニンテンドウ６４（登録商標）やパーソナルコンピュータで利用可能な各種の３Ｄグラフィックスカードなど、比較的安価な３Ｄグラフィックスプラットフォームの出現によるものである。今や、自宅や勤務先でも、比較的安価なコンピュータグラフィックスシステム上において、迫力のある３Ｄアニメーションやシミュレーションと対話的に接することが可能となっている。
【０００４】
これまでのコンピュータグラフィックス研究のほとんどは、現実感のある画像を生成することが中心となる傾向にあった。この研究は、大きな成果を上げている。いまや、コンピュータは、写真と区別がつかないほど現実感のある画像を生成することができるようになった。たとえば、我々の多くは、映画やテレビにおいて、本物のような恐竜や宇宙人、コンピュータによって生成されたフォトリアリスティックな特殊効果を見てきている。新人のパイロットは、実際の飛行をほぼ再現するような高い現実感のあるコンピュータに基づくフライトシミュレータ上で訓練を行なっている。いまや、低価格の家庭用ビデオゲームシステムは、非常に高い現実感を提供することができ、ゲームプレーヤに対して、実際のレーシングカーを競技場で運転したり、雪や氷で覆われたスキー斜面をスキーで滑り降りたり、中世の城の中を歩いたりといった幻影を与えることができる。ゲームの多くは、このような現実感の幻影によって、ゲームプレイ体験を大きく拡張している。
【０００５】
現実感を拡張する方法の一つとして、「アルファブレンディング」と呼ばれる技術を用いて、面の不透明度（透明度）をモデリングする方法がある。この従来技術を用いて、各画像要素は、不透明度の度合いを表す「アルファ値」が割り当てられる。画像要素の色は、アルファ値に基づいてブレンディングされ、あるオブジェクトが他のオブジェクトを通して透けて見えるようにすることができる。さらに他の従来技術として、「アルファ関数」または「アルファテスト」と呼ばれるものがあり、これを用いて、オブジェクト・フラグメントのアルファ値を基準関数または基準値と比較することによって、当該オブジェクト・フラグメントを破棄することができる。アルファテストは、透明だから見えなくなるであろうという理由で、画像の一部となるであろう部分をブレンドしない（すなわち、破棄する）と決定することもできる。
【０００６】
アルファブレンディングおよびアルファテストは、水やガラスなどの透明なオブジェクトをモデリングするのに特に有効である。これと同じ機能を、テクスチャマッピングと共に用いて、様々な効果を達成することもできる。たとえば、アルファテストは、マットとして機能するアルファ要素と共に、ポリゴン上のテクスチャマップを用いて複雑な形状を描くために頻繁に用いられる。例として、木は、ポリゴン上で木のピクチャ（テクスチャ）として描くことが可能である。テクスチャ画像の木の部分は、アルファ値１（不透明）とし、木でない部分はアルファ値０（透明）とすることができる。このように、ポリゴンの「木でない」部分は、テクスチャマップの見えない（透明な）部分にマッピングされ、ポリゴンの「木」の部分は、テクスチャマップの見える（不透明）部分にマッピングされる。
【０００７】
テクスチャのアルファ要素のこの他の使い方として、たとえば、穴をあけたり、面をトリムするといったことが挙げられる。一例として、カットアウトまたはトリム領域の画像は、テクスチャマップに保存することができる。ポリゴン面にテクスチャをマッピングする際には、アルファテストまたはアルファブレンディングを用いて、ポリゴン面からカットアウトまたはトリムされた領域をカットすることができる。さらに、コンピュータグラフィックスシステムのアルファチャンネルを用いて、漫画のアウトライニングなどのフォトリアリスティックでない画像効果を提供することもできる。１９９９年１２月２１日出願の米国特許出願番号０９／４６８，１０９に開示された機構では、リアルタイムレンダリングシステムのアルファチャンネルを用いて、異なるオブジェクトや異なるオブジェクト部分に対応する識別子を符号化している。このシステムでは、オブジェクトをカラーフレームバッファにいれてレンダリングし、対応するオブジェクトＩＤをアルファフレームバッファに書き込む。アルファテスト処理がアルファフレームバッファに対して行なわれ、アルファ比較結果（すなわち、２つのアルファ値の差の絶対値）を用いて、シルエットや異なるアルファ／ＩＤで符号化された画像領域間で規定された輪郭を囲んでいる輪郭線の配色を、選択的にブレンドする。
【０００８】
ＤｉｒｅｃｔＸやＯｐｅｎＧＬなどの典型的な一般に利用可能な３Ｄグラフィックスアプリケーションプログラマインターフェースは、アルファ比較に対応している。このアルファ比較は、透明度のためや、たとえば反復アルファまたはテクスチャアルファと定数との比較を行なって、比較が失敗したピクセルを「キル」するためのものである。一例として、Ｄｉｒｅｃｔ３Ｄには、アルファテストをイネーブルするために用いられる「Ｄ３ＤＲＥＮＤＥＲＳＴＡＴＥ  ＡｌＰＨＡＴＥＳＴ−ＥＮＡＢＬＥ」というコマンドが用意されている。コマンドＤ３ＤＣＯＭＦＵＮＣといった列挙型によれば、プログラマはアルファ比較演算（たとえば、決して〜ない、常に、＜、＞、以下、以上、不等など）において用いられるであろうテストを特定することができる。たとえば、アルファ比較関数が「以上」に設定され、ラスタライズされるピクセルが、ピクセルに既に存在するカラーよりも不透明である場合、Ｄｉｒｅｃｔ３Ｄは、これを完全にスキップして、２つのカラーをブレンドするのにかかるであろう時間を節約し、カラーバッファやｚバッファが更新されるのを防止する。また、Ｄ３ＤＲＥＮＤＥＲＳＴＡＴＥ＿ＡＬＰＨＡＲＥＦコマンドを用いて、新たなアルファを、プログラマが指定した基準アルファ値と比較することもできる（たとえば、「もし、アルファ＜１２８／２５５であれば、ピクセルをキルする」）。たとえば、コバック他、「インサイドＤｉｒｅｃｔ３Ｄ(マイクロソフト２０００)」、２８９〜２９１頁を参照のこと。同様のアルファテスト／比較機能は、ＧＬ＿ＡＬＰＨＡ＿ＴＥＳＴ，ＧＬ＿ＡＬＰＨＡ＿ＴＥＳＴ＿ＦＵＮＣ，ＧＬ＿ＡＬＰＨＡ＿ＴＥＳＴ＿ＲＥＦコマンドによって、ＯｐｅｎＧＬにおいても用意されている。ナイダー他、「ＯｐｅｎＧＬプログラミングガイド」（アディソン−ウエズリー、１９９３年）の３０１〜３０２頁を参照のこと。
【０００９】
上述の漫画のアウトライニングアルゴリズムを含む、様々で複雑なアルファ比較を実施する際に生じる問題として、単一のレンダリングパスを用いて、ハードウェアにおいて、より複雑なアルファ比較をいかに効率的に行なうかということがある。たとえば、任意な複雑性を有するアルファテストは、典型的には、プロセッサによって実行されるソフトウェアによって直接的に行うことができるが、（たとえば、より高速に行なうためには）ハードウェアに基づいたアルファテストを用いた方が望ましい場合もある。このような任意な複雑性を有するアルファテスト機能は、家庭用ビデオゲームやパーソナルコンピュータのグラフィックスカードなどといった低価格グラフィックスシステムにおいては、これまで通常利用できないものであった。
【００１０】
本発明は、この問題を解決するものであって、論理的に結合可能な複数のアルファ比較を行なうことが可能な、ハードウェアに基づくピクセルシェーダを提供することによって、幅広いアルファテスト機能を達成するものである。本発明の一局面によれば、ピクセルシェーダは、シェードツリーに類似した透過ツリーを提供するために用いることができる。特に、アルファ機能を用いて、Ｎ個の論理アルファ演算をＭアルファ入力に対して行なうことができる。ここで、ＮおよびＭは、いかなる整数であってもよい。
【００１１】
本発明の一局面が提供するのは、グラフィックス画像を生成する方法であって、画像化される面を表す情報（前記情報はアルファを含む）を生成し、同一のレンダリングパス内において、複数のアルファ比較を前記アルファ情報に対して実行して、対応する複数のアルファ比較結果を提供し、前記複数のアルファ比較結果を論理的に結合し、少なくとも一部は前記論理結合に基づいて、前記グラフィックス画像をレンダリングする方法である。レンダリングステップは、前記論理結合に基づいてピクセルをキルするか否かを選択することを含んでもよい。実行ステップは、ハードウェア内および／または再循環シェーダを用いて行なわれてもよい。
【００１２】
本発明の他の局面によれば、グラフィックスシステムは、テクスチャ座標マトリックス乗算器を含むテクスチャ部と、アルファチャンネルを含むシェーダと、アルファ画像を記憶可能な組み込みフレームバッファと、アルファ画像を上記フレームバッファからコピーして前記テクスチャ部がテクスチャとして利用できるよ うにするコピーアウトパイプラインとを備え、前記グラフィックスシステムは、単一のレンダリングパスにおいて複数のアルファ比較を行なう。
【００１３】
アルファ比較およびアルファ論理演算を結合して用いることによって、アルファに基づく付加的な効果を幅広く達成することができる。たとえば、二重のアルファ比較を用いて、漫画のアウトライニングなどのフォトリアリスティックでない効果を提供することができる（たとえば、絶対値関数を実施することによって、前記論理結合に基づいた漫画の輪郭線カラーのブレンドを行なうか否かを効率的に決定することができる）。
【００１４】
【発明の実施の形態】
図１は、対話式３Ｄコンピュータグラフィックスシステム５０の例を示す。システム５０は、興味をそそる立体音響を伴う対話式３Ｄビデオゲームをプレイするのに用いることができる。また、これは、他の様々な用途に応用できる。
【００１５】
本例において、システム５０は、デジタル表現や３次元世界モデルを、対話的にリアルタイムで処理することができる。システム５０は、世界のすべてまたは一部を、任意の視点から表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂなどの入力装置からのリアルタイム入力に応答して、視点を対話的に変化させることができる。これにより、ゲームプレイヤは、世界の内部または外部の者から見た世界を見ることができる。システム５０は、リアルタイム３Ｄ対話式表示を要求しないような用途（たとえば、２Ｄ表示生成および／または非対話式表示）に用いることもできるが、上質の３Ｄ画像を非常に高速に表示する能力は、現実感の高いおもしろいゲームプレイなどの視覚的な対話を生成するのに用いることができる。
【００１６】
システム５０を用いてビデオゲームなどのアプリケーションをプレイするためには、ユーザは、まず、ケーブル５８を用いて、メインユニット５４をユーザのカラーテレビ５６などの表示装置に接続する。メインユニット５４は、カラーテレビ５６を制御するためのビデオ信号および音声信号を生成する。ビデオ信号は、テレビ画面５９に表示される画像を制御するものであり、音声信号は、テレビのステレオスピーカ６１Ｌおよび６１Ｒを介して、音として再生される。
【００１７】
また、ユーザは、メインユニット５４を電源に接続する必要がある。この電源は、家庭の壁にある電気コンセントに差し込む従来のＡＣアダプタ（図示せず）であってもよく、家庭用電流を、メインユニット５４に電力供給するのに適切な、より低いＤＣ電圧信号に変換する。他の態様として、電池を用いることも可能である。
【００１８】
ユーザは、ハンドコントローラ５２ａおよび５２ｂを用いて、メインユニット５４を制御してもよい。たとえば、操作部６０を用いて、テレビ５６に表示されるキャラクタが３次元世界内で移動すべき方向（上または下、左または右、近または遠）を指定することができる。また、操作部６０は、他の用途のための入力を与える（たとえば、メニュー選択、ポインタ／カーソル制御など）。コントローラ５２は、様々な形態を取り得る。本例においては、図示された各コントローラ５２は、ジョイスティック、押しボタン、および／または方向スイッチなどの操作部６０を含む。コントローラ５２のメインユニット５４への接続は、ケーブルであってもよいし、電磁波（たとえば、電波または赤外線波）を介した無線であってもよい。
【００１９】
ゲームなどのアプリケーションをプレイするためには、ユーザは、プレイしたいと思う当該ビデオゲームなどのアプリケーションを記憶する適切な記憶媒体６２を選択して、当該記憶媒体をメインユニット５４内のスロット６４に挿入する。記憶媒体６２は、たとえば、特に符号化されたおよび／または暗号化された光学および／または磁気ディスクであってもよい。ユーザは、電源スイッチ６６を操作して、メインユニット５４をオンして、記憶媒体６２に記憶されたソフトウェアに基づいてビデオゲームなどのアプリケーションの実行を開始してもよい。ユーザは、コントローラ５２を操作して、メインユニット５４に入力を与えてもよい。たとえば、操作部６０を操作すると、ゲームなどのアプリケーションが開始されてもよい。他の操作部６０を動かすと、動くキャラクタを異なる方向へ移動させたり、３Ｄ世界内でのユーザの視点を変化させたりすることができる。記憶媒体６２内に記憶された特定のソフトウェアに基づいて、コントローラ５２上の様々な制御部６０は、異なる時に異なる機能を実行することができる。
【００２０】
＜システム全体の電子回路例＞
図２は、システム５０の構成要素例のブロック図を示す。主な構成要素は以下のものを含む。
・メインプロセッサ（ＣＰＵ）１１０、
・メインメモリ１１２、および
・グラフィックス＆音声プロセッサ１１４
【００２１】
本例においては、メインプロセッサ１１０（たとえば、拡張されたＩＢＭＰｏｗｅｒＰＣ７５０）は、グラフィックス＆音声プロセッサ１１４を介して手持ちコントローラ１０８（および／または他の入力装置）からの入力を受ける。メインプロセッサ１１０は、ユーザ入力に対話的に応答して、たとえば外部記憶媒体６２から光学ディスクドライブなどの大容量記憶アクセス装置１０６を介して供給されるビデオゲームなどのプログラムを実行する。一例として、ビデオゲームプレイの場合、メインプロセッサ１１０は、様々な対話的な制御機能に加えて、衝突検出や動画処理を行うことができる。
【００２２】
本例において、メインプロセッサ１１０は、３Ｄグラフィックスコマンドおよび音声コマンドを生成して、グラフィックス＆音声プロセッサ１１４に送る。グラフィックス＆音声プロセッサ１１４は、これらのコマンドを処理して、興味をそそる視覚的な画像をディスプレイ５９に生成したり、興味をそそる立体音響をステレオスピーカ６１Ｒおよび６１Ｌなどの適切な音発生装置に生成したりする。
【００２３】
本例のシステム５０が含むビデオエンコーダ１２０は、グラフィックス＆音声プロセッサ１１４から画像信号を受信して、当該画像信号を、コンピュータモニタや家庭用カラーテレビ５６などの標準的な表示装置に表示するのに適切なアナログおよび／またはデジタルビデオ信号に変換する。また、システム５０が含む音声コーデック（圧縮器／伸長器）１２２は、デジタル化された音声信号の圧縮および伸長を行い、また、必要に応じて、デジタルまたはアナログ音声信号形式への変換を行なってもよい。音声コーデック１２２は、音声入力をバッファ１２４を介して受信して、グラフィックス＆音声プロセッサ１１４に与えて、処理を行なうことができる（たとえば、プロセッサが生成した他の音声信号とミキシングするおよび／または大容量記憶アクセス装置１０６のストリーミング音声出力を介して受信する）。本例のグラフィックス＆音声プロセッサ１１４は、音声関連情報を音声タスク用に利用可能な音声メモリ１２６に記憶することができる。グラフィックス＆音声プロセッサ１１４は、処理結果の音声出力信号を音声コーデック１１２に与えて、スピーカ６１Ｌおよび６１Ｒによって再生できるように、（たとえば、バッファ増幅器１２８Ｌおよび１２８Ｒを介して）伸長やアナログ信号への変換が行われる。
【００２４】
グラフィックス＆音声プロセッサ１１４は、システム５０内にある様々な付加的な装置と通信を行うことが可能である。たとえば、パラレルデジタルバス１３０が、大容量記憶アクセス装置１０６および／または他の構成要素との通信に用いられてもよい。シリアル周辺機器バス１３２が、様々な周辺機器などの機器との通信に用いられてもよく、それらの機器としては、たとえば、以下のものを含む。
・プログラム可能な読み出し専用メモリおよび／またはリアルタイムクロック１３４、
・モデム１３６などのネットワークインターフェース（インターネットなどのデジタルネットワークのような、プログラム命令および／またはデータをダウンロードしたりアップロードしたりすることが可能な電気通信ネットワーク１３８に対して、システム５０を接続するようなものであってもよい）、および
・フラッシュメモリ１４０。
【００２５】
別の外部シリアルバス１４２が、付加的な拡張メモリ１４４（たとえば、メモリカード）などの装置との通信に用いられてもよい。コネクタが、様々な装置をバス１３０、１３２、および１４２を接続するために用いられてもよい。
【００２６】
＜グラフィックス＆音声プロセッサの例＞
図３は、グラフィックス＆音声プロセッサ１１４の例のブロック図である。一例として、グラフィックス＆音声プロセッサ１１４は、単一チップＡＳＩＣ（特定用途向けＩＣ）であってもよい。本例において、グラフィックス＆音声プロセッサ１１４は、以下のものを含む。
・プロセッサインターフェース１５０、
・メモリインターフェース／コントローラ１５２、
・３Ｄグラフィックスプロセッサ１５４、
・音声デジタル信号プロセッサ（ＤＳＰ）１５６、
・音声メモリインターフェース１５８
・音声インターフェース＆ミキサ１６０
・周辺機器コントローラ１６２、および
・ディスプレイコントローラ１６４。
【００２７】
３Ｄグラフィックスプロセッサ１５４は、グラフィック処理タスクを行う。音声デジタル信号プロセッサ１５６は、音声処理タスクを行う。ディスプレイコントローラ１６４は、画像情報をメインメモリ１１２からアクセスして、それをビデオエンコーダ１２０に与えて、表示装置５６に表示させる。音声インターフェース＆ミキサ１６０は、音声コーデック１２２とインターフェースし、また、別のソースからの音声（たとえば、大容量記憶アクセス装置１０６からのストリーミング音声、音声ＤＳＰ１５６の出力、および音声コーデック１２２を介して受信した外部音声入力）をミキシングすることも可能である。プロセッサインターフェース１５０は、メインプロセッサ１１０およびグラフィックス＆音声プロセッサ１１４間のデータおよび制御インターフェースを提供する。
【００２８】
メモリインターフェース１５２は、グラフィックス＆音声プロセッサ１１４およびメモリ１１２間のデータおよび制御に関するインターフェースを提供する。本例において、メインプロセッサ１１０は、グラフィックス＆音声プロセッサ１１４の一部であるプロセッサインターフェース１５０およびメモリインターフェース１５２を介して、メインメモリ１１２にアクセスする。周辺機器コントローラ１６２は、グラフィックス＆音声プロセッサ１１４および上述の様々な周辺機器間におけるデータおよび制御に関するインターフェースを提供する。音声メモリインターフェース１５８は、音声メモリ１２６とのインターフェースを提供する。
【００２９】
＜グラフィックスパイプラインの例＞
図４は、３Ｄグラフィックスプロセッサ１５４の例のより詳細な図である。３Ｄグラフィックスプロセッサ１５４は、特に、コマンドプロセッサ２００と、３Ｄグラッフィックスパイプライン１８０とを含む。メインプロセッサ１１０は、データのストリーム（たとえば、グラフィックスコマンドストリームやデータリスト）をコマンドプロセッサ２００に伝達する。メインプロセッサ１１０は、メモリの待ち時間を最小限にするための２レベルキャッシュ１１５を有し、また、グラフィックス＆音声プロセッサ１１４向けの未キャッシュのデータストリームのためのライトギャザリングバッファ１１１も有する。ライトギャザリングバッファ１１１は、部分キャッシュラインを集めて完全キャッシュラインとし、このデータを１キャッシュラインずつグラフィックス＆音声プロセッサ１１４に送出して、バスが最大限に利用できるようにする。
【００３０】
コマンドプロセッサ２００は、メインプロセッサ１１０から表示コマンドを受信し、これを解析して、処理に必要な付加データを共通メモリ１１２から取得する。コマンドプロセッサ２００は、頂点コマンドのストリームをグラフィックスパイプライン１８０に与えて、２Ｄおよび／または３Ｄ処理およびレンダリングを行う。グラフィックスパイプライン１８０は、これらのコマンドに基づいて画像を生成する。生成された画像情報は、メインメモリ１１２に転送されて、表示制御部／ビデオインターフェース部１６４によってアクセスできるようにしてもよく、それによって、ディスプレイ５６にパイプライン１８０のフレームバッファ出力が表示される。
【００３１】
図５は、グラフィックスプロセッサ１５４の論理フロー図である。メインプロセッサ１１０は、グラフィックスコマンドストリーム２１０と、表示リスト２１２と、頂点アレイ２１４とをメインメモリ１１２に記憶してもよく、バスインターフェース１５０を介してポインタをコマンドプロセッサ２００に渡す。メインプロセッサ１１０は、メインメモリ１１０内に割り当てた１つ以上のグラフィックス先入れ先出し（ＦＩＦＯ）バッファ２１０にグラフィックスコマンドを記憶する。コマンドプロセッサ２００は、以下のものを取り出す。
・グラフィックスコマンドを受信およびバッファリングして、同期／フロー制御およびロードバランシングを行なうオンチップＦＩＦＯメモリバッファ２１６を介して、メインメモリ１１２からのコマンドストリーム、
・オンチップ呼び出しＦＩＦＯメモリバッファ２１８を介して、メインメモリ１１２からの表示リスト２１２、および
・コマンドストリームからの、および／または頂点キャッシュ２２０を介してメインメモリ１１２内の頂点アレイ２１４からの頂点属性。
【００３２】
コマンドプロセッサ２００は、コマンド処理動作２００ａを行って、属性型を浮動小数点形式に変換し、その結果の完全な頂点ポリゴンデータをグラフィックスパイプライン１８０に渡して、レンダリング／ラスタライズする。プログラム可能なメモリ調停回路１３０（図４参照）は、グラフィックスパイプライン１８０、コマンドプロセッサ２００、および表示制御部／ビデオインターフェース部１６４の間で共通のメインメモリ１１２に対するアクセスを調停する。
【００３３】
図４に示すように、グラフィックスパイプライン１８０は、以下のものを含んでもよい。
・変換部１３００、
・セットアップ／ラスタライザ４００、
・テクスチャ部５００、
・テクスチャ環境部６００、および
・ピクセルエンジン部７００。
【００３４】
変換部１３００は、２Ｄおよび３Ｄ変換などの様々な処理３００ａを行う（図５参照）。変換部３００は、変換処理３００ａに用いられるマトリックスを記憶する１以上のマトリックスメモリ３００ｂを含んでもよい。変換部１３００は、頂点毎に入力される形状を、オブジェクト空間から画面空間へ変換し、入力されるテクスチャ座標を変換して投影テクスチャ座標を計算する（３００ｃ）。変換部１３００は、ポリゴンクリッピング／カリング（３００ｄ）を行ってもよい。また、変換部３００ｂによって行われるライティング処理３００ｅによって、一実施例においては、８個の独立した光に対するライティング計算が頂点毎に行われる。また、変換部１３００は、エンボス型のバンプマッピング効果を出すためのテクスチャ座標生成（３００ｃ）や、ポリゴンクリッピング／カリング処理（３００ｄ）を行うこともできる。
【００３５】
セットアップ／ラスタライザ４００は、セットアップ部を含む。セットアップ部は、頂点データを変換部３００から受信して三角形セットアップ情報を１以上のラスタライザ（４００ｂ）に送信して、エッジラスタライズ、テクスチャ座標ラスタライズ、およびカラーラスタライズを行う。
【００３６】
テクスチャ部５００（オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよい）、テクスチャリング関連の様々なタスクを行う。タスクには、たとえば、以下のものが含まれる。
・メインメモリ１１２からテクスチャ５０４を取り出す、
・たとえばマルチテクスチャ処理、ポストキャッシュテクスチャ伸展、テクスチャフィルタリング、エンボス、投影テクスチャを用いたシャドウおよびライティング、ならびにアルファ透明およびデプスを用いたＢＬＩＴを含む、テクスチャ処理（５００ａ）、
・バンプマッピング、疑似テクスチャ、テクスチャタイリング効果のためのテクスチャ座標変換量を計算するバンプマップ処理（５００ｂ）、および
・間接テクスチャ処理（５００ｃ）。
【００３７】
テクスチャ部５００は、透過されたテクスチャ値をテクスチャ環境部６００に出力して、テクスチャ環境処理を行なう（６００ａ）。
【００３８】
テクスチャ部５００は、再循環し、直接および間接テクスチャリングを両方とも実行可能で、単一のレンダリングパス中に、テクスチャマッピング出力シーケンスをブレンディング用にテクスチャ環境部６００に与える。米国特許出願番号０９／７２２，３８２、名称「グラフィクスシステムにおいて直接および間接テクスチャを処理するための方法および装置」（代理人整理番号７２３−９６１）および２０００年８月２３日出願の対応仮出願番号６０／２２６，８９１を参照のこと。両出願は、本願に引用によって合体される。
【００３９】
テクスチャ環境部６００は、ポリゴンとテクスチャカラー／アルファ／デプスをブレンドし、テクスチャフォグ処理（６００ｂ）をも行って、インバースレンジに基づくフォグ効果を達成する。テクスチャ環境部６００は、複数のステージを提供して、たとえばカラー／アルファ・モジュレーション、エンボス、ディテールテクスチャリング、テクスチャスワッピング、クランピング、およびデプスブレンディングに基づいて、他の興味をそそる様々な環境関連の機能を行うことができる。
【００４０】
ピクセルエンジン７００は、デプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を行う。本例において、ピクセルエンジン７００は、組み込み（オンチップ）フレームバッファメモリ７０２にデータを記憶する。グラフィックスパイプライン１８０は、１以上の組み込みＤＲＡＭメモリ７０２を含んでもよく、フレームバッファの内容および／またはテクスチャ情報をローカルに記憶する。現在有効なレンダリングモードによっては、Ｚ比較７００ａ’は、グラフィックスパイプラインの早い段階において行われることもできる（たとえば、アルファブレンディングが不要であれば、ｚ比較は早い段階で行うことができる。）。ピクセルエンジン７００は、コピー処理７００ｃを含む。これは、オンチップフレームバッファの内容をメインメモリに周期的に書き込むものであり、表示／ビデオインターフェース部１６４がアクセスできるようにする。このコピー処理７００ｃを用いて、組み込みフレームバッファ７０２の内容からテクスチャまでを、メインメモリ１１２にコピーすることもでき、動的なテクスチャ合成効果が得られる。アンチエイリアシングやその他のフィルタリングは、コピーアウト処理中に行うことができる。（最終的にはメインメモリ１１２に記憶される）グラフィックスパイプライン１８０のフレームバッファ出力は、フレーム毎に、表示／ビデオインターフェース部１６４によって読み出される。表示制御部／ビデオインターフェース１６４は、ディジタルＲＧＢピクセル値を与えて、ディスプレイ１０２に表示する。コピーアウトパイプラインは、ピクセルエンジン７００の一部であってもよく、このコピーアウトパイプラインにより、組み込みフレームバッファ７０２の内容の一部または全部を、単一のレンダリングパス内において、テクスチャとして、メインメモリ１１２にコピーアウトすることができる。そして、テクスチャ部５００は、コピーアウトされたテクスチャをテクスチャメモリ５０２に読み出して、テクスチャマッピングの付加的な視覚化を行なう際にこれをフレームバッファの内容として用いてもよい。システム５０が、たとえば、組み込みフレームバッファ７０２に入れてレンダリングされたアルファ情報をコピーアウトして、このアルファ情報をテクスチャとしてテクスチャマッピングの際に適用して、組み込みフレームバッファの内容に加えることも可能である。これらすべては、同一のレンダリングパス内で行なわれる。米国特許出願番号０９／７２２，６６３、名称「内部フレームバッファと主メモリ間でのコピーアウト変換を有するグラフィクスシステム」（代理人整理番号７２３−９６３）および２０００年８月２３日出願のその対応仮出願番号６０／２２７，０３０を参照のこと。両出願は、本願に引用によって合体される。
【００４１】
＜Ｎ個のアルファ比較の論理結合＞
同時係属出願番号０９／７２２，３６７、ドレビン他、「グラフィクスシステム用再循環シェードツリーブレンダ」（代理人参照番号７２３−９６８）に記載されているように（この出願による図面を含むすべての開示は、本願に引用によって合体される）、再循環シェーダの実施例６０２（図６〜１２ｂ参照）は、単一のレンダリングパス内におけるアルファテスト結果の論理結合を含む、様々なアルファ関数に対応している。本実施例において、アルファ関数は、以下のいずれか一つの演算を用いて、ソースアルファを基準アルファと比較する。
・常に
・決して〜ない
・不等
・等しい
・未満
・以上
・以下
・超える
本実施例において、２つの関数は、以下のものを用いて結合される。
・ＡＮＤ
・ＯＲ
・ＸＯＲ
・ＸＮＯＲ
ピクセルクワッド内のすべての有効なピクセルがアルファテストに失敗する場合は、当該クワッドは破棄され、したがって、フレームバッファ７０２は更新されない。なお、本実施例において、（再循環論理の一部である）比較器６７４を用いてアルファチャンネル比較が行なわれるにもかかわらず、アルファ比較演算は、再循環ステージの一部ではなく、むしろ、再循環が完了した後に行なわれるものである点に注意されたい。以下は、実施することが可能な例である。
例１
Ａｓｒｃ＞Ａｒｅｆ０  ＡＮＤ  Ａｓｒｃ＜Ａｒｅｆ１
例２
Ａｓｒｃ＞Ａｒｅｆ０  ＯＲ  Ａｓｒｃ＜Ａｒｅｆ１
例３
Ａｓｒｃ＞Ａｒｅｆ  ＯＲ  Ａｓｒｃ＜−Ａｒｅｆ
【００４２】
このように、（たとえば、非再循環アルファ比較と結合して）再循環シェーダ６０２のアルファ機能を用いて、シェードツリーに類似した透過ツリーを提供することができる。特に、再循環シェーダ６０２のアルファ機能を用いて、Ｎ個の論理アルファ処理をＭ個のアルファ入力に対して行なうことができる。ここで、ＮおよびＭは、いかなる整数であってもよい。アルファ比較およびアルファ論理演算を用いて、たとえば、漫画のアウトライニングなどのフォトリアリスティックでない効果を提供することができる。
【００４３】
＜漫画のアウトライニング技術の例＞
図１４および１５は、漫画のキャラクタに境界線または輪郭線を付けるのが望ましいことを示す。図１４の漫画のキャラクタ例１３００は、シルエットの輪郭１３０２に付けられた境界線を有する。シルエットの輪郭１３０２により、画像の明確性が向上して手書きの漫画や漫画本形式の画像を再現するといった「漫画のアウトライニング」効果が生じる。
【００４４】
図１４は、この漫画のキャラクタ１３００が、右手、手首、および上腕部を有し、自身の前で上腕を曲げている状態であることを示している。漫画作家は、右手、手首、および上腕部の回りの輪郭に対しても、たとえここに示す当該キャラクタの姿勢ではそれがシルエット輪郭というよりは内部輪郭であるにもかかわらず、境界線を付ける。キャラクタのシルエット輪郭１３０２だけに漫画のアウトライニングを適用するのであれば、漫画のキャラクタ１３００の部位は、消えてしまったり、不明確になってしまう恐れがあるということを、図１４は示している。見る者は、（ぬり絵本や、手書きの動画キャラクタおよび／または漫画本の経験から）手、手首、および上腕をはっきり区別するために、これらにも境界線が付けられていることを期待する。
【００４５】
漫画のキャラクタ１３００が手書きであるかのように見せるためには、境界線をシルエット輪郭だけでなく、一定の内部輪郭３０４に対しても付けるようにするのが有用であろう。一定の内部輪郭とは、すなわち、本例においては、自身の前で折り曲げているキャラクタの手、手首、および上腕部を規定する内部輪郭に該当する。図１５は、これら内部輪郭３０４に境界線が付けられたキャラクタ１３００を示す。これら内部輪郭３０４は、キャラクタ１３００が腕を挙げて伸ばした状態であればシルエット輪郭となるが、図１５の腕の向きでは、内部輪郭である。
【００４６】
この問題を解決する方法として、異なるオブジェクトまたはオブジェクトの部分に対して異なるＩＤ値を割り当てて、レンダリング処理中にＩＤ値とピクセルとを関連付けることによって、どのピクセルが異なるオブジェクトまたはオブジェクトの部分を表すかを追跡するという方法がある。このような識別値は、一例として、フレームバッファ７０２内にある、通常はアルファ情報を符号化するために用いられるビットを当てることによって、割り当てることができる。割り当てられた識別値は、ピクセル位置において境界線を描くか否かを決定するために用いられてもよい。たとえば、システムは、ピクセルの識別値を、近傍の（たとえば、隣接する）ピクセルの識別値と比較してもよい。２つの隣接ピクセルの識別値が所定の関係にある場合には、境界線は描かれない。識別値が同一の場合は、２つのピクセルは同一面上にあり、境界線は描かれない。２つの隣接するピクセルの識別値が、異なるオブジェクトまたはオブジェクトの異なる部分が重なっている旨示すような、他の所定の関係にある場合には、境界線が描かれる。
【００４７】
図１６〜１８は、一例を示す。図１６は、３つのオブジェクト部分１３２０，１３２２，１３２４を備えるオブジェクト１３１９を示す。図１７は、同一のオブジェクト１３１９の平面図を示す。オブジェクト部分１３２０は正方形であり、オブジェクト部分１３２２は円であり、オブジェクト部分１３２４は円錐である。グラフィックデザイナが、円錐１３２４が視覚的に正方形１３２０と交わるところには境界線３３０（図１６参照）を描きたいが、円錐が円１３２２と交わるところや円が正方形と交わるところには描きたくないと仮定する。
【００４８】
この例において、正方形１３２０、円１３２２、および円錐１３２４内のピクセルは、それぞれ異なる識別値を用いて符号化される。たとえば、正方形１３２０内のピクセルは、識別値「１」によって符号化され、円１３２２内のピクセルは、識別値「２」によって符号化され、円錐１３２４内のピクセルは、識別値「３」によって符号化される。図１８は、符号化された情報を記憶するフレームバッファ７０２のアルファ部分の例を示す。影付けされたセルは、隣接アルファ／ＩＤ値間の差である２（またはそれ以上）に基づいて境界線カラーが適用されるであろうセルを示す。
【００４９】
アルファおよびカラー画像がフレームバッファ７０２に入れてレンダリングされた後のピクセル後処理フェーズにおいて、フレームバッファ内の様々な識別値がテストされる。隣接ピクセルとして識別値が同一であるピクセル（このようなピクセルはすべて同一面上にある）に関しては、境界線は描かれない。また、一定の基準または基準セット分だけ隣接ピクセルの識別値と異なる識別値をピクセルが有している場合には、境界線は描かれない（たとえば、ピクセルｋの識別値が２未満だけピクセルｋ＋１の識別値と異なってる場合には、境界線は描かれない）。しかしながら、一定の別の基準または基準セット分だけ隣接ピクセルの識別値と異なる識別値をピクセルが有している場合には、境界線が描かれる（たとえば、ピクセルｋの識別値が２以上だけピクセルｋ＋１の識別値と異なってる場合には、ピクセルｋに境界線が描かれてもよい）。
【００５０】
図１９は、境界線を描くためのピクセル後処理ルーチン１３５０の例のフローチャートである。ルーチン１３５０は、ループ（ブロック１３５２〜１３６２）を含み、このループは、フレームバッファ７０２に記憶された画像内の各ピクセル［ｉ］［ｊ］について行なわれる。上述したように、画像生成処理は、画像をフレームバッファに入れてレンダリングする一環として、通常はアルファ値を記憶するために割り当てられるフレームバッファビット内のオブジェクトの別個の各部分に対して、識別値を設定してもよい。ルーチン１３５０のテストは、これらのアルファ（現時点では、ＩＤ）値をテストして、境界線を描くか否かを決定する。この例において、ルーチン１３５０は、ピクセル［ｉ］［ｊ］のアルファ（ＩＤ）値を取り出すとともに、隣接ピクセル（すなわち、ピクセル［ｉ−１］［ｊ］およびピクセル［ｉ］［ｊ−１］）のアルファ（ＩＤ）値をも取り出す（ブロック１３５２）。その後、ルーチン１３５２は、（ブロック１３５４において）以下の計算を行なって、ピクセル［ｉ］［ｊ］のアルファ（ＩＤ）値と隣接ピクセルのアルファ（ＩＤ）値との差分を判断する。
ｄｉｆｆＸ＝ＡＢＳ（Ａｌｐｈａ［ｉ］［ｊ］−Ａｌｐｈａ［ｉ−１］［ｊ］
ｄｉｆｆＸ＝ＡＢＳ（Ａｌｐｈａ［ｉ］［ｊ］−Ａｌｐｈａ［ｉ］［ｊ−１］
【００５１】
その後、ルーチン１３５０は、計算の結果得られた差分値ｄｉｆｆＸおよｄｉｆｆＹをテストして、いずれかが所定の差分（たとえば、任意の定数閾値または１などのプログラム可能な閾値）を超えるか否かを判断する（ブロック１３５６）。差分値のうち少なくとも１つが所定の差分を超える場合には、ルーチン１３５０は、ピクセル［ｉ］［ｊ］のカラーを境界線カラーに設定する（ブロック１３５８）。したがって、アルファの傾きが−１から＋１の場合、本実施例において、ピクセルは同一面上にあると考えられる。ステップ１３５２〜１３５８は、繰り返されて、画像内の各ピクセルに対して行なわれる（ブロック１３６０，１３６２）。
【００５２】
ルーチン１３５０の変形例として、或るオブジェクトが特別のアルファ識別値（たとえば、０ｘ００）を用いて符号化されて、当該オブジェクト内のピクセルは境界線を描く際には無視されるように指定することができる（図２０参照）。これは、たとえば、境界線のないオブジェクトをビットマップとしてレンダリングする場合に有用である（たとえば、爆発を表す動画の場合）。
【００５３】
図２１は、図１４および１５に示すオブジェクト１３００上に効率的に境界線を描くために、上記のルーチン１３５０がどのように適用できるかを示す。この例において、オブジェクト１３００の異なる部分は、異なるアルファ（ＩＤ）値を用いて符号化される。たとえば、オブジェクト１３００は、２本の腕１３１１ａ，１３１１ｂおよび胴１３０９を含んでもよい。各腕は、手１３１３，手首部１３１０，下腕部１３１２，肘部１３０８，上腕部１３１０，肩部１３１７を含んでもよい。これら様々な各部分は、異なるアルファＩＤを用いて以下のように符号化することができる。
【表１】
0004740476.tif 000002
【００５４】
上記のアルファＩＤ符号化例によって、ルーチン１３５０は、図２１の濃い色の線で示す境界線を描くことになるが、反対部分が交わる他の（点線の）部分では境界線を描かない。
【００５５】
上記符号化は、同一のオブジェクト１３００の接続部が交わる部分に境界線を付けるために用いることもできる。従来のぬり絵本や、手書きの動画漫画などは、関節部分をよりはっきりとさせるためや、筋肉が発達しているような感じを出すために、このような自己交差部分に漫画のアウトライニングを付ける場合もある。たとえば、図２２〜２４は、キャラクタ１３００の関節部１３０８（すなわち、肘）の拡大図であって、関節部は、キャラクタの上腕１３１０を前腕１３１２と連結している。上述の符号化を用いて、図２３および２４に示すように、外肢１３１０，１３１２とが互いに（たとえば接触して）隣接して方向付けされるように、関節部１３０８が曲げられて、ルーチン１３５０は、（下腕１３１０のアルファＩＤと上腕１３１２のアルファＩＤとの差が１より大きいということに基づいて）境界線分１３１６を体部位１３１０と１３１２とが交わる交差部分に付ける。
【００５６】
＜システム５０上で実施される漫画のアウトライニング処理の例＞
図２５は、漫画のアウトライニングを提供するためにはシステム５０をどのように用いればよいかを示す高次のフローチャート例であり、図２６は、漫画のアウトライニングパイプラインを実施するためにはシステム５０をどのように構成することができるかを示す例である。
【００５７】
図２５を参照して、漫画の輪郭線画像化または同様の効果を行なうためには、アプリケーションは、フレームバッファ７０２を、アルファチャンネルを含むように設定する（ブロック１４００）。米国特許出願番号０９／７２６，２２７、名称「再構成可能なピクセルフォーマットを有する組み込みフレームバッファを有するグラフィックスシステム」（代理人整理番号７２３−９５７）および２０００年８月２３日出願の対応仮出願番号６０／２２６，９１０を参照のこと。両出願は、本願に引用によって合体される。そして、システム５０は、シーンをフレームバッファ７０２に入れて描画するように制御される（ブロック１４０２）。しかしながら、この処理中に、各頂点情報の一部としてメインプロセッサ１１０から与えられるであろうオブジェクト識別子は、たとえば、システム５０のアルファチャンネルに書き込まれ、フレームバッファ７０２内のアルファ位置に記憶される。
【００５８】
面にＩＤを割り当てる場合には、細かい注意が要求される。本実施例のアルファチャンネルは、８ビットに限定されているので、１シーン内に２５６個以上もの異なるオブジェクトがある場合には、ＩＤを再利用する必要があるということもあり得る。本実施例では、アルファは７ビットしか利用可能ではない。というのは、８ビット目は、閾値計算のサインビットとして利用されるからである。このことは、同一のＩＤを有する異なるオブジェクトが重ならなければ、問題ない。へこんだオブジェクト同士が重なる部分にシルエットが欲しい場合は、より複雑なＩＤおよび閾値システムを利用すればよい。これを実施する１つの方法として、１だけ異なるＩＤを同一のオブジェクトの異なる部分に割り当て、重なるであろう部分については、少なくとも２つの合計差分を有するようにするという方法がある。そして、閾値関数は、少なくとも２つの差分に対して、シルエットを作成する必要があるだけである。上述の図１９を参照のこと。もちろん、異なる実施例であれば、異なる限定があり、これら特定の仕組みは、一例にすぎない。
【００５９】
画像の所望する部分がフレームバッファ７０２に入れてレンダリングされると、ピクセルエンジン７００は、フレームバッファのアルファ画像を外部フレームバッファまたは他のバッファ内のテクスチャにコピーするように制御される（ブロック１４０４、図１４参照）。このようなコピーアウトは、たとえば、ＩＡ８テクスチャフォーマットに入れることもできる。同期やメモリのコヒーレンスを確保するために、適切な対策が行なわれる。米国特許出願番号０９／７２６，２２７、名称「レンダリングモードに基づいた隠面処理の動的な再構成」および２０００年８月２３日出願の対応仮出願番号６０／２２６，８９０に記載された同期トークン技術を参照のこと。両出願は、本願に引用によって合体される。
【００６０】
アルファテクスチャを内部のフレームバッファからうまくコピーアウトして、テクスチャメモリ５０２に読み込んだ場合（図１４参照）、システム５０は、グラフィックスプロセッサ１１４を再構成して、隣接ピクセルアルファ間の差分に基づいて、輪郭線カラーをフレームバッファ７０２内のピクセルに書き込む（ブロック１４０６）。上述の図１９を参照のこと。このような漫画の輪郭線を描く処理は、たとえば、ピクセルアルファ値を読み出し、これらのアルファ値を修正し、ブレンドパラメータとして再びアルファを書き戻すことを含んでもよい。テクスチャ座標の１対と２つの異なるテクスチャマトリックスとを用いて、隣接アルファ値をアルファテクスチャからルックアップすることができる。一方のマトリックスを単位行列として設定し、他方を単位行列に変換を加えたものとして設定することができる。ブレンドテスト／比較は、２つの一般的なアルファ比較関数にＯＲまたはＡＮＤのような第３の論理計算を組み合わせて用いて、実施することができる。これによって、単に大小ではなく、範囲内外のテストが可能となる。
【００６１】
より詳細には、差分計算（たとえば、［ａ0 −ａ1 ］の絶対値であって、ａ0 はあるピクセルのアルファ値、ａ1 は隣接ピクセルのアルファ値である）を行うためには、一方のアルファ値を他方のアルファ値から減算し、未クランプの結果をテクスチャ環境部の出力レジスタに書き込むようにテクスチャ環境部６００を設定することができる。閾値を超えるアルファ値を検出するように、テクスチャ環境部６００内のアルファ比較や他の値比較器を設定することができる。
ａｌｐｈａ＝ｔｅｘｔｕｒｅ１−ｔｅｘｔｕｒｅ２
ａｃｏｍｐ１＝ａｌｐｈａ＜−Ｘ
ａｃｏｍｐ２＝ａｌｐｈａ＞Ｘ
ｋｉｌｌｐｉｘｅｌ＝ａｃｏｍｐ１  ＯＲ  ａｃｏｍｐ２
【００６２】
本一実施例において、テクスチャ環境部６００からの未クランプの負の結果は、最上位ビットのセットにより、アルファ値に変換されてもよい。したがって、アルファ差分閾値が２の場合、アプリケーションは、アルファ差分が１より大きく（最大−２）より小さいピクセルに対して輪郭線カラーを書き込むことができる。ここで、最大値は２５５に等しい。比較結果に基づいて、レジスタからのカラー値にブレンドするようにテクスチャ環境部６００を設定することができる。メインプロセッサ１１０は、このカラー値レジスタを所望の値に設定することもできる（たとえば、黒のアウトライニング効果用に黒を、青のアウトライニング効果用に青を、など）。
【００６３】
本一実施例において、輪郭線の書き込みは、テクスチャ環境部６００内の再循環シェーダの２つの再循環パスにおいて行なうことができる。第１のパスにおいて（ブロック１４０８）、水平アウトライニングがフレームバッファ７０２に入れて描かれる。これは、アルファテクスチャ画像を１ピクセル（テクセル）垂直に移動させるように設定されている変換部３００によって実行される、テクスチャ座標変換マトリックス乗算に基づく。垂直アウトライニングを書き込むために用いられる第２のパスにおいて（ブロック１４１０）、アルファ画像を１ピクセル（テクセル）水平に移動させるように、テクスチャマトリックスを修正することができる。１ピクセルよりも大きく移動させれば、より太い輪郭線を描くこともできるが、輪郭線が太すぎると、見た感じが異常となる場合もある。
【００６４】
水平および垂直輪郭線が両方ともフレームバッファ７０２に書き込まれると、フレームバッファはコピーアウトされて、表示することができるようになる（ブロック１４１２）。
【００６５】
＜例＞
以下は、システム５０を制御して漫画のアウトライニングを行なうのに用いることができるプログラミングインターフェースコールのセット例である。
【表２】
0004740476.tif 000003
【００６６】
＜ＧＸＳｅｔＴｅｘＣｏｐｙＳｒｃ＞
＜説明＞
この関数は、組み込みフレームバッファ（ＥＦＢ）のソースパラメータをテクスチャ画像コピーに設定する。この機能は、グラフィックスプロセッサ（ＧＰ）を用いてテクスチャを生成する際に有用である。
【００６７】
ＧＰは、ＧＸＣｏｐｙＴｅｘで指定されたタイル型テクスチャにテクスチャをコピーする。ＧＰは、タイル幅の倍数でない画像幅や高さが、コピーされた画像の未定義データでパディングされるように、タイル（３２バイト）を常にコピーする。また、メインメモリ内の割り当てられた画像サイズは、３２バイトの倍数でなければならない。ＧＸＧｅｔＴｅｘＢｕｆｆｅｒＳｉｚｅを参照のこと。
【００６８】
＜引数＞
ｌｅｆｔ    最も左にある、コピーソースピクセルであって、２ピクセルの倍数
ｔｏｐ    最も上にある、コピーソース行であって、２行の倍数
ｗｄ    コピー幅であって、２ピクセルの倍数
ｈｔ    コピー高さであって、２行の倍数
【００６９】
＜ＧＸＣｏｐｙＴｅｘ＞
＜説明＞
この関数は、組み込みフレームバッファ（ＥＦＢ）の内容を、メインメモリ内のテクスチャ画像バッファｄｅｓｔにコピーする。この機能は、グラフィックスプロセッサ（ＧＰ）を用いてテクスチャを生成する際に有用である。クリアフラグがＧＸ＿ＴＲＵＥの場合には、ＥＦＢは、コピー処理中に、現在のクリアカラーにクリアされる（ＧＸＳｅｔＣｏｐｙＣｌｅａｒ参照）。ソース画像は、ＧＸＳｅｔＴｅｘＣｏｐｙＳｒｃによって記述される。コピー処理中に、ＥＦＢの内容はテクスチャフォーマットに変換される。テクスチャフォーマットおよびフィルタをイネーブルするオプションボックスは、ＧＸＳｅｔＴｅｘＣｏｐｙＤｓｔを用いて設定される。
【００７０】
割り当てられたバッファは、パディングされて、ＸとＹとのテクスチャタイル（１タイル当たり３２バイト）となる。パディング後のサイズを決定するためには、関数ＧＸＧｅｔＴｅｘＢｕｆｆｅｒＳｉｚｅが用意されている。
【００７１】
クリアフラグは、フレームバッファがコピー処理中にクリアされるべきことを示す。フレームバッファは、ＧＸＳｅｔＣｏｐｙＣｌｅａｒによって指定された定数値にクリアされる。
【００７２】
＜引数＞
ｄｅｓｔ  ：メインメモリ内のテクスチャ画像バッファへのポインタ。このポインタは、３２バイトに調節される。
ｃｌｅａｒ  ：このフラグがＧＸ＿ＴＲＵＥの場合、フレームバッファはコピー中にクリアされなければならない。
【００７３】
＜ＧＸＬｏａｄＴｅｘＯｂｊＰｒｅＬｏａｄｅｄ＞
＜説明＞
この関数は、予めロードされたテクスチャを記述する状態を８つのハードウェアレジスタセットのうちの１つにロードする。これが生じる前に、テクスチャオブジェクトであるｏｂｊは、ＧＸＩｎｉｔＴｅｘＯｂｊまたはＧＸＩｎｉｔＴｅｘＯｂｊＣＩを用いて初期化されなければならない。ｉｄパラメータは、テクスチャ状態レジスタセットを参照する。テクスチャは、ＧＸＰｒｅＬｏａｄＥｎｔｉｒｅＴｅｘｔｕｒｅを用いて、事前にロードされなければならない。
【００７４】
ロードされると、テクスチャは、どのテクスチャ環境（Ｔｅｖ）ステージにおいても、ＧＸＳｅｔＴｅｖＯｒｄｅｒ関数を用いて利用することができる。ＧＸＩｎｉｔは、初めに、ＧＸＳｅｔＴｅｖＯｒｄｅｒを呼び出して、ＧＸ＿ＴＥＸＭＡＰ０をＧＸ＿ＴＥＶＳＴＡＧＥ０に、ＧＸ＿ＴＥＸＭＡＰ１をＧＸ＿ＴＥＶＳＴＡＧＥ１に関連付けるといった、単一のテクスチャパイプラインを作成する。
【００７５】
ここで、ＧＸＬｏａｄＴｅｘＯｂｊＰｒｅＬｏａｄｅｄは、ＧＸＳｅｔＴｅｘＲｅｇｉｏｎＣａｌｌＢａｃｋによって設定された関数を呼び出さない（また、テクスチャがカラーインデックスフォーマットの場合にはＧＸＳｅｔＴｌｕｔＲｅｇｉｏｎＣａｌｌＢａｃｋによって設定された関数を呼び出さない）ことに注意されたい。なぜなら、領域は明示的に設定されるからである。しかしながら、これらのコールバック関数は、予めロードするすべての領域を知っていなければならない。ＧＸＩｎｉｔによって設定されるデフォルトのコールバックは、予めロードされた領域はないと推定する。
【００７６】
＜引数＞
ｏｂｊ  ：テクスチャおよびその属性を記述するテクスチャオブジェクトをポイントする。
ｒｅｇｉｏｎ  ：テクスチャメモリの領域を記述する領域オブジェクトをポイントする。
ｉｄ  ：テクスチャ環境（Ｔｅｖ）ステージにおいて参照されるテクスチャを指名する。
【００７７】
＜ＧＸＩｎｉｔＴｅｘＯｂｊ＞
＜説明＞
この関数は、非カラーインデックステクスチャのテクスチャオブジェクトを初期化または変更するために用いられる。テクスチャオブジェクトは、テクスチャに関連するすべてのパラメータを記述するために用いられ、このパラメータには、サイズ、フォーマット、ラップモード、フィルタモードなどが含まれる。テクスチャオブジェクトにメモリを提供するのはアプリケーションの任務である。初期化されると、テクスチャオブジェクトは、ＧＸＬｏａｄＴｅｘＯｂｊを用いて８つのアクティブテクスチャＩＤのうちの１つと関連付けられる。
【００７８】
カラーインデックステクスチャのテクスチャオブジェクトを初期化するには、ＧＸＩｎｉｔＴｅｘＯｂｊＣＩを用いる。
【００７９】
ミップマップフラグがＧＸ＿ＴＲＵＥの場合には、テクスチャはミップマップであり、テクスチャは３重線形補間される。ミップマップフラグがＧＸ＿ＦＡＬＳＥの場合には、テクスチャはミップマップではなく、テクスチャは２重線形補間される。フィルタモードや他のミップマップコントロールを無視するには、ＧＸＩｎｉｔＴｅｘＯｂｊＬＯＤを参照のこと。
【００８０】
＜引数＞
【表３】
0004740476.tif 000004
【００８１】
＜ＧＸＩｎｉｔＴｅｘＯｂｊＬＯＤ＞
＜Ｃ言語仕様＞
【挿入１】
0004740476.tif 000005
【００８２】
＜説明＞
この関数は、テクスチャの詳細レベル（ＬＯＤ）コントロールを、テクスチャオブジェクトに対して明示的に設定する。テクスチャオブジェクトにメモリを提供するのは、アプリケーションの任務である。ＧＸＩｎｉｔＴｅｘＯｂｊまたはＧＸＩｎｉｔＴｅｘＯｂｊＣＩを用いてテクスチャオブジェクトを初期化する際に、ミットマップフラグに基づいて、この情報をデフォルト値に設定する。この関数により、プログラマは、これらデフォルトをオーバーライドすることができる。なお、この関数の呼び出しは、特定のテクスチャオブジェクトに対するＧＸＩｎｉｔＴｅｘＯｂｊまたはＧＸＩｎｉｔＴｅｘＯｂｊＣＩの後でなければならないことに注意されたい。
【００８３】
グラフィックスハードウェアによって計算されたＬＯＤは、ｌｏｄ＿ｂｉａｓパラメータを用いてバイアスをかけることができる。このｌｏｄ＿ｂｉａｓは、計算されたｌｏｄに加算され、その結果はｍｉｎ＿ｌｏｄとｍａｘ＿ｌｏｄの間でクランプされる。ｂｉａｓ＿ｃｌａｍｐがイネーブルされると、ｌｏｄ＿ｂｉａｓの効果は、ポリゴンがビュー方向に対してより垂直になるにつれて小さくなる。これにより、このような状態のテクスチャが鮮明になり過ぎることを防止するが、斜めのポリゴンに対してはＬＯＤバイアスを許容する。
【００８４】
＜引数＞
【表４】
0004740476.tif 000006
【００８５】
＜ＧＸＩｎｉｔＴｅｘＰｒｅＬｏａｄＲｅｇｉｏｎ＞
＜説明＞
【００８６】
この関数は、予めロードできるように、テクスチャメモリ（ＴＭＥＭ）領域オブジェクトを初期化する。この領域は、アプリケーションによって、ＴＭＥＭ内に割り当てられ、予めロードされたバッファとしてのみ用いることができる。キャッシュ領域は、ＧＸＩｎｉｔＴｅｘＣａｃｈｅＲｅｇｉｏｎを用いて割り当てられなければならない。予め割り当てられたテクスチャに関して、当該領域のサイズは、テクスチャのサイズと一致しなければならない。アプリケーションにより、多くの領域オブジェクトを作成することができ、領域オブジェクトのうちの幾つかは重なり合う可能性がある。しかしながら、２つの重なり合う領域が同時にアクティブにはなり得ない。
【００８７】
領域の最大サイズは、５１２Ｋである。
【００８８】
ＧＸＩｎｉｔは、予めロードするための領域を作成しない。したがって、予めのロードが必要な場合は、アプリケーションが適切な領域を割り当てなければならない。また、ＧＸＩｎｉｔＴｅｘＣａｃｈｅＲｅｇｉｏｎおよびＧＸＳｅｔＴｅｘＲｅｇｉｏｎＣａｌｌＢａｃｋを用いて、キャッシュ領域やそのアロケータを作成する必要がある。なぜなら、新たな領域は、デフォルトのテクスチャメモリ構成を破壊する場合があるからである。
【００８９】
＜引数＞
【表５】
0004740476.tif 000007
【００９０】
＜漫画のアウトライニングを実施するソフトウェア制御された処理の例＞
以下のプログラム部分は、グラフィックスパイプラインを制御して漫画のアウトライニング効果を行なうために用いることができる。
【挿入２】
0004740476.tif 000008
0004740476.tif 000009
【００９１】
＜互換可能な他の実施例＞
上述のシステム構成要素５０のうちのあるものは、上述の家庭用ビデオゲームコンソール以外であっても実施できる。たとえば、システム５０のために書き込まれているグラフィックスアプリケーションなどのソフトウェアを、システム５０をエミュレートするかまたはそれと互換性のある他の構成を用いたプラットフォーム上で実行することができる。他のプラットフォームが、システム５０のハードウェアおよびソフトウェア資源の一部または全部をうまくエミュレート、模倣、および／または提供できるのであれば、当該他のプラットフォームは、ソフトウェアをうまく実行することができるであろう。
【００９２】
一例として、エミュレータは、システム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供してもよい。エミュレータシステムは、アプリケーションソフトウェアを書き込む対象であるシステムのハードウェアおよび／またはソフトウェア構成要素の一部またはすべてをエミュレートするハードウェアおよび／またはソフトウェア構成要素を含んでいてもよい。たとえば、エミュレータシステムは、パーソナルコンピュータなどの汎用デジタルコンピュータを備えることができ、これによって、システム５０のハードウェアおよび／またはファームウェアを模倣するソフトウェアエミュレータプログラムが実行される。
【００９３】
汎用デジタルコンピュータの中には（たとえば、ＩＢＭまたはマッキントッシュ製パーソナルコンピュータおよびその互換機）、現在、ＤｉｒｅｃｔＸ３Ｄやその他の標準グラフィックスコマンドＡＰＩに対応したグラフィックスパイプラインを提供する３Ｄグラフィックスカードが搭載されているものもある。これらには、また、標準的なサウンドコマンドに基づいて高品質の立体音響を提供する立体音響サウンドカードも搭載されている場合もある。エミュレータソフトウェアを実行させるこのようなマルチメディアハードウェアを搭載したコンピュータは、システム５０のグラフィックス性能およびサウンド性能を近似するに充分な性能を有している場合がある。エミュレータソフトウェアは、パーソナルコンピュータプラットフォーム上のハードウェア資源を制御して、ゲームプログラマがゲームソフトウェアを書き込む対象である家庭用ビデオゲームゲームコンソールプラットフォームの処理性能、３Ｄグラフィックス性能、サウンド性能、周辺性能などを模倣する。
【００９４】
図２７は、エミュレーション処理全体の例を示しており、この処理は、ホストプラットフォーム１２０１と、エミュレータ構成要素１３０３と、記憶媒体６２上に与えられているバイナリ画像を実行可能なゲームソフトウェアとを用いる。ホスト１２０１は、汎用または専用デジタルコンピューティング装置であってもよく、たとえばパーソナルコンピュータやビデオゲームコンソールなど、充分な計算能力を備えたプラットフォームが挙げられる。エミュレータ１３０３は、ホストプラットフォーム１２０１上で実行されるソフトウェアおよび／またはハードウェアであってもよく、コマンドやデータなどの記憶媒体６２からの情報をリアルタイムで変換して、ホスト１２０１が処理可能な形式にすることができる。たとえば、エミュレータ１３０３は、システム５０が実行しようとする「ソース」バイナリ画像プログラム命令を記憶媒体６２から取り出して、実行可能な形式またはホスト１２０１によって処理可能な形式に当該プログラム命令を変換する。
【００９５】
一例として、ＩＢＭのＰｏｗｅｒＰＣなどの特定のプロセッサを用いたプラットフォーム上で実行するためにソフトウェアが書き込まれており、ホスト１２０１は、異なる（たとえば、インテルの）プロセッサを用いたパーソナルコンピュータである場合、エミュレータ１３０３は、バイナリ画像プログラム命令の１つまたはシーケンスを記憶媒体１３０５から取り出して、これらのプログラム命令を、インテルのバイナリ画像プログラム命令に相当するものに変換する。また、エミュレータ１３０３は、グラフィックス音声プロセッサ１１４によって処理されるグラフィックスコマンドや音声コマンドを取り出しおよび／または生成し、ハードウェアおよび／またはソフトウェアグラフィックスおよびホスト１２０１で利用可能な音声処理資源によって処理可能な形式に、これらコマンドを変換する。一例として、エミュレータ１３０３は、これらのコマンドを、ホスト１２０１の特定のグラフィックスおよび／またはサウンドハードウェアによって処理可能なコマンドに変換する（たとえば、ＤｉｒｅｃｔＸ、ＯｐｅｎＧＬおよび／またはサウンドＡＰＩを用いる）。
【００９６】
エミュレータ１３０３または図２５のアウトライニング処理をを実施する他のプラットフォームは、再循環シェーダを有していなくてもよく、その代わりに、個別のシェーディング／ブレンディングステージのパイプラインを用いてアルファ比較演算を実施してもよい。同様に、他の実施例においては、アルファやカラー情報を同一のバッファに記憶させなくてもよく、その代わりに、この情報を異なるフレームバッファに記憶させてもよい。たとえば、オブジェクトＩＤを与えるアルファ「画像」は、メインメモリのマップとして記憶させてもよい。事後処理は、テクスチャリングを用いることによって行われる必要はないが、その代わりに、汎用プロセッサによって行ってもよい。輪郭線のレンダリングは２つのパスで行わなくてもよい。他の実施例においては、水平および垂直輪郭線は、同一のパスでレンダリングされてもよい。
【００９７】
上述のビデオゲームシステムの機能の一部または全部を提供するために用いられるエミュレータ１３０３には、エミュレータを用いて実行される様々なオプションや画面モードの選択を簡略化または自動化するグラフィックユーザインターフェース（ＧＵＩ）が与えられてもよい。一例として、そのようなエミュレータ１３０３は、ソフトウェアが本来対象としていたホストプラットフォームに比較して、拡張された機能をさらに含んでいてもよい。
【００９８】
図２８は、エミュレータ１３０３と共に用いられるのに適したエミュレーションホストシステム１２０１を示す。システム１２０１は、処理部１２０３と、システムメモリ１２０５とを含む。システムバス１２０７は、システムメモリ１２０５から処理部１２０３までを含む様々なシステム構成要素を結合する。システム１２０７は、メモリバスまたはメモリコントローラ、周辺機器バス、ローカルバスなど、様々なバスアーキテクチャのいずれかを用いたものを含む、数種のバス構成のいずれであってもよい。システムメモリ１２０７は、読み出し専用メモリ（ＲＯＭ）１２５２と、ランダムアクセスメモリ（ＲＡＭ）１２５４とを含む。ベーシック入出力システム（ＢＩＯＳ）１２５６は、パーソナルコンピュータシステム１２０１内の要素間において情報を転送するのを助ける基本ルーチンを含んでおり、ＲＯＭ１２５２に記憶される。システム１２０１は、様々なドライブや、関連したコンピュータが読み取り可能な媒体をさらに含む。ハードディスクドライブ１２０９は、（典型的には固定された）磁気ハードディスク１２１１からの読み出しやそれに対する書き込みを行う。付加的な（選択可能な）磁気ディスクドライブ１２１３は、着脱可能な「フロッピー」などの磁気ディスク１２１５からの読み出しやそれに対する書き込みを行う。随意のディスクドライブ１２１７は、ＣＤＲＯＭなどの随意の媒体のような着脱可能な光ディスク１２１９からの読み出しや、構成によってはそれに対する書き込みも行う。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、それぞれ、ハードディスクドライブインターフェース１２２１および光ドライブインターフェース１２２５によって、システムバス１２０７に接続している。ドライブやそれに関連するコンピュータが読み出し可能な媒体によって、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、ゲームプログラムなどのパーソナルコンピュータシステム１２０１のためのデータが不揮発的に記憶される。他の構成においては、コンピュータが読み出し可能な他の種類の媒体が用いられていてもよく、コンピュータによってアクセス可能なデータを記憶できる媒体（たとえば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）など）であってもよい。
【００９９】
エミュレータ１３０３を含む多くのプログラムモジュールは、ハードディスク１２１１、着脱可能な磁気ディスク１２１５、光学ディスク１２１９、および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４に記憶されてもよい。そのようなプログラムモジュールは、グラフィックスやサウンドＡＰＩを提供するオペレーティングシステム、１つ以上のアプリケーションプログラム、他のプログラムモジュール、プログラムデータ、ゲームデータを含んでもよい。ユーザは、コマンドや情報を、キーボード１２２７、ポインティングデバイス１２２９、マイク、ジョイスティック、ゲームコントローラ、衛星アンテナ、スキャナなどの入力装置を通じて、パーソナルコンピュータシステム１２０１に対して入力する。このような入力装置は、システムバス１２０７に結合されたシリアルポートインターフェース１２３１を介して処理部１２０３に接続されることが可能であるが、パラレルポートや、ゲームポートファイアワイヤーバス、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースによって接続されてもよい。モニタ１２３３などの表示装置も、ビデオアダプタ１２３５などのインターフェースを介して、システムバス１２０７に接続される。
【０１００】
また、システム１２０１は、インターネットのようなネットワーク１１５２上での通信を確立するための、モデム１１５４などのネットワークインターフェース手段を含んでもよい。モデム１１５４は、内蔵であっても外付けであってもよく、シリアルポートインターフェース１２３１を介してシステムバス１２３に接続される。また、ローカルエリアネットワーク１１５８を介して（または、ワイドエリアネットワーク１１５２、ダイアルアップなどの他の通信路、または他の通信手段を介してもよい）、システム１２０１が遠隔コンピューティング装置１１５０（たとえば、他のシステム１２０１）と通信できるように、ネットワークインターフェース１１５６が与えられてもよい。システム１２０１は、典型的には、プリンタなどの標準周辺機器のような、他の周辺出力装置を含む。
【０１０１】
一例において、ビデオアダプタ１２３５は、Ｍｉｃｒｏｓｏｆｔ製ＤｉｒｅｘｔＸ７．０などのバージョンのような標準３Ｄグラフィックスアプリケーションプログラマインターフェースに基づいて出される３Ｄグラフィックスコマンドに応答して、高速３Ｄグラフィックスレンダリングを提供するグラフィックスパイプラインチップセットを含んでいてもよい。立体音響スピーカセット１２３７も、システムバス１２０７に対して、従来の「サウンドカード」のような音声生成インターフェースを介して接続されている。そのようなインターフェースは、バス１２０７から与えられたサウンドコマンドに基づいて高品質な立体音響を生成するための支援をハードウェアや組み込みソフトウェアに対して行う。このようなハードウェアの機能によって、システム１２０１は、記憶媒体６２に記憶されたソフトウェアを実行するのに充分なグラフィックスおよび音響の速度性能を提供することができる。
【０１０２】
上記の特許、特許出願およびその他の上述の書類のすべての内容は、本明細書に明示的に引用されている。
【０１０３】
本発明は、現時点において最も現実的で最適な実施例と思われるものに関連して説明してきたが、本発明は、開示された実施例に限定されるべきと解釈されるべきではない。たとえば、図示の実施例の目的は、漫画のアウトライニングと共に画像を提供することであるとしたが、上述の柔軟なアルファ比較演算を多くの異なる画像アプリケーション用に用いることが可能である。さらに、二重のアルファ比較を上では説明したが、本願は、単なる２回のアルファ比較のみに限定されない。さらに、好ましい実施例においては、再循環シェーダを使用したが、複数のアルファ比較器を有するパラレルな仕組みを用いることも可能である。したがって、本発明は、添付の請求項の範囲に含まれる様々な変形例や相当する仕組みを含むことを意図している。
【図面の簡単な説明】
【図１】対話式コンピュータグラフィックスシステムの一例の概略図である。
【図２】図１のコンピュータグラフィックスシステムの例のブロック図である。
【図３】図２に示すグラフィックス＆音声プロセッサの例のブロック図である。
【図４】図３に示す３Ｄグラフィックスプロセッサの例のブロック図である。
【図５】図４のグラフィックス＆音声プロセッサの論理フロー図の例である。
【図６】再利用可能な再循環シェーダの例を示す。
【図７】再循環シェーダを用いて実施されるシェーディングパイプラインの例を示す。
【図８】再循環シェーダのブロック図の例を示す。
【図９】再循環シェーダ入力乗算器の例を示す。
【図１０】再循環シェーダの動作ブロック図の例を示す。
【図１１】再循環シェーダの実施例を示す。
【図１２】カラースワップ機能の例を示す。
【図１３】カラースワップ機能の例を示す。
【図１４】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図１５】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図１６】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図１７】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図１８】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図１９】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図２０】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図２１】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図２２】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図２３】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図２４】アルファ情報を用いてオブジェクトＩＤを符号化する、漫画のアウトライニング技術の例を示す。
【図２５】システム５０によって実行される漫画のアウトライニング処理の例を示す。
【図２６】システム５０によって実施される漫画のアウトライニングパイプラインの例を示す。
【図２７】他の代替可能な実施例を示す。
【図２８】他の代替可能な実施例を示す。
【図１】
0004740476.tif 000010
【図２】
0004740476.tif 000011
【図３】
0004740476.tif 000012
【図４】
0004740476.tif 000013
【図５】
0004740476.tif 000014
【図６】
0004740476.tif 000015
【図７】
0004740476.tif 000016
【図８】
0004740476.tif 000017
【図９】
0004740476.tif 000018
【図１０】
0004740476.tif 000019
【図１１】
0004740476.tif 000020
【図１２】
0004740476.tif 000021
【図１３】
0004740476.tif 000022
【図１４】
0004740476.tif 000023
【図１５】
0004740476.tif 000024
【図１６】
0004740476.tif 000025
【図１７】
0004740476.tif 000026
【図１８】
0004740476.tif 000027
【図１９】
0004740476.tif 000028
【図２０】
0004740476.tif 000029
【図２１】
0004740476.tif 000030
【図２２】
0004740476.tif 000031
【図２３】
0004740476.tif 000032
【図２４】
0004740476.tif 000033
【図２５】
0004740476.tif 000034
【図２６】
0004740476.tif 000035
【図２７】
0004740476.tif 000036
【図２８】
0004740476.tif 000037