JP4761492B2 - Colorless lighting in graphic systems - Google Patents
Colorless lighting in graphic systems 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
【0001】
【発明の属する技術分野】
本発明は、コンピュータグラフィックスに関し、より詳細には、家庭用ビデオゲームプラットフォームなどの対話式グラフィックスシステムに関する。より詳細には、本発明は、色または不透明度を変更するために後に用いられるパラメータを生成するためにライティング関数を用いるグラフィックス処理の改良に関する。さらに、詳細には、本発明は、さらなる関数(例えばテクスチャリング)などに適用される距離または角度などのパラメータをライティング計算が定義する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】別の互換的な実施例を示す図である。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to computer graphics, and more particularly to interactive graphics systems such as home video game platforms.ToRelated. More particularly, the present invention relates to improved graphics processing that uses lighting functions to generate parameters that are used later to change color or opacity. More particularly, the present invention relates to a 3D graphics system in which lighting calculations define parameters such as distance or angle applied to additional functions (eg, texturing) and the like.
[0002]
[Prior art]
Many of us have seen movies that include surprisingly realistic dinosaurs, aliens, animated toys, and other fantastic creatures. Such animation is made possible by computer graphics. Using these techniques, computer graphics artists can specify how each object should look and how its appearance should change over time, and the computer models the objects On a display such as a television or computer screen. Based on the position and orientation of each object in the scene, the direction in which light appears to be incident on each object, the surface texture of each object, and other factors, the computer Responsible for performing many of the processes necessary to ensure that it is correctly colored and shaped.
[0003]
Due to the complexity of computer graphics generation, only a few years ago computer-generated 3D graphics was largely limited to expensive dedicated flight simulators, high-end graphics workstations, and supercomputers. . The public has seen some of the images generated by these computer systems in movies and expensive television advertisements, but most of us cannot actually touch the computers that generate the graphics. There wasn't. All of this has changed with the availability of relatively inexpensive 3D graphics platforms such as Nintendo 64® and various 3D graphics cards currently available on personal computers. It is now possible to come in contact with exciting 3D animations and simulations on a relatively inexpensive computer graphics system at home or in the office.
[0004]
It has long been known to perform lighting calculations based on various parameters (eg distance attenuation, angle, beam lighting, etc.) in 3D graphics systems. Traditionally, the results of such lighting calculations have been used to change the color and / or opacity of the displayed object. This is described in various standard references on computer graphics (eg, Chapter 16 (“Illumination and Shading”) of Foley et al., Computer Graphics Principles and Practice (2d. Ed. 1990)); and Moller et al., Section 4.3 or later of Real time Rendering (AK Peters 1999) (“Lighting and Shading”); Rogers et al., Procedural Elements for Computer Graphics (2d Ed. McGraw-Hill 19); eider, et al., Open GL Programming Guide Chapter6 ( "Lighting") of (Addison-Wesley 1993); see and Kovach, Inside Direct3D of (Microsoft Press 2000) Chapter5 ( "Direct3D Vertices and the Transformation and Lighting Pipeline")). For example, techniques known as Gouraud shading and Phong shading change the color of the displayed surface depending on the lighting effect modeled by the lighting formula. As an example, shining a bright spot light on a glossy surface can have the effect of whitening the surface color at the point where the light shines. In conventional graphics systems, this often causes the rasterizer to determine the color of each pixel displayed on the surface of a primitive based on the color of the primitive (often defined per vertex) and the result of the lighting expression. Is achieved.
[0005]
[Problems to be solved by the invention]
One problem faced by graphics system designers in the past has been how to efficiently create non-realistic images such as cartoon characters. Over the years, much of the work in the graphics field has been devoted to creating images as realistic as photographs. Recently, however, there has been interest in non-realistic imaging.
[0006]
One type of non-realistic imaging that has recently gained interest is the process of automating the imaging of cartoon characters. During the heyday of handwritten comics in the 1930s and 1940s, artists created amazing comic characters that dynamically changed from frame to frame. These handwritten comics have become the standard for comic rendering in many ways. The comic was not intended to look real. Conversely, comics were designed to look like caricatures. For example, in such comics, a person's face may have a rosy cheek with a pink or reddish pink shade on a white spot. As the artist colored each frame by hand, the color of the cheeks could change dynamically as the character moved through the scene. Such dynamic effects are attractive to watch and add interest to the cartoon image.
[0007]
Unfortunately, the art of handwritten comics in the 1930s and 1940s was very time consuming and expensive. And now people want to use video games and computer games to come in contact with cartoon characters. Although video games have been successful for years in dynamically rendering cartoon characters interactively, they have not achieved the fine arts of handwritten art in modern-day handwritten cartoons. Although much research has been done on high-end type systems for the creation of comics and other non-realistic images, further improvements are possible and desirable.
[0008]
The present invention provides improvements in non-photorealistic and other imaging effects that can be achieved using low cost graphics systems such as home video game platforms or personal computer graphics accelerators.
[0009]
[Means for Solving the Problems and Effects of the Invention]
According to one aspect provided by the present invention, parameters other than color are generated using a type of lighting function typically used to illuminate objects in a scene. Such parameters are used to change the color or opacity of the object.
[0010]
According to another aspect provided by the present invention, the lighting calculation provides a conventional color component output by performing per-vertex lighting. The color component output is input to a texturing function that processes the color component as a colorless parameter. The output of the texturing function provides a visualization effect (eg, color and / or opacity that is changed based on a colorless parameter) that is used to contribute to the visualization of the rendered scene.
[0011]
According to yet another aspect provided by the present invention, the output of the lighting calculation provides three color components, one of which is discarded. The remaining two color components are converted into texture coordinates and used for the texture mapping operation. One texture coordinate selects a one-dimensional texture map in a two-dimensional table. The other texture coordinate selects a particular texel in the selected one-dimensional texture map. The resulting selected texel provides color and / or alpha information that is added to the surface defined by the vertex.
[0012]
According to yet another aspect provided by the present invention, the use of lighting calculations to generate parameters other than color and opacity results in non-realistic cartoon lighting effects in real-time 3D graphics systems. Provided. A one-dimensional texture map can be defined that specifies different brush strokes as a function of this parameter. Using the conventional texture mapping operation, the one-dimensional texture map can be mapped to the polygon surface based on the parameters.
[0013]
More particularly, the system of the present disclosure may provide conventional lighting-type shading (as described above) as part of the overall operation, but using lighting formulas, texture coordinates (ie, other parameters other than color and opacity) Further improvements are provided that make it possible to generate This other parameter can be input into a further function (such as a look-up table stored as a texture) to provide further results (which may change the color / opacity of the object). Traditional approach using lighting expression output to directly affect the surface color of the primitive through this intermediate step that causes the lighting calculation to only indirectly affect the color and / or opacity of the displayed object More flexibility beyond that is provided.
[0014]
In one particular embodiment, a lighting expression result is used to select a one-dimensional texture from a plurality of textures. As an example, two different one-dimensional textures may be defined to display a tree trunk, a texture having a silver range and a texture having a brown range. A lighting formula is used to determine the angle at which the light source is incident on the trunk of the tree, and two textures can be selected depending on the result. The trunk of the tree can be colored by a different silver range from the bevel (using conventional texture mapping) and in the brown / black range when light is incident directly in front. In such a case, the lighting expression selects a one-dimensional texture (ie, functions as a parameter other than color and opacity—in this case, selecting two different textures).
[0015]
In certain embodiments disclosed herein, improvements are made to the transformation and lighting (“T & L”) pipeline, which allows the pipeline to generate texture coordinates based on lighting expressions. . Transformation and lighting produces a lighting expression output, but does not provide it directly to change the pixel color / opacity generated by the rasterizer, but provides the result as texture coordinates to the texture unit. In the disclosed embodiment, the output of the texture unit is a conventional shading algorithm, such as glow or von shading, based on the same or different lighting expressions, depending on the primitive color / opacity of the object (eg, transformation and lighting pipeline and rasterizer). Color or opacity that provides the display with a modified color / opacity value by being blended with.
[0016]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 shows an example of an interactive 3D
[0017]
In this example, the
[0018]
To play a video game or other application using the
[0019]
The user also needs to connect the main unit 54 to a power source. This power source may be a conventional AC adapter (not shown) that converts to a suitable lower DC voltage signal to connect to a standard household electrical outlet to power the household current to the main unit 54. . As another embodiment, a battery may be used.
[0020]
The user can use the
[0021]
In order to play an application such as a game, the user selects an
[0022]
Electronic circuit example of the entire system
FIG. 2 shows a block diagram of example elements of the
A main processor (CPU) 110,
Graphics and
[0023]
In this example, main processor 110 (eg, enhanced IBM Power PC 750) receives input from handheld controller 108 (and / or other input devices) via graphics and
[0024]
In this example, the
[0025]
The
[0026]
Graphics and
Programmable read-only memory and / or real-
A
-
May contact various peripheral devices or other devices, including An additional external
[0027]
Graphics and audio processor examples
FIG. 3 is a block diagram of an example of the graphics and
Memory interface /
Audio digital signal processor (DSP) 156
-
Audio interface and
The
[0028]
The
[0029]
[0030]
Graphics pipeline example
FIG. 4 shows a more detailed view of an example of the
[0031]
The
[0032]
FIG. 5 is a logic flow diagram of the
A command stream from the
The
Vertex attributes from the command stream and / or from the
Capture.
[0033]
The
[0034]
FIG. 4 illustrates that the
・
Setup /
-
A
・
[0035]
The
[0036]
The setup /
[0037]
A texture unit 500 (which may include an on-chip texture memory (TMEM 502)) performs various processing related to texturing. For example,
Extracting the
-Texture processing (500a), including, for example, multi-texturing, post-cache texture decompression, texture filtering, embossing, shading and shading through the use of projected textures, and Blit with alpha transparency and depth,
Bump map processing for computing texture coordinate displacements for bump mapping, pseudo-texture, and texture tiling effects (500b), and
・ Indirect texture processing (500c)
Is included.
[0038]
The
[0039]
The
[0040]
Colorless lighting function example
As described above, the
[0041]
The
[0042]
FIG. 6 is a block diagram illustrating such a configuration, where the
[0043]
In this embodiment, the colorless parameter output by the
[0044]
FIG. 8 shows an example of the
·distance,
・ Attenuation,
·angle,
·vector,
・ Cosine,
・ Polynomial,
・ Light source type,
・ Other factors
including.
[0045]
Although the
[0046]
FIG. 10 shows a more detailed example that includes a two-dimensional
[0047]
In this embodiment, the
[0048]
FIG. 12 is an illustrative example of a two-
[0049]
As another example, the 1D texture map 308 (6) shown in FIG. 12 includes four different types of texels (yellow, orange, red and brown). Using these different colors, for example, bold cartoon lighting where the angle of directional light to an object or the distance of the object from the light source determines the color obtained from the output of the
[0050]
The example shown in FIG. 10 is particularly useful for comic writing, but can also be used for many other applications. As an example, the
[0051]
The
[0052]
In the embodiment shown in FIG. 10, the
[0053]
In this embodiment, there is no reason that the
[0054]
The
[0055]
Example embodiment of a lighting pipeline
FIG. 13 shows an example block diagram of the
[0056]
In this embodiment, the
[Expression 1]
It is. Where CnDefines the output of the lighting calculation pipeline, CmaterialDefines the color of the material and AcDefines ambient color, L (c) defines lighting diffusion or specular component, and A defines distance attenuation. This calculation calculates a triplet of RGB. This is because the
[0057]
In this embodiment, the output Cn of the
[0058]
In this embodiment, another complexity arises due to the method of converting the color values of the
[Table 1]
[0059]
Because of the conversion process, coordinate value 128 is skipped and color values 254 and 255 are mapped to the same coordinate value. If the texture size is 256 and GX_LINEAR filtering is assumed, the mapping is as follows.
[Table 2]
[0060]
In the exemplary embodiment, it is safe to use n * 2 to convert the table ID to a color value. However, 1D textures must be stored in a non-simple manner within 2D textures. The n = 0 table must be stored at coordinate 0 (only), the n = 1 to n = 63 tables must be stored in n * 2-1 and n * 2, and from n = 64 The table with n = 127 must be stored in n * 2 and n * 2 + 1. Coordinate 127 may be left empty because it is not normally accessed in this particular embodiment. Other embodiments can avoid this problem altogether or have a different conversion problem.
[0061]
More detailed description of 300 example conversion units
FIGS. 14-22 show, as a further example, a more detailed embodiment of a
[0062]
The
[0063]
The
[0064]
The
[0065]
Locally diffused light can be subject to both distance attenuation and angular attenuation. By programming an appropriate lighting expression, the application programmer can obtain the attenuation value as an output color or alpha (or as texture coordinates in the case of texture coordinate generation).
[0066]
In the exemplary embodiment, the conversion unit supports 8 physical lights. The application programmer can describe the attenuation parameters, position, direction, and color of each light. The application programmer can also control up to four physical color channels that accumulate lighting results. By associating light with a channel, the application programmer can choose to add the effects of multiple lights per vertex, or combine them later in the
[0067]
Each color channel allows attenuation in the selection of the color source. A light mask associates up to eight lights with the channel. Referring to the channel of FIG. 14, associating up to 8 different lights with any of the two color channels and the two alpha channels provides two independent outputs, one of which can be converted to texture coordinates. An example is shown.
[0068]
As shown in FIG. 14, the
[0069]
Lighting calculation example
An example of a lighting expression executed by the
[Expression 2]
[0070]
In this embodiment, the material and the global ambient color may be obtained from a register or may be obtained from the
[0071]
By invalidating the “LightFunc” parameter, the color of the material passes through the
[0072]
In each lighting function, any or all of the eight available lights may be allowed. In this embodiment, the sum of the illuminances for each light is clamped to [−1, 1] and converted to an
[0073]
In this embodiment, when the result is sufficient even for a single color, the alpha formula can be used. The resulting alpha value can be combined with other RGB and alpha values in the
[0074]
In the diffusion attenuation function of the present embodiment, flexibility is provided by a command (N · H) [0, 1] clamp or more. Attenuation can be disabled for lighting expressions that do not have diffuse properties or are left unclamped. The unclamped inner product makes it possible to control the illuminance by 180 ° with light-based texture generation. In this embodiment, since the illuminance is clamped,cAnd ambcCan be used to properly scale and bias the signed lighting function. In this embodiment, three examples of diffusion decay functions that can be used in one lighting formula are provided. That is,
[Equation 3]
It is.
[0075]
The angle attenuation logic in this embodiment calculates a second order polynomial based on the inner product of the light-direction vector and the light-vertex vector. By extrapolating the square and linear terms, an acute falloff is obtained. Clamping is used to avoid the generation of negative values due to extrapolation for angles outside the spot light angle. Range attenuation can be performed by using an inverse function of another second-order polynomial. The distance value d is the length of the vector from the vertex to the light position. Illumination falloff based on projection or other texture distances can be simulated by using a distance attenuation-only light equation for texture-type light.
[0076]
This same logic is used for general specular attenuation (N · H) for parallel light sources.SCan be used to approximate Instead of the light-vertex vector and the light-direction vector, normal and half-angle vectors may be used, respectively. By disabling attenuation in the lighting function, it is possible to use a non-attenuating point (eg omnidirectional) light source in both diffuse and specular. In this example, the angular attenuation coefficient of the light may be used in the specular formula, and attenuation may be turned off in the diffusion formula. The specular and diffusion types of this example are combined in the
[0077]
Further details of an exemplary attenuation function are as follows.
[Expression 4]
[0078]
Embodiment of block diagram of
FIG. 15 is a block diagram of an example embodiment of a
・ Top of pipeline part 330
・ Optical section 332
・ Bottom of pipeline part 334
It has three main parts.
[0079]
The top-of-pipeline unit 330 in this embodiment includes an optical unit 332, a
・ Vertex transformation (three inner products)
Normal conversion (three inner products)
Texture conversion (2 or 3 inner products for texture)
Projection transformation (simplified three inner products)
The light unit 332 executes the following color channel function.
[0080]
Further, the input FIFO receives a vertex descriptor for each vertex specifying, for example, the following information.
・ Graphic information XYZ,
・ Normal vector information NX, NY, NZ
・
・
-Normal vector TX, TY, TZ
・ Secondary vector BX, BY, BZ
・
・
[0081]
Appropriate information for each vertex is supplied to the light unit 332 to enable lighting calculations.
[0082]
The light unit 332 in the embodiment shown in FIG. 15 includes a
[0083]
The
[Table 3]
[0084]
An overall view of the light section 332 in this embodiment is shown in FIG. In short, the light unit 332 performs the following local lighting operation.
[Equation 5]
This is the following local light vector calculation for each vertex:
[Formula 6]
Need. After this,
[Expression 7]
Need to be calculated.
[0085]
Thus, diffusion attenuation calculations require a light vector and a viewpoint space normal. In the illustrated embodiment, clamping to 0 may be conditional on an internal flag (eg, it may be clamped to 1.0 or not clamped at all). The diffused light may be allowed to have a negative inner product. The lighting dot product unit may calculate the viewpoint space normal while the conversion dot product unit calculates the geometric viewpoint space conversion. And the lighting inner product unit is NL, L2And N2An inner product can be computed. Thereafter, in the present embodiment, normalized light vector normal information is provided by normalizing the result. After normalization, a normalization coefficient and an attenuation expression are calculated using an intermediate result of normalization (for example, the square of distance, distance, and cosine N · L). Then, the optical ambient vector is multiplied. The resulting triplet is an attenuated diffuse component for each light. This is converted to a two's complement integer and the three values obtained are accumulated in an integer accumulator. This accumulator adds the ambient term and any other diffusion term from other light. The final sum is the color for each vertex (in this example, an 8-bit RGB format clamped from 0 to 255).
[0086]
FIG. 17 shows an example of a block diagram of the vector dot / Madd block 357 shown in FIG. Using the same dot product unit to compute N and all other dot products, each light must reuse the same data path element multiple times, so performance may be somewhat inferior and light scheduling becomes difficult . This leads to complex control problems. To simplify the design, various operations may be separated by implementing a second limited dot product unit. The first inner product unit may calculate the transformation normal, and the other inner product unit may compute the vertex transformation. Vector addition can then compute the light vector for local lighting. The second inner product unit is N (for specular light)2, L2, N · L, N · H can be calculated. In this embodiment this can be realized in a completely pipelined manner without feedback. See FIG.
[0087]
FIG. 18 shows an example of an embodiment of the
Cosine decay: L · Dir, 1 / sqrt (L)
・ Distance attenuation: L2, L
・ Diffusion coefficient: N ・ L 、 N2, L2,
The distance attenuation is then calculated using the following steps performed by the
1. K2d2Calculate
2. K2d2 + K0Calculate
3. Calculate d
4). K1Calculate d
5. D2D2+ K1Calculate d + KO
6.1 / (K2d2+ K1d + K0)
[0088]
FIG. 19 shows an example of the
1. Calculate Cos = Clamp0 (L.Ldir)
2. Cos2Calculate
3. A2Cos2Calculate
4). A1Calculate Cos
5. A1Calculate Cos + A0
6). A2Cos2+ A1Calculate Cos + A0
7). Clamp — 0 (A + 2 + Cos2+ A1Calculate Cos + A0)
[0089]
FIG. 20 shows an example of an embodiment of an
・ 1 / sqrt (N2)
1 / sqrt (L2)
・ N ・ L (sqrt (N2) × sqrt (L2))
[0090]
Some of the units (eg, 1 / sqrt and some of the multipliers) can be shared between the various data path embodiments of FIGS. Thus, some embodiments may require approximately 18 multipliers and 10 adders. Inversion and 1 / sqrt can be done using a table lookup or a simple 1-pass Newton-Raphson interpolator or some other pipeline interpolator. Since the alpha and specular writing operations are only changes in the lighting formula, no additional hardware is required in this embodiment.
[0091]
FIG. 21 shows an example of an embodiment of an
[0092]
FIG. 22 shows an example of a stage transition diagram used for controlling the
・ Light calculation for specific color / alpha
・ Bump map calculation
including.
[0093]
For the above event, the arbiter drops an attribute in the control pipeline every 4/8 cycle. Each of these attributes includes an execution instruction for an event that is entered into the
[0094]
The following is an example of a control register used to control how the
[Table 4]
[0095]
Application programming interface example
The following are some examples of API calls related to generating texture coordinates from a lighting function in an example embodiment.
[0096]
GXSetTexCoordGen
Explanation
This function is used to specify how texture coordinates are generated. The output texture coordinates are usually the result of some transformation of input attributes (position, normal, or texture coordinates). Texture coordinates can also be generated from the output color channel of lighting calculation for each vertex.
[0097]
In the C language syntax, the texture coordinate generation function is as follows.
dst_coord = func (src_param, mtx);
[0098]
An example usage of the API function call example is
It is.
[0099]
The current vertex descriptor set by GXSetVtxDesc describes the data input to the graphics processor. By using GXSetTexCoordGen, the application can create new output texture coordinates from the input data. The dst_coord parameter is used to give a name to the output texture coordinates. This texture coordinate can be tied to the texture using GXSetTevOrder. The function GXSetNumTexGens specifies a plurality of consecutive texture coordinates starting from GX_TEXCOORD0 available with the GXSetTevOrder function.
[0100]
Input texture coordinates pass through texture coordinate generation hardware. GXInit initializes the hardware (by calling this API) so that all texture coordinates transformed by the GX_IDENTITY matrix appear to have passed through the texture hardware without changing the input coordinates. Converted.
[0101]
The enumeration GXTexMtx defines a default set of texture matrix names that can be supplied as mtx. The matrix name is actually a row address (4 floats per row) indicating the first row of the loaded matrix in the matrix memory. The model view matrix and the texture matrix share a matrix memory in this embodiment.
[0102]
Example: Generating texture coordinates from vertex lighting calculation
This type of texture coordinate generation can be used to create cartoon-like lighting effects. Convert one of the color channel results to texture coordinates.
[0103]
GX_TG_SRTG
The coordinate s is set equal to the 8-bit red component of the channel. The coordinate t is set equal to the 8-bit green component of the color channel. In cartoon lighting, the coordinate s represents the intensity of light and is input to an arbitrary 1D texture lookup to convert the intensity into color. The coordinate t is used to represent the color of the material and is used to select a 1D table from the 2D texture. Texture coordinates generated using the GX_TG_SRTG function must be generated after any coordinates generated by the transformation (GX_TG_MTX2 × 4 or GX_TG_MTX3 × 4) and the bump map function (GX_TG_BUMP0-3).
[0104]
The texture representing the array of 1D intensity-color tables must be carefully constructed in this example. Each table (row) must be described twice. Since coordinates s and t are generated from 8-bit color, a 256 × 256 maximum texture can be used. In this texture size, 127 tables are available ((256-1) / 2).
[0105]
An example of a rule for generating a green channel color that creates a correctly centered coordinate t in a two-row table is:
It is.
[0106]
[0107]
Functional ordering
In this embodiment, the texture coordinates are generated in order of function. That is, all conversions (GX_TG_MTX2 × 4 or GX_TG_MTX3 × 4), then bump maps (GX_TG_BUMP0 to 3), and then texture coordinate generation from lighting (GX_TG_SRTG).
[0108]
GXSetNumTexGens
Explanation
This function sets the number of texture coordinates that are generated and available in the texture environment (TEV) stage. Texture coordinates are generated from input data described by GXSetTexCoordGen. The generated texture coordinates are linked to a specific texture and a specific texture environment (TEV) stage using GXSetTevOrder.
[0109]
A plurality of continuous texture coordinates can be generated starting from GX_TEXCOORD0. A maximum of 8 texture coordinates can be generated. When nTexGens is set to 0, no texture coordinates are generated. In this case, at least one color channel must be output. See GXSetNumChans.
argument
nTexGens is the number of texture coordinates to be generated.
Example usage
void GXSetNumTexGens (u8 nTexGens);
[0110]
GXSetNumChans
Explanation
This function sets the number of lighting color channels output to the texture environment (TEV) stage. The color channel is a mechanism used to calculate the lighting effect for each vertex. The color channel is controlled using GXSetChanCtrl. The color channel is typically linked to a specific texture environment (TEV) stage.
[0111]
This function basically defines the number of colors per vertex to be rasterized. If nChans is set to 0, at least one texture coordinate must be generated. See GXSetNumTexGens. When nChans is set to 1, channel GX_COLOR0A0 is rasterized. When nChans is set to 2 (maximum value), GX_COLOR0A0 or GX_COLOR1A1 is rasterized.
argument
nChans is the number of color channels to be rasterized.
Example usage
void GXSetNumChans (u8 nChans);
[0112]
GXSetChanCtrl
Explanation
This function sets the lighting control for a color channel. A color channel can correspondingly have one or more (up to 8) lights, which are set using light_mask. The diff_fn and attn_fn parameters control the lighting calculations for all lights associated with this channel. amb_src and mat_src may be used to select whether the input source color is derived from a register color or a vertex color. When channel availability is set to GX_FALSE, the color source of the material (set by mat_src) is passed as is as the channel output color. When channel availability is set to GX_TRUE, the output color depends on other control settings (ie lighting formulas). GXInit sets permission for all channels to GX_FALSE. GXSetChanCtrl configures the lighting channel. The function GXSetNumChans is used to output the channel calculation result.
[0113]
Channels GX_COLOR0 and GX_ALPHA0 are controlled separately for lighting, but they are rasterized together as one RGBA color (effectively GX_COLOR0A0). The same is true for GX_COLOR1 and GX_ALPHA1, which are effectively rasterized as GX_COLOR1A1. Since the graphics hardware has only one color rasterizer, the application chooses which color to rasterize for each stage in the texture environment unit (Tev). This is achieved using the GXSetTevOrder function.
[0114]
In order to use vertex colors in channel GX_COLOR1A1, two colors are supplied per vertex. That is, both GX_VA_CLR0 and GX_VA_CLR1 are allowed in the current vertex descriptor. If only one of GX_VA_CLR0 or GX_VA_CLR1 is allowed in the current vertex descriptor, the vertex color is passed to channel GX_VA_COLOR0A0.
[0115]
When amb_src is set to GX_SRC_REG, the color set by GXSetChanAmbColor is used as the ambient color. When mat_src is GX_SRC_REG, the color set by GXSetChanMatColor is used as the material color.
argument
[Table 5]
[0116]
Example: Local diffuse spot light
This example shows how to configure the GX_COLOR0 channel to illuminate the vertex color with local diffuse spot light. The functions GXInitLightPos and GXInitLightDir are used to initialize the position and direction of the light. It is assumed that the position and direction of light have been converted to the viewpoint space before setting the light object. In order to allow diffuse lighting, diff_fn is set to GX_DF_CLAMP. Since this is a spot light, attn_fn is set to GX_AF_SPOT. The type of the angular attenuation function of the spot light is determined by the light and is set here by GXInitLightSpot. A distance decay function is set using GXInitLightDistAttn.
[Table 6]
[0117]
Example: Specular light
This example shows how to set GX_COLOR0 for specular light. The GXInitSpecularDir function is used to set the direction of light. Prior to the initialization of the light object, the direction must be converted to viewpoint space. Since the specular light is considered to be at infinity, no position parameter is required. An exponential decay function for specular light is approximated using an angular decay function and a distance decay function. Call GXInitLightShinness to control how bright the illuminated material appears (set attenuation parameters). attn_fn is set to GX_AF_SPEC to allow specular calculation.
[Table 7]
[0118]
Example: Parallel directional diffused light
Although the hardware does not support collimated directional diffuse light, it is possible to obtain "almost parallel" light by placing the light very far from all objects to be lit. If the position of the light is very far from the object, all the rays can be considered parallel.
[Table 8]
[0119]
Light can be used for both diffuse and specular channels
Whether local diffusion or specular calculations are performed in the channel is determined by channel control. The optical parameters (corresponding to the channel) are usually set assuming one of these operations. For example, the application sets the position and direction for local diffused light (used in the diffuse channel) and sets only the direction for specular light (used in the specular channel). However, if the application requires only directional diffused light (it can be considered that all rays of light are parallel because the position of the light is very far), the same light parameters can be used for the specular channel and the diffused channel. It can be used for both. In this case, the light parameters are initialized using GXInitSpecialDir.
[0120]
Example: Light per vertex considering pre-lighting
In this example, the pre-lighting color (e.g., computed by the art tool) supplied as per-vertex GX_VA_CLR0 (see GXSetVtxDesc) is added to the diffuse local light result. In this example, the following equation may be implemented.
[Equation 8]
[0121]
The ambient scale defines the minimum amount of color before lighting when light is not hitting the object. Since the sum of amb_scale and diff_scale should be equal to 1.0, the vertex color is equal to the color before lighting when the object is in the brightest light.
[0122]
The color of the material is configured to be the color for each vertex (the color before lighting). The ambient color register is set equal to amb_scale. The light color is scaled by diff_scale.
[Table 9]
[0123]
Example: Attenuation for four projection lights
This example shows how to calculate local light attenuation values for four projected texture lights. There is no color provided per vertex. The material color comes from the channel material register and is set to pass attenuation (multiply by 1.0). There is no contribution from ambient color. Each channel may be used to attenuate the projected texture in a texture environment (Tev) unit.
[Table 10]
[0124]
GXSetChanMatColor
Explanation
This function sets the material color register for the color channel chan. The color of the material is used if the source of the material set by GXSetChanCtrl is GX_SRC_REG.
[0125]
Examples to help explain
The application programming interface functions and associated parameters in the following examples can be used to generate texture coordinates using an unclamped diffuse lighting function, or a one-dimensional texture in the red component of the light color at each vertex. Used to generate texture coordinates for looking up the map, a second texture coordinate can be generated by the green component and used to select a one-dimensional texture line from the two-dimensional texture map.
[Table 11]
[0126]
Other compatible embodiments
Some of the
[0127]
As an example, the emulator may provide a hardware and / or software configuration (platform) that is different from the hardware and / or software configuration (platform) of the
[0128]
Some general purpose digital computers (eg, IBM or Macintosh personal computers and compatibles) now have a 3D graphics card that provides a 3D graphics pipeline that is compatible with DirectX or other standard 3D graphics command APIs. . Others may have a stereo sound card that provides high quality stereo sound based on a standard set of voice commands. If a personal computer with such multimedia hardware executes emulator software, it may have sufficient capability to match the graphics and sound performance of the
[0129]
FIG. 23 shows an example of the entire emulation process using the game software executable binary image stored on the
[0130]
As an example, if the software is written to run on a platform using an IBM PowerPC or other specific processor and the
[0131]
The
[0132]
FIG. 24 shows an
[0133]
A plurality of program modules including the
[0134]
[0135]
In one example,
[0136]
All documents referred to above are incorporated herein by reference.
[0137]
While the present invention has been described in terms of what is currently determined to be the most practical and preferred embodiment, the present invention should not be limited to the disclosed embodiment, but described in reverse. Various modifications and equivalents shall apply within the scope of the claimed claims. For example, although specific comical lighting examples have been disclosed herein, the present invention is not limited to comical lighting, but rather various realistic and non-realistics that can be achieved using colorless lighting parameters. It will be understood to encompass photorealistic and textured and non-textured applications and effects.
[Brief description of the drawings]
FIG. 1 is an overall view of an example of an interactive computer graphics system.
FIG. 2 is a block diagram of the computer graphics system of the example of FIG.
FIG. 3 is a block diagram of the example graphics and audio processor shown in FIG.
4 is a block diagram of the example 3D graphics processor shown in FIG. 3;
5 is an example logic flow diagram of the graphics and audio processor of FIG.
FIG. 6 is a diagram showing an example of high-level image generation processing provided by the present invention.
FIG. 7 is a diagram illustrating an example of a more specific image generation process using texturing based on colorless lighting parameters provided by the present invention.
FIG. 8 is a diagram illustrating an example of a texture function.
FIG. 9 is a diagram illustrating an example of a one-dimensional texture map.
FIG. 10 is a diagram illustrating an example of a texture mapping procedure.
FIG. 11 is a diagram illustrating an example of a two-dimensional texture map.
FIG. 12 is a diagram showing a further example of a two-dimensional texture map.
FIG. 13 is a diagram illustrating an example of a lighting pipeline embodiment.
FIG. 14 is a diagram illustrating an example of association with a light color channel;
FIG. 15 is a diagram illustrating an example of an embodiment of a conversion unit.
FIG. 16 illustrates an example embodiment of a lighting pipeline.
FIG. 17 shows an example of an embodiment of a vector dot / adder unit.
FIG. 18 is a diagram illustrating an example of an embodiment of a normalizer.
FIG. 19 is a diagram illustrating an example of an embodiment of a distance attenuator.
FIG. 20 is a diagram showing an example of an embodiment of an optical scale device.
FIG. 21 illustrates an example embodiment of an integer accumulator.
FIG. 22 is an example of a state transition diagram.
FIG. 23 shows another compatible embodiment.
FIG. 24 illustrates another compatible embodiment.
Claims (1)
少なくとも第1および第2のチャネルを含むライティングデータパイプラインと、
前記ライティングデータパイプラインに結合されたテクスチャユニットと、
前記ライティングデータパイプラインおよび前記テクスチャユニットに結合されたブレンダとを備え、
前記ライティングデータパイプラインは、頂点毎の情報およびライティング定義を受け取り、ライティングされる頂点パラメータを前記頂点毎およびライティング定義に応答して計算し、
前記テクスチャユニットは、前記ライティングデータパイプラインの出力のうち少なくとも1つを少なくとも1つのテクスチャ座標として用いて、少なくとも1つのテクスチャマッピング動作を行い、
前記ブレンダは、前記ライティングデータパイプラインから得た色および/または不透明度情報を、前記テクスチャユニットから得たテクセルとブレンドすることによりレンダリングされた画像を提供する、グラフィックスシステム。A graphics system,
A lighting data pipeline including at least first and second channels;
A texture unit coupled to the lighting data pipeline;
A blender coupled to the lighting data pipeline and the texture unit;
The lighting data pipeline receives per-vertex information and lighting definitions, calculates the vertex parameters to be lit in response to the per-vertex and lighting definitions,
The texture unit performs at least one texture mapping operation using at least one of the outputs of the lighting data pipeline as at least one texture coordinate;
The graphics system, wherein the blender provides a rendered image by blending color and / or opacity information obtained from the lighting data pipeline with texels obtained from the texture unit.
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 (en) | 2000-08-23 | 2010-12-08 | Colorless lighting in a graphics system, method and program for generating graphics images |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002197485A JP2002197485A (en) | 2002-07-12 |
JP4761492B2 true JP4761492B2 (en) | 2011-08-31 |
Family
ID=22851369
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001206704A Expired - Fee Related JP4761492B2 (en) | 2000-08-23 | 2001-07-06 | Colorless lighting in graphic systems |
JP2010273183A Expired - Lifetime JP4975159B2 (en) | 2000-08-23 | 2010-12-08 | Colorless lighting in a graphics system, method and program for generating graphics images |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010273183A Expired - Lifetime JP4975159B2 (en) | 2000-08-23 | 2010-12-08 | Colorless lighting in a graphics system, method and program for generating graphics images |
Country Status (1)
Country | Link |
---|---|
JP (2) | JP4761492B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102608863B1 (en) | 2022-10-31 | 2023-12-01 | 주식회사 스튜디오징스 | Animating method for expressing cartoon characteristics |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4766482B2 (en) * | 2005-10-12 | 2011-09-07 | 株式会社ソニー・コンピュータエンタテインメント | Drawing processing program, storage medium storing drawing processing program, drawing processing method, drawing processing apparatus, and portable terminal device |
JP5007633B2 (en) * | 2007-09-04 | 2012-08-22 | 株式会社セガ | Image processing program, computer-readable recording medium storing the program, image processing apparatus, and image processing method |
JP2011092365A (en) * | 2009-10-29 | 2011-05-12 | Daito Giken:Kk | Game machine |
JP5103543B2 (en) * | 2011-05-16 | 2012-12-19 | 株式会社ディジタルメディアプロフェッショナル | A computer graphics circuit and a three-dimensional computer that uses this circuit to generate a two-dimensional pseudo-random texture pattern applied to a three-dimensional object displayed on a two-dimensional display system using a one-dimensional texture image Graphics equipment |
KR101748397B1 (en) * | 2016-05-04 | 2017-06-16 | 주식회사 와이즈오토모티브 | LUT Generating Method for Around View Monitor using OpenGL |
CN114241098A (en) * | 2021-12-21 | 2022-03-25 | 网易(杭州)网络有限公司 | Cartoon dynamic effect manufacturing method and device |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000197765A (en) * | 1998-12-29 | 2000-07-18 | Namco Ltd | Game device and information storage medium |
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 (en) * | 1996-02-27 | 1997-09-05 | Sony Corp | Horn shading method and picture generating device |
-
2001
- 2001-07-06 JP JP2001206704A patent/JP4761492B2/en not_active Expired - Fee Related
-
2010
- 2010-12-08 JP JP2010273183A patent/JP4975159B2/en not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000197765A (en) * | 1998-12-29 | 2000-07-18 | Namco Ltd | Game device and information storage medium |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102608863B1 (en) | 2022-10-31 | 2023-12-01 | 주식회사 스튜디오징스 | Animating method for expressing cartoon characteristics |
Also Published As
Publication number | Publication date |
---|---|
JP4975159B2 (en) | 2012-07-11 |
JP2011090699A (en) | 2011-05-06 |
JP2002197485A (en) | 2002-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6639595B1 (en) | Achromatic lighting in a graphics system and method | |
JP4731028B2 (en) | Recirculating shade tree blender for graphics systems | |
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 (en) | Method, graphics system, and program for providing improved fog effects | |
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 (en) | Colorless lighting in a graphics system, method and program for generating graphics images | |
US7061502B1 (en) | Method and apparatus for providing logical combination of N alpha operations within a graphics system | |
JP4740490B2 (en) | Clamping Z values in the Z neighborhood to maximize the accuracy of visually important Z components in graphics rendering systems and avoid Z neighborhood clipping | |
JP4698894B2 (en) | Method, apparatus and program for texture tiling in a graphics system |
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 |