(57)【要約】      （修正有）【課題】低コストなグラフィックスシステムを用いて実現可能な、非写実的およびその他のイメージング効果における改良を提供する。【解決手段】システムは、３Ｄグラフィックスパイプラインおよび音声デジタル信号プロセッサを含むグラフィックスおよび音声プロセッサを有する。色または不透明度値の後の変更のために用いられる色や不透明度以外のパラメータを、変換ユニット３００のライティング計算を用いて生成することにより、漫画的なライティングおよびその他の非写実的効果を創出することができる。より詳細には、実施例において、テクスチャマッピング動作に用いられるテクスチャ座標を生成するためにライティング計算を使用する。テクスチャマッピング動作により、ライティング演算結果が、漫画的なライティングおよびその他の効果のためのブラシストローク間の選択を行うことが可能になる。【選択図】図１５
2011090699.tif 000002
【特許請求の範囲】
【請求項１】
漫画的なライティングの方法であって、
照明関数を用いて少なくとも１つの色または不透明度値を生成することと、
前記色不透明度値を、少なくとも１つのテクスチャ座標に変換することと、
前記テクスチャ座標を少なくとも１つのテクスチャマッピング動作に用いることと、
前記テクスチャマッピング動作の結果を用いて、動的に生成された漫画画像中の少なくとも１つの可視表面の色または不透明度を変更することとを含む方法。
【請求項２】
前記テクスチャマッピング動作は、前記テクスチャ座標に応じて１次元テクスチャをマッピングすることを含む、請求項１に記載の方法。
【請求項３】
前記テクスチャマッピングは、ブラシストロークを動的ライティング演算出力にマッピングすることを含む、請求項１に記載の方法。
【請求項４】
前記テクスチャ座標は、負の値もとり得ることにより漫画的なバックライトを定義する、請求項１に記載の方法。
【請求項５】
前記ライティング関数は拡散ライティング関数を含む、請求項１に記載の方法。
【請求項６】
前記ライティング関数は鏡面ライティング関数を含む、請求項１に記載の方法。
【請求項７】
前記ライティング関数は距離減衰されるライティング関数を含む、請求項１に記載の方法。
【請求項８】
前記ライティング関数はスポット光ライティング関数を含む、請求項１に記載の方法。
【請求項９】
前記ライティング関数は前記テクスチャマッピング用の第１のテクスチャ座標を定義し、前記ライティング関数以外のソースから前記テクスチャマッピング用の第２のテクスチャ座標が得られる、請求項１に記載の方法。
【請求項１０】
漫画的なライティングを行うグラフィックシステムであって、
照明関数を用いて少なくとも１つの色または不透明度値を生成する手段と、
前記色不透明度値を、少なくとも１つのテクスチャ座標に変換する手段と、
前記テクスチャ座標を少なくとも１つのテクスチャマッピング動作に用いる手段と、
前記テクスチャマッピング動作の結果を用いて、動的に生成された漫画画像中の少なくとも１つの可視表面の色または不透明度を変更する手段とを備える、グラフィックシステム。
【請求項１１】
漫画的なライティングを行う装置のコンピュータを、
照明関数を用いて少なくとも１つの色または不透明度値を生成する手段、
前記色不透明度値を、少なくとも１つのテクスチャ座標に変換する手段、
前記テクスチャ座標を少なくとも１つのテクスチャマッピング動作に用いる手段、および
前記テクスチャマッピング動作の結果を用いて、動的に生成された漫画画像中の少なくとも１つの可視表面の色または不透明度を変更する手段として機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスに関し、より詳細には、家庭用ビデオゲームプラットフォームなどの対話式グラフィックスシステム、グラフィックス画像を生成する方法、およびプログラムに関する。より詳細には、本発明は、色または不透明度を変更するために後に用いられるパラメータを生成するためにライティング関数を用いるグラフィックス処理の改良に関する。さらに、詳細には、本発明は、さらなる関数（例えばテクスチャリング）などに適用される距離または角度などのパラメータをライティング計算が定義する３Ｄグラフィックスシステムに関する。
【背景技術】
【０００２】
我々の多くは、驚くほどリアルな恐竜、異星人、アニメーション化された玩具、およびその他の空想的な生物を含む映画を観たことがある。このようなアニメーションは、コンピュータグラフィックスによって可能となる。こうした技術を用いることにより、コンピュータグラフィックスアーチストは、各オブジェクトがどのように見えるべきか、また時間とともにどのように外見が変化すべきかを指定することができ、そしてコンピュータがオブジェクトをモデリングし、これらをテレビやコンピュータスクリーンなどのディスプレイ上に表示する。このコンピュータは、シーン中の各オブジェクトの位置および方向、各オブジェクトに光が入射しているように見える方向、各オブジェクトの表面テクスチャ、およびその他の要素に基づき、表示された画像の各部分がちょうど正しく色付けされかつ形付けられていることを確実にするために必要な多くの処理の実行を担当する。
【０００３】
コンピュータグラフィックスの生成は複雑であるため、ほんの数年前では、コンピュータ生成された３次元グラフィックスは、高価な専用のフライトシミュレータ、ハイエンドのグラフィックスワークステーション、およびスーパーコンピュータに概ね限定されていた。大衆は、これらのコンピュータシステムによって生成された画像のいくつかを映画や高価なテレビ広告で見ることはあったが、我々の大部分は、グラフィックス生成を行うコンピュータに実際に接触することはできなかった。これが全て、例えばニンテンドウ６４（登録商標）などの比較的安価な３Ｄグラフィックスプラットフォームや、現在パーソナルコンピュータで利用可能な様々な３Ｄグラフィックスカードが利用可能になることにより変貌した。今や、家庭またはオフィスにて、比較的安価なコンピュータグラフィックスシステム上で刺激的な３Ｄアニメーションおよびシミュレーションと接触することが可能である。
【０００４】
３Ｄグラフィックスシステムにおいて、様々なパラメータ（例えば距離減衰、角度、ビームライティングなど）に基づいてライティング計算を行うことが、長く知られている。従来、そのようなライティング計算の結果は、表示されているオブジェクトの色および／または不透明度を変更するために用いられた。これについてはコンピュータグラフィックスに関する様々な標準的な参考文献に記載がある（例えば、Ｆｏｌｅｙら、Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  Ｐｒｉｎｃｉｐｌｅｓ  ａｎｄ  Ｐｒａｃｔｉｃｅ（２ｄ．Ｅｄ．  １９９０）のＣｈａｐｔｅｒ１６（"Ｉｌｌｕｍｉｎａｔｉｏｎ  ａｎｄ  Ｓｈａｄｉｎｇ"）；およびＭｏｌｌｅｒら、Ｒｅａｌ  ｔｉｍｅ  Ｒｅｎｄｅｒｉｎｇ（ＡＫ  Ｐｅｔｅｒｓ  １９９９）のＳｅｃｔｉｏｎ４．３以降（"Ｌｉｇｈｔｉｎｇ  ａｎｄ
Ｓｈａｄｉｎｇ"）；Ｒｏｇｅｒｓら、Ｐｒｏｃｅｄｕｒａｌ  Ｅｌｅｍｅｎｔｓ  ｆｏｒ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ（２ｄ  Ｅｄ．ＭｃＧｒａｗ−Ｈｉｌｌ  １９９７）のＳｅｃｔｉｏｎ５．２以降（"Ｉｌｌｕｍｉｎａｔｉｏｎ  Ｍｏｄｅｌｓ"）；Ｎｅｉｄｅｒら、Ｏｐｅｎ  ＧＬ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ（Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  １９９３）のＣｈａｐｔｅｒ６（"Ｌｉｇｈｔｉｎｇ"）；およびＫｏｖａｃｈ、Ｉｎｓｉｄｅ  Ｄｉｒｅｃｔ３Ｄ（Ｍｉｃｒｏｓｏｆｔ  Ｐｒｅｓｓ  ２０００）のＣｈａｐｔｅｒ５（"Ｄｉｒｅｃｔ３Ｄ  Ｖｅｒｔｉｃｅｓ  ａｎｄ  ｔｈｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｌｉｇｈｔｉｎｇ  Ｐｉｐｅｌｉｎｅ"）を参照）。例えば、グロー（Ｇｏｕｒａｕｄ）シェーディングおよびフォン（Ｐｈｏｎｇ）シェーディングとして知られる技術は、表示された表面の色を、ライティング式によってモデル化されたライティング効果に依存して変更する。一例として、光沢のある表面に明るいスポット光を照らすと、光が輝いている点において表面色を白色化させる効果を有し得る。これは従来のグラフィックスシステムにおいて、しばしば、あるプリミティブの表面に表示された各ピクセルの色を、そのプリミティブの色（しばしば頂点単位で定義される）およびライティング式の結果に基づき、ラスタライザに決定させることによって達成される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
グラフィックスシステムの設計者が過去において直面した１つの問題は、漫画のキャラクターなどの写実的でない像をどのようにして効率的に作成するかであった。長年、グラフィックス分野の作業の大部分は、写真と同じくらいリアルな像を作成することに注がれてきた。しかし最近においては、非写実的なイメージングに関心が抱かれてきている。
【０００６】
最近関心を呼んでいる非写実的なイメージングのタイプの１つは、漫画のキャラクターのイメージングを自動化するプロセスである。１９３０年代および１９４０年代における手書き漫画の最盛期においては、フレームからフレームへと動的に変化する素晴らしい漫画のキャラクターをアーチストらが作成した。これらの手書き漫画は、多くの意味において漫画的なレンダリングの標準となった。漫画はリアルに見えるように意図されたものではなかった。逆に、漫画は戯画的に見えるようにデザインされた。例えばそのような漫画において人物の顔は、真っ白なところに真っ赤または赤みがかった桃色の色合いによるバラ色の頬を備えたものであったりした。アーチストが各フレームを手で色づけしたため、キャラクターがシーン中を移動するにつれて頬の色合いは動的に変化し得た。このような動的な効果は見ていて魅力的であり、漫画の像におもしろみを付加するものである。
【０００７】
残念ながら、１９３０年代および１９４０年代における手書き漫画の芸術は、非常に時間がかかり高価であった。また人々は今や、漫画のキャラクターと接触するようにビデオゲームおよびコンピュータゲームを使用したがっている。ビデオゲームは、対話式に漫画キャラクターを動的にレンダリングすることに何年間か成功しているが、当世の手書き漫画の手書き芸術の細かさは達成していない。漫画およびその他の非写実的な像の創造のためのハイエンドタイプのシステムにおいては多大な研究がなされているが、さらなる改良が可能であり、かつ望まれる。
【０００８】
本発明は、家庭用ビデオゲームプラットフォームまたはパーソナルコンピュータのグラフィックスアクセラレータなどの低コストなグラフィックスシステムを用いて実現可能な、非写実的およびその他のイメージング効果における改良を提供する。
【課題を解決するための手段】
【０００９】
本発明によって提供される一局面によれば、シーン中のオブジェクトをライティングするために典型的に用いられるタイプのライティング関数を用いて、色以外のパラメータを生成する。このようなパラメータを用いて、オブジェクトの色または不透明度を変更する。
【００１０】
本発明によって提供される別の局面によれば、ライティング計算が頂点毎のライティングを実行することにより、従来の色成分出力を提供する。色成分出力は、色成分を無色パラメータとして処理するテクスチャリング関数に入力される。テクスチャリング関数の出力は、レンダリングされたシーンの視覚化への寄与に用いられる、視覚化効果（例えば、無色パラメータに基づいて変更される色および／または不透明度）を提供する。
【００１１】
本発明によって提供されるさらに別の局面によれば、ライティング計算の出力は３つの色成分を提供し、そのうち１つは捨象される。残りの２つの色成分はテクスチャ座標に変換され、テクスチャマッピング動作に用いられる。一方のテクスチャ座標は、２次元テーブル中の１次元テクスチャマップを選択する。他方のテクスチャ座標は、選択された１次元テクスチャマップ内の特定のテクセルを選択する。結果として得られる選択されたテクセルは、その頂点により定義される表面に加えられる、色および／またはアルファ情報を提供する。
【００１２】
本発明によって提供されるさらに別の局面によれば、色や不透明度以外のパラメータを生成するためにライティング計算を用いることにより、リアルタイム３Ｄグラフィックスシステムにおいて、非写実的な漫画的なライティング効果が提供される。異なるブラシストロークをこのパラメータの関数として指定する、１次元テクスチャマップを定義することができる。従来のテクスチャマッピング動作を用いて、上記パラメータに基づき上記１次元テクスチャマップをポリゴン表面にマッピングすることができる。
【００１３】
より詳細には、本開示のシステムは従来のライティング型のシェーディング（前述）を全体動作の一部として提供し得るが、ライティング式を用いてテクスチャ座標（すなわち色や不透明度以外の別のパラメータ）を生成することを可能にする、さらなる改良を提供する。この別のパラメータは、さらなる結果（これがオブジェクトの色／不透明度を変更してもよい）を提供するためのさらなる関数（テクスチャとして格納されるルックアップテーブルなど）へ入力され得る。この、表示されるオブジェクトの色および／または不透明度に間接的にのみ影響するパラメータをライティング計算に生成させる中間ステップにより、プリミティブの表面色に直接影響するようにライティング式の出力を用いる従来のアプローチを越えた、さらなるフレキシビリティが提供される。
【００１４】
ある特定の実施例では、ライティング式の結果を用いて複数のテクスチャから１次元のテクスチャを選択する。一例として、木の幹を表示するために、銀色のレンジを有するテクスチャと茶色のレンジを有するテクスチャとの２つの異なる１次元テクスチャを定義し得る。ライティング式を光源が木の幹に入射している角度を決定するために用い、結果によって２つテクスチャの選択を行うことができる。この木の幹を、斜角からは異なる銀色のレンジによって（従来テクスチャマッピングを用いて）色づけし、光が真正面から入射しているときには茶色／黒色のレンジで色づけすることができる。このような場合において、ライティング式は、１次元テクスチャを選択している（すなわち、色や不透明度以外のパラメータ−−この場合２つの異なるテクスチャの選択を行う−−として機能している）。
【００１５】
本明細書において開示される特定の実施形態において、変換およびライティング（「Ｔ＆Ｌ」）パイプラインに改良がなされることにより、このパイプラインがライティング式に基づいてテクスチャ座標を生成することを可能にする。変換およびライティングは、ライティング式の出力を生成するが、これをラスタライザによって生成されたピクセル色／不透明度を変更するために直接提供するのではなく、結果をテクスチャユニットにテクスチャ座標として提供する。開示された実施形態において、テクスチャユニットの出力は、オブジェクトのプリミティブ色／不透明度（例えば、変換およびライティングパイプラインならびにラスタライザによって、同一または異なるライティング式に基づきグローまたはフォンシェーディングなどの従来のシェーディングアルゴリズムを用いて生成される）とブレンドされることにより変更された色／不透明度値を表示用に提供する、色または不透明度である。
【図面の簡単な説明】
【００１６】
【図１】対話式コンピュータグラフィックスシステムの一例の全体図である。
【図２】図１の例のコンピュータグラフィックスシステムのブロック図である。
【図３】図２に示す例のグラフィックスおよび音声プロセッサのブロック図である。
【図４】図３に示す例の３Ｄグラフィックスプロセッサのブロック図である。
【図５】図４のグラフィックスおよび音声プロセッサの、論理フロー図例である。
【図６】本発明により提供される高レベル画像生成処理の例を示す図である。
【図７】本発明により提供される無色ライティングパラメータに基づくテクスチャリングを用いたより具体的な画像生成処理の例を示す図である。
【図８】テクスチャ関数の例を示す図である。
【図９】１次元テクスチャマップの例を示す図である。
【図１０】テクスチャマッピング手順の例を示す図である。
【図１１】２次元テクスチャマップの例を示す図である。
【図１２】２次元テクスチャマップのさらなる例を示す図である。
【図１３】ライティングパイプライン実施形態の例を示す図である。
【図１４】光のカラーチャネルとの対応付けの例を示す図である。
【図１５】変換ユニットの実施形態の例を示す図である。
【図１６】ライティングパイプラインの実施形態の例を示す図である。
【図１７】ベクトルドット／加算ユニットの実施形態の例を示す図である。
【図１８】正規化器の実施形態の例を示す図である。
【図１９】距離減衰器の実施形態の例を示す図である。
【図２０】光スケール器の実施形態の例を示す図である。
【図２１】整数アキュムレータの実施形態の例を示す図である。
【図２２】状態遷移図例である。
【図２３】別の互換的な実施例を示す図である。
【図２４】別の互換的な実施例を示す図である。
【発明を実施するための形態】
【００１７】
図１は、対話式３Ｄコンピュータグラフィックスシステム５０の一例を示す。システム５０は、対話式３Ｄビデオゲームを面白いステレオ音とともにプレイするために用いられ得る。また、様々な他の応用例にも用いられ得る。
【００１８】
本例において、システム５０は、３次元世界のデジタル表現物あるいはモデルを、対話式にリアルタイムで処理することが可能である。システム５０は、その世界のうちの一部または全部を、いかなる任意の視点から表示することもできる。例えば、システム５０は、手持ちコントローラ５２ａ、５２ｂまたはその他の入力デバイスからのリアルタイム入力に応答して、対話式に視点を変更することができる。これにより、ゲームのプレーヤが、その世界の中または外側にいる人の目を通じて、その世界を見ることが可能になる。システム５０は、リアルタイム３Ｄ対話式表示を必要としない応用例（例えば、２Ｄ表示生成および／または非対話式表示）に用いられ得るが、非常に素早く高品質３Ｄ画像を表示できる能力を、非常にリアルかつ刺激的なゲームプレイまたはその他のグラフィカルな対話を創出するために用いることができる。
【００１９】
システム５０を用いて、ビデオゲームまたはその他のアプリケーションをプレイするために、ユーザは、まず、ケーブル５８を両者の間に接続することによって、メインユニット５４を自分のカラーテレビ５６またはその他のディスプレイデバイスに接続する。メインユニット５４は、カラーテレビ５６を制御するための映像信号と音声信号との両方を生成する。映像信号は、テレビスクリーン５９上に表示される画像を制御するものであり、音声信号は、テレビのステレオスピーカ６１Ｌ、６１Ｒを介して音として再生される。
【００２０】
ユーザは、また、メインユニット５４を電源に接続する必要がある。この電源は、標準的な家庭用電気コンセントに接続して家庭電流をメインユニット５４に電力供給するために、適切なより低いＤＣ電圧信号に変換する従来のＡＣアダプタ（図示せず）であり得る。他の実施形態として、電池を用い得る。
【００２１】
ユーザは、メインユニット５４を制御するためにハンドコントローラ５２ａ、５２ｂを用い得る。コントロール６０は、例えば、テレビ５６上に表示されたキャラクターが３Ｄ世界内で移動するべき方向（上下、左右、近くあるいは遠く）を指定するために用い得る。コントロール６０は、また、他のアプリケーション（例えば、メニュー選択、ポインタ／カーソル制御など）のための入力を提供する。コントローラ５２は、様々な形態を取りては、図示したコントローラ５２は、それぞれジョイスティック、プッシュボタンおよび／または方向スイッチとしてのコントロール６０を含む。コントローラ５２は、ケーブルを介して、あるいは電磁（例えば高周波または赤外線）波を介して無線でメインユニット５４に接続され得る。
【００２２】
ゲームなどのアプリケーションをプレイするためには、ユーザは自分がプレイしたいビデオゲームあるいはその他のアプリケーションを記憶している適切な記憶媒体６２を選択し、その記憶媒体をメインユニット５４のスロット６４に挿入する。記憶媒体６２は、例えば、専用にコード化されたおよび／または暗号化された光学および／または磁気ディスクであり得る。ユーザは、パワースイッチ６６を操作してメインユニット５４をオンにし、記憶媒体６２に記憶されたソフトウェアに基づいて、メインユニットにビデオゲームあるいはその他のアプリケーションの実行を開始させ得る。ユーザは、コントローラ５２を操作してメインユニット５４に入力を供給し得る。例えば、コントロール６０を操作することにより、ゲームあるいはその他のアプリケーションを開始させ得る。その他のコントロール６０を動かすことにより、アニメーション化されたキャラクターを異なる方向に移動させたり、３Ｄ世界におけるユーザの視点を変更することができる。記憶媒体６２に記憶された特定のソフトウェアに依存して、コントローラ５２上の様々なコントロール６０は、異なる時刻において異なる機能を実行することができる。
【００２３】
システム全体の電子回路例
図２に、システム５０の要素例のブロック図を示す。主要な要素として以下のものを含む。
・メインプロセッサ（ＣＰＵ）１１０、
・メインメモリ１１２、および
・グラフィックスおよび音声プロセッサ１１４
【００２４】
本例において、メインプロセッサ１１０（例えば、機能拡張型ＩＢＭ  Ｐｏｗｅｒ  ＰＣ７５０）は、手持ちコントローラ１０８（および／または他の入力装置）からの入力を、グラフィックスおよびプロセッサ１１４を介して受け取る。メインプロセッサ１１０は、ユーザ入力に対話式に応答し、例えば、外部記憶媒体６２から光ディスクドライブなどの大容量記憶アクセス装置１０６を介して供給されるビデオゲームあるいはその他のプログラムを実行する。一例としてビデオゲームプレイの場合、メインプロセッサ１１０は、様々な対話式機能および制御機能に加えて、衝突検出およびアニメーション処理を実行することができる。
【００２５】
本例において、メインプロセッサ１１０は、３Ｄグラフィックスコマンドおよび音声コマンドを生成し、これらをグラフィックスおよび音声プロセッサ１１４に送る。グラフィックスおよび音声プロセッサ１１４は、これらのコマンドを処理することにより、ディスプレイ５９上に面白い視覚画像を生成し、ステレオスピーカ６１Ｒ、６１Ｌまたはその他の適切な音声生成装置上で面白いステレオ音を生成する。
【００２６】
例示のシステム５０は、グラフィックスおよび音声プロセッサ１１４から画像信号を受け取って、画像信号をコンピュータモニタまたは家庭用カラーテレビ５６などの標準的な表示装置上での表示に適したアナログおよび／またはデジタル映像信号に変換するビデオ符号化器１２０を有する。システム５０はまた、デジタル化された音声信号を圧縮および伸長し、また必要に応じてデジタルおよびアナログの音声信号化フォーマット間の変換を行う音声コーデック（圧縮器／伸長器）１２２を有する。音声コーデック１２２は、バッファ１２４を介して音声入力を受け取り、これらをグラフィックスおよび音声プロセッサ１１４に処理（例えば、プロセッサが生成する、および／または大容量記憶アクセス装置１０６の音声ストリーミング出力を介して受け取る他の音声信号との混合）のために供給することができる。本例におけるグラフィックスおよび音声プロセッサ１１４は、音声関連の情報を、音声タスクについて利用可能である音声メモリ１２６中に記憶することができる。グラフィックスおよび音声プロセッサ１１４は、結果として得られた音声出力信号を、伸長およびアナログ信号への変換（例えばバッファアンプ１２８Ｌ、１２８Ｒを介して）のために音声コーデック１２２に供給することにより、スピーカ６１Ｌ、６１Ｒによって再生できるようにする。
【００２７】
グラフィックスおよび音声プロセッサ１１４は、システム５０内に存在し得る様々な追加的なデバイスと連絡する能力を有する。例えば、大容量記憶アクセス装置１０６および／またはその他の要素と連絡するために、パラレルデジタルバス１３０を用い得る。シリアル周辺バス１３２は、例えば、
・プログラム可能なリードオンリーメモリおよび／またはリアルタイムクロック１３４、
・モデム１３６その他のネットワーク化インターフェース（これは、プログラム命令および／またはデータをダウンロードまたはアップロードすることができるインターネットあるいはその他のデジタルネットワークなどの通信ネットワーク１３８に、システム５０を接続し得る）、および
・フラッシュメモリ１４０を含む、様々な周辺デバイスまたはその他のデバイスと連絡し得る。追加的な拡張メモリ１４４（例えばメモリカード）やその他のデバイスと連絡するために、さらなる外部シリアルバス１４２を用い得る。コネクタを用いて様々なデバイスをバス１３０、１３２、１４２に接続し得る。
【００２８】
グラフィックスおよび音声プロセッサの例
図３は、グラフィックスおよび音声プロセッサ１１４の一例のブロック図である。一例において、グラフィックスおよび音声プロセッサ１１４は、単一チップのＡＳＩＣ（アプリケーション専用集積回路）であり得る。本例において、グラフィックスおよび音声プロセッサ１１４は、以下を含む。
・プロセッサインターフェース１５０
・メモリインターフェース／コントローラ１５２
・３Ｄグラフィックスプロセッサ１５４
・音声デジタル信号プロセッサ（ＤＳＰ）１５６
・音声メモリインターフェース１５８
・音声インターフェースおよびミキサ１６０
・周辺コントローラ１６２、および
・ディスプレイコントローラ１６４
【００２９】
３Ｄグラフィックスプロセッサ１５４は、グラフィックス処理タスクを行う。音声デジタル信号プロセッサ１５６は、音声処理タスクを行う。ディスプレイコントローラ１６４は、メインメモリ１１２からの画像情報にアクセスし、これをディスプレイデバイス５６上に表示するためにビデオ符号化器１２０に供給する。音声インターフェースおよびミキサ１６０は音声コーデック１２２とインターフェースし、また異なるソースからの音声（例えば大容量記憶アクセス装置１０６からの音声ストリーミング、音声ＤＳＰ１５６の出力、および音声コーデック１２２を介して受け取られる外部音声入力）を混合することができる。プロセッサインターフェース１５０は、メインプロセッサ１１０とグラフィックスおよび音声プロセッサ１１４との間のデータおよび制御インターフェースを提供する。
【００３０】
メモリインターフェース１５２は、グラフィックスおよび音声プロセッサ１１４とメモリ１１２との間の、データおよび制御インターフェースを提供する。本例において、メインプロセッサ１１０は、グラフィックスおよび音声プロセッサ１１４の一部であるプロセッサインターフェース１５０およびメモリインターフェース１５２を介して、メインメモリ１１２にアクセスする。周辺コントローラ１６２は、グラフィックスおよび音声プロセッサ１１４と、上述した様々な周辺機器との間の、データおよび制御インターフェースを提供する。音声メモリインターフェース１５８は、音声メモリ１２６とのインターフェースを提供する。
【００３１】
グラフィックスパイプラインの例
図４は、３Ｄグラフィックスプロセッサ１５４の一例のより詳細な図を示す。３Ｄグラフィックスプロセッサ１５４は、特に、コマンドプロセッサ２００および３Ｄグラフィックスパイプライン１８０を含む。メインプロセッサ１１０は、データのストリーム（例えば、グラフィックスコマンドストリームおよび表示リスト）を、コマンドプロセッサ２００に通信する。メインプロセッサ１１０は、メモリ待ち時間を最小にするために２レベルキャッシュ１１５を有し、また、グラフィックスおよび音声プロセッサ１１４を対象とした非キャッシュデータストリーム用の書き込み収集バッファ１１１を有している。書き込み収集バッファ１１１は、部分キャッシュラインを集めて完全なキャッシュラインにし、データを一度につき１キャッシュラインずつグラフィックスおよび音声プロセッサ１１４に送り出すことにより、バス利用率を最大にする。
【００３２】
コマンドプロセッサ２００は、メインプロセッサ１１０から表示コマンドを受け取って解析する（これらを処理するために必要な任意の追加的なデータは、共有メモリ１１２から得る）。コマンドプロセッサ２００は、頂点コマンドのストリームを、２Ｄおよび／または３Ｄ処理およびレンダリングのためにグラフィックスパイプライン１８０に供給する。グラフィックスパイプライン１８０は、これらのコマンドに基づいて画像を生成する。得られた画像情報は、ディスプレイコントローラ／ビデオインターフェースユニット１６４（パイプライン１８０のフレームバッファ出力をディスプレイ５６上に表示する）によるアクセスのために、メインメモリ１１２に転送され得る。
【００３３】
図５は、グラフィックスプロセッサ１５４の論理フロー図である。メインプロセッサ１１０は、グラフィックスコマンドストリーム２１０、表示リスト２１２、および頂点配列２１４をメインメモリ１１２に格納し得、バスインターフェース１５０を介してコマンドプロセッサ２００にポインタを渡し得る。メインプロセッサ１１０は、メインメモリ１１２内に割り当てた１つ以上のグラフィックス先入れ先出し（ＦＩＦＯ）バッファ２１０に、グラフィックスコマンドを格納する。コマンドプロセッサ２００は、
・同期／フロー制御および負荷バランスを取るためグラフィックスコマンドを受け取りバッファリングするオンチップＦＩＦＯメモリバッファ２１６を介して、メインメモリ１１２からのコマンドストリーム、
・オンチップコールＦＩＦＯメモリバッファ２１８を介して、メインメモリ１１２からの表示リスト２１２、および
・頂点キャッシュを介して、コマンドストリームからおよび／またはメインメモリ１１２中の頂点配列２１４からの頂点属性）
を取り込む。
【００３４】
コマンドプロセッサ２００は、属性タイプを浮動小数点フォーマットに変換し、得られた完全な頂点ポリゴンデータをレンダリング／ラスタライゼーションのためにグラフィックスパイプライン１８０に渡すコマンド処理動作２００ａを行う。プログラム可能なメモリ調停回路１３０（図４を参照）は、共有メインメモリ１１２へのアクセスを、グラフィックスパイプライン１８０、コマンドプロセッサ２００、およびディスプレイコントローラ／ビデオインターフェースユニット１６４間で調停する。
【００３５】
図４は、グラフィックスパイプライン１８０が以下を含み得ることを示している。
・変換ユニット３００
・セットアップ／ラスタライザ４００
・テクスチャユニット５００
・テクスチャ環境ユニット６００、および
・画素エンジン７００
【００３６】
変換ユニット３００は、様々な２Ｄおよび３Ｄ変換ならびにその他の動作３００ａを行う（図５を参照）。変換ユニット３００は、変換処理３００ａで用いられる行列を格納するための、１つ以上のマトリックスメモリ３００ｂを有し得る。変換ユニット３００は、受け取った図形を頂点毎にオブジェクト空間からスクリーン空間に変換し、また、受け取ったテクスチャ座標を変換し投影テクスチャ座標を生成する（３００ｃ）。変換ユニット３００は、また、ポリゴンクリッピング／間引き３００ｄを行ってもよい。やはり変換ユニット３００ｂによって行われるライティング処理３００ｅは、一実施例において最高８個の独立のライティングまでに対し、頂点毎のライティング演算を提供する。変換ユニット３００は、また、ポリゴンクリッピング／間引き動作（３００ｄ）に加え、エンボス型のバンプマッピング効果のためのテクスチャ座標生成（３００ｃ）、を行うことができる。
【００３７】
セットアップ／ラスタライザ４００は、変換ユニット３００から頂点データを受け取り、トライアングルセットアップ情報を、境界のラスタライズ、テクスチャ座標のラスタライズおよび色のラスタライズを行う１つ以上のラスタライザユニット（４００ｂ）に送るセットアップユニットを有する。
【００３８】
テクスチャユニット５００（オンチップテクスチャメモリ（ＴＭＥＭ５０２）を含み得る）は、テクスチャリングに関連する様々な処理を行う。これには、例えば、
・メインメモリ１１２からのテクスチャ５０４の取り出し、
・例えば、マルチテクスチャ処理、キャッシュ後テクスチャ伸長、テクスチャフィルタリング、エンボス化、投影テクスチャの使用を介した陰影および明暗、ならびにアルファ透明度および深度をともなうＢＬＩＴを含むテクスチャ処理（５００ａ）、
・バンプマッピング、擬似テクスチャ、およびテクスチャタイル化効果（５００ｂ）についてのテクスチャ座標変位の演算のためのバンプマップ処理、および
・間接テクスチャ処理（５００ｃ）
が含まれる。
【００３９】
テクスチャユニット５００は、フィルタリングされたテクスチャ値を、テクスチャ環境処理のため（６００ａ）にテクスチャ環境ユニット６００に出力する。テクスチャ環境ユニット６００は、ポリゴンおよびテクスチャ色／アルファ／深度をブレンドし、また、逆レンジ型フォグ効果を達成するためのテクスチャフォグ処理（６００ｂ）を行い得る。テクスチャ環境ユニット６００は、例えば色／アルファ変調、エンボス化、詳細テクスチャリング、テクスチャスワッピング、クランピング、および深度ブレンディングに基づき、様々な他の面白い環境関連の機能を行うためのステージを複数提供し得る。
【００４０】
ピクセルエンジン７００は、深度（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を行う。本例において、ピクセルエンジン７００は、データを埋め込み（オンチップ）フレームバッファメモリ７０２に格納する。グラフィックスパイプライン１８０は、フレームバッファおよび／またはテクスチャ情報をローカルに格納するための１つ以上の埋め込みＤＲＡＭメモリ７０２を有し得る。ｚ比較７００ａ'は、また、現在有効なレンダリングモードに依存して、グラフィックスパイプライン１８０中のより早い段階で行われ得る（例えば、アルファブレンディングが必要でなければ、ｚ比較は、より早くに行われ得る）。ピクセルエンジン７００は、オンチップフレームバッファ７０２をディスプレイ／ビデオインターフェースユニット１６４によるアクセスのためにメインメモリ１１２に周期的に書き込むコピー動作７００ｃを含む。このコピー動作７００ｃは、また、動的テクスチャ合成効果を得るために、埋め込みフレームバッファ７０２の内容をメインメモリ１１２内のテクスチャにコピーするためにも用いられ得る。コピーアウト動作中において、アンチエイリアシングおよびその他のフィルタリングを行うことができる。グラフィックスパイプライン１８０のフレームバッファ出力（最終的には、メインメモリ１１２に格納される）は、各フレームごとにディスプレイ／ビデオインターフェースユニット１６４によって読み出される。ディスプレイコントローラ／ビデオインターフェースユニット１６４は、ディスプレイ１０２上に表示するためのデジタルＲＧＢ画素値を提供する。
【００４１】
無色ライティング関数の例
上述のように、本実施例における変換ユニット３００は、幾何学的変換、ポリゴンクリッピング、間引きおよびその他の機能に加えて、ライティングを行う。本実施例において、変換ユニット３００は、ハードウェアにおいてライティングを頂点毎の計算としてサポートする。このことは、色値（ＲＧＢ）がライティングされている頂点毎に演算され得ること、そしてこれらの色が、各ライティングされたトライアングルの表面にわたって線形補間されることができることを意味する。これはグローシェーディングとして公知である。ライティングの実施形態の一例に関するさらなる詳細を、図１４以降と関連して以下に説明する。
【００４２】
本実施例の変換ユニット３００は、従来のグラフィックスシステムでは利用可能でない、ライティング関数３０２のさらなる用途を提供する。一般に従来のグラフィックスシステムにおけるライティング関数の出力は、ポリゴンシェーディングに用いられる色である。グラフィックスシステムの中には、ライティング関数に基づいてアルファ（例えば透明度）値を提供するものもある。本発明によって提供される実施例においては、色および／または不透明度を変更するために後に用いられる無色パラメータ（すなわち色でもアルファでもなく何か別のもの）を生成するために、ライティング関数を用いる。
【００４３】
図６はそのような構成を示すブロック図であり、ライティング関数３０２が、色または不透明度を変更するための後のプロセス３０４で用いられる無色パラメータを提供する。変更の結果はディスプレイ５６などの表示装置上に表示される。この文脈において、「ライティング関数」の語は一般に、表面位置、表面方向、眼点の位置、ならびに場合によっては光源位置の、数学的関数を意味する。ライティング関数は、これらの座標の任意の組み合わせとして定義されることができる。
【００４４】
本実施例において、ライティング関数３０２によって出力される無色パラメータは、図７に示すようにテクスチャ関数３０６によって処理される。非常に単純なレベルにおいては、オブジェクトをテクスチャリングすることは画像をそのオブジェクトに「貼り付ける」ことを意味する。より詳細には、テクスチャリングは一般にライティング関数３０２において用いられる値を変更することによって成立する。例えば、典型的な場合において、ライティング関数３０２は、ポリゴン表面の色および照度を決定するために用いられ、テクスチャリング関数は、その色／照度を変更することによって追加的な効果（例えば、レンガの壁または木目の外観を創出したり、表面を凹凸や鏡面状あるいは歪んでいるように見せるなど）を提供するために用いられる。図７に示す実施例においては対照的に、ライティング関数３０２の出力は色や透明度値ではなく、テクスチャリング関数３０６用の一般化されたパラメータ（例えばテクスチャ座標）である。テクスチャリング関数は、表示装置５６上での表示用にプリミティブ色および／または不透明度によって変更（例えばブレンド）を行うために用いられる、色および／または不透明情報を作成する。
【００４５】
図８はテクスチャ関数３０６の例を示す。この例においてライティング関数３０２は、例示のテクスチャ関数３０６をパラメータ化する、無色出力パラメータＳを生成する。この図８の例において例示のテクスチャ関数３０６は、パラメータＳの値に依存して、３つの色（Ｃ１、Ｃ２、Ｃ３）または不透明度のうちの１つを選択する。その結果、テクスチャ関数３０６から出力される特定の色または不透明度が、ライティング関数３０２から出力されるパラメータＳの関数として決定される。ライティング関数３０２がパラメータＳを提供しているため、テクスチャ関数３０６から出力されるいずれの色または不透明度を選択するかは、ライティング関数の計算に用いられる様々なファクタのうちの任意のものに依存し得る。これらファクタは例えば、
・距離、
・減衰、
・角度、
・ベクトル、
・コサイン、
・多項式、
・光源タイプ、
・その他の係数
を含む。
【００４６】
テクスチャ関数３０６は様々な異なる態様で実施され得るが、コスト効率のよいアプローチの一つは、テクスチャ関数３０６の出力値をテクスチャルックアップテーブルまたはマップに格納し、テクスチャ座標を用いてこれらの値にアクセスすることである。図９は、ライティング関数３０２の出力パラメータＳによってインデックスされる１次元テクスチャマップ３０８の一例を示す。この実施例において従来のテクスチャマッピング関数を用いることの利点は、ライティング関数３０２とともに、汎用テクスチャリングで利用可能なテクスチャマッピングハードウェアあるいはその他の機能も用いてテクスチャ関数３０６を実現することが可能であることである。
【００４７】
図１０は、２次元テクスチャマッピング動作３０６を含むより詳細な例を示す。この例においては、頂点の識別およびライティング定義に基づいてライティング計算３０２が行われる。本実施例におけるライティング計算３０２の出力は、頂点毎の色（例えば赤、緑、青）および／または透明度（すなわちアルファ）を含む。本実施例は、典型的にはこれらのライティング計算３０２の色出力をポリゴン表面のグローシェーディングに用いる。しかしこの動作モードにおいて、カラーチャネルのうちの１つ（例えば青）が捨象され、他の２つのカラーチャネル（すなわち赤、緑）が変換動作３０８を用いてテクスチャ座標ｓ、ｔに変換される。テクスチャ座標ｓ、ｔは、１つ以上のテクスチャマッピング動作３０６ａ、３０６ｂなどに供されることにより、色／透明度出力テクセルを提供する。ブレンディング動作６０２は、これらのテクセルを表面色情報（従来のシェーディング技術を用いて同一または異なるライティング計算に基づいて導出され得る）とブレンドすることにより、シェードが付けられたテクスチャ化ポリゴンを表示用に提供することができる。
【００４８】
本実施例においてテクスチャマッピング動作３０６は、図１１に示すような２次元テクスチャマッピングを提供する。本例においてテクスチャ座標ｔは、ライティング計算３０２の緑のカラーチャネル出力に基づいて生成され、２次元テクスチャマップ３１０内のｎ個の１次元テクスチャマップのうちの１つを選択するために用いられる。他方のテクスチャ座標ｓは、ライティング計算３０２の赤のカラーチャネル出力に基づいて作成され、座標ｔによって選択された１次元テクスチャ内の特定の１つのテクセルを選択するために用いられる。もちろん他の実施形態において、テクスチャ座標ｓが１−Ｄマップを選択して座標ｔが１つの特定のテクセルを選択してもよく、および／または異なる色および／または不透明度を用いて異なるテクスチャ座標を生成してもよい。所望であれば、３つのテクスチャ座標を用いて３Ｄテクスチャ中のテクセルを選択してもよい。
【００４９】
図１２は、複数の１次元テクスチャマップ３０８を含む２次元テクスチャマップ３１０の例示的な一例である。図１２に示す特定の２次元テクスチャマップは、漫画的なライティング効果に特に適している。図示例では、それぞれが２つの異なる種類のテクセル（例えば紫色のテクセルと青色のテクセル）を含んだ４つのマップ３０８（１）〜３０８（４）を含む、複数の１次元テクスチャマップが含まれている。テクスチャ座標のうちの一方（例えばｔ）がこれらの異なるテクスチャマップ間の選択を行い、他方のテクスチャ座標（例えばｓ）が特定のテクセル（すなわち青または紫）を選択する。様々な１Ｄテクスチャマップ３０８（１）〜３０８（４）は、テクスチャ座標と青または紫のテクセルとの間で異なるマッピングを提供することにより、異なるブラシストロークあるいはその他の効果を提供する。
【００５０】
別の例として、図１２に示す１Ｄテクスチャマップ３０８（６）は、４つの異なる種類のテクセル（黄色、橙色、赤色および茶色）を含んでいる。これらの異なる色を用いて、例えばあるオブジェクトに対して指向性光がなす角度または光源からのオブジェクトの距離がテクスチャマッピング動作３０６の出力から得られる色を決定するような、大胆な漫画的なライティング効果を得ることができる。そのような視覚化は、特に動的に生成される漫画的なアニメーションなどの非写実的なリアルタイムレンダリングにおいて、様々な面白い応用例を有し得る。例えば、オブジェクトをライティングする仮想的な漫画的な光を定義することが可能である。オブジェクトのレンダリングされた視覚化は、頂点位置、局所的な漫画的な光位置およびライティング計算３０２が考慮するその他のファクタ（鏡面または拡散演算、距離減衰など）に、依存するようになる。一例において、赤のカラーチャネルをゼロに設定し、ライティング計算３０２に緑チャネルを演算させることで、１セットのブラシストロークを定義する１Ｄテクスチャ内の特定のテクセル値を指定することが可能である。メインプロセッサ１１０が典型的にライティング計算３０２に供することが可能な材質の色は、２Ｄテクスチャマップ内のどの１Ｄテクスチャを選択するかを指定するために用いることができる。ライティング計算３０２は、頂点単位で（頂点毎に１インデックスを供給する以上の追加的なコストなく）、どのブラシストロークを選択するかを計算する。
【００５１】
図１０に示す例は漫画的なライティングに特に有用であるが、多くの他の応用例にも用いることができる。一例として、ライティング関数３０２は、影立体または表面を計算するために用いられ得る。所与の頂点に基づいたライティング計算３０２は、テクスチャマッピング動作３０６に用いられるテクスチャ座標において定義された影立体を生成することが可能である。多くの他の応用例が可能である。例えば、面白い応用例の１つは、投影テクスチャである。投影テクスチャの望ましくない特徴の１つは、典型的にはカメラから前方または後方に投影することである。本明細書において開示される技術は、減衰（例えば逆方向を向いたライティングを排除するため）および／または距離減衰（例えば、本物のスライドプロジェクタを用いて画像を投影するときの見え方のように、どれだけ遠くに投影されるかに基づいて投影テクスチャを減衰するため）を提供するライティング関数に基づいて、投影テクスチャ座標生成を提供することができる。このような投影テクスチャリングと本明細書に記載した無色ライティング関数との組み合わせにより、多くの面白い画像およびイメージング効果が得られる。
【００５２】
図１０に示す従来の動作３０６は、必ずしも全ての実施形態において必要なわけではない。本実施例においてライティング関数３０２は整数出力を生成し、この整数出力は変換ブロック３０８によって、以降のテクスチャマッピング動作３０６で用いられるテクスチャ座標に適した浮動小数点表現に変換される。しかし、そのような整数−浮動小数点変換は他の実施形態においては不要であり、あるいは他の実施形態においては所望に応じて異なるタイプの変換を用いることが可能である。
【００５３】
図１０に示す実施例において、ライティング関数３０２はテクスチャ座標ｓおよびｔの両方を計算する必要はない。本実施例において、プリミティブ表面に適用されるべき１次元テクスチャマップ中で、どの特定のテクセルが使用されたのかを選択するために１つのテクスチャ座標のみをパラメータとして用いているため、好適な実施例では、ライティング計算３０２を用いてそのテクスチャ座標（あるいはそのテクスチャ座標が導出されるもととなる中間値として）を好ましくは計算する。しかし、アプリケーションによっては、ライティング計算３０２ではなくそのアプリケーションプログラムが、（本実施例では）複数の１次元テクスチャ３０８から選択を行うために用いられる別のテクスチャ座標を指定することが望ましいこともあり得る。一例として、メインプロセッサ１１０上で稼働するアプリケーションプログラムが、ライティング計算入力に適用されるライティング定義を介して、ライティング計算３０２のカラーチャネル出力のいずれかあるいはその全部のための値を指定することができる。いくつかの応用例においては、メインプロセッサ１１０が例えば緑のカラーチャネルの内容を指定し、従ってテクスチャマッピング動作３０６に用いられる特定の１次元テクスチャを指定することが望ましい場合もある。これにより、ライティング計算ユニット３０２が評価する変数に基づいてライティング計算３０２がテクスチャ座標ｓを動的に生成することを依然として可能にしながら、アプリケーションのプログラマの新たな制御が提供される。メインプロセッサ１１０が変換ユニット３００に送る浮動小数点値をＲＧＢ８の形に切り捨てることにより、計算を高精度で行うことを可能にできる。
【００５４】
本実施例において、ライティング計算３０２が負の出力値を生成できないわけはない。図１０に示す例において、これはオブジェクトをバックライトで照らすことに相当する。従って本実施例において、負のあるいはバックライトで照らされた漫画的なライティングを得ることが可能である。これは、オブジェクトの背面側に情報が存在する場合の効果を提供するために有用であり得る。好適な実施例において、ライティングユニットは常に正の色（値）を出力する。好適な実施例は負のタイプのライティング計算をサポートするが、最終値が正になるようにスケールおよび／またはバイアスを加えることは応用例次第である。例えば、ライティング計算の出力は、テクスチャ座標に変換される前において、−１から０および＋１から１の間でマッピングされ得る。実施例においては負の値をクランプはせずに、単に正の数値にマッピングする。ここでアプリケーションは、これらの正の値が適切に解釈されるように注意を払うものとする。もちろん他の実施形態において所望であれば、負のライティング値を直接サポートしてもよい。
【００５５】
図１０に示すテクスチャマッピング動作３０６およびブレンディング動作６０２は、任意に複合化され得る。例えば、アルファとブレンドを行うことが可能である。別の例として、ライティング計算３０２から出力される２つの別々のカラーチャネルを２つの異なるテクスチャマッピング動作に用いてから、これらをブレンダ６０２によりブレンドしてもよい。本実施例におけるテクスチャマッパ５００およびテクスチャ環境ユニット６００はいずれもマルチタスク／マルチステージ動作であるため、ライティング計算３０２の出力に基づいて一連の直接／間接の動作を提供することにより、様々な面白く複雑な効果を得ることができる。例えば、同一譲受人に係る同時係属中の仮出願Ｎｏ．６０／２２６，８９１（２０００年８月２３日出願）およびそれに対応している実用特許出願Ｎｏ．０９／７２２，３８２（２０００年１１月２８日出願）（弁理士受付番号７２３−９６１、いずれも「Ｍｅｔｈｏｄ  Ａｎｄ  Ａｐｐａｒａｔｕｓ  Ｆｏｒ  Ｄｉｒｅｃｔ  Ａｎｄ  Ｉｎｄｉｒｅｃｔ  Ｔｅｘｔｕｒｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｉｎ  Ａ  Ｇｒａｐｈｉｃｓ  Ｓｙｓｔｅｍ」の名称を有す）、ならびに同一譲受人に係る同時係属中の仮出願Ｎｏ．６０／２２６，８８８（２０００年８月２３日出願）およびそれに対応している実用特許出願Ｎｏ．０９／７２２，３６７（２０００年１１月２８日出願）（弁理士受付番号７２３−９６８、いずれも「Ｒｅｃｉｒｃｕｌａｔｉｎｇ  Ｓｈａｄｅ  Ｔｒｅｅ  Ｂｌｅｎｄｅｒ  Ｆｏｒ  Ａ  Ｇｒａｐｈｉｃｓ  Ｓｙｓｔｅｍ」の名称を有す）を参照のこと。これら全てを本明細書において参考のため援用する。
【００５６】
ライティングパイプラインの実施形態例
図１３は、ライティング計算３０２のブロック図例を示す。本例において、ライティング計算３０２は、コマンドプロセッサ２００から受け取った情報に応答して、変換ユニット３００によって行われる。この情報は、メインプロセッサ１１０およびメインメモリ１１２（図４参照）を含む様々なソースから得ることができる。
【００５７】
本実施例において変換ユニット３００は、マスター制御部３２０、ライティング演算パイプライン３２２、アキュムレータ３２４、およびテクスチャ生成のための整数−浮動小数点変換器３０８を有する。マスターコントローラ３２０は、コマンドプロセッサ２００からライティング定義および頂点定義を受け取り、適切な記憶／バッファリングの後に、関連する情報をライティング計算パイプライン３２２に提供する。ライティングパイプライン３２２は、ライティング演算を以下の基本形態で行う。すなわち、
【数１】
2011090699.tif 000003
である。ここで、Ｃnはライティング計算パイプラインの出力を規定し、Ｃmaterialは材質の色を規定し、Ａcはアンビエント色を規定し、Ｌ（ｃ）はライティング拡散または鏡面成分を規定し、Ａは距離減衰を規定する。この計算はＲＧＢの３つ組を演算する。なぜなら、本実施例におけるライティング計算パイプライン３２２は２つのこのようなライティング計算を並列に行い得るためである。この並列演算特徴のため、ライティング演算のうちの一方をあるオブジェクトのための無色ライティング効果用に用いながら、他方のライティング演算を同じオブジェクトの有色ライティング効果のために用いることができる。並列演算特徴は、漫画的なライティング効果を有するシェード付けされたポリゴン表面を生成するのに、そのような漫画的なライティング効果を有さないシェード付けされたポリゴン表面を生成するのと同じだけの処理時間しかかからないという意味において、漫画的なライティングなどの効果を「自由」にする。本実施例において、ライティング演算パイプライン３２２によって生成されるＣn値は、正でも負でもよい。負のライティングの場合は、バックライトライティングおよびその他の面白い効果が可能になる。
【００５８】
本実施例において、ライティング演算パイプライン３２２の出力Ｃｎは、整数アキュムレータ３２４によって累積される。本実施例において累積された出力は、変換ブロック３０８によって浮動小数点に変換され、テクスチャ座標としてテクスチャマッピング動作のためにテクスチャユニット５０２に供給される。本実施例は、テクスチャマッピング動作３０６の一部としてテクスチャフィルタリングを提供し得る。アプリケーションのプログラマは、ライティング計算３０２をテクスチャ座標を生成するとき、選択されるテクスチャフィルタリングモードに関して注意しなければならない。本実施例におけるｓ軸およびｔ軸は独立のファクタのために用いられるにも関わらずある種のテクスチャフィルタリングは両方の軸に同時に適用されるという事実に起因して、問題が起こりえる。これを回避する１つのやり方は、隣接するｔ値間の補間が最終出力に影響を及ぼさないことを確実にするために、テクスチャマップ内において各エントリをｔ軸に沿って複製することである。この結果、ｔの隣接する値に対する１次元テクスチャフィルタリングは同一になる。複数レベルのディテールをともなうミップマップフィルタリングも実行し得るが、これは、与えられた２Ｄテクスチャマップ中の１Ｄテクスチャの数を減らすようにも働き得る。
【００５９】
本実施例において、ライティング計算３０２の色値をテクスチャ座標に変換する方法に起因して、別の複雑さが発生する。例示の実施形態においてライティング計算３０２により生成される色値は、０〜２５５の範囲の８ビット整数である。変換ブロック３０８は、この整数値を２５５で除算することによって浮動小数点数値に変換する。しかし本実施例において、この値はテクスチャサイズで乗算されることによってテクスチャ座標に変換される。このプロセスは、１Ｄテクスチャを選択するためのテクスチャ座標に対してアプリケーションのプログラマが細心の注意を払わなければならないことを意味する。テクスチャサイズが２５６としかつＧＸ＿ＮＥＡＲテクスチャフィルタリングと仮定すると、これは以下のようにマッピングされる。
【表１】
2011090699.tif 000004
【００６０】
変換プロセスのため、座標値１２８はスキップされ、色値２５４および２５５は同じ座標値にマッピングされる。テクスチャサイズが２５６としかつＧＸ＿ＬＩＮＥＡＲフィルタリングと仮定すると、以下のようなマッピングとなる。
【表２】
2011090699.tif 000005
【００６１】
例示の実施形態においてテーブルＩＤを色値に変換するために、ｎ＊２を用いても安全である。しかし、１Ｄテクスチャを２Ｄテクスチャ内において単純でない方法で格納しなければならない。ｎ＝０のテーブルは座標０（のみ）に格納しなければならず、ｎ＝１からｎ＝６３のテーブルはｎ＊２−１およびｎ＊２に格納しなければならず、ｎ＝６４からｎ＝１２７のテーブルはｎ＊２およびｎ＊２＋１に格納しなければならない。座標１２７は、この特定の実施形態においては通常はアクセスされないため空のままにしておいてもよい。他の実施形態ではこの問題をまったく回避できるか、あるいは異なる変換問題を有する。
【００６２】
より詳細な変換ユニット３００例の説明
図１４〜２２はさらなる例として、ライティング計算３０２に用いられるライティングパイプラインを含む変換ユニット３００のより詳細な実施形態を示す。このシステム５０の実施例において、変換ユニット３００はハードウェアにおいてライティングを頂点毎の計算としてサポートする。このことは、ライティングされている頂点毎に色（ＲＧＢ）値が演算され得ること、そしてこれらの色が、各ライティングされたトライアングルの表面にわたって線形補間されることができることを意味する（グローシェーディングとして公知）。本実施例における変換ユニット３００は、拡散局所スポット光をフルにサポートし、また無限鏡面ライティングもサポートする。
【００６３】
本例における変換ユニット３００は、拡散減衰をサポートする。これは、オブジェクトの前面が側面よりも明るく、かつ背面が最も暗くなることが可能であることを意味する。変換ユニット３００は、頂点の法線をサポートすることにより、拡散減衰を提供する。各頂点について、頂点の法線をその頂点と光の位置との間のベクトルに対して比較する。
【００６４】
本実施例の変換ユニット３００はまた、局所光をサポートする。局所光は、その世界の中で位置を有し、また方向も有する可能性がある。各光は位置を有するように定義される。各頂点の位置および光の位置を用いて、変換ユニット３００は頂点毎の距離減衰を行うことができる。これはオブジェクト上で輝く光の輝度を、オブジェクトが光から遠ざかるにつれて減少させることが可能であることを意味する。
【００６５】
本実施例における変換ユニット３００はまた、指向性ライティングをサポートする。サポートは、非指向性光から弱指向性効果、そして高指向性スポット光にまでわたる。これらの効果は角度減衰によってサポートされる。従って、光の「ビーム内」に直に存在する頂点を、ビームの外側あるいは光の後ろに存在する頂点よりも明るくさせることが可能である。
【００６６】
局所拡散光は、距離減衰および角度減衰の両方を受けることができる。適切なライティング式をプログラムすることにより、アプリケーションのプログラマは、減衰値を出力色またはアルファとして（あるいはテクスチャ座標生成の場合にはテクスチャ座標として）得ることが可能である。
【００６７】
例示の実施形態において、変換ユニットは８個の物理光をサポートする。アプリケーションのプログラマは、各光の減衰パラメータ、位置、方向、および色を記述することができる。アプリケーションのプログラマはまた、ライティング式の結果を累積する、最大４個の物理カラーチャネルを制御することができる。光をチャネルと対応付けることにより、アプリケーションのプログラマは頂点毎の複数の光の効果を加算するか、あるいはそれらを後でテクスチャ環境ユニット６００において結合するかを選択することができる。テクスチャ環境ユニット６００が利用可能なチャネル数は、アプリケーションのプログラマによって設定される。場合によっては（例えばカラーチャネルを用いてテクスチャ座標を生成するとき）、ライトチャネルは演算されるが色または不透明度としては出力されない。前述のように、変換ユニット３００は２つのカラーチャネルを同時に計算するようにパイプライン化されているが、１つのカラーチャネルだけをブレンディングのために直接テクスチャ環境ユニット６００に供給してもよい。その他のカラーチャネルは、テクスチャ座標の形でテクスチャユニット５００に提供され得る。
【００６８】
各カラーチャネルは、カラーソースの選択において減衰を可能にする。光マスクが、最大８個の光をチャネルと対応付ける。図１４のチャネルを参照し、最大８個の異なる光を２つのカラーチャネルおよび２つのアルファチャネルのうちの任意のものと対応付けることにより、一方がテクスチャ座標に変換され得る２つの独立な出力が提供される例を示している。
【００６９】
図１４に示すように、本実施例における変換ユニット３００は２つのＲＧＢＡ色（色０および色１）を生成する。各出力色はＲＧＢ用に１つおよびアルファ用に１つの２つのライティング関数を有し、ポリゴン毎頂点毎につき計４つのライティング関数を有する。４個のそのような光は、例えばテクスチャリングなどの様々なライティング効果を可能にする。各関数は、変換ユニット３００が保持するグローバルアンビエント色および８個の光の状態に基づく、動作中の材質の色を含み得る。これらの式は拡散、鏡面、およびスポット光減衰を可能にする。ライティングデータパスは、好適な実施例においては局所拡散スポット光について最適であるように設計されるが、同じデータパスでテクスチャ型ライティングのための鏡面ハイライトおよび／または減衰係数を生成することも可能である。上述のように、光の色を用いてテクスチャ座標を生成することもできる。
【００７０】
ライティング計算の例
変換ユニット３００によって実行されるライティング式の例は以下の通りである。
【数２】
2011090699.tif 000006
【００７１】
本実施例において、材質およびグローバルアンビエント色はレジスタから得てもよく、あるいはコマンドプロセッサ２００から頂点色の形で得てもよい。８個より多くの光を要求するアプリケーションは、メインプロセッサ１１０上で実行するソフトウェアに基づいて、結果が頂点色のうちの１つになるように追加的な光からの照度を演算して、その頂点色を用いるようにアンビエントソースレジスタを設定し得る。所望であれば、メインプロセッサ１１０がソフトウェアを用いてライティング計算のいずれかまたは全部を演算し、結果得られたこれらの演算出力を頂点色の形として、テクスチャ座標へ変換されるために変換ユニット３００に供給することが可能である。あるいは、メインプロセッサは演算されたテクスチャ座標を、テクスチャマッピングのためにテクスチャユニット５００に渡してもよい。
【００７２】
「ＬｉｇｈｔＦｕｎｃ」パラメータを無効にすることにより、材質の色が変更されずに変換ユニット３００を通過する。これを用いて、無色ライティング関数出力に応答して複数の１Ｄテクスチャのうちのいずれをテクスチャマッピング動作に用いるかを、メインプロセッサ１１０がアプリケーションプログラムのソフトウェア制御に基づき直接選択することを、可能にすることができる。
【００７３】
各ライティング関数において、利用可能な８個の光のいずれかまたは全部が許可され得る。光毎の照度の和は本実施例では［−１，１］にクランプされ、グローバルアンビエント項を加える前に整数２の補数に変換される。照度の総計が［０，１］にクランプされるため、材質は本実施例におけるライティングを通じては明るくなり得ない。もしこの効果が望まれる場合は、光の色を材質の色で予め乗算し、式中の材質の色を１．０に設定してもよい。他の実施形態例において、ライティングを通じて材質をより明るくすることを可能にするための他の構成が提供され得る。
【００７４】
本実施形態において、結果が単色でも十分な場合には、アルファ式を用いることができる。その結果として得られるアルファ値は、本実施例のテクスチャ環境ユニット６００において、他のＲＧＢおよびアルファ値と組み合わせられることができる。例えば、チャネル０色の色出力に拡散結果を出し、色０チャネルのアルファ出力に鏡面結果を出し、かつテクスチャ環境ユニット６００によって拡散色をテクスチャ色で乗算し、テクスチャ環境ユニット６００内の１つのステージで（白色などの）鏡面ハイライトを加えることが可能である。
【００７５】
本実施例の拡散減衰関数において、コマンド（Ｎ・Ｈ）［０，１］クランプ以上で柔軟性がもたらされる。拡散プロパティを有さないあるいは未クランプのままにされたライティング式については減衰が無効にされ得る。未クランプの内積は、光に基づくテクスチャ生成で照度を１８０°制御することを可能にする。本実施例においては照度はクランプされるため、ｃｏｌｏｒcおよびａｍｂcを適切に用いることにより、符号付きライティング関数を適切にスケーリングおよびバイアスし得る。本実施例において、１つのライティング式において使用できる拡散減衰関数が、３例提供される。すなわち、
【数３】
2011090699.tif 000007
である。
【００７６】
本実施例における角度減衰ロジックは、光−方向ベクトルおよび光−頂点ベクトルの内積に基づく２次多項式を演算する。二乗項および線形項を外挿することにより、鋭角的なフォールオフが得られる。スポット光角度の外側の角度について外挿により負の値が発生するのを避けるため、クランピングを用いる。別の２次多項式の逆関数を用いることにより、レンジ減衰を行うことができる。距離値ｄは、頂点から光の位置までのベクトルの長さである。距離減衰だけの光の式をテクスチャ型の光に用いることによって、投影あるいはその他のテクスチャの距離に基づいた照度フォールオフを、シミュレートすることができる。
【００７７】
この同じロジックを、平行光源についての一般の鏡面減衰（Ｎ・Ｈ）Sを近似するために用いることができる。光−頂点ベクトルおよび光−方向ベクトルのかわりに、法線および半角ベクトルをそれぞれ用いてもよい。ライティング関数において減衰を無効にすることにより、拡散および鏡面式の両方において非減衰の点（例えば全方位の）光源を用いることが可能になる。本例において、光の角度減衰係数を鏡面式に用い、そして拡散式において減衰をオフにしてもよい。本実施例の鏡面式および拡散式は、本実施例において変換ユニット３００内ではなくテクスチャ環境ユニット６００内で組み合わせられるが、他の実施形態が可能である。
【００７８】
例示の減衰関数のさらなる詳細は以下の通りである。
【数４】
2011090699.tif 000008
【００７９】
変換ユニット３００のブロック図の実施形態例
図１５は、システム５０の変換ユニット３００の実施形態例のブロック図である。本実施例における変換ユニット３００は、
・トップオブパイプライン部３３０
・光部３３２
・ボトムオブパイプライン部３３４
の３つの主要部を有する。
【００８０】
本実施例におけるトップオブパイプライン部３３０は、光部３３２、コンテキスト行列格納３３６、入力ＦＩＦＯバッファ３３８内積ユニット３４０、投影ブロック３４２、テクスチャドット２ブロック３４６、クリッピング検出器３４８、およびバイパスＦＩＦＯブロック３５０を有する。本実施例において、トップオブパイプライン（ＴＯＰ）部３３０は、以下の例示的な関数を実行する。
・頂点変換（３つの内積）
・法線変換（３つの内積）
・テクスチャ変換（テクスチャに対して２または３つの内積）
・投影変換（単純化３つの内積）そして光部３３２は以下のカラーチャネル関数を実行する。
・カラーチャネル０拡散演算（１つの内積Ｎ・Ｌ）
・カラーチャネル０拡散演算（光毎につき１つの内積Ｌ2）
・カラーチャネル０拡散演算（１つの内積Ｎ2）
【００８１】
さらに入力ＦＩＦＯは、例えば以下の情報を特定する頂点毎の頂点記述子を受け取る。
・図形情報ＸＹＺ、
・法線ベクトル情報ＮX、ＮY、ＮZ
・頂点毎につきＲＧＢＡ色０
・頂点毎につきＲＧＢＡ色１
・従法線ベクトルＴX、ＴY、ＴZ
・従法線ベクトルＢX、ＢY、ＢZ
・テクスチャ０データＴ0、
・テクスチャ１からｎデータＳn、Ｔn
【００８２】
適切な頂点毎の情報が光部３３２に供給されて、ライティング演算を可能にする。
【００８３】
図１５に示す実施例における光部３３２は、ライティングパラメータメモリ３５２、法線メモリ３５４、および光データパス３５６を含んでいる。
【００８４】
光パラメータメモリ３５２は、光データパス３５６が使用する様々な光パラメータを記憶する。このように、光パラメータ３５２は様々なライティング情報（例えば光ベクトル、光パラメータなど）の全てを保持する。本実施例において、グローバル状態およびアンビエント状態の両方がこのメモリに記憶される。本実施例において各ワードは３２ビットで書かれているが、上位２０ビットのみが保持される。本実施例において、各位置は３ワード幅を有し、最小ワード書き込みサイズは３ワードである。以下に光パラメータメモリ３５２の内容例を示す。
【表３】
2011090699.tif 000009
【００８５】
本実施例における光部３３２の全体図を図１６に示す。簡潔に言えば、光部３３２は以下の局所ライティング演算を行う。
【数５】
2011090699.tif 000010
これは、以下の頂点毎の局所光ベクトル演算
【数６】
2011090699.tif 000011
を必要とする。この後、
【数７】
2011090699.tif 000012
を演算する必要がある。
【００８６】
このように、拡散減衰計算は、光ベクトルおよび視点空間法線を必要とする。例示の実施形態において、０へのクランピングは内部フラグを条件としてもよい（例えば１．０にクランプされてもまったくクランプされなくてもよい。）。拡散光が負の内積を有することを許してもよい。変換内積ユニットが幾何学的な視点空間変換を演算する一方で、ライティング内積ユニットが視点空間法線を演算してもよい。そして、ライティング内積ユニットがＮ・Ｌ、Ｌ2およびＮ2内積を演算し得る。この後、本実施例では結果を正規化することにより、正規化光ベクトル法線情報を提供する。正規化後、正規化の中間結果（例えば距離の二乗と距離とコサインＮ・Ｌと）を用いて正規化係数ならびに減衰式を演算する。そして、光アンビエントベクトルを乗算する。得られた３つ組は、光毎の減衰された拡散成分である。これを２の補数整数に変換し、得られた３つの値を整数アキュムレータに累積する。このアキュムレータは、アンビエント項と他の光からの任意の他の拡散項を加算する。最終的な和が頂点毎の色である（本実施例においては０から２５５にクランプされた８ビットＲＧＢフォーマット）。
【００８７】
図１７は、図１６に示したベクトルドット／Ｍａｄｄブロック３５７のブロック図の例を示す。Ｎおよび他の全ての内積を演算するために同じ内積ユニットを用いると、各光が同じデータパス要素を複数回再使用しなければならないため、性能がやや劣るかもしれず、光のスケジューリングが難しくなる。これは、複雑な制御問題につながる。設計を単純化するためには、第２の制限された内積ユニットを実施することで様々な演算を分離してもよい。第１の内積ユニットが変換法線を演算し、他方の内積ユニットが頂点変換を演算してもよい。次にベクトル加算が局所ライティングについての光ベクトルを演算し得る。第２の内積ユニットは、（鏡面光について）Ｎ2、Ｌ2、Ｎ・Ｌ、Ｎ・Ｈを演算し得る。本実施例においてこれは、フィードバックのない完全にパイプライン化された態様で実現することができる。図１７を参照のこと。
【００８８】
図１８は、図１６に示す正規化器３６０の実施形態の一例を示す。いったんライティングベクトル値が演算されれば、本実施例は結果を正規化し、減衰を演算する。本実施例の正規化器３６０は、以下の入力を受け付け、
・コサイン減衰：Ｌ・Ｄｉｒ、１／ｓｑｒｔ（Ｌ）
・距離減衰：Ｌ2、Ｌ
・拡散係数：Ｎ・Ｌ、Ｎ2、Ｌ2、
そして図１８に示す例示の正規化器３６０によって行われる以下のステップを用いて距離減衰を演算する。
１．Ｋ2ｄ2を演算
２．Ｋ2ｄ2+K0を演算
３．ｄを演算
４．Ｋ1ｄを演算
５．Ｄ2Ｄ2＋Ｋ1ｄ＋  ＫＯを演算
６．１／（Ｋ2ｄ2＋Ｋ1ｄ＋Ｋ０）を演算
【００８９】
図１９は、距離減衰ユニット３６２の一例を示す。例示の距離減衰器の実施形態３６２は、以下のステップ例を用いてコサイン減衰を演算する。
１．Ｃｏｓ＝Ｃｌａｍｐ０（Ｌ．Ｌｄｉｒ）を演算
２．Ｃｏｓ2を演算
３．Ａ2Ｃｏｓ2を演算
４．Ａ1Ｃｏｓを演算
５．Ａ1Ｃｏｓ＋Ａ０を演算
６．Ａ2Ｃｏｓ2＋Ａ1Ｃｏｓ＋Ａ０を演算
７．Ｃｌａｍｐ＿０（Ａ＋２＋Ｃｏｓ2＋Ａ1Ｃｏｓ＋Ａ０）を演算
【００９０】
図２０は、以下を演算する光スケーラ３６４の実施形態の一例を示す。
・１／ｓｑｒｔ（Ｎ2）
・１／ｓｑｒｔ（Ｌ2）
・Ｎ・Ｌ（ｓｑｒｔ（Ｎ2）×ｓｑｒｔ（Ｌ2））
【００９１】
ユニットのうちのいくつか（例えば１／ｓｑｒｔおよび乗算器のうちのいくつか）は、図１７〜２０の様々なデータパスの実施例の間で共有することができる。従って、ある実施例がおよそ１８個の乗算器と１０個の加算器を必要とすることもある。反転および１／ｓｑｒｔは、テーブルルックアップまたは単純な１パスニュートン−ラプソン補間器またはその他の何らかのパイプライン補間器を用いて、行うことができる。アルファおよび鏡面書き込み演算は、ライティング式の変更でしかないため、本実施例において追加的なハードウェアをいっさい必要としない。
【００９２】
図２１は、整数アキュムレータ３３６の実施形態の一例を示す。各色について新しい属性が到着したとき、その色が累積される。ある色について全ての光が累積されると、アンビエントが加算され（例えば頂点色ＦＩＦＯから、あるいはレジスタから）、材質の色が乗算される。次に、最終色およびテクスチャ生成の構築により、最終ＲＧＢ／Ａ色が累積／フォーマットレジスタに累積される。色／テクスチャが演算されれば、出力ＦＩＦＯに書き込まれる。制御は以下の一般ガイドラインに従い得る。
Ｉｆ  （新しい属性  ＝＝  色Ｘについての新しい光）
新しい光を色Ｘに累積
色Ｘについての光の数をインクリメント
Ｅｎｄ
Ｉｆ  （色Ｘについての光の数が最大）
色を乗算器に転送
材質の乗算を実行
Ｅｎｄ
Ｉｆ  （色Ｘが乗算状態）
色Ｘをまず累積
Ｅｎｄ
Ｉｆ  （色Ｘの累積が完了（ＲＧＢＸまたはＡＸＸまたはＲＧＢＡ））
色が使用可能されていれば、色Ｘを色についてフォーマット
テクスチャが使用可能されておりかつ色が使用不可にされているかあるいは色が既にロードされていれば、色Ｘをテクスチャについてフォーマット
出力ＦＩＦＯにフォーマットされたデータをロード、色／テクスチャカウントをインクリメント
Ｅｎｄ
Ｉｆ  （色カウントおよびテクスチャカウントが最大）
ＢＯＰにデータを書き込む
ｆｉｆｏをポップするＥｎｄ
【００９３】
図２２は、本実施例において光パイプライン３２２を制御するために用いられるステージ遷移図の一例を示す。調停ロジックが、光データパス内に送出された一連の事象を決定する。本実施例の調停器は、その事象に依存して４サイクル毎あるいは８サイクル毎にしか新しい事象を送出することができない。可能な事象のリストは、
・特定の色／アルファについての光演算
・バンプマップ演算
を含む。
【００９４】
上記の事象について、調停器は４／８サイクル毎に制御パイプライン内に属性をドロップする。これらの属性の各々は、光パイプライン３２２に入れられる事象のための実行命令を含んでいる。パイプラインの終端において、色／テクスチャが完了しているか否かを決定するために用いられる局所カウントをインクリメントするために、これらの属性が用いられる。
【００９５】
以下に、変換ユニット３００がどのように挙動してどのようにデータおよびテクスチャなどを扱うかを制御するために用いられる、制御レジスタの例を示す。
【表４】
2011090699.tif 000013
2011090699.tif 000014
2011090699.tif 000015
2011090699.tif 000016
2011090699.tif 000017
2011090699.tif 000018
2011090699.tif 000019
2011090699.tif 000020
【００９６】
アプリケーションプログラミングインターフェースの例
以下に、一実施形態例におけるライティング関数からのテクスチャ座標生成に関連する、ＡＰＩ呼び出しの例をいくつか挙げる。
【００９７】
ＧＸＳｅｔＴｅｘＣｏｏｒｄＧｅｎ
説明
この関数を用いて、テクスチャ座標がどのように生成されるかを指定する。出力テクスチャ座標は通常は入力属性（位置、法線、またはテクスチャ座標）の何らかの変換の結果である。頂点毎のライティング計算の出力カラーチャネルからも、テクスチャ座標を生成することができる。
【００９８】
Ｃ言語シンタックスにおいて、テクスチャ座標生成関数は以下のようなものになる。
ｄｓｔ＿ｃｏｏｒｄ＝ｆｕｎｃ（ｓｒｃ＿ｐａｒａｍ，  ｍｔｘ）；
【００９９】
ＡＰＩ関数呼び出し例の用法の一例は、
Ｖｏｉｄ  ＧＸＳｅｔＴｅｘＣｏｏｒｄＧｅｎ（
ＧＸＴｅｘＣｏｏｒｄＩＤ      ｄｓｔ＿ｃｏｏｒｄ，
ＧＸＴｅｘＧｅｎＴｙｐｅ      ｆｕｎｃ，
ＧＸＴｅｘＧｅｎＳｒｃ        ｓｒｃ＿ｐａｒａｍ，
ｕ３２          ｍｔｘ  ）；
である。
【０１００】
ＧＸＳｅｔＶｔｘＤｅｓｃによって設定される現在の頂点記述子は、グラフィックスプロセッサへのデータ入力を記述する。ＧＸＳｅｔＴｅｘＣｏｏｒｄＧｅｎを用いることにより、アプリケーションは入力データから新しい出力テクスチャ座標を作成することができる。ｄｓｔ＿ｃｏｏｒｄパラメータは、出力テクスチャ座標に名前を与えるために用いられる。このテクスチャ座標は、ＧＸＳｅｔＴｅｖＯｒｄｅｒを用いてテクスチャに結びつけることができる。関数ＧＸＳｅｔＮｕｍＴｅｘＧｅｎｓは、ＧＸＳｅｔＴｅｖＯｒｄｅｒ関数で利用可能なＧＸ＿ＴＥＸＣＯＯＲＤ０から開始する連続する複数のテクスチャ座標を指定する。
【０１０１】
入力テクスチャ座標は、テクスチャ座標生成ハードウェアを通る。ＧＸＩｎｉｔは、ハードウェアを（このＡＰＩを呼び出して）初期化することにより、ＧＸ＿ＩＤＥＮＴＩＴＹ行列によって変換される全てのテクスチャ座標が、入力座標が変更されずにテクスチャハードウェアを通されたかのように見えるように変換される。
【０１０２】
列挙ＧＸＴｅｘＭｔｘは、ｍｔｘとして供給され得るテクスチャ行列名のデフォルトのセットを定義する。行列名は実際には、マトリクスメモリ中のロードされた行列の第１行目を示す行アドレス（１行につき４フロート）である。モデルビュー行列およびテクスチャ行列は、本実施例においてマトリクスメモリを共有する。
【０１０３】
例：頂点ライティング計算からのテクスチャ座標生成
このタイプのテクスチャ座標生成は、漫画的なライティング効果を創出するために用いることができる。カラーチャネル結果のうちの１つをテクスチャ座標に変換する。
【０１０４】
ＧＸ＿ＴＧ＿ＳＲＴＧ
座標ｓはチャネルの８ビット赤成分と等しく設定される。座標ｔはカラーチャネルの８ビット緑成分と等しく設定される。漫画的なライティングにおいて座標ｓは光の強度を表し、強度を色に変換するために任意の１Ｄテクスチャルックアップに入力される。座標ｔは材質の色を表すために用いられ、２Ｄテクスチャから１Ｄテーブルを選択するために用いられる。ＧＸ＿ＴＧ＿ＳＲＴＧ関数を用いて生成されるテクスチャ座標は、変換（ＧＸ＿ＴＧ＿ＭＴＸ２×４またはＧＸ＿ＴＧ＿ＭＴＸ３×４）およびバンプマップ関数（ＧＸ＿ＴＧ＿ＢＵＭＰ０−３）によって生成される任意の座標の後に生成されなければならない。
【０１０５】
１Ｄの強度−色テーブルの配列を表すテクスチャは、本実施例において注意深く構築されなければならない。各テーブル（行）は二重に記述されなければならない。座標ｓおよび座標ｔは８ビット色から生成されるため、２５６×２５６の最大テクスチャを用いることができる。このテクスチャサイズにおいて、１２７個のテーブルが利用可能である（（２５６−１）／２）。
【０１０６】
２行テーブル中で正しく中央に位置される座標ｔを作成する、緑チャネル色を生成するためのルールの一例は、
ｎ＝１Ｄ強度ルックアップテーブルインデックス  （２５６×２５６テクスチャにおいて０〜１２６）
ｒｏｗｓ＝テクスチャ中の行数、２の倍数
ｉｆ  （（２＊ｎ  ＋１）＜（（ｒｏｗｓ−１）／２））
ｇｒｅｅｎ＝２＊ｎ＋１
ｅｌｓｅ
ｇｒｅｅｎ＝２＊ｎ
である。
【０１０７】
例
／／２Ｄテクスチャルックアップについてｃｏｌｏｒ０をｓ，ｔに変換、
行列は不使用
ＧＸＳｅｔＴｅｘＣｏｏｄＧｅｎ（ＧＸ＿ＴＥＸＣＯＯＲＤ２，ＧＸ＿Ｔ
Ｇ＿ＳＲＴＧ，ＧＸ＿ＴＧ＿ＣＯＬＯＲ０，ＧＸ＿ＩＤＥＮＴＩＴＹ）；
【０１０８】
機能順序付け
本実施例において、テクスチャ座標は機能順に生成される。すなわち、まず全ての変換（ＧＸ＿ＴＧ＿ＭＴＸ２×４またはＧＸ＿ＴＧ＿ＭＴＸ３×４）、次にバンプマップ（ＧＸ＿ＴＧ＿ＢＵＭＰ０〜３）、そして次にライティングからのテクスチャ座標生成（ＧＸ＿ＴＧ＿ＳＲＴＧ）である。
【０１０９】
ＧＸＳｅｔＮｕｍＴｅｘＧｅｎｓ
説明
この関数は、テクスチャ環境（ＴＥＶ）ステージにおいて生成され利用可能であるテクスチャ座標の数を設定する。テクスチャ座標は、ＧＸＳｅｔＴｅｘＣｏｏｒｄＧｅｎにより記述される入力データから生成される。生成されたテクスチャ座標は、ＧＸＳｅｔＴｅｖＯｒｄｅｒを用いて特定のテクスチャおよび特定のテクスチャ環境（ＴＥＶ）ステージにリンクされる。
【０１１０】
ＧＸ＿ＴＥＸＣＯＯＲＤ０から開始して連続する複数のテクスチャ座標を生成することができる。最大８個のテクスチャ座標を生成し得る。ｎＴｅｘＧｅｎｓが０に設定されると、テクスチャ座標は生成されない。この場合、少なくとも１つのカラーチャネルが出力されなければならない。ＧＸＳｅｔＮｕｍＣｈａｎｓを参照のこと。
引数
ｎＴｅｘＧｅｎｓは生成されるテクスチャ座標の数である。
用法例
ｖｏｉｄ  ＧＸＳｅｔＮｕｍＴｅｘＧｅｎｓ（ｕ８  ｎＴｅｘＧｅｎｓ）；
【０１１１】
ＧＸＳｅｔＮｕｍＣｈａｎｓ
説明
この関数は、テクスチャ環境（ＴＥＶ）ステージに出力されるライティングカラーチャネルの数を設定する。カラーチャネルは、頂点毎のライティング効果を演算するために用いられるメカニズムである。カラーチャネルは、ＧＸＳｅｔＣｈａｎＣｔｒｌを用いて制御される。カラーチャネルは一般に、特定のテクスチャ環境（ＴＥＶ）ステージにリンクされる。
【０１１２】
この関数は基本的に、ラスタライズされる頂点毎の色の数を定義する。ｎＣｈａｎｓが０に設定された場合、少なくとも１つのテクスチャ座標が生成されなければならない。ＧＸＳｅｔＮｕｍＴｅｘＧｅｎｓを参照。ｎＣｈａｎｓが１に設定されると、チャネルＧＸ＿ＣＯＬＯＲ０Ａ０がラスタライズされる。ｎＣｈａｎｓが２（最大値）に設定されると、ＧＸ＿ＣＯＬＯＲ０Ａ０またはＧＸ＿ＣＯＬＯＲ１Ａ１がラスタライズされる。
引数
ｎＣｈａｎｓはラスタライズされるカラーチャネルの数である。
用法例
ｖｏｉｄ  ＧＸＳｅｔＮｕｍＣｈａｎｓ（ｕ８  ｎＣｈａｎｓ）；
【０１１３】
ＧＸＳｅｔＣｈａｎＣｔｒｌ
説明
この関数は、あるカラーチャネルについてのライティングコントロールを設定する。カラーチャネルは、対応して１つ以上（最高８個）の光を有することができ、これはｌｉｇｈｔ＿ｍａｓｋを用いて設定される。ｄｉｆｆ＿ｆｎおよびａｔｔｎ＿ｆｎパラメータは、このチャネルに対応付けられた全ての光についてのライティング計算を制御する。ａｍｂ＿ｓｒｃおよびｍａｔ＿ｓｒｃは、入力ソース色がレジスタ色由来であるか頂点色由来であるかを選択するために用いられ得る。チャネル使用可能がＧＸ＿ＦＡＬＳＥに設定されると、材質のカラーソース（ｍａｔ＿ｓｒｃにより設定される）はチャネルの出力色としてそのまま渡される。チャネル使用可能がＧＸ＿ＴＲＵＥに設定されると、出力色は他のコントロールの設定（すなわちライティング式）に依存する。ＧＸＩｎｉｔは、全てのチャネルについての許可をＧＸ＿ＦＡＬＳＥへに設定する。ＧＸＳｅｔＣｈａｎＣｔｒｌはライティングチャネルをコンフィギュレーションする。チャネル演算の結果を出力するためには、関数ＧＸＳｅｔＮｕｍＣｈａｎｓを用いる。
【０１１４】
チャネルＧＸ＿ＣＯＬＯＲ０およびＧＸ＿ＡＬＰＨＡ０はライティングのために別々に制御されるが、これらは１つのＲＧＢＡ色（実効的にＧＸ＿ＣＯＬＯＲ０Ａ０）として一緒にラスタライズされる。同じことがＧＸ＿ＣＯＬＯＲ１およびＧＸ＿ＡＬＰＨＡ１にも言え、これらは実効的にＧＸ＿ＣＯＬＯＲ１Ａ１としてラスタライズされる。グラフィックスハードウェアには色用ラスタライザが１つしかないため、アプリケーションは、テクスチャ環境ユニット（Ｔｅｖ）内の各ステージに対してどの色をラスタライズするかを選択する。これはＧＸＳｅｔＴｅｖＯｒｄｅｒ関数を用いて達成される。
【０１１５】
チャネルＧＸ＿ＣＯＬＯＲ１Ａ１において頂点色を用いるために、頂点毎につき２つの色が供給される。すなわち、現在の頂点記述子中でＧＸ＿ＶＡ＿ＣＬＲ０およびＧＸ＿ＶＡ＿ＣＬＲ１の両方が許可される。現在の頂点記述子中でＧＸ＿ＶＡ＿ＣＬＲ０かＧＸ＿ＶＡ＿ＣＬＲ１かのいずれか一方のみが許可される場合、頂点色はチャネルＧＸ＿ＶＡ＿ＣＯＬＯＲ０Ａ０に渡される。
【０１１６】
ａｍｂ＿ｓｒｃがＧＸ＿ＳＲＣ＿ＲＥＧに設定されると、ＧＸＳｅｔＣｈａｎＡｍｂＣｏｌｏｒにより設定される色がアンビエント色として用いられる。ｍａｔ＿ｓｒｃがＧＸ＿ＳＲＣ＿ＲＥＧの場合、ＧＸＳｅｔＣｈａｎＭａｔＣｏｌｏｒにより設定される色が材質の色として用いられる。
引数
【表５】
2011090699.tif 000021
用法例
ｖｏｉｄ  ＧＸＳｅｔＣｈａｎＣｔｒｌ（
ＧＸＣｈａｎｎｅｌＩＤ      ｃｈａｎ，
ＧＸＢｏｏｌ                ｅｎａｂｌｅ，
ＧＸＣｏｌｏｒＳｒｃ        ａｍｂ＿ｓｒｃ，
ＧＸＣｏｌｏｒＳｒｃ        ｍａｔ＿ｓｒｃ，
ＧＸＬｉｇｈｔＩＤ          ｌｉｇｈｔ＿ｍａｓｋ，
ＧＸＤｉｆｆｕｓｅＦｎ      ｄｉｆｆ＿ｆｎ，
ＧＸＡｔｔｎＦｎ            ａｔｔｎ＿ｆｎ）；
【０１１７】
例：局所拡散スポット光
本例では、どのようにＧＸ＿ＣＯＬＯＲ０チャネルをコンフィギュレーションして頂点色を局所拡散スポット光でライティングするかを示す。関数ＧＸＩｎｉｔＬｉｇｈｔＰｏｓおよびＧＸＩｎｉｔＬｉｇｈｔＤｉｒを用いて、光の位置および方向を初期化する。光の位置および方向は、光オブジェクトの設定以前に視点空間に変換されているものとする。拡散ライティングを許可するために、ｄｉｆｆ＿ｆｎがＧＸ＿ＤＦ＿ＣＬＡＭＰに設定される。これはスポット光であるため、ａｔｔｎ＿ｆｎがＧＸ＿ＡＦ＿ＳＰＯＴに設定される。スポット光の角度減衰関数のタイプは光で決定され、ここでＧＸＩｎｉｔＬｉｇｈｔＳｐｏｔにより設定される。距離減衰関数がＧＸＩｎｉｔＬｉｇｈｔＤｉｓｔＡｔｔｎを用いて設定される。
【表６】
2011090699.tif 000022
【０１１８】
例：鏡面光
本例では、鏡面光用にどのようにＧＸ＿ＣＯＬＯＲ０を設定するかを示す。ＧＸＩｎｉｔＳｐｅｃｕｌａｒＤｉｒ関数を、光の方向を設定するために用いる。光オブジェクトの初期化以前に、方向は視点空間に変換されなければならない。鏡面光は無限遠にあると考えられるので、位置パラメータは不要である。角度減衰関数および距離減衰関数を用いて、鏡面光に対する指数減衰関数を近似する。ＧＸＩｎｉｔＬｉｇｈｔＳｈｉｎｉｎｅｓｓを呼び出し、ライティングされた材質がどれくらい輝いて見えるかを制御する（減衰パラメータを設定する）。ａｔｔｎ＿ｆｎがＧＸ＿ＡＦ＿ＳＰＥＣに設定され、鏡面演算を許可する。
【表７】
2011090699.tif 000023
【０１１９】
例：平行指向性拡散光
ハードウェアは平行指向性拡散光をサポートしないが、ライティングされるべき全オブジェクトから光を非常に遠く置くことにより、「ほぼ平行な」光を得ることは可能である。光の位置がオブジェクトから非常に遠ければ、全ての光線は平行であると見なし得る。
【表８】
2011090699.tif 000024
【０１２０】
光は拡散チャネルおよび鏡面チャネルの両方に用いることが可能
局所拡散あるいは鏡面のいずれの計算がチャネルにおいて実行されるかは、チャネルコントロールによって決定される。（チャネルに対応付けられた）光のパラメータは、通常はこれらの演算のうちの１つを想定して設定される。例えば、アプリケーションは局所拡散光（拡散チャネルで用いられる）に対しては位置および方向を設定し、鏡面光（鏡面チャネルで用いられる）に対しては方向のみを設定する。しかし、アプリケーションが指向性の拡散光のみを必要とする場合（光の位置が非常に遠いために光の全ての光線が平行であると見なし得る）、同じ光のパラメータを鏡面チャネルと拡散チャネルとの両方に用いることができる。この場合、ＧＸＩｎｉｔＳｐｅｃｕｌａｒＤｉｒを用いて光のパラメータを初期化する。
【０１２１】
例：ライティング前を考慮した頂点毎の光
本例では、頂点毎ＧＸ＿ＶＡ＿ＣＬＲ０として供給される（ＧＸＳｅｔＶｔｘＤｅｓｃを参照）ライティング前の色（例えばアートツールで演算される）を、拡散局所光の結果に対して加える。この例において、以下の式を実施すればよい。
【数８】
2011090699.tif 000025
【０１２２】
アンビエントスケールは、光がオブジェクトに当たっていない時のライティング前の色の最小量を定義する。ａｍｂ＿ｓｃａｌｅとｄｉｆｆ＿ｓｃａｌｅとの和は１．０に等しいはずなので、オブジェクトが最も明るい光の中にあるとき、頂点色はライティング前の色に等しい。
【０１２３】
材質の色は、頂点毎の色（ライティング前の色）であるようにコンフィギュレーションされる。アンビエント色レジスタはａｍｂ＿ｓｃａｌｅに等しく設定される。光の色はｄｉｆｆ＿ｓｃａｌｅによってスケーリングされる。
【表９】
2011090699.tif 000026
【０１２４】
例：４つの投影光に対する減衰
この例では、４つの投影テクスチャ光に対してどのように局所光減衰値を計算するかを示す。頂点毎に提供される色はない。材質の色はチャネルマテリアルレジスタから入来し、減衰をパスするように設定される（１．０で乗算）。アンビエント色からの寄与はない。各チャネルは、テクスチャ環境（Ｔｅｖ）ユニットにおいて投影テクスチャを減衰するために用いられ得る。
【表１０】
2011090699.tif 000027
【０１２５】
ＧＸＳｅｔＣｈａｎＭａｔＣｏｌｏｒ
説明
この関数は、カラーチャネルｃｈａｎに対する材質の色レジスタを設定する。材質の色は、ＧＸＳｅｔＣｈａｎＣｔｒｌにより設定される材質のソースがＧＸ＿ＳＲＣ＿ＲＥＧならば使用される。
引数
ｃｈａｎ＝  カラーチャネル
用法例：
ｖｏｉｄ  ＧＸＳｅｔＣｈａｎＭａｔＣｏｌｏｒ（
ＧＸＣｈａｎｎｅｌＩＤ      ｃｈａｎ，
ＧＸＣｏｌｏｒ              ｍａｔ＿ｃｏｌｏｒ  ）；
【０１２６】
説明に役立つ実例
以下の例におけるアプリケーションプログラミングインターフェース関数および関連するパラメータは、非クランプの拡散ライティング関数を用いてテクスチャ座標を生成するために用いることができ、あるいは、各頂点の光の色の赤色成分において１次元テクスチャマップをルックアップするためのテクスチャ座標を生成するために用いられ、第２のテクスチャ座標が緑色成分によって生成され、２次元テクスチャマップから１次元テクスチャラインを選択するために用いられ得る。
【表１１】
2011090699.tif 000028
【０１２７】
他の互換性のある実施例
上述のシステム要素５０のうちのいくつかは、上述の家庭用ビデオゲームコンソール構成以外としても実施可能である。例えば、システム５０用に書かれたグラフィックスアプリケーションまたはその他のソフトウェアを、システム５０をエミュレートするなどして互換性を有する異なる構成を持ったプラットフォーム上で実行することができる。もしその別のプラットフォームがシステム５０のハードウェアおよびソフトウェアリソースの一部または全部をうまくエミュレート、シミュレートおよび／または提供することができれば、その別のプラットフォームは、ソフトウェアを首尾よく実行することができる。
【０１２８】
一例として、エミュレータは、システム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供し得る。このエミュレータシステムは、アプリケーションソフトウェアが書かれたシステムのハードウェアおよび／またはソフトウェア要素の一部または全部をエミュレートまたはシミュレートする、ソフトウェアおよび／またはハードウェア要素を有し得る。例えば、エミュレータシステムは、システム５０のハードウェアおよび／またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行するパーソナルコンピュータなどの汎用のデジタルコンピュータからなっていてもよい。
【０１２９】
汎用デジタルコンピュータのいくつか（例えばＩＢＭまたはマッキントッシュのパーソナルコンピュータおよび互換機）は現在、ＤｉｒｅｃｔＸまたはその他の標準的な３ＤグラフィックスコマンドＡＰＩと適合する３Ｄグラフィックスパイプラインを提供する３Ｄグラフィックスカードを備えている。また、標準的な音声コマンドのセットに基づいて高品質なステレオ音を提供するステレオサウンドカードを備えている場合もある。このようなマルチメディア−ハードウェアを備えたパーソナルコンピュータがエミュレータソフトウェアを実行すれば、システム５０のグラフィックスおよびサウンド性能に匹敵する十分な能力を有し得る。エミュレータソフトウェアは、ゲームプログラマがゲームソフトウェアを書いた対象である家庭用ビデオゲームコンソールプラットフォームの処理、３Ｄグラフィックス、音声、周辺およびその他の機能をシミュレートするように、パーソナルコンピュータプラットフォーム上のハードウェアリソースを制御する。
【０１３０】
図２３は、ホストプラットフォーム１２０１、エミュレータ要素１３０３、および記憶媒体６２上に記憶されたゲームソフトウェア実行可能２値画像を用いたエミュレーション処理の全体例を示す。ホスト１２０１は、例えばパーソナルコンピュータ、ビデオゲームコンソール、または十分な演算能力を有する任意のその他のプラットフォームなどの、汎用あるいは専用のデジタル演算装置であり得る。エミュレータ１３０３は、ホストプラットフォーム１２０１上で稼働し、記憶媒体６２からのコマンド、データおよびその他の情報の、ホストによって処理される形式へのリアルタイム変換を提供するソフトウェアおよび／またはハードウェアであり得る。例えば、エミュレータ１３０３は、システム５０によって実行されることが意図される「ソース」２値画像プログラム命令を記憶媒体６２から取り込み、これらのプログラム命令を、ホスト１２０１によって実行その他の処理を行われ得る対象形式に変換する。
【０１３１】
一例として、ソフトウェアが、ＩＢＭ  ＰｏｗｅｒＰＣまたはその他の特定のプロセッサを用いたプラットフォーム上で実行されるように書かれており、ホスト１２０１が異なる（例えばインテルの）プロセッサを用いたパーソナルコンピュータである場合は、エミュレータ１３０３は、１つまたは一連の２値画像プログラム命令を記憶媒体６２から取り込み、これらのプログラム命令を、１つ以上の同等なインテルの２値画像プログラム命令に変換する。エミュレータ１３０３はまた、グラフィックスおよび音声プロセッサ１１４によって処理されることを意図されたグラフィックスコマンドおよび音声コマンドを取り込みおよび／または生成し、これらのコマンドを、ホスト１２０１上において利用可能であるハードウェアおよび／またはソフトウェアグラフィックスおよび音声処理リソースによって処理され得る単数または複数のフォーマットに変換する。一例として、エミュレータ１３０３は、これらのコマンドを、ホスト１２０１の特定のグラフィックスおよび／または音声ハードウェアによって処理され得るコマンドに変換し得る（例えば、標準的なＤｉｒｅｃｔＸ、ＯｐｅｎＧＬ、および／または音声ＡＰＩを用いて）。
【０１３２】
上述のビデオゲームシステムの一部または全ての特徴を提供するために用いられるエミュレータ１３０３には、また、そのエミュレータを用いて実行されるゲームの様々なオプションやスクリーンモードの選択を単純化あるいは自動化するグラフィックスユーザインターフェース（ＧＵＩ）が備えられてもよい。一例において、そのようなエミュレータ１３０３は、また、ソフトウェアが本来意図されたホストプラットフォームに比較して、より高度な機能性をさらに含んでもよい。
【０１３３】
図２４は、エミュレータ１３０２とともに適切に用いられるエミュレーションホストシステム１２０１を示す。システム１２０１は、処理ユニット１２０３およびシステムメモリ１２０５を有する。システムバス１２０７が、システムメモリ１２０５を含む様々なシステム要素を、処理ユニット１２０３に接続する。システムバス１２０７は、メモリバスまたはメモリコントローラを含む数種のタイプのバス構造、周辺バス、および様々なバスアーキテクチャのうちのいずれかを用いた局所バスのうちのいずれでもよい。システムメモリ１２０７は、リードオンリーメモリ（ＲＯＭ）１２５２およびランダムアクセスメモリ（ＲＡＭ）１２５４を有する。パーソナルコンピュータシステム１２０１内の要素間の情報の転送（例えばスタートアップ中など）に役立つ基本的なルーチンを含んだ基本入力／出力システム（ＢＩＯＳ）１２５６が、ＲＯＭ１２５２に格納されている。システム１２０１はさらに、様々なドライブおよび関連するコンピュータ可読性の媒体を有する。ハードディスクドライブ１２０９は、（典型的には固定の）磁気ハードディスク１２１１から読み出し、またこれに対して書き込む。追加的な（可能なオプションである）磁気ディスクドライブ１２１３は、着脱可能な「フロッピー」またはその他の磁気ディスク１２１５から読み出し、また、これに対して書き込む。光ディスクドライブ１２１７は、ＣＤ  ＲＯＭまたはその他の光メディアなどの着脱可能な光ディスク１２１９から読み出し、また、いくつかの構成においては、これに対して書き込む。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、それぞれハードディスクドライブインターフェース１２２１および光ドライブインターフェース１２２５によって、システムバス１２０７に接続されている。そのドライブおよびそれに対応するコンピュータ可読性媒体は、コンピュータ可読性の命令、データ構造、プログラムモジュール、ゲームプログラムおよびパーソナルコンピュータシステム１２０１のためのその他のデータを、不揮発的に記憶する。その他の構成において、コンピュータによりアクセス可能なデータを格納することができる他のタイプのコンピュータ可読性媒体、例えば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイ（Ｂｅｒｎｏｕｌｌｉ）カートリッジ、ランダムアクセスメモリ（ＲＡＭ）リードオンリーメモリ（ＲＯＭ）などもまた使用され得る。
【０１３４】
エミュレータ１３０３を含む複数のプログラムモジュールは、ハードディスク１２１１、着脱式磁気ディスク１２１５、光ディスク１２１９、および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４上に記憶され得る。このようなプログラムモジュールは、グラフィックスおよび音声ＡＰＩを提供するオペレーティングシステム、１つ以上のアプリケーションプログラム、その他のプログラムモジュール、プログラムデータおよびゲームデータを含んでもよい。ユーザは、キーボード１２２７、ポインティング装置１２２９、マイク、ジョイスティック、ゲームコントローラ、衛星放送用アンテナ、スキャナなどの入力装置を介して、コマンドおよび情報を、パーソナルコンピュータシステム１２０１に入力し得る。これらおよびその他の入力装置は、システムバス１２０７に接続されたシリアルポートインターフェース１２３１を介して処理ユニット１２０３に接続されることができるが、パラレルポート、ゲームポートファイヤワイヤバスまたはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースによって接続されてもよい。また、モニタ１２３３またはその他のタイプの表示装置が、ビデオアダプタ１２３５などのインターフェースを介して、システムバス１２０７に接続される。
【０１３５】
システム１２０１は、インターネットなどのネットワーク１１５２を介して通信を確立するための、モデム１１５４やその他のネットワークインターフェース手段を有し得る。内部でも外部でもよいモデム１１５４が、シリアルポートインターフェース１２３１を介してシステムバス１２３に接続されている。また、システム１２０１が、局所エリアネットワーク１１５８を介してリモート演算装置１１５０（例えば、別のシステム１２０１）と通信することを可能にするために、ネットワークインターフェース１１５６が提供され得る（あるいはこのような通信は、広域ネットワーク１１５２またはダイヤルアップやその他の通信手段などの他の通信パスを介して行われてもよい）。システム１２０１は典型的には、プリンタその他の標準的な周辺デバイスなどの、他の周辺出力デバイスを有し得る。
【０１３６】
一例において、ビデオアダプタ１２３５は、マイクロソフトのＤｉｒｅｃｔＸ７．０または他バージョンなどの標準的な３Ｄグラフィックスアプリケーションプログラマインターフェースに基づいて発せられる３Ｄグラフィックスコマンドに応答して、高速な３Ｄグラフィックスレンダリングを提供する３Ｄグラフィックスパイプラインチップセットを有し得る。また１組のステレオスピーカ１２３７が、従来の「サウンドカード」などのサウンド発生インターフェースを介してシステムバス１２０７に接続されていることにより、バス１２０７によって供給される音声コマンドに基づいて高品質なステレオ音声を生成するためのハードウェアおよび埋め込みソフトウェアサポートを提供する。これらのハードウェア能力は、システム１２０１が、記憶媒体６２に格納されたソフトウェアをプレイするために十分なグラフィックスおよびサウンド速度能力を提供することを可能にする。
【０１３７】
上記参照した全ての文献を、本明細書において参考のために援用する。
【０１３８】
以上、本発明を、最も実用的で好ましい実施形態であると現時点で判断される内容について説明してきたが、本発明は、開示された実施形態にのみ制限されるべきものではなく、反対に記載したクレームの範囲内において、様々に変更、および同等な内容が適用されるものとする。例えば、特定の漫画的なライティングの例を本明細書において開示したが、本発明は漫画的なライティングに限定されるものではなくむしろ、無色ライティングパラメータを用いて達成し得る様々な写実的および非写実的そしてテクスチャ型および非テクスチャ型の、アプリケーションおよび効果を包含することが理解されるであろう。
【図１】
2011090699.tif 000029
【図２】
2011090699.tif 000030
【図３】
2011090699.tif 000031
【図４】
2011090699.tif 000032
【図５】
2011090699.tif 000033
【図６】
2011090699.tif 000034
【図７】
2011090699.tif 000035
【図８】
2011090699.tif 000036
【図９】
2011090699.tif 000037
【図１０】
2011090699.tif 000038
【図１１】
2011090699.tif 000039
【図１２】
2011090699.tif 000040
【図１３】
2011090699.tif 000041
【図１４】
2011090699.tif 000042
【図１５】
2011090699.tif 000043
【図１６】
2011090699.tif 000044
【図１７】
2011090699.tif 000045
【図１８】
2011090699.tif 000046
【図１９】
2011090699.tif 000047
【図２０】
2011090699.tif 000048
【図２１】
2011090699.tif 000049
【図２２】
2011090699.tif 000050
【図２３】
2011090699.tif 000051
【図２４】
2011090699.tif 000052