JP2004046886A - グラフィック対象物をチャンク映像に変換し、かつ、映像層を結合して表示画像に換える方法、および、装置 - Google Patents

グラフィック対象物をチャンク映像に変換し、かつ、映像層を結合して表示画像に換える方法、および、装置 Download PDF

Info

Publication number
JP2004046886A
JP2004046886A JP2003286313A JP2003286313A JP2004046886A JP 2004046886 A JP2004046886 A JP 2004046886A JP 2003286313 A JP2003286313 A JP 2003286313A JP 2003286313 A JP2003286313 A JP 2003286313A JP 2004046886 A JP2004046886 A JP 2004046886A
Authority
JP
Japan
Prior art keywords
pixel
data
memory
image
gsprite
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.)
Granted
Application number
JP2003286313A
Other languages
English (en)
Other versions
JP3968063B2 (ja
Inventor
Nathan P Myhrvold
ミールフォルト ネイサン ピー
James T Kajiya
カジャ ジェイムス ティー
John G Torborg Jr
トルボーグ ジョン ジー ジュニア
Mark L Kenworthy
ケンワーシー マーク エル
Michael Allen Toelle
トール マイケル アレン
Kent E Griffin
グリフィン ケント イー
Jerome Edward Lengyel
レングイェル ジェローム エドワード
Steven A Gabriel
ガブリエル スティーヴン エイ
James E Veres
ヴェルス ジェイムス イー
Joseph W Chauvin
チャウヴィン ジョセフ ダブリュー
Howard Good
グッド ハワード
William Chambers Powell Iii
パウエル ウィリアム チャンバース ザ サード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US08/671,412 external-priority patent/US5867166A/en
Priority claimed from US08/672,694 external-priority patent/US5949428A/en
Priority claimed from US08/672,347 external-priority patent/US6005582A/en
Priority claimed from US08/672,425 external-priority patent/US5990904A/en
Priority claimed from US08/671,506 external-priority patent/US5852443A/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004046886A publication Critical patent/JP2004046886A/ja
Application granted granted Critical
Publication of JP3968063B2 publication Critical patent/JP3968063B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Abstract

【課題】 レンダリングオーバーヘッドを低減する。
【解決手段】 この装置はgスプライトのシャンクを直列にレンダリングし、且つ表示イメージを計算するためのgスプライトを合成する。この装置はフレームアニメーションのために対象物を再レンダリングするよりもむしろ三次元対象物の動きをシミュレートするためにgスプライト上にアフィン変換を実行できる。シャンク内のレンダリング幾何学が複雑な断片リストアンチアリアースを可能にする。この装置は断片バッファ内に部分的に覆われた画素位置を表現する断片又は半透明画素を記憶する。シャンクに対するプリミテーブをラスター化した後に、断片分解補助装置が出力画素を計算するために断片を識別する。この装置のラスター化成分が断片メモリを節約するために断片を合併しようと試みる。
【選択図】  図4A

Description

 本発明は一般に、グラフィックス変換に関わる。さらに特定的には、グラフィック対象物を変換するための改良法、および、改良装置に関わる。
 近代生活のあらゆる分野にコンピュータが普及するにつれて、視覚情報を用いてマン・マシーン・インターフェイスを改善しようという要求が増している。グラフィック・ソフトおよびハードウェアの進歩はすでにマン・マシーン・インターフェイスを急速に改善してきた。例えば、デスクトップ・コンピュータ用のウィンドー環境のようなインタラクティブ・グラフィックスは、コンピュータの使い勝手とユーザーとの相互作用を大きく改善し、今日では当たり前のことになっている。ハードウェアの価格対パフォーマンス比が下がるにつれて、コンピュータ上で作成されたグラフィックスやアニメの使用がさらに浸透してきている。残念ながら、真にインタラクティブな、リアルな効果を生み出そうとすると、そのコストのために、応用に限界がある。したがって、より低コストで、さらにインタラクティブで、リアルな効果を与えることのできる新しい画像処理技術やアーキテクチュアにたいしては需要がある。
 画像処理法の分類法には各種あるけれども、よくある方法の一つは、画像を、それが表わしたい対象物の次元で記載するやり方である。例えば、ある画像装置は、対象物を2 次元( 例えば、x 座標とy 座標を持つ)で表わす。この場合は、そのグラフィックスは「2次元性」(2D)であるという。また、3次元( 例えば、x 、y 、および、z 座標を持つ)で表わせば、その場合は、そのグラフィックスは、「3次元性」(3D)であるという。
 陰極線管(CRT) のような表示装置は、2次元性(2D)であり、コンピュータの画像装置によって表示される映像は一般に2Dである。しかしながら、以下にさらに詳しく論ずるように、もしもコンピュータが、3次元空間で映像化された対象物を表わすグラフィック・モデルを保持しているならば、コンピュータは、その表示映像を変えて、3D空間において同じ対象について別の遠近像を描くことができる。一方、2Dグラフィック画像は、表示の前に変形する(例えば、 拡大・縮小したり、一定の方式で変換したり、回転したり)ことはできるけれども、3D空間における別の遠近視におけるその対象物の外観をコンピュータはすぐには描き出すことはできない。
 現代のコンピュータが、2Dグラフィックス、特に3Dグラフィックスを次第に効率的に扱うことができるようになったために、様々の応用分野が広がっており、同時に、コンピュータとユーザー間のインターフェイス(UI)に基本的な変化が生じている。3Dグラッフィクスの利用可能性は益々重要になってきている。すなわち、生産品質のアニメ・フィルムの制作ツールを始め、家庭向きの低解像度のゲームやマルチメディア製品を含めた、娯楽関連性の応用分野が成長しているからである。3Dグラフィックスの関連する他分野について二三挙げるならば、教育、ビデオ会議、ビデオ編集、インタラクティブ・ユーザー・インターフェイス、コンピュータ支援設計やコンピュータ支援製造(CAD /CAM)、科学・医学画像法、ビジネス応用、および、電子出版がある。
 グラフィックス処理装置は、アプリケーション・モデル、アプリケーション・プログラム、グラフィックス・サブシステムを始め、コンピュータの通常のハードウェア、ソフトウェア部分、および、付属品を含むと考えてよい。
 アプリケーション・モデルとは、もちろん画像処理はモデルに基づくと仮定して、データ、すなわち、表示される対象物を表わす。モデルは、対象の形を定義する基本要素、例えば、点、線や多角形を始め、対象物の属性(例えば、色)に関する情報を含む。アプリケーション・プログラムは、アプリケーション・モデルへ入るインプット、モデルから出て行くアウトプットをコントロールし、アプリケーション・モデルと、グラフィックス・サブシステムとの間の翻訳者として有効に活動する。最後に、グラフィックス・サブシステムは、ユーザー・インプットをアプリケーション・モデルに手渡したり、また、アプリケーション・モデルの蓄えている詳細な記載に基づいて画像を生成したりする。
 通常の画像処理装置は、物理的出力装置を備える。これが、画像の出力、すなわち、表示を行なう。従来他の形態の表示装置も開発されてはきたけれども、今日優勢な技術は、ラスター・グラフィックスに依拠している。ラスター表示装置は、一連の不連続な点、すなわち、画素(すなわち、ピクセル)を含む。画素は、複数の列と行に配列されて、画像を生成する。CRT においては、この画素は、CRT のガラス・スクリーン上に与えられた蛍光体配列に対応する。この配列の中の各蛍光体からの光出力は、それぞれ独立に、この配列を順々に「 走査」する電子ビームによってコントロールされる。配列の奇数・偶数列の一つ置き走査も、例えば、テレビジョン環境では普通に見られる技法である。スクリーンにマップされるピクセル値配列は、ビットマップ、または、ピックスマップと呼ばれることが多い。
 ラスター・画像装置に関連する一つの問題は、たった一つの画像にたいするビットマップでもそれを保存するのに必要なメモリーが膨大になることである。例えば、1280 x 1024 (すなわち、ピクセル行とピクセル列の数)の表示解像度を維持するのに、装置は、ランダム・アクセス・メモリーの3.75メガバイト(Mb)を必要とすることがある。この情報は、繰り返すが、単一スクリーンの画像を表わすにすぎないものであるが、これは、フレーム・バッファーと呼ばれる、コンピュータの表示記憶装置の一部に蓄えられる。
 CRT のような従来のラスター画像装置に関するもう一つの問題は、装置から発せられる光が比較的速やかに減衰することである。そのため、画像の「ゆらぎ」を避けるためには、通常、60Hz以上もの頻度で、表示を「 更新」してやらなければならない(すなわち、ラスターを再走査しなければならない)。このため、画像生成装置は、画像データを一定頻度で供給するという厳しい要求をつきつけられることになる。二つのフレーム・バッファーを用いてこの問題に対応しようとする装置がある。すなわち、バッファーの内の一つは、直後の画像フレームに対応するピックスマップ情報を備え、他方のバッファーは、只今の画像フレームのピックスマップでスクリーンを更新するのに用いられる。
 装置にたいする要求は情報の複雑さによってさらに悪化される。すなわち、アプリケーション・モデルの貯えた対象物から映像を引き出すためには情報が複雑に処理されなければならないからである。例えば、3次元表面のモデル化それ自体が複雑な仕事である。表面モデル化は、アプリケーション・モデルによって実行されるが、多角形メッシュ、パラメトリック表面、または、方形表面を用いて行なう。曲面は、平面多角形のメッシュによって表わされるけれども、変換画像におけるその外観の「 滑らかさ」は、表示の解像度と、表面のモデル化に用いられた、個々の多角形の数の両方に依存する。多角形メッシュによる複雑な表面の、高解像度のモデル化に伴う複雑な計算は、コンピュータのリソースにとって極端に圧迫的である。
 上に紹介したように、よりリアルな、よりインタラクティブな画像を生成したいという要求がある。「リアル・タイム」という用語は、通常、インタラクティブで、リアルな画像処理装置を記述するのに用いられる。「リアル・タイム」装置においては、ユーザーは、ある場面の中の対象物の連続的な動きを感ずることができなければならない。リアル・タイム機能を持つビデオ・ゲームにおいては、活動的キャラクターと視点は、ユーザーのインプットにたいして極小の遅れで反応し、かつ、滑らかに動く必要がある。
 そのようなリアル・タイム効果を実現するためには、画像変換装置は、十分に高速で新しい画像を生成し、それによって、ユーザーが、ある場面の中の対象物の連続的な動きを感知できるほどになっていなければならない。リアル効果を実現するために必要とされる計算速度は、対象物が場面の中でどのくらいの速さで動き回るか、および、透視視点がどのくらい急速に変化するか、によって変わる。通常のアプリケーションでは、リアル・タイム画像装置は、新画像を1秒当たり少なくとも12個計算し、それによって、連続運動を模倣する一連の画像を生成する。高品質アニメ・アプリケーションでは、計算速度は、それよりもはるかに高くなければならない。
 リアル・タイム装置に関するもう一つの問題は搬送遅延である。搬送遅延とは、ユーザーからのインプット、すなわち、場面の中のあるキャラクターを動かすためのジョイスティックの運動、にたいして画像を計算して表示するのに必要な時間である。搬送遅延時間がユーザーにとって目立つものであればあるほど、その程度に応じて、「リアル・タイム」の相互作用性は損なわれる。理想的には、ユーザーに、搬送遅延を気づかせてはならない。しかしながら、実際には、新しいインプットにたいして、ある場面の対象物を変換し表示画像を生成するのに必要な、いくらかの遅延が必ず存在する。リアル・タイム相互作用性の改善は、データを切り落とすことなく達成できればきわめて望ましい。なぜなら、データの切り落としは、画像品質を損なうからである。
 始めに紹介したように、通常の画像装置は、一般に、フレーム・バッファーを備える。画像を生成するためには、画像装置は、ある場面の中の対象物の全てを変換し、得られた画像をこのフレーム・バッファーに蓄える。次に、装置は、変換画像データを表示器に転送する。通常のグラフィックス・アーキテクチャーであれば、フレーム・バッファーの全内容は消去され、場面は再び変換され、新たなフレーム画像を生成する。この型の装置では、各対象物は、各フレームごとに再描画される。なぜなら、フレーム・バッファーは、フレームとフレームの間において空にされるのであるから。従って、各対象物は、同じ速度で最新画像に更新される。これは、その画像が、その場面の中で現実にどのような動きをしているか、または、特定の用途にたいして、それがどのような重要性持つか、には無関係に行なわれる。
 この、通常のアーキテクチャーは、高度にリアルな、インタラクティブなグラフィックスを生成しようとすると、いくつかの障害をもって立ちふさがる。第一に、ある特定のフレームに関して、ある場面の中の各対象物がすべて同じ優先性で、同じ更新速度で変換される。従って、 ほとんど細部を持たず、動いてもいない背景の対象物も、もっと早く動き、もっと細かい表面細部を持つ前景の対象物と同じ速度で再変換される。そのため、処理や、記憶のためのリソースが、背景対象物の再変換のために消費されることになる。しかも、これら背景対象物はフレームごとにほどんど大した変化をしないのに、である。
 この従来のアーキテクチャーに関するもう一つの欠点は、場面における各対象物がすべて同じ解像度で変換されるということである。その結果、この種のやり方で消費される変換リソースは、その対象物が、場面全体にたいして占める重要性ではなく、その対象物が占めるスクリーン面積の大きさに比例することになる。この問題を明らかにするには実例が役立つ。典型的なビデオ・ゲームの場合、前景の、フレームごとに変化する活動的なキャクラクターと、フレームごとに滅多に変化しない背景とがある。メモリー消費という点でのコストは、背景を生成する方が、活動的なキャラクターを生成するのに要するものよりもはるかに高い。なぜならば、背景の方が、スクリーン上において、より大きな面積を占めるからである。画像データは、背景対象物が占める各ピクセル位置について保存されて、なければならない。一方、より小さい、活動的なキャラクターの方はと言えば、ピクセル・データは、小型のキャラクターの占めるピクセルにたいしてだけ、生成・保存される。その結果、背景は、場面の中の重要性はずっと低いにも拘わらず、より大きなメモリーを占有する。さらに、通常のアーキテクチャーでは、背景全体が、各フレームごとに再変換され、貴重な処理用リソースを消費する。
フレーム・バッファー法の主要利点は、任意の数の単純な対象物を用いて、出力装置において、一つの任意の画像を生成することができ、しかも、それが、ただ、その出力装置の空間的、強度的解像度によってしか制限されないということである。しかしながら、フレーム・バッファーを用いる画像装置にはいくつかの弱点がある。
 フレーム・バッファーは、高価なメモリーを大量(例えば、64-128Mb)に使う。標準のランダム・アクセス・メモリー(RAM) では、アクセス・スピードが遅いので、フレーム・バッファーには適しない。例えば、1024 x 1024 スクリーン上の万の桁のピクセルを空にするには、各メモリー・サイクルが250 ナノ秒を要すると仮定して、1秒の1/4 かかる。従って、さらに高速の、さらに高価な、ビデオRAM(VRAM) 、または、ダイナミックRAM(DRAM) が通常フレーム・バッファーには使われる。高性能装置ともなれば、2個の高価なフレーム・バッファーを備えているものも多い。すなわち、一方のフレーム・バッファーは、現在の画面を表示するのに用いられ、他方は、次のフレームを変換するのに用いられる。この大容量の特殊化メモリーは、画像装置のコストを大幅に上昇させる。
 フレーム・バッファーのメモリー帯域がさらに問題である。各ピクセルに蓄えられた生地(生地)、色、深み情報によって画像処理を実行するのをサポートするためには、30Hzで画像処理するとして、約1.7 ギガバイト/秒の帯域が必要である。通常のDRAMは、僅か50Mb/秒しか持っていないから、フレーム・バッファーは、たくさんのDRAMから構築されなければならない。すなわち、これらのDRAMを、平行処理法を用いて、所期の帯域が得られるようにしなければならない。
 リアル・タイムな、インタラクティブな効果を実現するために、高品質画像装置は、平行変換エンジンを用いる。大フレーム・バッファーに関わる問題の処理のために、従来、三つの基本的平行法が開発されている。(1) 変換処理を多数の処理器に分配するパイプライン方式、(2) フレーム・バッファー・メモリーを、各々独自の処理器を備えたメモリー・チップ・グループに分割する分割方式、および、(3) フレーム・バッファー・メモリー・チップ上の処理回路を、高密度メモリー回路と結合させる結合方式、である。これらの方式は、大型フレーム・バッファーを用いる画像装置の処理法を改善したが、この装置のコストをも飛躍的に増大させた。
 高価な平行処理法を用いてさえ、高度な自然化処理法をサポートするのはきわめて難しい。自然化処理法というのは、連続面を不連続なピクセルで表わすことによって引き起こされる、変換画像におけるアーチファクトを減少させるための処理法を指す。通常の、フレーム・バッファー・アーキテクチャーでは、ある全体フレームにおけるピクセル値は、任意の順序で計算される。従って、高度な自然化処理を実行するためには、自然化処理を始める前に、全フレームのピクセル・データが生成されていなければならない。リアル・タイム装置においては、ピクセル・データにたいして自然化処理を実行するのに十分な時間が残されていない。処理を実行すれば必ず搬送遅延がさらに加わることになる。さらに、自然化処理は、ピクセル断片を保存するためのメモリーをさらに必要とする。フレーム・バッファーはすでに大容量の高価なメモリーを含んでいるのであるから、自然化処理をサポートするために、さらに特殊なメモリーを加えることは、フレーム・バッファー装置をさらに一段と高価なものにする。
 画像圧縮法も、画像処理にフレーム・バッファーを用いる画像装置においては容易に使用できるものではない。フレーム・バッファーによる画像装置において、処理速度を上げるために用いられる平行処理法は、圧縮法を導入しようという試みにいくつかの障害をもたらす。平行処理中、フレーム・バッファーのどの部分にたいしても、どの時点においても、ランダムにアクセスすることができる。一方、多くの画像圧縮法では、画像データは、圧縮処理中は変化しないことを要求する。そうすることによって、後になって、画像データを圧縮解除(脱圧)できるようにするためである。
 フレーム・バッファー・アーキテクチャーでは、高価なメモリーや平行処理用ハードウェアは、常にあまり使用されずに放置されがちであった。なぜなら、ある任意の時点においては、フレーム・バッファー・メモリー、または、平行処理装置のごく小部分のみが実際に使用されるにすぎないからである。したがって、フレーム・バッファー・アーキテクチャーは、大量の高価なメモリーや処理用ハードウェアを備えているけれども、このハードウェアは十分に活用されていない。
発明の概要
 本発明は、幾何学的基本図形のようなグラフィック・データを変換して、表示画像を生成するための方法、および、装置を与える。本発明は、3Dグラフィックスをリアル・タイムで変換するのに特に好適であるが、他のグラフィックスや画像処理アプリケーションにも同様に適用できる。
 画像変換装置の一つの態様として、本装置は、グラッフィク対象物を、gスプライト(gsprite) と呼ばれる画像層に別々に変換し、次に、このgスプライトを合成して表示画像に仕立てあげる。さらに具体的に言うと、本装置は、gスプライトを対象物に割り当て、次に、各対象物( 単数または複数)を、対応するgスプライトに変換する。gスプライトを変換するために、本装置は、映像領域、すなわち、gスプライトのチャンクを連続的に変換する。本装置は、gスプライトを、チャンクに分解し、これらのチャンクの間で対象物の大きさを仕分けし、次に、そのチャンクを連続的に変換する。本装置は、gスプライトを合成して表示画像に仕立てる。
 本発明の一局面として、gスプライトは、3D対象物の動きを模倣するように変形させることができ、変換のレベルをさらに上げることができることがある。ある実施態様では、本装置は、ある場面の中の対象物を、別々のgスプライトに変換する。ある対象物をあるgスプライトに変換した後、本装置は、その後のフレームのために、その対象物を再変換する代わりに、そのgスプライトを再利用する。これを実行するために、本装置は、gスプライトの表わす3D対象物の動きを模倣するアフィン変換を計算する。本装置は、gスプライト上でアフィン変換を実行し、このgスプライトと他のgスプライトとを合成し、表示画像を生成する。
 本発明のもう一つの局面は、画像データのチャンクのためにピクセル断片を処理するそのやり方にある。本装置は、チャンクのために基本図形をラスター化し、基本図形で全的にカバーされる、または、部分的にカバーされるピクセル位置用ピクセル・データを生成する。ある基本図形がピクセル位置を部分的にカバーする場合、または、透過性の場合、装置はピクセル断片を生成し、この断片を断片バッファーに蓄える。ある基本図形がピクセル位置を完全にカバーし、かつ、不透明である場合、装置は、その色彩データをピクセル・バッファーに蓄える。装置は、チャンク用に基本図形をラスター化し、次に、後処理手順においてチャンク用ピクセル・データを解消する。チャンク変換用アーキテクチャーは、一方で、表示画像をリアル・タイム速度で生成しながら、他方で高度な自然化処理をこのピクセル・データにたいして実行することを可能にする。
 本発明のもう一つの局面は、装置のラスター化装置が、一般化ピクセル断片を、断片バッファーに蓄えられた断片と融合しようとすることによって、断片メモリーをセーブできるそのやり方にある。もしも蓄えられている断片が、一般化断片のあらかじめ定められた深みと色彩許容度の範囲内にあるならば、装置のピクセル・エンジンは、これら断片を融合する。ピクセル・エンジンは、これらの断片を、一部は、一般化断片と蓄えられた断片の全体データ( 例えば、全体マスク)を結合することによって融合する。もしも融合されたピクセル断片が完全にカバーされ、不透明であるならば、ピクセル・エンジンは、それを、対応するピクセル・バッファー入力部に移し、断片記録を、断片メモリーから解放する。
 本発明のさらにもうひとつの局面は、サブシステムが、断片記録のリストを解消するそのやり方にある。一つのやり方として、断片解消サブシステムは、ピクセルの各サブピクセル位置にたいして別々の色彩およびアルファー集積器を持ち、各サブピクセルごとに別々に色彩を集積する。このサブシステムは、各サブピクセル位置の集積された色彩を結合する論理を備え、最終的な、出力ピクセルを計算する。もう一つのやり方として、断片解消サブシステムは、深みで仕分けられた断片リストにおいて各断片記録が解消されている間、共通の集積アルファー値を持つサブピクセル領域を追跡し続ける。リストの中の各断片を解消した後、二つのやり方で得られた出力は、ただ一組の色彩値(RGB) と、恐らく一つのアルファー値を持つ出力ピクセルとなる。各ピクセル位置にたいし、断片解消サブシステムは、ピクセル・バッファー中の色彩値を、関連する断片リスト中に断片記録があれば、それと結合させて、例えば、RGB 色彩値とアルファー値を含む分解ピクセル値を計算する。
 本発明のさらにもうひとつの局面は、異方性濾過を実行する方法にある。一般に生地マッピングにおいては、画像変換装置は、幾何学的基本図形の表面にたいして、生地マップをマップする。この特定の方法においては、装置はまず、視野の中のピクセル位置の一点をどのように生地マップにマップさせるかを決定する。概念的には、装置は、フィルター足型をどのように生地マップにマップさせるかを決定する。透視マップにおいては、等方性フィルター足型を生地マップにマップさせることは、異方性の方向においては歪んだ形を与える。したがって、生地を等方性フィルターで濾過することは、高品質の結果を得るには十分ではない。ある特定の実施態様では、装置は、フィルター足型を生地にマップさせるやり方を、生地座標にマップされた視野座標(例えば、スクリーン座標)におけるピクセル位置にたいする逆ヤコビアン行列を計算することによって決定する。
 次に本装置は、マップされたフィルター足型から異方性直線を決め、さらに、特に、この特定の実施態様においては、逆ヤコビアン行列によって異方性直線を決める。概念的には、異方性直線は、視野から生地空間にマップされた点の座標を貫通する直線であり、マップされたフィルター足型の最大延長方向に向かう。装置は、異方性直線にそってフィルターを繰り返し用いて、生地マップから数値をサンプルする。この繰り返し濾過手順による出力は濾過・集積され、それらを元に最終の生地マップを計算する。この方法にはいくつかの変法がある。ある特定の実施態様では、装置は、異方性直線にそって3直線内挿を実行する。次に、この3直線フィルターの出力は集められ、それを元にあるピクセル位置にたいする一組の色彩値を計算する。この態様においては、生地フィルター・エンジンは、例えば、三角形または台形の形を持つ一次元フィルターを、異方性直線に沿う3直線内挿の出力に適用する。しかしながら、この方法では、異方性直線にそって適用されるフィルターに関してはいくつかの変種が可能である。
 本発明のもう一つの局面は、ある画像が、断片メモリーからあふれ出た場合に、その画像の小部分の変換を実行するそのやり方である。ある実施態様では、装置は、断片メモリーの使用状況を追跡し、断片記入の数がある予定値に達した場合、画像領域を、小部分にさらに区分することができる。装置はピクセル断片を生成しながら、断片バッファーへの記入の数を追跡し続ける。もしも記入の数が予定値に達したならば、画像領域はさらに小領域に分割され、この小領域について1回に一つずつ変換する。これによって、各小領域を変換するのに十分な断片メモリーが確保される。装置は、もしも断片記入の数が予定値に達したならば、小領域をさらに小さい画像領域に細区分することができる。その結果、装置は、断片メモリーが決して越えられることがないように、変換される画像領域を細区分することができる。これによって、装置は、もし上記の工夫を持たなかったならば、断片メモリーがあふれてしまうような場合でも、断片を放棄することなく、比較的小さい断片メモリーを用いることができる。
 本発明のもう一つの局面は、装置が、高度の潜時を生ずる環境において、生地フェッチ(生地データを、メモリーに行って、持って帰ってくる)作業を実行するそのやり方にある。例えば、生地マッピング、影つけ、マルチパス変換作業においては、作業を実行するために生地データをフェッチする際に高度の潜時が生ずる場合がしばしばある。この潜時は、メモリーからデータを読み取る際に生ずる遅れ、生地データの脱圧にさいして生ずる遅れ、または、その両方のために起こるものである。
 ある実施態様においては、インプット・データ・ストリームの中の幾何学的基本図形は、メモリーから1ブロックの生地データをフェッチするための潜時を十分吸収できる長さの基本キューに蓄えられる。前ラスター化装置が、この基本キューの中の幾何学的基本図形を、生地ブロック参照データに変換し、これが、第2のキューに蓄えられる。この第2のキューで参照データとされた生地ブロックは、メモリーからフェッチされ、生地キャッシュに置かれる。後ラスター化装置は、このキューの中の基本図形を一つずつラスター化する。各基本図形がラスター化されるにつれて、生地データが必要に応じて生地キャッシュから取り出され、現在の基本図形のための出力ピクセルの計算のために用いられる。基本図形は、ラスター化された後、このキューから除去される。
 もう一つの実施態様では、基本図形がラスター化され、得られたピクセル・データは、生地ブロック・フェッチの潜時を吸収するのに十分な長さを持ったキューに置かれる。ある特定の態様では、キューへの記入は、ピクセル・アドレス、そのアドレスにたいする色彩データ、および、生地請求を含む。生地請求はさらに、生地マップ座標における生地サンプルの中心点を含む。生地要求は、生地ブロック・アドレスに変換され、この生地ブロックは、フェッチされ、生地キャッシュに置かれる。キューへの記入はキューから取り出され、現在生地キャッシュにある関連生地データは、出力ピクセルを計算するのに用いられる。両方の方法とも二組の生地請求を生成し、その内の一組は、他の一組のために遅らせられる。第1組は、生地データを実際にフェッチし、そしれ恐らくそれを脱圧するのに用いられ、 第2組は、生地キャッシュから生地データを取り出すのに用いられる。
 本発明の、これ以外の特徴や利点に関しては、下記の詳細な説明と、付属の図面を参照することによって明らかになるであろう。
装置概観
下記の詳細な説明の中で、われわれは、画像処理装置に関して、いくつかの実施態様を記述する。
 この画像処理装置は、グラフィックスとビデオ処理の両方にたいして、リアル・タイム画像変換と生成をサポートする。本装置に用いられる新規のアーキテクチャーと画像処理法によって、本装置は、当今の画像装置に比べて、高度なリアル・タイム3Dアニメを、はるかにコスト安で生成することができる。画像処理に加えて、本装置は、ビデオ編集アプリケーションのようなビデオ処理をもサポートし、また、ビデオとグラッフィクスを結合させることもできる。例えば、本装置は、ビデオを、グラッフィクな対象物に適用したり、ビデオ・データにグラッフィクな対象物を加えるのに用いることもできる。
 本装置は、広範なインタラクティブ・アプリケーションをサポートする。本装置は、高度のリアル・タイム・アニメをサポートできるために、ゲームや、教育用アプリケーション、および、たくさんのインタラクティブ・アプリケーションに好適である。本装置は、3Dグラッフィクス、および、グラフィックスとビデオ併用を含む、高度なユーザー・インターフェイスをサポートする。今日の、パソコン用ウィンドウ環境の制限された画像能力を改善し、本装置は、高度の、アプリケーション用3Dグラフィック・ユーザー・インターフェイスをサポートする。そのアプリケーションは、デスクトップ・コンピュータ上のオフィス・インフォメーション処理用のものから、テレビ・セット接続式のインタラクティブ用途のものまで広範に渡る。本装置は、メモリーと処理時間をきわめて効率よく利用するので、目覚しい画像処理、および、表示を呈示しながら、それでいて、アプリケーションの性能や、ユーザー・アクションにたいするユーザー・インターフェイスの反応性を不当に妨げない。
 第1図は、本画像処理装置100 のブロック・ダイアグラムである。本画像処理装置は、画像データ供給・保存体102 、画像前プロセッサー104 、画像プロセッサー106 、および、変換画像を直ちに表示したいならば、表示装置108 から成る。本装置の各要素は、システム・インターフェイス110 を通じて互いに接続している。画像データ供給・保存体102 は、画像データを装置に供給し、かつ、画像データと命令を保存する。画像前プロセッサー104 は、画像データを操作して、変換できるように調整する。前処理機能の例としては、対象物を幾何学モデルで定義すること、光入射、陰影形成モデルを定義すること、対象位置を決めること、視点と光源の位置を決めること、大きさの処理、がある。
 画像プロセッサー106 は、画像を変換し、表示装置108 に表示されるべき表示画像を生成する。変換とは、モデルから画像を生成する工程を指し、二三挙げるならば、大きさ処理(大きさ処理は、前処理機能でもあることに注意)、視程表面の決定、走査変換、および、光入射などの機能を含む。画像、または、画像の一部を変換した後、画像プロセッサー106 は、変換された画像データを、表示のために表示装置に転送する。
 以下に、われわれは、画像処理装置100 のいくつかの特質を、特定のハードウェア・ソフトウェア・アーキテクチャーを参照しながら詳細に記載する。しかしながら、下記の画像処理装置は、各種のアーキテクチャーに実装可能であることを銘記しなければならない。
 画像処理装置100 は、本発明者にとって既知の従来の高品質3D画像装置にはるかに優る価格性能上の改善を達成した。コンピュータ・グラッフィクスにおけるいくつかの進歩がこの改善の達成に貢献している。そのような進歩としては、合成映像層、画像圧縮、チャンク化、および、マルチパス変換がある。われわれはここにこれらの進歩を紹介し、以下にさらに詳細にこれらの進歩、ならびに、他の進歩を記述する。
合成映像層(gスプライト)
 本装置においては、多数の、独立の映像層がビデオ速度で合成されて、出力ビデオ信号を生成する。この映像層を、われわれは一般化スプライト(generalized sprite)すなわちgスプライト(gsprite) と呼ぶことにするが、これらは、独立に変換・操作することができる。これによって、各対象物を、独立に更新することができるので、対象物の更新速度を、場面の優先性に応じて最適化することができる。例えば、はるか遠くの背景を動く対象物は、前景対象物ほど頻繁に、また、それほど正確に更新する必要はない。
 gスプライトは任意の大きさと形を取ることができる。ある実行例では、われわれは方形のgスプライトを用いた。gスプライトのピクセルは、そのピクセルに関連する色とアルファー(不透明度)情報を持っており、そのために、多数のgスプライトが合成されて全体場面を構成できるようになっている。
 gスプライトにたいしては、拡大・縮小、回転、サブピクセル位置づけ、アフィン・ワープのような運動模倣性変換を含む、いくつかの異なる作業をビデオ速度で実行することができる。従って、gスプライト更新速度は変えられる一方で、gスプライト変換(運動など)は、完全なビデオ速度で実現可能なので、更新速度保証を持たない従来の3D画像装置で実現できるレベルをはるかに越えた滑らかな運動性を実現する。
 多くの3D変換は、2D画像化操作によってシミュレートすることができる。例えば、後退する対象物は、gスプライトの大きさを拡大・縮小させることによってシミュレートすることができる。中間フレームにたいしては、以前に変換された画像にたいして2D変換を実行することによって、全体の処理要求を大きく低下させることができるので、3D変換性能を、最高品質画質を生成することが要求される場合に用いることができる。これが、ディテール管理の時間レベルの形態である。
 ジーライト拡大・縮小操作を用いることによって、空間的なディテールも、場面優先性に適合するように調節することができる。例えば、背景対象物、曇った空などは、変換して小さなgスプライト(低解像度)に納め、次に、それを、表示用に適当な大きさに拡大・縮小する。高品質濾過機能を用いることによって、典型的な低解像度アーティファクトも同じように目立たなくなる。
 通常の、3Dグラッフィクス・アプリケーション(特にインタラクティブ・ゲーム)は、高度の活動速度を実現するために、ディテールの尺度レベルを犠牲にする。gスプライトによって、本装置は、さらに二つの場面パラメータを利用することができる。すなわち、ディテールの時間レベルと、ティテールの空間レベルである。そして、それらによって、ユーザーから見たときの実効的演技を最適なものとする。ある対象物が映像に変換される時の空間解像度は、そこへ変換されるスクリーンの解像度に適合する必要はない。さらに、本装置は、この調整を、アプリケーション側のサポートを必要とせず、自動的にやりくりすることができる。
画像圧縮
 装置のコストと性能の決定にあずかってもっとも重要な因子は恐らくメモリーであろう。例えば、従来の高性能3D画像装置は、フレーム・バッファー(2重バッファー)、深みバッファー、生地バッファー、および、自然化バッファーを含めて、30メガバイトを越えるメモリーを持つ。そして、この多くは、特殊メモリーであって、DRAMよりもずっと高価である。メモリー帯域は常に死命を制するネックとなる。高性能装置のコストは、順飛ばしによって得た多数のメモリー貯蓄を、ピクセルや、生地データ・アクセスのために十分な帯域を用意したいという要求に振り向けるために突き上げられることがしばしばである。
 本装置は、この問題を解決するために、画像圧縮技術を広く用いている。画像圧縮は、従来、画像装置には使用されなかった。これは、高品質を実現するのに要求される計算上の複雑さのためであり、また、圧縮技術そのものが、従来のグラフィックス・アーキテクチャーに簡単に適合しないためでもあった。われわれは、チャンク化(後述)と呼ぶ概念を用いることによって、画像や生地にたいして圧縮を効果的に適用することができ、それによって、価格・性能面において目立った改善を実現することができた。
 一面においては、画像装置は従来から、フレーム・バッファー・メモリーにたいして圧縮を用いてきた。高性能装置は、三つの色成分のそれぞれにたいして8ビットを用い、さらにしばしば、8ビットのアルファー値を含んでいた。低性能装置は、この、ピクセル当たり32ビットを4 ビットまで圧縮する。それを、情報を捨てることによって、および・または、カラー・パレットを用いて、同時に表示可能な色の数を少なくすることによって実行する。この圧縮は、よく目立つアーチファクトを生じ、データ要求に目立った抑制を与えず、それでいて、アプリケーションやドライバーに、広範なピクセル・フォーマットに対処するように強制する。
 本装置で使用される圧縮は、高画質を実現しながら、10:1 以上の圧縮比を与える。本装置のもう一つの利点は、すべてのアプリケーションにたいして、単一の高品質のフォーマットしか使用しないということである。これは、空間解像度と色の深みとの間の取引きを必要とする、標準のPCグラフィックス・アーキテクチャーとはっきり異なる点である。
チャンク化
 本装置の、もう一つの重要な進歩を、チャンク化と呼ぶ。従来の3D画像装置(その点に限って言えばどのフレーム・バッファーでも)ランダムにアクセスが可能である(されている)。スクリーン上の任意のピクセルにたいして、ランダムな順序でアクセスすることができる。圧縮アルゴリスムは、相当に大きな数の隣接ピクセルへのアクセス性に依存するので(空間的一体性を利用するために)、圧縮は、グラフィックス・アルゴリスムによって用いられるランダム・アクセス・パターンの性質のために、すべてのピクセルの更新がなされて始めて実行可能となる。このため、圧縮技術を、表示バッファーにたいして適用することは実際的でなくなる。
 このようなランダム・アクセス・パターンの性質によって、ピクセルの被遮蔽(隠れた)表面除去や、自然化アルゴリスムを導入した場合、スクリーン上の各ピクセルは、余分の情報を維持しなければならなくなる。これは、メモリー・サイズ要求を飛躍的に増し、さらに性能上のネックを加える。
 本装置は別の方法を取る。ある場面、または、場面の一部は、チャンクと呼ばれるピクセル領域に分割される(ある特定の実行例では32 x 32 ピクセル)。一つの実行例では、装置は、gスプライトに割り当てられた幾何図形をチャンクに分割するが、別の実行例では、gスプライトを用いずにチャンク化を実行する。この幾何図形は、それがどのチャンクに変換されるかに基づいて前もってビンに仕分けされる。この工程をチャンク化と呼ぶ。チャンクの境界にかかる図形はできれば、それが見える各チャンクに参照されることが好ましい。場面が活性化されるにつれて、データ構造は、一つのチャンクから別のチャンクへと移動する図形に合うように修正される。
 チャンク化によって、いくつかの目覚しい利点が得られる。チャンク化の使用によって、圧縮が効果的な形態を取ることができる。一つのチャンクの中の幾何図形はすべて、次のチャンクに進む前に変換されるのであるから、深みバッファーは、僅か、単一チャンクだけの大きさを持つだけでよい。32 x 32 ピクセルのような比較的小さなチャンク・サイズを用いることによって、深みファッバーを、画像変換チップに直接装着させることができる。これによって、かなりの量のメモリーを除去することができ、さらに、深みバッファーを、特別メモリー・アーキテクチャーを用いて実装することもできる。すなわち、そのメモリー・アーキテクチャーは、きわめて高い帯域幅をもってアクセスすることができ、かつ、2重バッファー作業時には空にすることができるので、従来の、フレーム間のフレーム・バッファー・メモリー一掃処置を省略することができる。
 自然化処理も相当に簡単になる。なぜなら、各チャンクは、独立に処理できるからである。自然化機能を備える、大抵の高性能Z バッファー画像装置は、大量の付加メモリーを利用しながら、比較的単純な濾過しか実行できない。しかしながら、チャンク化を用いれば、必要とされるデータ量は、かなり少ない(1000の桁)ので、さらにずっと高度な自然化処理アルゴリスムの実装を可能にする。
 Z バッファー処理や自然化処理に加えてさらに、本装置はさらに、適正な、筋目の見えないやり方で透過性をサポートする。あるチャンクの形成中、装置は、もう一つのチャンクで自然化処理と透過性の計算を行なう。言葉を換えて言えば、ある一つのチャンクを形成するのに必要な時間内で、装置は、もう一つのチャンクで自然化処理と透過性処理を実行することができる。装置は、チャンク間をピンポンのように往復することができるので、リアル・タイム・アプリケーション用に映像を処理するにあたって、遅延を加えることなく高度の処理を実行することができる。
 さらにもう一つの利点は、チャンク化は、ブロック性の画像圧縮を可能にすることである。一旦チャンクが変換された(かつ、自然化処理された)ならば、次にそのチャンクは、ブロック変換性圧縮アルゴリスムによって圧縮される。したがって、チャンクを別々にチャンク化することによって実行される圧縮に加えてさらに、チャンク化がさらに高度な、適応性の高い圧縮方式をサポートすることになる。
マルチパス変換
 本装置のアーキテクチャーのもう一つの利点は、3Dインタラクティブ・アプリケーションが、1970年代のCAD 画像装置の外観―あの、飽き飽きする、複数の高反射部を備えた、ランベルト図形的、段階状陰影の多角形群―から抜け出すためのきっかけを与えることである。色付きの生地マッピングは、この外観を改善するばかりでなく、アプリケーション上ではさらにもう一つ独特の外観を呈する。1980年代に、プログラム可能な陰影器や、処理的生地マップの概念が、変換工程に新しい飛躍をもたらした。これらの概念は、オフ・ライン変換の世界を一掃し、今日われわれが映画の特殊効果に見るような高品質画像を生成する。
 今日の通常の高性能3D画像ワークステーションの、厳密な変換パイプライン・モード、および、固定変換モードは、このような効果を実現した場合、必ずリアル・タイム性能を急激に低下させる結果を招く。そのため、リアル・タイム表示を要求するユーザーは、狭く制限された変換弾力性に甘んぜざるを得ない。
 上に概説した方法を用いて帯域要求を下げることによって、本発明の装置は、単一共有メモリーを、圧縮生地保存、および、圧縮gスプライト保存を含むすべてのメモリー要求を満たすために用いることができる。このアーキテクチャーのお陰で、変換工程で生成されたデータは、生地プロセッサーに戻され、新たなgスプライトの変換のためのデータとして使用されることになる。このようなフィードバック・サポートのために、装置は効率的なマルチパス変換を実行することができる。
 効率的なマルチパス変換を、様々の合成モードや、弾力的な陰影言語と結合させることによって、本装置は、以前はオフ・ライン・ソフトウェア変換器の領域であった、各種の変換効果をリアル・タイムで供給することができる。そのようなものとして、陰影(多数光源による陰影を含む)、環境にマップされた反射性対象物、スポット・ライト、地上の霞、リアルな水中シミュレーションなどの機能のサポートがある。
 一つの実施態様においては、画像処理装置(100 )は、ソフトウェアとハードウェアの併合を含む。次節で、われわれは、ハードウェアとソフトウェア・アーキテクチャーを参照しながら、システム環境について述べる。できれば、別様のアーキテクチャーについても述べる。しかしながら、ソフトウェアとハードウェアは変更が可能であるから、後述する特定の実施例には限定されない。
 本画像処理装置、または、その部分は、デスクトップ・コンピュータ、テレビセット接続ユニット、および、ゲーム装置を含む、いくつかの異なるプラットフォームに実装することができる。
 第2図は、本画像処理装置が実装されるコンピュータ装置130 のブロック・ダイアグラムである。コンピュータ装置130 は、プロセッサー132 、メイン・メモリー134 、メモリー・コントロール136 、二次保存器138 、インプット装置(単数または複数)、表示装置142 、および、画像処理ハードウェア144 を含む。メモリー・コントロール136 は、プロセッサー132 とメイン・メモリー134 の間のインターフェイスとなる。メモリー・コントロールはさらに、プロセッサー132とメイン・メモリー134 が、バス146 に接する時のインターフェイスとしても働く。
 第2図に示したと同じ、または、同様のアーキテクチャーを持つコンピュータ装置は色々ある。そのような装置内部のプロセッサーも変動し得る。さらに、1個以上のプロッセサーを含むコンピュータ装置もある。二三挙げるならば、プロセッサーは、インテル社のペンチアム、または、ペンチアム・プロであってもよいし、シリコン・グラフィックス社のMIPS族から成るマイクロプロセッサーであってもよいし、モトローラ社のパワーPCであってもよい。
 メイン・メモリー134 は、高速メモリーであって、大抵の通常のコンピュータ装置では、ランダム・アクセス・メモリー(RAM) が装着されている。メイン・メモリーは、既知の技術のどのような変種においても、プロセッサーおよびバスとインターフェイスを形成する。メイン・メモリー134 は、コンピュータのオペレーティング・システムや、現在走っているアプリケーション・プログラムのようなプログラムを保存する。以下に、われわれは、コンピュータ装置によって実行される命令のシンボル的な表現を参照しながら、ある実施態様の様々な局面を述べる。この命令は、コンピュータ実行性と呼ばれる場合がある。この実施態様のこれらの局面は、コンピュータの読み取り可能な媒体に保存された一連の命令からなる、一つのプログラムまたは複数のプログラムとして実装することもできる。コンピュータの読み取り可能は媒体は、メイン・メモリーまたは二次保存体に結合される、ここに記載する装置のいずれであっても、または、それら装置の併合であってもよい。
 バス146 は、メモリー・コントロール136 、二次保存体138 、および、画像処理ハードウェア144 を互いに結び付ける。ある実行例では、例えば、バスはPCIバスである。PCI 標準は既知であり、この標準をサポートするように設計されたコンピュータ装置のボードはいくつかある。例としては、ISA バス、EISAバス、VESAローカル・バス、および、NuBus がある。
 表示装置142 は、カラー・ディスプレーであって、画像を表示するために連続的に更新される。一つの実施態様の表示装置は、陰極線管(CRT) 装置であるが、これは、液晶表示(LCD) であっても、その他の表示装置であってもよい。
 二次保存装置138 は、各種の保存媒体を含む。例えば、二次保存装置は、フロッピー(登録商標)・ディスク、ハードディスク、テープ、CD-ROMなどを含んでいてよく、また、電気的、磁気的、光学的、または、他の記録材料を用いる装置であってもよい。
 インプット装置( 単数または複数)140 は、キーボード、マウスや、ジョイスティックのようなカーソル位置づけ装置の他に、各種市販のインプット装置を含む。
 下記に詳述する一つの実行例においては、画像処理ハードウェア144 は、コンピュータ装置と、PCI バスを通して結合するボードに実装される。また別の実行例では、画像処理ハードウェアは、プロセッサーや、他の画像処理ハードウェアやメモリーと共にシステム・ボードに置かれる。例えば、あるゲーム装置では、画像処理ハードウェアは、通常、マザー・ボード上に置かれる。同様に、テレビセット接続装置の画像処理ハードウェアもマザー・ボード上に置いてもよい。
 コンピュータ装置のアーキテクチャーを概観したからといって、われわれは、本発明を、第2図に示したシステム・アーキテクチャーに限定するつもりはない。本画像処理装置は、ゲーム装置、テレビセット接続装置、ビデオ編集装置などに実装することができる。下に、われわれは、第2図に示したシステム・アーキテクチャーの環境における画像処理装置の実施態様を説明する。下記の記述全体を通じて、われわれは、別様の実施態様を述べるが、他に考えられる可能な実行例の完全なリストを与えるつもりで、これら別様の実施態様を記述するものではない。下記の詳細な説明に基づけば、本分野に通常の知識・技術を有するものであれば、本画像処理装置を、別のプラットフォームに実装することは可能であろう。
 第3図は、一つの実施態様におけるソフトウェアとハードウェアの間の関係を示すブロック・ダイグラムである。この実施態様においては、画像処理装置は、ホスト・コンピュータのプロセッサーと、画像処理ハードウェア144 の処理リソースに基づいて実装される。画像処理ハードウェア144 は、プロセッサー( 例えば、ディジタル信号プロセッサー)166 と画像処理回路168 を含む拡張ボード上に実装される。ホスト・コンピュータ130 と、画像処理ボードのプロセッサーは、画像処理作業を共同で行なう。以下に、われわれは、ホストコンピュータ130 と画像処理ボード174 によって実行される機能を概論的に述べる。
 グラッフィクス・サポート・ソフトウェア160 は、ホスト・コンピュータ装置130 の上で実行され、ハードウェア抽象化層(HAL)162を通じて画像処理ボード164 と情報を交換する。画像処理ボード164 は、DSP166と呼ばれるプログラム可能なディジタル信号プロセッサーと、以下に詳述する、別の画像処理ハードウェア168 を含む。
 グラフィックス・サポート・ソフトウェア160 は、メモリー管理、視界容量選択、深み分類、チャンク化の他に、gスプライト割り当て、変換、および、ディテール・レベルをサポートする機能を含む。グラフィックス・サポート・ソフトウェアは、ここに挙げる機能を実行するために、グラフィックス・アプリケーション類のアクセス可能な、一群のグラフィックス機能を含んでいてもよい。
 グラフィックス・サポート・ソフトウェア160 は、上に紹介したgスプライト・パラダイムをサポートする機能を含む。上に示したように、gスプライトは独立に変換されるが、各フレームごとに変換される必要はない。むしろ、gスプライトの位置の変化は、アフィン、または、その他の変形で近似させてもよい。グラフィックス・サポート・ソフトウェア160 は、一つの対象物、または、複数の対象物を、一つのgスプライトに割り当てるのを補佐し、そのgスプライトの位置と動きを記述する移動データを追跡する機能を備える。さらに、グラフィックス・サポート・ソフトウェアは、変換gスプライトを更新すべき時を決める機能を備える。gスプライトを更新する必要のある場合は、対象物の動き、視点の動き、照明の変化、および、対象物の衝突に応じて変化する。
われわれは、以下に、グラフィック・サポート・ソフトウェアの機能に関してさらに詳細を述べる。画像処理ボード164 は、変形、照明、および、影つけ、生地つけ、自然化、透過性などを含む低レベルの幾何学処理を実行する。一つの実施態様では、DSP166が、フロント・エンド幾何学処理と照明計算を実行するが、この機能のうちいくつかは、ホストのプロセッサー132 に実行させてもよい。
画像処理ボードの概観
 第4A図は、画像処理ボード174 を示すブロック・ダイアグラムである。この画像処理ボード174 は、ホスト・コンピュータと、バス146 を介して連絡する。このものは、DSP176、タイラー200 、共有メモリー216 、gスプライト・エンジン204 、合成バッファー210 、および、ディジタル・アナログ変換器(DAC)212を含む。ホストからの命令に応じて、画像処理ボード174 は、画像を変換し、表示用画像を、DAC212を介して表示装置142(第2図)に転送する。
 第2-4A図に示す実施態様では、ホスト・プロセッサーと、DSP は、第1図の画像プロセッサーの機能を分かち合っている。画像プロセッサーは、タイラー200 、gスプライト・エンジン204 、合成バッファー210 、および、DAC212から成る。以下に、われわれは、これらの要素についてさらに詳細を述べる。しかしながら、画像処理装置の実装は変更可能であることを銘記しなければならない。
 共有メモリー202 は、画像データと画像処理命令とを画像処理ボード174 上に蓄える。一つの実施態様では、共有メモリーは、gスプライトと生地データを圧縮した形で蓄えるのに用いられ、各種バッファーは、処理サブシステム間にデータを転送するのに用いられる。
 DSP176は、ビデオ圧縮・脱圧と、フロントエンド画像処理(変換、照明、など)を行なう。できれば、DSP は、1000 MFLOPS/MOPS を越える浮動小点と積分計算をサポートするものであることが好ましい。
 タイラー200 は、VLSIチップであって、マルチパス変換のために、走査変換、陰影階調、生地つけ、被遮蔽表面の除去、自然化処理、透過性、影つけ、および、混合を行なう。次に、この得られた変換gスプライト・チャンクを圧縮し、圧縮した形で共有メモリーに蓄える。タイラーはさらに、ビデオ、および、ウィンドウ作業をサポートするために、gスプライト・データの脱圧および再圧縮を行なう。
 gスプライト・エンジン204 は、ビデオ速度で、gスプライトのチャンク・データに接触し、これを圧縮し、一般アフィン変換(これには、拡大・縮小、ピクセル以下の精度を持つ翻訳、回転、反射、および、剪断変形が含まれる)のために必要な画像処理を行なう。濾過後、得られたピクセル(アルファーを含む)は、合成バッファーに送られ、ここで表示ピクセル・データが求められる。
 gスプライト・チャンク・データは、表示のために、1回に走査線の数だけ処理される。一つの実施態様では、チャンク・データは、1回に32本の走査線分処理される。合成バッファー(210)は、二種の、32走査線カラー・バッファーを含み、これら二種は、表示と合成作業の二つの間を交互切り替えされる。合成バッファーはさらに32走査線アルファー・バッファーを含む。このバッファーは、各ピクセルにたいするアルファーを集積するのに用いられる。
 DAC212は、RGB ビデオDAC と対応するビデオ・ポート214 から、ビデオ編集装置までを含む。個々の成分は、DAC の機能性を実現するために用いられる。
装置の動作
 第5Aおよび5B図は、本画像処理装置において映像を変換する際に実行される手順を示すフロー・ダイグラムである。画像プロセッサー106 が、視野構成のために映像変換を開始する前に、画像前置プロセッサー104 は、対象物と視点の位置を決める(240) 。第2と3図で示した実施態様では、ホスト・コンピュータ装置132 の上を走るグラフィックス・サポート・ソフトウェア160 が、グラッフィクス・アプリケーションから供給されるデータに基づいて、対象物と視点の位置を決める。ホスト・プロセッサーの上を走るグラフィックス・アプリケーションは、関係対象物を表わすモデルを定義し、モデル化変形を供給し、これが、その対象物を、他の対象物と共に「世界座標」の中に位置づけるのに使用される。
 次に、画像前置プロセッサー104 は、見える可能性のある対象物を選び出す(242) 。前置プロセッサーは、視野容量に基づいて、見える可能性のある対象物を決める。視野容量とは、世界座標における3次元空間であって、場面にたいして境界を与える。前置プロセッサーは、対象物を横切ることによって、見える可能性のある対象物を選び出し、その境界が、視野容量と交わるかどうかを決める。視野容量と交わる対象物は、幾何学的、または、空間的意味で見える可能性があることなる。
 ある場合には、場面の将来の変化を予測するために、現在の視野容量の外部にあるが、「 時間的に」 見える可能性のある対象物を決めておくことが有利なことがある。こうすれば、装置は、視野容量の急激な変化にも対応していくことができる。通常の3D画像装置では、このような急激な変化に対応する唯一のやり方は、変更インプットに基づいて新しい場面をまったく新たに生成することであって、そのため、その間に相当な搬送遅延を生ずる。このような長い遅延は、ユーザーに否定的な作用を及ぼし、調節過度や気分のむかつきのような問題を引き起こす。この遅延を下げるために、本発明の画像前置プロセッサーは、視野の外側の拡大範囲に置かれた対象物の位置を計算することができ、かつ、画像プロセッサーは、この拡大範囲の中の映像を変換・保存することができる。本装置のアフィン変換能に基づき、次のフレームにたいする視点インプットを用いて、この拡大範囲のgスプライトの再配置を、装置転送遅延を、計算フレームにして2フレーム未満に抑えながら実行することができる。このような短い転送遅延は、本発明者に既知の、当今の3Dグラッフィクス・ハードウェア装置では実行不可能であって、さらに高品質なシミュレーションを可能にし、したがって、ユーザーをさらに心地よく画面に没頭させることになる。
 画像前置プロセッサーは、映像にたいするgスプライトの形態を決定する(244)。この手順は、見える可能性のある対象物をいかにgスプライトにマップするか、その方法の確立をも含む。この工程の一部として、画像前置プロセッサー104 はgスプライトの割り当てを行なう。これは、gスプライトのデータ構造を生成し、それによって1 個以上の見える可能性のある対象物に相当する画像データを蓄えることをも含む。もしも処理用リソースが許すならば、場面の中の相互非貫通的対象物は、それぞれ、独立のgスプライトに割り当てられる。互いに貫通しあう、または、自己閉塞性対象物は、単一のgスプライトとして処理される。
 画像前置プロセッサー104 は、画像プロセッサーが、これらgスプライトを所期の計算フレーム速度で合成する能力を持たない場合、あるいは、それらジーズプライトを蓄えるほど十分な装置メモリーがない場合、これらのgスプライトを合体させることができる。別々のgスプライトに変換する方が必ず計算上効率が高いので、装置にメモリーや、合成能があるならば、相互非貫通性対象物は、別々のgスプライトに変換される。もしも装置が、gスプライトの現在の割り当てに基づいて表示画像を保存ないし生成できない場合には、いくつかのgスプライトを合体して、この問題を緩和する。
 一つの対象物、または、複数の対象物をgスプライトに割り当てた後で、画像プロセッサーは、gスプライトを、「チャンク」と呼ばれる映像領域に分割する(248 )。画像前置プロセッサーが、gスプライトにたいしループ(繰り返し動作)を実行し、このgスプライトをチャンクに分割する(246、248 )。一つの実施態様では、この工程は、視野にたいする対象物の境界容量を変形し、この変形された境界容量を包む方形の映像領域を見出すことを含む。この映像領域は、gスプライトの対象物(単数または複数)が変換される2次元平面におけるgスプライトの大きさを定める。gスプライトは、この方形映像領域をチャンクに分割し、それらチャンクをgスプライト・データ構造と関連させることによって、チャンクに分割される。
 最適化の一つのやり方として、変形された境界容量を拡大・縮小したり、および・または、回転させ、それによって、gスプライト変換に必要なチャンクの数が極小になるようにしてもよい。このように変形をさらに加える(拡大・縮小、あるいは、回転)のであるから、gスプライトに割り当てられた対象物の変換される空間は、必ずしもスクリーン空間である必要はない。この空間を、gスプライト空間と言う。表示画像を生成する過程で、gスプライトは再び変形してスクリーン空間に戻さなければならない。
 次の手順は、対象物の大きさを、チャンク間にどのように分割するかを決めることである(250 )。画像プロセッサーは、幾何学的基本図形(例えば、多角形)が、チャンク間にどのように分割されるかを、その多角形を2D空間(252 )に変形し、その多角形がどのチャンク(単数または複数)に投影するかを求めて、決める。多角形を切り取るのは高価であるから、好ましい方法は、チャンクの端にある多角形は切り取らないことである。むしろ、チャンクは、その端を重ねる複数の多角形を含む。例えば、もしも、一つの多角形が、二つのチャンクの境界にまたがって延びている場合は、この方法では、多角形の頂点が、各チャンクに含まれることになる。
 次に、画像前置プロセッサーは、チャンク・データを、タイル敷きのためにキュー化する。タイル敷きとは、1個以上の多角形でカバーされる、または、部分的にカバーされるピクセル位置の、色やアルファーのようなピクセル値を決める工程を指す。
 決定手順(254 )(第5B図)、および、それに続く手順(256) は、チャンク内で多角形のタイル敷きを行なう工程を表わす。画像プロセッサーは、現在のチャンクの境界に重なる多角形を含む一方、同チャンク内にあるピクセルしか生成しない。生成されたピクセルは、自然化処理( 断片記録) のための情報を含み、これは、すべてのピクセルが生成されるまで保存される。
 チャンクの多角形のタイル敷きが終了した後、画像プロセッサーは、ピクセルのための自然化処理データ(断片記録のような)を解消する(258) 。一つの実施態様では、タイラー200 は、2 重バッファーを用い、次のタイル敷きを行なっている間に、その前のチャンクを解消する。また別のやり方として、タイラーは、フリー・リストとバッファーを共有してもよい。フリー・リストとは、共有バッファー内のフリーなメモリーを表わし、これは、新しい断片記録が生成されると割り当てられ、断片記録が解消されると、また加えられるものである。2 重バッファー法と共有メモリーの併用を用いても同様の効果が期待できる。
 画像プロセッサーは、後述する圧縮法を用いて、この解消チャンクを圧縮する。画像プロセッサーは、1ブロックのピクセルを解消すると同時に、別のブロックを圧縮してもよい。画像プロセッサーは、共有メモリーにこの圧縮チャンクを蓄える(262) 。
 第6図は、画像を表示するために実行される手順を示すフロー・ダイアグラムである。上述の画像処理ボード174 上において、画像は、共有メモリー216 から読み取られ、gスプライト・エンジン204 によって、物理的出力装置座標に変形され、合成バッファー210 において合成され、DAC212に転送され、次に出力装置に転送される。
 表示工程において、画像プロセッサーは、現在のフレームに表示されるべき一連のgスプライトにアクセスする。gスプライト形態を決定する工程において、画像前置プロセッサーは、gスプライトの深みの桁を決める(280)。前述したように、一つのgスプライトには一つの対象物を割り当てるのが好ましい。しかしながら、画像前置プロセッサーは、例えば、装置で使用されるある特定の画像プロセッサーの処理限界を受け容れるために、一つのgスプライトにたいして1個以上の対象物を割り当ててもよい。画像前置プロセッサーは、対象物を、Z 順に、すなわち、視点からの距離として、対象物を仕分ける。対象物を仕分けるのに加えて、さらに、gスプライトを深み順に仕分け、この深みデータをgスプライト・データ構造に蓄える。
 第6図の決定手順(282) は、表示工程におけるgスプライトにたいするループを表わす。このループ内の手順としては、1)変換gスプライト用変形を求めること、および、2)gスプライトの表示法を調節するgスプライト表示リストを形成すること、がある。これらの手順については後述する。
 見える可能性のある範囲のgスプライトに関しては、画像プロセッサーは、gスプライト変形を求める。gスプライト変形とは、変換2Dgスプライトにおける変形を指す。一つの実施態様では、画像プロセッサーは、変換必須成分を抑えるようにgスプライトにたいして変形を実行する。各フレームごとに各対象物を変換するのでなく、画像プロセッサーは、変換gスプライトを再利用することによって、変換必須成分を抑える。
 画像データの各フレームごとにgスプライト変形を計算する必要はない。例えば、もしもgスプライトが、画像データの現在フレームにたいして変換されたのであれば、そのgスプライトを変形する必要はない。これは、例えば、そのgスプライトを変形させて、境界ボックスをその対象物にもっとよく適合させようという要求がない限りそうである。さらに、再変換や変形を要しないgスプライトがある。すなわち、そのgスプライトに割り当てられた対象物(単数または複数)が変化しなかったり、動かない場合である。そのような場合、gスプライト変形手順は、実行してもよいし、しなくともよい。
gスプライトの位置が変化しない場合には、このgスプライトに、単位行列をかけてもよい。これは、例えば、画像プロセッサーが、現在のフレームのためにgスプライトを変換した場合、あるいは、始めに変換されて以来gスプライトの位置が変化しない場合にあてはまる。
 gスプライトの表示法を特定するために、画像プロセッサーは、gスプライト表示リストを生成する。表示リストとは、どのgスプライトを、表示スクリーンに表示すべきかを定義する一つのリスト、または、複数のリストを指す。この表示リスト概念は、他の、一枠の画像データを表示するための出力装置にも当てはめることができる。画像プロセッサーは、表示リストを、変換gスプライトを物理的装置座標にマップし、その上に合成するのに用いる。表示を構築する手順は、gスプライトにたいするループの一部として示されているけれども、このリスト(単数または複数)は、特にこのループ内に生成される必要はない。
 表示リストは、一連のgスプライト・リスト、または、帯域あたりの、一連のgスプライト・リストを指すものであってもよい。「帯域」とは、表示スクリーンの水平走査線領域である。例えば、一つの実施態様では、帯域は、32走査線高 x 1344 ピクセル幅である。表示リストは、各帯域別々のgスプライト・リストを含んでいてもよく、その場合、帯域リストは、それぞれの帯域に照射するgスプライトを記述する。また別法として、ディスプレー・リストは、どの帯域にgスプライトを照射するのかを特定できるようにgスプライトに名札をつけて実行される、そのような単一リストからなるものであってもよい。
 ここに示した実施態様の表示リストは、2重バッファー方式である。2重バッファーを持つことによって、装置は、一方のデータ・リストを、他方を読んでいる間に、生成することができる。装置が一つのフレームにたいするgスプライト変形を求め、表示リストを構築している間に、別のフレームの表示リストを読み取り、このリストの中の画像データを表示する。
 2重バッファーであるために、第6図に示した手順は重複する。すなわち、画像プロセッサーは、あるフレームにたいしては、手順(280-286) を実行する一方で、別のフレームにたいしては手順(290-298)を実行する。
 第7図は、上記手順のタイミングを示すブロック・ダイアグラムである。装置が、フレーム310 にたいして手順(280-286)(第6図) を完了すると、装置は、フレーム同期信号( 垂直点線) を待ち、それからバッファー交換を実行する。次に、装置が生成したばかりの表示リストを用いて、現在フレーム312 に表示すべきgスプライトを決める。この表示リストを処理している間に312 、gスプライト変形が計算され、かつ、次のフレームのための表示リストが構築される314 。次のフレームにおいて、前のフレーム314 で生成されたgスプライト変形と表示リストが用いられ、表示画像316 を生成する。
 画像プロセッサーは、表示リストの中のgスプライトのリストに基づいて、gスプライトを出力装置座標に変換する。画像プロセッサーは、色、アルファー、および、gスプライトの位置を特定するデータを含むgスプライト・データを共有メモリーから読み取る。このデータに基づいて、画像プロセッサーは、そのgスプライトによってカバーされるピクセルの色とアルファーを決める。
 一つの実施態様においては、画像プロセッサーは、各帯域ごとにループ操作を行ない、gスプライト表示リストに従って、その帯域に照射するgスプライトを変形する。以下に、この表示工程をさらに詳細に述べる。
 gスプライト・データを変形した後、画像プロセッサーは、得られたピクセル・データを合成する。この中には、gスプライト変形に基づいて、出力装置座標で表わしたピクセルにたいする色とアルファーを計算する作業も含まれる。画像プロセッサーは、表示リストの中のgスプライトにたいするピクセル・データを変形し、次に、その変形ピクセル・データを合成する。この工程は、あるピクセル位置について、それをカバーするgスプライトの1個以上のピクセル値に基づいて、その位置のカラーとアルファーを決定する作業を含む。
 一つの実施態様では、画像プロセッサーは、帯域にループ操作を実行し、各帯域ごとにピクセル・データを合成する。画像プロセッサーは、ピクセル・データに2重バッファー処理を行なう。すなわち、一つのバッファーにおいてある帯域のgスプライトを変形・合成する一方で、別の帯域にたいしては、合成済みピクセル・データを表示する。
ピクセル・データを合成した後、画像プロセッサーは、合成ピクセル・データを出力装置に転送する。ピクセル・データを表示するためには、それは、表示と適合するフォーマットに変換されていなければならない。
 ある実施態様の装置の全体操作を記述し終えたので、次に、画像処理ボードについてさらに詳細に述べよう。
画像処理ボード
 一つの実施態様では、共有メモリー216 は、4 メガバイトのRAM を含む。これは、2 本の8 ビットRAM バス・チャンネルによって実行される。しかしながら、メモリーの量および型は変更可能である。
 第8図は、画像処理ボード174 におけるDSP336を示すブロック・ダイアグラムである。DSP336は、ホスト・プロセッサーからの命令ストリームを取りまとめ、若干のビデオ処理とフロント・エンド幾何学処理を実行する。DSP は、3Dグラフィックスに用いられるフロント・エンド幾何学、および、照明計算を実行する。この中には、モデルおよび視点変形や、切り取り、および、照明が含まれる。gスプライト運動外挿のような、gスプライト・アニメ処理のある部分もDSP で処理される。
 変換命令は、メイン・メモリー・バッファーに保存され、PCI バスを通り、PCI バス・コントローラー342 を経由して画像処理ボード174 にDMA 化される。次に、これらの命令は、ボードの共有メモリー216 に、DSP336( 第8図) に要求されるまで、蓄えられる。
DSP コア338 は、上述の画像処理計算を実行するためのプロセッサーを含む。さらにDSP コアは、スケジュール設定、および、リソース管理を実行する。
 メモリー・インタフェイス340 は、高速のデータ転送、例えば、80MHz において64ビットをサポートする。これは、通常のDRAMやSDRAM 装置とインターフェイスを形成するように設計されている。タイラー200 は、このバスに直接接続するように設計されており、DSP によって要求されるメモリー・タイミングをシミュレートする。
 DSP におけるデータ・フォーマット装置およびコンバーター346 は、タイラーにたいする変換指令をフォーマットする。このブロックは、浮動小点色成分を、整数に変換し、それらを、タイラー特異的データ構造にパックする。さらに、全命令を蓄え、これを直接共有メモリー中のメモリー・バッファーにDMA する。この変換指令は後に、作業実行の態勢が整った時に、タイラーによって読み取られる。
 フォーマット作業の一つとして、データ・フォーマット装置とコンバーター346 は、タイラーにたいして三角命令データをフォーマットする。DSP(336)によって浮動小点として計算されたRGB ∝(アルファー)データは、8ビットの整数に変換される。座標情報は、浮動小点から12.4固定点に変換される。このデータは、64ビット語にパックされ、一連のブロックとして、共有メモリーに転送され、それによって、最適な帯域幅が得られる。
 表示メモリー管理部(MMU )334 は、デスクトップ表示メモリーのために使用される。このものは、デスクトップ表示メモリーとして割り当てられた、直線アドレス範囲内のPCI アクセスを捕捉する。次に、このアクセスを、共有メモリーに蓄えられた画像ブロックにマップする。
 本画像処理ボード(第4A図、174 )のアーキテクチャーは、特定のDSP からは比較的独立している。しかしながら、DSP は、顕著な浮動小点性能を持っていることが好ましい。適当なDSP としては、Samsung 半導体のMSP-1 、および、Phillips半導体のTrimediaが挙げられる。これら特定のDSP は、十分な浮動小点性能を与えるDSP の二つの例である。
 第9A図は、画像処理ボード174 におけるタイラー200 のブロック・ダイグラムである。タイラーは、2Dおよび3Dグラッフィクスの加速と、共有メモリー調整を実行する。画像処理ボードのブロック・ダイアグラムで示したように、タイラーは直接DSP (176 、第4図)、gスプライト・エンジン204 、および、共有メモリー装置216 に接続する。
 上記ブロック・ダイアグラムの機能ブロックは、この節に記載される。
 タイラー378 は、基本図形変換のためにいくつかの成分を含む。命令およびメモリー・コントロール380 は、共有メモリー216 、gスプライト・エンジン204 、および、DSP176とインターフェイスを形成する。タイラー、DSP 、および、gスプライト・エンジンからの、メモリーにたいするアクセスは、このブロックによって判断される。キューが、バッファー読み取りアクセスにたいして与えられる。
 セットアップ・ブロック382 は、三角表面を横切る辺縁、色、および、生地内挿を決める直線方程式を求める。この方程式はまた、この三角形を変換するにはどの生地ブロックが必要とされるかを決めるのにも用いられる。辺縁方程式はさらに走査変換ブロック394 にも送られ、走査変換エンジン398 に要求されるまで、基本図形レジスター396 に蓄えられる。
 セットアップ・ブロック382 は、三つの成分を含む。頂点インプット・プロセッサー384 、頂点およびコントロール・レジスター386 、および、セットアップ・エンジンである。頂点インプット・プロセッサー384 は、DSP からの命令ストリームを寄せ集める。頂点およびコントロール・レジスター386 は、多角形、または、その他の幾何学的基本図形を処理するのに必要な情報を蓄える。この特定の実施態様では三角処理が用いられ、かつ、タイラー200 は、三角処理の2重バッファー対応を実行するために、6頂点(各三角につき三つずつ)のレジスターを含む。セットアップ・エンジン388 は、色、深み、辺縁にたいする微分と、三角表面を横切る生地座標内挿を計算する。これらの方程式はまた、この三角形を変換するにはどの生地ブロックが使ったらよいかを決めるのにも用いられる。セットアップ・エンジンはさらに生地チャンクをあらかじめフェッチし、それによって、走査変換エンジン398 に要求された場合にいつでも用立てられるようにしておく。
 セットアップ・エンジン388 はさらに生地読み取りキュー390 、および、生地アドレス・ジェネレーター392 と連絡する。生地読み取りキュー390 は、共有メモリーの生地ブロック読み取り請求を保存する。われわれが、メモリーから画像データ・ブロックを取り出すために用いられるタイラーの部分を指して「生地」という用語を使用する時は、この用語は、マルチパス変換作業で用いられる生地マップ、陰影マップ、および、その他の画像データを指すこともあり得るということを了解しなければならない。生地アドレス・ジェネレーター392 は、要求されたチャンクの、メモリー内部のアドレスを決め、生地読み取り請求を、命令およびメモリー・コントロール380 に送る。この生地アドレス・ジェネレーター392 は、画像データの、生地キャッシュへの書き込みを制御するメモリー管理部を含む。
 走査変換ブロック394 は、セットアップ・ブロックから微分値とその他の頂点データを受け取り、ピクセル・データを生成する。走査変換ブロック394 は、基本図形レジスター396 と、走査変換エンジン398 とを含む。基本図形レジスター396 は、各三角パラメータにたいする方程式パラメータを蓄える。基本図形レジスターは、多数組の方程式を蓄えるためのレジスターを含み、それによって、走査変換エンジンが、生地データを待ちながら立ち往生することがないようにする。
 走査変換エンジン398 は、多角形を変換する。この場合、多角形は三角形である。走査変換ブロック394 は、歩行辺縁にたいする、また、色彩、深みなどを評価するための挿入器を含む。色、深みを備えたピクセル・アドレス、および、自然化処理包括情報は、ピクセル・エンジンに転送され、処理される。
 走査変換エンジン398 は、生地アドレスを生地フィルター・エンジン400 に渡す。エンジンは生地データを求める。生地フィルター・エンジン400 は、変換された多角形のピクセルの色とアルファー・データを求める。図に示した生地フィルター・エンジンは、変換された三角形のZ 勾配と方向、および、生地要求の中心に基づいてフィルター・カーネルを計算する(1点のS とT 座標が生地にマップされる)。濾過は、パイプライン方式によって、各サイクルごとに新しいピクセルが生成されるように二段階で実施される。フィルター・カーネルは、異方性フィルターであってもよいし、等方性フィルターであってもよい。異方性が要求されないばあいは、フィルター・カーネルは、3直線内挿法の場合よりももっとずっと鮮鋭な生地を与える陰性片葉を用いてもよい。生地フィルター・エンジン400 はさらに、陰影にたいする効果を計算するために、Z 比較作業を扱う。
 生地キャッシュ402 は、脱圧画像データのブロックを蓄える。一つの実行例では、生地キャッシュ402 は、16個の、8 x 8 ピクセル・ブロックの生地データを蓄える。このデータは、16個の生地要素が、クロック・サイクルごとにアクセスされるようにまとめられる。
 脱圧エンジン404 は、生地データを脱圧し、これを、生地キャッシュ402 に転送する。本実施態様においては、脱圧エンジンは、二つの脱圧器を含む。一つは、生地のような連続階調映像にたいして、不連続なコサイン変換(DCT )準拠アルゴリスムを実行するもので、もう一つは、デスクトップ・ピクセル・データ用に脱落のないアルゴリスムを実行する。DCT 準拠アルゴリスムは、二つの、平行な脱圧ブロックによって実行され、しかも、このブロックは各々クロック・サイクルごとに8ピクセル要素(すなわち2ピクセル)を生成できる。
 圧縮キャッシュ416 は、脱圧エンジン404 が圧縮データを脱圧し、生地キャッシュ402 に転送するまでは、その圧縮データを蓄えるのに使用される。
 走査変換エンジン398 は、ピクセル・データをピクセル・エンジン406 に転送する。ピクセル・エンジン406 は、混合、および、深み保存を含むピクセル・レベルの計算を実行する。ピクセル・エンジンはさらに陰影に必要なZ 比較作業を扱う。最適性能を発揮するためには、ピクセル・エンジンは、各クロック・サイクルごとに1ピクセルずつ作業することが好ましい。
 ピクセル・エンジン406 は、ラスター化バッファーへのピクセル・データの転送を制御する。ここに示した実施態様では、ラスター化バッファーは、ピクセル・バッファー408 と断片バッファー410 を含む。ピクセル・バッファー408 は、2 重バッファー処理をサポートするために2個のバッファーを含む。このピクセル・バッファーを実地に用いた場合、各ピクセル入力部は、色成分(RGB )当たり8ビット、アルファー成分用に8ビット、Z バッファー用に24ビット、ステンシル・バッファー用に8ビット、断片バッファー用に9ビット・ポインターを蓄える。これは、ピクセル当たり合計73ビットになる。一方のピクセル・バッファーがピクセル・エンジン406 で使用されている時、他方は、自然化処理エンジン412 によって使用される。
 断片バッファー410 は、ピクセル断片と呼ばれる、部分的にカバーされるピクセルの断片を蓄える。このような断片は、多角形の辺縁があるピクセルを横切る場合、または、多角形が透過性を持つピクセルのあるためである。断片バッファーは、第9A図に示した実行例では単一バッファー処理で実行される。断片のフリー・リストの保持は次のように行なわれる。すなわち、断片が解消されるにつれて、それらはフリー・リストに加えられ、断片が生成されるにつれて、その断片は、フリー・リストの記入例を利用する。また、別法として、断片バッファーは2 重バッファー処理方式であってもよい。それによって、一方の断片バッファーが自然化処理エンジンによって解消されている間に、他方が、平行的にピクセル・エンジンによって満たされることが可能になる。
 一つの実施態様では、断片記録は、ピクセル・バッファー書き込み、プラス、4 x 4 マスクと同じデータを含む。9ビット・ポインターは、結合書き込みリストを形成するために用いられ、残された値は、リストの終末を示すために使われる。この実施態様では、断片バッファー410 は、合計512 個の書き込みを含むが、この大きさは変動してもよい。
 自然化処理エンジン412 は、1個以上の多角形によって悪影響を被るピクセルにおける色とアルファー成分を求める。このようなことは、複数の多角形が、そのピクセル領域をほんの部分的にしかカバーしない時(すなわち、多角形辺縁がそのピクセルを横切る時)、または、多角形が透過性を持つときに起こる。自然化処理エンジン412 は、解消されたピクセル・データを圧縮エンジン414 に転送する。この実施態様では、圧縮エンジン414 は、二つの圧縮器を含む。すなわち、一つは、連続階調画像用のDCT 準拠のものであり、他方は、デスクトップ・ピクセル・データ用の脱落のないタイプのものである。DCT 準拠アルゴリスムは、クロック・サイクル当たり8ピクセル要素を圧縮できる圧縮器によって実行される。圧縮エンジン414 は、得られた変換gスプライトを圧縮し、この圧縮データをコマンド・メモリーおよびコントロール380 に転送し、これは、共有メモリー216に保存される(第4図)。タイラーも、圧縮データをキャッシュに換える圧縮キャッシュ416 を持つ。
 第10および11図は、ピクセル生成過程において、メモリーから画像データにアクセスするに当たって、二つの別様の実施態様を示したものである。ピクセル生成中にメモリーから画像データにアクセスしなければならない場合がいくつかある。そのような例としては、例えば、生地マッピング作業中に生地マップにアクセスすること、影つけ作業中に影マップにアクセスすること、および、マルチパス混合作業中に、色、および・または、アルファー・データにアクセスすることが挙げられる。簡単のために、われわれは、メモリー中の画像データを「生地」または、「生地データ」と呼ぶ。しかしながら、ここに述べる方法ならびに装置は、他の型で、そこにおいてピクセル生成中に、メモリーから画像データにアクセスするものにも応用できることを了解しなければならない。
 第10および11図に示した実行例は、タイラーにたいし生地キャッシュを効率よくロードし、利用するための別法を紹介するものである。この方法の大きな利点は、生地データが、装置の性能を損なうことなく、メモリー中に大きい潜時をもって、しかも、圧縮フォーマットの形でも保存されるということである。
 メモリーからの生地データは、「ブロック」と呼ばれる単位ごとにアクセスされ、キャッシュに変えられる。このブロックは、通常、効率的なフェッチや、キャッシュ化に適当な小さな方形領域である。通常のブロックの大きさは、8 x 8サンプルである。例えば、生地マップの場合では、通常のブロックは、8 x 8 テクセルである。
 第10図は、一つの実施態様において、このような生地データのブロックにアクセスする様を示す機能的ブロック・ダイアグラムである。この実施態様は、生地データ請求を含むラスター化装置417 からのピクセル・データを、生地参照データ・キュー418 に蓄えることによって潜時問題を解決している。このキューは、潜時を吸収するに十分な入力部を含んでいるために(もしそれがなければ生地ブロックにアクセスする際に、また、恐らく脱圧する際に潜時が生じるであろう)、変換工程はフル・スピードで進行することができる。例えば、一つの生地ブロックをフェッチするのに100 サイクルを要し、タイラーが、クロック・サイクル当たり1ピクセルを生成できるとするならば、生地参照データ・キューは少なくとも100 個の入力部を含むことになる。
 第10図に示した装置においてデータの流れは、下記のように進行する。先ず、幾何学的基本図形が、ブロック416 に示すようにラスター化のためにセットアップされる。セットアップ処理としては、例えば、三角形のような幾何学的基本図形にたいして頂点を読み取ること、および、その三角形表面を横切って色、深みと辺縁の微分を求めること、が挙げられる。この計算によって得られるパラメータを次にラスター化装置417 に入力する。
 ラスター化装置417 は、各基本図形にたいして方程式パラメータ・データを読み取り、ピクセル・データを生成する。ラスター化装置は、生地座標とフィルター・データを含むピクセル・データを生成し、このデータを、生地参照データ・キュー418 に蓄える。生地フェッチ・ブロック420 は、キュー418 に蓄えられる生地参照データを読み取り、かつ、メモリー419 から適当な生地ブロックをフェッチする。
 本実行例の生地参照データ・キュー418 に蓄えられるピクセル・データは下記を含む。すなわち、計算された、ピクセルの行き先アドレス(X 、 Y )、深みデータ(Z )、被覆マスク、色と透過性データ、生地請求の中心座標(S 、 T )、および、生地フィルター・データである。深み、被覆データは、ピクセルの高度な自然化処理を望む場合にのみ、生地参照データ・キュウーにおいて要求される。もし被遮蔽表面除去処理や自然化処理をラスター化装置内で実行するならば、深みデータや、被覆データは、データ・キュー418 内に保存する必要はない。生地フィルター・データは、例えば、MIP マッピング用の一定レベルのディテール・パラメータを含んでいてもよいし、あるいは、さらに高度な生地濾過のための異方性フィルター・データを含んでいてもよい。
 生地ブロック・フェッチ420 は、データ・キューに蓄えられる生地参照データを読み取り、メモリー419 から対応する生地データを取り出す。生地マップ・アクセスの場合、生地ブロック・フェッチ部は、生地請求の(S 、 T )中心と生地フィルター・データを、生地濾過作業を満足に実行するのに必要なブロックのアドレスに変換する。画像データ・ブロックは、もっとも最近使用したキャッシュ(LRU) 、または、その他の適当なキャッシュ交換アルゴリスムを用いてフェッチすることができる。メモリー・アクセスの回数を抑えるために、生地ブロック・フェッチ部は、生地キャッシュ421 にすでに蓄えられている生地ブロックを追跡しており、同じブロックを1回よりも多く請求するのを避ける。この能力によって、高品質の生地濾過を実行するのに必要な帯域幅を大幅に下げることができる。なぜなら、生地ブロックを取り出す際の潜時が、画像を計算する時の1回だけしか起こらないからである。
 生地ブロック・フェッチ部は、タイラーの生地フィルター部でまだ必要とされている生地ブロックの書き込みすぎを防止するために、抑制機構を備える。このような抑制機構を実行する一つのやり方は、各生地ブロックと参照カウントを関連させ、生地フィルターが、特定の生地ブロックを用いたかどうかを追随しておくことである。この参照カウントは、ブロックにたいする生地請求を、生地フェッチ部が受け取る度ごとに増加し、そのブロックが生地フィルター部によって使用される度ごとに減少する。従って、生地ブロック・フェッチ部は、相当する参照カウントがゼロのブロック同士を交換すればよい。
 抑制機構を実行するまた別の方法として、生地フェッチ部からの生地ブロック出力のために、一次的保存用のバッファーを割り当てることがある。この方法では、画像ブロックは、最初に、一次保存バッファーに書き込まれる。生地フェッチ部が、この一次保存バッファーへの画像ブロックの書き込みを完了した後で、この画像ブロックは生地キャッシュに転送される。画像ブロックは、生地フィルター部422 に始めに要求された時に、生地キャッシュと交換される。
 生地マッピング作業の場合、生地フィルター・ブロック422 は、生地キャッシュ421 から生地サンプルと、さらに、生地参照データ・キュー418 に蓄えられているピクセル・データを読み取り、その生地サンプル・データからピクセル色彩値および恐らくアルファー値を計算する。
 生地マッピング作業の他にも、この方法は、影つけや、マルチパス混合作業にも同様に適用できる。例えば、生地参照データ・キューを用いて、メモリーの中にある影深みマップを取り出すことができる。また別法として、生地参照データ・キューは、マルチパス照明や、影つけ作業で使用された色、および・または、アルファー・データの回収に利用できる。生地マッピング、影つけ、および、マルチパス作業についてはさらに詳細に以下に述べる。
 前記の方法でピクセル・データを保存するといくつかの利点が得られる。一つの大きな利点は、画像データを、あまり特別でない(比較的大きなアクセス時間のものでもよい)メモリーに保存することができることである。これは、全体コストを下げる。さらに、生地を含む画像データを、圧縮フォーマットの形で保存でき、従って、生地濾過のような高度なピクセル作業を実行できるほどに高速でアクセスすることができることである。このため、本装置は、生地データにアクセスするに当たって、既知の方法に比べて、低コストでより向上した性能を発揮することができる。
 この方法のもう一つの利点は、生地参照データ・キューが、メモリーからどの画像ブロックにアクセスしなければならないかを正確に予測することができること、である。そのため、本装置は、メモリー・アクセスのために必要以上の潜時を生じさせない。一旦画像データ・ブロックが生地キャッシュの中に入ったならば、生地フィルター部は、請求画像ブロックを生地キャッシュに書き込むのに十分なメモリー帯域幅と生地フェッチ出力がある限り、ラスター化装置一杯の高速で走る。
 生地参照を、生地請求中心でキュー化すること、および、そのデータを濾過すること、これらによって、キューは、同じ生地フィルター重量のままでテキセルをキュー化した場合よりも、はるかに小さくて済む。
 第11図は、もう一つの実施例において、メモリーから画像データにアクセスする手順を示す機能的ブロック・ダイアグラムである。この方法では、幾何学的基本図形は、キュー化され、前ラスター化装置において、ピクセル生成工程で生じた生地ブロック・フェッチの潜時をマスクするように処理される。一例を挙げて説明すると、この概念が具体的に明らかになるであろう。 もし平均的な基本図形が、ラスター化するのに25サイクルを要し、かつ、メモリーから生地ブロックをフェッチするのに100 クロック・サイクルを要するとするならば、この基本図形キューは、少なくとも4基本図形長となる。後ラスター化装置の単純型としての前ラスター化装置は、メモリーからアクセスするのに必要な画像データ・ブロックを決める回路を含む。一旦生地データがフェッチされたならば、後ラスター化装置は、メモリーからブロックをフェッチする際に生ずる潜時をも生ずることなく、生地データを用いてピクセル・データを生成することができる。
 この実行例全体を通ずるデータの流れは下記のようになる。前記の実行例同様、幾何学的基本図形は、セットアップ・ブロック425 で処理され、ラスター化される。しかしながら、この特定の実行例では、セットアップ・ブロック425 は、前例よりももっとたくさんの基本図形を蓄えることのできる大きな基本図形キューを含む。前ラスター化装置426 は速やかにこれら基本図形を、一連の生地ブロック・リストに変換し、それによって、基本図形のカバーするすべてのピクセルにたいして、生地濾過要求を、それらブロックが、後ラスター化装置が要求するであろう順番通りに満たしていく。前ラスター化装置は、後ラスター化装置427 の、または、さきの別の実行例のラスター化装置417 の、単純型である。この方法では、前ラスター化装置は、生地データ・アドレスを計算し、かつ、生地請求を決めるだけでよい。
 前ラスター化装置も生地ブロック・キャッシュのモデルを保持し、キャッシュ交換アルゴリスム、例えば、もっとも最近使用したキャッシュ(LRU) 方式を実行し、生地ブロック・キャッシュの大きさを越えないようにする。キャッシュ交換アルゴリスムの一部として、前ラスター化装置は、生地ブロック・フェッチ部への単一の生地ブロックにたいする繰り返し請求をただ一つの請求に圧縮する。
 生地ブロック・フェッチ・キュー428 は、生地ブロック請求を蓄える入力部を備える。生地ブロック・フェッチ部429 は、生地ブロック・フェッチ・キューからの生地請求を読み取り、メモリー430 から適当なブロックを取り出す。
 後ラスター化装置は、セットアップ・ブロック425 でキュー化された基本図形をラスター化し、あるピクセル位置にたいするピクセル・データを生成する。もしも画像データを、ピクセル生成工程中に、メモリーからアクセスする必要があるならば、後ラスター化装置は、必要な生地ブロックが生地ブロック・キャッシュ431 に転送されるほどの速さで、この基本図形をラスター化する。後ラスター化装置が、セットアップ・ブロックでキュー化された基本図形をラスター化し終えると、基本図形は除去され、インプット・データ・ストリームからの別の基本図形と交換される。このセットアップ・ブロックは、キューが常に基本図形で満たされるように保ち、それによって、前ラスター化装置も、後ラスター化装置も、ピクセル生成工程において立ち往生することないようにする。
 前述の別様実施態様の場合と同様に、生地ブロック・フェッチは、後ラスター化装置によってまだ必要とされている生地ブロックの超過取扱いを予防するための抑制機構を含むことが好ましい。前述の2 個の抑制機構は、この実施態様でも使用できる。特に、参照カウントは、画像ブロックが何時請求され、そして、使用されるかを追随するのに用いることができる。その場合、参照カウントは、ブロックにたいする生地請求を、前ラスター化装置が受け取る度ごとに増加し、後ラスター化装置が使用する度ごとに減少する。従って、生地ブロック・フェッチ部は、生地キャッシュのブロック同士を、その参照カウントが0の場合にのみ交換すればよい。
 また、別法として、バッファーを、生地フェッチ・ブロックによる生地ブロック出力の一次的保存のために割り当ててもよい。生地フェッチ・ブロックが、この一次バッファーへのブロックの書き込みを完了すると、この画像ブロックは、後ラスター化装置427 に請求されると、生地ブロック・キャッシュ431 に転送される。後ラスター化装置427 が始めに一次バッファー中の生地ブロックを請求すると、ブロックは、生地ブロック・キャッシュ431 に転送される。
 この方法にはいくつか利点がある。先ず、生地データを、あまり特殊化されていないメモリーに保存しても、高度な生地濾過をサポートするのに十分な速度でアクセスすることができる。それに関連する重要な利点として、生地データは、圧縮フォーマットで保存することができ、かつ、ピクセル生成工程で使用の際に脱圧されるということである。
 この方法のもう一つの利点は、メモリーにたいする要求が予測できるために、メモリー・アクセスによる潜時を、場面を変換する各生地ブロックごとにただ一度だけしか生じさせないで済むということである。一旦、最初の生地ブロックが生地キャッシュの中に納められたならば、後ラスター化装置は、メモリー帯域幅があり、キャッシュの流れを保持するための生地フェッチ出力がある限り、最高速度で走ることができる。
 第9B図は、第10図に示した装置の実装をさらに詳細に図示したものである。第9B図のセットアップ・ブロック381 は、第10図のセットアップ・ブロック416 に相当する。第9A図のセットアップ・ブロック382 と違って、この別種実行例のセットアップ・ブロック381 は、生地読み取り請求を生成しない。代わりに、走査変換ブロック395 が、生地参照データを含むピクセル・データを生成する。このデータは、生地参照データ・キュー399 に貯えられる。
 第9B図の走査変換ブロック395 は、第10図のラスター化装置のある特異な実行例である。このものは、Z 値、カバー・マスク、色・透過性データ、および、生地座標で表わした生地請求中心を計算する。いくつかの生地マッピング作業では、このブロックは、さらにレベル・ディテール・データや、異方性フィルター・データも計算する。生地フィルター・エンジン401 は、生地請求と、恐らく生地参照データ・キュー399 に保存されている生地フィルター・データを読み取り、生地キャッシュの中の適当な生地サンプルにアクセスする。この生地データから、生地フィルター・エンジンは、生地がどの程度、ピクセル色・アルファー値に関与するかを計算する。生地フィルター・エンジンは、生地参照データ・キュー399 の中の色とアルファーを、生地の関与度と結合し、ピクセル値を生成し、これをピクセル・エンジン406 に送る。
 生地キャッシュ・コントロール391 、生地読み取りキュー393 、および、メモリー・コントロール380 は、第10図の生地ブロック・フェッチ420 の特異な実行例である。さらに、圧縮生地ブロックにたいしては、圧縮キャッシュ416 と脱圧エンジン404 が、生地ブロック・フェッチ420 の一部となる。
 第9C図は、第11図に示した装置のさらに詳細な実装を示す。この実行例では、第11図のブロック425 と426 に関連して記載された機能は、セットアップ・ブロック383 内部に実装される。特に、セットアップ・ブロック383 は、前ラスター化装置426 を含む。セットアップ・ブロック383 はさらに、付加的基本図形を含む付加頂点コントロール・レジスター381 をも含む。そのために、前ラスター化装置は、基本図形を速やかに変換し、生地データ請求を発することができる。セットアップ・エンジンと前ラスター化装置383 は、生地ブロックにたいする請求を、第9C図に示した生地キャッシュ・コントロール391 に送る。
 生地キャッシュ・コントロール391 は、請求された生地ブロックが、必要な時には、生地キャッシュ402 に入っていることを確かめる。生地読み取りキュー・バッファーは、生地データ・ブロックにたいする請求を読み取り、共有メモリー装置に送る。コマンドおよびメモリー・コントロール380 は、共有メモリーへのアクセスを判定するが、さらに、メモリーからのデータを蓄えるためのバッファーをも含む。生地キャッシュ・コントロール391 、生地読み取りキュー393 、および、コマンドおよびメモリー・コントロール390 は、第11図の生地ブロック・フェッチ429 の特異な実行例である。圧縮生地ブロックにたいしては、圧縮キャッシュ416 と脱圧エンジン404 が、生地ブロック・フェッチ429 の一部となる。生地キャッシュ・コントロール391 は、脱圧エンジン404 を介して、圧縮キャッシュ416 から生地キャッシュ402 へと向かう生地ブロックの流れを管理する。
 走査変換ブロック397 と、生地フィルター・エンジン403 は、第11図の後ラスター化装置の特異な実行例である。走査変換ブロック397 と生地フィルター・エンジン403 は、前述の、第9A図に示した同類と同じように動作する。
テクスチャキャッシュ制御
 待ち時間を短縮した環境においてラスター化を行い、テクスチャ取り込み操作をおこなう2つの方法を上記に説明した。次にテクスチャキャッシュ制御の特徴を詳細に説明する。
 テクスチャキャッシュ制御方式では、ラスタライザはテクスチャマップ取り込み制御の待ち時間が短いにも関わらずテクスチャマッピング中に最高速度で機能することができる。タイラーにおいて、この待ち時間は、共有メモリ( 例えばRAMBUS) からの未圧縮データを読み込むのに要する時間と、テクスチャマップのブロックを復元するのに要する時間を加算したものである。共有メモリからgスプライトブロックを取り込み、可能であればこれを復元し、さらにgスプライト空間のピクセルデータを表示空間( 具体的には画面座標) に変換するgスプライトエンジンに応用される。
 テクスチャキャッシュ制御方式は、時間内にオフセットされるテクセル( またはgスプライトピクセル) 要求の同一のストリームを2つ作成することを基本的に前提としている。最初の( 早いほうの) ストリームは何れのテクスチャデータも戻されることのない事前取り込み要求で、また第2の( 遅いほう) ストリームはテクセルデータを戻すための実際の要求である。この2つのストリームの時間差を利用することにより、テクスチャデータの読み込みや復元の際の待ち時間が表面に表れなくなる。
 上記の時間分割要求を発生させる2つの方法は、( 1) ともに単一のプリミティブFIFO( 図11及び9C) からデータを読み出す一対のラスタライザと、(2)ピクセルFIFO( 図10及び9B) がその後に続く単一のラスタライザである。
 (1) の方法では、第1のラスタライザはプリミティブFIFOの入力側またはその近辺の位置からプリミティブを読みとってプリミティブのラスター化を行うので、テクスチャ要求を作成することができるが、テクセルを受信したりピクセルを作成することはない。第2のラスタライザはFIFO出力からプリミティブを取り除いて後で同一の要求を作成し、テクスチャキャッシュコントローラからテクセルを受信し、ピクセルを作成する。各プリミティブ当たりのピクセル数と組合わさったプリミティブキューの長さにより、2つの要求ストリームの潜在的時間差が決まる。
 (2) の方法では、単一のラスタライザがプリミティブの処理を行ってテクスチャ要求を作成し、部分的に完全なピクセルデータをピクセルFIFOに出力する。この一部のピクセルデータには、一旦テクスチャ要求が受諾された後でピクセルの計算を完了させるのに必要なデータすべてが含まれる。ピクセルFIFOの出力側には、部分ピクセルが全てあり、これを元に同一のテクスチャ要求のストリームが作成され、テクセルを受信し、完全ピクセルを作成する。ピクセルキューの長さにより、2つの要求ストリームの潜在的時間差が決まる。
テクスチャキャッシュ制御
 テクスチャキャッシュ制御には、仮想キャッシュと物理的キャッシュの2つの概念キャッシュがある。仮想キャッシュは最初の( 事前取り込み) 要求ストリームに関連しており、キャッシュエントリに直接伴うデータは有していない( このキャッシュへの要求によりデータが戻ることはない) 。物理的キャッシュは第2の( 実際の) 要求ストリームに関連しており、各キャッシュエントリに伴う実際のテクスチャデータを有している( 従ってデータは要求元に戻る) 。これらのキャッシュのエントリ数は同一である。
 仮想キャッシュは物理的キャッシュの後の内容の制御と追跡を行う。従って、その要求ストリームの何れの位置でも、物理的キャッシュが( 後に) その要求ストリームの中の同じ相対位置で有するのと同じ一対のキャッシュキーとエントリを有している。
 要求を受けると( 新規の「キー」) 、仮想キャッシュがその現在のキーの集合に対して比較を行う。要求されたキーが仮想キャッシュになければ、キャッシュ置換操作が行われる。仮想キャッシュ置換操作では、1)(LRU またはその他のアルゴリズムによって) 置換するエントリを選択し、2) そのエントリに対するキーを置換し、3)(メモリと) 復元システムを起動してそのキーに関連するデータの取り込みと復元を行う。図9B及び9Cに示す特定の方法では、復元サブシステムはコマンド及びメモリコントロール38 0、圧縮キャッシュ416、復元エンジン404から構成される。
 復元サブシステムの出力は、後に物理的キャッシュのエントリ( 例えばテクスチャキャッシュ402) の内容となるテクスチャデータのブロックである。図9B及びCに示すタイラーにおいて、復元サブシステムが行う処理は順序が保たれているマルチエントリパイプラインで実行される。
 ちなみに要求されたキーがすでに仮想キャッシュに存在していた場合、関連データは第2の要求ストリームから要求があった時には物理的キャッシュに存在しているので何も実行されない。
 物理的キャッシュに要求があると、同様のキーの比較を行って要求されたデータがすでにキャッシュに存在しているか確認する。同一のキーが見つかると、関連データが戻される。同一のキーがない場合は、復元サブシステムが出力する次のデータが確実に所望のデータとなる。なお、この新規データに置換される物理的キャッシュは、仮想キャッシュコントローラで計算されたキャッシュエントリの「目標」インデックスに基づき仮想キャッシュから命令を受け、要求されたデータと共に復元サブシステムを通過する。
 この方式を適切に機能させるには、復元サブシステムと物理的キャッシュとの間のインタフェースに対してフロー制御を行う必要がある。復元されたデータをすぐに物理的キャッシュの中の目的のエントリーに上書きすることが可能な場合、そのキャッシュエントリの以前の内容に関連するもの全てが完全にそろっていないことが考えられる。( ちなみに、物理的キャッシュコントローラも復元サブシステムがデータを出力するまで待機しなければならない。)
 前のエントリの内容を上書きする前に新しいエントリが要求されるまで待機することによって、このフロー制御は行われる。テクスチャキャッシュへの新規データ書き込みは、それが必要となる最後の瞬間まで常に延期される。
 この置換は必要となるときまで延期されるので、物理的キャッシュへのデータ書き込みに要する時間により、待ち時間は第2の要求ストリームを制御する処理に加算される。この待ち時間を減小させる2つの方法は次の通りである。
 最初の方法では、物理的キャッシュのバッファデータを2倍にする。これにより、復元サブシステムはその倍増バッファ側に各エントリのデータを即座に書き込み、また物理的キャッシュコントローラはバッファスワップ( おそらく高速)を行ってデータをそのキャッシュ側にマップさせることが可能になる。書き込まれるエントリに空きがなく、まだスワップされていない場合は、復元サブシステムは待機するのみである。ちなみに、仮想キャッシュコントローラが使用するキャッシュ置換アルゴリズムは同じエントリに繰り返し書き込みを行う傾向があるので、キャッシュエントリへの書き込みを「広げる」必要がある。
 第2の方法では、複数の「書き込み済み」エントリの他に1つまたは複数の「追加」エントリを物理的キャッシュに設ける。書き込み済みエントリの数は、存在するキャッシュキーの数と同じであり、仮想キャッシュのエントリ数と一致する。追加エントリの数は、アンマップされた( すなわち現在データの書き込まれていない) エントリの数を表している。このようなエントリの総数は、物理的キャッシュのデータエントリの総数となる。 第2の方法では、キャッシュエントリは全て( キーに関連して) 何度もアンマップまたはマップされる。アンマップされたエントリの集合は、復元サブシステムがデータの完全ブロックを書き込むエントリのFIFOを形成している。分離FIFO構造は、このようなアンマップされたエントリに関連する目標インデックスのために維持される。物理的キャッシュへの要求があったが一致するキーがない場合は、アンマップされたエントリのキューの最初のエントリが目標となるインデックスにマップされてそのキーに対応させられる。置換されたエントリはアンマップされ、アンマップ状態のキューの最後に配置される( 空) 。
キャッシュキー生成
 この方式は同一の要求ストリームが2つ生成されることを基本的に前提としている。しかしながら、このような要求に対応する特定のキーは同一である必要はない。
 最初の( 早いほうの) 要求ストリームを形成するキャッシュキーは、テクスチャデータの読み出しとその後の復元を制御するのに使用される。このようなキーは、要求されたデータ( メモリアドレス等) に直接関連していなければならない。
 第二の( 遅いほうの) 要求ストリームを形成するキャッシュキーは、最初のストリームの内容と正確に一致する必要はない。両者の間に他と異なる1対1のマッピング関係が成立していることのみ必要となる。これは第2のストリームのキーが既存のキャッシュエントリのマッチングのためだけに使用され、データ取り込み操作には使用されないためである。ここにおいては、新しいデータが物理的キャッシュにマップされたときに物理的キャッシュのキーとキャッシュエントリの間の関係が成立し、また対応するエントリのインデックスが仮想キャッシュによって計算されて復元サブシステムを通過するということが重要である。
 このことは、ストリームのキーが他と異なっていさえすれば「正確」である必要はないため、第2の要求ストリームキーを生成する処理の制御を簡素化するのに利用できる。
 図12Aは画像処理ボード174上のgスプライトエンジン436を示すブロック図である。gスプライトエンジン436は収集したgスプライトから出力されるグラフィックスを生成する。gスプライトエンジン436はタイラーメモリインタフェースユニットとのインタフェースを確立して、共有メモリの中のgスプライトデータ構造にアクセスする。gスプライトはgスプライトエンジンによって変換され( 回転、縮小拡大など) 、合成バッファに送られて他のgスプライトから成るピクセルと合成される。
 インタフェースコントロール438 は、タイラーを介してgスプライトエンジンと共有メモリとの間にインタフェースを確立するのに使用される。このブロックはFIFOを有しており、メモリからのアクセスがgスプライトエンジンで分散される前にバッファする。
 ディスプレイコントロール440はプロセッサは映像表示の更新制御に使用される。これは、映像表示のリフレッシュを制御し、またgスプライトアクセスを制御するのに必要なタイミング信号を生成する映像タイミングジェネレータを有している。また、このブロックはgスプライト表示データ構造をトラバースして、所定の32走査線帯に対して読み出す必要のあるgスプライトを決定する。
 gスプライトヘッダ442レジスタは、画像プロセッサアドレスジェネレータ454とgスプライトフィルタエンジン456が使用するGスプライトヘッダーを保存して、各gスプライトでの変換を決定する。またgスプライトヘッダデコーダ444もこのレジスタを使用して、各帯域でgスプライトを与えるに必要なブロック(この場合、8x8圧縮ブロック)を決定する。
 gスプライトヘッダデコーダ444は、各gスプライトからのブロックが32走査線帯で可視状態になるブロックを決定し、gスプライト読み出しキュー446に転送されるブロック読み出し要求を発生させる。このぶろっくも、gスプライトエッジ等式パラメータを使用してgスプライトを現在の帯域にクリツップする。この処理を以下に詳しく説明する。
 gスプライト読み出しキュー446はgスプライトブロックの読み出し要求をバッファする。本実施例では、このキューは16個のブロックの要求を記憶している。
 gスプライトデータアドレスジェネレータは要求されたgスプライトブロックのメモリのアドレスを決定し、gスプライト読み出し要求をインタフェース制御ブロックに送信する。gスプライトデータアドレスジェネレータ448はメモリ管理ユニットを有している。
 共有メモリ216(図4A)から検索した圧縮データは、圧縮キャッシュ458に一時的に保存できる。
 復元エンジン450には2つのデコンプレッサを備えており、一方は3次元のgスプライトや画像等の連続したトーンの画像に対してDCTに基づいたアルゴリズムを実行し、他方はデスクトップピクセルデータに対してロスのないアルゴリズムを実行する。DCTに基いたアルゴリズムは2つの平行圧縮ブロックが実行し、両ブロックとも各クロック周期ごとに8個のピクセル要素(すなわち2ピクセル)を生成することができる。
 gスプライトキャッシュ452は、8x8の16ブロックに対して復元されたgスプライトデータ(RGB∝)を保存する。データは16個のgスプライトピクセルが各クロック周期ごとにアクセスされるよう構成される。
 画像プロセッサアドレスジェネレータ454は、特定の疑似変換に基づいて各gスプライトをスキャンし、また各ピクセルのフィルタパラメータを計算するのに使用される。gスプライトキャッシュアドレスはgスプライトキャッシュ452のgスプライトデータにアクセスし、それをgスプライトフィルタエンジン456に送るために生成される。画像プロセッサアドレスジェネレータ454も合成バッファを制御する。
 gスプライトフィルタエンジン456は、フィルタパラメータに基づいてピクセル位置のピクセルのカラーとアルファを計算する。このデータは合成バッファに転送されて合成される。このブロック456は、ピクセル位置でのgスプライト s-t座標に基づいて4または16ピクセルフィルタ核を計算する。例えば、フィルタは双線形またはさらに優れた余弦の和の関数でよい。16ピクセルフィルタ核は、双線形補間法よりも細かなフィルタリングが可能な負ローブを有することができる。gスプライトフィルタエンジン456はクロック周期ごとに合成される4つの新しいピクセルを生成する。これらのピクセルは2x2パターンで配列される。
 gスプライトエンジン436はタイラー200と合成バッファ210とのインタフェースを確立する。制御信号は映像タイミングとDAC 212へのデータ転送を制御する。
 図12Bはgスプライトエンジン437の他の構成を示すブロック図である。これには、プリラスタライザ449とラスタライザ454の両者が含まれているので、gスプライトエンジンはgスプライトピクセルデータブロックの検索や復元で待ち時間を生じさせることなくgスプライト空間からのピクセルデータを画面空間に変換することができる。この構成で2つのラスタライザを用いる方法は図11及び9Cを参照して上記に説明したとおりである。
 gスプライトエンジン437におけるブロックの操作は、2つのラスタライザを使用してテクスチャデータのブロックを取り込む方法を採用している点以外は、図12Aで説明したものとほぼ同じである。この構成( 図12B) では、gスプライトヘッダデコーダ444がgスプライトヘッダレジスタ442を読み出し、gスプライトを現在の表示帯にクリップし、さらにgスプライトキュー447にgスプライトを移してラスター化を行う。データアドレスジェネレータまたは「プリラスタライザ」449はgスプライトヘッダの所定の疑似変換に基づいて各gスプライトをスキャンし、gスプライトキャッシュコントロール451に対して読み出し要求を発する。テクスチャキャッシュコントロールに関連して上記に説明した方法を用いれば、gスプライトキャッシュコントロール451によって必要なgスプライトデータブロックはgスプライトエンジン437に、また特に画像プロセッサブロックが必要とするときはgスプライトキャッシュ452に確実に存在するようになる。このコントロールは復元エンジン450を介しての圧縮キャッシュ458 からgスプライトキャッシュ452へのgスプライトデータブロックの流れを管理する。読み出しキュー453は共有メモリシステムへのgスプライトデータブロックの要求をバッファする。またインタフェースコントロール438 は読み出しキュー453の要求を読み出し、共有メモリへのアクセスを制御し、gスプライトデータブロックを圧縮キャッシュに入れる。
 gスプライトエンジンの復元サブシステムは圧縮キャッシュ458 と復元エンジン450を有している。キャッシュコントロール451は、テクスチャキャッシュコントロールに関連して上記に説明したこの復元サブシステムを介してgスプライトブロックの流れを制御する。
 画像プロセッサアドレスジェネレータ( ラスタライザ) 454はgスプライトヘッダの所定の疑似変換に基づいて各gスプライトをスキャンし、各ピクセルのフィルタパラメータを計算する。また、gスプライトデータのgスプライトキャッシュアドレスも生成し、これをgスプライトフィルタエンジン456で使用できるようにgスプライトキャッシュのキャッシュアドレスマップへ送る。キャッシュ構成の一例では、キャッシュアドレスマップはアクティブとなる14ピクセルブロックと復元エンジンから書き込みされる2つのブロックを選択する。
 gスプライトフィルタエンジン456はgスプライト空間のピクセル位置にあるカラー及びアルファデータを画面空間にマップする。この方法では、2x2または4x4のフィルタ核を用いて、画面空間のピクセル位置にあるピクセル値(カラーまたはカラーとアルファの両者) を計算する。合成バッファコントロール457はピクセル値、この場合は1クロック周期当たり4ピクセルを合成バッファに送る。合成バッファコントロール457は合成バッファからのレディラインを監視し、gスプライトエンジン437が合成バッファをオーバーランさせないようにする。ラスタライザ454は合成バッファコントロール457を制御する。
 図13は画像処理ボード174の合成バッファ48 0を示すブロック図である。合成バッファ48 0は、gスプライトエンジンからのgスプライトデータを合成してDAC 212へ転送するデジタルビデオデータを生成するのに使用する専用メモリ機器である。合成バッファは一度に32本の走査線で動作する。1つの32走査線帯でgスプライトを合成する間に、前の32本の走査線が表示される。
 合成ロジック48 2は走査線バッファに書き込むピクセル値を計算する。これは、現在走査線バッファに保存されているピクセル値と合成バッファに書き込まれているピクセル値とを混合させることで実行される。この操作は以下に詳しく説明する。一構成例では、合成ロジックが各クロック周期ごとに4つの平行ピクセル操作を実行する。
 メモリコントロール48 4はアドレスの制御とメモリバンクのサイクリングに使用される。アドレス情報は、通常のDRAMを使用するときのように行と列のフォーマットで送られる。
 アルファバッファ48 6は1344x32ピクセルのそれぞれに対して8ビットの数値を有している。メモリは、連続する4つのピクセルが各クロック周期ごとに読み出しまたは書き込みされるように構成されている。アルファバッファは、32走査線帯の切り替えの間にバッファを迅速にクリアする高速クリア機構も有している。
 2つの独立した走査線バッファ488が使用される。走査線バッファは1344x32ピクセルのそれぞれに対して3種類の8ビットカラー値を有している。メモリは、連続する4つのピクセルが各クロック周期ごとに読み出しまたは書き込みされるように構成されている。一方のバッファは帯域のピクセルデータをDACに転送するのに使用し、他方は次の帯域のピクセルを合成するのに使用する。帯域が一旦終了すると、その機能はスワップされる。
 マルチプレクサは2つの走査線バッファ488のうちの何れかからのデータを選択し、ピクセル表示データをDAC に送信する。マルチプレクサは32本の走査線ごとにバッファの切り替えを行う。
 合成バッファ48 0はgスプライトエンジン204とのインタフェースを確立し、画像データをDAC 212へ転送する。
 図14は画像処理ボード174上のDAC 514を示すブロック図である。DAC514は、現在市場に一般的に出回っているRAMDACに共通する基本機能を実行する。DAC は内部制御レジスタの読み書きを行ったり、映像制御信号を次々と送信するロジックを有している。その他の機能ブロックについては、以下に説明する。
 ピクセルデータルーチングブロック516は合成バッファからのピクセルデータのルーチングを制御する。通常の操作モードでは、このデータはピクセル速度で3つのチャネルのそれぞれのColor LUT 518 に送られる。このブロックもDSP からデータを再び読み出して診断することが可能である。
 ステレオ画像スプリッタ520は、ヘッド装備ディスプレイシステムを用いて立体表示される2つの映像信号を支援する。このモードでは、2つの映像チャネル( 522,524) が合成バッファから交互配置されており、DAC 514によって分割されなければならない。ステレオ画像スプリッタ520はDAC 514でこの機能を実行する。通常の単一チャネルモードでは、LUT データが第1DAC に直接送られる。
 その他、単一の映像出力を生成するようDAC 514を構成することも可能である。DAC は、単一の映像出力と共に、ライン交互配置フォーマットを使用して立体表示を作成することが可能である。この場合、一方の目に対する走査線に他方の目に対する走査線が続く。結果として生成された映像ストリームは640x960等のフォーマットを有しており、例えばこれは640x480の画像を表している。
 クロックジェネレータ526はビデオクロックとオーディオクロックを生成する。これらのクロックは2つの位相固定クロックジェネレータによって生成され、同期ずれを除去する。クロックジェネレータもMedia Channel からの制御信号に従い、画像処理ボードを外部同期ソースに同期させることが可能である。
 画像処理システムの構造と操作を上記に説明したが、次にシステムの構成部分と特徴について詳細に説明する。まず、上記に説明した概念を実行するためにシステムで使用されるデータ構造を説明する。
チャンキング
 RAM に大容量のフレームバッファとZ-バッファを使用してカラー、深さ、各ピクセルのその他の情報を記憶する従来のグラフィックシステムとは異なり、このシステムはある1画面の中の対象を「チャンク」と呼ばれる画像領域に分割し、対象の配列をこのようなチャンクに別個に配置する。実施例において、対象はgスプライトで表示される。gスプライトはチャンクに下位分割され、チャンクは別個に表示される。この説明は幾つかの特定の実施例について言及しているが、チャンキングは本発明の範囲から逸脱せずに様々に応用することができる。
 チャンキングの概念を、図例を挙げて説明する。図15Aに示すように、境界ボックス548 と呼ばれるボックスで囲まれているグラフィック画面の対象546は、gスプライト552という画像領域に表示される。境界ボックスを回転、拡大縮小、拡張、その他変換( 例えば疑似変換) して、画面領域にgスプライトを作成してもよい。境界ボックスが一度作成され、境界ボックスが32ピクセル境界( すなわちチャンク境界) 554に収まらないのであれば、境界ボックスを対象の周囲でXおよびY方向に拡張して32ピクセルチャンクサイズの整数倍になるようにする。図15Bの対象550から分かるように、図15Aに示す対象546を囲む境界ボックスは図15Bの32x32ピクセル境界に拡張される。gスプライトは再現される前に32x32ピクセル「チャンク」556に分割される。しかし、チャンクサイズはこれよりも小さいまたは大きいものを用いることもできるし、また他の形状のチャンクも使用できる。しかし、矩形、より好ましくは四角形のチャンクを図示する。
 図15Cに示すように、グラフィック画面58 1は重なり合った対象( 560,562) を複数有している。これらの対象は境界ボックスで囲まれており、gスプライト( 564,566) に割り当てられる。図15Cの境界ボックスは32ピクセル倍にすでに拡張(及び回転、縮小拡大、その他変換)されており、32x32チャンク568が生成される。しかし、図15Cから分かるように、gスプライトとそれに対応する32x32ピクセルチャンク境界570は32ピクセル画面境界に正確に配列されないので、チャンクを行っている間にさらにgスプライトを操作してgスプライトが画面空間に収まるようにしなければならない。
 再現されるgスプライトをチャンキングによって作成する一つの方法としては、それぞれの対象の配置を含む小さな個々のgスプライトを複数作成して再現するのではなく、複数の対象を組み合わせてより大きな合成gスプライトを作成する方法がある。gスプライトを組み合わせると再現の際の処理時間が短くなり、また組み合わせた対象がグラフィック画面の中で頻繁に変わらないのであればこの方法は非常に好ましい。gスプライトを作成する別の方法としては、複雑な配置の対象の構成部分を処理の対象とし、これらの複雑な配置の構成部分を複数のgスプライトに分割するというものがある。このように分割を行うと処理時間が長くなってしまうおそれがあるが、頻繁に変化する特定の複雑な対象の出力解像度を向上させることができる。対象によっては、これら技術を組み合わせて使用してもよい。
 例として、腕を様々なサイズの複数のスパイクで覆っているビデオゲームのキャラクターを挙げる。この場合、腕は頻繁に動くものとする。キャラクターの体、頭、その他の部分は頻繁には動かないので、これらは組み合わせてより大きな合成gスプライトを構成することができる。しかし、スパイクで覆われており、複雑な配置となり、また頻繁に動くキャラクターの腕は、出力解像度を向上させるために複数のgスプライトに分割される。この場合、組み合わせと分割の両方を用いる。このようなキャラクターを図示するのは容易ではなく、また実用的ではないので、より単純な対象である「コーヒーカップ」を用いて組み合わせと分割を図示する。
 図16Aは「コーヒーカップ」を表している。この「コーヒーカップ」は実質的に複数の別個の対象から構成されている。例えば、「コーヒーカップ」は実際にカップ容器と、カップ取っ手と、ソーサーと、カップから立ち上る湯気とで構成されているように見える。図16Aに示すように、一つの方法は個々の対象を組み合わせてより大きなgスプライト( すなわち、「コーヒーカップ」) にするものである。もう一つの方法は、図16Bに示すように、「コーヒーカップ」を複数の小さな対象( 例えばカップ容器、カップ取っ手、ソーサー、湯気) に分割してそれぞれ小さなgスプライトを作るものである。また図16Bは複雑な配置の対象を分割する方法も示している。
 図16Aに示すように「コーヒーカップ」574を一つの単純な対象とすると、対象の各構成部分( 例えばカップ容器、カップ取っ手、ソーサー、湯気) を組み合わせて一つの大きなgスプライトを作成することができる。この場合、境界ボックス576で対象の周辺を囲み、対象を画面空間に変換して一つの大きなgスプライトを作成する。画面空間の32x32ピクセル境界内に収まるgスプライトを作成するために、境界ボックスを回転、拡大縮小、拡張、その他の変換させてもよい。その後、gスプライトは複数の32x32ピクセルチャンク578に分割される。
 gスプライトをチャンクに分割する一つの方法は、対象に含まれる配列を全てつなぎ合わせてチャンクに配列を置くというものである。別の方法では、問題のチャンクを使用する配列全てを記録しているチャンクをつなぎ合わせる。図に示す実施例では後者の方法を使用しているが、前者やその他の方法も使用できる。図16Aから分かるように、複数のチャンクが空の状態になる( すなわち、何れの対象配列もチャンクを使用していない) 。後で説明するが、これらのチャンクは再現が行われている間は無視される。
 次に、「コーヒーカップ」を一つの複雑な対象とした場合、図16Bに示すように対象は処理されて複数の小さなgスプライトを作成するより小さな対象構成部分に分割される。例えば、対象の「コーヒーカップ」は、取っ手のないカップ容器579と、カップ取っ手580と、ソーサー581と、湯気582という下位対象から構成される。各下位対象はそれぞれ583−586に示すように境界ボックスで囲まれて、4つのgスプライトを形成する。4つのgスプライトを含む「コーヒーカップ」も、587で示すように境界ボックスで囲まれる。画面空間の32x32ピクセル境界に収まるgスプライトを作成するために、各境界ボックスを回転、縮小拡大、拡張、その他変換( 例えば、疑似変換) させてもよい。次に各gスプライトは32x32ピクセルチャンクに分割する。境界ボックス587もチャンクに分割させて、再現の際に無視される空のチャンク588を有するようにさせる。しかし、この境界ボックスのチャンクは図16Bに図示されていない。
 チャンキングにより、グラフィック画像は単一のフレームとして再現されることはないが、後にフレームまたは表示空間に統合される一連のチャンクとして再現される。現在描かれている画像の32x32ピクセルチャンクを交差する単一のgスプライト内の対象のみが再現される。チャンキングにより、フレーム及びZバッファはメモリの小さな物理的サイズとなって( すなわち、上記に説明した従来のグラフィックシステムよりもはるかに小さなメモリを使用する) 、使用されるメモリの使用頻度が上がり、メモリの帯域幅が増大する。また、チャンクサイズが小さいと、さらに高度な再現技術を使用することができる。このような高度な再現技術は、フレームとZバッファが大きいと効率的に応用することができない。
 チャンクの再現はタイラーで実行される。しかし、再現は他のハードウェア構成要素上、またはソフトウェアを使用しても実行できる。タイラーチップのVLSIメモリは、現在再現されているフレームの( 32x32ピクセル) 小さなチャンクを保存するのに使用される。オンチップVLSIメモリは、外部RAMよりも非常に高速でメモリ帯域幅も広い。しかし、チャンキング処理が行われるために、フレームバッファ及びZバッファ全体を保存する大量のメモリは不要になる。タイラー内の内部メモリは現在のチャンクの処理のみを行い、それに続く各チャンクを処理するために繰り返し使用される。そのため、使用可能な内部メモリはグラフィック再現中に頻繁に使用される。
 また、内部VSLIメモリを使用すると、オフチップ通信や、従来のフレーム及びZバッファに必要な大容量外部メモリに対する読み出しや書き込み操作によるオーバーヘッドが原因で通常発生するピンドライバ遅延を除去することができる。また、図に示す本実施例では次のチャンクが計算される前に32x32ピクセルチャンク全体が完全に再現されるので、チャンクサイズが小さいと、外部メモリの大部分に保存されるフレーム及びZバッファ全体よりもチャンクでのほうがより高度な非偽信号( 例えばフラグメントバッファ) 及びテクスチャリング方法を実行することができる。さらにチャンクサイズが小さい場合、後で詳細に説明する画像圧縮技術を使用する際に便利である。
 交差するポリゴンを全てチャンク及び変換したフラグメントに書き込んだ後、カラーや不透明度を含むピクセルデータはタイラーチップに圧縮されて、外部メモリに転送される。
 図17A及び17Bはグラフィック画面のチャンクへの分割方法のあらましを詳細に示している。まず、1つ以上の境界ボックスが各対象に対して作成される。( 592)(図17A) 。対象の配列が複雑な場合( 例えば細かい碁盤目状になっているなど)(594) 、複数の境界ボックスが作成されて( 複数のgスプライトを作成するために) 対象の複雑な各構成部分を囲む( 596) 。対象の配列が複雑でない場合は、単一の境界ボックスを使用して対象を囲み、gスプライトを作成することができる( 598) しかし、対象が複雑であると、単一の境界ボックスが、対象の複雑な構成部分を囲むための複数の境界ボックスも囲んでしまう。単一または複数の境界ボックスが32ピクセルの整数倍でないならば( 600) 、このような境界ボックスを32ピクセルの整数倍になるようXまたはY方向( または両方向) に対称に拡張する。次に、対象( 配列が複雑なときは対象構成部分)を境界ボックスの中でセンタリングする( 602) 。これを図15B及び15Cのgスプライトで示す。拡張は対称に行うのが好ましいが、必ずしもそうする必要はない。拡張が対称であると、単一のgスプライトの中のチャンク間の処理のバランスが良くなる。
 再び図17において、gスプライトは32x32ピクセルチャンクに分割される( 604)(図17B) 。明らかなように、チャンクは表示空間の固定位置にあるのではなく、チャンクされた対象の位置によってはアドレス呼び出しが可能な可変位置に置かれる。gスプライトをチャンクに分割した後、チャンクの処理を行う。チャンクの再現が完了すると( 606) 、処理は終了する。チャンクの再現が完了しない場合、まず次のチャンクが空なのか確認した後このチャンクの処理を始める( 608) 。チャンクが空の場合、処理は行われず、次のチャンクの確認が行われる。チャンクが空でない場合は、チャンクを使用している対象全てが処理されるまでチャンクの再現( 610) をタイラーで続ける。この処理は、各gスプライトの全チャンクと全gスプライトの処理が完了するまで続けられる。
 gスプライトのサイズは画面の総領域のパーセンテージで表される。背景のgスプライトは非常に大きいが、通常画面の他の構成部分は画面の総領域よりも小さい。チャンキングの性能はgスプライトのプリミティブの画面空間サイズによって変わる。そのため、gスプライトの作成に使用する対象データ入力ストリームを適切に調整( 例えば待ち行列に入れる) する必要がある。対象データ入力ストリームを適切に調整すると、対象の処理をより高い帯域幅で実行することができ、またシステムのスループットも上昇する。
 このシステムはコマンドストリームキャッシュを使って対象データ入力ストリームをキャッシュしている。コマンドストリームキャッシュを使用してgスプライトの全内容をキャッシュし、また全てのチャンクとそれに対応するキャッシュに保存されているgスプライトの配列を繰り返し使用することができる。
 またキャッシュは選択キャッシングにも使用できる。例えば、配列プリミティブが所定数のチャンクを使用するときに、これらのプリミティブが自動的にキャッシュされるよう閾値を決める場合である。キャッシュの使用が可能であれば、仮想チャンキングを行うことができる。仮想チャンキングでは、それぞれが仮想チャンクであるN x M チャンクの領域に相当するチャンクバケットを作成する。仮想チャンキングにより、内容と配列サイズに合った仮想チャンクの適応サイズ設定を行うことができる。
 キャッシュは修正画面グラフキャッシングにも使用できる。画面の静止部分をキャッシングして参照するのではなく、キャッシングを行って間接手段を通じて画面の動的部分を参照する。例えば、やや配列の複雑なカッコウ時計を含むgスプライトについて考えてみる。時計そのものは非常に複雑であるが、唯一動く部分は鳥、2つのドア、2本の針である。さらに、各配列は固定されており変化することはない。従って、時計を再現すると、6本の木は静止状態で、また6つの部分が変換される( すなわち、時計、鳥、2つのドア、2本の針) 。キャッシュの容量が十分大きければ、画面グラフ全体をコマンドストリームに変換する。再現の際には、現在の変換部分はキャッシュされたコマンドストリーム上にパッチされ、その後コマンドストリームはgスプライトの全チャンクに対して発せられる。コマンドストリームのパッチ部分のサイズは再現しても変わらない。さらに順応性のある方法としては、キャッシュした静止画面グラフに呼び出しコマンドを挿入するというものがある。再現の際は、動的部分が可変サイズのメモリに書き込まれ、キャッシュされる。このような動的部分のアドレスは、静止コマンドストリームの対応する呼び出しコマンドにパッチされる。この方法は、動的コマンドのサイズを各再現ごとに変えることができるため、順応性に優れている。従って、この場合はメモリにキャッシュされたコールバック方法が効果的である。カッコウ時計の例では、6つの変換部分を書き込んで場合によっては鳥の配列をコールバックするので、ドアが閉じている場合に鳥部分は空になる。この方法は、バス帯域幅に対しては非常にコンパクトで、画面グラフを迅速に指定方向に移動することが可能になる。
 キャッシュメモリに制限があっても、配列や属性によっては何度再現してもキャッシュされた状態を保つことが可能なものもある。例えば、カーレーシングゲームの場合、車体配列をキャッシュすると、全体的に時間を大幅に節約することができる。同様に、一般の属性状態( または下位状態) は複数のgスプライトまたは単一のgスプライトを再現する際に何度も利用される。上記に述べたように、チャンキングでキャッシュを使用すると、時間が大幅に節約される。しかし、gスプライトの各使用チャンクに対してコマンドストリームを迅速に作成することにより、コマンドストリームキャッシュなしで適切なチャンキング性能を実現することができる。
 図9A〜9Cに示すタイラー手段では、複数のチャンクを平行プロセッサで同時に使用して計算ロードを共有するのではなく、チャンクを順次使用して1つのプロセッサ上でフレーム全体を再現する。あまり好ましくはないが、チャンクの逐次または並行処理を組み合わせて行うことも可能である。チャンクを完全平行処理する場合、画面上を移動する対象に対してはそれが移動したときに固定チャンキング操作を行うことが必要になる。しかし図に示す本発明の実施例においては、チャンクを逐次処理しているので、対象はgスプライトのチャンク境界に固定される。従って対象が画面上を移動してもチャンキングを行う必要はない。またチャンクを平行処理再現しても、チャンクの逐次再現する場合のように、高度な非偽信号及びテクスチャリング方法を各チャンクに応用することはできない。32x32ピクセルチャンク全体は次のチャンクが計算される前に再現されて即座に圧縮されるので、チャンクサイズと順次再現は画像圧縮技術にとって非常に重要である。
 画像の圧縮は、少ないデータで画像を表示し、保存コスト及びまたは送信時間とコストを減らすために行う。適切な方法で画像を再構成できる場合、画像表示に必要なデータが少ないほどコストをより下げることができる。また、元の画像を正確に再生するのではなく、元の画像に近づけることでさらに効果的な圧縮を行うことができる。圧縮量が多くなると、最終画像も一層元の画像に近づく( 「損失の多い圧縮」) 。
 チャンキングの処理そのものは圧縮技術である。対象は複数の32x32ピクセルチャンクから作成される1つ以上のgスプライトを使って元の画像に接近させられる。実際の対象はgスプライトを使って元の画像に近づけ、再現されたgスプライトから再構成される。元の対象の再構成は、対象をgスプライトに分割してチャンキングすることでどれほど効果的に元の画像に近づけたかによって変わる( 例えば、上記の複雑な対象配列分割技術) 。
 各32x32チャンクも画像圧縮技術を使って圧縮される。圧縮された32x32ピクセルチャンクは、使用可能な内部メモリの小さな領域の中であまり多くのスペースを占領することはない。32x32ピクセルチャンクは、離散形余弦変換( DCT) を使用する画像圧縮技術で共通して使用されるサイズである16個の8x8ピクセルチャンクに分割される。
 ある方法では、タイラーの圧縮及び復元エンジン、及びgスプライトエンジンの復元エンジンは損失の多い圧縮/復元形式と損失の少ない圧縮/復元形式の両方をサポートしている。損失の多い形式には、RGBからYUVへの損失の少ないカラー変換、DCT、均一または知覚量子化、エントロピーコーディング( 実行長さ及びハフマンコーディング) がある。損失の少ない形式には、RGBからYUVへのカラー変換、予測段階、損失の多い形式でも実行されるエントロピーコーディングがある。
 メモリの必要性を大きく減らしてチャンキングによってグラフィック画像を処理するために、図示の実施例では小さなZバッファを使用している( 例えば4キロバイト( kb))。特に、この方法でのZバッファは4kbよりもわずかに小さいが、精度のビット数を変化させることが可能である。しかし、他の大きなサイズまたは小さなサイズのZバッファも使用できる。小さな4kbのZバッファを使用すると、1024ピクセルのみがZバッファで一度に再現される。4kbのZバッファを使用して任意サイズの画面( 例えばgスプライトで構成される画面)を再現するためには、所定サイズの32x32ピクセルのチャンクに分割される( 通常、1画面にはgスプライトが複数あるが、各gスプライトともチャンクに分割される。) この方法では、画像プリプロセッサが適切な配列をgスプライトの各チャンクに送ってZバッファで再現を行う。
 チャンクの機能の例として、図18Aに示す8個の対象とそれに対応する配列を挙げる。簡単に説明するために、8個の対象612〜619をA〜Dの4つの値のいずれかを有する単一の属性620( 例えばカラー) で定義する。図18Bに示すように、8個の対象はグラフィック画面で重なり合う。各gスプライトとその生成については無視し、図示の関係上、分離した4つのチャンクのみについて説明する。この分離した4つのチャンク621〜624を図18Bに示す。分離した4つのチャンクは、図19Aに示すように配列1〜8と属性A〜Dに接している。チャンク1630( 図19A) は配列1,2,5と属性Bに接しており、チャンク2639は属性AからDに接しているが何れの配列にも接していない。またチャンク3632は配列2,4,7,8と属性A,B,Dに、チャンク4634は配列4,6と属性A,Cに接している。( 図18B及び19Aに示すチャンクを使って) 画像の事前処理によって作成した部分画面グラフの例を図19Bに示す。各チャンクの属性( 例えばA〜D,Xで示すカラーなど) は円638で表し、また属性( 例えば1〜8で示す様々な形状など) は四角形640で表している。文字Xは属性のデフォルト値を示している。中間ノードは、プリミティブ配列に対して実行する属性演算を有している。画面グラフのリーフノードはチャンクに使用されるプリミティブ配列を有しており、またチャンクが描く配列を取り囲む境界ボリュームも有することがある( 境界ボリュームを有するリーフノードについては以下に説明する) 。
 チャンキングを行う一つの方法では、各チャンクを繰り返し使用して完全配列を毎回送信する。さらに最適な別な方法では、現在のチャンクで可視状態の配列のみを送信する( ちなみに、この最適な方法では不明瞭または目で確認できない配列は省いている) 。該システムで使用されている32x32ピクセルブロックのgスプライトをチャンクする実際の方法は、上記2つの極端な方法の中間に位置するものでバケットチャンキングと呼ばれている。しかし、これら2つの方法に含まれるあるいは中間に位置するような他の方法を用いて、チャンクを作成し、チャンキングを行うことも可能である。
 バケットチャンキングは2つのパスで構成される。まず第1のパスは画面グラフを移動させながら、現在の変換部分を表示空間に維持させ、最終的には各チャンクの記述コマンドストリームを表示空間に構築する。表示空間はNxMのチャンクバケットに分割され、このチャンクバケットは最終的にはそれぞれのチャンクに対応する配列のリストをそれぞれ有するようになる。配列プリミティブノードがあると、現在の変換が境界ボリュームに適用されて2Dの「フットプリント」が表示空間に生成される。足跡に接する各チャンクごとに、配列( 及び累積属性状態) が該当するバケットに付加される。この最初のパスの終了時には、各バケットとも該当するチャンクを再現するのに必要なデータを有しているはずである。ちなみに、このチャンキング方法は算出されたフットプリントの品質に左右され、対象の領域があまり正確でなければ生成されるフットプリントはより大きくなる。従って、周囲を囲まれた配列に接していないチャンクとなる。対象の領域が正確であると生成されるフットプリントは小さくなるので、ほとんどのチャンクが周囲を囲まれた配列に接することになる。
 第1のパスの例として、図19Aに示す配列1〜8、属性A〜D,Xによって描かれる互いに重なり合う対象を含む4つのチャンクの部分集合について考察する。パス1の中で画面グラフを移動させる一つの方法として、各チャンクの現在の状態を維持し、所定のチャンクに収まらない配列を省くというものがある。これにより、各チャンクのどの配列の属性内容も最新のものに更新される。図19Bの画面グラフでこの方法を用いると、パス1の後でチャンクバケットに以下のようなコマンドストリームができる。
 チャンク1バケット:X,A,B,1,2,5,A,X,C,D,C,X
 チャンク2バケット:X,A,B,A,X,C,D,C,X
 チャンク3バケット:X,A,B,2,7,8,A,4,X,D,3,C,X チャンク4バケット:X,A,B,A,4,X,C,6,D,C,X
 また、現在の属性状態を維持し、容認された各配列を送信する前にこの状態を送る方法もある。これにより、チャンクバケットに以下のコマンドストリームができる。 チャンク1バケット:B,1,B,2,B,5
 チャンク2バケット:<空き>
 チャンク3バケット:B,2,B,7,B,8,A,4,D,3
 チャンク4バケット:A,4,C,6
 第2の方法は第1の方法を改良したものである。ちなみに属性Bは配列2及び5の前に指定された第2及び3の不要な時間である。この動作は、配列7及び8のBに対するチャンク3でも行われる。実際には、現在の属性状態がどの属性も各配列に対して再指定されることを表しているので、状況はここに説明する以上に悪くなってしまう。つまり、テクスチャ変換マトリクスが全画面グラフに対して変化しなくても、全チャンクの各配列を送る前にマトリクスが送信されてしまう。
 従ってこの方法では属性を維持して、属性を優先させ、さらに属性を構成する。拡散カラーは優先属性である。画像グラフを作成する画像プリプロセッサ( 例えば、画像プリプロセッサ24等で実行される画像事前処理ソフトウェア) で定義されるように、赤( 青( 立方体))に使用される属性から赤の立方体ができる。これは、最も近い属性を対象に結びつける画像プリプロセッサグラフィックインタフェースとは対称的である。最も近い属性を赤( 青( 立体))の対象に結びつけると、青の立方体ができる。
 最も遠い属性を優先属性として使用すると、属性維持が非常に簡素化する。画面グラフの移動中に、属性ノードに遭遇すると、画面グラフの中のそのノードよりも下にあるその属性タイプのノード全てを無視することができる。これは最上位の属性が他よりも優先されるためである。
 局部変換は構成属性である。従って、現在の値は前の値と新しい値によって定義される。構成属性には、画面グラフが移動して前の数値を保存する際にある種のスタックが必要になる。
 バケットチャッキング方法では以下の構造を用いる:
・ 現在の値を有する属性ノード。
・ 移動コンテクスト。これは、各優先属性に対して現在の属性値を示すポインタを有する構造である。
・ それぞれコマンドストリームバッファと広域移動コンテクストとして同種のバケットコンテクスト構造を有するバケットのグリッド。
・ それぞれ移動コンテクストによって参照可能なデフォルト属性値のリスト。初期化するために、コンテクストはデフォルト状態になるので、属性は全てデフォルトコンテクストを表す。デフォルト値は、各チャンクに再現コマンドを送る前にひとまとめにダンプされるのではなく、ゆっくりとロードされる。
 Initialize Attribute Maintenance:
 for each attribute: attr
      for each bucket: bucket
          bucket.context(attr) ←nil // Clear context for eachbucket
      end
      context[attr]←default[attr] // Initialize to default values end
次に所定の属性ノードの処理方法を説明する。
Process Attribute:
if context[attr] ≠default[attr]
     ProcessGem() // Attr already set, ignore subsequent value.
else
     Context[attr]←SetAttr(attr,value) // Set to new value.
     ProcessGeom()
     Context[attr]←SetAttr(attr,default[attr])
endif
配列ノードを扱う処理により、現在の移動状態が各バケットの属性状態と同期する。
Process Geometry:
geomCommand ←ConvertGeometry(geom) // Convert to Command Stream.
for each touched bucket: bucket
    for each attribute: attr
        if (bucket.context(attr)≠context(attr)
            bucket.context(attr)←context(attr)
            append(bucket,context(attr))
        endif
    end
    append(bucket,geomCommand)
    end
 移動中にスタックを維持するいうことを除けば、構成属性は優先属性と同様の働きをする。これは、スタック値を保存するためのノードを使用することで可能となる。この方法には以下の構造が必要となる。
 ・以前の値と新しい値の組み合わせを有する現在の属性ノード。
 ・移動コンテクスト。これは、全ての構成属性のために、現在の属性ノードを示すポインタを有する構造である。
 ・それぞれ移動コンテクストによって参照されるデフォルト属性値のリスト。
 ・それぞれコマンドストリームバッファと広域移動コンテクストと同じタイプのバケットコンテクスト構造を有するバケットのグリッド。
構造属性の初期化は優先属性の初期化と同様と思われる。
Initialize Attribute Maintenance:
for each attribute: attr
     for each bucket: bucket
      bucket.context(attr)←nil // Clear context for each bucket
     end
     context[attr]←default[attr] // Initialize to default values
end
 構造属性の処理を行うと、移動範囲の中にある現在のノードよりも前に新しい値と全ての数値の組み合わせが作成される。ちなみに値のスタックを作成する場合は、以前の値を保存し復元する必要がある。
Process Attribute:
node.ComposedValue ←Compose(context[attr],node.Value)
SavePtr←context[attr] // Save previous composed value.
context[attr]←node
ProcessGeom()
context[attr]←SavePtr // Restore the previous composed value.
配列処理部は優先属性の場合と同じである。
Process Geometry
geomCommand←ConvertGeometry(geom) // Convert to Command Stream.
for each touched bucket: bucket
     for each attribute: attr
         if (bucket.context(attr) ≠context(attr)
             bucket.context(attr) ←context(attr)
             append(bucket,context(attr))
         endif
     end
     append(bucket,geomCommand)
     end
 バケットチャンキングの第2のパスは、バケットのグリッドを反復させて対応するコマンドストリームを発する。空でない全てのバケットについては、そのバケットに保存されている情報から該当するチャンクが再現される。ちなみに、画面の中に空のバケットがある場合もあり、これはgスプライトの全てのチャンクが再現されるわけではないことを意味している。活性の高いgスプライトは、透明な背景上の不透明な対象から構成され、多数のチャンクが空である必要がある。
 上記の属性状態を維持する方法は、チャンクした状態で配列を再現するのに特に適している。チャンクすることにより配列の集合が、最初に指定されたのとは異なる順序で再現される。例えば、チャンクの再現において、再現システムはチャンクと交差しない配列の集合を省く。従って、チャンクした配列の再現のレベルが低い状態では、多くても次の2つの状態レベルを維持するのがよい。1) タイラーまたは他の再現ハードウェアとの互換性があり配列の再現が可能なフォーマットでの広域状態、及び2)配列の集合にのみ適用されるその集合内の小域状態オーバーレイ。この方法では、配列の各集合は他の集合とは別に再現可能であり、また配列の集合の再現に副次的作用は生じない。
画像圧縮
 上記に述べたように、チャンクサイズと逐次再現は画像圧縮技術にとって重要な事である。それは、32x32ピクセルチャンク全体が、次のチャンクの計算が行われる前に完全に再現され、即座に圧縮することが可能なためである。タイラーは損失の多い圧縮形式と損失の少ない圧縮形式の両方をサポートして、チャンクの圧縮を行う。損失の多い圧縮形式及び損失の少ない圧縮形式は共に8x8ピクセルから成る独立ブロックのチャンクを圧縮するので、圧縮された各32x32ピクセルチャンクは16個の圧縮ブロックから構成されることになる。
 画像の圧縮を行うと、必要なメモリサイズが小さくなり、また必要なメモリ帯域幅も大幅に減少する。この設計ではキャッシングと、事前取り込み戦略と、チャンクとを組み合わせて利用することにより、圧縮とブロックアクセスで生じる待ち時間とオーバーヘッドを減少させている。画像全体は32x32ピクセルバッファで計算されるので、gスプライト画像圧縮は最小オーバーヘッドで行われる。圧縮アーキテクチュアの概念的レイアウトを図20に示す。
 変換エンジン660( 図20) はモデル及び表示変換、クリッピング、ライティング等を計算し、この情報をタイラー662に送信する。タイラーは変換情報を処理すると、テクスチャメモリ664からテクスチャデータを読み出す。テクスチャブロックが必要となるので、テクスチャデータは圧縮形式で保存されている。テクスチャブロックはタイラー復元エンジン666で復元され、タイラーのオンチップテクスチャキャッシュにキャッシュされる。タイラーはピクセルデータを解像すると、解像されたデータをタイラー圧縮エンジン668に送る。ここで解像されたデータは圧縮され、さらに圧縮されたデータはgスプライトメモリ670に保存される。gスプライトエンジン672は圧縮されたgスプライトデータが必要になると、gスプライト復元エンジン674を使ってgスプライトメモリ664からのgスプライトデータを復元し、オンチップgスプライトキャッシュにデータをキャッシュする。実際のハードウェアでは、テクスチャメモリ664とgスプライトメモリ670は同一である( すなわち圧縮データは様々なエンジンが共有する単一のメモリに保存される) 。使用する圧縮方法及び復元方法に互換性があれば、共通の共有メモリは不要である。またgスプライトデータはデータベースやその他の画像源676から取り込んで、テクスチャメモリ664及びgスプライトメモリ670に保存することも可能である。
 本発明の一実施例では、損失の多いピクセルブロック圧縮及び復元と損失の無いピクセルブロック圧縮及び復元の両方をサポートしている。
 損失の多い画像圧縮形式には、損失の多い第1段階と損失の無い第2段階の2つの段階がある。損失の多い圧縮形式は、赤、緑、青( R,G,B) 彩度値から輝度( Y) 及びクロミナンス( U及びV、またCr及びCbとも言う) 値への任意のカラー空間変換で始まる。損失の多い段階では、直接余弦変換( DCT) と所定の周波数成分を減少させる量子化が行われる。
 第2段階は、ハフマンコーディング及び実行長さエンコーディング( RLE)から成る損失の無い圧縮形式である。ハフマンコーディングの代わりに、演算コーディングなどの他のコーディング方法も使用できる。
 損失の多い復元方法では、デコーディング、圧縮データの逆量子化、逆DCT、YUVからRGBへの任意のカラー空間変換が行われる。
 損失の無い圧縮形式では、RGBからYUVへの損失の無い任意のカラー空間変換、予測段階、損失の無いエンコーディング段階より構成される。このエンコーディング段階は、損失の多い圧縮形式のエントロピーコーディング段階と同じであってもよい。この損失の無い復元方法は、デコーディング、各カラー成分を逆予測する段階、YUVからRGBへの任意のカラー空間変換から成り立っている。
損失の多い圧縮/復元
 タイラーの圧縮エンジン414( 図9A〜C) における損失の多い圧縮方法の一つは、次の4または5つの手順で行われる。
1. RGBデータ入力をYUVのような輝度クロミナンス系統へ変換する( 任  意) 。
2. 各カラー成分をそれぞれ別個に順方向2次元離散余弦変換( DCT) させる。
3. 2次元DCT係数をおおよその頻度の増加順に並べる。
4. DCT係数を量子化する:均一の除数または頻度依存除数で除算する。
5.求めた係数を固定コード表を有するハフマンエンコーディングによってエンコードする。
 損失の無い復元は以下の4または5つの手順で行われる。
1.圧縮データ入力を固定コード表を使用するハフマンデコーディングによってデコードする。
2.圧縮データを逆量子化する:圧縮の量子化手順で使用した均一の乗数または頻度依存乗数で乗算する。
3.データの線形配列を適切なDCT係数の2次元順序に並べる。
4.各カラー成分に対して逆の2次元DCTをそれぞれ別個に実行する。
5.該当する任意の段階が圧縮処理に含まれる場合、YUVのような輝度クロミナンス系統のカラーをRGBカラーに変換する。
カラー空間変換
 カラー空間変換は、輝度座標Yとカラー座標U及びVに基づいてRGBカラーを輝度カラー系統に変換する。この輝度クロミナンス系統は標準のカラー空間ではない。カラー座標は輝度の圧縮に必要なビットのほんの一部のみを必要とするため、この系統を使用すると圧縮の度合いが向上する。損失の無い可逆変換は各ピクセルに対して別個に実行され、アルファ値を変えることはない。
RGBからYUV( 圧縮の場合)
 正数のRGB値から正数のYUV値への変換では、次のような変換式を使用する。
Y = (4R + 4G + 4B) / 3 - 512
U = R - G
V = (4B - 2R - 2G) / 3
YUVからRGB( 復元の場合)
正数のYUV値から正数のRGB値への変換では、次のような変換式を使用する。R = (((Y + 512) - V) / 2 + U + 1) / 2
G = (((Y + 512) - V) / 2 - U + 1) / 2
B = ((Y +512) / 2 + V + 1) / 2
離散余弦変換
 画像とテクスチャは、3原色の振幅と不透明度の振幅を含むピクセルである。ピクセルの位置は画像またはテクスチャマップ中の空間位置に相当する。この形式の画像やテクスチャは空間領域の中にある。画像やテクスチャの場合、離散余弦変換( DCT) でDCTの基底係数を乗じる係数を計算する。画像やテクスチャにDCTを実行すると、画像やテクスチャを同等に表す係数の集合が求まる。この形式の画像やテクスチャは頻度領域の中に存在する。
 DCTでは、8x8ピクセルブロックのカラーと不透明度の振幅が空間領域と度数領域との間でマッピングされる。頻度領域では、隣接する係数はあまり互いに関連することなく、また圧縮処理で圧縮効率を落とすことなく各関数をそれぞれ別個に処理する。順方向DCTでは空間領域から頻度領域へのマッピングが行われ、逆に逆DCTでは頻度領域から空間領域へのマッピングが行われる。順方向または逆DCTを適切に行う一つの方法として、1990年サンディエゴ、Academic Press Inc. 発行、Rao, K. R.及びP. Yip. 著 "Discrete Cosine Transform"の図A.1.1及びA.1.2に記載されている方法がある。
 2次元DCTにより、各カラー成分を表す頻度領域の係数2次元配列が生成される。ジグザグ状配列で係数が再配列されるので、線形配列の低い位置でDCT頻度が低くなる傾向がある。この配列において、係数がゼロになる確率は( 線形インデックスによる) 線形配列での位置の上昇関数である。この配列により、知覚量子化及びLODフィルタリングが簡素化され、実行長さエンコーディング(RLE) も大幅に向上する。
量子化
 量子化を行うと、係数を正数で除算することでジグザグ配列のDCT係数が有することのできる互いに異なる値の数が減少する。圧縮タイプパラメータの値によっても異なるが、量子化は均一的または知覚的量子化となる。どちらの場合もDC頻度の係数が変わるが( インデックス=0) 、そのままこの係数を送信する。
 量子化処理は、画像または画像の一部の量子化因子の指定から始まる。この場合、量子化因子は32x32ピクセルチャンクに対して指定される。量子化インデックス( Qインデックス) はチャンクで使用するための該当する量子化因子(Q因子) を指定する。次の表はQインデックスとQ因子との関係を表している。
Figure 2004046886
 各カラー面はチャンクQインデックスの異なる数値を有している。15のQインデックスは4096のQ因子を選択し、これにより量子化及び逆量子化の際にゼロが生成される。量子化処理では、Q因子で各係数を除算し、さらに四捨五入して正数にする。逆量子化処理では、各係数をQ因子で乗算する。量子化及び逆量子化によってDC頻度成分が変化することはない。
ブロック量子化因子
 Qインデックス及びQ因子はブロック( 8x8ピクセル) ごとに変化させることが可能である。あるブロックのQインデックスは、チャンクのQインデックスをブロック圧縮タイプに埋め込まれている数値でインクリメントすることで求められる。
 ブロックQインデックス = チャンクQ インデックス+( ブロック圧縮タイプ−3) これはチャンクQ インデックスを1、2、3または4インクリメントするものである。考えられ得る最大のQインデックス数値は15なので、インクリメントした結果15を越える数値は15に設定される。
 量子化の種類が知覚量子化である場合、Qインデックス及びQ因子は係数ごとに( 配列インデックスごとに) 変化させることも可能である。
 均一量子化の場合は、係数QインデックスはブロックQインデックスに等しいので、該当するQ因子はブロック中の各係数を乗算( 逆量子化) または除算( 量子化) する。
 知覚量子化の場合、係数Qインデックスは線形配列のインデックスの数値( 0...63) によって変化する。以下の表は配列インデックス数値の関数として求めた係数Qインデックスを示している。
係数Qインデックス       配列インデックス
ブロックQインデックス     インデックス<12
ブロックQインデックス+1   12≦インデックス<28
ブロックQインデックス+2   28≦インデックス<52
ブロックQインデックス+3   52≦インデックス
エントロピーコーディング
 ハフマン/RLEコーディングは量子化されたDCT係数を以下の方法で処理する。
1.( DCT係数は互いに関連していないため) ゼロ以外の係数を存在しうる最低ビットで別個にエンコードする。
2.( ジグザグ配列であるため) 特に線形配列の最後にあるゼロの数値で連続する種類の係数を最適にエンコードする。
ハフマン/RLEコーディング処理を適切に行う方法としては、既知のJPEG静止画像圧縮標準のAC係数で使用されるハフマン/RLEコーディング処理がある。
 ブロックにランダムアクセスするために、この方法ではDC頻度係数( インデックス=0) をエンコードしないが、数値を変えずにこれを送信する。
アルゴリズムは、以下を表す一連の可変長コード語を計算する。
1.次のゼロ以外の係数の前の一続きのゼロの1から15までの長さ。
2.次のゼロ以外の係数の符号と仮数を指定するのに必要な追加ビット数。
コード語の後にゼロ以外の係数の符号と仮数が書き込まれる。ある1つの指定コードは、ブロックの残りの係数が全てゼロであることを表す。
エンコーディング
 全ブロックをエンコードする場合、ISO International Standard 10918の付録K 、セクションK.3. 2に記載されている代表的なAC係数のハフマン表を使用する。これには、輝度( Y) AC係数の表K.5とクロミナンス( U及びV)AC係数の表K.6が示されている。
デコーディング
 全ブロックをデコードする場合、エンコード処理として同一の一定表を使用する。従って、データを書き込んだハフマン表を保存したり移動させる必要なはい。
損失の無い圧縮/復元
 タイラーの圧縮エンジン414では、次の2つの段階で損失の無い圧縮が行われる。
1.入力されたRGBデータからYUVのような輝度クロミナンス系統への変換( 任意) 。
2.各カラー成分に対して微分予測計算を行う。固定コード表を使用するハフマンエンコーディングにより、求めた係数をエンコードする。
タイラーの復元エンジン404,450及びgスプライトエンジンでは、次のような2または3つの段階で損失の無い復元が行われる。
1.固定コード表を使用するハフマンデコーディングにより、入力される圧縮データをデコードする。
2.各カラー成分に対して逆の微分予測( 再構成) 計算を行う。
3.圧縮処理にYUVのような輝度クロミナンス系統のカラーをRGBカラーに変換する任意の作業が含まれる場合、この変換作業を行う。
カラー空間変換
 カラー空間変換は、RGBカラーを輝度座標Yとカラー座標U及びVに基づく輝度カラー系統に逆に変換する。これはYUV系統以上に圧縮の度合いを上げることのできる他と異なるカラー空間である。ハフマン/RLEエンコーダへの入力数が少なく、さらなる圧縮が可能となるためである。各ピクセルはそれぞれ別個にカラー空間変換され、またこの変換によってアルファの値が変化することはない。
RGBからYUV( 圧縮の場合)
 正数のRGB値から正数のYUV値へ変換する場合、次のような変換式を使用する。
Y = G
U = R - G
V = B - G
YUV からRGB( 復元の場合)
 正数のYUV値から正数のRGB値へ変換する場合、次のような変換式を使用する。
R = Y + U
G = Y
B = Y + V
 カラー空間変換の実行中、アルファ情報は変化しない。
 カラー空間変換を回避することも可能である。gスプライト制御データ構造でフラグを用いて、カラー変換を回避することをデコンプレッサに知らせる。
 カラー空間変換後に予測が行われる。予測は、大部分のソース画像、特に空きスペースと水平及び垂直線を多く含む画像のエントロピーを減少させる損失の少ない可逆過程である。
 圧縮の予測過程及び復元の逆予測過程においては、以下のような値が使用される。
1.p( x,y) は、コンプレッサに入力され、また復元エンジンから出力されるピクセル値である。
2.d( x,y) は、圧縮エンジンの次段のコーダへ入力され、また復元エンジンのコーダの反対側から出力される差分値である。
 予測は次のように計算される。
x = 0, y = 0のとき、d(x,y) = p(x,y)
x = 0, y > 0のとき、d(x,y) = p(x,y) - p(x,y-1)
x > 0 のとき、d(x,y) = p(x,y) - p(x-1,y)
 復元エンジンでの逆予測は次のように計算される。
x = 0, y = 0のとき、p(x,y) = d(x,y)
x = 0, y > 0のとき、p(x,y) = p(x,y-1) + d(x,y)
x > 0 のとき、p(x,y) = p(x-1,y) + d(x,y)
 ハフマン/RLEコーディング及びデコーディングは、本実施例の損失の多い圧縮/復元形式で行われるものと同一である。
 上記の圧縮方法では、8x8ピクセルの独立ブロックの画像を圧縮する。従って上記のチャンキングアーキテクチュアでは、圧縮された各32x32ピクセルチャンクはこのような16個のブロックで構成される。32x32ピクセルチャンクの圧縮を容易にするために、偽信号防止エンジン412はピクセルデータを8x8ピクセルブロックに変換する。8x8ピクセルブロックは、第1のバッファで保存を行いまた第2のバッファが圧縮されるように、8x8ピクセルブロックをバッファする。
コントロール及びパラメータ
 上記に述べたように、タイラー( 図9A〜9C) は一度にgスプライトを1つのチャンクに再現する。このようなチャンクはピクセルブロックで構成されている( この場合、16個の8x8ピクセルブロック) 。テクスチャマッピング、陰影付け、その他のマルチパス再現操作の場合、タイラーはgスプライトまたはテクスチャのブロックをメモリから取り込む。フレームを構成するために、gスプライトエンジン( 図12A〜B) はgスプライトを取り込み、ピクセルを画面空間に変換し、合成バッファでピクセルを合成する。
 gスプライト、チャンク、ブロックの処理を制御するコントロールパラメータは複数存在する。gスプライト表示リストは表示画像を構成するgスプライトのリストを保存している。以下に説明するように、gスプライトヘッダブロックは、gスプライトの幅や高さを含むgスプライトの属性、及び画面空間平行四辺形で定義されている疑似変換を多数保存している。gスプライトヘッダブロックも、その関連するチャンクのリストを有している。一つの実施例では、このリストはポインタやハンドルとしてコントロールブロックをチャンクしている。
 チャンクコントロールブロックは、チャンク毎及びブロック毎のパラメータを有している。チャンク毎のパラメータは、YUVカラー変換バイパスと、デフォルトQ因子と、知覚量子化フラグと、ピクセル形式と、ピクセルデータが線形メモリのメモリ割当ユニット( MAU) で管理されるメモリの中に存在するか否かを表す情報とで構成されている。MAUはチャンクメモリを割り当てるのに使用される一つの共有メモリである。MAUが管理するメモリにはMAUのリストが保存されており、各MAUは次のMAUを示すポインタを有している。例えばある具体例においては、チャンクコントロールブロックは各gスプライト毎に連続するMAUの中に保存される。
 ブロック毎のパラメータは、圧縮タイプと、ブロックが保存されるMAUの数と、ブロックのピクセルデータの第1番目のバイトを示すブロックポインタとで構成される。具体的なブロックの形式は、32ビットピクセル( 8ビットはRGB及びアルファ用) をエンコードする8x8x4ピクセル配列である。
 上記のコントロールパラメータを使ってgスプライトのピクセルを有する座標( X,Y) を検索する手順は以下の通りである。
 1)32でY及びXを除算し、チャンクの列と行をそれぞれ得る。
 2)( チャンク列) *( チャンクの中のスプライトの幅) +チャンク行を計算して、チャンク数を得る。
 3)( チャンク数) *(チャンクヘッダブロックのサイズ) を計算して、チャンクコントロールブロックのオフセットを求める。
 4)( Y<4:3>*4+X<4:3>)*3を計算して、チャンクコントロール内のブロックのオフセットを求める。
 5)ブロックポインタを復元したキャッシュロジックに送り、ブロックを受信する。
 6)(Y<2:0>*8)+X<2:0>を計算して、ブロック内のピクセルのオフセットを求める。
 ここにおいて、チャンクのオフセットはチャンクを選択するのに使用される。また、ブロックオフセットはブロックポインタの選択で用いられる。
ブロックポインタはピクセルを含むブロックを選択し、またピクセルのオフセットはピクセルを選択する。
 ピクセルデータの圧縮ブロックの中にある所定のピクセルに対応するブロックにアクセスするために、タイラー及びgスプライトエンジンのキャッシュコントロールが以下の操作を行う。
 1)チャンクコントロールブロックにあるブロックポインタ値を検索し、MAUのサイズで除算することにより、MAUアドレスを求める。
 2)そのブロックに対応するチャンクコントロールブロックに割り当てられているMAUの数を検索する。
 3)チャンクコントロールブロックの次のブロックポインタアドレスを検索する。
 4)割り当てられているMAUの数 * MAUサイズ + (( ブロックポインタ) 変更MAUサイズ) +( 次のブロックポインタ) 変更( MAUサイズ) の2の補数
 5)ブロックアドレス及び圧縮ブロックの長さを圧縮キャッシュロジックに送る。
 圧縮キャッシュは第1のMAUを読み出し、転送長さが十分でなければMAUの中のポインタを使用して次のMAUの先頭にアクセスする。この処理は転送長さが十分になるまで続けられる。
 MIPマップテクスチャ操作をサポートするために、タイラーは他のインデクシングレベルをサポートしている。MIPマップレベルのインデクシングを行う一つの方法では、次のような手順を行う。
 1)所定のスプライトに対して、以下の計算を行ってMIPチャンクレベルオフセットの表を作成する。
 MIPチャンクオフセット[0]= 0 \\詳細レベル0のオフセット
 MIPマップの各レベルの場合:
 MIPチャンクオフセット[レベル+1]= スプライト幅/( 2^レベル) *スプライト高さ/( 2^レベル) +MIPチャンクオフセット[レベル]
 2)LODパラメータを使用してMIPチャンクオフセットを求める。
このとき、MIPチャンクオフセット、スプライト幅/( 2^レベル) 、スプライト高さ/( 2^レベル) を使用して、現在のgスプライトの選択した詳細レベル内にある所望のチャンクを求めることもできる。
gスプライト
 上記にgスプライトの概念を説明した。簡単にもう一度説明すると、表示ボリューム中の1つ以上の対象はgスプライトに割り当てられる。gスプライトは別個に再現されるので、これによりgスプライトを異なる解像度で再現させ、また様々な速度で更新させることができる。再現オーバーヘッドを低減させるために、システムは対象をもう一度再現するのではなく、gスプライトを疑似変換させることにより、対象の動きを近似的に作り出すことができる。画面を構成するgスプライトを表示させるために、システムは画面の中で対象を表すgスプライトを合成する。次に、上記及び他の特徴について詳しく説明する。
 上記に述べたように、配列をgスプライトに割り当てることによりシステムが起動する。gスプライトは物理的な出力機器の座標で示される2次元領域である。以下に述べる例では、gスプライトの形は矩形であるが、他の形を使用することも可能である。gスプライトはgスプライトエンジンで疑似変換させることができる( すなわち、拡大縮小、回転、反転、及び/または切り取りが可能である−何れの変換も2x2マトリクスを使用した変換と移動である) 。2次元変換の1適用例としては、3次元移動のシミュレーションがある。gスプライトの例として、同一のgスプライトの画像が様々に変換されて複数回画面に表示させることが可能である。この例はgスプライト画像の矩形下位集合や画像全体に適用できる。また、カラー成分をベースにして適用させることも可能である。例えば、アルファをあるgスプライトから得て、カラーを別のgスプライトから得ることもできる。
 一般に、画像プロセッサは1つの対象を単一のgスプライトに割り当てるが、複数の対象を1つのgスプライトに割り当てることも可能である。画像プリプロセッサは互いに影響を及ぼす対象や他と関連性を持たない対象を単一のgスプライトの中で組み合わせる。また、メモリと処理制限に基づいて対象を統合する。例えば、画像プロセッサは、それぞれ独立しているが重なり合っているgスプライトを出力機器のリフレッシュ速度が要する時間内で合成することはできない。この場合、システムはこのような重なり合っている対象を単一のgスプライトに統合する。
 対象をgスプライトに割り当てた後、画像プロセッサはフレームのgスプライトを再現する。別個に対象を再現すると、システムは再現オーバーヘッドを減少させることができる。これは、各フレームの画面で各対象を再現し直す必要がないためである。この特徴についてさらに詳細に説明する。
 対象を画面に表示させるために、画像プロセッサは画面の対象を含むgスプライトを合成する。合成とは、gスプライトの層からのカラーデータを組み合わせる処理のことをいう。半透明性をサポートするために、画像プロセッサは合成して表示を行う際に変換したgスプライトピクセルのアルファ値も考慮に入れる。
 図21A及び21Bは、一実施例においてのgスプライトの処理方法を示すフローチャートである。図に示す実施例では、gスプライトの処理は2フレーム期間にわたって行われる。最初のフレーム期間において、画面の対象はgスプライトに割り当てられ再現される。また次のフレーム期間において、gスプライトは変換され、さらに合成される。 まず、画像プリプロセッサは潜在的に可視状態の対象を確認する。図21Aはこの過程を一連の手順として示している。フレーム毎に、画像プロセッサは対象( 696,698)のリストを移動させ、画面すなわち表示空間において潜在的に見ることのできる対象を確認することで、潜在的に可視状態の対象を決定する。
 次に、画像プリプロセッサはgスプライトの割当、再割当、割当解除を行う。gスプライトの割当とは、一般的にシステムでgスプライトを表わすためにデータ構造を作成することをいう。対象が潜在的に可視状態でなく( 700) 、システムがその対象に対してgスプライトを割り当てていない場合は( 702) 、他の処理を行う必要はない。潜在的に対象を目で見ることができ( 702) 、システムがその対象に対してすでにgスプライトを割り当てている場合は( 702) 、画像プロセッサがその対象に対するgスプライトの割当を解除する( 704) 。
 画像プリプロセッサは、システムがまだgスプライトを割り当てていない潜在的に可視状態の対象に対して新しいgスプライトデータ構造を割り当てる( 706,708) 。この場合、画像プリプロセッサはgスプライトデータ構造を作成し、その対象に対応す画像データを待ち行列に入れて再現を行う( 710) 。再現を実行するために「待ち行列に入れる」というのは、3次元表示させる対象のリストを追加することを表している( 710) 。また画像プロセッサはgスプライトの疑似変換も計算する( 714) 。本実施例では、疑似変換には2つの目的がある。第1に、疑似変換を行って画面上での動きに対応する対象の動きを近似的に作り出すことができる。第2に、疑似変換により、gスプライトをgスプライト空間から出力機器座標に変換することができる。gスプライト空間とは、対象をチャンクに下位分割させるのに使用する座標系を意味している。対象をチャンクに下位分割する際に使用する座標系は、2次元空間に変換された対象を効率よくチャンク領域で扱うことができるように最適化することが可能である。
 対象を潜在的に目で見ることができ( 700) 、システムがその対象に対してすでにgスプライトを割り当てている場合は( 706) 、図に示す画像プリプロセッサは疑似変換式の計算を行う( 714) 。以下に詳細に説明するが、疑似変換式を利用して対象の動きを擬似的に作り出すことが可能である。画像プロセッサはこの近似的に作り出した動きの精度を評価し、ひずみが多い場合は( 716)、画像プリプロセッサがその対象に対してgスプライトの再割当を行う( 708) 。この場合、次に画像プリプロセッサはgスプライトに再現する配列を待ち行列に入れて( すなわち3次元リストに入れる) 再現を行い( 710) 、gスプライトを表示リストに追加する( 718) 。
 しかし、疑似変換式を用いて対象の動きを正確に擬似的に作り出すことができる場合は( 716のひずみが所定の許容範囲内にある) 、対象を再現し直す必要はなく、画像プリプロセッサはその対象に対応するgスプライトを表示リストに入れる( 718) 。
 次のフレーム期間に、画像プロセッサは表示画像を生成する。点線で分けられている手順( 718) 及び( 720) はフレーム期間を示している。画像プロセッサは表示リストを移動させて、リストのgスプライトを物理的出力機器の座標に変換する( 720) 。一般に、出力座標への変換には、曲げや回転、拡大縮小を施したgスプライトからのピクセルデータを出力機器のピクセル位置にスキャンする過程が含まれている。次に画像プロセッサはこの変換または「スキャン」したgスプライトデータを合成する( 722) 。最後に、画像プロセッサはピクセルデータをアナログ値に変換し、画像を表示する。
 図5A及び5Bはチャンキングアーキテクチャで配列を再現する過程を示すフローチャートである。重要なことであるが、上記に述べたgスプライトの概念はチャンキングアーキテクチャにのみに限定されるものではない。図5A及びそれに関する上記の説明では、画像プリプロセッサが画面の配列からgスプライト構造を確定する方法について詳しく述べている。手順( 240〜244) 及びそれに関する説明を参照すること。特に、対象は単一のgスプライト、または必要に応じて幾つかのgスプライトにに統合及び再現させることが可能である。例えば、タイラー、gスプライトエンジン、合成バッファが必要なフレームリフレッシュ速度でフレームのgスプライトに現在の対象の割当を処理することができない場合、データをDSPまたはホストプロセッサに再び送信し、対象を統合してgスプライトに複数の対象を再現することが可能である。
 図6は、一実施例におけるgスプライトの処理に関して更なる知見を与えるものである。図6に示されると共に上述した如く、イメージプロセッサは、gスプライト(280) の深度順番も決定する。
 イメージプロセッサがgスプライトを割当てるとき、それはgスプライトを表すデータ構造を生成する。このgスプライトデータ構造は、gスプライトの種々の属性を記憶すると共に関連するイメージデータがメモリの何処に在るかを追跡し続ける為のヘッダ、を含んでいる。このデータ構造は、gスプライトのサイズを記憶し、gスプライトのエッジに対するエッジ式を表し、2-D 変換データおよび他のイメージ属性を保持する為の種々のフィールドを含んでいる。
 ビュースペースに対するgスプライトの配置形態を決定した後、イメージプロセッサはどのgスプライトをレンダリングするかを決定する。シーンにおける全ての対象物をレンダリングする代わりに、システムは他のフレームからレンダリングされたgスプライトを再使用することができる。また、フレーム毎の対象物の位置の変化は、レンダリングされたgスプライトのアファイン変換(affine transformation) を行うことにより近似され得る。図6に示される如く、イメージプロセッサはgスプライトをループ(282-286) して、gスプライト変換を計算する(284) 。尚、以下においては、gスプライトの更新およびgスプライトのワープ(warping) に関して詳述する。
 イメージプロセッサシステムは、レンダリングされて対象物を表す2-D gスプライトに関してアファイン変換を行うことにより3-D 対象物の動きを近似することができる。尚、本明細書においては、レンダリングされたイメージに関するアファイン変換を“ワープ(warping) ”と称すると共に、この処理の結果として得られるgスプライトを“ワープされたgスプライト(warped gsprite)”と称する。ひとつの実施形態においては、対象物の3-D レンダリングをシミュレートする処理は、1)特性点の幾何的運動を近似するアファイン変換行列を算出する段階と、2)段階1 における近似の精度を測定する段階と、3)もし精度が十分であれば、時間t0におけるgスプライトのアファイン変換を行うことにより後の時点t におけるそれの位置を近似する段階と、を含んでいる。
 図22は、3-D 運動をシミュレートするアファイン変換を行う処理を示すフロー図である。詳細に述べると、図22は最初のステップ744 で“特性点選択”を示している。以下の検討内容から明らかとなる如く、イメージ処理の間に特性点は選択されず、幾何モデルのオーサー(author)により指定されるのが通常である。
 対象物の動きをシミュレートするために使用されたアファイン変換は、特性点を用いて計算される。特性点は、対象物の位置もしくは時的に変化する他の重要なイメージ特性を表すべく選択された点である。此処では、3-D モデルの世界座標系とスクリーン空間に変換されたモデルのスクリーン座標系とにおける特性点に言及することから、これらの点を記述すべく使用する語句を明確にすることは有用であろう。此処では、スクリーン空間における特性点を“視認特性点(viewing characteristic points) ”と称し、且つ、世界座標系における特性点を“モデル特性点(modeling characteristic points)”と称する。
 対象物点の全体を考慮するのではなく特性点の内で代表的なものを選択することにより、アファイン変換の計算は相当に簡略化される。対象物の3-D 運動を正確に近似する為に必要とされる特性点の個数は、モデルに依存して変化する。もし対象物が剛体であれば、対象物全体を囲繞する境界枠から特性点を選択することができる。また、もし境界枠を定義する点を同一の変換法により変換すれば、境界枠点は対象物ジオメトリの変換に従う。
 また、より複雑な動きを行う対象物に対しては、正確な近似を行う上では更に多くの特性点が必要とされよう。例えば、対象物は、個々の位置を近似する境界枠を夫々有する多数の剛体に部分分割することが可能である。もし対象物が、独立した移動変換(moving transformatoins)を有する階層構造の剛体から成っていれば、移動するサブ対象物の境界枠を結合したものから特性点を導くことができる。
 別の代替例としては、モデルのオーサーがモデルの特性点を指定することも可能である。この様にすれば、対象物の3-D 移動を近似すべく使用された特性点をオーサーが詳細に指定することが可能となる。以下に更に記述する様に、アファイン変換の精度は多くの距離(metrics) のいずれかに依って確認することが出来る。オーサーが特性点を指定し得る様にすることで、アファイン変換の精度を評価すべく使用されるひとつのもしくは複数の距離に対して適切な点をオーサーが指定し得る様になる。
 特性点の組が与えられたとき、アファイン変換を計算することにより時間t0から時間t へのgスプライトの位置変化を近似することができる。この段階は図22のステップ(746) に示されている。
 アファイン変換は、時間t0および時間t における視認特性点から計算される。特性点が選択された方法に依存し乍ら、モデル特性点は対象物上もしくはその境界枠上の点を表す。これらのモデル特性点の位置は、モデル変換(modeling transform)に係る時間によって変化する。また、視認特性点を見出す為には、モデル特性点に視認変換が乗ぜられる。更に、以下の論議は、2-D gスプライトを変換する上で用いられるアファイン変換行列を計算する処理を明確化する上で有用であろう。
 アファイン変換行列のフォーマットは次の如きものである:
Figure 2004046886
 近似の精度を確認するためのひとつの距離は、位置距離(position metric) である。位置距離とは、アファイン変換行列を乗じた、時間t における特性点と時間t0における特性点の位置との間の差を指している。位置距離の為の概略式は次の如きものである:
Figure 2004046886
 位置距離の場合、スクリーン空間内の特性点の位置が最も適切である、と言うのも、スクリーン上の位置の差は、変換されたgスプライトが対応3-D モデルの動きを如何に正確に近似しているかを表すからである。但し、他の距離に対しては、近似の精度をモデル特性点に関して計算することも可能である。位置距離の例として、スクリーン空間の点を直接的に考察する。ここで、V(t)を視認変換とするとともにT(t)をモデル変換とし、
Figure 2004046886

をスクリーン空間の点とする。アファイン変換行列を計算するには、標準的な最小2乗法による解法を使用することが可能である。線形システム
Figure 2004046886

を解けば、標準的な最小2乗法による解法は位置距離を最小化する解を与える。
 3個の特性点が在る場合は、アファイン変換行列を直接的に解くことが可能である。例えば、境界枠の軸心の3個の点を使用するのであれば、時間に依存する以下のアファイン変換行列に対して解は閉じた形の表現となる:
Figure 2004046886

である。
 一般的な場合、アファイン変換行列を解く上では正規方程式(normal equations)もしくは特異値分解(singular value decomposition)などの最小2乗法を用いることが可能である。一般化した問題は以下の様になる:
Figure 2004046886
 アファイン変換行列を解く為には、Nx 3行列の擬逆行列(pseudoinverse) を計算せねばならない。また、任意の個数の特性点に対しては、最小2乗法を用いて擬逆行列を解くことになる。ひとつの実施例においては、正規方程式法を用いる。
 また、Xを時間t0における特性点の転置行列(transposed matrix) とし、Xを時間t における特性点の転置行列とすれば、
Figure 2004046886

である。
 正規方程式法で解くためには、式の両辺に適合行列(fitting matrix)の転置行列を乗じ、次に、得られた正方行列を反転する。正規方程式の典型的な欠点は、得られた行列が特異になりもしくは丸め誤差により不安定になり易い、ということである。もし特性点が縮退すれば、行列は特異となる。行列の特定の形態においては、各項を正規化することにより丸め誤差を調節することが可能である。
Figure 2004046886
 得られた行列には丁度5個の項がある。3x3 行列は次に反転されて、アファイン変換が得られる。代わりに、x 座標の項の和とy 座標の項の和は特性点の図心に対応することから、座標形を変更して図心を0,0 に平行移動することにより、これらの項は消去することができる。得られる行列は2x2 であり、容易に反転される。
 アファイン変換行列を計算した後、近似の精度をひとつ以上の距離を用いてチェックする。図22の判定ステップ(748) は、ひとつ以上の距離をチェックするステップを示すと共に、ロジックが距離に基づいて如何にして分岐するかを概略的に示している。上述の如く、位置距離は、アファイン変換の精度を如何にチェックするかのひとつの例である。アファイン変換が位置距離を満足するか否かを測定すべく、計算されたアファイン変換を用いて変換された時間t0における視認特性点を、時間t における視認特性点と比較する。
 別の試みは、3-D モデルの内部回転を距離として使用することである。この場合、計算されたアファイン変換を用いて変換された時間t0におけるモデル特性点は、時間t におけるモデル特性点と比較される。
 更に別のこころみは、明暗距離(lighting metric) を使用することである。内部回転に対する距離と同様に、モデル特性点を用いて近似の精度をチェックするのである。
 上述の距離に加え、他の種々の代替物が在る。これらの距離を計算する為に、特性点に沿って適切な特性データが保持され得る。また、所望の精度に依り、ひとつの距離もしくは各種の距離を組合せて使用することが可能である。
 もし、変換されたgスプライトを表す特性点が十分に正確であれば、変換されたgスプライトを、再レンダリングされたgスプライトの代わりに使用することが出来る。2-D 変換を計算する為に、時間t0に対するgスプライトにアファイン変換行列を乗ずる(750) 。gスプライトのレンダリングと対照的に、この計算では処理時間が極めて短い。従って、2-D 変換による3-D 移動のシミュレートは、イメージをレンダリングするに必要な処理量を相当に減少させるものである。
 近似の精度に基づき、システムはイメージデータのフレームに対し、そのレンダリング能力の範囲内に納めるに必要な程度までレンダリングの総量を減少することができる。この概念を概略的に示すべく、図22は、2-D 変換が十分に正確でなければgスプライトが再レンダリングされることを示している。しかし乍ら、以下に更に詳述する如く、距離に基づいてgスプライトを受け入れもしくは排除することは必ずしも望ましいことではない。正確に述べれば、或るシーンにおける多くのgスプライトに対する近似が如何に正確かを決定してから、可能な限り多くのgスプライトを再レンダリングすることが有用であることが多いからである。
 gスプライトの色ワープ(color warping) :
 更なる最適化として、レンダリングシステムはフレーム毎の明暗変化をサンプリングすると共にgスプライトのカラー値を改変してこれらの変化を近似することが出来る。この試みは、1)フレーム間の明暗変化をサンプリングし、2)gスプライトのカラー値を改変して明暗変化を近似する(即ち、色ワープを計算する)方法を決定し、かつ、3)もし十分に正確であればgスプライトに関して色ワープを行って明暗変化を近似する、という基本的な3つの段階を含んでいる。もし、明暗式の評価の後に、明暗が所定量以上変化したことをプリプロセッサが決定したのであれば、それはタイラ(tiler) に対して対象物の再レンダリングを指示する。
 第1段階において、レンダリングシステムはgスプライトと組合わされた対象物に対する明暗変化をサンプリングする。それは、対象物がgスプライトにレンダリングされた最初のフレームと、レンダリングシステムがgスプライトの色ワープを行って色調変化を近似せんとする次フレームとの間の明暗変化をサンプリングする。ここで、明暗変化をサンプリングするためのひとつの手法は、最初のフレームと次フレームとに対する法線による特性点における明暗式をサンプリングし、これらのフレームの各々におけるサンプリング結果を比較することである。好適には、特性点を対象物上に分布させ、gスプライトに跨がる明暗変化を正確にサンプリングせねばならない。特性点の詳細な個数および位置は変更可能であり、一般的には、モデル特有のものとなる。
 明暗式の一例は:
Figure 2004046886

であり、
 Iaλは周囲の明るさ、
 kaは周囲の反射係数、
 Odλは対象物の拡散色、
 fattは、光エネルギが光源から離間するにつれて如何に減少するかを記述する、光源の減衰率、
 Ipλは点光源からの光、
 kdは、物質毎に変化する、0と1の間の定数である拡散反射係数、
 Osλは、対象物の反射色、
 ksは、0乃至1に亙る、物質の鏡面反射係数、
 (N・ L)は、表面法線N と光源L の方向との間の内積、
 (R・ V)は、反射方向R と視点V との間の内積、
 上添字n は、物質の鏡面反射「べき指数」であり、通常は1乃至数百まで変化し、
 λは、この下添字を有する項は波長に依存することを示している。明暗式を簡略化する為のひとつの仮定は、対象物に対する光の相互作用をRGB カラーモデルが十分に表現し得る、ということである。この仮定に基づき、明暗モデルをR 、G およびB の色要素の各々に適用することが可能となる。
 上記の明暗式は、対象物の表面上の点における明暗を計算する方法のひとつを例示しているに過ぎない。明暗式は、例えば、光減衰率もしくは鏡面反射を無視することにより、簡略化され得る。3-D グラフィックレンダリングの分野においては、グラフィック対象物の表面上の明暗を表現すべく使用される他の習用の明暗式が種々存在する。従って、グラフィック対象物と結合された特性点における明暗をサンプリングする上では、多数の異なる明暗式の内の任意のものを使用し得る。一般的に、プリプロセッサは明暗式を計算し、(おそらくはRGB 成分の各々に対する)結果的な明暗値I の光度がフレーム毎に如何に変化するかを決定する。
 フレーム毎の明暗の変化を評価する為に、イメージプリプロセッサは最初のフレームおよび次フレームにおける特性点に対する明暗式を計算するが、これは、特性点における直交面、各フレームに対する光源方向、そしておそらくは、特定の明暗式に伴う他のデータ、を用いて計算される。
 システムは、gスプライトにより表される対象物上の特性点もしくは対象物の有界体積上の特性点における明暗変化をサンプリングすることが出来る。明暗の変化をサンプリングする為のひとつの試みは、対象物の有界体積の表面上の明暗変化をサンプリングすることである。例えば、システムは、対象物もしくは対象物の一部の境界球体上の法線における明暗変化をサンプリングすることが可能である。境界球体はプリプロセッサに対し、対象物の“空間”内で移動しつつある局部的光源により生じ得る重要な変動の追跡を許容する。もし、イメージプリプロセッサが、対象物の図心に位置せしめられたベクトルセットを単純に使用したとすれば、局部的な光源の動きは大きな局部的照度変化を引起こさないが、全体として対象物の明暗に大きな影響を与えることもある。これらの状況においては、境界球体の表面における明暗変化のサンプリングを行えば対象物に対する明暗変化を一層正確に捕捉することも可能であるが、それは対象物の表面上の特性点において選択的に見た場合には達成され得ないものである。
 更なる代替例として、対象物の特性点もしくは境界球体の表面における法線を組合せて使用し、明暗変化をサンプリングすることも可能である。この試みによれば明暗変化を一層効率的に追跡することが可能である、と言うのも、それは対象物上の特性点と、対象物に対する有界体積の表面とにおける明暗変化を追跡するからである。
 システムは明暗変化に基づき、これらの明暗変化を近似すべくgスプライトのカラー値を改変する方法を決定する。gスプライトに関して行われる幾何的変換と同様に、システムはgスプライトのカラー値をワープして明暗変化を近似する方法を計算する。カラーワープを計算するひとつの方法は、上述の最小2乗適合法を使用することである。この段階の結果は、定数、線形もしくは高次のワープとなり、これは、gスプライトに跨がるピクセルにおけるカラー値を改変(例えば縮尺率を乗じ、且つ/または、オフセットを加算)すべく用いられる。
 カラーワープは、gスプライトに跨がって適用される乗数もしくは乗数配列を含んでいる。最も単純な場合、カラーワープは単純に、gスプライト内の全てのピクセルに適用される一定縮尺率たり得る。より正確なアプローチは、線形もしくは高次のワープを使用して明暗変化を近似することである。好適には、乗数はベクトルによる値とし、カラー要素を独立して換算し得るようにする。色付き光源からの変化を正確に表現する為に、各カラー要素は独立して換算せねばならない。
 乗数に加え、gスプライト内のカラー値に加算されたオフセット値もまた、特性点における明暗変化に基づいて計算され得る。
 乗数およびオフセット値を計算するひとつの手法は、各特性点における明暗式の変化を表す乗数およびオフセットに関し、特性点が対象物の表面、有界体積の表面、または、両者に位置しているかを解くことである。プリプロセッサは乗数、オフセット、または両者を計算し得るが、これは、サンプリング段階の間に観察された各特性点の明暗式の同一なもしくは実質的に同一な変化を引起こす乗数もしくはオフセット、または乗数とオフセットの組合せを選択することにより計算される。これらの乗数および/またはオフセットが一旦計算されれば、gスプライト内のカラー値に適用される乗数およびオフセットを計算する方法が多数存在する。ひとつの方法は、乗数を平均することにより、gスプライトに対する単一の縮尺率を導くことである。別の方法は、オフセットを平均することにより、gスプライトに対する単一のオフセットを導くことである。更に別の方法は、乗数およびオフセットに関して独立的に最小2乗適合法を行い、乗数およびオフセットが対象物の表面上の位置により如何に変化するかを表す式を導くことである。この式は、gスプライト内のピクセル位置に対して独立した乗数および/またはオフセットを補間計算するハードウェアにて実現され得る。例えばgスプライト・エンジンは、各ピクセル位置に対する乗数および/またはオフセットを補間する補間器を備えたラスタライザ(rasterizer)を含み得るが、この補間は、カラー値に乗数を乗じ、または、カラー値もしくは換算カラー値(即ち、ピクセル位置に対して計算された対応乗数により換算された値)にオフセットを加算する前に行われる。
 システムは幾何ワープの精度を評価するのと同時に、カラーワープの精度も評価するが、これは、カラーワープにより計算されたカラー値を、通常のレンダリング処理を用いて現在のフレームに対して計算された対応カラー値と比較することで行われる。もし、これらのカラー値が所定の許容差と異なるのであれば、gスプライトを再レンダリングせねばならない。
 レンダリングの総量を減少することに加え、gスプライトのワープは移送遅延(transport delay) をも減少し得る。この点、遠近視点(viewpoint perspective)が急激に変化するアプリケーションにおいては、急激に変化しつつある視認図は移送遅延の故に表示することが困難である。尚、移送遅延とは、視点の変化を引起こす受信入力と、その新たな視点に対する適切なイメージの最終的な表示との間に生ずる遅延のことを指している。図23は如何にして移送遅延が減少され得るかの例を示している。水平軸心に沿った箇所は、フレーム遅延に対応する時的な経過を表している。
 この例においては、サンプリング入力とディスプレイ装置への表示出力との間には3フレームの遅延がある。最初に、入力は第1のフレーム774 でサンプリングされる。次に、システムはアファイン変換を計算すると共にgスプライト内に対象物をレンダリングする(776) 。最後に、フレームに対してレンダリングされたイメージデータは合成されてディスプレイ装置778 にスキャン出力される。これらの段階の各々を実行するに必要とされる時間は、必ずしも、フレーム周期により測定された全体的なフレーム遅延ではないが、概念を示す為にフレーム段階の増加を用いている。図示される様に、入力と、対応イメージデータ表示との間には3フレームの遅延がある。
 移送遅延を減少する為に、次のイメージからの視点データは現在のイメージのレンダリング段階776 で適用され得る。これは、次のイメージに対する入力段階782 から、現在のイメージのgスプライト変換およびレンダリングを行う段階776 への矢印により示されている。図23に示される如く、イメージデータの次のフレームに対する処理段階(782、784 、780)は段階(776、778)の近傍に示されている。図示された様に、処理は情報ルート的に生ずる。現在のフレーム対するgスプライト変換が計算されると共にレンダリングが行われる一方、次フレームに対する入力がサンプリングされる。而して、レンダリングされたgスプライトは、次のイメージの視点に対する位置をシミュレートすべくワープされる。この試みによればユーザに関する移送遅延効果は減少される、と言うのも、それによりシステムは遠近視点における急激な変化を一層迅速に調節し得る様になるからである。
 この関連で移送遅延を減少するのに加え、次のイメージデータを使用することにより他の関連でも移送遅延を減少することができる。
 上記で概略的に述べた如く、gスプライトを独立的にレンダリングすることには多くの利点がある。各gスプライトは種々の更新速度を有していることから、特定のフレーム内で更新されるgスプライトの個数も変化する。幾つかのgスプライトはフレーム毎に更新が必要である一方、他のgスプライトの更新頻度は更に少ないこともある。もし特定のフレーム内で多数のgスプライトが更新されるべきであれば、レンダリング総量は劇的に増大してシステムが過負荷になり得る。この問題に対処すべく、システムは優先キューを作り、多数のフレームへレンダリングを配分してgスプライトを一層効率的に処理することを可能としている。
 この優先キューを作らなければ、特定フレーム内でレンダリングが予定されるgスプライトの数は変化してしまう。gスプライトに対する更新速度は、それがシーンのフォアグラウンドであるかバックグラウンドであるかに依って変化し得る。上述のアファインワープに対するサポートにより、アファイン変換による位置における変化をシミュレートすることでシステムはgスプライトの再レンダリングを回避することができる。
 優先キューを履行する為にシステムは、レンダリングされたgスプライトの再使用により生ずる歪み量に基づいてレンダリングの優先付けを行う。この歪みは、ひとつ以上のエラー閾値に基づいて計算される。また、gスプライトの歪みを定量化する為にシステムは、gスプライトがそのエラー閾値に如何に近いかまたは如何に遠いかを測定する。エラー閾値は各gスプライト毎に変化すると共に、ひとつ以上の要因に基づいている。レンダリングを行う前にgスプライトの相対的品質を示すべく、gスプライトの歪み順番リストが保持される。その場合、システム資源を考慮して、可及的に多数のgスプライトがフレーム内で再レンダリングされる。gスプライトの再レンダリングの順番は、最も歪みの多いgスプライトから始め、歪みの少ないgスプライトへと行われる。この様にして処理を行えばgスプライトのレンダリングによるフレーム過負荷の可能性が排除されるが、これは、gスプライトの精度に対してシーンの複雑さ及び動きをバランスさせる為の効率的なメカニズムを提供する代わりに行われる。
 上述した特徴に加え、gスプライトのレンダリングによりシステムはシーン内の対象物の解像度を変更することができる。これにより、システムはシーンにおけるgスプライトの重要性に基づいてそれらに処理およびメモリ資源を割当てる。
 gスプライトに対する負担は、それが占有するメモリと、それをレンダリングする為に必要な処理とに関して測定することが可能である。もし、gスプライトイメージが一定の解像度すなわちスクリーン解像度で記憶かつレンダリングされるのであれば、gスプライトにより蒙る負担はそのスクリーンの大きさにより決定される。
 処理およびメモリ資源の割当ては、スクリーン上における対象物の単なる占有サイズではなく、その種類および位置に基づくことが重要である。シーンのフォアグラウンドにおいて有効対象物は、バックグラウンドにおけるものよりもシーンに対して重要であるのが通常である。しかし乍ら、もしgスプライトがサイズに基づいて資源を割当てられたなら、バックグラウンドのスクリーンは一層大きいことから処理およびメモリ負担は一層大きくなる。
 システムは、スクリーンの解像度をgスプライトの解像度から切り離し、gスプライトの負担をその最終的なスクリーン範囲から独立させて設定することも可能である。また、システムはこれを達成する上で、gスプライトの解像度を適切に選択し、次に、gスプライトを適切なサイズに換算する。
 倍率もしくは縮尺率は、イメージのスクリーン上での大きさおよびgスプライトの解像度から導くことができる。典型的には、グラフィックスアプリケーションがスクリーンの大きさを与える。また、グラフィックスアプリケーションが解像度を指定する。代わりに、利用し得る資源とシーン内のgスプライトの相対的重要度とに基づいてイメージプリプロセッサがgスプライト解像度を決定することも可能である。
 作動時にイメージプロセッサは出力装置座標内の領域にgスプライトをレンダリングするが、この領域は、視認空間内でgスプライトが実際に占有するものよりも小さい。gスプライトがレンダリングされる領域のサイズは、解像度およびスクリーンの大きさから導かれる。レンダリングされたgスプライトは次に、スクリーンの大きさにより定義される実際のサイズに換算される。gスプライトは小さな領域を有することから、レンダリングの為に消費するメモリおよび資源は一層少ない。更に、図示された実施例においては、解像度が変化するgスプライトもまた共通のグラフィック情報経路内で処理される。
 この試みをサポートするひとつの方法は、gスプライトデータ構造内に倍率もしくは縮尺率を記憶することである。次にこの縮尺率は、gスプライトが他のgスプライトと合成されて表示イメージを生成する前の換算に使用され得る。イメージプリプロセッサはgスプライトの換算を行い得る。より詳細には、上述の内容を実行する上では、DSP がgスプライトを換算する。
 gスプライトが低い解像度に換算され得る様に、それはひとつのサイズにレンダリングされてから小さな表示領域に換算され得る。この技術は、シーン内でサイズが小さくなっていく対象物に適用され得る。フレーム毎に対象物をレンダリングする代わり、システムは対象物を表すgスプライトを換算することができる。この試みは、gスプライトデータ構造内に縮尺率も記憶することで行われる。
 上記では、イメージ処理システムによるgスプライト処理を記述すると共に、gスプライト変換が如何にして計算されてイメージ処理システム内で適用されるのかを記述した。以下には、ピクセルデータを変換、合成および表示する方法を詳述する。
 この実施例においては、DSP 176 はgスプライトデータ構造を設定すると共に、それらをイメージ処理ボード174 上の共有メモリ内に記憶する。DSP 176 は、タイラを通してメモリマップインタフェースによりgスプライト・エンジン・レジスタに読み書きを行う。gスプライトエンジン内のレジスタは、現在の表示リストへのポインタを含んでいる。また、gスプライトエンジン436 を更に詳細に読むことにより、図12に関する処が提供される。
 gスプライトエンジン204 への主要入力はgスプライト表示リストである。
 図24は、表示リスト800 の一例を示している。これを実現する上で、表示リスト800 は、その各々がバンドマスク802 を伴うSCB(スプライト制御ブロック) ハンドル804 と称されるgスプライト制御ブロックアドレスの配列を備えている。リスト800 内の最初のワードは、リスト内のgスプライトの個数を含んでいる。バンドマスク内でビットがセットされていれば、このバンド内にgスプライトが存在していることが示される。此処では特定の実施例が与えられているが、表示リストは別の手法に依っても実現され得る。例えば、リストは各バンドに対する別個のリストから成り、各バンドリストが当該バンドに影響するgスプライトを列挙することも可能である。上述の如く、表示リスト内のgスプライトは深度の順番で記憶され、この場合は前から後への順序で記憶される。
 gスプライト制御ブロック(SCB)806は、gスプライトをスキャンして装置座標を出力する情報を含んでいる。矩形のgスプライトはアファイン変換のもとではスクリーン空間内に平行四辺形としてマッピングされる。
 gスプライトのエッジ式は次の形態を有している:A0x + B0y + C0=F0; A1x + B1y + C1=F1; -A0x + B0y + C2=F2; -A1x - B1y + C3=F3。これらの式の各右辺は、夫々の辺部でゼロである。DSP 176 は、gスプライトに対するアファイン変換から係数の値を決定する。アファイン変換の後、gスプライトの形状は平行四辺形であることから、係数A およびB の2組のみの記憶が必要とされる。C 項は全く必要とされない、と言うのも、gスプライトエンジンが必要とするのは始点におけるF の値と、スクリーン空間X およびY 内でのステップによりF の値が如何に変化するのかの記述であり、それは係数A およびB により与えられるからである。出力装置座標への記憶gスプライトデータのマッピングをサポートする為に係数の符号が設定されるが、それは、平行四辺形内の点の座標がエッジ式で評価されたときに結果が正の数になる如く行われる。
 詳細には、SCB が含むのは:A0、B0;A1 、B1; F0、F1、F2、F3; 最左点 xs, ys;最右点 xf, yf; Gスプライトの頂部への最左点の勾配;底部への最左点の勾配;および、平行四辺形の幅および高さである。
 スキャンの開始点は平行四辺形の最左点であり、スキャンはスクリーン空間内で左から右へ向かって列毎に移動する。gスプライトを各32スキャンライン・スクリーンバンドにクリップする為に、SCB は始点(最左点)から頂部および底部への勾配dx/dy を含むことから、特定のスクリーンバンド上の最左点が決定され得る。
 平行四辺形のエッジ式はDSP 176 上で正規化されるが、これは、平行四辺形のひとつの辺にて「F=0 」となり、対向辺にては「F=gスプライトの幅もしくは高さ」となる如く行われる。従って、平行四辺形の辺0 および1 に対するF の値は、特定のスクリーン位置X 、Y における特定のgスプライトイメージサンプルS 、T を直接的に調べるために使用することが可能である。スクリーンX 、Y からgスプライトS 、T へのマッピングがgスプライトイメージサンプル上に直接的に落とされることは稀であることから、gスプライトエンジンは直近の4個の(もしくは16個の)gスプライトイメージサンプルを補間して出力サンプルを求める。
 SCB 806 は、元のgスプライトのサイズ(水平および垂直ストライド)と、スキャンすべきサブgスプライトのサイズおよび位置(幅、高さ、出発S およびT )とを含む。それはまた、イメージ塊が如何に圧縮されると共にこのイメージ塊内でどのピクセルフォーマットが使用されたのかを記述するフラグも含み得る。
 切片技術においては、gスプライト(gsprite)は、32x32ピクセルチャンクに分けられる。再生のためにグスパイトをチャンクにする必要はない。しかしながら、切片技術は、上述したように、多くの利点を有している。切片技術を支援するために、SCBは、圧縮チャンクの第1語用の共有記憶領域におけるアドレスを表示する圧縮チャンクの二次元配列ポインタ(チャンクハンドル)を有している。チャンクメモリーは、512ビットブロックで処理される。各ポインタすなわちクハンドルは、18ビットであり、全部で16MBのアドレス指定可能メモリとなるものである。各チャンクを圧縮するのに必要なメモリー量は可変であるため、各512ビットブロックは、次のブロックのための18ビットポインタを含んでいる。もはや不要となったブロックは、解放されたブロックのリンクされたリストに追記されるので、これらブロックは、別のチャンクで使用可能である。
 gスプライトに割り当てられた対象物をチャンクに分割すると、グスパイトデータ構造は更新され、gスプライトの画像データを含むチャンクに対する参照が含まれるようになる。
 gスプライトデータは、別のgスプライトで例示できる。第20図で示した例では、一つのgスプライトが別のgスプライトからの画像データを例示している。ここで、SCBの第1チャンクハンドル(808)が別のgスプライトのSCB810を指している。別つの方法では、チャンクハンドルは、チャンクが記憶されている記憶領域中の位置を指す。第25図は、2個のチャンクgスプライトによる6個のチャンクがディスプレイの水平バンドにマップする態様の事例である。第25図は、画像データをgスプライトスペースから物理的出力装置スペースまで走査に使用される出発点836と終了点834を示している。gスプライト画像データがどのようにして出力装置スペースにマップされるかを以下に詳細に説明する。
 フレーム中のgスプライトの関連変化を再生および計算した後、画像プロセッサは、表示を行う。第21図で示すように、画像プロセッサは、gスプライトを物理的出力座標に変換してgスプライトを合成する。ピクセルデータを合成後、画像プロセッサは、これをディスプレイに転送する。
 本実施例では、gスプライトエンジンは、表示リスト中で読み、gスプライト画像を出力装置座標にマップする。gスプライトエンジンがgスプライトデータを変換し、ついで表示のためにピクセルデータを合成バッファに送る。合成バッファは、好ましくは、複式としてピクセルデータを別のバッファで合成している間に合成ピクセルデータをブッファから変換出来るようにする。
 さらに具体的には、gスプライトエンジンは、共有記憶領域からのgスプライトAYUVフォーマット画像データを読み、圧縮解除変換して、ついでこれをフィルタしてARGBフォーマットに変換する。さらにこのデータは、ビデオレート(例えば、75Hz)で合成バッファに送られる。合成バッファは、圧縮解除されたARGBピクセルを1334x32フレームバッファに合成する。
 第26図は、gスプライトエンジンが画像データを処理する態様を示している。フレーム同期信号を858受信時、gスプライトエンジンは、各バンドを通してフレームをループ処理し、バンド(862)中で各gスプライトを走査する。バンドにおいてgスプライトを走査後に次のバンド(860)に移動する。gスプライトエンジンは、ビュウスペースの各バンドでの走査を繰り返す。
 リアルタイムアプリケーションでは、gスプライトエンジンは、フレームレートにより指定された時間内に走査を完了しなければならないので、gスプライトエンジンは、バンドごとにすべてのgスプライトを処理できなくても良い。
 このような場合を回避する手だてとして、gスプライトエンジンは、自由処理時間に各バンドについての各フレームをホストに戻す。この情報を利用して画像プロセッサは、必要に応じて対象物を集合させていずれの個々のバンドがオーバーロードになるのを防いでいる。
 gスプライトスペースからのピクセルを走査するにおいて、gスプライトエンジンは、ピクセルデータを出力装置座標(866)へ変換する。従来の多数の走査技法のいずれをもgスプライトを走査して装置座標を出力するに使用可能である。逆方向および順方向のいずれのマッピングも可能である。gスプライトエンジンは、本実施例では、逆方向マッピング法を利用している。
 SCBのエッジ方程式データを使用して、gスプライトエンジンは、gスプライトをクリップして各バンドにおける走査の開始する位置を決定する。例えば、第25図は、gスプライトのエッジが第3バンド(830,832)にクロスするかを示している。交差点がこの個々のバンドにおけるgスプライトの開始点と終了点となる。一つの走査法では、開始点からジグザグなパターンで走査する。バンドの開始点は、出力装置座標における交差点に最近接するピクセルを出すことにより見つける。開始点が演算でされれば、gスプライトエンジンは、gスプライトの外側にでる、すなわちバンドの外にでるまで増加方向にステップアップする。次いで1行右へステップしてもgスプライトの外側にでる、すなわちバンドの外にでるまでステップダウンする。各ステップで、gスプライトのピクセルデータを補間し、ピクセル位置のピクセル値を得る。各位置でのピクセル値を演算した時に合成バッファにピクセルデータを送り合成をする。
 第27図は、gスプライトエンジンと合成バッファが画像データのバンドを処理する態様を示している。この図では、“バンド”なる語は、ピクセルデータのバンドを処理するために割り付けられた時間の量(バンド周期)に関するものである。第27図に示すように、gスプライトエンジン204は、バンド888のバッファ210を満たし、これにより合成画像データがディスプレイ892まで走査される。複式バッファを利用することで、これらステップが引き続くバンドにわたりオーバラップされる。gスプライトエンジン204が一つのバンド890の合成バッファを満たしている間に合成バッファは、別のバンドの合成画像データをDCA212,892に転送する。次のバンド周期で現在合成されたばかりのバントがディスプレイ894表示される。ディスプレイ上の各バンドにつき、この処理を繰り返す。この複式バッファのによりピクセルを変換合成する行程は、バンドを表示する行程と同時に行うことができる。
 gスプライトとは、リアルタイムで合成でき、出力装置で表示される画像を発生させる。合成バッファは、二つの32走査線バッファを有し、その一つは、合成に使用され、もう一つは、表示のためのビデオデータを発生させるために使用される。この二つのバッファは、交互にやり取りされて一つの走査領域が表示されている間に次の走査領域が合成される。
 gスプライトデータは、合成すべき各ピクセルにつき一次カラーデータとα
 データとを合成バッファに転送する。32走査線αバッファは、合成に使用される走査線バッファと関連させる。gスプライトデータは、前後の順に処理されるので、αバッファは、各ピクセルの不透明さを蓄積して、正しいアンチエーリアシングおよび透過を可能とする。
 走査線カラーバッファは、0.0(全ビットが休止)に初期化され、しかしてαバッファが1.0(全バッファがセット)に初期化される。各ピクセルにつき、走査線バッファにロードされたカラーが計算される。すなわちcolor(new) = color(dst) + color(src)*alpha(src)*alpha(dst)。αバッファに記憶されたα値は、alpha(new) = alpha(dst)*(1 minus alpha(src))により計算される。好ましくは、カラールックアップテーブル(LUT)は、256x10ビットである。残りのビット(10vs8)は、提供されたより正確なγ補正に使用しうる。
タイル張り
 上述したように、画像プロセッサ(第1図)は、走査−変換を行い、さらに隠れた表面を除去し、アンチエーリエシング、透過度計算、組織化、陰付けが行われる。本章では、走査変換、隠れた表面の削除およびアンチエーリアシングの透明度の演算を詳細に説明する。
 第4B図は、幾何学的プリミティブからの再生画像を発生する画像プロセッサ462の部分を示すブロック図である。本実施例では、画像プロセッサ462は、ラスタライザ464,ピクセルエンジン466、アンチエーリアシングエンジン468、ピクセルバッファ470含むラスタ化バッファおよびフラグメントバッファ472を含む。“ラスタライザ”は、例えば、多角形などの幾何学的プリミティブからピクセル値を決定する画像処プロセッサの部分に関するものである。ラスタライザ464は、プリミティブデータを読みとり、ピクセル位置に関連したピクセル値を出力する。このピクセルデータには、カラー、αおよび深さ(観察点からの距離)を含む。ピクセルが多角形のみに完全にカバーされない場合は、ラスタライザは、ピクセルフラグメントデータを発生する。
 多角形の変換時、ラスタライザは、ピクセルデータをピクセルエンジンに転送して処理する。ピクセルエンジン468は、ラスタライザからのピクセルデータを読みとり、どのピクセルデータをピクセルバッファやセグメントバッファに記憶させるかを判断する。ピクセルバッファ472は、二次元配列であり、配列の要素は、ピクセル位置に相当し、カラー、αおよび深さデータを記憶するメモリを含んでいる。フラグメントバッファ470は、フラグメントデータを記憶し、ピクセルの部分的カバーを与える。
 ピクセルエンジン466は、ラスタライザで発生された深さ値を利用して隠れた表面の除去を行い、またアンチエーリアシングと透明処理のためのピクセルフラグメントおよび不透明ピクセルを保持する。所与のピクセル位置に対して、最近接の完全カバーされた不透明ピクセルがあれば、これを保持する。この点に関して、“完全カバー”は、走査され、ラスタライザにより変換された多角形に完全にカバーされるピクセルを意味している。またピクセルエンジンは、透明度(1>α)を有するピクセルとピクセルフラグメントを最近接不透明ピクセルの前方に保持する。ピクセルエンジンは、ピクセルバッファにるピクセル位置に関しての最近接不透明ピクセルを記憶し、フラグメントバッファには、最近接不透明ピクセル前方にあるピクセル位置におけるフラグメントすなわち不透明ピクセルをフラグメントバッファに記憶する。
 ピクセルエンジンがピクセルデータを発生後、アンチエーリアシングエンジン468は、ピクセルおよびフラグメントバッファ内のピクセルデータを解析する。第4B図に示した画像プロセッサのデザインは、ピクセルデータの複式バッファとフラグメントデータの単一バッファの構成となっている。ピクセルエンジンは、ピクセルデータをピクセルバッファの一つで発生し、フラグメントバッファにフラグメント情報を追加し、この間にアンチエーリアシングエンジンは、別のピクセルバッファかのピクセルデータおよびフラグメントバッファからのフラグメントバッファを解析する。各フラグメントが解析されると、フラグメントエントリが、新たなピクセルデータにより使用されるフラグメントフリーリストに記入される。
 ピクセルデータを発生および解析するプロセスを概略したが、実施例を詳細に説明する。
 第4B図のコンポーネントは、タイラーを充足するものである。タイラーは、プリミティブデータならびに共有記憶領域システム216(第4A図)からの再生指示を読みとり、再生画像データを発生し、共有記憶領域に圧縮画像データを記憶する。上述したように、システム中の基本3−Dグラフィックプリミティブは、三角形である。三角形は、常に平面でかつ凸であるので、三角形再生は、グラフィック発生に使用するハードウェアにおいて数々単純化を与えるものである。しかしながら、こり代わりに、n片の多角形を使用することもできる。
 タイラー200のコンポーネントについては上述した。次ぎにタイラー内のデータの流れを説明する。
 タイラーは、DSPからの入力を受けるので、DSP176(第4図)の機能の再生から始める。上述したように、DSP176は、フロントエンド幾何学を実施し、3−Dグラフィックに要される照明計算を行う。DSP176は、モデル、窓表示域変換、クリッピング、照明などを行う。再生コマンドは、主メモリバッファに記憶され、PCLバス上で画像処理ボードにDMA(直接メモリアクセス)される。再生コマンドは、次いで共有記憶領域216(第4A図)にDSPで必要とされまで一時的に記憶される。再生コマンドは、画像処理動作を行う準備が整った時に、タイラー200(第4A図)により読みとられる。
 第28A図と第28B図のフロウチャートに示すように、セットアップブロックは、共有記憶領域から読みとられたプリミティブ再生指示を処理する。頂点入力プロセッサは、入力ストリーム(914)(第28A図)を分析し、頂点制御レジスタ(916)にプリミティブ三角形処理に必要な情報を記憶する。
 二つの頂点制御レジスタが、それぞれ3づつ、6個の頂点を記憶する。二つの頂点制御レジスタは、三角形情報を複式バッファ処理を可能としてセットアップエンジンが常に処理する三角形情報をを有するようにする。
セットアップエンジンは、次いでエッジ、カラーおよび三角形表面を横断する組織座標補間を決定する線形方程式(918)を計算する。これらの線形方程式は、どの組織ブロックが三角形の再生に必要かを判断するものである。エッジ方程式は、走査変換ブロック(920)に通され、走査変換エンジンが必要とするまで走査変換ブロック以内のプリミティブレジスタに記憶される。プリミティブレジスタは、エッジ方程式の多数セットを記憶可能である。
 セットアップエンジンは、組織アドレスを、組織チャンク用のリクエストを一時的に記憶する組織リードキュー(922)に転送する。組織アドレスレジスタは、次いで、要求された組織チャンク(924)のメモリ中のアドレスを決定し、組織読み取りリクエストを、走査変換ブロックにより使用される組織データ(928)を取り出すコマンド記憶制御ブロック(926)(第28B図)に送る。
 組織データは、画像フォーマットと同じ形式でも良い圧縮画像フォーマットで共有記憶領域(216)(第4A図)に記憶される。圧縮フォーマットは、個々の8x8ピクセルブロックでなされる。8x8ブロックは、メモリ管理費用を低減するためのメモリ管理の目的で、32x32ブロックにグループ化される。
 組織ブロックが必要となった時に、これらは、タイラーに取り込まれ、圧縮解除エンジン(930)により圧縮を解除され、オンチップ組織キャッシュ(932)でキャッシュされる。各ブロックがただ一つのカラー成分を記憶可能であったとしても、総じて328x8ピクセルブロックがキャッシュ可能である。組織データは、RGBおよびαフォーマットでキャッシュされる。
 走査変換エンジンは、プリミティブレジスタ(934)からエッジ方程式を読み取り、三角形エッジ情報を変換する。走査変換エンジンは、三角形のエッジを歩行し、カラー、深さ、透明度などを補間する補間器を含む。
走査変換エンジンは、組織アドレスを組織フィルタエンジン(936)に転送する。組織フィルターエンジンは、再生しようとしている多角形用の組織データを計算する。組織フィルタエンジンは、Z−スロープ、三角形の原点、sおよびt座標の基づくフィルタの殻を演算する。組織フィルタエンジンに付随する組織キャッシュは、16の8x8ピクセルブロック用データを記憶する。組織キャッシュは、圧縮解除エンジンにも連通している。この圧縮解除エンジンは、組織データ(圧縮状態で記憶されている)を圧縮解除して組織フィルタエンジンによる使用に具する。
 組織フィルタリングが完了すると、組織フィルタエンジンは、情報を走査変換エンジン(938)に戻し、さらなる処理のために走査変換エンジンにより使用可能である。組織処理の過程で、走査変換エンジンは、三角形エッジデータ(940)を変換し、カラーおよび深さ情報を含む個々のピクセルアドレスがピクセルエンジンに転送され処理(942)される。
 第28A図および第28B図に図示の方法は、第10図と第11図に関連して説明した代替方法に関して変化する。第28C図および第28D図は、第10図と第9B図に争闘する画像データをアクセスする方法を示している。同様に、第28E図と第28F図は、第11図と第9C図に相当する画像データをアクセスする方法を示している。
 第28C図と第28D図を参照して、この方法の実行は、第9B図のセットアップブロック381で始まる。頂点入力プロセッサ384は、入力データストリーム(947)を処理する。次に、頂点制御レジスタ386は、入力データストリーム(948)からの三角形データを一時記憶する。セットアップエンジン388は、次いでエッジ方程式(949)を計算し、この結果を走査変換ブロック395(950)に転送する。
 走査変換ブロック395は、プリミティブレジスタ(951)に記憶されたエッジ方程式を読み取り、三角形データ(952)を走査変換する。走査変換エンジン398は、次にピクセルアドレス、カラーおよびαデータならびにカバレッジデータを含むピクセルデータを組織参照データーキュー399(953)(第28D図)におけるエントリに書き込む。組織マッピング動作の場合において、このエントリは、組織参照データすなわち組織の中心点の座標を含む。エントリは、またレベルデータや異方性フィルタデータを含んでも良い。
 組織参照データから、組織キャッシュ制御装置391は、どの組織ブロックを取り出すかを判断し、適正の組織ブロックがメモリ(954)から取り出されるようにする。組織アドレスキャッシュ制御装置391は、組織読み取りリクエストをコマンドメモリシステム380(955)に転送する。組織読み取りキュー393は、組織ブロック用の読み取りリクエストを共有記憶領域システムに一時記憶する。メモリ制御装置380は、共有記憶領域からの組織データを取りだし、圧縮されていれば、圧縮ブロックを圧縮キャッシュ402(957,958)に配置する。第10図に関して上述したように、組織キャッシュ中のブロックの交換は、キャッシュ交換アルゴリズムに従って進行する。
 組織キャッシュ中の画像データを要求する組織マッピングあるいは別のピクセル動作を実行するために、組織フィルタエンジン401は、組織キャッシュ402に中の画像データにアクセスし、組織の寄与を計算し、この寄与を組織参照データキュー399(955)からのカラーデータとおよび多分αデータとも組み合わせる。組織フィルタエンジン401は、ピクセルデータをピクセルエンジン406に転送し、これによりピクセルエンジンは隠れた表面の除去を行い、ラスタ化バッファへのピクセルデータの記憶の制御をする。
 第28E図と第28D図は、第11図の方法に相当するメモリからの画像データのアクセスする方法を示している。この代替方法の実施においは、セットアップブロック283のプリミティブを消去することから開始される。頂点入力プロセッサ384は、入力データストリームを解析し、頂点制御レジスタ387(961,962)の三角形データを待ち行列に入れる。組織マッピング動作におけると同様に、画像データブロックをメモリからアクセスする必要があれば、プリレジスタライザ389は、頂点制御レジスタ386で待ち行列となっているプリミティブを走査変化して共有記憶領域963中の組織データブロックの読み取りリクエストを発生させる。
 プリラスタライザがセットアップブロックで待ち行列となっているプリミティブを走査すると、組織読み取りリクエストが組織キャッシュ制御装置391(964)に転送される。組織キャッシュ制御装置391は、適正組織ブロック(965)を決定し、読み取りリクエストを組織読み取りキュー393を介してコマンドメモリ制御ブロック389(989)(第28F図)に転送する。メモリ制御ブロックは、要求された組織データを取りだし、圧縮状態であれば、圧縮キャッシュ416(990)にこの組織データを記憶する。圧縮解除エンジンは、圧縮キャッシュ416内の組織ブロックを圧縮解除して圧縮解除したデータを組織キャッシュ402(991,992)に書き込む。組織キャッシュ制御装置は、圧縮キャッシュ416から圧縮解除エンジン404から組織キャッシュ402への組織ブロックのフロウを管理しする。
 走査変換ブロック397は、セットアップブロックで待ち行列となっている幾何学的プリミティブを読み取る。走査変換ブロック397は、組織キャッシュブロック402で要求された組織データが利用可能であれば即座にピクセル発生動作を実行する。これらピクセル動作の過程で、走査変換エンジン398は、プリミティブレジスタ(993)からエッジ方程式を読み取り、組織アドレスを組織フィルタエンジン403(994)に転送する。組織フィルタエンジンは、組織キャッシュ402中に記憶された適正画像データにアクセスし、次いでフィルタされたデータを走査変換ブロック397(995)に戻す。走査制御変換ブロック397は、三角形データを変換し、変換された三角形データおよぴフィルターされたデータ(996)から出力ピクセルデータを演算する。次いでこの出力ピクセルデータをピクセルエンジン406に送る。
 ピクセルエンジン406は、隠れた表面の除去とブレンド動作とをむピクセルレベル計算を実行する。隠れた表面の除去を実行するため、ピクセルエンジン406は、入力してくるピクセル(完全にカバーされたピクセルあるいはピクセルフラグメント)のための深さ値とピクセルあるいはフラグメントバッファ中の相当位置でのピクセルと比較する。陰影動作では、ピクセルエンジン406は、深さ比較動作を実行し、シャドウマップ中の位置での光源に最近接する第1と第2プリミティブを決定し、必要に応じて第1と第2の最近接プリミティブを更新する。ピクセルレベル計算の実行後に、ピクセルエンジンは、ピクセルあるいはフラグメントバッファに適正データを記憶する。
 タイラーは、非不透明ピクセルを取り扱う高品質アンチアリエーシングアルゴリズムを実行する。ピクセルバッファは、チャンク中のピクセル位置に関する最先端非透明ピクセル用のピクセルデータを記憶する。フラグメントバッファは、半透明のピクセル用の、および相当する位置におけるピクセルバッファ中のピクセルより観察点に近い部分的にカバーされたピクセル用のピクセルフラグメントを記憶する。一つのピクセル位置に関して一つ以上のフラグメントがフラグメントリスト構造を利用して記憶することが出来る。解析と称されるプロセスにおいて、アンチアリエーシングエンジンは、フラグメントリストを処理してピクセル位置に関するカラーとα値とを演算する。
 発生するフラグメント数を減らすために、ピクセルエンジンは、発生中のフラグメントと現在バッファに記憶されているしているフラグメントを比較するピクセルフラグメントとをマージする方法を実施する。新と旧のフラグメントの寄与(カラーと深さ)が既設定の許容範囲で同等ならば、フラグメントは、フライ上で組み合わされ、さらに別のフラグメントが発生することがない。
 組み合わされたフラグメントが完全にカバー(完全カバレッジマスクと不透明αとともに)されたものと判断されたら、フラグメントは、カラーバッファに書き込まれ、フラグメント位置が現在のチャンク内の引き続く多角形に使用されるまで解放される。
 チャンクのすべての多角形が際されたならば、ピクセルバッファがスワップされる。一方アンチアリエーシングエンジンがフラグメントバッファとピクセルバッファの一つとのピクセルデータを解析している間に、ピクセルエンジンは、次のチャンクのピクセルデータを別のピクセルバッファに書き込み、また残りの解放位置をフラグメントバッファに書き込む。一般に、ピクセル解析は、ピクセルおよび位置相当フラグメントバッファ中におけるピクセルデータに基づくピクセル位置の単一のカラー値(および多分αも値も)を計算する段階を含んでいる。これらについて以下に詳細に説明する。
 第9A図から第9Cに図示の図タイラーの実行動作において、ピクセルエンジンは、単一のフラグメントバッファと一対のピクセルバッファとをアクセスする。32x32ピクセルバッファは、ピクセルエンジンとアンチアリエーシングンとの間の複式バッファのために提供されている。ピクセルバッファエントリは、以下のデータを包含する。
Figure 2004046886
 ここでR、G、Bは、赤、緑および青のカラーコンポーネントであり、αは、ピクセルのの半透明度を示すα成分であり、Zは、眼点からのピクセルの深さを示す深さ成分である。x、yアドレスは、固定され暗にピクセルバッファアドレスを意味する。一カラー成分(すなわち赤、緑、青)ごとに8ビットが用いられ、8ビットがα成分に用いられ、26ビットがZ値、ステンシル値および優先値を与えるために用いられる。26ビットのうち、24ビットまでが、Z値として用いられ、3ビットまでがステンシル面として用いられ、3ビットまでが優先値として用いられる。第9図に関して上述したように、バッファは、また9ビットのフラグメントバッファポインタを含んでいる。
 優先値は、プリミティブごとに固定され、Z比較動作中記憶されたZ値と比較して入力してくるピクセルZ値をマージすべくタイル張りエンジンにより用いられる優先関係を利用して地形の頂上のロードなどの共通平面上の対象物の解析を支援する。
 フラグメントバッファは、エッジがて所与のピクセルとクロスする多角形の、あるいは半透明度を持った多角形のピクセルフラグメントについての情報を記憶するのに使用される。フラグメントバッファの各エントリは、カラー、α、Zおよび表面と関連するカバレッジデータを提供する。
 多フラグメントバッファエントリは、多角形が同じピクセル位置で部分カバレッジを有している場合のための単一ピクセルと関連づけられる(リンクされたリストメカニズムを介して)。フラグメントバッファは、複式ポートであり、アンチアリエーシングエンジンとピクセルエンジンの双方により並行に動作可能である。フラグメントバッフアの実施の一つにおいて、フラグメントバッファは、フラグメント記録の一次元配列であり、総じて512のフラグメント記録エントリを含む。フラグメントバッファのメモリ管理は、リンクされたリスト構造を用いて実行される。各フラグメントバッファエントリは、以下のデータを含んでいる。
Figure 2004046886
 ここでR、G、Bは、赤、緑、青のカラー成分であり、αは、ピクセルの半透明度を示すα値であり、Zは、眼点からのピクセルの深さを示すZ値であり、Mは、部分的にカバーされたピクセル用の4x4ピクセルカバレッジビットマスクであり、Pは、次のフラグメントバッファエントリに対するポインタであり、Sは、フラグメントステンシルを示すために用いられる。8ビットがカラー成分(すなわち赤、緑、青)ごとに用いられ、8ビットがα成分ごとに利用され、26ビットがZ値+ステンシルと優先度とを記憶するために用いられ、9ビットがフラグメントポインタのために用いられる。
 ピクセルカバレッジマスクは、各エッジのカバレッジマスク値を決定し、これらをビット方向にANDをとることにより演算される。カバレッジマスクの演算は、2段階のプロセスで行われる。第1段階で、カバレッジマスク中のサブピクセルのいくつがオンになるかを判断し、第2段階でどの特定ビットが有効であるかを決定する。
 第1段階は、いくつのカバレッジマスクビットがオンとされようとしているかを決定すべくエッジによりカバーされるピクセルエリアに使用される。このエリアは、エッジスロープとピクセル中心からの距離で索引されるテーブルルックアップにより演算される。第2段階は、エッジスロープを利用してサンプルビットがオンとなる順序を決定する。ビット順序のセットが、“カバレッジ順序”テーブルと称される既演算テーブルに記憶させる。各カバレッジ順序テーブルエントリは、スロープ値の範囲に関して正しいサンプルビットの特定順序からなる。エッジスロープは、スロープ範囲のセットに対してテストされ、このスロープ値の
を含む範囲と関連する索引がカバレッジ順序テーブルへの索引として使用される。
 カバレッジマスクの演算方法は、Schilling, A. の“サブピクセルマスク付きの新単純有効アンチアリエーシング”Computer Graphics 第25巻、No.4、1991年7月、第133頁から第141頁。
 隠れた表面の除去およびフラグメントマージング
 ピクセルエンジンが、入力してくるピクセルデータについて深さ比較動作を行うことにより隠れた表面の除去を行うことを上述した。またピクセルフラグメントがマージされ、フラグメントメモリを解放することも上述した。フラグメントマージングは、記憶要求を低減し、所与のシーンをアンチアリエースし、フラグメント解析の速度を上げ最終画像を生成する。隠れた表面の除去の実施方法につき説明する。これには、入力してきたフラグメントが記憶されたフラグメントの既決定カラーと深さの許容範囲内にある場合に入力してきたピクセルフラグメントを記憶されたピクセルフラグメントとマージする方法も含んでいる。
 第4B図は、ラスタライザ464、ピクセルエンジン466,ピンセルおよびフラグメントバッファ470,471とを含むタイラー462内のコンポーネントを図示するブロック図である。ピクセルおよびフラグメントバッファは、選定したピクセルデータを記憶するためのラスタ化バッファとなる。ラスタライザが幾何学的プリミティブを横断する際にピクセルデータの事例を発生する。ピクセルエンジンは、Zバッファ動作を制御し、さらに入力してくるピクセルフラグメントが、相当するピクセル位置でフラグメントバッファに記憶されたピクセルフラグメントとマージ可能かどうかを判定する。第9A図から第9C図に図示のタイラーならびに上述の関連説明は、タイラーの具体的実施方法に関するさらなる詳細を与えるものである。以下に説明するピクセルフラグメントのマージングの方法並びにハードウェアは、これらタイラーの設計および同様な代替設計において実施できるものである。
 上述のしたごとく、タイラー内の走査変換ブロック(ラスタライザ)は、1)完全にカバーされた不透明ピクセル、2)完全にカバーされた半透明ピクセル、3)部分的にカバーされた不透明ピクセル、4)部分的にカバーされた半透明ピクセル表示するピクセルデータの事例を発生させる。
 ピクセルバッファは、最先端の完全にカバーされた不透明ピクセルのカラーおよび深さ(Z)を記憶する。またピクセルバッファは、充分にカバーされていないカバレッジマスクあるいは、充分に不透明でないαを有するフラグメントを含むフラグメントリストに対するポインタを記憶する。フラグメントリスト中のヘッドすなわちだい1フラグメントは、もっとも最近処理されたピクセルフラグメントである。この特定の実施方法では、ピクセルエンジンは、入力してくるピクセルフラグメントともっとも最近のピクセルフラグメントとをマージする。多角形の再生には、ある量の特殊なコヒーレンスがあるので、所与のピクセル位置に関して発生したもっとも最近のフラグメントとのマージングは、マージの成功度を増大させる。
 各ピクセル位置に対するフラグメントリストは、分類してない形式で保持されている。またヘッドフラグメントは、特定ピクセル位置で発生したもっとも最近のフラグメントである。ヘッドフラグメントの背後のピクセルフラグメントは、分類されていないが、フラグメント解析段階の最適化を支援するために付加的演算時間が得られるのであれば、分類が可能である。
 別の代替実施方法において、ピクセルエンジンは、フラグメントマージ基準合致するピクセルフラグメントをフラグメントリストで検索するために付加的ロジックを含んでいる。この方法は、検索ロジックのオーバーヘットがより高いマージ候補を認識する際のインクリメンタルな改良を正当化しな理由で好ましくない。これは特に、マージプロセスで消費される付加的クロックサイクルがアニメーションのフレームを再生するに必要な時間を増大するリアルタイムシステムでは特にそうである。
 別の実施方法では、ピクセルエンジンは、ピクセルフラグメントの深さ分類リストを保持し、かつ所与のピクセル位置での観察点に最近接するフラグメントとのマージを試みる。この最後の方法は、しかしながら、好ましくない。なぜなら成功しうるマージ候補すなわち、入力してくるフラグメントに対して所定許容範囲内のZ値とカラー値を有するフラグメントを見つけることが出来そうもないからである。これは、付加的なフラグメントメモリの供給単純化する潜在的利益を有している。もしマージされたピクセルが完全にカバーされ、不透明であれば、マージされたピクセルは、ピクセル位置に関して、記憶された別のピクセルフラグメントより観察点により近いので、そのピクセル位置での全ピクセルフラグメントは、解放することが出来る。
 第29図は、タイラー内の隠された表面の除去とフラグメントマージングの実施方法を示すフロウチャートである。処理は、まずピクセル位置でのカラー、Zおよびカバレッジマスク(968)を有するピクセルデータの新事例の発生で始まる。もしこの位置でのピクセルバッファZがピクセルデータの新しい事例(完全にあるいは部分的にカバーされたピクセル)(970)のZより近ければ、ピクセルデータの新しい事例は、完全に不明瞭であり、破棄される(972)。ラスタライザが被再生プリミティブの現在のセットに対してすべてのピクセルを発生するまで、処理がさらに次のピクセルデータの事例で続けられる。
 ピクセルデータの新事例のZよりピクセルバッファZが近くなければ(すなわちピクセルデータの新事例のZが観察点により近い)、ピクセルエンジンは、入力してくるピクセル(974)に対するカバレッジマスクを吟味する。入力してくるピクセルの対するカバレッジマスクが充分な場合は、ピクセルエンジンは、ピクセルバッファーカラーとZを新しいカラーとZ(976)とに入れ換える。この場合に新たなピクセルデータがフラグメントリストに追加されず、メモリが節約される。
 もしピクセルデータの新事例のカバレッジマスクが充分でなければ、ピクセルエンジンは、マージテストを行い、新しいカラーとZがヘッドフラグメントのカラーとZ(978)の所定の許容範囲内であるか否かを判定する。このマージテストは、入力してくるピクセルのα(半透明度)がヘッドフラグメント中の所定の許容範囲内にあるか否かを判断することも含めることができる。もし新しいフラグメントカラーとZが所定の許容範囲にない場合は、新しいピクセルフラグメントは、フラグメントリスト(980)のヘッドでフラグメントバッファに加えられる。
 もし新しいフラグメントカラーとZが所定の許容範囲にあり、新しいカバレッジマスクが充分でない場合は、入力してきたピクセルフラグメントは、フラグメントリスト(982)のヘッドフラグメントにマージされる。ピクセルエンジンは、ヘッドカバレッジマスクと新しいカバレッジマスクについてOR演算を行ってピクセルフラグメントをマージし、結果をヘッドカバレッジにの残す。
 カバレッジマスクの組み合わせ後、マージされたヘッドカバレッジマスクが吟味され、それが完全カバーされたピクセル(984)を示すものか否かを確認する。もしマージされたヘッドカバレッジマスクが完全でなければ、次のピクセルデータ(966)の事例で処理を継続する。もしマージされたヘッドカバレッジマスクが完全であれば、マージされたヘッドカバレッジマスクは、完全ピクセルカバレッジを与える。よって、ヘッドフラグメントに使用される記憶装置は、解放され(986)、ヘッドフラグメントカラー、Zおよびカバレッジマスクは、新しいヘッドフラグメントカラー、Zおよびカバレッジマスク(976)と入れ換えられる。
 ピクセルエンジンが、ピクセルバッファのエントリを新しい完全にカバーされたピクセルに入れ換える場合には、ピクセルエンジンは、深さ値がこの完全にカバーされたピクセル(988)より大きな相当するフラグメントリストにおける全てのピクセルフラグメントを解放する。これは、入力してくる完全にカバーされた不透明ピクセルが、同じピクセル位置でのピクセルバッファエントリより大きな深さ値を有している場合に起こる。またこれは、マージされたフラグメントが完全にカバーされた不透明のものであり、かつ同じピクセル位置でのピクセルバッファエントリより低いZを有している場合におこる。この場合には、ピクセルエンジンは、フラグメントリストを縦断して、新しい完全にカバーされたピクセルのZをリスト中のフラグメントのZと比較して、新しい完全にカバーされたピクセルのZより大きいZを有する各フラグメントを解放する。あるいは、Zバッファは、パッキングプロセスに対して省略可能であり、フラグメントリストの走査の必要性をなくし、リアルタイム性能を改良する。
 第29図に図示の方法は、所与のスクリーンをアンチアリエースするメモリ記憶要求を低減し、使用されないピクセルフラグメントを破棄することにより最終グラフィック画像を発生するためのフラグメント解析の速度を高めている。カラーとZの許容範囲を調節することにより、破棄された発生フラグメントの数を、ユーザの必要性に依存するアンチアリエーシング精度に対してバランスさせることが出できる。もしカラーとZがピクセルセンタにもっとも近い多角形のエッジで評価されれば、より狭いカラーとZの許容範囲が使用され、これでまたメモリの節約となる。
 第30図は、入力してくるピクセルフラグメントに対するマージテストを実行に使用されるフラグメントマージ回路の一例を示すブロック図である。この例では、ピクセルエンジンは、入力してくるカラー(R、G、B)、αおよび深さの各値を入力してくるピクセルの位置に関するもっとも最近のピクセルフラグメントのカラー、αおよび深さの各値と比較する。“new”と表示されているカラー、αおよび深さの各成分は、入力してくるすなわち新しく発生しされたピクセルデータの事例を示し、“prev”と表示された成分は、ピクセル位置でのもっとも最近のピクセルフラグメントである。
 ピクセルエンジンがフラグメントリストを縦断してカラーおよび深さの許容範囲内のピクセルフラグメントを発見する場合の代替実施例において、“prev”と表示された成分は、マージテストを使用して解析されるピクセル位置用のフラグメントリストにおけるピクセルフラグメントおのおのを示すもののである。
 マージテストブロック1000から1008は、新しいピクセルフラグメントと前のピクセルフラグメントとの深さ、カラーおよびαの各成分を比較し、もし新しい値と前の値が所定の許容範囲にある場合は、新しいピクセルフラグメントは、マージ候補であることを示すビットを出力する。ピクセルエンジンは、次いでビット方向のAND(1010)をとって各マージテストに合格したか否かを判定する。もしそうであれば、ピクセルエンジンは、新しいピクセルフラグメントと前のピクセルフラグメントとをマージする。ピクセルエンジンは、新しいカバレッジマスクと前のカバレッジマスクとのORをとって前のフラグメントに対する新しいカバレッジマスクを演算する。もしいずれかのマージテストに合格しない場合は、ピクセルエンジンは、新しいピクセルフラグメントをフラグメントリストのヘッドに追加する。この新しいフラグメントは、リンクされたリストの一部となり、フラグメントリストの前のヘッドを指すことになる。
 図31は、 組み合わせテストモジュール1012をさらに詳細に図示するブロック図である。 組み合わせテストモジュールは、 新規値と前回値の差の絶対値を計算する1014。 組み合わせテストモジュールの比較器1016はティラーレジスタ(tiler register)1018に格納された基準値との差を比較し、 新規値と前回値が所定の許容範囲内にあるか否かを示す論理値を発生する。 組み合わせテストモジュールから出力された論理値は図30に示すようにビット式のANDブロック1010に入力される。 ビット式のANDの出力は各色調値、 アルファ値及び深さ値が所定の許容範囲内にあるか否かを示す。 もし、 示すなら、 上記のように、 ピクセルエンジンは入って来る先頭のピクセルフラグメントを組み合わせる(merge) 。
 上述のように、 ピクセルフラグメントを組み合わせる方法に対する数多くの適用し得る変数がある。 他の方法としては、 ピクセルエンジンはフラグメントリストを調べて1)リストの末尾に達するまでか、 又は2)組み合わせテストを満足する格納されたピクセルフラグメントを見つけるまで各ピクセルフラグメントに組み合わせテストを行う。 さらに他の方法としては、 ピクセルエンジンは、 例えば、 入って来る各フラグメントで挿入ソート(insersion sort)を実行することによりピクセルフラグメントをソートされた形式に保持することができる。 ピクセルエンジンは、 入って来るピクセルフラグメントを、 観察点 (view point) に最も近いピクセルフラグメントと(最も低いz値と)のみ組み合わせを試みることができるか、 又はピクセルの位置として格納された数個のピクセルフラグメントで組み合わせを試みることができる。
ピクセルメモリのオーバーフローを防止するための画像領域の細分割
 幾何学的なプリミティブをラスタライズ(rasterize) するとき、 ティラー(tiler) はピクセルデータをピクセル及びフラグメントバッファ内に格納する。 また、ティラーはこのピクセルデータを処理ステップで解像する。 ティラーはこのピクセルデータを格納するために固定サイズのメモリを使用するので、 メモリ容量が不足する可能性がる。 この問題に取り組むために、 ティラーはメモリ容量をモニタして、 可能なら、 その時点でフラグメントメモリをオーバーフローさせていない画像部分のサイズを小さくする。
 一実施例において、 ティラーは、 たくさんの32×32ピクセルチャンク(chunk) を処理することによってグラフィック出力画像を構築する。 図32は、 ピクセル及びフラグメントバッファの一部分を図示する図である。 この例に示されるように、 ティラーは関連する512個のエントリフラグメントバッファ(1120)を使用する32×32ピクセルバッファ(1118)を解像する。 この具体例においては、 フラグメントバッファは、 32×32ピクセル出力バッファを形成するために後処理ステージで結合される512個のピクセルフラグメントまで格納することができる。 32×32出力ピクセルバッファを生成するために512個のピクセルフラグメントを使用する際に、 微細に碁盤目状に配列された対象物(object)又はかなりの半透明を含む対象物をラスタライズするときフラグメントメモリを使い尽くす可能性が明確に存在する。 これらの場合、 更なるフラグメントメモリは、 部分的にカバーされるか半透明なピクセルのピクセルフラグメントデータを格納する必要がある。 512個のピクセルエントリを有するフラグメントバッファは1024(32×32=1024)個のピクセルを格納する32×32出力バッファと同数のピクセルの1/2だけを格納する。
 このメモリの限界の問題を緩和するために、 ティラーにおけるピクセルメモリのフォーマットは階層的分解の2レベルを支持するように構成される。 図33は、この階層的分解を図示する図である。 フラグメントメモリが32×32ピクセルバッファを処理するときに使い尽くされると、 ティラーは、 ピクセルフラグメントバッファをフラッシュ(flush) すると共に、 四つの16×16ピクセルサブバッファの組(1122)に対してプリミティブの入力の流れを再処理する。 16×16ピクセルバッファを512個のフラグメントエントリメモリシステムで処理すると、 所望の出力ピクセルより2倍のフラグメントエントリを得ることができ、 部分的にカバーされるか又は半透明の数多くのピクセルで巨大な数のケースを取り扱うことになる。
 フラグメントメモリが16×16ピクセルサブバッファのいずれかを処理するときに使い尽くされると、 ティラーはピクセル及びフラグメントバッファをフラッシュすると共に四つの8×8ピクセルサブバッファのセットに対してプリミティブの入力の流れを再処理する(1124)。 16×16ピクセルサブバッファの夫々は四つの8×8ピクセルサブバッファに分割されて全部で16の8×8サブバッファになる。 8×8ピクセルバッファを512個のフラグメントエントリメモリシステムで処理すると、 所望の出力ピクセルより8倍のピクセルエントリを得ることができ、 最も考え得る複合グラフィック対象物を取り扱うことになる。8×8サブバッファの付随的な利益はそれらがピクセルデータを圧縮するのに使用される圧縮エンジンが必要とするフォーマットにあり、 更なるピクセルバッファの分解を圧縮の前に必要としないことである。
 各ピクセルサブバッファ(即ち、 16×16又は8×8のもの)は連続的に処理されるときに、 それらのピクセルは解像されて圧縮エンジンに送出される。 ティラーは完全な32×32ピクセルバッファの解像、 圧縮の順に16×16及び8×8サブバッファを処理するので、 すべてのサブバッファの処理が完了すると、追加処理を要求することなく、 圧縮されたフォーマットでシステムメモリに格納された完全な32×32ピクセルバッファが形成される。
 バッファ分解処理は要求 (demanding) ケース(例えば、 かなりの半透明、 影、及び一つ以上の光源による照明によって微細に碁盤目状の対象物を重ねること)を処理の途中で反復的に取り扱うのに適用される。 この方法を以下に説明する。
 図34A及び図34Bは、 ティラーにおけるバッファの分解方法を図示するフロー図である。 DSPは、 描出 (rendering) コマンド、 及びチャンク(chunk)と呼ばれる画像領域の間でソートされるポリゴン (polygon) を含む入力データの流れを発生する。 そして、 DSPは入力データの流れを処理のためにティラーに送出する。 その入力データの流れ中の描出コマンドに応じて、 ティラー内のラスタライザは入力データの流れの中のポリゴンをラスタライズしてピクセルデータを発生する(1130, 1132, 1136)。  この特別な例において、 フロー図は、 ポリゴンが直列に処理されることを図示している。 しかしながら、 プリミティブを描出するにはたくさんの方法がある。 プリミティブをラスタライズする手法は分解処理にとって決定的 (crytical) ではない。
 ラスタライザがピクセルデータを生成するとき、 フラグメントバッファの容量をモニタする。 この具体例においては、 ラスタライザはフラグメントメモリに加えられる各エントリのバッファカウンタをインクリメントさせ、 ピクセルデータを発生するときのカウンタの値をチェックする(1138, 1142)。 バッファカウンタの値が512に達すると、 フラグメントメモリはいっぱいになる。 この点において、 ティラーは現在のチャンクサイズをチェックしてピクセルデータをどのように細分割するかを決定する(1144, 1150)。
 ここに記載され図示されている特定の具体例においては、 メモリ分解はフラグメントメモリがその容量、 即ち512個のピクセルフラグメントに達するときに開始される。 しかしながら、 フラグメントメモリが容量いっぱいになる前に分解を開始することもできる。
 チャンクサイズが32×32ピクセルであるときは(1144)、 ティラーはチャンクサイズを四つの16×16ピクセルチャンクに分割する(1146)。そして、 ティラーはピクセル及びフラグメントバッファをクリアして(1146)現在のチャンクの入力の流れを四つの16×16サブチャンクにラスタライズするのを開始する(1158)。 この具体例において、 DSPは、 チャンクの入力の流れを再び送出する。 サブチャンク間で再ソートされたポリゴンよりむしろ、ティラーは各サブチャンクに対して繰り返しポリゴンの入力の流れを処理し、 各サブチャンク以外にあるポリゴンを拒否する。 他の方法として、 DSPは入力データの流れを再処理して、 各サブチャンク領域間の流れの中のポリゴンをソートする。 この他の方法は、 各サブチャンクのポリゴンの数を減少させるが、 DSP中の処理経費(processing overhead) を増大させる。
 ティラーは、 同様の方法で16×16サブチャンクを処理する(1150, 1152)。 現在のチャンクサイズが16×16ピクセルであれば、 ティラーはチャンクを8×8ピクセルに分割してピクセル及びフラグメントバッファをクリアする(1152)。 この具体例において、 ティラーはチャンクを8×8ブロックより小さくには再分割しない。 この場合512個の要素であるフラグメントメモリの容量は、 画像チャンクを8×8ブロックに細分割することによって微細に碁盤目状及び/又は半透明の対象物を取り扱うのに十分であるべきである。 しかしながら、 ここに記載されているティラーは一つの可能性がある方法であり、 画像のサイズを細分割する必要性は、 シーン (scene) の複雑性、 サポートされたアンティエーリアシング (anti-aliasing) 及び半透明性の形成、 フラグメントバッファのメモリ容量のような要因によって変化する。
 バッファカウンタが8×8ピクセルブロックに対して512に達すると、 ティラーは更に8×8ピクセルチャンクと関連するピクセルフラグメントを解像してバッファスワップを行う(1154)。 8×8チャンクが解像された後で、 ティラーはさらに8×8ピクセルチャンクがあるか否かをチェックする(1156)。更に8×8ピクセルチャンクがあれば、 続いて次の8×8サブチャンクのポリゴン処理を再び開始する(1158)。
 他に8×8チャンクが残っていなければ、 ティラーは更に16×16ピクセルチャンクがあるか否かをチェックする(1148)。 16×16ピクセルチャンクが残っていれば、 ティラーは残った16×16ピクセルサブチャンクに対してポリゴン処理を再び開始する(1158)。 他に16×16ピクセルチャンクがなければ、 ティラーは次のチャンクに対して入力データの流れを作り(1160)、その中でのポリゴン処理に進む(1158)。
 チャンク又はサブチャンクの入力データの流れを処理しているときにフラグメントバッファの容量が超過しないなら、 ティラーはピクセル及びフラグメントバッファでの画像データの解像に進む(1132,  1134)。 ティラーが現在のチャンクでの入力データの流れの処理を完了していれば、 チャンク又はサブチャンクの解像フェーズを開始する。 例えば、 チャンクサイズが32×32ピクセルであれば(1162)、 32×32ピクセルチャンクが解像され、 バッファがスワップされる(1164)。 そして、 続いて次のチャンクを取得する(1160)(図34A)。
 チャンクサイズが16×16ピクセルであれば(1166)、 16×16ピクセルチャンクが解像され、 バッファがスワップされる(1168)。 ティラーは16×16チャンクが更に残っているか否かのチェックに進む(1148)。 もし、 残っていれば、 次のサブチャンクのポリゴンを再び送出することによりポリゴン処理を再び開始し、 残っていなければ、 次のチャンクの入力の流れを取り込んで、 そのチャンクのポリゴン処理を開始する(1160)。
 チャンクサイズが16×16ピクセルでなければ、 それは、 デフォルトによって8×8ピクセルである。 ティラーは次いで8×8ピクセルチャンクを解像し、バッファをスワップする(1154)。 そして、 ティラーは残りの8×8サブチャンク、 更に残りの16×16サブチャンクを処理する。 残りのサブチャンクの処理を完了した後、 ティラーは次のチャンクに進む。 処理は、 入力データの流れの中にチャンクが無くなったときに最終的に終了する。
 チャンクの処理の間、 データは、 各チャンクが発生するピクセルフラグメントの最大数を決定するために集められる。 各チャンクを処理した後における512個のフラグメントバッファの中で自由(free)なエントリの数もまた集められる。このデータは、 対象物を再処理するときにバッファの分解がいつ自動的に実行されるべきかを決定するのに使用される。 例えば、 複雑な対象物がゲームの経過中に何回も再描画されているとき、 複雑な対象物処理は、 ピクセル情報の入力の流れを連続的に再処理するのを避けるために集められたピクセルバッファデータに基づいてバッファの分解を自動的に行う。
 16×16又は8×8サブバッファへのバッファの分解もまた、 既知の複雑な(即ち、 微細な碁盤目状等)ピクセルチャンクがティラーに送られたときに要求されてもよい。 これは、 ピクセルチャンクがすでに複雑であると知られているときバッファの分解、 ピクセルフラグメントバッファのフラッシュ、 及び入力の流れの再処理が必要か否かの決定を不要にすると共に、 集中処理を必要とする。
 オーバーフローが検出されたときにスキャン変換処理を再開始する方法として他に少なくとも二つの方法がある。 一つの方法では、 ピクセルエンジンが、 オーバーフローが検出されたときにスキャン変換ブロックが停止するするように指示し、 処理されるべきサブチャンク以外のピクセル位置のピクセルメモリのすべてのフラグメントリストをクリアしてもよい。 これを達成するために、 ピクセルエンジンは、 サブチャンク以外のピクセル位置のピクセルバッファにおけるフラグメントリストのポインタを読み取って、 これらのピクセル位置に関連するフラグメントバッファ内のフラグメントを自由にすることによりサブチャンク以外でフラグメントリストを参照する。 スキャン変換ブロックは、 終了したところの現在のチャンクの幾何学的なプリミティブのセットを続けてラスタライズする。 二つ目の方法では、 スキャン変換ブロックはすべてのフラグメントメモリをクリアした後で起動する。 この場合、 スキャン変換ブロックは起動後チャンクのプリミティブのセットの最初において幾何学的なプリミティブのラスタライズを開始する。
 途中のバッファの分解は、 かなり複雑な特性(例えば、 多光源、 微細な碁盤目、半透明、 等)を有するグラフィック対象物を処理するときでも、 小さなピクセル出力バッファ、 小容量のフラグメントバッファメモリを使用してグラフィック対象物の処理の間フラグメントデータメモリのオーバーフローを低減する手法を提供する。
 我々は特定の実施例に関して分解を説明しているが、 本発明は種々の他の手法で実行され得ることを理解すべきである。 上述したような特定な方法で画像領域を分割する必要はない。 むしろ、 画像領域は異なるサイズの細領域に分かすされる。 チャンキング(chunking)アーキテクチャは画像の細分割には特によく適合するが、 フルフレームバッファはより小さい領域に分解されてフラグメントメモリの要求を低減する。 メモリ消費をたどって調査するのに使用される特定なタイプの論理又はソフトウェアもまた変形することができる。 結局、 本発明の範囲には多くの使用しうる他の方法が含まれる。
 ピクセルの後処理
 画像プロセッサは、 ピクセル位置のフラグメントデータを発生した後で、 このフラグメントデータをソートかつ解像してその位置で色調を計算する。 上記のように、 画像プロセッサは部分的にカバーされたピクセルのフラグメントを発生しかつ保持する。 一つ以上のポリゴンのエッジがピクセルと交差するとき、 又はポリゴンが半透明のとき、 ピクセルはポリゴンにより部分的にカバーされる。 フラグメントデータを保持してアンティエーリアシングと半透明を実行するには十分なメモリ容量を必要とする。 描出されるポリゴンの数が増加すると、 ピクセルデータ及びフラグメントを格納するメモリの容量もまた増加する。
 増加したメモリ要求に加えて、 フラグメントを解像するのに要求される処理量も多くなる。 Zバッファへのアプローチにおいて、 フラグメントデータは深くソートされる。 一般的に、 プリミティブのデータは、 描出のため到来するときに深さの順にソートされる。 プリミティブのデータが任意の深さの順に到来するので、画像プロセッサはフラグメントを発生した後でそれをソートしなければならない。ソートされたデータは、 ピクセル位置で色調と可能であればアルファを決定するために処理される。 各ピクセル位置で、 いくつかのフラグメントが色調に寄与する。 アルファが計算されるなら、 フラグメントの数及び処理の複雑さもまた増加する。
上記のように強調された理由によって、 進んだアンティエーリアシング及び半透明性を支持するためのメモリ及び処理要求は不可欠である。 一方では、 複雑なアンティエーリアシング及び半透明性の計算を支持することと、 他方では、 メモリ要求を低減することの間には矛盾がある。 システムのコストを低減するために、メモリの使用を最小限にすべきだが、 進んだアンティエーリアシング及び半透明性は通常更なるメモリを必要とする。 これらの進んだ構成をメモリの要求を最小にしつつリアルタイムのシステムで保持することは困難でさえある。
一実施例において、 我々のシステムは一度に一つのチャンクのプリミティブを描出し、 その結果メモリを減らして後処理ステップでフラグメントを解像する。ピクセルデータが一つのチャンクで発生する間に、 他のチャンクのピクセルデータを解像することができる。 フラグメントのソート及びピクセルの解像に影響を与える数多くの利益がチャンキングの概念からもたらされる。 画像プロセッサがチャンク内のピクセルを解像した後ではラスタライズ処理の間に発生したたくさんのデータは保持されるべきではないので、 メモリの要求は十分に減らされる。画像プロセッサはチャンクを解像した後で解像された色調部分を保持すればよい。
 直列にチャンクを描出することの他の利点は、 ピクセルフラグメントメモリがメモリアクセスの経費(overhead)を低減するのに設けられ得ることである。 典型的なグラフィックシステムは外部メモリを使用して色調、 深さ及びフラグメントバッファを設ける。 この外部メモリを有機的に構成してリアルタイム画像処理の厳密なバンド幅の要求を満たすことはかなり困難である。 32×32ピクセル領域のようなチャンクの描出を支持するのに必要なピクセルフラグメントメモリは外部メモリに設けられるべきではなく、 それに代えて、 ラスタライズ及びアンティエーリアシング機能を実行する同じハードウェア上に設けることができる。 例えば、 上記の具体例において、 フラグメント及びピクセルバッファは単一の集積回路チップ上に設けることができる。
 チップメモリを使用すると外部メモリに関連するバンド幅の問題を簡素化することができる。 チップメモリは多段メモリを効率的に使用することができる。 例えば、 1段をピクセルバッファに使用し、 他段をフラグメントの記録に使用することができる。
 チップメモリの他の利点は、 多ポートメモリの装備を低価格かつ容易に行うことができることである。 ピクセル及びフラグメントバッファの性能は、 多ポートメモリを使用することにより増大することができ、 その結果同時読み込み及び/又は書き込みがピクセル処理速度当たり1クロック(one clock per pixel processing rate) を達成することができる。 チャンクが別々に描出されるときはフラグメントバッファがかなり小さいので、 それはチップ上に装備される。 メモリの小サイズ及びチップ上のメモリの存在の双方は、 多ポートメモリの使用を実現可能にしかつコストを有効に働かせる。 一方、 外部多ポートメモリはビット当たりコスト高、 チップ間の接続の故に高価である。
チャンキングに関する他の重要な利点は、 フレームの一部のピクセルを、 他の部分のピクセルが解像されている間に発生することができることである。 このように、 本アプローチは、 全部のフレームのピクセルを発生してそれらのピクセルを解像するのではなく、 ピクセルの発生と共に解像をオーバーラップさせることができ、 その結果システムの搬送遅れを低減することができる。
 本システムの一実施例において、 画像プロセッサは後処理ステップでフラグメントを解像する。 ピクセルエンジンが画像の一部のピクセルデータを発生している間に、 アンティエーリアシングエンジンが画像の他の部分のフラグメントを解像する。 上記のように、 ピクセルデータは二重に緩衝記憶されている。 即ち、 アンティエーリアシングエンジンが一のバッファをアクセスしている間にピクセルエンジンは他のバッファをアクセスすることができる。 ピクセルエンジンがチャンクのピクセルを発生した後で、 ティラーはバッファスワップを実行する。 ピクセルエンジンは次のチャンクのピクセルを発生すると共に、 アンティエーリアシングエンジンは前のチャンクのピクセルを解像する。
 ピクセルデータを二重に緩衝記憶することもできるが、 好ましい実施例においては、 フラグメントバッファに二つのポートが設け、 そのバッファをピクセルエンジン及びアンティエーリアシングエンジンが同時にアクセスしてもよい。 ピクセルエンジンは一つのポートを介してフラグメントデータをフラグメントバッファに書き込み、 アンティエーリアシングエンジンは他のポートを介してフラグメントデータを書き込む。
 本実施例において、 二重に緩衝記憶されると共に二つのポートが設けられたメモリシステムにより、 画像プロセッサは画像データの発生及びピクセルの解像をオーバーラップさせることができる。
 ピクセルプロセッサは解像処理を完了する前に深さ順にフラグメントデータをソートする。 一般的に、 画像プロセッサはピクセルを発生するとき、 また描出されるべき画像の部分のピクセルを発生した後でピクセルデータをソートすることができる。 例えば、 ピクセルエンジンは、 フラグメントデータをフラグメントバッファに書き込むときに挿入ソートを実行することができる。 加えて、 ピクセルエンジンは、 画像のすべて又は一部のピクセルデータを発生するのを完了した後でフラグメントデータをソートすることができる。 ピクセルエンジンはまた、 入って来るピクセルデータを拒否する場合は、 フラグメントをソートすることができる。 ピクセルエンジンは、 入って来るピクセルデータを拒否するときは、 フラグメントバッファに書き込みを行うべきではないので、 入って来る次のピクセルが到来する前にフラグメントのソートを実行することができる。 我々は後者のアプローチをフラグメントの「バックグラウンドソーティング」と呼んでいる。
 挿入ソートは、 入って来るフラグメントをフラグメントバッファの他のフラグメントに深さに関してソートすることに関係している。 潜在的に挿入ソートは画像データを発生する処理を減速するから、 潜在的にリアルタイムシステムには好ましくない。 入って来るフラグメントの適切な挿入ポイントを見付けるためにフラグメントバッファを探すと、 望ましくない経費を発生し、 加えて、 ハードウェア手段に関して、 追加のハードウェアを必要とすると共にピクセルエンジンの設計を複雑にする。
 挿入ソートの他の方法として、 画像プロセッサが画像の一部のピクセルの発生を完了した後でフラグメントをソートしてもよい。 いくつかのシステムは一旦画像データの全フレームを描出する。 そのようなシステムにおいて、 観察スペース (view spase) で各ピクセル位置毎にフラグメントをソートすると、 特に、 リアルタイムシステムにおいて、 実質的な処理時間を必要とすると共に望ましくない遅延を生ずる。 ソートに必要な時間はピクセル当たりのフラグメントの数に応じて、 かつすでに実行されている挿入ソートの程度に応じて変わる。 だから、 ソート動作は他のピクセル動作が生じるのを妨げ、 性能を低下させる。
 観察スペースの一部を一度に描出することにより、 画像の一部のフラグメントを、 次の部分をラスタライズしながら、 ソートすることができる。 本質的に、 アンティエーリアシングエンジンは、 次のチャンクのフラグメントを発生しているときに一つのチャンクのフラグメントをソートする。
 ピクセルの発生及び解像が上記のようにオーバーラップしていたとしても、 ピクセルエンジンが画像の部分のピクセルを発生するときに画像の一部のフラグメントのソートを、 実行することは有益である。 ピクセルフラグメントをバックグラウンドソーティングすると、 ピクセルエンジンが一組のプリミティブのピクセルの発生を完了した後におけるフラグメントのソート経費を低減する。
 一実施例において、 バックグラウンドソーティングは同時に実行され、 ピクセル動作がフラグメントのソートに必要な呼出時間を低減、 場合によっては無くす。その設計は、 たくさんのピクセルが部分的にカバーされ、 それ故フラグメントバッファを使用できなくするという効果もたらす。 バックグラウンドソーティングは、 この予備のバンド幅を使用してフラグメントバッファの一組のフラグメントのソートを実行する。
 ソートの後で、 画像プロセッサは、 ピクセル位置のフラグメントを解像してそのピクセル位置の色調を決定する。 アルファが考慮されていなければ、 画像プロセッサはピクセル位置の深さがソートされたリストにおけるフラグメントの色調及び適用範囲データに基づいて色調の蓄積を計算する。 アルファが適用範囲データに加えて考慮されるなら、 画像プロセッサは、 ピクセル位置における深さがソートされたリストのフラグメントの色調、 適用範囲、 及びアルファに基づいて色調の蓄積を計算する。
 一般的に、 画像プロセッサは、 可視スペース全体、 又はその時の可視スペースの一部のみに対応するピクセル位置のフラグメントを解像する。 上記の実施例において、 画像プロセッサは、 チャンクと呼ばれる観察スペースの一部のピクセル位置を解像する。 フラグメントの解像は、 フラグメントが発生すると共にソートされた後で生じる。
 フラグメントの解像は、 ピクセルのすべてのフラグメントが単一の色調値とアルファ値を計算するのに結合される間における処理である。 この単一の色調とアルファは色調バッファの中に書き込まれる(次いで圧縮され、 GSPRITEに格納される)。
 解像された色調の計算は、 続く層をそれによって基準化(scale) する適用範囲情報を計算かつ維持しつつ正しく基準化された色調の分布を各層から蓄積することを含む。 この蓄積は、 前から後ろ、 又は後ろから前への深さの順に実行することができる。 前から後ろへのアプローチでは、 後ろから前へとは反対に、 スペースの適用範囲のデータは続く層の適用範囲を決定するのに使用される。 適用範囲とは異なって、 アルファデータがすべてのピクセル領域に等しく適用される。
 前から後ろのものでは、 ソートされたフラグメントの記録に対する色調とアルファを計算する式は以下のようになる。
 アルファ(Alpha) は最大値(逆アルファ)に初期化され、 色調(Color) は0に初期化される。  
Anew=Aold-Aold*Ain);
Cnew=Cold+(Cin*(Aold*Ain));
 後ろから前へのものでは、 ソートされたフラグメントの記録に対する色調とアルファを計算する式は以下のようになる。
 アルファ及び色は0に初期化される。
Anew=Ain+((1-Ain)*Aold);
Cnew=(Cin*Ain)+((1-Ain)*Cold);
 ハードウェア手段には、 解像処理はハードウェアの集中度が少ない(less hardware intensive)ので前から後ろが好ましい。
 フラグメントを深さ、 色調、 適用範囲のみで(アルファなしで)フラグメントを蓄積する擬似コードの例は以下のように記述される。

NUM _CVG _BITSは適用範囲マスクのビットの数であり、 MAX _ALPHA はアルファの最大値である。
(各フラグメント化されたピクセル位置)として{
    ColorAccum = 0;
    CoverageAccum = 0;
    ここで(フラグメントリストは空欄ではない){
    フラグメントリストをスキャンし、 かつ最も近いフラグメントを抽出する( 適用範囲, 色調);
    ColorScale=CountSetbits(coverage&((CoverageAccum))/NUM_CVG _BITS;
    ColorAccum+=ColorScale* 色調;
    ColorAccum (=適用範囲
    )
        ColorAccumはピクセルの色調である
)
 フラグメントを深さ、 色調、 適用範囲、 及びアルファによって蓄積するには、アルファ値を計算して各サブサンプルのために保持する必要がある。 これは、 各フラグメントに対する適用範囲マスクとアルファ値の結合による。 一般的に、 蓄積の間にある層で蓄積されたアルファが前の層のアルファ値のすべての機能であると言える。 適用範囲マスクによって、 各サブサンプルは「前の」アルファ値の異なる組を潜在的に有する。 なぜならば、 適用範囲ビットが明確である層はそのサブサンプルに寄与していない。
 アルファと適用範囲によってフラグメントを解像する一つのアプローチはある層の各サブピクセル(subpixel)の色調を計算し、 サブピクセル位置からの寄与度(contribution)を加えてトータル色調寄与度を決定することである。 このアルファのスケールにサブピクセルの色調が乗算されてサブピクセルの色調寄与度を決定する。 ある層の色はサブピクセルからの色調寄与度を合計することにより決定される。
 サブピクセルの色調及びアルファを個別に蓄積する一例は以下の通りである。
(各フラグメント化されたピクセル位置)として{
    ColorAccum=0;
    AlphaAccum[NUM_CVG _BITS]={MAX _ALPHA,MAX _ALPHA,...MAX_ALPHA };
    ここで(フラグメントリストは空欄ではない){
        フラグメントリストをスキャンし、 最も近いフラグメントを抽出する( 適用範囲, 色調, アルファ).
     (i=0;i<NUM _CVG _BITS;i++) として{
    //   このビットが適用範囲のマスクに設定されると、
     (適用範囲>>I)& ox1 であれば、 {
        //   アルファの基準化値−この色の寄与度を計算する 
        AlphaScale=(アルファ*AlphaAccum[i]);
        //   アルファにより基準化された色調を加える
        ColorAccum +=(色調*AlphaScale)*(1/NUM _CVG _BITS)};
        //   サブサンプルの蓄積されたアルファを計算する
        //   AlphaAccum=AlphaAccum*(MAX_ALPHA-alpha)=
        //   AlphaAccum-AlphaAccum*alpha
        AlphaAccum[i]=AlphaScale;
        }
    }
    ColorAccumはピクセルの色調である
 四つのサブピクセル位置を使用する例はフラグメントの解像を説明するのに都合がよい。 本例においては、 夫々が適用範囲マスク、 アルファ及び色調値を有する三つのフラグメントを考える。 最初の状態は下表に示されている。 本例においては、 我々は前から後ろへのアプローチを使用する色調及びアルファを蓄積する。最初のアルファは十分に半透明を意味する1に設定される。 各層のデータは次の通りである。 フラグメント0、 アルファ=0. 5、 適用範囲マスク(cm)=0011、 及び色調=C0; フラグメント1、 アルファ=0. 3、 cm=1000、及び色調=C1; フラグメント2、 アルファ=0. 8、 cm=0101、 及び色調=C2. 各フラグメントのデータは下表で与えられている。  アルファ値は1に初期化され、 アルファの適用範囲のアレイは下記のように示される。
Figure 2004046886
 色調を計算するために、 各サブピクセル位置の色調値には新しいアルファ及び適用範囲のアレイからのアルファが乗算される。 サブピクセル位置の結果は四つ(サブピクセル位置の数によってわり算されたもの)に分割される。 最後に、 サブピクセル位置のすべてからの寄与度は蓄積された色調を算出するために合計される。
Figure 2004046886

 公式Alpha'=Alpha*(Max _alpha-new _alpha)を使用して、 画像プロセッサは新しいアルファを各ピクセル位置に対して個別に計算し、 それを下表のアルファの適用範囲のアレイに格納する。
Figure 2004046886
 フラグメント1の寄与度は下表に記載されている。
Figure 2004046886
 新しいアルファの適用範囲は次の通りである。
Figure 2004046886
 フラグメント2の寄与度は下表に記載されている。
Figure 2004046886
 フラグメント2の後のフラグメントのアルファの適用範囲のアレイは次の通りである。
Figure 2004046886
 この方法は、 アルファの計算及び色寄与度のフラグメント毎の2*NUM _CVG _BITSの乗算(4×4の場合、 2*16=48)を必要とする。 適用範囲のマスクにおけるビット数が2**nのサイズ(典型的には事実)とすると、 (1/NUM_CVG _BITS) の基準化にはズレがある。
 図35は、 4×4のサブピクセル領域(1224)に分割されたピクセルに対して上記のアプローチのハードウェア手段を図示する概略図である。 解像ハードウェアはアルファ色調蓄積器(ACA)(1226)と呼ばれる16個の同じ処理記憶ユニットの組を含み、 各ACAはピクセルのうちの一つのサブピクセル領域専用である。 各ピクセル位置のフラグメントリストの処理の間、 各フラグメントの適用範囲マスクは解像ハードウェアの処理マスクとして使用される。 ACAは、 アルファの基準化、 色調蓄積、 及びアルファ蓄積の乗算を実行する。 (1/NUM_CVG _BITS) の基準化には上記のようにズレがある。 一旦すべてのフラグメントが所定のピクセル位置に対して処理されると、 出力部は階層上に16個のサブピクセルのすべてを色調及びアルファ値を結合する(1228)。 出力用のプロセッサは入って来る二つの値を結合して、 2で割る。 ハードウェアをパイプラインして、 ピクセル解像処理はフラグメントのエントリ毎の単一のハードウェアのフロックのみを使用する。
 他の技術は同様に各層で蓄積された同じアルファを有するサブピクセルを処理することによってハードウェア要求を低減する。 この技術は、 サブサンプルが蓄積されたユニークアルファ値を有する状態が徐々に生じるということに基いている。 最初は、 サブサンプルのアルファのすべては0(透明)に設定されている。最初のフラグメントの蓄積は多くとも一つの特有のアルファ値を加えることができ、 最初のアルファ値を保持しているサブサンプルの1グループと同じ新しいアルファ値を有する他のグループをもたらす。 次のフラグメント蓄積はたった四つの特有のアルファ値をもたらす。 全体としては、 「n」個のフラグメントの蓄積の後で可能性があるユニークサブサンプルのアルファ値の数は2**n(又は、さらに正確には、 MIN(2**n(NUM_CVG _BITS) )である。
 他の技術は色調の基準化を実行することによって要求される蓄積と、 サブサンプル毎よりもむしろサブサンプル内の各特有のアルファ値の蓄積の数を低減する特性を使用している。 この技術によって、 せいぜい一つの蓄積が、 第1のフラグメントとして、 第2のフラグメントとして二つ、 第3のフラグメントとして三つ、等、 ピクセルのサブサンプルの数まで生じる(例えば、 4×4のサブサンプルのアレイによって、 最悪の場合はフラグメント毎に16個の蓄積が生じる)。
 この技術は、 フラグメントの蓄積の間特有のアルファ値の組とそれらの関連する適用範囲のマスクを維持することを基礎としている。 その内容は最小数の色の蓄積を蓄積する。
 アルファと適用範囲のマスクは、 これらのエントリのあるサブセットがある時間で実際に効力がある(又は「使用中」)NUM _CVG _BITS要素のアレイに格納される。 「使用中」のエントリは特有のアルファ値の現在のセットを保持するものである。 使用中のエントリビットインデックスにおけるアレイの要素が使用中であることがビットセットで示されるNUM _CVG _BITSビットのマスクによって識別される。 {ユニークアルファ、 適用範囲のアレイ}の対における適用範囲のアレイ中の第1のビットセットはその対が格納されているアレイ要素を規定するという慣例が使用されている。 アレイを三つのフラグメントの蓄積によって(三つのサブサンプルを使用して)初期化されると共に更新する手法として次の例を挙げる。
 初期状態(Xは「注意不要」値を意味する):
    0b0001 //使用中のマスク
    {1., 0b1111}//アルファと適用範囲の対
    {X, 0bXXXX }
    {X, 0bXXXX }
    {X, 0bXXXX }
蓄積フラグメント{.5alpha*/.0b0011適用範囲マスク*/}
    0b0101 //使用中のマスク
    {.5, 0b0011}//アルファと適用範囲の対
    {X, 0bXXXX }
    {1., 0b1100}
    {X, 0bXXXX }
蓄積フラグメント{.3, 0b1000}
    0b1101 //使用中のマスク
    {.5, 0b0011} // アルファと適用範囲の対
    {X, 0bXXXX }
    {1., 0b0100}
    {.7, 0b1000}
蓄積フラグメント {.8, 0b0101}
    0b1111 //使用中のマスク
    {.1, 0b0001}//アルファと適用範囲の対
    {.5, 0b0010}
    {.2, 0b0100}
    {.7, 0b1000}
 最初のアルファの適用範囲のアレイは以下のように記載される。
Figure 2004046886
 使用中のマスクは、 アレイのマスクに格納されている位置を特定する0001である。 対応するアレイは以下の通りである。
Figure 2004046886
 フラグメント0の後で、 アルファの適用範囲のマスクは以下のように表される。
Figure 2004046886
 使用中のマスクは0101であり、 アレイのマスクは以下の通りである。
Figure 2004046886
 設定された使用中のマスクの要素では、 アレイのマスクは新しいフラグメントに対して適用範囲のマスクとANDがとられ、 アルファ値に変化があるか否かを判別する。 新しいアルファがあれば、 アレイのマスクの新しい値は、 (アレイのマスク)AND(NOT適用範囲のマスク)で計算される。 アレイのマスクに新しい値があれば、 それを適切な位置に格納する。
 フラグメント1の後で、 アルファの適用範囲のマスクは以下のように表される。
Figure 2004046886
 使用中のマスクは1101であり、 アレイのマスクは以下の通りである。
Figure 2004046886
 フラグメント2の後で、 アルファの適用範囲のマスクは以下のように表される。
Figure 2004046886
 使用中のマスクは1111であり、 アレイのマスクは以下の通りである。
Figure 2004046886
 ある時点におけるユニークアルファ値の数は使用中のマスクのセットビットの数に等しい。 完全解は二つのステップを含む。 第1のステップは、 一つの蓄積が適用範囲/アルファのアレイにおける「使用中」エントリ毎に要求される必要な色調の蓄積を実行することである。 第2のステップは新しいフラグメントの値と共に適用範囲/アルファのアレイを更新することである。
 この技術の(4×4サブサンプルに対する)完全な手段は以下の通りである。(各フラグメント化されたピクセル位置)として{
    //   初期状態( ピクセル毎)
    InUsemask = 0x0001;
    CoverageArraymask[16] = {0xffff, 0, ...,0];
    CoverageArryAlpha[16] = {MAX _ALPHA.MAX _ALPHA. ....,MAX _ALPHA };
    ColorAccum = 0;
    ここで(フラグメントリストは空欄ではない){
    フラグメントリストをスキャンし、 かつ最も近いフラグメントを抽出する( 適用範囲, 色調, アルファ);
    // このフラグメントの色調を使用中の各要素のColorAccumに蓄積する    InUseMaskScratch = InUseMask;
    ここで(InUseMaskScrach ! = 0x000) {
    //   使用中のマスク消去時に第1のビットセットを見付ける
    Index = FindFirstSetBit(InUseMaskScratch);
    //   マスク消去時にこのビットをクリアする
    InUseMaskscratch & = ((0x1 << Index);
    //   このエントリの旧(現)アルファを読み込む−これは、 カバー    //   されていない領域を更新する(新しく「使用中」になる)
    AlphaOld = CoverageArryAlpha[Index];
    //   アルファ基準化ファクタ−蓄積のために色調を基準化し続く
    //   層のアルファを計算するのに使用される
    AlphaScale = AlphaOld*alpha;
    //   次の層のアルファを計算する−これをアルファのアレイを更    //   新するのに使用する
    AlphaNext = AlphaOld*(MAX _ALPHA-alpha) = AlphaOld-AlphaOld*alpha
    AlphaNex = AlphaOld-AlphaScale;
    //   オーバーラップした適用範囲のマスクを計算する−これは、
    //   新しいフラグメントによってカバーされるアレイのエント
    //   リの一部であり、 色調を蓄積して新しいアルファ値でアレイ    //   を更新する
    AccumCvgMask= 適用範囲& CoverageArrayMask[Index];
     (AccumCvgMask ! = 0x0000)のとき[
    //   色調を蓄積する
    nCoverageBits = CountSetBits(AccumCvgMask);
    ColorAccum+ = color*(AlphaScale * nCverageBits/NUM_CVG _BITS)];
    //   カバーされた部分のアルファを更新する(これは「新しい」    //   使用中の要素をもたらすか、 又は古いものをオーバーライト    //   する)
    Index2 = FindFirstSetBit(AccumCvgMask);
    InUseMask ? = (0x1 << Index2);
    CoverageArrayMask[Index2] - AccumCvgMask;
    CoverageArrayAlpha[Index2] = AlphaNext;
)
    //   カバーされていない領域のマスクを計算する−これは、 新し    //   いフラグメントによって不明瞭でないアレイのエントリの部    //   分であり、 適用範囲を更新する(アルファは同じ値をとる)
    IndateCvgMask = ( 適用範囲& CoverageArrayMask[Index];
     (UpdateCvgMask! = 0x0000)のとき {
        Index2 = FindFirstSetBit(UpdateCvgMask);
        InUseMAsk? = (0x1 << Index2);
        //    カバーされていない部分のアルファを更新する−これ           //   は「新しい」使用中の要素をもたらすか、 又は古いも        //   のをオーバーライトする(このようにそれが新しい         //   場合はアルファ値をコピーする)
        CoverageArrayMask[Index2] = UpdateCvgMask;
        CoverageArrayAlpha[Index2 ] = AlphaOld;
        }
    )
)
ColorAccum はピクセルの色調である
}  
 この算術計算の中心は、 ユニークアルファ値毎に全部で三つのかけ算を必要とする色調の蓄積である。
 ColorAccum+=色調*(アルファ*AlphaOld*(nCoverageBits/NUM_CVG _BITS)); 三番目の乗算はサブサンプルの数によっては若干簡素化される場合があることに注意されたい。 16個のサンプルに対して、 第3の乗算は0. 4に固定された少数(point value) を含み、 この乗数は8×4である(ここで、 他の乗数は8×8であろう)。 また、 2**nのサイズの適用範囲のマスクには、 上記した分割は単にズレであることに注意されたい。
 この技術は最低の場合下式による蓄積全部を必要とする。
Figure 2004046886
 典型的な場合はこれを大きく下回る。 最低の場合は新しいフラグメントの適用範囲が各「使用中」のアレイ要素に設定値及び未設定値の双方を有するからである。
 一つの有効な最適化は十分に不透明なアルファ値を有する適用範囲のマスクの位置をたどって調査することである。これは、フラグメントが不透明でない半透明値によらずに幾何学的な適用範囲の一部によって発生している場合に有効である。これらのフラグメントは通常は十分に不透明な半透明値を有する。この最適化は、追加的なマスク値、即ち OpaqueAlphaMask を保持することにより実行される。この OpaqueAlphaMask はアルファが十分に不透明であるフラグメントの適用範囲のマスクにおいてO−リング (O-Ring) によって設定される(これは、フラグメントの寄与率を蓄積した後で実施される)。対応するサブサンプルに対して更なる色調の寄与率が生じ得ないので、このマスクは続くフラグメントのマスク内のビットを 無視するのに使用される。
 実行し得る他の最適化は同じアルファ値と位置を統合することである。しかし、これは装備がかなり高価になり、0でもなくMAX _ALPHA でもない同じアルファ値が発生するだろう。
 上記した例及び擬似コードは前から後ろへのソートを使用する。同じ計算を後ろから前へ深さに関してソートすることは同じように可能である。また、上記の計算は、アルファ成分が予め乗算されていない色調成分を使用する。同じ技術が、若干異なる算術計算(及び同じ制御フロー)によって予め乗算された色調成分に適用される。
 図36は、アンティエーリアシングエンジンにおけるハードウェアの最適化されたフラグメント解像サブシステムの具体例を図示するブロック図である。このサブシステムへの入力は、深さに関してソートされたフラグメントの記録の流れである。ここに示されているように、フラグメントの記録はRGB色調値、アルファ値、及び適用範囲のマスク (Cov mask) を含む。この特別なフラグメント解像サブシステムは、前から後ろへの順にフラグメントの記録処理を行うと共に、各フラグメントの層を処理するときにピクセル位置の色調値を蓄積する。このサブシステムは、共通のアルファを有するユニークピクセル領域をたどる調査を保持するので色調値を蓄積する必要があるハードウェアを最小にし、その結果、フラグメント解像サブシステムが、個別に各サブピクセル領域に対してというよりむしろ各ユニークピクセル領域に対して一旦色調を基準化すると共に蓄積するようになる。
 上記の疑似コードに関して記載したように、フラグメント解像システムは、フラグメントの記録のリストを解像する前に、使用中のマスク1236、適用範囲のマスクのアレイ1230、 蓄積されたアルファ値のアレイ1230を初期化する。使用中のマスクの要素1236は、共通の蓄積されたアルファを有する一つ以上のサブピクセル領域を夫々含む複数のピクセル領域を表示する。適用範囲のマスクはピクセル領域によってカバーされるサブピクセル位置を与える。蓄積されたアルファのアレイは共通のアルファを有しかつ対応するピクセル領域の蓄積されたユニークアルファ値を格納する。 この特別な適用範囲のアレイ1236は蓄積されたアルファ値及び適用範囲のマスクを格納する。
 使用中のマスク、 適用範囲のマスクのアレイ、 及び適用範囲のアレイのアルファを初期化した後で、サブシステムはフラグメントの記録を開始し、観察部分に最も近いフラグメントの記録を始める。ティラー上のアンティエーリアシングエンジン412の一つの手段において、スキャン変換ブロック395及びテクスチャフィルタエンジン401がチャンクのラステライズを完了した後、アンティエーリアシングエンジンは後処理ステージでフラグメントリストをソートする。アンティエーリアシングエンジンはフラグメントリストの各フラグメントの読み込みを先頭から始めて、かつインデックス及び深さに関してソートされたアレイの中へのエントリを所々で行う。このアレイ中の各インデックスは、リスト中のピクセルのフラグメントのRGB、アルファ及び適用範囲データを格納するフラグメントバッファ位置を示している。ピクセルのフラグメントを読み込むとき、アンティエーリアシングエンジンは、 アレイのエントリがピクセルのフラグメント及び対応する深さ値に対して深さに関してソートされたインデックスのアレイからなるように挿入ソートを実行する。一旦リストがソートされると、フラグメント解像サブシステムは、ソートされたアレイの中の各エントリをこれらのエントリがアレイの中に格納されている順に読み込むことによって深さに関してソートされたフラグメントを検索して、その結果、フラグメント解像サブシステムが深さに関してソートされる順にリスト中のピクセルフラグメントのRGB色調値、アルファ及び適用範囲マスクを検索する。
 リスト中の各フラグメントの記録を処理するときに、サブシステムは共通のアルファを有するピクセル領域をたどって調査する。サブシステムは、リスト中のフラグメントの記録が共通のアルファを有する各ピクセル領域にオーバーラップするか否かを判別する。もし、オーバーラップするなら、サブシステムは現在のフラグメントとオーバーラップする現在のピクセル領域の一部の蓄積された色調を計算する。現在のピクセル領域にオーバーラップがあると、サブシステムはまた、このオーバーラップによって生じる一つ以上の新しいピクセル領域を決定して、それらをたどって調査する。
 現在のフラグメント(1232)に対して、サブシステムは使用中のマスクの各要素を介してループ化する。適用範囲アレイループ制御装置1234は使用中のマスク(1236)を維持すると共に、各フラグメントの記録を処理する際に必要になる更新を行う。使用中のエントリを介してループ化が行われるとき、適用範囲アレイループ制御装置は新規な適用範囲制御装置1238と接続してその動作を制御する。新規な適用範囲制御装置1238は、現在のフラグメントが現在のピクセル領域にオーバーラップするときに必要になる適用範囲のマスクのアレイ及びアルファ1230の更新を行う。
 新規な適用範囲制御装置1238は、使用中のマスク中の現在のエントリに関連する適用範囲のアレイのアルファから格納且つ蓄積されたアルファ(Aold)を読み込み、色調を基準化するのに使用さると共に続くフラグメントの層、Anext(1−A*Aold)のアルファを計算するのに使用されるアルファ基準化ファクタ(A*Aold)を計算する。この新規な適用範囲制御装置1238は、アルファスケールファク(A*Aold)を、現在のフラグメントの色調データを基準化するのに使用されるスケール及び蓄積制御装置1246に搬送する。新規な適用範囲制御装置1238はまた、続くフラグメントの層、Anext(1−A*Aold)のアルファを計算して、それを適用範囲のアレイ1230中の対応する適用範囲のアレイのマスクに沿って格納する。
 共通の蓄積されたアルファを有する各ピクセル領域に対して、フラグメント解像サブシステムは、現在のフラグメントがフラグメント及びピクセル領域の適用範囲マスクの挿入を見つけることにより現在のピクセル領域をオーバーラップするか否かを決定する。
 現在のフラグメントが現在のピクセル領域とオーバーラップするなら、サブシステムは、1)ピクセル領域のオーバーラップ部分の蓄積した色調を計算し、かつ2)使用中のマスク及びこの使用中のエレメントの対応する適用範囲のアレイのマスクびアルファ(適用範囲のアレイのアルファ)を更新する。
 スケール及び蓄積制御装置1246は現在のフラグメントによってカバーされた各ユニークピクセル領域の蓄積された色調を計算する。この基準化及び蓄積制御装置は、適用範囲スケーラ (scaler) 1240、色調スケーラ1242、及び色調蓄積器1244を含む。適用範囲スケーラ1240は適用範囲基準化ファクタ(現在のフラグメント/全サブピクセル位置でオーバーラップする現在のピクセル領域のサブピクセル位置の数*A*Aold)を計算する。色調スケーラ1242は現在のフラグメント(1232)の色調値(RGB)を読み込むと共に、それらに適用範囲スケーラ1240からの適用範囲基準化ファクタを乗算する。最後に、色調蓄積器1244は更新され蓄積された色調値を計算するために基準化された色調に蓄積された色調を加える。
 現在のフラグメントが現在のピクセル領域にオーバーラップするとき、適用範囲アレイループ制御装置1234は新しいピクセル領域に対応してエントリを含むように使用中のマスク1236を更新する。これは、単に現状の使用中の要素をオーバーライトするか、新しいものを生成することによって行ってもよい。適用範囲ループ制御装置はまた、適用範囲のアレイのマスク1230を新しいピクセル領域の適用範囲に更新すると共にこの新しいピクセル領域の蓄積されたアルファを設定するように新規な適用範囲制御装置に指令する。新規な適用範囲制御装置1238は新しいピクセル領域に対応する新しいアルファの適用範囲のアレイをAnextに設定する。
 現在のフラグメントのみがピクセル領域の一部を(そのすべてをオーバーラップするというよりむしろ)カバーするとき、新規な適用範囲制御装置1238は二つの新しいピクセル領域、即ち、1)現在のフラグメントがオーバーラップするピクセル領域の一部と、2)現在のフラグメントによって不透明でなくなるピクセル領域の一部を生成する。この場合、サブシステムは、不透明でない部分の適用範囲を計算すると共に、それに対してアルファを設定して、元のピクセル領域と同じままにする。これを達成するために、適用範囲アレイループ制御装置1234は使用中のマスク1236を更新すると共に、新規な適用範囲制御装置1238に適用範囲のアレイのマスク1230を更新するように指示する。この第2のピクセル領域に対応する適用範囲のアレイのアルファのエントリは、現在のフラグメントによっては変化しないので現在のピクセル領域(Aold)と同じままである。
 上記のように記載されたアプローチを繰り返すと、サブシステムは現在のフラグメントの使用中の各エントリを介してループ化して、各ピクセル領域中の現在のフラグメントの効果がある場合はあ、それを計算する。そして、リストが空欄になるまで、リスト中の続くフラグメントの処理を繰り返す。
 クランプ及び調節ブロック1248は蓄積された色調を適切な範囲(これは、適用範囲スケーラブロックで丸められる必要があり、その結果8ビットの範囲を超える色調とアルファをもたらす)にクランプすると共に、1を示す8ビット2進数によって値を基準化することにより導入される誤差を調節する。この方法による誤差の調節は、値1が実際には16進法値「FF」で表されるのである状況で必要である場合がある。換言すれば、0から1のアルファの範囲は00からFFの8ビット数の範囲で表される。それ故、数xにFFを乗算するときは、結果はxである。この調節は、FFの乗算結果が適切にxに丸められる。
 ピクセルバッファへのフィードバック経路1250は解像されたピクセル値がピクセルバッファに再び格納されるモードを支持するために存在し、その結果、解像されたデータのチャンクをティラーから分配されたメモリに送出することなく、解像されたピクセルデータ上にマルチパスを描出させる。
 フラグメント解像サブシステムがフィードバックモードにないとき、クランプ及び調節ブロック1248は、図36に示すように解像されたピクセルデータをデータ経路1252を経由してブロックステージ (staging) のバッファに送出する。これらのブロックステージ (staging)バッファは、解像されたピクセルデータをそれが8×8ピクセルブロックで圧縮される前に緩衝記憶するのに使用される。
テクスチュアマッピング
 このイメージ処理装置は多くの進歩したテクスチュアマッピング特徴を有している。テクスチュアマッピングのためのそれの支持はテクスチュアデータの異方性フィルタリングを含む。この装置はリアルタイムでテクスチュアデータの異方性フィルタリングを実行できる。
 我々は、異方性フィルタリングに対する我々の解決法のための基礎を形成する幾つかの概念を記載することにより始めて、且つそれから実行をもっと詳細に記載する。
 テクスチュアマッピングはイメージを表面にマッピングすることに帰する。対象物の表面における複雑な詳細は多角形又は他の幾何学的プリミティブを用いて模型を作ることは非常に難しく、且つそうすることは対象物の計算機費用を大幅に増大し得る。テクスチュアマッピングがイメージ処理装置に対象物の表面上に細かい詳細を充分に表現することを可能にする。テクスチュアマップはディジタルイメージであり、それを我々は「ソースイメージ」とも呼ぼう。このテクスチュアマップは形が典型的に矩形であり且つそれ自信の(u,v)座標空間を有する。テクスチュアマップの個別の要素は「テクセル(Texel)」と呼ばれる。テクスチュアマッピングにおいては、テクスチュアすなわち「ソースイメージ」がターゲットイメージへマッピングされる。
 ディジタルイメージとして、ソースイメージとターゲットイメージとが、普通は整数(Integer)座標を有する点の格子上の、分離した点においてサンプリングされる。ソースイメージにおいては、テクセルが前記の(u,v)座標系内の整数座標に置かれる。同様に、ターゲットイメージにおいては、画素が(x,y)座標系内の整数座標に置かれる。
 幾何学的変換がいかにしてソースイメージからの点をターゲットイメージへマッピングするかを詳述する。この変換の逆がいかにしてターゲット内の点をソースイメージへマッピングし返すかを詳述する。イメージ処理機は、テクセルのソースアレイ内のどこから画素濃度がこなくてはならないかを決めるためにこの逆変換を用い得る。ソースイメージ内のこの点での濃度はその時付近のテクセルデータに基づいて決められ得る。ソースイメージ内へマッピングし返されたターゲット内の点は、テクセルの整数座標上に正確に落ちる必要はない。この点における濃度を見つけるために、イメージデータが付近のテクセルから計算される。
 ソースイメージ濃度が分離した値で知られるのみであるから、付近のテクセルからの値は補間され且つ結果のデータがそれから低域通過フィルタを通される。一般に、その解決法は次のように生じる。最初に、ターゲットイメージからソースイメージ内へ点がマッピングされる。それから、テクセルデータがソースイメージ内へマッピングされた点での濃度を復元するために補間される。最後に、分離したターゲットイメージ内で正確に再サンプリングされるべき領域を高すぎる領域へ変換するソースイメージ内の空間周波数を除去するために、低域通過フィルタが適用される。この低域通過フィルタは仮装する高周波数又は再サンプリングの故にターゲット内の低周波数の波としての「別名」を除去するので、この低域通過フィルタはしばしばアンチエイリアス化フィルタと呼ばれる。我々は以下にもっと詳細にこの概念を記載する。
 図37はターゲットイメージの表面1302上の画素1300がテクスチュアマップ1304の表面へいかにマッピングするかを図解する一例である。この例においては、ターゲットイメージからの画素が正方形1306として表現されている。テクスチュアマップ1304上へのこの画素1300の後向きマッピングは届け先表面1302の曲率により画素がそれにマッピングできるもっと複雑な形状を近似する四辺形1308である。テクスチュアへ画素1300をマッピングした後に濃度値がその四辺形内のテクセルサンプルから計算される。例えば一つの解決法において、画素の濃度値がその四辺形内のテクセルの重み付けされた合計を取ることにより計算される。
 補間及び低域通過フィルタ機能の双方が、ターゲット内の分離した点へマッピングするソース内の各逆変換点を取り囲む点の重み付けされた平均を取ることにより実行される単一フィルタ内へ結合され得る。我々はフィルタのフットプリントとしてその重み付けされた平均に寄与する点の領域を参照する。一般に、そのフットプリントは各ターゲット点に対するソース内で異なる形状を有する。そのフットプリントが各点に対して変わり得るので、そのフットプリントの正しい形状とそのフットプリントの内側の点へ適用するための重み付け係数とを見つけることは難しい。幾つかの慣習的な装置は、それらの装置がフィルタの寸法に変わることを許容するけれども、すべての点においてフィルタに対して同じ形状を使用する近似を行う。この解決法は、しかしながら、最終イメージ内の歪みへ導き得る。
 我々は等方性フィルタとして可変寸法の正方形か又は円形かいずれかのフットプリントを発生するフィルタにたよる。円形は全部の方向において同じ長さを有するので、円形が真に等方性である。我々はまた正方形が水平方向と垂直方向とに等しい寸法を有するので、正方形が本質的に等方性であるとみなす。
 等方性のフィルタリングはむしろ粗い近似を用いるので、等方性のフィルタリングは歪みを発生し得る。実際のフットプリントが高度に延長されたソースイメージの範囲において、たとえ寸法が調節できるとしても、正方形又は円形のような本質的に等方性形状はフットプリントに対してよくない代用品である。等方性フィルタは一つの形状のみを有するので、等方性フィルタは延長されたフットプリント内のテクセルを正確に捕捉できない。例えば、正方形フィルタは一方向において延長された四辺形フットプリントからテクセル値を正確にサンプリングできない。実際のフットプリントの外側のテクセルをサンプリングすることがブラーリングを起こし得る。これに反して、フットプリント内のテクセルをサンプリングしないことが、最終イメージにエイリアシングによりきらめかせ得る。
 MIP(multum in parvo;小型で内容豊富)マッピングと呼ばれる解決方法においては、多くのテクスチュアマップが異なる分解能で記憶される。例えば、一つのテクスチュアが 512×512 テクセルに有る場合に、この装置は又 256×256, 128×128, 64 ×64, 等でテクスチュアを記憶する。イメージ処理装置はそのテクスチュア内へマッピングされた画素のフットプリント上で等方性フィルタに対して最良に適合を見つけるために変化する分解能におけるこれらのテクスチュアマップを使用できる。このイメージ処理機は、最初にフットプリントがフィルタの寸法に対して寸法が最も近い二つのテクスチュアを見つける。それからこのイメージ処理機は、二つの中間値を計算するために最も近くにフットプリントと合致する二つのテクスチュアに対して補間を実行する。最後に、このイメージ処理機は、この画素に対する値を見つけるために二つの中間値の間を補間する。
 MIPマッピングが等方性フィルタに対する改善された結果を与え得るけれども、MIPマッピングはまだ特にフットプリントが一方向に延長される歪みを発生する。各点において実際のフットプリントに対するもっと正確なフィルタは、幾何学的変換の反転により形状が歪まされた本質的に等方性の再サンプリングフィルタにより巻きつかれた本質的に等方性の復元フィルタの縦続接続により作りだされ得る。この歪みはフィルタの高度の異方性を発生し得る。変換がもう一つの方向におけるよりも一方向においてもっと非常にイメージを収縮する場合には、逆変換がターゲット内の最大収縮の方向に沿ってソース内のフットプリントを拡張すなわち延長する。エッジに近い遠近関係から平らな表面を見た場合にこれが起こり得る。等方性フィルタリングにおいては、フィルタが拡大されたフットプリント内のテクセル値を正しくサンプリングできないので、最終イメージはこの例においては歪まされて現れるだろう。
 我々の異方性フィルタリング方法の一実施例は、次の二つのステップを含んでいる。すなわち、1) フィルタフットプリントの最大延長の近似方向を見つけるステップ、及び、2) 実際のフットプリントともっと正確に整合する混成フィルタを作りだすために復元フィルタの出力に対してその方向に沿って再サンプリングフィルタを適合するステップ、である。
 最大延長の方向はターゲットイメージからテクスチュアマップまでのフィルタの後向きマッピングから引き出され得る。例えば遠近法マッピングにおいて(そこでは対象物が消失点に向かって次第に消える)ターゲットイメージからテクスチュアまでのn×n画素フットプリントのマッピングが四辺形である。異方性の線が最大延長の方向を有し且つソースイメージ内へマッピングし返されたターゲットからの点を通過する線として定義される。
 この実施例においては、イメージ処理機が最大延長の方向を見つけるためにテクスチュアに対してフィルタフットプリントを後向きマッピングする。イメージ処理機はそれから最大延長の方向に沿って補間フィルタ(上記に略述した復元フィルタ)を掃引する。ターゲットイメージに対する画素値を計算するために、イメージ処理機は補間フィルタの出力へ再サンプリングフィルタを適用する。
 一つの実施においては、再サンプリングフィルタが異方性の線に沿って適合された一次元ディジタルフィルタである。それ故に、我々は特定の一次元フィルタに対して我々の発明の範囲を制限しようとしない。
 この実施においては、補間フィルタは二次元等方性フィルタである。再サンプリングフィルタについてのように、我々は補間フィルタの特定の種類に対して我々の発明の範囲を制限しようとしない。二次元等方性フィルタは一つの可能な実施にすぎない。この補間フィルタが付近のテクセルデータからこれらの値を補間することにより異方性の線に沿った位置における値を与える。補間フィルタがソースイメージへ加えられる分離した位置が、増分で垂直にか又は水平にかのいずれかでステップすることにより及び各位置において異方性の線における値を補間することにより決められ得る。例えば、異方性の線が水平よりももっと垂直である場合には、一つの解決法はテクスチュアの(u,v)座標系における垂直すなわちV方向にステップすることであろう。同様に、異方性の線が垂直よりももっと水平である場合には、もう一つの解決法はテクスチュアの(u,v)座標系における水平すなわちU方向にステップことであろう。
 異方性の線に沿ってステップするための一つの可能な方法は、ほぼ最低延長の長さで平均に間をあけられた、この線に沿った分離した位置で補間フィルタを適用することである。特に、異方性の線に沿ったサンプリング位置が、画素中心がテクスチュアマップ内へマッピングする点に置かれた中心サンプルを有する最小延長の長さとほぼ等しい距離で均等に間をあけられ得る。一旦これらのサンプル位置が計算されると、等方性フィルタが各位置に反復的に適用され得る。例えば、等方性フィルタが、最小延長の長さに依存するフィルタの寸法により、各サンプルに対する付近のテクスチュアサンプルへの補間を実行するためにサンプル位置に適用され得る。この方法を実行するための一つの特定の方法は、異方性の線に沿った各分離した点での3線型補間を実行することである。
 デジタルフィルタへ補間フィルタの出力を適用した後で、結果の画素値は異方性の線に沿った補間フィルタの出力の重み付けされた平均である。我々はここにフィルタの特定の種類を記載しているが、復元及び再サンプリング機能を近似するために用いられるフィルタの種類は変わり得る。
 図38A〜Dは異方性フィルタリングの過程の一例を図解している。図38A〜Dはテクスチュアマップ内のテクセル(1400a〜d)を図解し且ついかにして異方性フィルタが発生され得るかを示している。第1ステップは、ターゲットイメージ内の画素位置に対するフィルタフットプリント上で、逆変換を実行することによりソースイメージ内のフィルタフットプリントを計算することである。この例においては、テクスチュア1400a内のフィルタフットプリントは、四辺形1402として図解されている。
 次のステップは、ソースイメージ内へマッピングされた点で逆変換マトリックスを近似することである。図38Bに示されたこの例においては、この近似が平行四辺形1404により表現されている。この平行四辺形が四辺形形状フットプリントを近似する。一般に、この近似が逆幾何学的変換のためのヤコビ行列を計算することより見出され得る。我々は図示の目的のためにこの例を単純化したしたけれども、逆変換がもっと複雑な場合にも同じ概念が拡張され得る。これが以下に与えられた付加的な詳細から明らかになるだろう。
 再び図38における例を参照して、復元及び再サンプリングフィルタの寸法がヤコビ行列から引き出され得る。図38Bにおいては、我々は平行四辺形1404としてヤコビ行列を表現している。この平行四辺形の長さが再サンプリングフィルタの寸法を決めるために用いられ得る。この例においては長さが最大延長の方向1406に沿って測定され、その方向を我々は異方性の方向とも呼ぶ。同様に、四辺形の高さは復元フィルタの寸法を決めるために用いられ得る。この高さは最小延長の方向1408である。
 図38Cは平行四辺形を近似する矩形1406を示している。この矩形の寸法は平行四辺形の高さと長さとに対応している。こお矩形が実際のフィルタフットプリントの異方性を近似するために用いられる「棒状」フィルタを表現している。
 図38Dはいかにしてこの「棒状」フィルタが計算され得るかを図解している。復元フィルタのフットプリントは正方形1408により表現されている。この例においては、復元フィルタは正方形フットプリントを有し且つ従って本質的に等方性フィルタである。図38D中の線1410により表現される異方性の線に沿った値を計算するために、値が異方性の線1410の線を取り囲むテクセル(1400d)から補間される。その復元フィルタは、それ故に、上に記載された補間フィルタである。このフィルタの出力はその時、再サンプリングフィルタを表現する一次元フィルタへ加えられる。異方性の線1410が再サンプリングフィルタの配向を表現している。復元フィルタとして計算される値は、ターゲットイメージのための画素値を計算するために合計される異方性の線に沿って通される。
 上記の解決法は種々の方法で実行され得る。上記の解決法はハードウエア又はソフトウエアで実行され得る。リアルタイム異方性フィルタリングを支持するために、この方法はハードウエアで好適に実行され得る。この解決法の一実施例はタイラー(Tiler) チップ上で実行される。
 図9A〜Cに図解されたタイラーにおいては、異方性フィルタリングが走査変換ブロックとテクスチュアフィルタエンジンとで支持される。走査変換ブロックがソースイメージ内の点での逆幾何学的変換の偏導関数のヤコビ行列を取ることにより、再サンプリング及び復元フィルタのための制御パラメータを計算する。そのヤコビ行列が逆変換に対する最良局部アフィン近似の線型部分を表現している。もっと詳細に言えば、それは所望のソース点の周りに集中された逆変換の二次元でのテイラー数列の一次部分である。
 テクスチュア座標からスクリーン座標へのアフィン変換の線型部分は、2×2ヤコビ行列Jを有し、スクリーン座標からテクスチュア座標への逆変換はヤコビ行列J-1を有する。行列J-1の2行ベクトルの長さは単位寸法の画素に対する平行四辺形の2辺の長さである。逆ヤコビ行列における2行ベクトルの成分が平行四辺形の2辺の長さを決定する。
 この変換は走査変換ブロックが各プリミティブを走査するように走査変換ブロックが評価する属性エッジの式の形を取る。以下の式が典型的である。
  FS/W=AS/Wx+BS/Wy
ここで、画素位置(x,y)において;
 1) FS/W は均質座標(w)により分割されたテクスチュア座標(s)の値である。
 2) AS/W はx座標に対する均質座標(w)により分割されたテクスチュア座標(s)の勾配の値である。
 3」 BS/W はy座標に対する均質座標(w)により分割されたテクスチュア座標(s)の勾配の値である。F,A及びBはプリミティブの走査開始点に対  して全部正規化されている。走査変換ブロックはl/w, s/w及びt/w に対する  エッジの式を評価する。
 逆ヤコビ行列素子が平行四辺形の辺の長さと面積とを与える。近似する矩形の面積と矩形の長辺とが同じであり、矩形の短辺は(s,t)座標系におけるx及びy軸の間の角のsin により乗算された平行四辺形の短辺である。
 逆ヤコビ行列に対する導関数は、各テクスチュア座標(s,t)におけるエッジの式のFs, As及びBsから直接引き出す。
Figure 2004046886

 ヤコビ行列を見出した後に、その走査変換ブロックが2行ベクトルの長い方を見出す。このベクトルの方向が最大延長の線の方向すなわち異方性の線の方向を表現する。この行ベクトルの長さの他方のベクトルの長さに対する比率は異方性の比率と呼ばれる。一次元異方性フィルタの長さはこの比率から決められる。異方性比率により分割された長い方のベクトルの長さが復元フィルタの幅を制御する。
 長い方の辺が主軸となり且つテクスチュア座標においてステップする(クロックする)場合に増大されるべきスクリーン座標を決めるために用いられ得る。それは増分の大きさの決定のためにも用いられ得る。
// DsDx is the partial derivative of s with respect to x, etc.
 (DsDxはx等に対するsの偏導関数である)
// (DsDc, DtDc) are steps in (s, t) along axis of anisotropy.
  ((DsDc, DtDc)は異方性の軸に沿った(s,t)座標でのステップである)
if (LengthXSquared >= LengthYSquared) {
  MajorSquared = LengthXSquared
  InverseMajor = 1./sqrt(MajorSquared)
  DsDc = DsDx * InverseMajor
  DtDc = DtDx * InverseMajor
}else{
  MajorSquared = LengthYSquared
  InverseMajor = 1./sqrt(MajorSquared)
  DsDc = DsDy = InverseMajor
  DtDc = DtDy = InverseMajor

 ステップ寸法DsDc及びDtDcはテクスチュアフィルタエンジンへの基本的入力であり、そのテクスチュアフィルタエンジンがサンプリングとフィルタリングとを実行する。これらのステップが(多くとも)7度による正しくない配向を発生し、それは等辺平行四辺形の場合に起こる。
 この実施においては、短い方のベクトルの長さは、異方性比率がプリセットされた制限を越えない限り、復元フィルタの幅を普通は近似する。この制限を越えた場合には、異方性比率はその計算中にこのプリセットされた制限により置き換えられる。この方法において比率を制限することが、フィルタが値を計算するためのテクセル点の予め決められた数よりも多く用いるのを防止する。かくして、その比率上の制限がいかに長く復元フィルタが出力値を計算することを必要とするかについての境界を置く。
 いずれかのベクトルの長さが1よりも小さい場合に、もう一つの制限する場合が生じる。この場合においては、ベクトルの実際の長さが1の長さにより置き換えられる。フィルタ長さが補間を実行するために決して短すぎないことをこれが保証する。
 走査変換ブロックがそのフィルタに対する制御パラメータを計算した後に、走査変換ブロックはそれから画素値を計算する。一次元デジタルフィルタが補間フィルタからの出力の重み付けされた平均を計算する。その補間フィルタが、異方性の線に隣接するソースイメージから、テクセルデータを補間することによりこの出力を計算する。
 この補間フィルタの寸法は最大延長の方向と垂直な方向で測定されたフットプリント幅を近似するために調節され得る。変換が収縮するイメージの範囲内に生じるフットプリントが大きい場合には、ソースイメージの多くの点が単一出力点を発生するためにフィルタ重み付け係数により乗算されねばならず、それが非常に遅いすなわち費用のかかる実施となる。
 上に紹介したように、現存する等方性フィルタリング装置がMIPマッピングを用いることにり計算時間を低減する。MIPマッピングはソースイメージに基づいてイメージピラミッドを形成することに帰し、且つその時ソースイメージ上で等方性フィルタに対する最良の適合を見出すために、このピラミッド内のイメージを用いる。このピラミッドの各レベルがサンプリング濃度でそれの下のレベルと比較して各寸法で2の係数だけ低減される。このピラミッドの底は元のソースイメージである。低減されたサンプリング濃度のイメージを補間することが、フットプリントが低減された濃度へ元のサンプリング濃度の比率により、補間装置のフットプリントに対して拡大される等方性フィルタによって元のイメージをフィルタリングするのと類似の効果を発生する。かくして、フットプリントの二つの拡大の力が補間するためのピラミッドの正しいレベルを選択することにより達成され得る。拡大のあらゆる比率が所望の比率をひとまとめにする二つのピラミッドレベルの補間の結果を混合することにより得ることができる。
 一実施例においては、等方性フィルタの寸法がMIPマッピング解決法を用いることにより、最小延長の長さともっと詳細に適合するように修正され得る。ヤコビ行列を解析することにより決められた等方性フィルタ寸法は、ひとまとめにするピラミッドレベルと混合係数とを選択するために用いられ得る。一つの実施において、基本ピラミッドレベルはフィルタ寸法の底2の対数の整数部分であり、且つ混合係数は少数部分である。
 特定の例が上述の特定の実施の動作を図解するのを助ける。所望の等方性寸法が3である場合は、log23は1.583 と等しい。この結果の整数部分は1であり、それがそれぞれ2及び4の濃度低減によりレベル1及び2を選択する。レベル0は低減無しよる元のソースイメージである。混合係数は0.585 である。
 一つの実施において、テクスチュアフィルタエンジンが混合を延期する。最初に、テクスチュアフィルタエンジンが、各レベルにおいて所望の点に集中された異方性比率と比例する長さの1−Dフィルタを適用する。それからテクスチュアフィルタエンジンが各レベルからの出力を混合する。
 代わりの実施においては、テクスチュアフィルタエンジンが異方性の線に沿ってステップし、且つこの線に沿って分散するサンプルにおいて3線型補間を実行する。テクスチュアフィルタエンジンが、それから各サンプルにおいて3線型補間の結果に対して一次元フィルタを適用する。
 補間フィルタの寸法を制御することに加えて、再サンプリングフィルタの寸法もまた制御され得る。一つの実施においては、テクスチュアフィルタエンジンが種々の寸法の1−D再サンプリングフィルタのための係数の表を用い、且つ表内の特定された寸法の間の寸法のフィルタを作るために、それらの間で混合する。高速ハードウエアに対して特に有効な実施は2の累乗としてフィルタ長さを選択することであり、且つ三角あるいは台形形状を有するようなフィルタインパルス外形を選択することである。個別のフィルタはこの時非常に単純な係数を有し、且つ乗算の成果はハードウエアにおける少しだけの加算とシフトへ低減されされる。
 以下は2の最初の4累乗に対するこれらのフィルタに対する係数の表である。
Figure 2004046886
 この例においては、異方性比率の2を底とするlog がレベル及び混合係数を選ぶために用いられている。レベルが4を越えると、テクスチュアフィルタエンジンが最後のフィルタを用い、且つ混合しない。この例においては、全部のフィルタが1の利得を有し、全部のそれらの係数が1へ加えることを意味している。1,2,4及び8による乗算はシフト動作により実行される。3,5及び6による乗算は一回の加算に1回のシフト動作を加えることより実行され得る。最後に、7による乗算は一回の減算と複数のシフト動作とにより実行され得る。2の累乗による除算はシフトするだけである。15による除算は、2を底とする1.00010001による乗算とそれに続く4位置のシフト(16による除算)によりきわめてよく近似され得る。乗算は二つの加算のみである。
 上述の解決法が合成フィルタの制御に二つの自由度を可能にする。上述の実施例においては、自由度は最小及び最大延長の方向におけるフィルタの大きさである。この解決法が、大いに非線形なマッピングの結果であり得る各点での真のフットプリントを計算する費用無しに、非常に少ないえイリアシング及びブラーリングを有するイメージを発生する。この解決法が異方性の線に沿って実際のフットプリントフィルタを掃引する連続フィルタを近似する。その解決法が異方性の線に沿った「棒状形状」フィルタを生じるので、その解決法が円形又は正方形よりも実際のフットプリントの非常に良好な適合を達成する。我々は、リアルタイム図形レンダリング装置にこの方法を実施した。それ故に、この方法がまだリアルタイム速度を維持しながら、異方性フィルタリングによる高品質テクスチュアマッピングを支持し、すなわち10Hzより大きい速度で且つ特に表示装置のリフレッシュ速度(例えば75Hz)でイメージデータの新しいフレームを計算する。
 図39はテクスチュアフィルタエンジン(401, 図9B)の一実行を図解するブロック線図である。このテクスチュアフィルタエンジンが画素待ち行列(図9Bにおけるテクスチュア基準データ待ち行列399 ;Pixel Queue)からテクスチュア基準データの事例を読み取り、且つアルファ及びカラー値(アルファ、及びRGBカラー係数)又はこれらの事例に対するシャドウ係数を計算する。この実行がテクスチュアフィルタリングとシャドウフィルタリングとの双方を支持する。テクスチュアマッピング動作に対して、テクスチュアフィルタエンジンがテクスチュアカラーとアルファとを計算し、且つアルファとカラー係数とを計算するためにテクスチュアカラーをフィルタリングする。シャドウイング動作に対して、テクスチュアフィルタエンジンが深さ比較を実行し、且つシャドウ減衰係数(s)を計算するために結果の値をフィルタリングする。
 画素待ち行列が(図9B内の走査変換ブロック395 ような)ラスター化装置からテクスチュア基準データを受け取り、且つテクスチュアフィルタエンジン401 に対する先入れ先出しバッファとして働く。この「サンプル有効」データが、テクスチュアキャッシュ(Texture Cache)から引き出されたテクスチュア又はシャドウマップ素子の集合内のどのサンプルが現在のフィルタリング動作に対して有効であるかを特定する。
 テクスチュアマッピング動作に対して、テクスチュア基準データはテクスチュア(s,t)内へマッピングされた画素位置の座標を含んでいる。3線型MIPマッピングを支持するために、入力は二つの最も近いMIPマップレベル((hi,lo)と詳細なレベル(LOD)に対する(s,t)座標を含む。「積算スケール」データがカラー成分補間装置の出力端子へ加えられる重み付け係数を制御するために用いられる。「延長制御(Extend Control)」データはテクスチュア延長モードを制御するデータビットである。テクスチュア延長モードはテクスチュア要求がテクスチュアマップ範囲の外側にある場合に、クランプ、ラップ又は反射動作のいずれかを実行するためにテクスチュアフィルタエンジンに指令する。

 シャドウイング動作に対して、入力はサンプルインデックス、シャドウマップ内へマッピングされた画素位置の(s,t)座標、及び所定の画素位置に対する光源からの幾何学的プリミテブの深さを表現するベータを含んでいる。このサンプルインデックスは、シャドウフィルタがシャドウマップ素子すなわち「サンプル」上で動作する特定の方法に関係している。この特定の実施では、テクスチュアフィルタエンジンがクロックサイクル当たり8サンプルに動作する。シャドウフィルタリングの場合には、これらのサンプルが4×2グリッドに対応する。例えば、シャドウフィルタは4×4モード(4×2+4×2=4×4)に対するサンプルの2集合と8×8モードに対する8集合との全部に動作する。4×4モードの場合には、シャドウフィルタが4×4の全体フットプリント内の上側左、上側右、下側左、及び下側右の3×3ブロックへ各々1個に、3×3フィルタを4回適用する。第1クロックサイクルにおいては、それが上側の4×2グリッドを処理し、且つ第2クロックにおいてはそれは下側の4×2グリッドを4×4ブロックにおいて処理する。このサンプルインデックスは現在処理されている8サンプルの集合を確認するために用いられるインデックスである。このサンプルインデックスは、4×4の場合に対しては2クロックサイクルを通して、また8×8の場合に対して8クロックサイクルを通してステップし、且つどの4×2部分集合が現在処理されているかを確認する。
 図41に示されるように、テクスチュアフィルタエンジンがキー発生器1310、分数制御器1312、カラー成分補間装置1314、シャドウフィルタ積算機1316、及び積算機及び後処理機1318を含んでいる。
 テクスチュアマッピング動作において、キー発生器1310が(s,t)座標とLODとを読み取り、且つテクスチュアキャッシュから対応するテクスチュアデータを引き出すためにキャッシュキーを発生する。テクスチュアキャッシュがテクスチュア要求に応じてアルファとRGB成分とを返す。分数制御器1312が入力として(s,t)座標を受け取り、且つカラー成分補間装置1314において2線型の動作と3線型補間装置との双方又はいずれか一方を制御する。カラー成分補間装置1314が補間さたアルファとRGB成分とを計算するためにテクセルサンプルを補間する。積算機及び後処理機1318がそれからアルファとRGB成分とをスケーリングし、スケーリングされた成分を積算し、且つ現在処理されている画素位置に対応するアルファとカラー係数とを出力する。これらのアルファとカラー係数とはテクスチュア変調(Textur Modulation)過程への入力として、画素エンジンへのカラーとアルファ値入力となる。
 異方性テクスチュアマッピングにおいて、カラー成分補間装置1314が異方性の線に沿って進み、且つ各ステップにおいて3線型補間を実行する。積算機1318が一次元フィルタとして働き、アルファとカラー成分とをスケーリングし、且つそれからスケーリングされた成分を積算する。一つの特定の実施例においては、積算機1318が異方性の比率に基づいた台形又は三角形フィルタリングを用いてアルファ及びカラー成分をスケーリングする。両方の場合に、フィルタのエッジにおけるロールオフを近似するために再サンプリングフィルタの遠い縁での成分を積算機がスケーリングする。台形フィルタリングを達成するために、スケールファクタはフィルタのエッジにおける線型ロールオフに対応し、且つフィルタのエッジの間のステップにおいて一定である。
 一つの特定の実行において、異方性の線に沿ってステップすためのスケールファクタが次のように計算される。1対1から2対1までの異方性比率に対して、この積算機は異方性ウオーカーの各ステップにおいて0.5 の重み付け係数を適用する。2対1及びそれより大きい異方性比率に対しては、積算機はステップn<(異方性−1)/2に対して1/異方性による成分を重み付けし、且つ(異方性−1)/2より大きいか又はそれに等しいnに対して 0.5(異方性−2n)/異方性による成分を重み付けする。この特定の例における異方性比率は逆ヤコビ行列に対して最もよく適合する矩形の短辺に対する長辺の比である。逆ヤコビ行列は視野空間座標からテクスチュア座標(すなち(x,y)座標から(s,t)座標)への幾何学的変換の偏導関数のマトリックスである。異方性の線は逆ヤコビ行列の長い方の列ベクトルの方向における(s,t)座標を通る線である。
 シャドウイング動作に対して、キー発生器1310がシャドウマップ内へマッピングされた画素位置の(s,t)座標を読み取り、且つキャッシュキーを発生する。テクスチュアキャッシュが、シャドウフィルタ積算機1316へシャドウマップ素子(シェイデル ; shadel)を返す。シャドウフィルタが入力としてシャドウインデックスとベータとを受け取り、且つシャドウマスクを発生するためにフィルタフットプリント内の深さ値と光空間内の画素データの現在の例の深さを比較する。シャドウフィルタ積算機がシャドウマスク内の素子を合計し、且つサンプルの数によりその合計を割り算する。この実行において、テクスチュアフィルタエンジンが深さ比較ステップの結果に対して台形フィルタを適用することにより、フィルタフットプリントのエッジにおいて円滑なロールオフを達成する。台形フィルタを実行するために、シャドウ積算フィルタがそれぞれ4×4又は8×8フィルタフットプリントに対して4回3×3又は7×7ボックスフィルタを適用することにより、4個の予備シャドウ係数を計算し、且つカラー成分補間装置1314のうちの一つへその4個の予備係数を送る。このカラー成分補間装置1314が最終シャドウ係数を計算するためにそれらの予備係数に2線型補間を実行する。
 上に紹介したように、キー発生器1310が画素待ち行列から(s,t)座標を読み取り、且つテクスチュアキャッシュからテクスチュアデータを引き出すためにキャッシュキーを発生する。図40はもっと詳細にこのキー発生器を図解するブロック線図である。hi and lo MIPマップ(二つの最も近いMIPマップ)内の(s,t)座標に基づいて、キー発生器がそのhi and lo MIPマップ内のテクスチュアサンプル位置を計算する(1340)。このキー発生器がそれからこれらのサンプルからキャッシュキーを計算する(1342)。このキー発生器がキャッシュキー、(s,t)座標、及びhi and lo MIPマップレベルに対するLODを、要求されたテクスチュアサンプルを返すテクスチュアキャッシュへ転送する。勿論、1個だけの詳細なテクスチュアマップレベルが用いられる場合には、このキー発生器は1個のテクスチュアマップに対してのみキーを発生する。
 図39における分数制御器1312がテクスチュア又はシャドウマップ内のサンプル間及び3線型補間のためのMIPマップレベル間の補間を制御する。2線型補間を支持するために、分数制御器がテクスチュア又はシャドウマップ内のサンプル間の重み付けを制御する。3線型補間を支持するために、分数制御器が二つの最も近いMIPマップレベル内へマッピングされた点に対して4個の最も近いサンプルの間で補間すること(2線型補間)を補間装置に指令し、且つそれから二つのMIPマップレベルからの結果を混合するために線型補間を指令する。この分数制御器は入力としてhi and lo MIPマップレベルに対するLOD及び(s,t)座標を受け取り、且つ各MIPレベルにおけるサンプル間とMIPマップレベル間の補間を制御する。
 カラー成分補間装置1314はアルファ及びRGBカラー成分のための補間装置を含んでいる。図41はもっと詳細に4個の補間装置のうちの一つを図解しているブロック線図である。この補間装置は一つの成分に対するカラー成分補間を取り扱い、且つシャドウ係数に2線型補間を実行する。他のカラー成分補間装置はカラー成分のみを取り扱う。
 このカラー成分補間装置はテクスチュアキャッシュからテクセル又はシャドウマップ素子を受け取り、且つそれらをマルチプレクサ(MUX)のバンク1350へ加える。マルチプレクサのバンク1350へ入力する場合に、サンプル有効データがどのサンプルが有効であるか、すなわち現在のテクスチュア又はシャドウイング動作に用いられるべきサンプルを確認する。サンプル有効制御信号に基づいて、それらのマルチプレクサが入ってくるサンプルか又はテクスチュア背景カラー1352かのいずれかを選択する。シャドウイング動作に対しては、カラー成分補間装置1314がシャドウフィルタ積算機1316へシャドウ素子を送る。3つのカラーチャネルが単一の24ビット幅シャドウマップ素子を形成するために用いられ、且つアルファチャネルがシャドウイング動作において無視される。テクスチュアマッピング動作に対しては、カラー成分補間装置が線型補間装置(Linear Interpolator)の段1354, 1356及び1358へテクスチュアサンプルを転送する。
 3線型補間においては、カラー成分補間装置が3段の線型補間装置を用い、2段は各MIPマップレベル(1354, 1356)におけるサンプルの間の補間のためであり、且つもう一つは各MIPレベル(1358)からの結果を混合するためである。カラー成分補間装置が4個のフィルタフットプリントから計算されたシャドウ係数を結合するために2線型補間を実行する。図43に示されたように、この2線型補間を実行するために、最後の2段(1356及び1358)が用いられる。マルチプレクサの第2バンク1360が4個のシャドウ係数と線型補間装置の第1段1354の出力との間で選択する。テクスチュアマッピングとシャドウ動作との双方において、カラー成分補間装置が積算機及び後処理機1318へそれらの補間装置段の出力を転送する。
 シャドウフィルタ積算機1316が画素待ち行列からサンプルインデックス及び光深さ値(ベータ)を受け取り、シャドウマスクを発生するためにその光深さ値をテクスチュアキャッシュから返されたシャドウマップ素子と比較し、且つ予備シャドウ係数を計算するためにそのシャドウマスクをフィルタリングする。図44はもっと詳細にシャドウフィルタ積算機を図解するブロック線図である。シャドウフィルタ積算機内の深さ比較器がフィルタフットプリント内のシャドウ素子の深さを比較し、且つシャドウマスクを発生する。この特殊の場合において、シャドウマスクはフィルタフットプリントの4×2部分に対応するブール値による8ビットである。
 フットプリント制御器1372が画素待ち行列からサンプルインデックス値に基づいて全体フットプリントの現在の4×2部分を選択する。フットプリント制御器がクロックサイクルとフィルタリングモード(2×2,4×4又は8×8)とに基づいて4個のシャドウ寄与ブロックの各々へフットプリントマスクを転送する。そのフットプリントマスクが8シャドウマスク素子のうちのどれが、4×4及び8×8モードにおいて、4個のボックスフィルタの各々に対して現在のクロックサイクルにおいて有効であるかを示す。2×2モードにおいては、シャドウフィルタ積算機が4個の最も近いサンプルの各々がシャドウ内にあるか無いかのいずれかを示す4個のブール値を出力する。
 シャドウフィルタ積算機がフィルタフットプリント内のサンプルへ4ボックスフィルタ(例えば、3×3又は7×7)を適用する。シャドウマスクのどの素子が現在のクロックサイクルに対して有効であるかを決め且つそれからそれらの有効な素子を合計するために、シャドウ寄与ブロックの各々がフットプリントマスクとシャドウマスクとを結合する。全体のフィルタフットプリントに対するシャドウマスク内の有効な素子を積算した後に、シャドウ寄与ブロックが予備シャドウ係数を計算するためにサンプルの数によりその合計を除算し、それらがカラー補間装置内の2線型補間段へ転送される。カラー補間装置がそれから最終シャドウ係数を計算するために4個の予備シャドウ係数の間を補間する。
 積算機及び後処理機1318がカラー成分補間装置1314からアルファ及びカラー成分を受け取り、且つテクスチュア基準データの各例に対してカラーとアルファ係数とを計算する。シャドウイング動作に対して、テクスチュアフィルタエンジンはシャドウ減衰係数を計算するために1チャネル(アルファ又はRGB)を使用する。シャドウフィルタリング論理は別々にも実施され得る。図43はもっと詳細に積算機及び後処理機を図解するブロック線図である。図示のように、各カラー成分(アルファ及びRGB)はスケール及び積算機を有している。各成分に対するスケール及び積算機1380は入力として積算スケールとカラー成分とを受け取り、且つ応答して、カラー成分をスケーリングし且つそれを成分合計ブロック1382内の積算された成分値へ加える。例えば、異方性フィルタリングにおいて、テクスチュアフィルタエンジンが異方性の線に沿って進む時に、スケール及び積算機ブロック1380が復元フィルタ(3線型補間装置)の出力を重み付けする。最後のステップの後に、アルファ及びRGB成分のためのスケール及び積算機が最終カラー成分係数を出力する。
 シャドウイング動作に対して、スケール及び積算機ブロックは多数動作を迂回するが、周囲オフセットを加える。この周囲オフセットが全体的にシャドウ内の平坦な対象物がまだ見えることを保証する。例えば、1のシャドウ係数が全体に照明されたことを意味し、0のシャドウ係数が全体にシャドウ内であることを意味している。カラーが0の係数により乗算された場合には、対象物がその画素位置では見えなくなる。かくして、オフセットが加えられ、且つシャドウ係数が、オフセットシャドウ係数がオフセット値から1までに配列するように1へ留められる。
 シャドウ後処理機1384は全部で3個のカラーチャネルに対して、及び(条件付きで)アルファチャネルに対して、スカラーシャドウ減衰「s」の模写を行う。シャドウイメージを計算することのためにシャドウ減衰の条件付き補数化(s=1−s)もある。シャドウイメージは、シャドウ係数のアレイあるいはgスプライト(gsprite)をシャドウイングするために用い得るシャドウ係数の補数のアレイである。
 最後に、マルチプレクサ段1386が、シャドウイング動作のためのシャドウ係数か、又はテクスチュアマッピング動作のためのRGB及びアルファ成分のいずれかを選択する。要するに、テクスチュアフィルタエンジン401 がシャドウイング動作とテクスチュア化動作との双方を実行する。テクスチュアフィルタエンジンがテクスチュア変調段へテクスチュアマッピング動作の結果を送る。テクスチュア変調は典型的に、補間されたカラー又は走査変換ブロックにおいて計算されたカラー値によりテクスチュアフィルタからのRGBカラー値を乗算することを含んでいる。それに加えて半透明性を有する図式的対象物に対して、テクスチュア変調は走査変換ブロックからの補間されたアルファ値によりテクスチュアフィルタからのアルファ値を乗算することも含み得る。この実行に依存して、テクスチュア変調はテクスチュアフィルタエンジン(図9Bにおける素子401)又は画素エンジン(図9Bにおける素子406)において実行され得る。それはまた走査変換ブロック(図9Aにおける素子394 又は図9Cにおける素子397)においても実行され得る。一つの実行においては、テクスチュアフィルタエンジン401 が補間された値を、構成される値を計算するためにフィルタリングされた値と結合する。画素エンジン406 がその時構成された値を記憶するか又は対応するRGB成分又は対応する画素位置に対する画素か又は断片バッファ内に記憶されたアルファ成分と結合するかどうかを決定する。
 シャドウイング動作の場合においては、シャドウ係数が画素又は断片バッファ内の対応する画素位置におけるRGB及びアルファ値へ、又は現在の通路の間に発生され且つ待ち行列内でバッファされた、補間されたRGB又はアルファ値へ加えられ得る。例えば、対象物がそれに関連するテクスチュアを有さない場合には、テクスチュアフィルタエンジン401 内のテクスチュア変調器が、積算機及び後処理機からのシャドウ減衰係数により、見つけられたイメージを表現し且つテクスチュア標準データ待ち行列391(図9B)内に記憶された、補間され且つ未解決のRGB及びアルファ値を乗算できる。
 我々は幾つかの実施例を参照してイメージ処理装置、それの構造、及び関連する方法の種々の態様を記載してきた。我々は詳細に幾つかの実施例を記載してきたが、我々はこれらの特定の実施例に我々の発明を制限するつもりはない。例えば、我々の新奇な構造は、手作業装置からワークステーションへ配列されるコンピュータ装置、ゲームプラットフーム、セットトップボックス、図形処理ハードウエア、図形処理ソフトウエア、及びビデオ編集装置を、含むけれどもそれに制限されない種々のハードウエア設備へ適用され得る。我々の装置と方法との変形はハードウエア又はソフトウエアあるいはそれら双方の組み合わせで実行され得る。
 我々の発明の原理が置かれ得る多くの可能な態様の範囲において、我々は上述された詳細な実施例が図解のためのみであり、且つ我々の発明の範囲を制限するものとして取られるべきではないことを強調する。むしろ、我々は引き続く請求項及びそれらの請求項と等価な請求項の範囲と精神との中に入り得るような全部の態様を我々の発明として請求する。
画像処理装置のブロック・ダイアグラムである。 本発明を実現するためのシステム環境を表わすブロック・ダイアグラムである。 ある実施態様のシステム・アーキテクチャーのブロック・ダイアグラムである。 ある実施態様の画像処理ハードウェアのブロック・ダイアグラムである。 ある実施態様における幾何学的基本図形を変換する画像処理装置の一部を示すブロック・ダイグラムである。 ある実施態様における変換工程の概観を示すフロー・ダイグラムである。 ある実施態様における変換工程の概観を示すフロー・ダイグラムである。 ある実施態様の表示生成工程の概観を示すフロー・ダイアグラムである。 ある実施態様における、フレーム周期に関して表示生成の一面を示したダイグラムである。 ある実施態様におけるディジタル信号処理装置(DSP) のブロック・ダイグラムである。 タイラーの各種実施態様を示すブロック・ダイアグラムである。 タイラーの各種実施態様を示すブロック・ダイアグラムである。 タイラーの各種実施態様を示すブロック・ダイアグラムである。 は、メモリーから生地データにアクセスするための装置を示すブロック・ダイグラムである。 メモリーから生地データにアクセスするための装置を示すブロック・ダイグラムである。 gスプライト・エンジンの別様実施態様のブロック・ダイグラムである。 gスプライト・エンジンの別様実施態様のブロック・ダイグラムである。 ある実施態様における合成用バッファーのブロック・ダイグラムである。 ある実施態様におけるディジタル・アナログ変換器(DAC) のブロック・ダイアグラムである。 チャンク化の一局面を示す一例の模式図である。 ある実施態様におけるチャンク化の局面を示す模式図である。 ある実施態様におけるチャンク化の局面を示すフロー・ダイアグラムである。 ある実施態様におけるチャンク化の局面を示すフロー・ダイアグラムである。 ある実施態様におけるチャンク化の局面を示す模式図である。 ある実施態様におけるチャンク化の局面を示す模式図である。 ある実施態様における画像圧縮を示すブロック・ダイアグラムである。 ある実施態様におけるgスプライト処理を示す模式図である。 ある実施態様におけるgスプライト処理を示す模式図である。 ある実施態様におけるgスプライト変換を実行する方法の一局面を示すフローダイアグラムである。 ある実施態様においてgスプライト変換がどのようにして搬送遅延を下げることができるかを示すフロー・ダイアグラムである。 ある実施態様におけるgスプライト・データ構造のブロック・ダイアグラムである。 ある実施態様において、出力装置座標にマップされるgスプライトの例を示す模式図ある。 ある実施態様における表示生成の一局面を示す模式図である。 26図の表示生成を、帯域周期という観点で示すフロー・ダイアグラムである。 3通りの実施態様におけるピクセル、および、断片生成の局面を示すフローダイグラムである。 3通りの実施態様におけるピクセル、および、断片生成の局面を示すフローダイグラムである。 3通りの実施態様におけるピクセル、および、断片生成の局面を示すフローダイグラムである。 3通りの実施態様におけるピクセル、および、断片生成の局面を示すフローダイグラムである。 3通りの実施態様におけるピクセル、および、断片生成の局面を示すフローダイグラムである。 3通りの実施態様におけるピクセル、および、断片生成の局面を示すフローダイグラムである。 本発明のある実施態様において、ピクセル断片を融合する方法を示すフロー・ダイアグラムである。 本発明の実施態様に、断片融合回路を装着した様子を示すブロック・ダイアグラムである。 第30図に示した断片融合回路の融合テスト・モヂュール実装の様子を示すブロック・ダイアグラムである。 ピクセル、および、断片バッファーの一部を示す模式図である。 このピラミッド構造の分解状態を表わす模式図である。 タイラーにおけるバッファー分解法を示すフロー・ダイアグラムである。 タイラーにおけるバッファー分解法を示すフロー・ダイアグラムである。 断片解消サブシステムの実装状態を示すブロック・ダイアグラムである。 断片分解消サブシステムのまた別の実装状態を示すブロック・ダイアグラムである。 生地マッピングを示す模式図である。 38A-38D 図は、ある実施態様における異方性濾過法を示す模式図である。 生地および影フィルターの実装状態を示すブロック・ダイアグラムである。 第39図のキー・ジェネレーターの実装状態を示すブロック・ダイアグラムである。 第39図のカラー挿入器の実装状態を示すブロック・ダイアグラムである。 第39図の陰影フィルター集積器の実装状態を示すブロック・ダイアグラムである。 第39図の集積器と後処理器の実装状態を示すブロック・ダイアグラムである。

Claims (59)

  1.  映像処理方式において、
     描図したフィルタ足跡を計算するために逆変数を用いてフィルタ足跡を根源映像に描図し、
     異方性の線に沿いフィルタを反復的に適用して根源映像からの画素値を標本化し、
     反復的濾波過程の出力を濾波して行き先映像に対する画素値を計算する各過程を備えて、行き先映像から根源映像までの点の描図が逆変換によって行なわれる場合に行き先映像まで根源映像を構造描図する方法。
  2.  フィルタが補間フィルタであり、そのフィルタを適用する過程が、描図した
     フィルタ足跡の最大延長の方向に沿い補間フィルタを適用して根源映像からの画素値の補間を備えている請求項1記載の方法。
  3.  処理過程が、補間フィルタの出力への再標本化フィルタの適用とその再標本化フィルタの出力の総計による行き先映像用画素値の計算とを備えた請求項2記載の方法。
  4.  再標本化フィルタが一次元フィルタである請求項3記載の方法。
  5.  描図したフィルタ足跡を近似するための逆変換用のジャコビ・マトリックスの計算を含んだ請求項1記載の方法。
  6.  最大延長の方向をジャコビ・マトリッスクにおけるベクトルから判定する請求項5記載の方法。
  7. フィルタ足跡を描図する過程が、根源映像に描図した点における逆変換の導関数の計算を含んでいる請求項1記載の方法。
  8.  描図したフィルタ足跡を近似するための根源映像内の点における逆変換の部分導関数のジャコビ・マトリックスの計算を含んでいる請求項1記載の方法。
  9.  補間フィルタの足跡が二次元であり、描図したフィルタ足跡を適応させるために、補間フィルタの足跡の大きさを調整する過程を含んでいる請求項2記載の方法。
  10.  補間フィルタの足跡の大きさを調整するための根源映像のMIP描図の使用を調整過程に含めた請求項9記載の方法。
  11.  フィルタが補間フィルタであり、
     描図したフィルタ足跡を近似するために根源映像に描図した点で、第1および第2のベクトルを含んだ逆変換のジャコビ・マトリックスを計算し、
     第1もしくは第2のベクトルの方向から最大延長の方向を判定し、
     補間フィルタの出力に再標本化フィルタを適用するとともに、その再標本化フィルタの出力を総計して、行き先映像用画素値を計算する各過程をさらに含んだ請求項1記載の方法。
  12.  1および第2のベクトルのいずれかの長さから補間フィルタの大きさを判定するとともに、根源映像に対する補間フィルタの大きさを調整するために根源映像のMIP描図を用いる過程を含んだ請求項11記載の方法。
  13.   第1もしくは第2のベクトルの長さから再標本化フィルタの大きさを判定するとともに、第1もしくは第2のベクトルの長さに基づいて補間フィルタの大きさを調整する過程を含んだ請求項11記載の方法。
  14.  構造メモリ、
     指令と、その指令を説明し、図形素材から逆変換データを計算し、図形素材から構造宛名を計算し、さらに、構造宛名に対応した構造メモリに構造データを回収するための図形素材とを受取るための設定プロセッサ、並びに、
     その設定プロセッサおよび構造メモリと連通して、逆変換データおよび構造宛名を受信し、構造中に描図した点を介して異方性の線を計算するために、異方性の線に沿って標本化した画素値の加重総和を計算するためのフィルタを含んだ構造フィルタ
     を備えて、図形素材の表面に構造の構造描図を施すための方式。
  15. 逆変換データが、根源映像に描図した図形素材の表面上の点の逆変換を表わすマトリックスであり、構造フィルタ機関が、そのマトリックスから異方性の線の方向を判定するための回路を含んでいる請求項14記載の方式。
  16.  根源映像から画素値を標本化するための補間フィルタ回路をフィルタに含めた請求項14記載の方式。
  17. フィルタが二次元補間フィルタである請求項16記載の方式。
  18.  異方性の線に沿って画素値を標本化するための補間フィルタおよびその補間フィルタの出力に適用した一次元ディジタル・フィルタをフィルタに含めた請求項14記載の方式。
  19. 図形表現方式において、
      画素断片を発生させるために、大きさS1 の第1映像領域について図形素材の第1組を面走査し、
      断片入力として画素断片を断片バッファに蓄積し、
      断片バッファにおける断片入力の個数が予定値を超えたか否かを判定し、
      断片入力の個数が予定値を超えたとの判定に応じ、第1映像領域を少なくとも二つの大きさS2 の映像領域に分割し、
      対応する第1画素断片を発生させるために、大きさS2 の第1映像領域に対する図形素材の第1組の第1副組を面走査する過程、対応する第1画素断片を分解する過程および大きさS2 の後続映像領域に対して面走査と分解との各過程を反復する過程を含めて、大きさS2 の少なくとも二つの映像領域を連続的に表現する
     各過程を備えて図形素材を表現する方法。
  20.  第1映像領域の大きさS1 を評価するとともに、第1映像領域の大きさに基
     づいて大きさS2 を判定し、さらに、
      大きさS1 の第1映像領域を大きさS2 の映像領域に分割する
     各過程を分割過程に含めた請求項19記載の方法。
  21.  それぞれ、第1映像領域の大きさS1 の1/4の大きさの4映像領域への大
     きさS1 の第1映像領域の階層的分割を分割過程に含めた請求項19記載の方法。
  22.  図形素材の大きさS1 の映像領域群への類別をさらに含めた請求項19記載の方法。
  23.  断片入力が予定値を超えたという判定に応じて断片バッファを空にする過程
     をさらに含めた請求項19記載の方法。
  24.  断片入力が予定値を超えたという判定に応じて断片バッファを空にし、さら
     に、
      大きさS2 の第1映像領域に対する図形素材の第1組の第1副組を面走査する過程に、図形素材の第1組を読取って、大きさS2 の第1映像領域に突出しない素材をすべて排除する過程を含める
     各過程をさらに含めた請求項19記載の方法。
  25. 断片入力の個数が予定値を超えたという判定に応じて断片バッファを空にし、
      図形素材の第1組を少なくとも二つの大きさS2 の映像領域に類別して、図形素材の第1組の対応した少なくとも二つの副組を形成し、さらに、
      大きさS2 の第1映像領域に対する図形素材の第1組の第1副組を面走査する過程に、図形素材の第1組の対応する副組の一つの面走査を含めた請求項19記載の方法。
  26. 断片バッファにおける断片バッファ入力の個数の足跡を保持するために断片バッファ・カウンタを歩進させ、さらに、判定の過程に断片バッファ・カウンタの計数値の評価を含めた請求項19記載の方法。
  27.  画素断片の対応した第1組を断片バッファに蓄積し、画素断片の対応した第1組が断片バッファに付加されるに従って、断片バッファの断片入力の個数が予定値を超えたか否かを判定し、図形素材の第1組の第1副組を面走査している間に、断片バッファの断片入力の個数が予定値を超えたとの判定に応じ、大きさS2 の映像領域を少なくとも二つの大きさS3 の映像領域に分割する各過程をさらに含んだ請求項19記載の方法。
  28.  画素断片が色彩、区域および深度の各データを含む請求項19記載の方法。
  29.  画素断片が色彩、区域、不透明性および深度の各データを含む請求項19記載の方法。
  30.  断片メモリ、
      図形素材を読取るように動作し得るとともに、大きさS1 の映像領域および大きさS2 の映像領域について画素データを発生させるように動作し得る面走査器、
      その面走査器と連通して、画素データを受信するように動作し得るとともに、選ばれた画素データの断片メモリへの伝送を制御するように動作し得、断片メモリと連通して、選ばれた画素データを断片メモリに蓄積するように動作し得る画素機関、および、
      断片メモリと連通して、断片メモリのメモリ使用が予定値に達したか否かを判定するように動作し得、面走査器に連通して、断片メモリのメモリ使用が予定値に達した場合に、副領域の一つに対して図形素材の副組を面走査器に面走査させる緩衝制御回路
     を備えて、表示映像を図形素材に計算させるための装置。
  31.  大きさS1 を有する画素メモリをさらに含むとともに、大きさS2 の副領域
     を含み、選ばれた画素データの断片および画素メモリへの伝送を制御するように動作し得るとともに、断片および画素メモリと連通して、選ばれた画素データを画素もしくは断片のメモリに蓄積し、さらに、
      面走査器と連通して、断片メモリのメモリ使用が予定値に達した場合に、大きさS2 の映像領域に対する図形素材の副組を面走査器に、画素メモリの対応した副領域まで面走査させる請求項30記載の装置。
  32.  大きさS1 の映像領域に対し、大きさS1 の映像領域の副領域である大きさS2 の映像副領域に対し、さらに、大きさS2 の映像領域の副領域である大きさS3 の映像副領域に対し、画素データを発生させるように面走査器が動作し得る、請求項30記載の装置。
  33.  画素メモリが、大きさS1 を有するとともに、大きさS2 およびS3 の副領域を有し、面走査器が、大きさS1,S2 もしくはS3 の映像領域に対する画素データを画素メモリの対応する領域まで発生させるように動作し得る請求項32記載の装置。
  34.  断片メモリのメモリ使用が予定値に達した場合に、画素メモリを階層的に副分割するように面走査器が動作し得る請求項33記載の装置。
  35.  素材を蓄積するように動作し得る素材列、
      その素材列と連通し、その根源列から素材を受信して構造データ要求に変換するように動作し得る予備面走査器、
      予備面走査器と連通し、構造データ要求を蓄積するように動作し得る構造要求列、
      構造隠し場、
      構造要求列と連通し、メモリから構造データを回収して、構造隠し場に蓄積するように動作し得る構造獲得ユニット、
      素材列と連通して、素材列から素材を受取るように動作し得、構造隠し場と連通して、構造隠し場から回収した構造データを用いて素材を面走査するように動作し得る予後面走査器
     を備えて、図形表現系における構造データに接近するための装置。
  36.  構造データ要求が構造ブロックのリストを備えた請求項35記載の装置。
  37.  予備面走査器が、構造隠し場における構造ブロックの置換を制御して、構造隠し場のメモリ容量の超過を防ぐように動作し得る請求項35記載の装置。
  38.  メモリからの回収した各構造ブロックに対する単一の要求にまで構造データ要求を圧縮するように予備面走査器が動作し得る請求項35記載の装置。
  39.  予後面走査器が素材のそれぞれの面走査を完了した後に、素材列から素材を除去するように予後面走査器が動作し得る請求項35記載の装置。
  40.  メモリと連通し、圧縮し、圧縮された構造データを受取り、圧縮された構造データを減圧し、減圧した構造データを構造隠し場に伝送するように動作し得る減圧機関をさらに含んだ請求項35記載の装置。
  41.  メモリおよび減圧ユニットと連通し、減圧ユニットが圧縮された構造データの圧縮されたブロックを減圧するにつれて、メモリから回収した圧縮された構造データを一時的に蓄積するように動作し得る圧縮された隠し場をさらに含んでいる請求項40記載の装置。
  42.  個別の余弦波変換型の圧縮を用いて圧縮した構造ブロックに減圧を施すように減圧ユニットが動作し得る請求項40記載の装置。
  43.  ハフマン・ランレングス符号化を含む無損失型の圧縮を用いて圧縮した構造ブロックに減圧を施すように減圧ユニットが動作し得る請求項40記載の装置。
  44.  図形素材の列を作り、
      列を作った図形素材を構造基準に変換し、
      構造基準の列を作り、
      構造データ・ブロックをメモリから獲得し、
      構造隠し場に構造データ・ブロックを隠し、
      列を作った図形素材を面走査して出力画素データを発生させ、その面走査過程に、構造隠し場内で構造ブロックが利用可能になるにつれて、構造データ・ブロックのアクセスを含める
     各過程を備えて、図形表現系で行なわれる表現動作の期間中に構造データをメモリからアクセスする方法。
  45.  メモリから獲得した圧縮された構造ブロックの減圧をさらに含めた請求項44記載の方法。
  46.   図形素材データを受信して、構造要求を含んだ画素データを発生させるよう
     に動作し得る面走査器、
      面走査器と連通して、画素データを受信するように動作し得る構造基準データ列、
      構造基準データ列と連通し、構造要求をメモリ内の構造ブロックのアドレスに変換して、構造ブロックをメモリから獲得するように動作し得る構造獲得ユニット、
      構造獲得ユニットと連通して、構造ブロックを蓄積するように動作し得る構造隠し場、並びに、
      構造隠し場および構造基準データ列と連通して、構造基準データ列から画素データを読出すとともに、構造隠し場から構造標本を読出して出力画素を発生させるように動作し得る構造フィルタ機関
     を備えて、図形表現系で構造データをアクセスするための装置。
  47.  メモリと連通して、圧縮された構造データのブロックを減圧するように動作し得る減圧ユニットをさらに含んだ請求項46記載の装置。
  48.  減圧ユニットが二つの並列減圧ブロックを含む請求項47記載の装置。
  49.  減圧ユニットが個別の余弦波変換型の減圧を行なうように動作し得る請求項47記載の装置。
  50.  減圧ユニットが無損失ランレングス復号もしくはハフマン復号を行なうように動作し得る請求項49記載の装置。
  51.  .構造獲得ユニットが構造隠し場に蓄積した構造ブロックの置換を制御するように動作し得るので、構造隠し場のメモリ容量が超過しない請求項46記載の装置。
  52.  構造要求が構造標本区域の中心を構造地図の座標系に備えている請求項46記載の装置。
  53.  構造基準データ列が、補間した色彩、行き先画素に対するアドレスおよび構造基準データを含んだ画素データを蓄積するように動作し得る請求項46記載の装置。
  54.  図形素材を面走査して、それぞれ、画素アドレス、色彩データおよび構造要
     求を含んだ画素要素を発生させ、
      画素要素の列を作り、
      要素列から構造要求を読出し、
      構造要求をメモリに蓄積した構造ブロックのアドレスに変換し、
      メモリに蓄積した構造ブロックを獲得し、
      構造隠し場に構造ブロックを隠し、
      列中の付加的画素要素に対して読出し、変換および獲得の各過程を反復し、
      画素要素を列から回収し、構造標本データを構造隠し場から回収し、さらに、構造標本データを画素要素に対する色彩デートと結び付けることにより出力画素を発生させ、さらに、
      発生過程を反復して付加的出力画素を発生させる
     各過程を備えて、図形表現系で行なわれる表現動作の期間中に構造データをメモリからアクセスする方法。
  55.  圧縮された構造ブロックをメモリから回収し、
      圧縮された構造ブロックを減圧し、さらに、
      減圧した構造ブロックを構造隠し場に蓄積する
     各過程を獲得過程に含めた請求項54記載の方法。
  56.  獲得過程が、圧縮された構造ブロックを隠す過程をさらに含んだ請求項55記載の方法。
  57.  圧縮された構造ブロックが個別の余弦波変換圧縮を用いて圧縮される請求項55記載の方法。
  58.  圧縮された構造ブロックがハフマンおよびランレングスの各符号化を用いて圧縮される請求項55記載の方法。
  59.  構造隠し場にすでに蓄積された構造ブロックに対する要求の発生を避けるために、メモリに隠した構造ブロックの足跡の維持を含んでいる請求項54記載の方法。
JP2003286313A 1995-08-04 2003-08-04 グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム Expired - Lifetime JP3968063B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US51155395A 1995-08-04 1995-08-04
US56011495A 1995-11-17 1995-11-17
US08/671,412 US5867166A (en) 1995-08-04 1996-06-27 Method and system for generating images using Gsprites
US08/672,694 US5949428A (en) 1995-08-04 1996-06-27 Method and apparatus for resolving pixel data in a graphics rendering system
US08/672,347 US6005582A (en) 1995-08-04 1996-06-27 Method and system for texture mapping images with anisotropic filtering
US08/672,425 US5990904A (en) 1995-08-04 1996-06-27 Method and system for merging pixel fragments in a graphics rendering system
US08/671,506 US5852443A (en) 1995-08-04 1996-06-27 Method and system for memory decomposition in a graphics rendering system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP50860497A Division JP4540753B2 (ja) 1995-08-04 1996-08-02 グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム

Publications (2)

Publication Number Publication Date
JP2004046886A true JP2004046886A (ja) 2004-02-12
JP3968063B2 JP3968063B2 (ja) 2007-08-29

Family

ID=27569819

Family Applications (3)

Application Number Title Priority Date Filing Date
JP50860497A Expired - Lifetime JP4540753B2 (ja) 1995-08-04 1996-08-02 グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム
JP2003286313A Expired - Lifetime JP3968063B2 (ja) 1995-08-04 2003-08-04 グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム
JP2003286311A Expired - Lifetime JP4521167B2 (ja) 1995-08-04 2003-08-04 グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP50860497A Expired - Lifetime JP4540753B2 (ja) 1995-08-04 1996-08-02 グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2003286311A Expired - Lifetime JP4521167B2 (ja) 1995-08-04 2003-08-04 グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム

Country Status (6)

Country Link
EP (1) EP0850462B1 (ja)
JP (3) JP4540753B2 (ja)
AU (1) AU6766096A (ja)
CA (1) CA2229027A1 (ja)
DE (1) DE69636599T2 (ja)
WO (1) WO1997006512A2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008512766A (ja) * 2004-09-09 2008-04-24 シリコン オプティックス インコーポレイテッド 異方性フィルタリングを用いたシングルパス画像ワーピングシステム及び方法
JP2012138104A (ja) * 2012-03-01 2012-07-19 Qualcomm Inc 異方性フィルタリングを用いたシングルパス画像ワーピングシステム及び方法
US8692939B2 (en) 2005-10-18 2014-04-08 Nec Viewtechnology, Ltd. Method and apparatus for improving image quality
JP2015076102A (ja) * 2013-10-08 2015-04-20 三星電子株式会社Samsung Electronics Co.,Ltd. 映像処理装置及び方法
KR101609266B1 (ko) * 2009-10-20 2016-04-21 삼성전자주식회사 타일 기반의 랜더링 장치 및 방법
JP2019517696A (ja) * 2016-05-31 2019-06-24 アリババ グループ ホウルディング リミテッド 画像生成方法及びデバイス
JP2020087458A (ja) * 2018-11-14 2020-06-04 芯原微電子(上海)股▲ふん▼有限公司 エッジをアンチエイリアスするグラフィックス処理方法、システム、記憶媒体及び装置

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6204859B1 (en) * 1997-10-15 2001-03-20 Digital Equipment Corporation Method and apparatus for compositing colors of images with memory constraints for storing pixel data
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
GB2343603B (en) 1998-11-06 2003-04-02 Videologic Ltd Shading 3-dimensional computer generated images
DE69936376T2 (de) * 1998-11-12 2008-02-28 Sony Computer Entertainment Inc. Verfahren und vorrichtung zur erzeugung eines bildes
US6393145B2 (en) * 1999-01-12 2002-05-21 Microsoft Corporation Methods apparatus and data structures for enhancing the resolution of images to be rendered on patterned display devices
AUPP923799A0 (en) 1999-03-16 1999-04-15 Canon Kabushiki Kaisha Method for optimising compilation of compositing expressions
AU744463B2 (en) * 1999-03-16 2002-02-21 Canon Kabushiki Kaisha Method for compiling compositiing expressions for optimised rendering
US6898692B1 (en) 1999-06-28 2005-05-24 Clearspeed Technology Plc Method and apparatus for SIMD processing using multiple queues
US6636224B1 (en) * 1999-08-31 2003-10-21 Microsoft Corporation Method, system, and computer program product for overlapping graphics data collection and transmission using a single processor
EP1287494B1 (en) 2000-06-08 2007-03-14 Imagination Technologies Limited Tiling and compression for rendering 3d images
WO2003010718A1 (en) * 2001-07-20 2003-02-06 Koninklijke Philips Electronics N.V. Computer graphics system and method of rendering polygons
JP4467267B2 (ja) * 2002-09-06 2010-05-26 株式会社ソニー・コンピュータエンタテインメント 画像処理方法、画像処理装置、および画像処理システム
DE602004024974D1 (de) * 2003-04-15 2010-02-25 Nxp Bv Computergrafikprozessor und verfahren zum erzeugen eines computergrafikbildes
US8063916B2 (en) 2003-10-22 2011-11-22 Broadcom Corporation Graphics layer reduction for video composition
GB0426170D0 (en) 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
JP4660254B2 (ja) * 2005-04-08 2011-03-30 株式会社東芝 描画方法及び描画装置
GB0524804D0 (en) 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
JP4827659B2 (ja) * 2006-08-25 2011-11-30 キヤノン株式会社 画像処理装置、画像処理方法、及びコンピュータプログラム
US9418450B2 (en) 2006-08-31 2016-08-16 Ati Technologies Ulc Texture compression techniques
US9965886B2 (en) 2006-12-04 2018-05-08 Arm Norway As Method of and apparatus for processing graphics
GB2445008B (en) * 2006-12-20 2008-12-31 Sony Comp Entertainment Europe Image compression and/or decompression
US7948500B2 (en) 2007-06-07 2011-05-24 Nvidia Corporation Extrapolation of nonresident mipmap data using resident mipmap data
US7944453B1 (en) 2007-06-07 2011-05-17 Nvidia Corporation Extrapolation texture filtering for nonresident mipmaps
US8044971B2 (en) 2008-01-31 2011-10-25 Arm Norway As Methods of and apparatus for processing computer graphics
GB0900700D0 (en) 2009-01-15 2009-03-04 Advanced Risc Mach Ltd Methods of and apparatus for processing graphics
JP5371596B2 (ja) * 2009-07-13 2013-12-18 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
JP5469516B2 (ja) * 2010-04-12 2014-04-16 任天堂株式会社 画像表示プログラム、画像表示システム、画像表示方法および画像表示装置
CA2805308A1 (en) * 2010-07-14 2012-01-19 Research In Motion Limited Methods and apparatus to perform animation smoothing
JP5664052B2 (ja) 2010-09-15 2015-02-04 富士通セミコンダクター株式会社 グラフィック処理装置、及び、グラフィック処理プログラム
US8701183B2 (en) * 2010-09-30 2014-04-15 Intel Corporation Hardware-based human presence detection
US8463073B2 (en) * 2010-11-29 2013-06-11 Microsoft Corporation Robust recovery of transform invariant low-rank textures
KR101227155B1 (ko) * 2011-06-14 2013-01-29 주식회사 넥서스칩스 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법
JP5907780B2 (ja) * 2012-04-02 2016-04-26 富士フイルム株式会社 超音波診断装置
CN102930568B (zh) * 2012-09-25 2015-01-14 哈尔滨工业大学 一种静止背景中匀速运动目标的离散退化图像构造方法
US9317948B2 (en) 2012-11-16 2016-04-19 Arm Limited Method of and apparatus for processing graphics
US9582848B2 (en) 2012-12-28 2017-02-28 Apple Inc. Sprite Graphics rendering system
KR101451813B1 (ko) * 2013-02-07 2014-10-16 주식회사 로커스 입체영상 제작 시 탑-뷰 매트릭스를 이용한 이미지 처리 방법 및 이를 이용하는 이미지 처리 장치
US10204391B2 (en) 2013-06-04 2019-02-12 Arm Limited Method of and apparatus for processing graphics
KR102095702B1 (ko) * 2013-09-27 2020-04-14 에스케이플래닛 주식회사 이동 단말을 위한 애니메이션 재생 장치 및 방법
US9355464B2 (en) 2014-05-30 2016-05-31 Apple Inc. Dynamic generation of texture atlases
FR3028990B1 (fr) 2014-11-21 2018-01-19 Institut National Des Sciences Appliquees De Lyon Procedes de compression et de decompression de donnees representatives d’un objet tridimensionnel numerique et support d'enregistrement d'informations contenant ces donnees
KR101617606B1 (ko) 2015-05-21 2016-05-03 (주) 비비비 영상 생성 장치 및 방법
US9990690B2 (en) * 2015-09-21 2018-06-05 Qualcomm Incorporated Efficient display processing with pre-fetching
RU2638014C2 (ru) * 2015-09-28 2017-12-08 Общество С Ограниченной Ответственностью "Яндекс" Способ и вычислительное устройство для создания симплифицированных границ графических объектов
GB2553744B (en) 2016-04-29 2018-09-05 Advanced Risc Mach Ltd Graphics processing systems
CN106708623B (zh) * 2016-11-23 2021-04-27 腾讯科技(深圳)有限公司 一种对象资源处理方法、装置及系统
CN108492342B (zh) * 2018-03-22 2022-05-03 网易(杭州)网络有限公司 合并碎图的方法、装置、处理器、存储介质和终端
CN108830916A (zh) * 2018-06-27 2018-11-16 河南职业技术学院 一种包含大量角色的三维动画制作方法及系统
KR102160092B1 (ko) * 2018-09-11 2020-09-25 스노우 주식회사 레이어드 마스크와 룩업테이블을 이용한 이미지 처리 방법 및 시스템
US10810700B2 (en) * 2019-03-05 2020-10-20 Aspeed Technology Inc. Method of adjusting texture coordinates based on control regions in a panoramic image
CN110765891B (zh) * 2019-09-30 2022-05-17 万翼科技有限公司 工程图纸识别方法、电子设备及相关产品
CN114253724B (zh) * 2021-12-15 2023-10-13 中煤科工重庆设计研究院(集团)有限公司 一种bim模型渲染方法及系统
CN115278264B (zh) * 2022-09-26 2023-02-28 杭州雄迈集成电路技术股份有限公司 一种图像放大和osd叠加编码方法和系统
CN116070464B (zh) * 2023-03-07 2023-06-06 四川宏华电气有限责任公司 一种虚拟现实的钻井井场仿真系统

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008512766A (ja) * 2004-09-09 2008-04-24 シリコン オプティックス インコーポレイテッド 異方性フィルタリングを用いたシングルパス画像ワーピングシステム及び方法
US8692939B2 (en) 2005-10-18 2014-04-08 Nec Viewtechnology, Ltd. Method and apparatus for improving image quality
KR101609266B1 (ko) * 2009-10-20 2016-04-21 삼성전자주식회사 타일 기반의 랜더링 장치 및 방법
JP2012138104A (ja) * 2012-03-01 2012-07-19 Qualcomm Inc 異方性フィルタリングを用いたシングルパス画像ワーピングシステム及び方法
JP2015076102A (ja) * 2013-10-08 2015-04-20 三星電子株式会社Samsung Electronics Co.,Ltd. 映像処理装置及び方法
US10229524B2 (en) 2013-10-08 2019-03-12 Samsung Electronics Co., Ltd. Apparatus, method and non-transitory computer-readable medium for image processing based on transparency information of a previous frame
JP2019517696A (ja) * 2016-05-31 2019-06-24 アリババ グループ ホウルディング リミテッド 画像生成方法及びデバイス
JP2020087458A (ja) * 2018-11-14 2020-06-04 芯原微電子(上海)股▲ふん▼有限公司 エッジをアンチエイリアスするグラフィックス処理方法、システム、記憶媒体及び装置
JP7018420B2 (ja) 2018-11-14 2022-02-10 芯原微電子(上海)股▲ふん▼有限公司 エッジをアンチエイリアスするグラフィックス処理方法、システム、記憶媒体及び装置

Also Published As

Publication number Publication date
WO1997006512A2 (en) 1997-02-20
JPH11511277A (ja) 1999-09-28
JP4540753B2 (ja) 2010-09-08
EP0850462A2 (en) 1998-07-01
EP0850462B1 (en) 2006-10-04
JP2004102998A (ja) 2004-04-02
AU6766096A (en) 1997-03-05
DE69636599D1 (de) 2006-11-16
CA2229027A1 (en) 1997-02-20
WO1997006512A3 (en) 1997-06-19
DE69636599T2 (de) 2007-08-23
JP4521167B2 (ja) 2010-08-11
JP3968063B2 (ja) 2007-08-29

Similar Documents

Publication Publication Date Title
JP4540753B2 (ja) グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム
US5880737A (en) Method and system for accessing texture data in environments with high latency in a graphics rendering system
US5886701A (en) Graphics rendering device and method for operating same
US5864342A (en) Method and system for rendering graphical objects to image chunks
US5870097A (en) Method and system for improving shadowing in a graphics rendering system
US6005582A (en) Method and system for texture mapping images with anisotropic filtering
US5867166A (en) Method and system for generating images using Gsprites
US5999189A (en) Image compression to reduce pixel and texture memory requirements in a real-time image generator
US5977977A (en) Method and system for multi-pass rendering
US5949428A (en) Method and apparatus for resolving pixel data in a graphics rendering system
US5852443A (en) Method and system for memory decomposition in a graphics rendering system
US5990904A (en) Method and system for merging pixel fragments in a graphics rendering system
US5808617A (en) Method and system for depth complexity reduction in a graphics rendering system
Torborg et al. Talisman: Commodity realtime 3D graphics for the PC
US5856829A (en) Inverse Z-buffer and video display system having list-based control mechanism for time-deferred instructing of 3D rendering engine that also responds to supervisory immediate commands
US6064393A (en) Method for measuring the fidelity of warped image layer approximations in a real-time graphics rendering pipeline
US6426755B1 (en) Graphics system using sample tags for blur
KR100478767B1 (ko) 그래픽 렌더링 방법, 컴퓨터 그래픽 파이프라인용 상태 감시 장치 및 3차원 그래픽 렌더링용 계산처리 시스템
US6016150A (en) Sprite compositor and method for performing lighting and shading operations using a compositor to combine factored image layers
US6956576B1 (en) Graphics system using sample masks for motion blur, depth of field, and transparency
US6392655B1 (en) Fine grain multi-pass for multiple texture rendering
US6184891B1 (en) Fog simulation for partially transparent objects
US7116335B2 (en) Texturing systems for use in three-dimensional imaging systems
EP1434171A2 (en) Method and system for texture mapping a source image to a destination image
Lefebvre et al. Unified texture management for arbitrary meshes

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060905

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061205

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070305

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20070305

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070507

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: 20070529

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070601

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110608

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110608

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130608

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term