(57)【特許請求の範囲】
【請求項１】
画像処理を行う情報処理システムにおけるシャドウマッピング方法であって、
前記情報処理システムは、変換部とテクスチャ部と比較部とを備え、
前記変換部が、ライトと面との間の距離を表すデプス値をテクスチャ座標に変換するテクスチャ座標変換ステップと、
前記テクスチャ部が、前記テクスチャ座標に基づいて、ランプテクスチャをマッピングすることによって高精度デプス値を取得する高精度デプス値取得ステップと、
前記比較部が、前記高精度デプス値を用いてシャドウマッピング比較を行う比較ステップとを含む、シャドウマッピング方法。
【請求項２】
前記ランプテクスチャは、重複したテクセル値を含む２次元テクスチャから構成される、請求項１に記載の方法。
【請求項３】
前記ランプテクスチャは、ヌル値を含む２次元テクスチャから構成される、請求項１に記載の方法。
【請求項４】
前記ランプテクスチャは、重複したテクセル値を含む、請求項１に記載の方法。
【請求項５】
前記テクスチャ座標変換ステップは、
シーンのデプス範囲を考慮して、頂点位置をオブジェクト空間における座標から光源の位置を基準とした座標に変換することを含む、請求項１に記載の方法。
【請求項６】
前記比較ステップは、シャドウマップを組み込みフレームバッファにレンダリングし、前記シャドウマップをシャドウマップテクスチャにコピーアウトして前記シャドウマッピング比較に用いることをさらに含む、請求項１に記載の方法。
【請求項７】
前記情報処理システムは、シャドウマップ生成部をさらに備え、
前記シャドウマップ生成部が、フロントフェイス・カリングされたレンダリングを行って、前記シャドウマッピング比較に用いるシャドウマップを生成するシャドウマップ生成ステップを含む、請求項１に記載の方法。
【請求項８】
グラフィックスパイプラインであって、
ライトと面との間の距離を表すデプス値をテクスチャ座標に変換する変換部と、
前記テクスチャ座標に基づいて、ランプテクスチャをマッピングすることによって高精度デプス値を取得するテクスチャ部と、
前記高精度デプス値を用いてシャドウマッピング比較を行う比較部とを備える、グラフィックスパイプライン。
【請求項９】
画像処理を行う情報処理システムのコンピュータに実行させる情報処理プログラムであって、
前記コンピュータを、
ライトと面との間の距離を表すデプス値をテクスチャ座標に変換するテクスチャ座標変換手段と、
前記テクスチャ座標に基づいて、ランプテクスチャをマッピングすることによって高精度デプス値を取得する高精度デプス値取得手段と、
前記高精度デプス値を用いてシャドウマッピング比較を行う比較手段として機能させる、情報処理プログラム。
【請求項１０】
画像処理を行う情報処理システムであって、
ライトと面との間の距離を表すデプス値をテクスチャ座標に変換する変換部と、
前記テクスチャ座標に基づいて、ランプテクスチャをマッピングすることによって高精度デプス値を取得するテクスチャ部と、
前記高精度デプス値を用いてシャドウマッピング比較を行う比較部とを備える、情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータグラフィックスに関し、より特定的には、家庭用ビデオゲームプラットフォームのような対話式グラフィックスシステムに関する。さらにより特定的には、本発明は、低価格のグラフィックスシステムにおいてフルシーンシャドウマッピングを用いてシャドウを生成する方法であって、また、グラフィックスパイプラインテクスチャ座標生成および／またはテクスチャマッピング機構を用いて、シャドウ比較などの効果を発揮する精度数値を生成することに関する。
【０００２】
【従来の技術】
我々の多くは、非常に現実感のある恐竜や宇宙人、アニメ化されたおもちゃといった空想的な生物を含む映像を目にしたことがある。このようなアニメーションは、コンピュータグラフィックスによって可能となっている。このような技術を用いて、コンピュータグラフィックス製作者は、各物体がどのように見えるか、および時間の経過に伴ってどのような外見上の変化が生じるかを特定することができる。そして、コンピュータが、物体をモデル化し、テレビやコンピュータ画面などのディスプレイに表示する。表示画像の各部分の着色や形状が、そのシーンに存在する個々の物体の位置や向き、各物体に対する照明方向、各物体の面の質感、その他様々な要素に基づいて確実にうまく行なわれるために必要な数多くのタスクは、コンピュータが引き受ける。
【０００３】
コンピュータグラフィックスの生成は複雑なため、ほんの数年前まで、コンピュータで作成した３次元グラフィックスの活用は、高価で専門化されたフライトシミュレータやハイエンドグラフイックスワークステーション、スーパーコンピュータにほぼ限定されていた。人々は、コンピュータシステムによって生成された画像を、映画や制作費の高いテレビ広告において目にすることはあっても、グラフィックス生成を行なうコンピュータに実際に接することはできなかった。このような状況が変化したのは、ニンテンドウ６４（登録商標）やパーソナルコンピュータで利用可能な各種の３Ｄグラフィックスカードなど、比較的安価な３Ｄグラフィックスプラットフォームの出現によるものである。今や、自宅や勤務先でも、比較的安価なコンピュータグラフィックスシステム上において、迫力のある３Ｄアニメーションやシミュレーションと対話的に接することが可能となっている。
【０００４】
シャドウは、現実感のある画像を作成したり、オブジェクトが他のオブジェクトとの関連でどこに現れるかについての視覚的なヒントを与えるのに重要である。様々なシャドウイング技術が知られている。たとえば、ウー他、「シャドウアルゴリズムの調査」、ＩＥＥＥコンピュータグラフィックスアンドアプリケーション、第１０巻、第６号、１３〜３２頁（１９９０年１１月）を参照のこと。
【０００５】
グラフィックスシステム設計者がこれまで直面した課題は、低価格のグラフィックスシステムを用いてシャドウをいかにして描くかということであった。これを達成する既知技術の一つとして、シャドウマッピングと呼ばれるものがある。この技術によれば、通常のｚバッファによるレンダラーを、任意のオブジェクトに対してシャドウを高速に生成するために用いることができるようになる。ウィリアムズ、「曲面に対する曲面シャドウのキャスティング」、コンピュータグラフィックス（ＳＩＧＧＲＡＰＨ  １９７８年会報）、第１２巻、第３号、２７０〜２７４頁（１９７８年８月）を参照のこと。この技術を利用して、グラフィックスシステムは、ｚバッファアルゴリズムを用いて、光源の位置および方向を基準としてシーンをレンダリングする。ｚバッファの各ピクセルに関して、描画した結果のｚデプスは、光源に最も近いオブジェクトまでの距離を含む。このデプスマップは、シャドウマップと呼ばれる。その後、シーンは再びレンダリングされるが、今回は、見る者（カメラ）を基準としてレンダリングされる。各描画プリミティブがレンダリングされるにつれて、その位置（ライトからのデプス）はシャドウマップと比較される。レンダリング点が、シャドウマップ内の値よりも光源から遠くにある場合には、シャドウ内の当該点およびその輝度は減衰される。レンダリング点がシャドウマップ値よりも光源に対して近くにある場合には、当該点は点灯されて、シャドウ内には入らない。
【０００６】
このシャドウマッピング技術を実施するのに効率的な方法として、テクスチャマッピングハードウェアを利用してシーンにシャドウマップを投影することが挙げられる。ハイドリッヒ他、「視覚化および現実感のある画像合成におけるピクセルテクスチャの応用」、１９９９年対話型３Ｄグラフィックスに関するシンポジウム会報、１２７〜１３４頁（１９９９年４月）、およびセガール他、「テクスチャマッピングを用いた高速シャドウおよびライティング効果」、コンピュータグラフィックス（ＳＩＧＧＲＡＰＨ  １９９２年会報、第２６巻、第２号、２４９〜２５２頁（１９９２年７月）を参照のこと。これらの技術を用いれば、ｚバッファリングを利用してシャドウマップを生成することができる（すなわち、ライティング、テクスチャリング、およびカラー値のカラーバッファへの書き込みをＯＦＦにすることができる）。その後、視認性を解決するための周囲ライティングのみを用いて、見る者の視点からシーンをレンダリングする。そして、シャドウテストステップを行って、ｚバッファ内のｚ値をシャドウマップ内の（光源の座標系から見る者の座標系へと変換される）ｚ値と比較する。或る技術によれば、各ピクセルについて、そのピクセルにおけるシャドウ比較結果に基づいて、追加の値をフレームバッファ内に設定する。そして、全ライティングの式を用いて、全シーンがレンダリングされる。つまり、周囲ライティングパスで得たカラーと全レンダリングパスで得たカラーとの和にフレームバッファ内の追加の値を掛け合わせたものが、各ピクセルの最終的なカラーとなる。
【０００７】
ワング他、「第２デプスシャドウマッピング」（コンピュータサイエンス学部、ノースキャロライナ大学チャペルヒル校）で提案されている技術は、ウィリアムズのシャドウマッピング技術を拡張した技術であり、特定の自己シャドウイング問題（シャドウ比較の精度が低いため、面が自身に対してシャドウを掛けてしまう恐れがあるということ）を解決するものである。この技術では、プリミティブによって規定された第２の面のデプスに基づいてシャドウ比較を行う。それによって、フロントフェイス・カリング技術を用いて、シャドウマップ生成時にプリミティブの第１の面を除去することを、ワング他は提案している。これにより、精度に限界のあるデプス比較において、フロントフェイスが自身に対してシャドウを掛けることが防止される。
【０００８】
上述のシャドウマッピング技術によれば、汎用グラフィックスハードウェアは、任意のシャドウをレンダリングすることができる。しかしながら、これらの技術を用いると、生成されるシャドウの品質は、シャドウマップの（ピクセルにおける）解像度に依存し、また、ｚバッファおよびデプス比較の数値精度にも依存することとなる。モラー他、「リアルタイムレンダリング」、１７９〜１８３頁（ＡＫピーターズ社、１９９９年）を参照のこと。デプス比較における適正な数値精度を達成することは、ビデオゲームプラットフォームなどの低価格のグラフィックスシステムにとっては問題となり得る。フルシーンシャドウイングにおいて、各オブジェクトは、（自身を含む）どのオブジェクトに対してもシャドウを掛けることができる。距離値を符号化するために用いられる情報のビット数によって、光源から近距離および遠距離の面がどこに投影されるか、およびどの程度複雑なデプスをレンダリングされたシャドウマップに与えるかが決まる。面がシャドウ内にあるかシャドウ外にあるかを知るために、ライトからレンダリングされている面までの実際の距離と、ライトから最も近い距離（これは、光源からシャドウマップに対してシーンをレンダリングすることによって決まる）との間でデプス比較が行われる。この距離値のビット数によって、特定のライトがシーンにシャドウを掛ける範囲が決まる。精度が低下すると、シャドウやライトに対して与えられるデプスの複雑性は低下する。よって、低精度だと、ライトがシーンに対して掛けるシャドウ数やシャドウの範囲の広がりを限定してしまうことになりかねない。
【０００９】
グラフィックスパイプラインが充分な数値精度をシャドウマッピング効果に対して与えることができない場合には、通常、必要な計算をソフトウェアによる制御の下でグラフィックスシステムのホストコンピュータに行わせれば、より高精度なデプス値を得ることができる。しかしながら、これは、ホストプロセッサに対して大きな追加的負荷をかけることとなり、ユーザがシーン内にある１つ以上のオブジェクトの位置を自由に変更することができるような対話型の動画コンピュータグラフィックスシステムにおいては、リアルタイムでのフルシーンシャドウの描画は困難か、不可能となってしまいかねない。
【００１０】
このような限られた精度に関する問題を回避する他の方法として、シャドウデプス比較を行わないで、その代わりにライトから見えるものを識別することによって機能するようなシャドウマッピングの形式を利用することが挙げられる。たとえば、アワーケード他、「アンチエイリアシングされたキャストシャドウのためのアルゴリズム」、コンピュータアンドグラフィックス、第９巻、第３号、２５９〜２６５頁（１９８５年）を参照のこと。選ばれた視点からオブジェクトを見た場合に、それがライトから見たのと同じであることをシャドウマップが示していれば、オブジェクトは点灯される。この技術は、シャドウデプス比較を回避できるという利点がある。しかしながら、オブジェクトやポリゴンが交差する領域においては問題が生じる可能性がある。そのような問題の生じる領域を、異なるオブジェクトに対して異なる識別子を用いることによって解消することは可能であるが、このアルゴリズムを用いると、単一の識別子を有するオブジェクトは自身に対してシャドウを掛けることができなくなってしまう。
【００１１】
これまで様々な研究が行われてきたが、更なる改善が可能である。
本発明は、たとえば、家庭用ビデオゲームプラットフォ−ムやパーソナルコンピュータのグラフィックスアクセラレータなどに見られる、低価格で限られた精度のハードウェアを用いて、フルシーンシャドウマッピングを行う技術および機構を提供しつつ、数値精度の問題も解決するものである。
【００１２】
本発明の一局面によれば、テクスチャ座標生成部を用いて、シーンの動的デプスに基づいた精度で、ライト位置とプリミティブの面との間の距離計算を支援する。テクスチャマッピング部は、生成されたテクスチャ座標を用いて、テクスチャとして記憶されたランプ関数から精度距離値をルックアップする。結果得られた精度距離値は、シャドウマップ内の対応するデプス値と比較され、ピクセルがシャドウ内にあるかどうかを決定することができる。
【００１３】
一実施例において、ランプ関数は、２Ｄテクスチャとして記憶され、あるテクセルが重複していたり、すべてのテクセルが使われるわけではなかったりする。ルックアップエラーをなくすために、ランプ関数がテクセルの行／列の境界を跨いでいる場所に重複テクセル値が与えられる。
【００１４】
【発明の実施の形態】
図１は、対話式３Ｄコンピュータグラフィックスシステム５０の例を示す。システム５０は、興味をそそる立体音響を伴う対話式３Ｄビデオゲームをプレイするのに用いることができる。また、これは、他の様々な用途に応用できる。
【００１５】
本例において、システム５０は、デジタル表現や３次元世界モデルを、対話的にリアルタイムで処理することができる。システム５０は、世界のすべてまたは一部を、任意の視点から表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂなどの入力装置からのリアルタイム入力に応答して、視点を対話的に変化させることができる。これにより、ゲームプレイヤは、世界の内部または外部の者から見た世界を見ることができる。システム５０は、リアルタイム３Ｄ対話式表示を要求しないような用途（たとえば、２Ｄ表示生成および／または非対話式表示）に用いることもできるが、上質の３Ｄ画像を非常に高速に表示する能力は、現実感の高いおもしろいゲームプレイなどの視覚的な対話を生成するのに用いることができる。
【００１６】
システム５０を用いてビデオゲームなどのアプリケーションをプレイするためには、ユーザは、まず、ケーブル５８を用いて、メインユニット５４をユーザのカラーテレビ５６などの表示装置に接続する。メインユニット５４は、カラーテレビ５６を制御するためのビデオ信号および音声信号を生成する。ビデオ信号は、テレビ画面５９に表示される画像を制御するものであり、音声信号は、テレビのステレオスピーカ６１Ｌおよび６１Ｒを介して、音として再生される。
【００１７】
また、ユーザは、メインユニット５４を電源に接続する必要がある。この電源は、家庭の壁にある電気コンセントに差し込む従来のＡＣアダプタ（図示せず）であってもよく、家庭用電流を、メインユニット５４に電力供給するのに適切な、より低いＤＣ電圧信号に変換する。他の態様として、電池を用いることも可能である。
【００１８】
ユーザは、ハンドコントローラ５２ａおよび５２ｂを用いて、メインユニット５４を制御してもよい。たとえば、操作部６０を用いて、テレビ５６に表示されるキャラクタが３次元世界内で移動すべき方向（上または下、左または右、近または遠）を指定することができる。また、操作部６０は、他の用途のための入力を与える（たとえば、メニュー選択、ポインタ／カーソル制御など）。コントローラ５２は、様々な形態を取り得る。本例においては、図示された各コントローラ５２は、ジョイスティック、押しボタン、および／または方向スイッチなどの操作部６０を含む。コントローラ５２のメインユニット５４への接続は、ケーブルであってもよいし、電磁波（たとえば、電波または赤外線波）を介した無線であってもよい。
【００１９】
ゲームなどのアプリケーションをプレイするためには、ユーザは、プレイしたいと思う当該ビデオゲームなどのアプリケーションを記憶する適切な記憶媒体６２を選択して、当該記憶媒体をメインユニット５４内のスロット６４に挿入する。記憶媒体６２は、たとえば、特に符号化されたおよび／または暗号化された光学および／または磁気ディスクであってもよい。ユーザは、電源スイッチ６６を操作して、メインユニット５４をオンして、記憶媒体６２に記憶されたソフトウェアに基づいてビデオゲームなどのアプリケーションの実行を開始してもよい。ユーザは、コントローラ５２を操作して、メインユニット５４に入力を与えてもよい。たとえば、操作部６０を操作すると、ゲームなどのアプリケーションが開始されてもよい。他の操作部６０を動かすと、動くキャラクタを異なる方向へ移動させたり、３Ｄ世界内でのユーザの視点を変化させたりすることができる。記憶媒体６２内に記憶された特定のソフトウェアに基づいて、コントローラ５２上の様々な制御部６０は、異なる時に異なる機能を実行することができる。
【００２０】
＜システム全体の電子回路例＞
図２は、システム５０の構成要素例のブロック図を示す。主な構成要素は以下のものを含む。
・メインプロセッサ（ＣＰＵ）１１０、
・メインメモリ１１２、および
・グラフィックス＆音声プロセッサ１１４
【００２１】
本例においては、メインプロセッサ１１０（たとえば、拡張されたＩＢＭＰｏｗｅｒＰＣ７５０）は、グラフィックス＆音声プロセッサ１１４を介して手持ちコントローラ１０８（および／または他の入力装置）からの入力を受ける。メインプロセッサ１１０は、ユーザ入力に対話的に応答して、たとえば外部記憶媒体６２から光学ディスクドライブなどの大容量記憶アクセス装置１０６を介して供給されるビデオゲームなどのプログラムを実行する。一例として、ビデオゲームプレイの場合、メインプロセッサ１１０は、様々な対話的な制御機能に加えて、衝突検出や動画処理を行うことができる。
【００２２】
本例において、メインプロセッサ１１０は、３Ｄグラフィックスコマンドおよび音声コマンドを生成して、グラフィックス＆音声プロセッサ１１４に送る。グラフィックス＆音声プロセッサ１１４は、これらのコマンドを処理して、興味をそそる視覚的な画像をディスプレイ５９に生成したり、興味をそそる立体音響をステレオスピーカ６１Ｒおよび６１Ｌなどの適切な音発生装置に生成したりする。
【００２３】
本例のシステム５０が含むビデオエンコーダ１２０は、グラフィックス＆音声プロセッサ１１４から画像信号を受信して、当該画像信号を、コンピュータモニタや家庭用カラーテレビ５６などの標準的な表示装置に表示するのに適切なアナログおよび／またはデジタルビデオ信号に変換する。また、システム５０が含む音声コーデック（圧縮器／伸長器）１２２は、デジタル化された音声信号の圧縮および伸長を行い、また、必要に応じて、デジタルまたはアナログ音声信号形式への変換を行なってもよい。音声コーデック１２２は、音声入力をバッファ１２４を介して受信して、グラフィックス＆音声プロセッサ１１４に与えて、処理を行なうことができる（たとえば、プロセッサが生成した他の音声信号とミキシングするおよび／または大容量記憶アクセス装置１０６のストリーミング音声出力を介して受信する）。本例のグラフィックス＆音声プロセッサ１１４は、音声関連情報を音声タスク用に利用可能な音声メモリ１２６に記憶することができる。グラフィックス＆音声プロセッサ１１４は、処理結果の音声出力信号を音声コーデック１１２に与えて、スピーカ６１Ｌおよび６１Ｒによって再生できるように、（たとえば、バッファ増幅器１２８Ｌおよび１２８Ｒを介して）伸長やアナログ信号への変換が行われる。
【００２４】
グラフィックス＆音声プロセッサ１１４は、システム５０内にある様々な付加的な装置と通信を行うことが可能である。たとえば、パラレルデジタルバス１３０が、大容量記憶アクセス装置１０６および／または他の構成要素との通信に用いられてもよい。シリアル周辺機器バス１３２が、様々な周辺機器などの機器との通信に用いられてもよく、それらの機器としては、たとえば、以下のものを含む。
・プログラム可能な読み出し専用メモリおよび／またはリアルタイムクロック１３４、
・モデム１３６などのネットワークインターフェース（インターネットなどのデジタルネットワークのような、プログラム命令および／またはデータをダウンロードしたりアップロードしたりすることが可能な電気通信ネットワーク１３８に対して、システム５０を接続するようなものであってもよい）、および
・フラッシュメモリ１４０。
別の外部シリアルバス１４２が、付加的な拡張メモリ１４４（たとえば、メモリカード）などの装置との通信に用いられてもよい。コネクタが、様々な装置をバス１３０、１３２、および１４２を接続するために用いられてもよい。
【００２５】
＜グラフィックス＆音声プロセッサの例＞
図３は、グラフィックス＆音声プロセッサ１１４の例のブロック図である。一例として、グラフィックス＆音声プロセッサ１１４は、単一チップＡＳＩＣ（特定用途向けＩＣ）であってもよい。本例において、グラフィックス＆音声プロセッサ１１４は、以下のものを含む。
・プロセッサインターフェース１５０、
・メモリインターフェース／コントローラ１５２、
・３Ｄグラフィックスプロセッサ１５４、
・音声デジタル信号プロセッサ（ＤＳＰ）１５６、
・音声メモリインターフェース１５８
・音声インターフェース＆ミキサ１６０
・周辺機器コントローラ１６２、および
・ディスプレイコントローラ１６４。
【００２６】
３Ｄグラフィックスプロセッサ１５４は、グラフィック処理タスクを行う。音声デジタル信号プロセッサ１５６は、音声処理タスクを行う。ディスプレイコントローラ１６４は、画像情報をメインメモリ１１２からアクセスして、それをビデオエンコーダ１２０に与えて、表示装置５６に表示させる。音声インターフェース＆ミキサ１６０は、音声コーデック１２２とインターフェースし、また、別のソースからの音声（たとえば、大容量記憶アクセス装置１０６からのストリーミング音声、音声ＤＳＰ１５６の出力、および音声コーデック１２２を介して受信した外部音声入力）をミキシングすることも可能である。プロセッサインターフェース１５０は、メインプロセッサ１１０およびグラフィックス＆音声プロセッサ１１４間のデータおよび制御インターフェースを提供する。
【００２７】
メモリインターフェース１５２は、グラフィックス＆音声プロセッサ１１４およびメモリ１１２間のデータおよび制御に関するインターフェースを提供する。本例において、メインプロセッサ１１０は、グラフィックス＆音声プロセッサ１１４の一部であるプロセッサインターフェース１５０およびメモリインターフェース１５２を介して、メインメモリ１１２にアクセスする。周辺機器コントローラ１６２は、グラフィックス＆音声プロセッサ１１４および上述の様々な周辺機器間におけるデータおよび制御に関するインターフェースを提供する。音声メモリインターフェース１５８は、音声メモリ１２６とのインターフェースを提供する。
【００２８】
＜グラフィックスパイプラインの例＞
図４は、３Ｄグラフィックスプロセッサ１５４の例のより詳細な図である。３Ｄグラフィックスプロセッサ１５４は、特に、コマンドプロセッサ２００と、３Ｄグラッフィックスパイプライン１８０とを含む。メインプロセッサ１１０は、データのストリーム（たとえば、グラフィックスコマンドストリームやデータリスト）をコマンドプロセッサ２００に伝達する。メインプロセッサ１１０は、メモリの待ち時間を最小限にするための２レベルキャッシュ１１５を有し、また、グラフィックス＆音声プロセッサ１１４向けの未キャッシュのデータストリームのためのライトギャザリングバッファ１１１も有する。ライトギャザリングバッファ１１１は、部分キャッシュラインを集めて完全キャッシュラインとし、このデータを１キャッシュラインずつグラフィックス＆音声プロセッサ１１４に送出して、バスが最大限に利用できるようにする。
【００２９】
コマンドプロセッサ２００は、メインプロセッサ１１０から表示コマンドを受信し、これを解析して、処理に必要な付加データを共通メモリ１１２から取得する。コマンドプロセッサ２００は、頂点コマンドのストリームをグラフィックスパイプライン１８０に与えて、２Ｄおよび／または３Ｄ処理およびレンダリングを行う。グラフィックスパイプライン１８０は、これらのコマンドに基づいて画像を生成する。生成された画像情報は、メインメモリ１１２に転送されて、表示制御部／ビデオインターフェース部１６４によってアクセスできるようにしてもよく、それによって、ディスプレイ５６にパイプライン１８０のフレームバッファ出力が表示される。
【００３０】
図５は、グラフィックスプロセッサ１５４の論理フロー図である。メインプロセッサ１１０は、グラフィックスコマンドストリーム２１０と、表示リスト２１２と、頂点アレイ２１４とをメインメモリ１１２に記憶してもよく、バスインターフェース１５０を介してポインタをコマンドプロセッサ２００に渡す。メインプロセッサ１１０は、メインメモリ１１０内に割り当てた１つ以上のグラフィックス先入れ先出し（ＦＩＦＯ）バッファ２１０にグラフィックスコマンドを記憶する。コマンドプロセッサ２００は、以下のものを取り出す。
・グラフィックスコマンドを受信およびバッファリングして、同期／フロー制御およびロードバランシングを行なうオンチップＦＩＦＯメモリバッファ２１６を介して、メインメモリ１１２からのコマンドストリーム、
・オンチップ呼び出しＦＩＦＯメモリバッファ２１８を介して、メインメモリ１１２からの表示リスト２１２、および
・コマンドストリームからの、および／または頂点キャッシュ２２０を介してメインメモリ１１２内の頂点アレイ２１４からの頂点属性。
【００３１】
コマンドプロセッサ２００は、コマンド処理動作２００ａを行って、属性型を浮動小数点形式に変換し、その結果の完全な頂点ポリゴンデータをグラフィックスパイプライン１８０に渡して、レンダリング／ラスタライズする。プログラム可能なメモリ調停回路１３０（図４参照）は、グラフィックスパイプライン１８０、コマンドプロセッサ２００、および表示制御部／ビデオインターフェース部１６４の間で共通のメインメモリ１１２に対するアクセスを調停する。
【００３２】
図４に示すように、グラフィックスパイプライン１８０は、以下のものを含んでもよい。
・変換部３００、
・セットアップ／ラスタライザ４００、
・テクスチャ部５００、
・テクスチャ環境部６００、および
・ピクセルエンジン部７００。
【００３３】
変換部３００は、２Ｄおよび３Ｄ変換などの様々な処理３００ａを行う（図５参照）。変換部３００は、変換処理３００ａに用いられるマトリックスを記憶する１以上のマトリックスメモリ３００ｂを含んでもよい。変換部３００は、頂点毎に入力される形状を、オブジェクト空間から画面空間へ変換し、入力されるテクスチャ座標を変換して投影テクスチャ座標を計算する（３００ｃ）。変換部３００は、ポリゴンクリッピング／カリング（３００ｄ）を行ってもよい。また、変換部３００ｂによって行われるライティング処理３００ｅによって、一実施例においては、８個の独立した光に対するライティング計算が頂点毎に行われる。また、変換部３００は、エンボス型のバンプマッピング効果を出すためのテクスチャ座標生成（３００ｃ）や、ポリゴンクリッピング／カリング処理（３００ｄ）を行うこともできる。
【００３４】
セットアップ／ラスタライザ４００は、セットアップ部を含む。セットアップ部は、頂点データを変換部３００から受信して三角形セットアップ情報を１以上のラスタライザ（４００ｂ）に送信して、エッジラスタライズ、テクスチャ座標ラスタライズ、およびカラーラスタライズを行う。
【００３５】
テクスチャ部５００（オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよい）、テクスチャリング関連の様々なタスクを行う。タスクには、たとえば、以下のものが含まれる。
・メインメモリ１１２からテクスチャ５０４を取り出す、
・たとえばマルチテクスチャ処理、ポストキャッシュテクスチャ伸展、テクスチャフィルタリング、エンボス、投影テクスチャを用いたシャドウおよびライティング、ならびにアルファ透明およびデプスを用いたＢＬＩＴを含む、テクスチャ処理（５００ａ）、
・バンプマッピング、疑似テクスチャ、テクスチャタイリング効果のためのテクスチャ座標変換量を計算するバンプマップ処理（５００ｂ）、および
・間接テクスチャ処理（５００ｃ）。
【００３６】
テクスチャ部５００は、透過されたテクスチャ値をテクスチャ環境部６００に出力して、テクスチャ環境処理を行なう（６００ａ）。テクスチャ環境部６００は、ポリゴンとテクスチャカラー／アルファ／デプスをブレンドし、テクスチャフォグ処理（６００ｂ）をも行って、インバースレンジに基づくフォグ効果を達成する。テクスチャ環境部６００は、複数のステージを提供して、たとえばカラー／アルファ・モジュレーション、エンボス、ディテールテクスチャリング、テクスチャスワッピング、クランピング、およびデプスブレンディングに基づいて、他の興味をそそる様々な環境関連の機能を行うことができる。
【００３７】
ピクセルエンジン７００は、デプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を行う。本例において、ピクセルエンジン７００は、組み込み（オンチップ）フレームバッファメモリ７０２にデータを記憶する。グラフィックスパイプライン１８０は、１以上の組み込みＤＲＡＭメモリ７０２を含んでもよく、フレームバッファの内容および／またはテクスチャ情報をローカルに記憶する。現在有効なレンダリングモードによっては、Ｚ比較７００ａ’は、グラフィックスパイプラインの早い段階において行われることもできる（たとえば、アルファスレッショルディングが不要であれば、ｚ比較は早い段階で行うことができる。）。ピクセルエンジン７００は、コピー処理７００ｃを含む。これは、オンチップフレームバッファの内容をメインメモリに周期的に書き込むものであり、表示／ビデオインターフェース部１６４がアクセスできるようにする。このコピー処理７００ｃを用いて、組み込みフレームバッファ７０２の内容からテクスチャまでを、メインメモリ１１２にコピーすることもでき、動的なテクスチャ合成効果が得られる。アンチエイリアシングやその他のフィルタリングは、コピーアウト処理中に行うことができる。（最終的にはメインメモリ１１２に記憶される）グラフィックスパイプライン１８０のフレームバッファ出力は、フレーム毎に、表示／ビデオインターフェース部１６４によって読み出される。表示制御部／ビデオインターフェース１６４は、ディジタルＲＧＢピクセル値を与えて、ディスプレイ１０２に表示する。
【００３８】
＜シャドウマッピング技術の例＞
本実施例において、変換部３００は、距離減衰係数を含むライティング式を計算するようにプログラムされているようなライティング計算ハードウェアを含む。たとえば、共通して譲渡された２０００年８月２３日出願の米仮出願番号６０／２２７，００７および                  出願の対応特許出願番号          （代理人整理番号７２３−９６７）、名称「グラフィックスシステムおよび方法における色消しライティング機能」（代理人整理番号７２３−７４８）を参照のこと。このようなライティング計算は、レンダリングされるシーンにおけるライトから任意の面までの距離を決定するために用いることができる。光強度は、距離とともに減衰する（たとえば、線形で）ので、その結果得られる、レンダリングされた面における輝度値は、ライトから面までの距離を示すために用いることができる。この計算されたデプス値は、シャドウマップデプス値と比較されて、ピクセルを陰付けするか否かを決定する。
【００３９】
本実施例において、ライティング計算出力は、８ビット幅である。たとえば、この値は、単一の色要素（たとえば、ＲＧＢ３色のうちの赤要素）に含まれていてもよい。８ビット精度は、ライティング処理には充分なものであが、シャドウマップデプスとの比較を行って、任意のシャドウ複雑性を有するシーンに対してフルシーンのシャドウイング技術を適用するためには不充分な場合もある。変換部３００を修正して、１チャンネルあたり８ビット以上になるようにすることは可能であろうが、変換部がコスト高になり、複雑になってしまう。
【００４０】
グラフィックスパイプライン１８０内の変換部３００に続くテクスチャ部５００は、カラーチャンネル毎に充分な精度を有しており、この精度はグラフィックスパイプライン１８０を通じて伝達される。テクスチャ部５００は汎用プロセッサではなく、むしろ、好ましい実施例においては、テクスチャマッピング機能を行うように設計されている。我々は、テクスチャ座標生成ハードウェアを用いて、距離を展開し、距離がテクスチャ座標に入ったら、テクスチャをサンプリングして８ビット以上の精度を得る方法を発見した。たとえば、一例として、シャドウ比較に関する特にこの実施例において、１６ビットから１９ビットまでの精度を取得することができる。
【００４１】
より詳細には、より高精度のテクスチャ座標生成部とシステム５０のテクスチャマッピング部５００とを用いてグラフィックスパイプライン１８０によって計算されたデプス値の精度をシャドウマップ比較のために高める代替技術を、我々は発見した。図６は、一例であるルーチン１０００を示し、システム５０は、数値精度の高いデプス比較を行うフルシーンシャドウマッピングを行うことができる。本例において、グラフィックスパイプライン１８０は、シャドウマップデプステクスチャを第１のパスで生成する（ブロック１００２）。第２のパスにおいて、従来のテクスチャ投影技術を用いて、シャドウマップデプステクスチャをシーンに投影する（ブロック１００２）。また、第２のパスにおいて、変換部３００は、テクスチャ座標生成とテクスチャマッピングとを用いて、ライトの位置から描画される面までの距離を示す精度数値を決定する（ブロック１００４）。
【００４２】
より詳細には、変換部３００を制御して、（たとえば、ライト位置からの頂点位置のモデルビュー変換と、シーンデプスの動的な範囲を考慮したスケーリング変換との組み合わせを用いて）面からライトまでの距離を示すテクスチャ座標を生成する。そして、結果得られたテクスチャ座標を、ランプ関数テーブルに記憶されたより精度の高いデプス値をルックアップするために、テクスチャ部５００に適用して、テクスチャ部が通常のテキスチャとして処理できるようにする（ブロック１００６）。このようにして得られた高精度の距離値は、対応のシャドウマップデプス値と比較され、ピクセルを陰付けするか否かを決定するのに用いることができる（ブロック１００８）。その後、システム５０は、この技術によってフルシーンで陰付けされた画像を表示することができる（ブロック１０１０、画像の例として図１８を参照）。
【００４３】
＜より詳細な実施例＞
図７は、システム５０を動作させてフルシーンで陰付けされた画像を提供するためのより詳細な処理の例１０２０を示し、図８は、第２のパスのグラフィックスパイプライン処理の例を示す。図７は、第１のパスにおいて、組み込みフレームバッファ７０２のバッファ部に光源視点からのシーンデプスを入れてレンダリングすることによって生成されたシャドウマップを示す（ブロック１０２２）。共通して譲渡された同時継続出願の２０００年８月２３日出願の仮出願番号６０／２２６，９００および２０００年１１月２８日出願の対応特許出願番号０９／７２６，２２６（代理人整理番号７２３−９６４）、名称「グラフィックスシステムのエイリアス補正方法および装置」を参照のこと。本実施例では、この処理中にフロントフェイス・カリングが起動されて、ワング他の上述の「第２のデプス」アルゴリズムが実施される。その結果得られた、組み込みフレームバッファ７０２に記憶されたデプスマップは、ピクセルエンジン７００によってテクスチャにコピーアウトされる（ブロック１０２４）。共通して譲渡された２０００年８月２３日出願の仮出願番号６０／２２７，０３０および２０００年１１月２８日出願の対応特許出願番号０９／７２２，６６３（代理人整理番号７２３−９６３）、名称「内部フレームバッファと主メモリ間でのコピーアウト変換を有するグラフィクスシステム」を参照のこと。効率化のために、ブロック１０２２は、カラーフレームバッファの更新をＯＦＦにして行うこともできる。なぜなら、本願では、デプス値の生成のみが主眼だからである。
【００４４】
第２のパス中において、カメラ（すなわち、ユーザ）の視点から、シーンがレンダリングされる（ブロック１０２６）。各ピクセルに関して、適切なテクスチャ投影マトリックスが適用されて、シャドウマップテクスチャがシーンに投影される（ブロック１０２６）。さらに、オブジェクト空間の頂点位置は、光源における視点を規定するモデルビューマトリックスを用いて、オブジェクト空間から光空間（シャドウマップがレンダリングされたのと同じ空間）へ変換される（ブロック１０２８）。結果得られるｚ値は、面からライトまでの距離を表している。
【００４５】
本実施例において、テクスチャ座標生成処理は、このデプス値に対して追加の変換を行う。この追加の変換は、シーンの動的なデプス範囲に基づくものである。本実施例においては、計算された距離値を動的な距離範囲（すなわち、カメラが「見る」ことができる直近の面とカメラが見ることができる最も遠い面との差）に基づいて変換するために、テクスチャ座標変換処理は用いられる。図１２を参照のこと。
【００４６】
第２の変換の結果、デプスランプを（たとえば、線形に）増加させることを規定するランプ「テクスチャ」をルックアップテーブルにおいてインデックスするためのテクスチャ座標が与えられる。本実施例において、テクスチャ部５００は、ランプルックアップテーブルを他のテクスチャとしてみなし、それに対して、変換部３００によって生成されたテクスチャ座標に基づいて通常のテクスチャマッピング処理を行う。たとえば、共通して譲渡された２０００年８月２３日出願の仮出願番号６０／２２６，８９１および２０００年１１月２８日出願の対応特許出願番号０９／７２２，３８２（代理人整理番号７２３−９６１）、名称「グラフィクスシステムにおいて直接および間接テクスチャを処理するための方法および装置」を参照のこと。しかしながら、結果生じたテクセル値は、面の色や不透明度を直ちに修正するために用いられるわけではない。むしろ、テクセル値によって、対応する投影されたシャドウマップデプス値と比較される精度デプス値が与えられ、シャドウイングの判断が行われる（ブロック１０３２）。
【００４７】
ランプ関数は、充分な解像度を有する１次元テクスチャで記憶されるのが理想的であろう。しかしながら、多くの低価格のグラフィックスシステムは、扱えるテクスチャの最大サイズに限界がある。たとえば、ある例においては、システム５０は、最大１０２４ｘ１０２４のテクセルを扱うことができる。１次元１０２４テクセル・ランプ関数テクスチャは、１０ビットの数値精度を提供する。これは、８ビットより高精度だが、より高精度を求めたい。したがって、テクスチャ座標生成を用いてデプス値（ライトから面までの距離）を符号化して２つのテクスチャ座標（ｓ，ｔ）の組み合わせ値とし、ランプ関数を要求に充分合うような精度を提供するサイズの２次元テクスチャにして記憶する。たとえば、１０２４ｘ１０２４の２次元テクスチャは、１０２４テクセルの１次元テクスチャと比較して、（ほぼ）２倍の精度を提供することができる。精度を最大にするには、シーンのデプス範囲に基づいてデプス値を動的に変換することもできる。そうすれば、どの２Ｄのランプテクスチャ値も、距離的にアクセスできないといったことはなくなり、無駄にはならなくなる。
【００４８】
図７を再び参照して、テクスチャ座標生成とテクスチャマッピング処理とを用いて面デプス値を求めると、このデプス値をシャドウマップ内の対応するデプス値と比較することができる。シャドウマップデプスがライトに対するピクセルデプスより浅ければ、シャドウ内のピクセルおよび輝度は減衰される（判断ブロック１０３２の「Ｙｅｓ」出口、ブロック１０３４）。１０２６〜１０３４の処理は、レンダリングされるピクセル毎に行われる。すべての面上のすべてのピクセルが処理されると（判断ブロック１０３６の「Ｎｏ」出口）、フルシーンで陰付けされた画像は完了し、表示されうる（ブロック１０３８）。
【００４９】
図８は、第２のパス中にグラフィックスパイプライン１８０によって行われる処理を示す。この例において、変換部３００は、見る者の視点にあるカメラに基づいて従来のモデルビュー変換を行い、また、入力される頂点定義をライティングして（ブロック１０５０）、その結果をラスタライザ４００に与えて（ブロック１０５２）、ラスタライズされたグローシェーディングされたピクセルカラー／アルファ／ｚを生成する。本実施例においては、これらの値は、テクスチャ環境部６００に与えられ、ブレンディングされる（ブロック１０５４）。また、本実施例において、所定のシャドウカラー値もブレンド処理に与えられる（１０５４）。
【００５０】
従来の投影テクスチャ変換（シーンを設計した者の好みに基づく正射影または透視）が、変換部３００によって行われ（ブロック１０５６）、テクスチャ座標が生成される（ブロック１０５８）。テクスチャ部５００は、対応のテクスチャマッピング処理を行って、シャドウマップテクスチャをシーンに投影する。結果得られたデプス値は、比較処理に与えられる（１０６０）。この比較処理は、本実施例においては、テクスチャ環境部６００によって行われる。
【００５１】
ピクセルデプス値は、変換部３００およびテクスチャ部５００を介して、ブロック１０６２，１０６４，および１０６６によって行われる。上述のように、変換部３００によって行われるモデルビュー変換によって、ライトからのピクセルデプスが決定され（ブロック１０６２）。これは、ピクセルの位置を、シャドウを掛けるライトの位置に変換することによって行われる。また、テクスチャ座標生成に関連してさらなる変換を行って、シーンのデプス範囲に基づいてｚ（デプス）値を行うこともできる（ブロック１０６４）。これら２つの変換（１０６２，１０６４）は、テクスチャ座標ｓ，ｔを生成する単一のマトリックス乗算によって組み合わせて行うことができる。結果生じるテクスチャ座標ｓ，ｔはテクスチャ部５００によって用いられて、ランプテクスチャ・ルックアップテーブルから精度距離値をルックアップするというテクスチャマッピング処理を行う（ブロック１０６６）。この結果値は、比較ブロック１０６０によって用いられて、シャドウマップデプスと比較される。
【００５２】
比較処理１０６０では、シャドウマップデプス値を、シャドウを掛ける位置に対するピクセルデプス値と比較する。比較出力は、ブレンド処理（１０５４）に与えられ、所定のシャドウカラーがラスタライズされかつ陰付けされたピクセルカラーの代わりに用いられるべきかどうかを制御する。他の実施例においては、ブレンド処理１０５４は、ピクセルカラーを調節（たとえば、減衰）して、デプス比較結果が表すピクセルがシャドウ内に入るようにピクセルを暗くする。
【００５３】
＜ランプテクスチャの例＞
上述のように、システム５０の一実施例を用いて、単一のテクスチャ座標内のピクセル距離値を符号化して１次元テクスチャをルックアップして独自性（すなわち、パススルー）を与えると、１０２４ｘ１０２４テクセルという最大テクスチャサイズに基づいて、１０ビットの距離精度を得ることができる。２つのテクスチャ座標（たとえば、１つの座標は他の座標を変倍したもの）を用いると、２次元テクスチャ内のすべての（またはほとんどの）テクセルを通じてランプ距離関数を伝達させることができる。図９および１０は、それぞれ、８ビット（１６ｘ１６）および１６ビット（２５６ｘ２５６）フォーマットの２次元ランプテクスチャの例を示す。それぞれの場合において、線形に増加するランプ関数は、テクスチャの各列で降下するように見える点に注意されたい。ランプ関数は、連続する列で継続し、最小値（たとえば、００または００００）から最大値（たとえば、０ｘＦＦまたは０ｘＦＦＦＦ）を与える。このようなランプテクスチャは、メインプロセッサ１１０による処理（図１１参照）を通じて動的に生成することができ、あるいは、静的に予め規定しておき、大容量記憶装置から必要なときに単にロードされるようにしてもよい。このような例において、特定テクスチャ列はＳ座標によって選択され、Ｔテクスチャ座標は、特定の距離値化されたテクセルを選択された列内で選択する。
【００５４】
図示のランプテクスチャによって、２つのテクスチャ座標Ｓ，Ｔは、テクスチャマッピング処理によって生成可能な精度距離値を符号化することができる。これにより、単一のテクスチャ座標を用いて達成可能な精度を実質２倍にする。たとえば、図９および１０に示すテクスチャ例に基づくテクスチャマッピング処理を用いれば、入力テクスチャ座標値および出力テクセル（デプス）値の関係が以下のように生じる。
【表１】
0004790150.tif 000002
【００５５】
本実施例において、各テクセルは、数値として解釈される。たとえば、１６ビット幅のテクセルは、１６ビット数に解釈することができる。テクスチャマッピングの場合、直近のサンプル値が選ばれなければならない（たとえば、双一次補間は用いてはならない）。
【００５６】
図１２は、変換部３００内のテクスチャ座標生成ハードウェアを用いる技術の例であって、図９および１０に示すようなランプテクスチャのルックアップのための距離を表すテクスチャ座標ｓ，ｔを生成する。本実施例においては、所定の視点と、所定の位置と、所定の距離範囲とを与えるようにカメラが構成される。カメラ距離範囲は、近ｚ値（Ｎ）および遠ｚ値（Ｆ）によってパラメータ化される。カメラのデプス範囲は、近ｚと遠ｚとの間の距離（すなわち、Ｆ−Ｎ）によって特定される。これらの範囲パラメータを用いて頂点位置を変換し、これによって、オブジェクト空間から光空間への頂点位置の総変換が行われる。光空間は、シーンのデプス範囲に正確に「適合」するようにランプが与えた数値精度の動的な範囲に拡がっている。
【００５７】
本実施例において用いられる、距離をテクスチャ座標対に変換するための特定の関数は、透視投影か正射影投影かによって異なる。以下に、これら２つの場合における計算例を示す。
【００５８】
＜透視＞
【数１】
0004790150.tif 000003
縮尺例  ＝  １６（８ビットモード）／２５６（１６ビットモード）
【数２】
0004790150.tif 000004
ｚ＝−Ｎのとき、ｓは０となり、ｚ＝−Ｆのとき、１となる。
【００５９】
＜正射影＞
【数３】
0004790150.tif 000005
縮尺例  ＝  １６（８ビットモード）／２５６（１６ビットモード）
【数４】
0004790150.tif 000006
ｚ＝−Ｎのとき、ｓは０となり、ｚ＝−Ｆのとき、１となる。
【００６０】
なお、ｚ値は、これら計算の両方において存在することに留意されたい。上記の結果得られる変換マトリックスは、ライト位置に基づくモデルビュー変換から生じるｚ値を、図９および１０に示すようなランプテクスチャにインデックスするのに用いられるｓ，ｔテクスチャ座標に変換する。変換部３００は、比較的高精度のテクスチャ生成計算を行い（特に、２つのテクスチャ座標が並行して生成される場合）、また、本ランプテクスチャ例は、比較的高精度のルックアップ値を与える（特に、２つのテクスチャ座標を用いて２次元テクスチャをマッピングする場合）ので、この技術により、比較的高精度のピクセルデプス値を得ることができる。
【００６１】
精度はこれで適切になったものの、２次元テクスチャマッピング処理において曖昧さが生じることがあり、これにより、ランプテクスチャから選択されるべき値が不正確になることがある。図９および１０に示すランプテクスチャの例において、境界をまたいで不正確な値に「ジャンプ」することもあり、シャドウ比較にアーティファクトを招く場合がある。たとえば、システムがテクスチャをトラバースする度に次の隣接するテクスチャの列または行へ移動するように、ランプ関数をテクスチャの全幅に渡って与えることにより、エラーを招くことがある。これらのエラーをなくすために、より少数の固有デプス値を含む修正されたランプテクスチャを用いることが可能である。重複値を記憶して、ルックアップエラーを除去する。図１３および１４は、このようなランプテクスチャの例である。
【００６２】
図１３および１４に示すランプテクスチャは、１次元フォーマット内のテクスチャマップに渡るが、時折（すなわち、ランプがテクスチャ行間を「渡る」場合）、次の下行にある同一のサンプルを与えるような、浅いランプ関数を提供する。図１３および１４に示すように、修正されたアプローチにおいては、システムが１行中１テクセルを除いてトラバースする度にテクスチャ内の次の行に移動する。たとえば、簡略化された図１３のランプテクスチャを参照して、ランプ期間はテクスチャ幅と完全に一致しているわけではないので、各隣接する１次元テクスチャ行のある一定数のテクセルを重複させることができる。したがって、図１３および１４に示すランプテクスチャの例において、テクセルすべてが固有値を表さなくてもよい。なぜなら、テクセルのうちのいくつかは重複しているからである。さらに、テクセルには、ヌル値を含むものがあってもよい。なぜなら、ランプ関数は、それらにアクセスしないからである。これらの例において、すべてのテクセルを用いるわけではないが、ほぼすべてのテクセルを用いることができる。上述のデプス値を計算するために用いられる式が用いられて、テクスチャをトラバースするための完全な右傾斜を有する傾斜の浅い線を生じさせる。本実施例における変換部３００内のテクスチャ生成ハードウェアおよびテクスチャ座標の生成／ラスタライジングにおけるテクスチャサンプリングは、この傾斜を維持するのに充分正確であり、テクスチャを通じていかなるアーティファクトをも生じさせるものではない。したがって、図１３および１４に示すランプテクスチャ例は、これらの条件において、エラーを生じさせるものではなく、シャドウ比較において、ランプテクスチャ・ルックアップエラーが原因となるアーティファクトは生じない。
【００６３】
＜詳細な実施例＞
図１５および１６は、システム５０上でシャドウマッピングを行うためにメインプロセッサ１１０内において実行するアプリケーションのより完全で詳細な実施例を示す。手順１１００は、システム５０を初期化することによって開始する（ブロック１１０２）。この初期化には、頂点フォーマットと、ライトを含むシーンパラメータとの初期化とを含む（ブロック１１０４）。その後、ルーチン１１００は、１以上の上述のランプテクスチャを生成または取り出し（ブロック１１０６）、表示モードをＯＦＦにして動的なシャドウマップのためにメモリを確保することによって、第１のパス処理の準備を行う（ブロック１１０８）。その後、システム５０は、カラーフレームバッファ更新を禁止にし（ｚのみ更新される）（ブロック１１１０）、テクスチャ環境部６００内のシェーダを、第１のパス処理のために設定して、シャドウデプスマップを生成する（ブロック１１１２）。システム５０は、フロントフェイス・カリングを許可して、ライトからの「第２の」面のみを描画し、（ブロック１１１４）、視点をライト位置に設定する（ブロック１１１６）。その後、グラフィックスパイプライン１８０は、シーンを描画し、陰面除去を行ってｚバッファ内にデプスマップを作成する（ブロック１１１８）。シーンがライト位置から描画されると、ｚバッファデプスマップ（ライト位置に対する、シーン内のすべてのプリミティブに関するすべての直近の「第２の」面のデプスを含む）、システム５０は、ｚバッファをテクスチャにコピーして、ｚバッファをフラッシュする（ブロック１１２０）。
【００６４】
第２のパス処理を準備して、システム５０は、カラー更新を許可にして（ブロック１１２２）、フロントフェイス・カリングをＯＦＦにする（ブロック１１２４）。その後、システム５０は、主画像をレンダリングするためにビューポート／カメラ／ライトを設定し（ブロック１１２６）、シャドウマップテクスチャを設定する（ブロック１１２８）。システム５０は、テクスチャ環境部６００内の再循環シェーダのためにモード／ステージを設定して、見る者からの実際のシーンをフルシーンシャドウで描画するための第２のパスのパラメータを得る（ブロック１１３０）。図１７に示すように、シェーダの構成例は、以下のものを生じさせる。
・デプス値をランプテクスチャからロードする、ステージ０シェーダ処理、
・ロードされたランプテクスチャデプス値をシャドウマップデプス値と比較して、ランプテクスチャデプス値がシャドウマップデプス値以上であれば０を出力する、ステージ１シェーダ処理、および
・ステージ１が０を出力した場合には、予め設定されたシャドウカラーを出力し、その他の場合はラスタライズされたカラーを出力する、ステージ２シェーダ処理。
テクスチャ環境部に含まれる再循環シェーダの処理に関する詳細は、共通して譲渡された、２０００年８月２３日出願の仮出願番号６０／２２６，８８８および２０００年１１月２８日出願の対応特許出願番号０９／７２２，３６７（代理人整理番号７２３−９６８）、名称「グラフィクスシステム用再循環シェードツリーブレンダ」を参照のこと。
【００６５】
その後、プロセッサ１１０は、テクスチャ座標生成マトリックスをロードして、シャドウマップテクスチャ投影およびランプデプス値テクスチャルックアップを行う（ブロック１１３２）。一実施例によれば、以下のソースコードを用いて、シャドウ投影マトリックスおよびデプスルックアップマトリックスを生成することができる（透視または正射影）。
【挿入１】
0004790150.tif 000007
【００６６】
以下のソースコード部分例は、ライト用のパラメータを設定し、これには、モデルビューマトリックスによって乗算される適切な変換マトリックスを含む。
【挿入２】
0004790150.tif 000008
【００６７】
様々な変換マトリックスがロードされると、プロセッサ１１０は、シャドウマップとランプテクスチャとをテクスチャ部５００にロードする（ブロック１１３４）。これで、グラフィックスパイプライン１８０は、シーンを描画できることになり（ブロック１１３６）、描画が完了すると表示される（ブロック１１３８）。
【００６８】
上述したように、本実施例においては、テクスチャ環境部６００内の再循環シェーダは、シャドウデプス比較と、その比較結果に基づくシャドウカラーへのブレンドとを行うために用いられるとした。行われるシャドウマッピング処理の精度によっては、別の再循環シェーダステージが用いられてもよい。一実施例において、単一のステージにおける２つのデプス値を比較するために、再循環シェーダ内において、８／１６／２４ビット比較器が用いられるとした。そのような比較器が利用できないような実施例の場合でも（たとえば、低精度の８ビット比較のみが実施可能な場合）、再循環シェーダは高精度の比較を行うことが可能であるが、そのためには複数のステージが必要となる場合もある。たとえば、あるステージは、（たとえばひとつのテクセルカラー要素に含まれる）各デプス値の最上位部を比較するために用いられ、別のステージは、（たとえば、他のテクセルカラー要素に含まれる）各値の最下位の位置を比較するために用いられてもよい。以下は、８ビット比較器のみを必要とする、精度の異なるシェーダ処理のための再循環シェーダ構成の例である。これらの例において、Ｒ０は、シャドウカラーを保持し、ＲＡＳＣは、点灯された頂点カラーであり、ＲＰは、ＴＥＶＰＲＥＶレジスタである。
【００６９】
＜８ビット比較モードの例＞
【挿入３】
0004790150.tif 000009
【００７０】
＜８ビット比較のシーケンスを用いた１６ビット比較モードの例＞
【挿入４】
0004790150.tif 000010
【００７１】
＜４ステージの１６ビットモードの例（いくつかのアーティファクトを生じさせる可能性あり＞
【挿入５】
0004790150.tif 000011
【００７２】
以下のソースコード例は、所望の比較やシャドウ描画を行うために再循環シェーダ例をどのように制御するかをさらに詳細に示す。
【挿入６】
0004790150.tif 000012
0004790150.tif 000013
0004790150.tif 000014
0004790150.tif 000015
【００７３】
以下は、システム５０が上述のシャドウマッピングを行うのに用いる、図示のアプリケーションプログラミングインターフェースコマンド例のレパートリ・リストである。
【表２】
0004790150.tif 000016
【００７４】
＜結果画像の例＞
図１８は、フルシーンシャドウマッピングによって生成された画像の例である。この例では、トーラス形状のオブジェクトが、格子模様のフロアパネル上にシャドウを投影する。ライトは、見る者の視点から離れた点からやってくるように見える。システム５０は、図１８に示すようなシーンをリアルタイムでレンダリングすることができる。
【００７５】
＜識別技術を用いたさらなる実施例＞
図２１および２２は、オブジェクト識別技術に基づいてシステム５０が行うことができる、シャドウマッピングの一実施例である。この実施例では、上述の、ライト視点からの全シーンをレンダリングするが、ｚバッファをデプス比較のためのシャドウマップとして用いるのではなく、各オブジェクトを、個別の識別番号によってペイントする。たとえば、この識別番号は、符号化されて、カラーフレームバッファ７０２の１つ以上のカラー要素のグレースケール値となってもよい。一意のオブジェクトＩＤが、各オブジェクトに割り当てられる。一例において、ＩＤは８ビット幅であり、メインプロセッサ１１０によって変換部３００にマテリアルカラーとして書きこまれる。それによって、オブジェクトＩＤは、グラフィックスパイプライン１８０にキャリーダウンされ、組み込みカラーフレームバッファ７０２のカラーチャンネルの１つに書き込まれる。その結果、第１のパスのレンダリング処理の最後には、カラーフレームバッファは、ライトが「見る」ことができるすべてのオブジェクトのＩＤを含む。図１９および２０のブロック２１００〜２１１８を参照のこと。
【００７６】
第１のパスの最後では、カラーフレームバッファの適切な内容（ＩＤ）がテクスチャにコピーされて（ブロック２１２０）、第２のパスのテクスチャマッピング処理に用いられる。その後、カメラ（ユーザ）の視点から見た全シーンが再びレンダリングされる。シャドウマップオブジェクトＩＤテクスチャは、従来のテクスチャ投影を用いてシーンに投影され、テクスチャ環境部６００は、各ピクセルについて、描画すべきオブジェクトのＩＤ番号と投影されたシャドウマップテクスチャからのＩＤ番号とを比較する。２つのＩＤ番号が同様でない場合、ライトからの光線は、別のＩＤを有する他のオブジェクトによって妨害されているということになる。本例のテクスチャ環境部６００は、所定のシャドウカラーをピクセルにブレンドする（または、ピクセルの輝度を減衰させる）。本例のテクスチャ環境部６００によって行われる比較は、２つのステージを有する。第１のシェーダステージは、オブジェクトＩＤをシャドウマップから受け取るために用いられ、第２のシェーダステージは、シャドウマップＩＤとレンダリングされたオブジェクトＩＤとの比較結果に基づいて、所定のシャドウカラーをブレンドするために用いられる。図２０のブロック２１２６〜２１３６を参照のこと。
【００７７】
＜互換可能な他の実施例＞
上述のシステム構成要素５０のうちのあるものは、上述の家庭用ビデオゲームコンソール以外であっても実施できる。たとえば、システム５０のために書き込まれているグラフィックスアプリケーションなどのソフトウェアを、システム５０をエミュレートするかまたはそれと互換性のある他の構成を用いたプラットフォーム上で実行することができる。他のプラットフォームが、システム５０のハードウェアおよびソフトウェア資源の一部または全部をうまくエミュレート、模倣、および／または提供できるのであれば、当該他のプラットフォームは、ソフトウェアをうまく実行することができるであろう。
【００７８】
一例として、エミュレータは、システム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供してもよい。エミュレータシステムは、アプリケーションソフトウェアを書き込む対象であるシステムのハードウェアおよび／またはソフトウェア構成要素の一部またはすべてをエミュレートするハードウェアおよび／またはソフトウェア構成要素を含んでいてもよい。たとえば、エミュレータシステムは、パーソナルコンピュータなどの汎用デジタルコンピュータを備えることができ、これによって、システム５０のハードウェアおよび／またはファームウェアを模倣するソフトウェアエミュレータプログラムが実行される。
【００７９】
汎用デジタルコンピュータの中には（たとえば、ＩＢＭまたはマッキントッシュ製パーソナルコンピュータおよびその互換機）、現在、ＤｉｒｅｃｔＸ３Ｄやその他の標準グラフィックスコマンドＡＰＩに対応したグラフィックスパイプラインを提供する３Ｄグラフィックスカードが搭載されているものもある。これらには、また、標準的なサウンドコマンドに基づいて高品質の立体音響を提供する立体音響サウンドカードも搭載されている場合もある。エミュレータソフトウェアを実行させるこのようなマルチメディアハードウェアを搭載したコンピュータは、システム５０のグラフィックス性能およびサウンド性能を近似するに充分な性能を有している場合がある。エミュレータソフトウェアは、パーソナルコンピュータプラットフォーム上のハードウェア資源を制御して、ゲームプログラマがゲームソフトウェアを書き込む対象である家庭用ビデオゲームゲームコンソールプラットフォームの処理性能、３Ｄグラフィックス性能、サウンド性能、周辺性能などを模倣する。
【００８０】
図１９は、エミュレーション処理全体の例を示しており、この処理は、ホストプラットフォーム１２０１と、エミュレータ構成要素１３０３と、記憶媒体６２上に与えられているバイナリ画像を実行可能なゲームソフトウェアとを用いる。ホスト１２０１は、汎用または専用デジタルコンピューティング装置であってもよく、たとえばパーソナルコンピュータやビデオゲームコンソールなど、充分な計算能力を備えたプラットフォームが挙げられる。エミュレータ１３０３は、ホストプラットフォーム１２０１上で実行されるソフトウェアおよび／またはハードウェアであってもよく、コマンドやデータなどの記憶媒体６２からの情報をリアルタイムで変換して、ホスト１２０１が処理可能な形式にすることができる。たとえば、エミュレータ１３０３は、システム５０が実行しようとする「ソース」バイナリ画像プログラム命令を記憶媒体６２から取り出して、実行可能な形式またはホスト１２０１によって処理可能な形式に当該プログラム命令を変換する。
【００８１】
一例として、ＩＢＭのＰｏｗｅｒＰＣなどの特定のプロセッサを用いたプラットフォーム上で実行するためにソフトウェアが書き込まれており、ホスト１２０１は、異なる（たとえば、インテルの）プロセッサを用いたパーソナルコンピュータである場合、エミュレータ１３０３は、バイナリ画像プログラム命令の１つまたはシーケンスを記憶媒体１３０５から取り出して、これらのプログラム命令を、インテルのバイナリ画像プログラム命令に相当するものに変換する。また、エミュレータ１３０３は、グラフィックス音声プロセッサ１１４によって処理されるグラフィックスコマンドや音声コマンドを取り出しおよび／または生成し、ハードウェアおよび／またはソフトウェアグラフィックスおよびホスト１２０１で利用可能な音声処理資源によって処理可能な形式に、これらコマンドを変換する。一例として、エミュレータ１３０３は、これらのコマンドを、ホスト１２０１の特定のグラフィックスおよび／またはサウンドハードウェアによって処理可能なコマンドに変換する（たとえば、ＤｉｒｅｃｔＸ、ＯｐｅｎＧＬおよび／またはサウンドＡＰＩを用いる）。
【００８２】
上述のビデオゲームシステムの機能の一部または全部を提供するために用いられるエミュレータ１３０３には、エミュレータを用いて実行される様々なオプションや画面モードの選択を簡略化または自動化するグラフィックユーザインターフェース（ＧＵＩ）が与えられてもよい。一例として、そのようなエミュレータ１３０３は、ソフトウェアが本来対象としていたホストプラットフォームに比較して、拡張された機能をさらに含んでいてもよい。
【００８３】
図２０は、エミュレータ１３０３と共に用いられるのに適したエミュレーションホストシステム１２０１を示す。システム１２０１は、処理部１２０３と、システムメモリ１２０５とを含む。システムバス１２０７は、システムメモリ１２０５から処理部１２０３までを含む様々なシステム構成要素を結合する。システム１２０７は、メモリバスまたはメモリコントローラ、周辺機器バス、ローカルバスなど、様々なバスアーキテクチャのいずれかを用いたものを含む、数種のバス構成のいずれであってもよい。システムメモリ１２０７は、読み出し専用メモリ（ＲＯＭ）１２５２と、ランダムアクセスメモリ（ＲＡＭ）１２５４とを含む。ベーシック入出力システム（ＢＩＯＳ）１２５６は、パーソナルコンピュータシステム１２０１内の要素間において情報を転送するのを助ける基本ルーチンを含んでおり、ＲＯＭ１２５２に記憶される。システム１２０１は、様々なドライブや、関連したコンピュータが読み取り可能な媒体をさらに含む。ハードディスクドライブ１２０９は、（典型的には固定された）磁気ハードディスク１２１１からの読み出しやそれに対する書き込みを行う。付加的な（選択可能な）磁気ディスクドライブ１２１３は、着脱可能な「フロッピー」などの磁気ディスク１２１５からの読み出しやそれに対する書き込みを行う。随意のディスクドライブ１２１７は、ＣＤＲＯＭなどの随意の媒体のような着脱可能な光ディスク１２１９からの読み出しや、構成によってはそれに対する書き込みも行う。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、それぞれ、ハードディスクドライブインターフェース１２２１および光ドライブインターフェース１２２５によって、システムバス１２０７に接続している。ドライブやそれに関連するコンピュータが読み出し可能な媒体によって、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、ゲームプログラムなどのパーソナルコンピュータシステム１２０１のためのデータが不揮発的に記憶される。他の構成においては、コンピュータが読み出し可能な他の種類の媒体が用いられていてもよく、コンピュータによってアクセス可能なデータを記憶できる媒体（たとえば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）など）であってもよい。
【００８４】
エミュレータ１３０３を含む多くのプログラムモジュールは、ハードディスク１２１１、着脱可能な磁気ディスク１２１５、光学ディスク１２１９、および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４に記憶されてもよい。そのようなプログラムモジュールは、グラフィックスやサウンドＡＰＩを提供するオペレーティングシステム、１つ以上のアプリケーションプログラム、他のプログラムモジュール、プログラムデータ、ゲームデータを含んでもよい。ユーザは、コマンドや情報を、キーボード１２２７、ポインティングデバイス１２２９、マイク、ジョイスティック、ゲームコントローラ、衛星アンテナ、スキャナなどの入力装置を通じて、パーソナルコンピュータシステム１２０１に対して入力する。このような入力装置は、システムバス１２０７に結合されたシリアルポートインターフェース１２３１を介して処理部１２０３に接続されることが可能であるが、パラレルポートや、ゲームポートファイアワイヤーバス、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースによって接続されてもよい。モニタ１２３３などの表示装置も、ビデオアダプタ１２３５などのインターフェースを介して、システムバス１２０７に接続される。
【００８５】
また、システム１２０１は、インターネットのようなネットワーク１１５２上での通信を確立するための、モデム１１５４などのネットワークインターフェース手段を含んでもよい。モデム１１５４は、内蔵であっても外付けであってもよく、シリアルポートインターフェース１２３１を介してシステムバス１２３に接続される。また、ローカルエリアネットワーク１１５８を介して（または、ワイドエリアネットワーク１１５２、ダイアルアップなどの他の通信路、または他の通信手段を介してもよい）、システム１２０１が遠隔コンピューティング装置１１５０（たとえば、他のシステム１２０１）と通信できるように、ネットワークインターフェース１１５６が与えられてもよい。システム１２０１は、典型的には、プリンタなどの標準周辺機器のような、他の周辺出力装置を含む。
【００８６】
一例において、ビデオアダプタ１２３５は、Ｍｉｃｒｏｓｏｆｔ製ＤｉｒｅｃｔＸ７．０などのバージョンのような標準３Ｄグラフィックスアプリケーションプログラマインターフェースに基づいて出される３Ｄグラフィックスコマンドに応答して、高速３Ｄグラフィックスレンダリングを提供するグラフィックスパイプラインチップセットを含んでいてもよい。立体音響スピーカセット１２３７も、システムバス１２０７に対して、従来の「サウンドカード」のような音声生成インターフェースを介して接続されている。そのようなインターフェースは、バス１２０７から与えられたサウンドコマンドに基づいて高品質な立体音響を生成するための支援をハードウェアや組み込みソフトウェアに対して行う。このようなハードウェアの機能によって、システム１２０１は、記憶媒体６２に記憶されたソフトウェアを実行するのに充分なグラフィックスおよび音響の速度性能を提供することができる。
【００８７】
上記の書類は、すべて、明示的に述べたものとして本明細書に引用されている。
【００８８】
本発明は、現時点において最も現実的で最適な実施例と思われるものに関連して説明してきたが、本発明は、開示された実施例に限定されるものではなく、添付の請求項の範囲に含まれる様々な変形例や相当する仕組みを含むことを意図していると解釈されるべきである。
【図面の簡単な説明】
【図１】対話式コンピュータグラフィックスシステムの一例の概略図である。
【図２】図１のコンピュータグラフィックスシステムの例のブロック図である。
【図３】図２に示すグラフィックス＆音声プロセッサの例のブロック図である。
【図４】図３に示す３Ｄグラフィックスプロセッサの例のブロック図である。
【図５】図４のグラフィックス＆音声プロセッサの論理フロー図の例である。
【図６】シャドウマッピング処理手順の例を示す。
【図７】より詳細なシャドウマッピング処理手順の例を示す。
【図８】第２のパスのシャドウマッピングパイプライン処理の例を示す。
【図９】ランプルックアップテーブルの例を示す。
【図１０】ランプルックアップテーブルの例を示す。
【図１１】図９のランプルックアップテーブルを動的に生成するための方法の例を示す。
【図１２】スケーリング処理の例を示す。
【図１３】重複ルックアップ値を組み込むことによってエラーを除去するランプルックアップテーブルの例の他の実施例である。
【図１４】重複ルックアップ値を組み込むことによってエラーを除去するランプルックアップテーブルの例の他の実施例である。
【図１５】シャドウマッピング処理手順の実施例を示す。
【図１６】シャドウマッピング処理手順の実施例を示す。
【図１７】再循環シェーダステージの構成例を示す。
【図１８】フルシーンシャドウマッピング画像結果の例を示す。
【図１９】ＩＤに基づくシャドウマッピング方法の他の例を示す。
【図２０】ＩＤに基づくシャドウマッピング方法の他の例を示す。
【図２１】他の代替可能な実施例を示す。
【図２２】他の代替可能な実施例を示す。
【図１】
0004790150.tif 000017
【図２】
0004790150.tif 000018
【図３】
0004790150.tif 000019
【図４】
0004790150.tif 000020
【図５】
0004790150.tif 000021
【図６】
0004790150.tif 000022
【図７】
0004790150.tif 000023
【図８】
0004790150.tif 000024
【図９】
0004790150.tif 000025
【図１０】
0004790150.tif 000026
【図１１】
0004790150.tif 000027
【図１２】
0004790150.tif 000028
【図１３】
0004790150.tif 000029
【図１４】
0004790150.tif 000030
【図１５】
0004790150.tif 000031
【図１６】
0004790150.tif 000032
【図１７】
0004790150.tif 000033
【図１８】
0004790150.tif 000034
【図１９】
0004790150.tif 000035
【図２０】
0004790150.tif 000036
【図２１】
0004790150.tif 000037
【図２２】
0004790150.tif 000038