JP4761492B2 - グラフィックシステムにおける無色光のライティング - Google Patents
グラフィックシステムにおける無色光のライティング Download PDFInfo
- Publication number
- JP4761492B2 JP4761492B2 JP2001206704A JP2001206704A JP4761492B2 JP 4761492 B2 JP4761492 B2 JP 4761492B2 JP 2001206704 A JP2001206704 A JP 2001206704A JP 2001206704 A JP2001206704 A JP 2001206704A JP 4761492 B2 JP4761492 B2 JP 4761492B2
- Authority
- JP
- Japan
- Prior art keywords
- texture
- lighting
- color
- graphics
- light
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータグラフィックスに関し、より詳細には、家庭用ビデオゲームプラットフォームなどの対話式グラフィックスシステムに関する。より詳細には、本発明は、色または不透明度を変更するために後に用いられるパラメータを生成するためにライティング関数を用いるグラフィックス処理の改良に関する。さらに、詳細には、本発明は、さらなる関数(例えばテクスチャリング)などに適用される距離または角度などのパラメータをライティング計算が定義する3Dグラフィックスシステムに関する。
【0002】
【従来の技術】
我々の多くは、驚くほどリアルな恐竜、異星人、アニメーション化された玩具、およびその他の空想的な生物を含む映画を観たことがある。このようなアニメーションは、コンピュータグラフィックスによって可能となる。こうした技術を用いることにより、コンピュータグラフィックスアーチストは、各オブジェクトがどのように見えるべきか、また時間とともにどのように外見が変化すべきかを指定することができ、そしてコンピュータがオブジェクトをモデリングし、これらをテレビやコンピュータスクリーンなどのディスプレイ上に表示する。このコンピュータは、シーン中の各オブジェクトの位置および方向、各オブジェクトに光が入射しているように見える方向、各オブジェクトの表面テクスチャ、およびその他の要素に基づき、表示された画像の各部分がちょうど正しく色付けされかつ形付けられていることを確実にするために必要な多くの処理の実行を担当する。
【0003】
コンピュータグラフィックスの生成は複雑であるため、ほんの数年前では、コンピュータ生成された3次元グラフィックスは、高価な専用のフライトシミュレータ、ハイエンドのグラフィックスワークステーション、およびスーパーコンピュータに概ね限定されていた。大衆は、これらのコンピュータシステムによって生成された画像のいくつかを映画や高価なテレビ広告で見ることはあったが、我々の大部分は、グラフィックス生成を行うコンピュータに実際に接触することはできなかった。これが全て、例えばニンテンドウ64(登録商標)などの比較的安価な3Dグラフィックスプラットフォームや、現在パーソナルコンピュータで利用可能な様々な3Dグラフィックスカードが利用可能になることにより変貌した。今や、家庭またはオフィスにて、比較的安価なコンピュータグラフィックスシステム上で刺激的な3Dアニメーションおよびシミュレーションと接触することが可能である。
【0004】
3Dグラフィックスシステムにおいて、様々なパラメータ(例えば距離減衰、角度、ビームライティングなど)に基づいてライティング計算を行うことが、長く知られている。従来、そのようなライティング計算の結果は、表示されているオブジェクトの色および/または不透明度を変更するために用いられた。これについてはコンピュータグラフィックスに関する様々な標準的な参考文献に記載がある(例えば、Foleyら、Computer Graphics Principles and Practice(2d.Ed. 1990)のChapter16(“Illumination and Shading”);およびMollerら、Real time Rendering(AK Peters 1999)のSection4.3以降(“Lighting andShading”);Rogersら、Procedural Elements for Computer Graphics(2d Ed.McGraw−Hill 1997)のSection5.2以降(“Illumination Models”);Neiderら、Open GL Programming Guide(Addison−Wesley 1993)のChapter6(“Lighting”);およびKovach、Inside Direct3D(Microsoft Press 2000)のChapter5(“Direct3D Vertices and the Transformation and Lighting Pipeline”)を参照)。例えば、グロー(Gouraud)シェーディングおよびフォン(Phong)シェーディングとして知られる技術は、表示された表面の色を、ライティング式によってモデル化されたライティング効果に依存して変更する。一例として、光沢のある表面に明るいスポット光を照らすと、光が輝いている点において表面色を白色化させる効果を有し得る。これは従来のグラフィックスシステムにおいて、しばしば、あるプリミティブの表面に表示された各ピクセルの色を、そのプリミティブの色(しばしば頂点単位で定義される)およびライティング式の結果に基づき、ラスタライザに決定させることによって達成される。
【0005】
【発明が解決しようとする課題】
グラフィックスシステムの設計者が過去において直面した1つの問題は、漫画のキャラクターなどの写実的でない像をどのようにして効率的に作成するかであった。長年、グラフィックス分野の作業の大部分は、写真と同じくらいリアルな像を作成することに注がれてきた。しかし最近においては、非写実的なイメージングに関心が抱かれてきている。
【0006】
最近関心を呼んでいる非写実的なイメージングのタイプの1つは、漫画のキャラクターのイメージングを自動化するプロセスである。1930年代および1940年代における手書き漫画の最盛期においては、フレームからフレームへと動的に変化する素晴らしい漫画のキャラクターをアーチストらが作成した。これらの手書き漫画は、多くの意味において漫画的なレンダリングの標準となった。漫画はリアルに見えるように意図されたものではなかった。逆に、漫画は戯画的に見えるようにデザインされた。例えばそのような漫画において人物の顔は、真っ白なところに真っ赤または赤みがかった桃色の色合いによるバラ色の頬を備えたものであったりした。アーチストが各フレームを手で色づけしたため、キャラクターがシーン中を移動するにつれて頬の色合いは動的に変化し得た。このような動的な効果は見ていて魅力的であり、漫画の像におもしろみを付加するものである。
【0007】
残念ながら、1930年代および1940年代における手書き漫画の芸術は、非常に時間がかかり高価であった。また人々は今や、漫画のキャラクターと接触するようにビデオゲームおよびコンピュータゲームを使用したがっている。ビデオゲームは、対話式に漫画キャラクターを動的にレンダリングすることに何年間か成功しているが、当世の手書き漫画の手書き芸術の細かさは達成していない。漫画およびその他の非写実的な像の創造のためのハイエンドタイプのシステムにおいては多大な研究がなされているが、さらなる改良が可能であり、かつ望まれる。
【0008】
本発明は、家庭用ビデオゲームプラットフォームまたはパーソナルコンピュータのグラフィックスアクセラレータなどの低コストなグラフィックスシステムを用いて実現可能な、非写実的およびその他のイメージング効果における改良を提供する。
【0009】
【課題を解決するための手段および発明の効果】
本発明によって提供される一局面によれば、シーン中のオブジェクトをライティングするために典型的に用いられるタイプのライティング関数を用いて、色以外のパラメータを生成する。このようなパラメータを用いて、オブジェクトの色または不透明度を変更する。
【0010】
本発明によって提供される別の局面によれば、ライティング計算が頂点毎のライティングを実行することにより、従来の色成分出力を提供する。色成分出力は、色成分を無色パラメータとして処理するテクスチャリング関数に入力される。テクスチャリング関数の出力は、レンダリングされたシーンの視覚化への寄与に用いられる、視覚化効果(例えば、無色パラメータに基づいて変更される色および/または不透明度)を提供する。
【0011】
本発明によって提供されるさらに別の局面によれば、ライティング計算の出力は3つの色成分を提供し、そのうち1つは捨象される。残りの2つの色成分はテクスチャ座標に変換され、テクスチャマッピング動作に用いられる。一方のテクスチャ座標は、2次元テーブル中の1次元テクスチャマップを選択する。他方のテクスチャ座標は、選択された1次元テクスチャマップ内の特定のテクセルを選択する。結果として得られる選択されたテクセルは、その頂点により定義される表面に加えられる、色および/またはアルファ情報を提供する。
【0012】
本発明によって提供されるさらに別の局面によれば、色や不透明度以外のパラメータを生成するためにライティング計算を用いることにより、リアルタイム3Dグラフィックスシステムにおいて、非写実的な漫画的なライティング効果が提供される。異なるブラシストロークをこのパラメータの関数として指定する、1次元テクスチャマップを定義することができる。従来のテクスチャマッピング動作を用いて、上記パラメータに基づき上記1次元テクスチャマップをポリゴン表面にマッピングすることができる。
【0013】
より詳細には、本開示のシステムは従来のライティング型のシェーディング(前述)を全体動作の一部として提供し得るが、ライティング式を用いてテクスチャ座標(すなわち色や不透明度以外の別のパラメータ)を生成することを可能にする、さらなる改良を提供する。この別のパラメータは、さらなる結果(これがオブジェクトの色/不透明度を変更してもよい)を提供するためのさらなる関数(テクスチャとして格納されるルックアップテーブルなど)へ入力され得る。この、表示されるオブジェクトの色および/または不透明度に間接的にのみ影響するパラメータをライティング計算に生成させる中間ステップにより、プリミティブの表面色に直接影響するようにライティング式の出力を用いる従来のアプローチを越えた、さらなるフレキシビリティが提供される。
【0014】
ある特定の実施例では、ライティング式の結果を用いて複数のテクスチャから1次元のテクスチャを選択する。一例として、木の幹を表示するために、銀色のレンジを有するテクスチャと茶色のレンジを有するテクスチャとの2つの異なる1次元テクスチャを定義し得る。ライティング式を光源が木の幹に入射している角度を決定するために用い、結果によって2つテクスチャの選択を行うことができる。この木の幹を、斜角からは異なる銀色のレンジによって(従来テクスチャマッピングを用いて)色づけし、光が真正面から入射しているときには茶色/黒色のレンジで色づけすることができる。このような場合において、ライティング式は、1次元テクスチャを選択している(すなわち、色や不透明度以外のパラメータ−−この場合2つの異なるテクスチャの選択を行う−−として機能している)。
【0015】
本明細書において開示される特定の実施形態において、変換およびライティング(「T&L」)パイプラインに改良がなされることにより、このパイプラインがライティング式に基づいてテクスチャ座標を生成することを可能にする。変換およびライティングは、ライティング式の出力を生成するが、これをラスタライザによって生成されたピクセル色/不透明度を変更するために直接提供するのではなく、結果をテクスチャユニットにテクスチャ座標として提供する。開示された実施形態において、テクスチャユニットの出力は、オブジェクトのプリミティブ色/不透明度(例えば、変換およびライティングパイプラインならびにラスタライザによって、同一または異なるライティング式に基づきグローまたはフォンシェーディングなどの従来のシェーディングアルゴリズムを用いて生成される)とブレンドされることにより変更された色/不透明度値を表示用に提供する、色または不透明度である。
【0016】
【発明の実施の形態】
図1は、対話式3Dコンピュータグラフィックスシステム50の一例を示す。システム50は、対話式3Dビデオゲームを面白いステレオ音とともにプレイするために用いられ得る。また、様々な他の応用例にも用いられ得る。
【0017】
本例において、システム50は、3次元世界のデジタル表現物あるいはモデルを、対話式にリアルタイムで処理することが可能である。システム50は、その世界のうちの一部または全部を、いかなる任意の視点から表示することもできる。例えば、システム50は、手持ちコントローラ52a、52bまたはその他の入力デバイスからのリアルタイム入力に応答して、対話式に視点を変更することができる。これにより、ゲームのプレーヤが、その世界の中または外側にいる人の目を通じて、その世界を見ることが可能になる。システム50は、リアルタイム3D対話式表示を必要としない応用例(例えば、2D表示生成および/または非対話式表示)に用いられ得るが、非常に素早く高品質3D画像を表示できる能力を、非常にリアルかつ刺激的なゲームプレイまたはその他のグラフィカルな対話を創出するために用いることができる。
【0018】
システム50を用いて、ビデオゲームまたはその他のアプリケーションをプレイするために、ユーザは、まず、ケーブル58を両者の間に接続することによって、メインユニット54を自分のカラーテレビ56またはその他のディスプレイデバイスに接続する。メインユニット54は、カラーテレビ56を制御するための映像信号と音声信号との両方を生成する。映像信号は、テレビスクリーン59上に表示される画像を制御するものであり、音声信号は、テレビのステレオスピーカ61L、61Rを介して音として再生される。
【0019】
ユーザは、また、メインユニット54を電源に接続する必要がある。この電源は、標準的な家庭用電気コンセントに接続して家庭電流をメインユニット54に電力供給するために、適切なより低いDC電圧信号に変換する従来のACアダプタ(図示せず)であり得る。他の実施形態として、電池を用い得る。
【0020】
ユーザは、メインユニット54を制御するためにハンドコントローラ52a、52bを用い得る。コントロール60は、例えば、テレビ56上に表示されたキャラクターが3D世界内で移動するべき方向(上下、左右、近くあるいは遠く)を指定するために用い得る。コントロール60は、また、他のアプリケーション(例えば、メニュー選択、ポインタ/カーソル制御など)のための入力を提供する。コントローラ52は、様々な形態を取り得る。本例においては、図示したコントローラ52は、それぞれジョイスティック、プッシュボタンおよび/または方向スイッチとしてのコントロール60を含む。コントローラ52は、ケーブルを介して、あるいは電磁(例えば高周波または赤外線)波を介して無線でメインユニット54に接続され得る。
【0021】
ゲームなどのアプリケーションをプレイするためには、ユーザは自分がプレイしたいビデオゲームあるいはその他のアプリケーションを記憶している適切な記憶媒体62を選択し、その記憶媒体をメインユニット54のスロット64に挿入する。記憶媒体62は、例えば、専用にコード化されたおよび/または暗号化された光学および/または磁気ディスクであり得る。ユーザは、パワースイッチ66を操作してメインユニット54をオンにし、記憶媒体62に記憶されたソフトウェアに基づいて、メインユニットにビデオゲームあるいはその他のアプリケーションの実行を開始させ得る。ユーザは、コントローラ52を操作してメインユニット54に入力を供給し得る。例えば、コントロール60を操作することにより、ゲームあるいはその他のアプリケーションを開始させ得る。その他のコントロール60を動かすことにより、アニメーション化されたキャラクターを異なる方向に移動させたり、3D世界におけるユーザの視点を変更することができる。記憶媒体62に記憶された特定のソフトウェアに依存して、コントローラ52上の様々なコントロール60は、異なる時刻において異なる機能を実行することができる。
【0022】
システム全体の電子回路例
図2に、システム50の要素例のブロック図を示す。主要な要素として以下のものを含む。
・メインプロセッサ(CPU)110、
・メインメモリ112、および
・グラフィックスおよび音声プロセッサ114
【0023】
本例において、メインプロセッサ110(例えば、機能拡張型IBM Power PC750)は、手持ちコントローラ108(および/または他の入力装置)からの入力を、グラフィックスおよびプロセッサ114を介して受け取る。メインプロセッサ110は、ユーザ入力に対話式に応答し、例えば、外部記憶媒体62から光ディスクドライブなどの大容量記憶アクセス装置106を介して供給されるビデオゲームあるいはその他のプログラムを実行する。一例としてビデオゲームプレイの場合、メインプロセッサ110は、様々な対話式機能および制御機能に加えて、衝突検出およびアニメーション処理を実行することができる。
【0024】
本例において、メインプロセッサ110は、3Dグラフィックスコマンドおよび音声コマンドを生成し、これらをグラフィックスおよび音声プロセッサ114に送る。グラフィックスおよび音声プロセッサ114は、これらのコマンドを処理することにより、ディスプレイ59上に面白い視覚画像を生成し、ステレオスピーカ61R、61Lまたはその他の適切な音声生成装置上で面白いステレオ音を生成する。
【0025】
例示のシステム50は、グラフィックスおよび音声プロセッサ114から画像信号を受け取って、画像信号をコンピュータモニタまたは家庭用カラーテレビ56などの標準的な表示装置上での表示に適したアナログおよび/またはデジタル映像信号に変換するビデオ符号化器120を有する。システム50はまた、デジタル化された音声信号を圧縮および伸長し、また必要に応じてデジタルおよびアナログの音声信号化フォーマット間の変換を行う音声コーデック(圧縮器/伸長器)122を有する。音声コーデック122は、バッファ124を介して音声入力を受け取り、これらをグラフィックスおよび音声プロセッサ114に処理(例えば、プロセッサが生成する、および/または大容量記憶アクセス装置106の音声ストリーミング出力を介して受け取る他の音声信号との混合)のために供給することができる。本例におけるグラフィックスおよび音声プロセッサ114は、音声関連の情報を、音声タスクについて利用可能である音声メモリ126中に記憶することができる。グラフィックスおよび音声プロセッサ114は、結果として得られた音声出力信号を、伸長およびアナログ信号への変換(例えばバッファアンプ128L、128Rを介して)のために音声コーデック122に供給することにより、スピーカ61L、61Rによって再生できるようにする。
【0026】
グラフィックスおよび音声プロセッサ114は、システム50内に存在し得る様々な追加的なデバイスと連絡する能力を有する。例えば、大容量記憶アクセス装置106および/またはその他の要素と連絡するために、パラレルデジタルバス130を用い得る。シリアル周辺バス132は、例えば、
・プログラム可能なリードオンリーメモリおよび/またはリアルタイムクロック134、
・モデム136その他のネットワーク化インターフェース(これは、プログラム命令および/またはデータをダウンロードまたはアップロードすることができるインターネットあるいはその他のデジタルネットワークなどの通信ネットワーク138に、システム50を接続し得る)、および
・フラッシュメモリ140
を含む、様々な周辺デバイスまたはその他のデバイスと連絡し得る。追加的な拡張メモリ144(例えばメモリカード)やその他のデバイスと連絡するために、さらなる外部シリアルバス142を用い得る。コネクタを用いて様々なデバイスをバス130、132、142に接続し得る。
【0027】
グラフィックスおよび音声プロセッサの例
図3は、グラフィックスおよび音声プロセッサ114の一例のブロック図である。一例において、グラフィックスおよび音声プロセッサ114は、単一チップのASIC(アプリケーション専用集積回路)であり得る。本例において、グラフィックスおよび音声プロセッサ114は、以下を含む。
・プロセッサインターフェース150
・メモリインターフェース/コントローラ152
・3Dグラフィックスプロセッサ154
・音声デジタル信号プロセッサ(DSP)156
・音声メモリインターフェース158
・音声インターフェースおよびミキサ160
・周辺コントローラ162、および
・ディスプレイコントローラ164
【0028】
3Dグラフィックスプロセッサ154は、グラフィックス処理タスクを行う。音声デジタル信号プロセッサ156は、音声処理タスクを行う。ディスプレイコントローラ164は、メインメモリ112からの画像情報にアクセスし、これをディスプレイデバイス56上に表示するためにビデオ符号化器120に供給する。音声インターフェースおよびミキサ160は音声コーデック122とインターフェースし、また異なるソースからの音声(例えば大容量記憶アクセス装置106からの音声ストリーミング、音声DSP156の出力、および音声コーデック122を介して受け取られる外部音声入力)を混合することができる。プロセッサインターフェース150は、メインプロセッサ110とグラフィックスおよび音声プロセッサ114との間のデータおよび制御インターフェースを提供する。
【0029】
メモリインターフェース152は、グラフィックスおよび音声プロセッサ114とメモリ112との間の、データおよび制御インターフェースを提供する。本例において、メインプロセッサ110は、グラフィックスおよび音声プロセッサ114の一部であるプロセッサインターフェース150およびメモリインターフェース152を介して、メインメモリ112にアクセスする。周辺コントローラ162は、グラフィックスおよび音声プロセッサ114と、上述した様々な周辺機器との間の、データおよび制御インターフェースを提供する。音声メモリインターフェース158は、音声メモリ126とのインターフェースを提供する。
【0030】
グラフィックスパイプラインの例
図4は、3Dグラフィックスプロセッサ154の一例のより詳細な図を示す。3Dグラフィックスプロセッサ154は、特に、コマンドプロセッサ200および3Dグラフィックスパイプライン180を含む。メインプロセッサ110は、データのストリーム(例えば、グラフィックスコマンドストリームおよび表示リスト)を、コマンドプロセッサ200に通信する。メインプロセッサ110は、メモリ待ち時間を最小にするために2レベルキャッシュ115を有し、また、グラフィックスおよび音声プロセッサ114を対象とした非キャッシュデータストリーム用の書き込み収集バッファ111を有している。書き込み収集バッファ111は、部分キャッシュラインを集めて完全なキャッシュラインにし、データを一度につき1キャッシュラインずつグラフィックスおよび音声プロセッサ114に送り出すことにより、バス利用率を最大にする。
【0031】
コマンドプロセッサ200は、メインプロセッサ110から表示コマンドを受け取って解析する(これらを処理するために必要な任意の追加的なデータは、共有メモリ112から得る)。コマンドプロセッサ200は、頂点コマンドのストリームを、2Dおよび/または3D処理およびレンダリングのためにグラフィックスパイプライン180に供給する。グラフィックスパイプライン180は、これらのコマンドに基づいて画像を生成する。得られた画像情報は、ディスプレイコントローラ/ビデオインターフェースユニット164(パイプライン180のフレームバッファ出力をディスプレイ56上に表示する)によるアクセスのために、メインメモリ112に転送され得る。
【0032】
図5は、グラフィックスプロセッサ154の論理フロー図である。メインプロセッサ110は、グラフィックスコマンドストリーム210、表示リスト212、および頂点配列214をメインメモリ112に格納し得、バスインターフェース150を介してコマンドプロセッサ200にポインタを渡し得る。メインプロセッサ110は、メインメモリ112内に割り当てた1つ以上のグラフィックス先入れ先出し(FIFO)バッファ210に、グラフィックスコマンドを格納する。コマンドプロセッサ200は、
・同期/フロー制御および負荷バランスを取るためグラフィックスコマンドを受け取りバッファリングするオンチップFIFOメモリバッファ216を介して、メインメモリ112からのコマンドストリーム、
・オンチップコールFIFOメモリバッファ218を介して、メインメモリ112からの表示リスト212、および
・頂点キャッシュを介して、コマンドストリームからおよび/またはメインメモリ112中の頂点配列214からの頂点属性)
を取り込む。
【0033】
コマンドプロセッサ200は、属性タイプを浮動小数点フォーマットに変換し、得られた完全な頂点ポリゴンデータをレンダリング/ラスタライゼーションのためにグラフィックスパイプライン180に渡すコマンド処理動作200aを行う。プログラム可能なメモリ調停回路130(図4を参照)は、共有メインメモリ112へのアクセスを、グラフィックスパイプライン180、コマンドプロセッサ200、およびディスプレイコントローラ/ビデオインターフェースユニット164間で調停する。
【0034】
図4は、グラフィックスパイプライン180が以下を含み得ることを示している。
・変換ユニット300
・セットアップ/ラスタライザ400
・テクスチャユニット500
・テクスチャ環境ユニット600、および
・画素エンジン700
【0035】
変換ユニット300は、様々な2Dおよび3D変換ならびにその他の動作300aを行う(図5を参照)。変換ユニット300は、変換処理300aで用いられる行列を格納するための、1つ以上のマトリックスメモリ300bを有し得る。変換ユニット300は、受け取った図形を頂点毎にオブジェクト空間からスクリーン空間に変換し、また、受け取ったテクスチャ座標を変換し投影テクスチャ座標を生成する(300c)。変換ユニット300は、また、ポリゴンクリッピング/間引き300dを行ってもよい。やはり変換ユニット300bによって行われるライティング処理300eは、一実施例において最高8個の独立のライティングまでに対し、頂点毎のライティング演算を提供する。変換ユニット300は、また、ポリゴンクリッピング/間引き動作(300d)に加え、エンボス型のバンプマッピング効果のためのテクスチャ座標生成(300c)、を行うことができる。
【0036】
セットアップ/ラスタライザ400は、変換ユニット300から頂点データを受け取り、トライアングルセットアップ情報を、境界のラスタライズ、テクスチャ座標のラスタライズおよび色のラスタライズを行う1つ以上のラスタライザユニット(400b)に送るセットアップユニットを有する。
【0037】
テクスチャユニット500(オンチップテクスチャメモリ(TMEM502)を含み得る)は、テクスチャリングに関連する様々な処理を行う。これには、例えば、
・メインメモリ112からのテクスチャ504の取り出し、
・例えば、マルチテクスチャ処理、キャッシュ後テクスチャ伸長、テクスチャフィルタリング、エンボス化、投影テクスチャの使用を介した陰影および明暗、ならびにアルファ透明度および深度をともなうBLITを含むテクスチャ処理(500a)、
・バンプマッピング、擬似テクスチャ、およびテクスチャタイル化効果(500b)についてのテクスチャ座標変位の演算のためのバンプマップ処理、および
・間接テクスチャ処理(500c)
が含まれる。
【0038】
テクスチャユニット500は、フィルタリングされたテクスチャ値を、テクスチャ環境処理のため(600a)にテクスチャ環境ユニット600に出力する。テクスチャ環境ユニット600は、ポリゴンおよびテクスチャ色/アルファ/深度をブレンドし、また、逆レンジ型フォグ効果を達成するためのテクスチャフォグ処理(600b)を行い得る。テクスチャ環境ユニット600は、例えば色/アルファ変調、エンボス化、詳細テクスチャリング、テクスチャスワッピング、クランピング、および深度ブレンディングに基づき、様々な他の面白い環境関連の機能を行うためのステージを複数提供し得る。
【0039】
ピクセルエンジン700は、深度(z)比較(700a)およびピクセルブレンディング(700b)を行う。本例において、ピクセルエンジン700は、データを埋め込み(オンチップ)フレームバッファメモリ702に格納する。グラフィックスパイプライン180は、フレームバッファおよび/またはテクスチャ情報をローカルに格納するための1つ以上の埋め込みDRAMメモリ702を有し得る。z比較700a’は、また、現在有効なレンダリングモードに依存して、グラフィックスパイプライン180中のより早い段階で行われ得る(例えば、アルファブレンディングが必要でなければ、z比較は、より早くに行われ得る)。ピクセルエンジン700は、オンチップフレームバッファ702をディスプレイ/ビデオインターフェースユニット164によるアクセスのためにメインメモリ112に周期的に書き込むコピー動作700cを含む。このコピー動作700cは、また、動的テクスチャ合成効果を得るために、埋め込みフレームバッファ702の内容をメインメモリ112内のテクスチャにコピーするためにも用いられ得る。コピーアウト動作中において、アンチエイリアシングおよびその他のフィルタリングを行うことができる。グラフィックスパイプライン180のフレームバッファ出力(最終的には、メインメモリ112に格納される)は、各フレームごとにディスプレイ/ビデオインターフェースユニット164によって読み出される。ディスプレイコントローラ/ビデオインターフェースユニット164は、ディスプレイ102上に表示するためのデジタルRGB画素値を提供する。
【0040】
無色ライティング関数の例
上述のように、本実施例における変換ユニット300は、幾何学的変換、ポリゴンクリッピング、間引きおよびその他の機能に加えて、ライティングを行う。本実施例において、変換ユニット300は、ハードウェアにおいてライティングを頂点毎の計算としてサポートする。このことは、色値(RGB)がライティングされている頂点毎に演算され得ること、そしてこれらの色が、各ライティングされたトライアングルの表面にわたって線形補間されることができることを意味する。これはグローシェーディングとして公知である。ライティングの実施形態の一例に関するさらなる詳細を、図14以降と関連して以下に説明する。
【0041】
本実施例の変換ユニット300は、従来のグラフィックスシステムでは利用可能でない、ライティング関数302のさらなる用途を提供する。一般に従来のグラフィックスシステムにおけるライティング関数の出力は、ポリゴンシェーディングに用いられる色である。グラフィックスシステムの中には、ライティング関数に基づいてアルファ(例えば透明度)値を提供するものもある。本発明によって提供される実施例においては、色および/または不透明度を変更するために後に用いられる無色パラメータ(すなわち色でもアルファでもなく何か別のもの)を生成するために、ライティング関数を用いる。
【0042】
図6はそのような構成を示すブロック図であり、ライティング関数302が、色または不透明度を変更するための後のプロセス304で用いられる無色パラメータを提供する。変更の結果はディスプレイ56などの表示装置上に表示される。この文脈において、「ライティング関数」の語は一般に、表面位置、表面方向、眼点の位置、ならびに場合によっては光源位置の、数学的関数を意味する。ライティング関数は、これらの座標の任意の組み合わせとして定義されることができる。
【0043】
本実施例において、ライティング関数302によって出力される無色パラメータは、図7に示すようにテクスチャ関数306によって処理される。非常に単純なレベルにおいては、オブジェクトをテクスチャリングすることは画像をそのオブジェクトに「貼り付ける」ことを意味する。より詳細には、テクスチャリングは一般にライティング関数302において用いられる値を変更することによって成立する。例えば、典型的な場合において、ライティング関数302は、ポリゴン表面の色および照度を決定するために用いられ、テクスチャリング関数は、その色/照度を変更することによって追加的な効果(例えば、レンガの壁または木目の外観を創出したり、表面を凹凸や鏡面状あるいは歪んでいるように見せるなど)を提供するために用いられる。図7に示す実施例においては対照的に、ライティング関数302の出力は色や透明度値ではなく、テクスチャリング関数306用の一般化されたパラメータ(例えばテクスチャ座標)である。テクスチャリング関数は、表示装置56上での表示用にプリミティブ色および/または不透明度によって変更(例えばブレンド)を行うために用いられる、色および/または不透明情報を作成する。
【0044】
図8はテクスチャ関数306の例を示す。この例においてライティング関数302は、例示のテクスチャ関数306をパラメータ化する、無色出力パラメータSを生成する。この図8の例において例示のテクスチャ関数306は、パラメータSの値に依存して、3つの色(C1、C2、C3)または不透明度のうちの1つを選択する。その結果、テクスチャ関数306から出力される特定の色または不透明度が、ライティング関数302から出力されるパラメータSの関数として決定される。ライティング関数302がパラメータSを提供しているため、テクスチャ関数306から出力されるいずれの色または不透明度を選択するかは、ライティング関数の計算に用いられる様々なファクタのうちの任意のものに依存し得る。これらファクタは例えば、
・距離、
・減衰、
・角度、
・ベクトル、
・コサイン、
・多項式、
・光源タイプ、
・その他の係数
を含む。
【0045】
テクスチャ関数306は様々な異なる態様で実施され得るが、コスト効率のよいアプローチの一つは、テクスチャ関数306の出力値をテクスチャルックアップテーブルまたはマップに格納し、テクスチャ座標を用いてこれらの値にアクセスすることである。図9は、ライティング関数302の出力パラメータSによってインデックスされる1次元テクスチャマップ308の一例を示す。この実施例において従来のテクスチャマッピング関数を用いることの利点は、ライティング関数302とともに、汎用テクスチャリングで利用可能なテクスチャマッピングハードウェアあるいはその他の機能も用いてテクスチャ関数306を実現することが可能であることである。
【0046】
図10は、2次元テクスチャマッピング動作306を含むより詳細な例を示す。この例においては、頂点の識別およびライティング定義に基づいてライティング計算302が行われる。本実施例におけるライティング計算302の出力は、頂点毎の色(例えば赤、緑、青)および/または透明度(すなわちアルファ)を含む。本実施例は、典型的にはこれらのライティング計算302の色出力をポリゴン表面のグローシェーディングに用いる。しかしこの動作モードにおいて、カラーチャネルのうちの1つ(例えば青)が捨象され、他の2つのカラーチャネル(すなわち赤、緑)が変換動作308を用いてテクスチャ座標s、tに変換される。テクスチャ座標s、tは、1つ以上のテクスチャマッピング動作306a、306bなどに供されることにより、色/透明度出力テクセルを提供する。ブレンディング動作602は、これらのテクセルを表面色情報(従来のシェーディング技術を用いて同一または異なるライティング計算に基づいて導出され得る)とブレンドすることにより、シェードが付けられたテクスチャ化ポリゴンを表示用に提供することができる。
【0047】
本実施例においてテクスチャマッピング動作306は、図11に示すような2次元テクスチャマッピングを提供する。本例においてテクスチャ座標tは、ライティング計算302の緑のカラーチャネル出力に基づいて生成され、2次元テクスチャマップ310内のn個の1次元テクスチャマップのうちの1つを選択するために用いられる。他方のテクスチャ座標sは、ライティング計算302の赤のカラーチャネル出力に基づいて作成され、座標tによって選択された1次元テクスチャ内の特定の1つのテクセルを選択するために用いられる。もちろん他の実施形態において、テクスチャ座標sが1−Dマップを選択して座標tが1つの特定のテクセルを選択してもよく、および/または異なる色および/または不透明度を用いて異なるテクスチャ座標を生成してもよい。所望であれば、3つのテクスチャ座標を用いて3Dテクスチャ中のテクセルを選択してもよい。
【0048】
図12は、複数の1次元テクスチャマップ308を含む2次元テクスチャマップ310の例示的な一例である。図12に示す特定の2次元テクスチャマップは、漫画的なライティング効果に特に適している。図示例では、それぞれが2つの異なる種類のテクセル(例えば紫色のテクセルと青色のテクセル)を含んだ4つのマップ308(1)〜308(4)を含む、複数の1次元テクスチャマップが含まれている。テクスチャ座標のうちの一方(例えばt)がこれらの異なるテクスチャマップ間の選択を行い、他方のテクスチャ座標(例えばs)が特定のテクセル(すなわち青または紫)を選択する。様々な1Dテクスチャマップ308(1)〜308(4)は、テクスチャ座標と青または紫のテクセルとの間で異なるマッピングを提供することにより、異なるブラシストロークあるいはその他の効果を提供する。
【0049】
別の例として、図12に示す1Dテクスチャマップ308(6)は、4つの異なる種類のテクセル(黄色、橙色、赤色および茶色)を含んでいる。これらの異なる色を用いて、例えばあるオブジェクトに対して指向性光がなす角度または光源からのオブジェクトの距離がテクスチャマッピング動作306の出力から得られる色を決定するような、大胆な漫画的なライティング効果を得ることができる。そのような視覚化は、特に動的に生成される漫画的なアニメーションなどの非写実的なリアルタイムレンダリングにおいて、様々な面白い応用例を有し得る。例えば、オブジェクトをライティングする仮想的な漫画的な光を定義することが可能である。オブジェクトのレンダリングされた視覚化は、頂点位置、局所的な漫画的な光位置およびライティング計算302が考慮するその他のファクタ(鏡面または拡散演算、距離減衰など)に、依存するようになる。一例において、赤のカラーチャネルをゼロに設定し、ライティング計算302に緑チャネルを演算させることで、1セットのブラシストロークを定義する1Dテクスチャ内の特定のテクセル値を指定することが可能である。メインプロセッサ110が典型的にライティング計算302に供することが可能な材質の色は、2Dテクスチャマップ内のどの1Dテクスチャを選択するかを指定するために用いることができる。ライティング計算302は、頂点単位で(頂点毎に1インデックスを供給する以上の追加的なコストなく)、どのブラシストロークを選択するかを計算する。
【0050】
図10に示す例は漫画的なライティングに特に有用であるが、多くの他の応用例にも用いることができる。一例として、ライティング関数302は、影立体または表面を計算するために用いられ得る。所与の頂点に基づいたライティング計算302は、テクスチャマッピング動作306に用いられるテクスチャ座標において定義された影立体を生成することが可能である。多くの他の応用例が可能である。例えば、面白い応用例の1つは、投影テクスチャである。投影テクスチャの望ましくない特徴の1つは、典型的にはカメラから前方または後方に投影することである。本明細書において開示される技術は、減衰(例えば逆方向を向いたライティングを排除するため)および/または距離減衰(例えば、本物のスライドプロジェクタを用いて画像を投影するときの見え方のように、どれだけ遠くに投影されるかに基づいて投影テクスチャを減衰するため)を提供するライティング関数に基づいて、投影テクスチャ座標生成を提供することができる。このような投影テクスチャリングと本明細書に記載した無色ライティング関数との組み合わせにより、多くの面白い画像およびイメージング効果が得られる。
【0051】
図10に示す従来の動作306は、必ずしも全ての実施形態において必要なわけではない。本実施例においてライティング関数302は整数出力を生成し、この整数出力は変換ブロック308によって、以降のテクスチャマッピング動作306で用いられるテクスチャ座標に適した浮動小数点表現に変換される。しかし、そのような整数−浮動小数点変換は他の実施形態においては不要であり、あるいは他の実施形態においては所望に応じて異なるタイプの変換を用いることが可能である。
【0052】
図10に示す実施例において、ライティング関数302はテクスチャ座標sおよびtの両方を計算する必要はない。本実施例において、プリミティブ表面に適用されるべき1次元テクスチャマップ中で、どの特定のテクセルが使用されたのかを選択するために1つのテクスチャ座標のみをパラメータとして用いているため、好適な実施例では、ライティング計算302を用いてそのテクスチャ座標(あるいはそのテクスチャ座標が導出されるもととなる中間値として)を好ましくは計算する。しかし、アプリケーションによっては、ライティング計算302ではなくそのアプリケーションプログラムが、(本実施例では)複数の1次元テクスチャ308から選択を行うために用いられる別のテクスチャ座標を指定することが望ましいこともあり得る。一例として、メインプロセッサ110上で稼働するアプリケーションプログラムが、ライティング計算入力に適用されるライティング定義を介して、ライティング計算302のカラーチャネル出力のいずれかあるいはその全部のための値を指定することができる。いくつかの応用例においては、メインプロセッサ110が例えば緑のカラーチャネルの内容を指定し、従ってテクスチャマッピング動作306に用いられる特定の1次元テクスチャを指定することが望ましい場合もある。これにより、ライティング計算ユニット302が評価する変数に基づいてライティング計算302がテクスチャ座標sを動的に生成することを依然として可能にしながら、アプリケーションのプログラマの新たな制御が提供される。メインプロセッサ110が変換ユニット300に送る浮動小数点値をRGB8の形に切り捨てることにより、計算を高精度で行うことを可能にできる。
【0053】
本実施例において、ライティング計算302が負の出力値を生成できないわけはない。図10に示す例において、これはオブジェクトをバックライトで照らすことに相当する。従って本実施例において、負のあるいはバックライトで照らされた漫画的なライティングを得ることが可能である。これは、オブジェクトの背面側に情報が存在する場合の効果を提供するために有用であり得る。好適な実施例において、ライティングユニットは常に正の色(値)を出力する。好適な実施例は負のタイプのライティング計算をサポートするが、最終値が正になるようにスケールおよび/またはバイアスを加えることは応用例次第である。例えば、ライティング計算の出力は、テクスチャ座標に変換される前において、−1から0および+1から1の間でマッピングされ得る。実施例においては負の値をクランプはせずに、単に正の数値にマッピングする。ここでアプリケーションは、これらの正の値が適切に解釈されるように注意を払うものとする。もちろん他の実施形態において所望であれば、負のライティング値を直接サポートしてもよい。
【0054】
図10に示すテクスチャマッピング動作306およびブレンディング動作602は、任意に複合化され得る。例えば、アルファとブレンドを行うことが可能である。別の例として、ライティング計算302から出力される2つの別々のカラーチャネルを2つの異なるテクスチャマッピング動作に用いてから、これらをブレンダ602によりブレンドしてもよい。本実施例におけるテクスチャマッパ500およびテクスチャ環境ユニット600はいずれもマルチタスク/マルチステージ動作であるため、ライティング計算302の出力に基づいて一連の直接/間接の動作を提供することにより、様々な面白く複雑な効果を得ることができる。例えば、同一譲受人に係る同時係属中の仮出願No.60/226,891(2000年8月23日出願)およびそれに対応している実用特許出願No.09/722,382(2000年11月28日出願)(弁理士受付番号723−961、いずれも「Method And Apparatus For Direct And Indirect Texture Processing In A Graphics System」の名称を有す)、ならびに同一譲受人に係る同時係属中の仮出願No.60/226,888(2000年8月23日出願)およびそれに対応している実用特許出願No.09/722,367(2000年11月28日出願)(弁理士受付番号723−968、いずれも「Recirculating Shade Tree Blender For A Graphics System」の名称を有す)を参照のこと。これら全てを本明細書において参考のため援用する。
【0055】
ライティングパイプラインの実施形態例
図13は、ライティング計算302のブロック図例を示す。本例において、ライティング計算302は、コマンドプロセッサ200から受け取った情報に応答して、変換ユニット300によって行われる。この情報は、メインプロセッサ110およびメインメモリ112(図4参照)を含む様々なソースから得ることができる。
【0056】
本実施例において変換ユニット300は、マスター制御部320、ライティング演算パイプライン322、アキュムレータ324、およびテクスチャ生成のための整数−浮動小数点変換器308を有する。マスターコントローラ320は、コマンドプロセッサ200からライティング定義および頂点定義を受け取り、適切な記憶/バッファリングの後に、関連する情報をライティング計算パイプライン322に提供する。ライティングパイプライン322は、ライティング演算を以下の基本形態で行う。すなわち、
【数1】
である。ここで、Cnはライティング計算パイプラインの出力を規定し、Cmaterialは材質の色を規定し、Acはアンビエント色を規定し、L(c)はライティング拡散または鏡面成分を規定し、Aは距離減衰を規定する。この計算はRGBの3つ組を演算する。なぜなら、本実施例におけるライティング計算パイプライン322は2つのこのようなライティング計算を並列に行い得るためである。この並列演算特徴のため、ライティング演算のうちの一方をあるオブジェクトのための無色ライティング効果用に用いながら、他方のライティング演算を同じオブジェクトの有色ライティング効果のために用いることができる。並列演算特徴は、漫画的なライティング効果を有するシェード付けされたポリゴン表面を生成するのに、そのような漫画的なライティング効果を有さないシェード付けされたポリゴン表面を生成するのと同じだけの処理時間しかかからないという意味において、漫画的なライティングなどの効果を「自由」にする。本実施例において、ライティング演算パイプライン322によって生成されるCn値は、正でも負でもよい。負のライティングの場合は、バックライトライティングおよびその他の面白い効果が可能になる。
【0057】
本実施例において、ライティング演算パイプライン322の出力Cnは、整数アキュムレータ324によって累積される。本実施例において累積された出力は、変換ブロック308によって浮動小数点に変換され、テクスチャ座標としてテクスチャマッピング動作のためにテクスチャユニット502に供給される。本実施例は、テクスチャマッピング動作306の一部としてテクスチャフィルタリングを提供し得る。アプリケーションのプログラマは、ライティング計算302をテクスチャ座標を生成するとき、選択されるテクスチャフィルタリングモードに関して注意しなければならない。本実施例におけるs軸およびt軸は独立のファクタのために用いられるにも関わらずある種のテクスチャフィルタリングは両方の軸に同時に適用されるという事実に起因して、問題が起こりえる。これを回避する1つのやり方は、隣接するt値間の補間が最終出力に影響を及ぼさないことを確実にするために、テクスチャマップ内において各エントリをt軸に沿って複製することである。この結果、tの隣接する値に対する1次元テクスチャフィルタリングは同一になる。複数レベルのディテールをともなうミップマップフィルタリングも実行し得るが、これは、与えられた2Dテクスチャマップ中の1Dテクスチャの数を減らすようにも働き得る。
【0058】
本実施例において、ライティング計算302の色値をテクスチャ座標に変換する方法に起因して、別の複雑さが発生する。例示の実施形態においてライティング計算302により生成される色値は、0〜255の範囲の8ビット整数である。変換ブロック308は、この整数値を255で除算することによって浮動小数点数値に変換する。しかし本実施例において、この値はテクスチャサイズで乗算されることによってテクスチャ座標に変換される。このプロセスは、1Dテクスチャを選択するためのテクスチャ座標に対してアプリケーションのプログラマが細心の注意を払わなければならないことを意味する。テクスチャサイズが256としかつGX_NEARテクスチャフィルタリングと仮定すると、これは以下のようにマッピングされる。
【表1】
【0059】
変換プロセスのため、座標値128はスキップされ、色値254および255は同じ座標値にマッピングされる。テクスチャサイズが256としかつGX_LINEARフィルタリングと仮定すると、以下のようなマッピングとなる。
【表2】
【0060】
例示の実施形態においてテーブルIDを色値に変換するために、n*2を用いても安全である。しかし、1Dテクスチャを2Dテクスチャ内において単純でない方法で格納しなければならない。n=0のテーブルは座標0(のみ)に格納しなければならず、n=1からn=63のテーブルはn*2−1およびn*2に格納しなければならず、n=64からn=127のテーブルはn*2およびn*2+1に格納しなければならない。座標127は、この特定の実施形態においては通常はアクセスされないため空のままにしておいてもよい。他の実施形態ではこの問題をまったく回避できるか、あるいは異なる変換問題を有する。
【0061】
より詳細な変換ユニット300例の説明
図14〜22はさらなる例として、ライティング計算302に用いられるライティングパイプラインを含む変換ユニット300のより詳細な実施形態を示す。このシステム50の実施例において、変換ユニット300はハードウェアにおいてライティングを頂点毎の計算としてサポートする。このことは、ライティングされている頂点毎に色(RGB)値が演算され得ること、そしてこれらの色が、各ライティングされたトライアングルの表面にわたって線形補間されることができることを意味する(グローシェーディングとして公知)。本実施例における変換ユニット300は、拡散局所スポット光をフルにサポートし、また無限鏡面ライティングもサポートする。
【0062】
本例における変換ユニット300は、拡散減衰をサポートする。これは、オブジェクトの前面が側面よりも明るく、かつ背面が最も暗くなることが可能であることを意味する。変換ユニット300は、頂点の法線をサポートすることにより、拡散減衰を提供する。各頂点について、頂点の法線をその頂点と光の位置との間のベクトルに対して比較する。
【0063】
本実施例の変換ユニット300はまた、局所光をサポートする。局所光は、その世界の中で位置を有し、また方向も有する可能性がある。各光は位置を有するように定義される。各頂点の位置および光の位置を用いて、変換ユニット300は頂点毎の距離減衰を行うことができる。これはオブジェクト上で輝く光の輝度を、オブジェクトが光から遠ざかるにつれて減少させることが可能であることを意味する。
【0064】
本実施例における変換ユニット300はまた、指向性ライティングをサポートする。サポートは、非指向性光から弱指向性効果、そして高指向性スポット光にまでわたる。これらの効果は角度減衰によってサポートされる。従って、光の「ビーム内」に直に存在する頂点を、ビームの外側あるいは光の後ろに存在する頂点よりも明るくさせることが可能である。
【0065】
局所拡散光は、距離減衰および角度減衰の両方を受けることができる。適切なライティング式をプログラムすることにより、アプリケーションのプログラマは、減衰値を出力色またはアルファとして(あるいはテクスチャ座標生成の場合にはテクスチャ座標として)得ることが可能である。
【0066】
例示の実施形態において、変換ユニットは8個の物理光をサポートする。アプリケーションのプログラマは、各光の減衰パラメータ、位置、方向、および色を記述することができる。アプリケーションのプログラマはまた、ライティング式の結果を累積する、最大4個の物理カラーチャネルを制御することができる。光をチャネルと対応付けることにより、アプリケーションのプログラマは頂点毎の複数の光の効果を加算するか、あるいはそれらを後でテクスチャ環境ユニット600において結合するかを選択することができる。テクスチャ環境ユニット600が利用可能なチャネル数は、アプリケーションのプログラマによって設定される。場合によっては(例えばカラーチャネルを用いてテクスチャ座標を生成するとき)、ライトチャネルは演算されるが色または不透明度としては出力されない。前述のように、変換ユニット300は2つのカラーチャネルを同時に計算するようにパイプライン化されているが、1つのカラーチャネルだけをブレンディングのために直接テクスチャ環境ユニット600に供給してもよい。その他のカラーチャネルは、テクスチャ座標の形でテクスチャユニット500に提供され得る。
【0067】
各カラーチャネルは、カラーソースの選択において減衰を可能にする。光マスクが、最大8個の光をチャネルと対応付ける。図14のチャネルを参照し、最大8個の異なる光を2つのカラーチャネルおよび2つのアルファチャネルのうちの任意のものと対応付けることにより、一方がテクスチャ座標に変換され得る2つの独立な出力が提供される例を示している。
【0068】
図14に示すように、本実施例における変換ユニット300は2つのRGBA色(色0および色1)を生成する。各出力色はRGB用に1つおよびアルファ用に1つの2つのライティング関数を有し、ポリゴン毎頂点毎につき計4つのライティング関数を有する。4個のそのような光は、例えばテクスチャリングなどの様々なライティング効果を可能にする。各関数は、変換ユニット300が保持するグローバルアンビエント色および8個の光の状態に基づく、動作中の材質の色を含み得る。これらの式は拡散、鏡面、およびスポット光減衰を可能にする。ライティングデータパスは、好適な実施例においては局所拡散スポット光について最適であるように設計されるが、同じデータパスでテクスチャ型ライティングのための鏡面ハイライトおよび/または減衰係数を生成することも可能である。上述のように、光の色を用いてテクスチャ座標を生成することもできる。
【0069】
ライティング計算の例
変換ユニット300によって実行されるライティング式の例は以下の通りである。
【数2】
【0070】
本実施例において、材質およびグローバルアンビエント色はレジスタから得てもよく、あるいはコマンドプロセッサ200から頂点色の形で得てもよい。8個より多くの光を要求するアプリケーションは、メインプロセッサ110上で実行するソフトウェアに基づいて、結果が頂点色のうちの1つになるように追加的な光からの照度を演算して、その頂点色を用いるようにアンビエントソースレジスタを設定し得る。所望であれば、メインプロセッサ110がソフトウェアを用いてライティング計算のいずれかまたは全部を演算し、結果得られたこれらの演算出力を頂点色の形として、テクスチャ座標へ変換されるために変換ユニット300に供給することが可能である。あるいは、メインプロセッサは演算されたテクスチャ座標を、テクスチャマッピングのためにテクスチャユニット500に渡してもよい。
【0071】
「LightFunc」パラメータを無効にすることにより、材質の色が変更されずに変換ユニット300を通過する。これを用いて、無色ライティング関数出力に応答して複数の1Dテクスチャのうちのいずれをテクスチャマッピング動作に用いるかを、メインプロセッサ110がアプリケーションプログラムのソフトウェア制御に基づき直接選択することを、可能にすることができる。
【0072】
各ライティング関数において、利用可能な8個の光のいずれかまたは全部が許可され得る。光毎の照度の和は本実施例では[−1,1]にクランプされ、グローバルアンビエント項を加える前に整数2の補数に変換される。照度の総計が[0,1]にクランプされるため、材質は本実施例におけるライティングを通じては明るくなり得ない。もしこの効果が望まれる場合は、光の色を材質の色で予め乗算し、式中の材質の色を1.0に設定してもよい。他の実施形態例において、ライティングを通じて材質をより明るくすることを可能にするための他の構成が提供され得る。
【0073】
本実施形態において、結果が単色でも十分な場合には、アルファ式を用いることができる。その結果として得られるアルファ値は、本実施例のテクスチャ環境ユニット600ににおいて、他のRGBおよびアルファ値と組み合わせられることができる。例えば、チャネル0色の色出力に拡散結果を出し、色0チャネルのアルファ出力に鏡面結果を出し、かつテクスチャ環境ユニット600によって拡散色をテクスチャ色で乗算し、テクスチャ環境ユニット600内の1つのステージで(白色などの)鏡面ハイライトを加えることが可能である。
【0074】
本実施例の拡散減衰関数において、コマンド(N・H)[0,1]クランプ以上で柔軟性がもたらされる。拡散プロパティを有さないあるいは未クランプのままにされたライティング式については減衰が無効にされ得る。未クランプの内積は、光に基づくテクスチャ生成で照度を180°制御することを可能にする。本実施例においては照度はクランプされるため、colorcおよびambcを適切に用いることにより、符号付きライティング関数を適切にスケーリングおよびバイアスし得る。本実施例において、1つのライティング式において使用できる拡散減衰関数が、3例提供される。すなわち、
【数3】
である。
【0075】
本実施例における角度減衰ロジックは、光−方向ベクトルおよび光−頂点ベクトルの内積に基づく2次多項式を演算する。二乗項および線形項を外挿することにより、鋭角的なフォールオフが得られる。スポット光角度の外側の角度について外挿により負の値が発生するのを避けるため、クランピングを用いる。別の2次多項式の逆関数を用いることにより、レンジ減衰を行うことができる。距離値dは、頂点から光の位置までのベクトルの長さである。距離減衰だけの光の式をテクスチャ型の光に用いることによって、投影あるいはその他のテクスチャの距離に基づいた照度フォールオフを、シミュレートすることができる。
【0076】
この同じロジックを、平行光源についての一般の鏡面減衰(N・H)Sを近似するために用いることができる。光−頂点ベクトルおよび光−方向ベクトルのかわりに、法線および半角ベクトルをそれぞれ用いてもよい。ライティング関数において減衰を無効にすることにより、拡散および鏡面式の両方において非減衰の点(例えば全方位の)光源を用いることが可能になる。本例において、光の角度減衰係数を鏡面式に用い、そして拡散式において減衰をオフにしてもよい。本実施例の鏡面式および拡散式は、本実施例において変換ユニット300内ではなくテクスチャ環境ユニット600内で組み合わせられるが、他の実施形態が可能である。
【0077】
例示の減衰関数のさらなる詳細は以下の通りである。
【数4】
【0078】
変換ユニット300のブロック図の実施形態例
図15は、システム50の変換ユニット300の実施形態例のブロック図である。本実施例における変換ユニット300は、
・トップオブパイプライン部330
・光部332
・ボトムオブパイプライン部334
の3つの主要部を有する。
【0079】
本実施例におけるトップオブパイプライン部330は、光部332、コンテキスト行列格納336、入力FIFOバッファ338内積ユニット340、投影ブロック342、テクスチャドット2ブロック346、クリッピング検出器348、およびバイパスFIFOブロック350を有する。本実施例において、トップオブパイプライン(TOP)部330は、以下の例示的な関数を実行する。
・頂点変換(3つの内積)
・法線変換(3つの内積)
・テクスチャ変換(テクスチャに対して2または3つの内積)
・投影変換(単純化3つの内積)
そして光部332は以下のカラーチャネル関数を実行する。
・カラーチャネル0拡散演算(1つの内積N・L)
・カラーチャネル0拡散演算(光毎につき1つの内積L2)
・カラーチャネル0拡散演算(1つの内積N2)
【0080】
さらに入力FIFOは、例えば以下の情報を特定する頂点毎の頂点記述子を受け取る。
・図形情報XYZ、
・法線ベクトル情報NX、NY、NZ
・頂点毎につきRGBA色0
・頂点毎につきRGBA色1
・従法線ベクトルTX、TY、TZ
・従法線ベクトルBX、BY、BZ
・テクスチャ0データT0、
・テクスチャ1からnデータSn、Tn
【0081】
適切な頂点毎の情報が光部332に供給されて、ライティング演算を可能にする。
【0082】
図15に示す実施例における光部332は、ライティングパラメータメモリ352、法線メモリ354、および光データパス356を含んでいる。
【0083】
光パラメータメモリ352は、光データパス356が使用する様々な光パラメータを記憶する。このように、光パラメータ352は様々なライティング情報(例えば光ベクトル、光パラメータなど)の全てを保持する。本実施例において、グローバル状態およびアンビエント状態の両方がこのメモリに記憶される。本実施例において各ワードは32ビットで書かれているが、上位20ビットのみが保持される。本実施例において、各位置は3ワード幅を有し、最小ワード書き込みサイズは3ワードである。以下に光パラメータメモリ352の内容例を示す。
【表3】
【0084】
本実施例における光部332の全体図を図16に示す。簡潔に言えば、光部332は以下の局所ライティング演算を行う。
【数5】
これは、以下の頂点毎の局所光ベクトル演算
【数6】
を必要とする。この後、
【数7】
を演算する必要がある。
【0085】
このように、拡散減衰計算は、光ベクトルおよび視点空間法線を必要とする。例示の実施形態において、0へのクランピングは内部フラグを条件としてもよい(例えば1.0にクランプされてもまったくクランプされなくてもよい。)。拡散光が負の内積を有することを許してもよい。変換内積ユニットが幾何学的な視点空間変換を演算する一方で、ライティング内積ユニットが視点空間法線を演算してもよい。そして、ライティング内積ユニットががN・L、L2およびN2内積を演算し得る。この後、本実施例では結果を正規化することにより、正規化光ベクトル法線情報を提供する。正規化後、正規化の中間結果(例えば距離の二乗と距離とコサインN・Lと)を用いて正規化係数ならびに減衰式を演算する。そして、光アンビエントベクトルを乗算する。得られた3つ組は、光毎の減衰された拡散成分である。これを2の補数整数に変換し、得られた3つの値を整数アキュムレータに累積する。このアキュムレータは、アンビエント項と他の光からの任意の他の拡散項を加算する。最終的な和が頂点毎の色である(本実施例においては0から255にクランプされた8ビットRGBフォーマット)。
【0086】
図17は、図16に示したベクトルドット/Maddブロック357のブロック図の例を示す。Nおよび他の全ての内積を演算するために同じ内積ユニットを用いると、各光が同じデータパス要素を複数回再使用しなければならないため、性能がやや劣るかもしれず、光のスケジューリングが難しくなる。これは、複雑な制御問題につながる。設計を単純化するためには、第2の制限された内積ユニットを実施することで様々な演算を分離してもよい。第1の内積ユニットが変換法線を演算し、他方の内積ユニットが頂点変換を演算してもよい。次にベクトル加算が局所ライティングについての光ベクトルを演算し得る。第2の内積ユニットは、(鏡面光について)N2、L2、N・L、N・Hを演算し得る。本実施例においてこれは、フィードバックのない完全にパイプライン化された態様で実現することができる。図17を参照のこと。
【0087】
図18は、図16に示す正規化器360の実施形態の一例を示す。いったんライティングベクトル値が演算されれば、本実施例は結果を正規化し、減衰を演算する。本実施例の正規化器360は、以下の入力を受け付け、
・コサイン減衰:L・Dir、1/sqrt(L)
・距離減衰:L2、L
・拡散係数:N・L、N2、L2、
そして図18に示す例示の正規化器360によって行われる以下のステップを用いて距離減衰を演算する。
1.K2d2を演算
2.K2d2 +K0を演算
3.dを演算
4.K1dを演算
5.D2D2+K1d+ KOを演算
6.1/(K2d2+K1d+K0)を演算
【0088】
図19は、距離減衰ユニット362の一例を示す。例示の距離減衰器の実施形態362は、以下のステップ例を用いてコサイン減衰を演算する。
1.Cos=Clamp0(L.Ldir)を演算
2.Cos2を演算
3.A2Cos2を演算
4.A1Cosを演算
5.A1Cos+A0を演算
6.A2Cos2+A1Cos+A0を演算
7.Clamp_0(A+2+Cos2+A1Cos+A0)を演算
【0089】
図20は、以下を演算する光スケーラ364の実施形態の一例を示す。
・1/sqrt(N2)
・1/sqrt(L2)
・N・L(sqrt(N2)×sqrt(L2))
【0090】
ユニットのうちのいくつか(例えば1/sqrtおよび乗算器のうちのいくつか)は、図17〜20の様々なデータパスの実施例の間で共有することができる。従って、ある実施例がおよそ18個の乗算器と10個の加算器を必要とすることもある。反転および1/sqrtは、テーブルルックアップまたは単純な1パスニュートン−ラプソン補間器またはその他の何らかのパイプライン補間器を用いて、行うことができる。アルファおよび鏡面書き込み演算は、ライティング式の変更でしかないため、本実施例において追加的なハードウェアをいっさい必要としない。
【0091】
図21は、整数アキュムレータ336の実施形態の一例を示す。各色について新しい属性が到着したとき、その色が累積される。ある色について全ての光が累積されると、アンビエントが加算され(例えば頂点色FIFOから、あるいはレジスタから)、材質の色が乗算される。次に、最終色およびテクスチャ生成の構築により、最終RGB/A色が累積/フォーマットレジスタに累積される。色/テクスチャが演算されれば、出力FIFOに書き込まれる。制御は以下の一般ガイドラインに従い得る。
【0092】
図22は、本実施例において光パイプライン322を制御するために用いられるステージ遷移図の一例を示す。調停ロジックが、光データパス内に送出された一連の事象を決定する。本実施例の調停器は、その事象に依存して4サイクル毎あるいは8サイクル毎にしか新しい事象を送出することができない。可能な事象のリストは、
・特定の色/アルファについての光演算
・バンプマップ演算
を含む。
【0093】
上記の事象について、調停器は4/8サイクル毎に制御パイプライン内に属性をドロップする。これらの属性の各々は、光パイプライン322に入れられる事象のための実行命令を含んでいる。パイプラインの終端において、色/テクスチャが完了しているか否かを決定するために用いられる局所カウントをインクリメントするために、これらの属性が用いられる。
【0094】
以下に、変換ユニット300がどのように挙動してどのようにデータおよびテクスチャなどを扱うかを制御するために用いられる、制御レジスタの例を示す。
【表4】
【0095】
アプリケーションプログラミングインターフェースの例
以下に、一実施形態例におけるライティング関数からのテクスチャ座標生成に関連する、API呼び出しの例をいくつか挙げる。
【0096】
GXSetTexCoordGen
説明
この関数を用いて、テクスチャ座標がどのように生成されるかを指定する。出力テクスチャ座標は通常は入力属性(位置、法線、またはテクスチャ座標)の何らかの変換の結果である。頂点毎のライティング計算の出力カラーチャネルからも、テクスチャ座標を生成することができる。
【0097】
C言語シンタックスにおいて、テクスチャ座標生成関数は以下のようなものになる。
dst_coord=func(src_param, mtx);
【0098】
API関数呼び出し例の用法の一例は、
である。
【0099】
GXSetVtxDescによって設定される現在の頂点記述子は、グラフィックスプロセッサへのデータ入力を記述する。GXSetTexCoordGenを用いることにより、アプリケーションは入力データから新しい出力テクスチャ座標を作成することができる。dst_coordパラメータは、出力テクスチャ座標に名前を与えるために用いられる。このテクスチャ座標は、GXSetTevOrderを用いてテクスチャに結びつけることができる。関数GXSetNumTexGensは、GXSetTevOrder関数で利用可能なGX_TEXCOORD0から開始する連続する複数のテクスチャ座標を指定する。
【0100】
入力テクスチャ座標は、テクスチャ座標生成ハードウェアを通る。GXInitは、ハードウェアを(このAPIを呼び出して)初期化することにより、GX_IDENTITY行列によって変換される全てのテクスチャ座標が、入力座標が変更されずにテクスチャハードウェアを通されたかのように見えるように変換される。
【0101】
列挙GXTexMtxは、mtxとして供給され得るテクスチャ行列名のデフォルトのセットを定義する。行列名は実際には、マトリクスメモリ中のロードされた行列の第1行目を示す行アドレス(1行につき4フロート)である。モデルビュー行列およびテクスチャ行列は、本実施例においてマトリクスメモリを共有する。
【0102】
例:頂点ライティング計算からのテクスチャ座標生成
このタイプのテクスチャ座標生成は、漫画的なライティング効果を創出するために用いることができる。カラーチャネル結果のうちの1つをテクスチャ座標に変換する。
【0103】
GX_TG_SRTG
座標sはチャネルの8ビット赤成分と等しく設定される。座標tはカラーチャネルの8ビット緑成分と等しく設定される。漫画的なライティングにおいて座標sは光の強度を表し、強度を色に変換するために任意の1Dテクスチャルックアップに入力される。座標tは材質の色を表すために用いられ、2Dテクスチャから1Dテーブルを選択するために用いられる。GX_TG_SRTG関数を用いて生成されるテクスチャ座標は、変換(GX_TG_MTX2×4またはGX_TG_MTX3×4)およびバンプマップ関数(GX_TG_BUMP0−3)によって生成される任意の座標の後に生成されなければならない。
【0104】
1Dの強度−色テーブルの配列を表すテクスチャは、本実施例において注意深く構築されなければならない。各テーブル(行)は二重に記述されなければならない。座標sおよび座標tは8ビット色から生成されるため、256×256の最大テクスチャを用いることができる。このテクスチャサイズにおいて、127個のテーブルが利用可能である((256−1)/2)。
【0105】
2行テーブル中で正しく中央に位置される座標tを作成する、緑チャネル色を生成するためのルールの一例は、
である。
【0106】
【0107】
機能順序付け
本実施例において、テクスチャ座標は機能順に生成される。すなわち、まず全ての変換(GX_TG_MTX2×4またはGX_TG_MTX3×4)、次にバンプマップ(GX_TG_BUMP0〜3)、そして次にライティングからのテクスチャ座標生成(GX_TG_SRTG)である。
【0108】
GXSetNumTexGens
説明
この関数は、テクスチャ環境(TEV)ステージにおいて生成され利用可能であるテクスチャ座標の数を設定する。テクスチャ座標は、GXSetTexCoordGenにより記述される入力データから生成される。生成されたテクスチャ座標は、GXSetTevOrderを用いて特定のテクスチャおよび特定のテクスチャ環境(TEV)ステージにリンクされる。
【0109】
GX_TEXCOORD0から開始して連続する複数のテクスチャ座標を生成することができる。最大8個のテクスチャ座標を生成し得る。nTexGensが0に設定されると、テクスチャ座標は生成されない。この場合、少なくとも1つのカラーチャネルが出力されなければならない。GXSetNumChansを参照のこと。
引数
nTexGensは生成されるテクスチャ座標の数である。
用法例
void GXSetNumTexGens(u8 nTexGens);
【0110】
GXSetNumChans
説明
この関数は、テクスチャ環境(TEV)ステージに出力されるライティングカラーチャネルの数を設定する。カラーチャネルは、頂点毎のライティング効果を演算するために用いられるメカニズムである。カラーチャネルは、GXSetChanCtrlを用いて制御される。カラーチャネルは一般に、特定のテクスチャ環境(TEV)ステージにリンクされる。
【0111】
この関数は基本的に、ラスタライズされる頂点毎の色の数を定義する。nChansが0に設定された場合、少なくとも1つのテクスチャ座標が生成されなければならない。GXSetNumTexGensを参照。nChansが1に設定されると、チャネルGX_COLOR0A0がラスタライズされる。nChansが2(最大値)に設定されると、GX_COLOR0A0またはGX_COLOR1A1がラスタライズされる。
引数
nChansはラスタライズされるカラーチャネルの数である。
用法例
void GXSetNumChans(u8 nChans);
【0112】
GXSetChanCtrl
説明
この関数は、あるカラーチャネルについてのライティングコントロールを設定する。カラーチャネルは、対応して1つ以上(最高8個)の光を有することができ、これはlight_maskを用いて設定される。diff_fnおよびattn_fnパラメータは、このチャネルに対応付けられた全ての光についてのライティング計算を制御する。amb_srcおよびmat_srcは、入力ソース色がレジスタ色由来であるか頂点色由来であるかを選択するために用いられ得る。チャネル使用可能がGX_FALSEに設定されると、材質のカラーソース(mat_srcにより設定される)はチャネルの出力色としてそのまま渡される。チャネル使用可能がGX_TRUEに設定されると、出力色は他のコントロールの設定(すなわちライティング式)に依存する。GXInitは、全てのチャネルについての許可をGX_FALSEへに設定する。GXSetChanCtrlはライティングチャネルをコンフィギュレーションする。チャネル演算の結果を出力するためには、関数GXSetNumChansを用いる。
【0113】
チャネルGX_COLOR0およびGX_ALPHA0はライティングのために別々に制御されるが、これらは1つのRGBA色(実効的にGX_COLOR0A0)として一緒にラスタライズされる。同じことがGX_COLOR1およびGX_ALPHA1にも言え、これらは実効的にGX_COLOR1A1としてラスタライズされる。グラフィックスハードウェアには色用ラスタライザが1つしかないため、アプリケーションは、テクスチャ環境ユニット(Tev)内の各ステージに対してどの色をラスタライズするかを選択する。これはGXSetTevOrder関数を用いて達成される。
【0114】
チャネルGX_COLOR1A1において頂点色を用いるために、頂点毎につき2つの色が供給される。すなわち、現在の頂点記述子中でGX_VA_CLR0およびGX_VA_CLR1の両方が許可される。現在の頂点記述子中でGX_VA_CLR0かGX_VA_CLR1かのいずれか一方のみが許可される場合、頂点色はチャネルGX_VA_COLOR0A0に渡される。
【0115】
amb_srcがGX_SRC_REGに設定されると、GXSetChanAmbColorにより設定される色がアンビエント色として用いられる。mat_srcがGX_SRC_REGの場合、GXSetChanMatColorにより設定される色が材質の色として用いられる。
引数
【表5】
【0116】
例:局所拡散スポット光
本例では、どのようにGX_COLOR0チャネルをコンフィギュレーションして頂点色を局所拡散スポット光でライティングするかを示す。関数GXInitLightPosおよびGXInitLightDirを用いて、光の位置および方向を初期化する。光の位置および方向は、光オブジェクトの設定以前に視点空間に変換されているものとする。拡散ライティングを許可するために、diff_fnがGX_DF_CLAMPに設定される。これはスポット光であるため、attn_fnがGX_AF_SPOTに設定される。スポット光の角度減衰関数のタイプは光で決定され、ここでGXInitLightSpotにより設定される。距離減衰関数がGXInitLightDistAttnを用いて設定される。
【表6】
【0117】
例:鏡面光
本例では、鏡面光用にどのようにGX_COLOR0を設定するかを示す。GXInitSpecularDir関数を、光の方向を設定するために用いる。光オブジェクトの初期化以前に、方向は視点空間に変換されなければならない。鏡面光は無限遠にあると考えられるので、位置パラメータは不要である。角度減衰関数および距離減衰関数を用いて、鏡面光に対する指数減衰関数を近似する。GXInitLightShininessを呼び出し、ライティングされた材質がどれくらい輝いて見えるかを制御する(減衰パラメータを設定する)。attn_fnがGX_AF_SPECに設定され、鏡面演算を許可する。
【表7】
【0118】
例:平行指向性拡散光
ハードウェアは平行指向性拡散光をサポートしないが、ライティングされるべき全オブジェクトから光を非常に遠く置くことにより、「ほぼ平行な」光を得ることは可能である。光の位置がオブジェクトから非常に遠ければ、全ての光線は平行であると見なし得る。
【表8】
【0119】
光は拡散チャネルおよび鏡面チャネルの両方に用いることが可能
局所拡散あるいは鏡面のいずれの計算がチャネルにおいて実行されるかは、チャネルコントロールによって決定される。(チャネルに対応付けられた)光のパラメータは、通常はこれらの演算のうちの1つを想定して設定される。例えば、アプリケーションは局所拡散光(拡散チャネルで用いられる)に対しては位置および方向を設定し、鏡面光(鏡面チャネルで用いられる)に対しては方向のみを設定する。しかし、アプリケーションが指向性の拡散光のみを必要とする場合(光の位置が非常に遠いために光の全ての光線が平行であると見なし得る)、同じ光のパラメータを鏡面チャネルと拡散チャネルとの両方に用いることができる。この場合、GXInitSpecularDirを用いて光のパラメータを初期化する。
【0120】
例:ライティング前を考慮した頂点毎の光
本例では、頂点毎GX_VA_CLR0として供給される(GXSetVtxDescを参照)ライティング前の色(例えばアートツールで演算される)を、拡散局所光の結果に対して加える。この例において、以下の式を実施すればよい。
【数8】
【0121】
アンビエントスケールは、光がオブジェクトに当たっていない時のライティング前の色の最小量を定義する。amb_scaleとdiff_scaleとの和は1.0に等しいはずなので、オブジェクトが最も明るい光の中にあるとき、頂点色はライティング前の色に等しい。
【0122】
材質の色は、頂点毎の色(ライティング前の色)であるようにコンフィギュレーションされる。アンビエント色レジスタはamb_scaleに等しく設定される。光の色はdiff_scaleによってスケーリングされる。
【表9】
【0123】
例:4つの投影光に対する減衰
この例では、4つの投影テクスチャ光に対してどのように局所光減衰値を計算するかを示す。頂点毎に提供される色はない。材質の色はチャネルマテリアルレジスタから入来し、減衰をパスするように設定される(1.0で乗算)。アンビエント色からの寄与はない。各チャネルは、テクスチャ環境(Tev)ユニットにおいて投影テクスチャを減衰するために用いられ得る。
【表10】
【0124】
GXSetChanMatColor
説明
この関数は、カラーチャネルchanに対する材質の色レジスタを設定する。材質の色は、GXSetChanCtrlにより設定される材質のソースがGX_SRC_REGならば使用される。
【0125】
説明に役立つ実例
以下の例におけるアプリケーションプログラミングインターフェース関数および関連するパラメータは、非クランプの拡散ライティング関数を用いてテクスチャ座標を生成するために用いることができ、あるいは、各頂点の光の色の赤色成分において1次元テクスチャマップをルックアップするためのテクスチャ座標を生成するために用いられ、第2のテクスチャ座標が緑色成分によって生成され、2次元テクスチャマップから1次元テクスチャラインを選択するために用いられ得る。
【表11】
【0126】
他の互換性のある実施例
上述のシステム要素50のうちのいくつかは、上述の家庭用ビデオゲームコンソール構成以外としても実施可能である。例えば、システム50用に書かれたグラフィックスアプリケーションまたはその他のソフトウェアを、システム50をエミュレートするなどして互換性を有する異なる構成を持ったプラットフォーム上で実行することができる。もしその別のプラットフォームがシステム50のハードウェアおよびソフトウェアリソースの一部または全部をうまくエミュレート、シミュレートおよび/または提供することができれば、その別のプラットフォームは、ソフトウェアを首尾よく実行することができる。
【0127】
一例として、エミュレータは、システム50のハードウェアおよび/またはソフトウェア構成(プラットフォーム)とは異なるハードウェアおよび/またはソフトウェア構成(プラットフォーム)を提供し得る。このエミュレータシステムは、アプリケーションソフトウェアが書かれたシステムのハードウェアおよび/またはソフトウェア要素の一部または全部をエミュレートまたはシミュレートする、ソフトウェアおよび/またはハードウェア要素を有し得る。例えば、エミュレータシステムは、システム50のハードウェアおよび/またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行するパーソナルコンピュータなどの汎用のデジタルコンピュータからなっていてもよい。
【0128】
汎用デジタルコンピュータのいくつか(例えばIBMまたはマッキントッシュのパーソナルコンピュータおよび互換機)は現在、DirectXまたはその他の標準的な3DグラフィックスコマンドAPIと適合する3Dグラフィックスパイプラインを提供する3Dグラフィックスカードを備えている。また、標準的な音声コマンドのセットに基づいて高品質なステレオ音を提供するステレオサウンドカードを備えている場合もある。このようなマルチメディア−ハードウェアを備えたパーソナルコンピュータがエミュレータソフトウェアを実行すれば、システム50のグラフィックスおよびサウンド性能に匹敵する十分な能力を有し得る。エミュレータソフトウェアは、ゲームプログラマがゲームソフトウェアを書いた対象である家庭用ビデオゲームコンソールプラットフォームの処理、3Dグラフィックス、音声、周辺およびその他の機能をシミュレートするように、パーソナルコンピュータプラットフォーム上のハードウェアリソースを制御する。
【0129】
図23は、ホストプラットフォーム1201、エミュレータ要素1303、および記憶媒体62上に記憶されたゲームソフトウェア実行可能2値画像を用いたエミュレーション処理の全体例を示す。ホスト1201は、例えばパーソナルコンピュータ、ビデオゲームコンソール、または十分な演算能力を有する任意のその他のプラットフォームなどの、汎用あるいは専用のデジタル演算装置であり得る。エミュレータ1303は、ホストプラットフォーム1201上で稼働し、記憶媒体62からのコマンド、データおよびその他の情報の、ホストによって処理される形式へのリアルタイム変換を提供するソフトウェアおよび/またはハードウェアであり得る。例えば、エミュレータ1303は、システム50によって実行されることが意図される「ソース」2値画像プログラム命令を記憶媒体62から取り込み、これらのプログラム命令を、ホスト1201によって実行その他の処理を行われ得る対象形式に変換する。
【0130】
一例として、ソフトウェアが、IBM PowerPCまたはその他の特定のプロセッサを用いたプラットフォーム上で実行されるように書かれており、ホスト1201が異なる(例えばインテルの)プロセッサを用いたパーソナルコンピュータである場合は、エミュレータ1303は、1つまたは一連の2値画像プログラム命令を記憶媒体62から取り込み、これらのプログラム命令を、1つ以上の同等なインテルの2値画像プログラム命令に変換する。エミュレータ1303はまた、グラフィックスおよび音声プロセッサ114によって処理されることを意図されたグラフィックスコマンドおよび音声コマンドを取り込みおよび/または生成し、これらのコマンドを、ホスト1201上において利用可能であるハードウェアおよび/またはソフトウェアグラフィックスおよび音声処理リソースによって処理され得る単数または複数のフォーマットに変換する。一例として、エミュレータ1303は、これらのコマンドを、ホスト1201の特定のグラフィックスおよび/または音声ハードウェアによって処理され得るコマンドに変換し得る(例えば、標準的なDirectX、OpenGL、および/または音声APIを用いて)。
【0131】
上述のビデオゲームシステムの一部または全ての特徴を提供するために用いられるエミュレータ1303には、また、そのエミュレータを用いて実行されるゲームの様々なオプションやスクリーンモードの選択を単純化あるいは自動化するグラフィックスユーザインターフェース(GUI)が備えられてもよい。一例において、そのようなエミュレータ1303は、また、ソフトウェアが本来意図されたホストプラットフォームに比較して、より高度な機能性をさらに含んでもよい。
【0132】
図24は、エミュレータ1302とともに適切に用いられるエミュレーションホストシステム1201を示す。システム1201は、処理ユニット1203およびシステムメモリ1205を有する。システムバス1207が、システムメモリ1205を含む様々なシステム要素を、処理ユニット1203に接続する。システムバス1207は、メモリバスまたはメモリコントローラを含む数種のタイプのバス構造、周辺バス、および様々なバスアーキテクチャのうちのいずれかを用いた局所バスのうちのいずれでもよい。システムメモリ1207は、リードオンリーメモリ(ROM)1252およびランダムアクセスメモリ(RAM)1254を有する。パーソナルコンピュータシステム1201内の要素間の情報の転送(例えばスタートアップ中など)に役立つ基本的なルーチンを含んだ基本入力/出力システム(BIOS)1256が、ROM1252に格納されている。システム1201はさらに、様々なドライブおよび関連するコンピュータ可読性の媒体を有する。ハードディスクドライブ1209は、(典型的には固定の)磁気ハードディスク1211から読み出し、またこれに対して書き込む。追加的な(可能なオプションである)磁気ディスクドライブ1213は、着脱可能な「フロッピー」またはその他の磁気ディスク1215から読み出し、また、これに対して書き込む。光ディスクドライブ1217は、CD ROMまたはその他の光メディアなどの着脱可能な光ディスク1219から読み出し、また、いくつかの構成においては、これに対して書き込む。ハードディスクドライブ1209および光ディスクドライブ1217は、それぞれハードディスクドライブインターフェース1221および光ドライブインターフェース1225によって、システムバス1207に接続されている。そのドライブおよびそれに対応するコンピュータ可読性媒体は、コンピュータ可読性の命令、データ構造、プログラムモジュール、ゲームプログラムおよびパーソナルコンピュータシステム1201のためのその他のデータを、不揮発的に記憶する。その他の構成において、コンピュータによりアクセス可能なデータを格納することができる他のタイプのコンピュータ可読性媒体、例えば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイ(Bernoulli)カートリッジ、ランダムアクセスメモリ(RAM)リードオンリーメモリ(ROM)などもまた使用され得る。
【0133】
エミュレータ1303を含む複数のプログラムモジュールは、ハードディスク1211、着脱式磁気ディスク1215、光ディスク1219、および/またはシステムメモリ1205のROM1252および/またはRAM1254上に記憶され得る。このようなプログラムモジュールは、グラフィックスおよび音声APIを提供するオペレーティングシステム、1つ以上のアプリケーションプログラム、その他のプログラムモジュール、プログラムデータおよびゲームデータを含んでもよい。ユーザは、キーボード1227、ポインティング装置1229、マイク、ジョイスティック、ゲームコントローラ、衛星放送用アンテナ、スキャナなどの入力装置を介して、コマンドおよび情報を、パーソナルコンピュータシステム1201に入力し得る。これらおよびその他の入力装置は、システムバス1207に接続されたシリアルポートインターフェース1231を介して処理ユニット1203に接続されることができるが、パラレルポート、ゲームポートファイヤワイヤバスまたはユニバーサルシリアルバス(USB)などの他のインターフェースによって接続されてもよい。また、モニタ1233またはその他のタイプの表示装置が、ビデオアダプタ1235などのインターフェースを介して、システムバス1207に接続される。
【0134】
システム1201は、インターネットなどのネットワーク1152を介して通信を確立するための、モデム1154やその他のネットワークインターフェース手段を有し得る。内部でも外部でもよいモデム1154が、シリアルポートインターフェース1231を介してシステムバス123に接続されている。また、システム1201が、局所エリアネットワーク1158を介してリモート演算装置1150(例えば、別のシステム1201)と通信することを可能にするために、ネットワークインターフェース1156が提供され得る(あるいはこのような通信は、広域ネットワーク1152またはダイヤルアップやその他の通信手段などの他の通信パスを介して行われてもよい)。システム1201は典型的には、プリンタその他の標準的な周辺デバイスなどの、他の周辺出力デバイスを有し得る。
【0135】
一例において、ビデオアダプタ1235は、マイクロソフトのDirectX7.0または他バージョンなどの標準的な3Dグラフィックスアプリケーションプログラマインターフェースに基づいて発せられる3Dグラフィックスコマンドに応答して、高速な3Dグラフィックスレンダリングを提供する3Dグラフィックスパイプラインチップセットを有し得る。また1組のステレオスピーカ1237が、従来の「サウンドカード」などのサウンド発生インターフェースを介してシステムバス1207に接続されていることにより、バス1207によって供給される音声コマンドに基づいて高品質なステレオ音声を生成するためのハードウェアおよび埋め込みソフトウェアサポートを提供する。これらのハードウェア能力は、システム1201が、記憶媒体62に格納されたソフトウェアをプレイするために十分なグラフィックスおよびサウンド速度能力を提供することを可能にする。
【0136】
上記参照した全ての文献を、本明細書において参考のために援用する。
【0137】
以上、本発明を、最も実用的で好ましい実施形態であると現時点で判断される内容について説明してきたが、本発明は、開示された実施形態にのみ制限されるべきものではなく、反対に記載したクレームの範囲内において、様々に変更、および同等な内容が適用されるものとする。例えば、特定の漫画的なライティングの例を本明細書において開示したが、本発明は漫画的なライティングに限定されるものではなくむしろ、無色ライティングパラメータを用いて達成し得る様々な写実的および非写実的そしてテクスチャ型および非テクスチャ型の、アプリケーションおよび効果を包含することが理解されるであろう。
【図面の簡単な説明】
【図1】対話式コンピュータグラフィックスシステムの一例の全体図である。
【図2】図1の例のコンピュータグラフィックスシステムのブロック図である。
【図3】図2に示す例のグラフィックスおよび音声プロセッサのブロック図である。
【図4】図3に示す例の3Dグラフィックスプロセッサのブロック図である。
【図5】図4のグラフィックスおよび音声プロセッサの、論理フロー図例である。
【図6】本発明により提供される高レベル画像生成処理の例を示す図である。
【図7】本発明により提供される無色ライティングパラメータに基づくテクスチャリングを用いたより具体的な画像生成処理の例を示す図である。
【図8】テクスチャ関数の例を示す図である。
【図9】1次元テクスチャマップの例を示す図である。
【図10】テクスチャマッピング手順の例を示す図である。
【図11】2次元テクスチャマップの例を示す図である。
【図12】2次元テクスチャマップのさらなる例を示す図である。
【図13】ライティングパイプライン実施形態の例を示す図である。
【図14】光のカラーチャネルとの対応付けの例を示す図である。
【図15】変換ユニットの実施形態の例を示す図である。
【図16】ライティングパイプラインの実施形態の例を示す図である。
【図17】ベクトルドット/加算ユニットの実施形態の例を示す図である。
【図18】正規化器の実施形態の例を示す図である。
【図19】距離減衰器の実施形態の例を示す図である。
【図20】光スケール器の実施形態の例を示す図である。
【図21】整数アキュムレータの実施形態の例を示す図である。
【図22】状態遷移図例である。
【図23】別の互換的な実施例を示す図である。
【図24】別の互換的な実施例を示す図である。
Claims (1)
- グラフィックスシステムであって、
少なくとも第1および第2のチャネルを含むライティングデータパイプラインと、
前記ライティングデータパイプラインに結合されたテクスチャユニットと、
前記ライティングデータパイプラインおよび前記テクスチャユニットに結合されたブレンダとを備え、
前記ライティングデータパイプラインは、頂点毎の情報およびライティング定義を受け取り、ライティングされる頂点パラメータを前記頂点毎およびライティング定義に応答して計算し、
前記テクスチャユニットは、前記ライティングデータパイプラインの出力のうち少なくとも1つを少なくとも1つのテクスチャ座標として用いて、少なくとも1つのテクスチャマッピング動作を行い、
前記ブレンダは、前記ライティングデータパイプラインから得た色および/または不透明度情報を、前記テクスチャユニットから得たテクセルとブレンドすることによりレンダリングされた画像を提供する、グラフィックスシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22700700P | 2000-08-23 | 2000-08-23 | |
US60/227007 | 2000-08-23 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010273183A Division JP4975159B2 (ja) | 2000-08-23 | 2010-12-08 | グラフィックシステム、グラフィックス画像を生成する方法およびプログラムにおける無色光のライティング |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002197485A JP2002197485A (ja) | 2002-07-12 |
JP4761492B2 true JP4761492B2 (ja) | 2011-08-31 |
Family
ID=22851369
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001206704A Expired - Fee Related JP4761492B2 (ja) | 2000-08-23 | 2001-07-06 | グラフィックシステムにおける無色光のライティング |
JP2010273183A Expired - Lifetime JP4975159B2 (ja) | 2000-08-23 | 2010-12-08 | グラフィックシステム、グラフィックス画像を生成する方法およびプログラムにおける無色光のライティング |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010273183A Expired - Lifetime JP4975159B2 (ja) | 2000-08-23 | 2010-12-08 | グラフィックシステム、グラフィックス画像を生成する方法およびプログラムにおける無色光のライティング |
Country Status (1)
Country | Link |
---|---|
JP (2) | JP4761492B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102608863B1 (ko) | 2022-10-31 | 2023-12-01 | 주식회사 스튜디오징스 | 만화 특성 표현을 위한 애니메이팅 방법 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4766482B2 (ja) * | 2005-10-12 | 2011-09-07 | 株式会社ソニー・コンピュータエンタテインメント | 描画処理プログラム、描画処理プログラムを記憶した記憶媒体、描画処理方法、描画処理装置、及び携帯端末装置 |
JP5007633B2 (ja) * | 2007-09-04 | 2012-08-22 | 株式会社セガ | 画像処理用プログラム、当該プログラムを記録したコンピュータ読み取り可能な記録媒体、画像処理装置、画像処理方法 |
JP2011092365A (ja) * | 2009-10-29 | 2011-05-12 | Daito Giken:Kk | 遊技台 |
JP5103543B2 (ja) * | 2011-05-16 | 2012-12-19 | 株式会社ディジタルメディアプロフェッショナル | コンピュータ・グラフィックス回路及びこの回路を用いて、二次元表示システムに表示される三次元オブジェクトに適用される二次元擬似ランダム・テクスチャ・パターンを、一次元テクスチャ画像を用いて生成する三次元コンピュータ・グラフィックス装置 |
KR101748397B1 (ko) * | 2016-05-04 | 2017-06-16 | 주식회사 와이즈오토모티브 | OpenGL을 이용한 AVM용 LUT 생성 방법 |
CN114241098A (zh) * | 2021-12-21 | 2022-03-25 | 网易(杭州)网络有限公司 | 一种卡通动态效果制作方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000197765A (ja) * | 1998-12-29 | 2000-07-18 | Namco Ltd | ゲ―ム装置及び情報記憶媒体 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2267007B (en) * | 1992-04-24 | 1995-09-13 | Sony Broadcast & Communication | Video special effect apparatus and method |
JPH09231403A (ja) * | 1996-02-27 | 1997-09-05 | Sony Corp | フォンシェージング方法及び画像生成装置 |
-
2001
- 2001-07-06 JP JP2001206704A patent/JP4761492B2/ja not_active Expired - Fee Related
-
2010
- 2010-12-08 JP JP2010273183A patent/JP4975159B2/ja not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000197765A (ja) * | 1998-12-29 | 2000-07-18 | Namco Ltd | ゲ―ム装置及び情報記憶媒体 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102608863B1 (ko) | 2022-10-31 | 2023-12-01 | 주식회사 스튜디오징스 | 만화 특성 표현을 위한 애니메이팅 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP4975159B2 (ja) | 2012-07-11 |
JP2002197485A (ja) | 2002-07-12 |
JP2011090699A (ja) | 2011-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6639595B1 (en) | Achromatic lighting in a graphics system and method | |
JP4731028B2 (ja) | グラフィクスシステム用再循環シェードツリーブレンダ | |
US7307640B2 (en) | Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system | |
US6664962B1 (en) | Shadow mapping in a low cost graphics system | |
US6664958B1 (en) | Z-texturing | |
JP4698893B2 (ja) | 改良されたフォグ効果を提供するための方法、グラフィックスシステム、およびプログラム | |
US6618048B1 (en) | 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components | |
US6825851B1 (en) | Method and apparatus for environment-mapped bump-mapping in a graphics system | |
US6707458B1 (en) | Method and apparatus for texture tiling in a graphics system | |
US7307638B2 (en) | Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system | |
US6700586B1 (en) | Low cost graphics with stitching processing hardware support for skeletal animation | |
US8223149B2 (en) | Cone-culled soft shadows | |
JP4975159B2 (ja) | グラフィックシステム、グラフィックス画像を生成する方法およびプログラムにおける無色光のライティング | |
US7061502B1 (en) | Method and apparatus for providing logical combination of N alpha operations within a graphics system | |
JP4740490B2 (ja) | グラフィックスレンダリングシステムにおいて視覚的に重要なz成分の精度を最大化しz近傍クリッピングを回避するためのz近傍範囲におけるz値のクランピング | |
JP4698894B2 (ja) | グラフィックスシステムにおけるテクスチャタイリングのための方法、装置およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080627 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20101001 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101012 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101208 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110303 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110427 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110511 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110603 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110606 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140617 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4761492 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |